

















@@ -106,7 +106,7 @@ vi.mock("./command/session-store.runtime.js", () => ({
106106vi.mock("./command/session.js", () => ({
107107resolveSession: () => ({
108108sessionId: "session-1",
109-sessionKey: "agent:main",
109+sessionKey: "agent:main:main",
110110sessionEntry: state.sessionEntryMock ?? {
111111sessionId: "session-1",
112112updatedAt: Date.now(),
@@ -241,11 +241,17 @@ vi.mock("../logging/subsystem.js", () => ({
241241},
242242}));
243243244-vi.mock("../routing/session-key.js", () => ({
245-isSubagentSessionKey: () => false,
246-normalizeAgentId: (id: string) => id,
247-normalizeMainKey: (key?: string | null) => key?.trim() || "main",
248-}));
244+vi.mock("../routing/session-key.js", async () => {
245+const actual = await vi.importActual<typeof import("../routing/session-key.js")>(
246+"../routing/session-key.js",
247+);
248+return {
249+ ...actual,
250+isSubagentSessionKey: () => false,
251+normalizeAgentId: (id: string) => id,
252+normalizeMainKey: (key?: string | null) => key?.trim() || "main",
253+};
254+});
249255250256vi.mock("../runtime.js", () => ({
251257defaultRuntime: {
@@ -873,7 +879,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
873879pendingFinalDeliveryIntentId: "intent-1",
874880};
875881state.sessionEntryMock = sessionEntry;
876-state.sessionStoreMock = { "agent:main": sessionEntry };
882+state.sessionStoreMock = { "agent:main:main": sessionEntry };
877883state.storePathMock = "/tmp/openclaw-sessions.json";
878884state.deliverAgentCommandResultMock.mockResolvedValue(undefined);
879885@@ -883,7 +889,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
883889deliver: true,
884890});
885891886-const stored = (state.sessionStoreMock as Record<string, SessionEntry>)["agent:main"];
892+const stored = (state.sessionStoreMock as Record<string, SessionEntry>)["agent:main:main"];
887893expect(stored?.pendingFinalDelivery).toBeUndefined();
888894expect(stored?.pendingFinalDeliveryText).toBeUndefined();
889895expect(stored?.pendingFinalDeliveryCreatedAt).toBeUndefined();
@@ -1191,7 +1197,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
11911197skillsSnapshot: { prompt: "", skills: [], version: 0 },
11921198};
11931199state.sessionEntryMock = sessionEntry;
1194-const sessionStore: Record<string, SessionEntry> = { "agent:main": sessionEntry };
1200+const sessionStore: Record<string, SessionEntry> = { "agent:main:main": sessionEntry };
11951201state.sessionStoreMock = sessionStore;
11961202state.storePathMock = "/tmp/openclaw-session-store.json";
11971203setupModelSwitchRetry({
@@ -1232,12 +1238,12 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
12321238skillsSnapshot: { prompt: "", skills: [], version: 0 },
12331239};
12341240state.sessionEntryMock = sessionEntry;
1235-const sessionStore: Record<string, SessionEntry> = { "agent:main": sessionEntry };
1241+const sessionStore: Record<string, SessionEntry> = { "agent:main:main": sessionEntry };
12361242state.sessionStoreMock = sessionStore;
12371243state.storePathMock = "/tmp/openclaw-session-store.json";
12381244state.runWithModelFallbackMock.mockImplementationOnce(async (params: FallbackRunnerParams) => {
12391245const result = await params.run(params.provider, params.model);
1240-sessionStore["agent:main"] = {
1246+sessionStore["agent:main:main"] = {
12411247sessionId: "session-1",
12421248updatedAt: Date.now(),
12431249providerOverride: "google",
@@ -1256,7 +1262,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
1256126212571263await runBasicAgentCommand();
125812641259-expectRecordFields(sessionStore["agent:main"], {
1265+expectRecordFields(sessionStore["agent:main:main"], {
12601266providerOverride: "google",
12611267modelOverride: "gemini-3-pro",
12621268modelOverrideSource: "user",
@@ -1471,7 +1477,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
14711477"hidden task completion event",
14721478INTERNAL_RUNTIME_CONTEXT_END,
14731479].join("\n"),
1474-sessionKey: "agent:main",
1480+sessionKey: "agent:main:main",
14751481internalEvents: [
14761482{
14771483type: "task_completion",
@@ -1521,7 +1527,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
1521152715221528await agentCommand({
15231529message: "bootstrap ACP child",
1524-sessionKey: "agent:main",
1530+sessionKey: "agent:main:main",
15251531acpTurnSource: "manual_spawn",
15261532});
15271533@@ -1545,7 +1551,7 @@ describe("agentCommand – LiveSessionModelSwitchError retry", () => {
15451551await expect(
15461552agentCommand({
15471553message: "automatic ACP turn",
1548-sessionKey: "agent:main",
1554+sessionKey: "agent:main:main",
15491555}),
15501556).rejects.toThrow("ACP dispatch is disabled");
15511557此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。