


























@@ -851,6 +851,7 @@ describe("subagent registry seam flow", () => {
851851cleanup: "keep",
852852expectsCompletionMessage: undefined,
853853spawnMode: "run",
854+agentDir: "/tmp/agent-alt",
854855workspaceDir: "/tmp/workspace",
855856createdAt: 1,
856857startedAt: 1,
@@ -863,6 +864,7 @@ describe("subagent registry seam flow", () => {
863864864865await waitForFast(() => {
865866expect(mocks.onSubagentEnded).toHaveBeenCalledWith({
867+agentDir: "/tmp/agent-alt",
866868childSessionKey: "agent:main:session:child",
867869reason: "released",
868870workspaceDir: "/tmp/workspace",
@@ -877,5 +879,82 @@ describe("subagent registry seam flow", () => {
877879allowGatewaySubagentBinding: true,
878880});
879881expect(mocks.ensureContextEnginesInitialized).toHaveBeenCalledTimes(1);
882+expect(mocks.resolveContextEngine).toHaveBeenCalledWith(
883+{
884+agents: { defaults: { subagents: { archiveAfterMinutes: 0 } } },
885+session: { mainKey: "main", scope: "per-sender" },
886+},
887+{
888+agentDir: "/tmp/agent-alt",
889+workspaceDir: "/tmp/workspace",
890+},
891+);
892+});
893+894+it("passes stored agentDir through swept context-engine cleanup paths", async () => {
895+const now = Date.parse("2026-03-24T12:00:00Z");
896+mod.addSubagentRunForTests({
897+runId: "run-session-swept-context-engine",
898+childSessionKey: "agent:alt:session:child-session",
899+controllerSessionKey: "agent:main:session:parent",
900+requesterSessionKey: "agent:main:session:parent",
901+requesterOrigin: undefined,
902+requesterDisplayKey: "parent",
903+task: "session cleanup",
904+cleanup: "keep",
905+expectsCompletionMessage: undefined,
906+spawnMode: "session",
907+agentDir: "/tmp/agent-session",
908+workspaceDir: "/tmp/workspace-session",
909+createdAt: now - 20_000,
910+startedAt: now - 10_000,
911+sessionStartedAt: now - 10_000,
912+accumulatedRuntimeMs: 0,
913+endedAt: now - 8_000,
914+outcome: { status: "ok", startedAt: now - 10_000, endedAt: now - 8_000, elapsedMs: 2_000 },
915+cleanupHandled: true,
916+cleanupCompletedAt: now - 6 * 60_000,
917+});
918+mod.addSubagentRunForTests({
919+runId: "run-archive-swept-context-engine",
920+childSessionKey: "agent:alt:session:child-archive",
921+controllerSessionKey: "agent:main:session:parent",
922+requesterSessionKey: "agent:main:session:parent",
923+requesterOrigin: undefined,
924+requesterDisplayKey: "parent",
925+task: "archive cleanup",
926+cleanup: "delete",
927+expectsCompletionMessage: undefined,
928+spawnMode: "run",
929+agentDir: "/tmp/agent-archive",
930+workspaceDir: "/tmp/workspace-archive",
931+createdAt: now - 20_000,
932+startedAt: now - 10_000,
933+sessionStartedAt: now - 10_000,
934+accumulatedRuntimeMs: 0,
935+endedAt: now - 8_000,
936+outcome: { status: "ok", startedAt: now - 10_000, endedAt: now - 8_000, elapsedMs: 2_000 },
937+archiveAtMs: now - 1,
938+cleanupHandled: true,
939+});
940+941+await mod.__testing.sweepOnceForTests();
942+943+await waitForFast(() => {
944+expect(mocks.resolveContextEngine).toHaveBeenCalledWith(
945+expect.any(Object),
946+expect.objectContaining({
947+agentDir: "/tmp/agent-session",
948+workspaceDir: "/tmp/workspace-session",
949+}),
950+);
951+expect(mocks.resolveContextEngine).toHaveBeenCalledWith(
952+expect.any(Object),
953+expect.objectContaining({
954+agentDir: "/tmp/agent-archive",
955+workspaceDir: "/tmp/workspace-archive",
956+}),
957+);
958+});
880959});
881960});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。