












@@ -13,6 +13,7 @@ import {
1313makeCronSession,
1414mockRunCronFallbackPassthrough,
1515resolveCronPayloadOutcomeMock,
16+resolveCronSessionMock,
1617resetRunCronIsolatedAgentTurnHarness,
1718resolveCronDeliveryPlanMock,
1819resolveDeliveryTargetMock,
@@ -715,6 +716,50 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
715716expectEmbeddedRunFields({ disableMessageTool: false });
716717});
717718719+it("releases cron run context references after completion", async () => {
720+const cronSession = makeCronSession({
721+store: { "agent:default:cron:message-tool-policy": { retained: true } },
722+});
723+resolveCronSessionMock.mockReturnValue(cronSession);
724+const { getAgentRunContext, registerAgentRunContext } =
725+await import("../../infra/agent-events.js");
726+registerAgentRunContext("test-session-id", {
727+sessionKey: "agent:default:cron:message-tool-policy",
728+verboseLevel: "off",
729+});
730+731+await runCronIsolatedAgentTurn(makeParams());
732+733+expect(getAgentRunContext("test-session-id")).toBeUndefined();
734+expect(cronSession.store).toBeUndefined();
735+});
736+737+it("keeps shared cron run context references active after completion", async () => {
738+const cronSession = makeCronSession({
739+store: { "agent:default:cron:message-tool-policy": { retained: true } },
740+});
741+resolveCronSessionMock.mockReturnValue(cronSession);
742+const { clearAgentRunContext, getAgentRunContext, registerAgentRunContext } =
743+await import("../../infra/agent-events.js");
744+registerAgentRunContext("test-session-id", {
745+sessionKey: "agent:default:cron:message-tool-policy",
746+verboseLevel: "off",
747+});
748+const currentSessionJob = makeMessageToolPolicyJob() as unknown as Record<string, unknown>;
749+currentSessionJob.sessionTarget = "current";
750+751+await runCronIsolatedAgentTurn({
752+ ...makeParams(),
753+job: currentSessionJob as never,
754+});
755+756+expect(getAgentRunContext("test-session-id")).toMatchObject({
757+sessionKey: "agent:default:cron:message-tool-policy",
758+});
759+expect(cronSession.store).toBeUndefined();
760+clearAgentRunContext("test-session-id");
761+});
762+718763it("skips cron delivery when output is heartbeat-only", async () => {
719764mockRunCronFallbackPassthrough();
720765resolveCronDeliveryPlanMock.mockReturnValue(makeAnnounceDeliveryPlan());
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。