




















@@ -75,7 +75,7 @@ describe("agent-events sequencing", () => {
7575expect(phases).toEqual(["start", "end"]);
7676});
777778-test("omits sessionKey for runs hidden from Control UI", async () => {
78+test("omits sessionKey for non-lifecycle runs hidden from Control UI", async () => {
7979resetAgentRunContextForTest();
8080registerAgentRunContext("run-hidden", {
8181sessionKey: "session-quietchat",
@@ -97,6 +97,49 @@ describe("agent-events sequencing", () => {
9797expect(receivedSessionKey).toBeUndefined();
9898});
9999100+test("preserves sessionKey for lifecycle events hidden from Control UI", async () => {
101+resetAgentRunContextForTest();
102+registerAgentRunContext("run-hidden-lifecycle", {
103+sessionKey: "session-quietchat",
104+isControlUiVisible: false,
105+});
106+107+let receivedSessionKey: string | undefined;
108+const stop = onAgentEvent((evt) => {
109+receivedSessionKey = evt.sessionKey;
110+});
111+emitAgentEvent({
112+runId: "run-hidden-lifecycle",
113+stream: "lifecycle",
114+data: { phase: "end" },
115+sessionKey: "session-quietchat",
116+});
117+stop();
118+119+expect(receivedSessionKey).toBe("session-quietchat");
120+});
121+122+test("falls back to registered sessionKey for hidden lifecycle events", async () => {
123+resetAgentRunContextForTest();
124+registerAgentRunContext("run-hidden-lifecycle-context", {
125+sessionKey: "session-quietchat-context",
126+isControlUiVisible: false,
127+});
128+129+let receivedSessionKey: string | undefined;
130+const stop = onAgentEvent((evt) => {
131+receivedSessionKey = evt.sessionKey;
132+});
133+emitAgentEvent({
134+runId: "run-hidden-lifecycle-context",
135+stream: "lifecycle",
136+data: { phase: "error", error: "boom" },
137+});
138+stop();
139+140+expect(receivedSessionKey).toBe("session-quietchat-context");
141+});
142+100143test("merges later run context updates into existing runs", async () => {
101144resetAgentRunContextForTest();
102145registerAgentRunContext("run-ctx", {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。