





















@@ -40,6 +40,18 @@ function resolveTarget(runs: SubagentRunRecord[], token: string | undefined) {
4040});
4141}
424243+function expectResolvedRunId(
44+runs: SubagentRunRecord[],
45+token: string | undefined,
46+expectedRunId: string,
47+): void {
48+const resolved = resolveTarget(runs, token);
49+if (!resolved.entry) {
50+throw new Error(`Expected ${String(token)} to resolve, got ${resolved.error ?? "no target"}`);
51+}
52+expect(resolved.entry.runId).toBe(expectedRunId);
53+}
54+4355describe("subagents utils", () => {
4456afterEach(() => {
4557vi.restoreAllMocks();
@@ -65,8 +77,7 @@ describe("subagents utils", () => {
6577makeRun({ runId: "old", createdAt: NOW_MS - 2_000 }),
6678makeRun({ runId: "new", createdAt: NOW_MS - 500 }),
6779];
68-const resolved = resolveTarget(runs, " last ");
69-expect(resolved.entry?.runId).toBe("new");
80+expectResolvedRunId(runs, " last ", "new");
7081});
71827283it("resolves numeric index from running then recent finished order", () => {
@@ -91,14 +102,14 @@ describe("subagents utils", () => {
91102}),
92103];
9310494-expect(resolveTarget(runs, "1").entry?.runId).toBe("running");
95-expect(resolveTarget(runs, "2").entry?.runId).toBe("recent-finished");
105+expectResolvedRunId(runs, "1", "running");
106+expectResolvedRunId(runs, "2", "recent-finished");
96107expect(resolveTarget(runs, "3").error).toBe("invalid:3");
97108});
9810999110it("resolves session key target and unknown session errors", () => {
100111const run = makeRun({ runId: "abc123", childSessionKey: "agent:beta:subagent:xyz" });
101-expect(resolveTarget([run], "agent:beta:subagent:xyz").entry?.runId).toBe("abc123");
112+expectResolvedRunId([run], "agent:beta:subagent:xyz", "abc123");
102113expect(resolveTarget([run], "agent:beta:subagent:missing").error).toBe(
103114"unknown-session:agent:beta:subagent:missing",
104115);
@@ -111,11 +122,11 @@ describe("subagents utils", () => {
111122makeRun({ runId: "run-beta-1", label: "Beta Worker" }),
112123];
113124114-expect(resolveTarget(runs, "beta worker").entry?.runId).toBe("run-beta-1");
115-expect(resolveTarget(runs, "beta").entry?.runId).toBe("run-beta-1");
116-expect(resolveTarget(runs, "run-beta").entry?.runId).toBe("run-beta-1");
125+expectResolvedRunId(runs, "beta worker", "run-beta-1");
126+expectResolvedRunId(runs, "beta", "run-beta-1");
127+expectResolvedRunId(runs, "run-beta", "run-beta-1");
117128118-expect(resolveTarget(runs, "alpha core").entry?.runId).toBe("run-alpha-1");
129+expectResolvedRunId(runs, "alpha core", "run-alpha-1");
119130expect(resolveTarget(runs, "alpha").error).toBe("ambiguous-prefix:alpha");
120131expect(resolveTarget(runs, "run-alpha").error).toBe("ambiguous-run:run-alpha");
121132expect(resolveTarget(runs, "missing").error).toBe("unknown:missing");
@@ -149,6 +160,6 @@ describe("subagents utils", () => {
149160}),
150161];
151162152-expect(resolveTarget(runs, "same worker").entry?.runId).toBe("run-new");
163+expectResolvedRunId(runs, "same worker", "run-new");
153164});
154165});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。