





























@@ -67,6 +67,13 @@ function expectFields(value: unknown, expected: Record<string, unknown>, label =
6767}
6868}
696970+function expectSubagentSessionKey(value: unknown, label: string): string {
71+expect(value, label).toBeTypeOf("string");
72+const sessionKey = value as string;
73+expect(sessionKey.startsWith("agent:main:subagent:")).toBe(true);
74+return sessionKey;
75+}
76+7077function setConfig(next: Record<string, unknown>) {
7178hoisted.configOverride = createSubagentSpawnTestConfig(undefined, next);
7279}
@@ -234,9 +241,16 @@ describe("sessions_spawn subagent lifecycle hooks", () => {
234241235242expectFields(result, { status: "accepted", runId: "run-1" }, "spawn result");
236243expect(hookRunnerMocks.runSubagentSpawning).toHaveBeenCalledTimes(1);
237-expect(hookRunnerMocks.runSubagentSpawning).toHaveBeenCalledWith(
244+const [spawningEvent, spawningContext] = (hookRunnerMocks.runSubagentSpawning.mock.calls[0] ??
245+[]) as unknown as [Record<string, unknown>, Record<string, unknown>];
246+const spawningChildSessionKey = expectSubagentSessionKey(
247+spawningEvent?.childSessionKey,
248+"spawning event child session key",
249+);
250+expectFields(
251+spawningEvent,
238252{
239-childSessionKey: expect.stringMatching(/^agent:main:subagent:/),
253+childSessionKey: spawningChildSessionKey,
240254agentId: "main",
241255label: "research",
242256mode: "session",
@@ -248,10 +262,15 @@ describe("sessions_spawn subagent lifecycle hooks", () => {
248262},
249263threadRequested: true,
250264},
265+"spawning event",
266+);
267+expectFields(
268+spawningContext,
251269{
252-childSessionKey: expect.stringMatching(/^agent:main:subagent:/),
270+childSessionKey: spawningChildSessionKey,
253271requesterSessionKey: "main",
254272},
273+"spawning context",
255274);
256275257276expect(hookRunnerMocks.runSubagentSpawned).toHaveBeenCalledTimes(1);
@@ -280,7 +299,7 @@ describe("sessions_spawn subagent lifecycle hooks", () => {
280299},
281300"spawned requester",
282301);
283-expect(event.childSessionKey).toEqual(expect.stringMatching(/^agent:main:subagent:/));
302+expectSubagentSessionKey(event.childSessionKey, "spawned event child session key");
284303expectFields(
285304ctx,
286305{
@@ -423,7 +442,7 @@ describe("sessions_spawn subagent lifecycle hooks", () => {
423442const [event] = (hookRunnerMocks.runSubagentEnded.mock.calls[0] ?? []) as unknown as [
424443Record<string, unknown>,
425444];
426-expect(event.targetSessionKey).toEqual(expect.stringMatching(/^agent:main:subagent:/));
445+expectSubagentSessionKey(event.targetSessionKey, "ended event target session key");
427446expectFields(
428447event,
429448{
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。