mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 14:30:24 +00:00
fix(webchat): preserve session labels across /new resets (#23755)
Co-authored-by: ThunderStormer <16649514+ThunderStormer@users.noreply.github.com>
This commit is contained in:
@@ -996,6 +996,42 @@ describe("initSessionState preserves behavior overrides across /new and /reset",
|
||||
expect(result.sessionEntry.reasoningLevel).toBe("low");
|
||||
});
|
||||
|
||||
it("/new preserves session label from previous session", async () => {
|
||||
const storePath = await createStorePath("openclaw-reset-label-");
|
||||
const sessionKey = "agent:main:telegram:dm:user-label";
|
||||
const existingSessionId = "existing-session-label";
|
||||
await seedSessionStoreWithOverrides({
|
||||
storePath,
|
||||
sessionKey,
|
||||
sessionId: existingSessionId,
|
||||
overrides: { label: "telegram-priority" },
|
||||
});
|
||||
|
||||
const cfg = {
|
||||
session: { store: storePath, idleMinutes: 999 },
|
||||
} as OpenClawConfig;
|
||||
|
||||
const result = await initSessionState({
|
||||
ctx: {
|
||||
Body: "/new",
|
||||
RawBody: "/new",
|
||||
CommandBody: "/new",
|
||||
From: "user-label",
|
||||
To: "bot",
|
||||
ChatType: "direct",
|
||||
SessionKey: sessionKey,
|
||||
Provider: "telegram",
|
||||
Surface: "telegram",
|
||||
},
|
||||
cfg,
|
||||
commandAuthorized: true,
|
||||
});
|
||||
|
||||
expect(result.isNewSession).toBe(true);
|
||||
expect(result.resetTriggered).toBe(true);
|
||||
expect(result.sessionEntry.label).toBe("telegram-priority");
|
||||
});
|
||||
|
||||
it("/new in a new session does not preserve overrides", async () => {
|
||||
const storePath = await createStorePath("openclaw-new-no-preserve-");
|
||||
const sessionKey = "agent:main:telegram:dm:user3";
|
||||
|
||||
@@ -168,6 +168,7 @@ export async function initSessionState(params: {
|
||||
let persistedTtsAuto: TtsAutoMode | undefined;
|
||||
let persistedModelOverride: string | undefined;
|
||||
let persistedProviderOverride: string | undefined;
|
||||
let persistedLabel: string | undefined;
|
||||
|
||||
const normalizedChatType = normalizeChatType(ctx.ChatType);
|
||||
const isGroup =
|
||||
@@ -265,6 +266,7 @@ export async function initSessionState(params: {
|
||||
persistedTtsAuto = entry.ttsAuto;
|
||||
persistedModelOverride = entry.modelOverride;
|
||||
persistedProviderOverride = entry.providerOverride;
|
||||
persistedLabel = entry.label;
|
||||
} else {
|
||||
sessionId = crypto.randomUUID();
|
||||
isNewSession = true;
|
||||
@@ -280,6 +282,7 @@ export async function initSessionState(params: {
|
||||
persistedTtsAuto = entry.ttsAuto;
|
||||
persistedModelOverride = entry.modelOverride;
|
||||
persistedProviderOverride = entry.providerOverride;
|
||||
persistedLabel = entry.label;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,6 +342,7 @@ export async function initSessionState(params: {
|
||||
responseUsage: baseEntry?.responseUsage,
|
||||
modelOverride: persistedModelOverride ?? baseEntry?.modelOverride,
|
||||
providerOverride: persistedProviderOverride ?? baseEntry?.providerOverride,
|
||||
label: persistedLabel ?? baseEntry?.label,
|
||||
sendPolicy: baseEntry?.sendPolicy,
|
||||
queueMode: baseEntry?.queueMode,
|
||||
queueDebounceMs: baseEntry?.queueDebounceMs,
|
||||
|
||||
Reference in New Issue
Block a user