























@@ -1934,6 +1934,67 @@ describe("qa mock openai server", () => {
19341934expect(outputText(await phaseOnlyFinal.json())).toBe("subagent-1: ok\nsubagent-2: ok");
19351935});
193619361937+it("completes subagent fanout when beta completion arrives on a generic follow-up turn", async () => {
1938+const server = await startQaMockOpenAiServer({
1939+host: "127.0.0.1",
1940+port: 0,
1941+});
1942+cleanups.push(async () => {
1943+await server.stop();
1944+});
1945+1946+const prompt =
1947+"Subagent fanout synthesis check: delegate two bounded subagents sequentially, then report both results together.";
1948+const spawn = await fetch(`${server.baseUrl}/v1/responses`, {
1949+method: "POST",
1950+headers: { "content-type": "application/json" },
1951+body: JSON.stringify({
1952+stream: true,
1953+tools: [SESSIONS_SPAWN_TOOL],
1954+input: [makeUserInput(prompt)],
1955+}),
1956+});
1957+expect(spawn.status).toBe(200);
1958+expect(await spawn.text()).toContain('\\"label\\":\\"qa-fanout-alpha\\"');
1959+1960+const secondSpawn = await fetch(`${server.baseUrl}/v1/responses`, {
1961+method: "POST",
1962+headers: { "content-type": "application/json" },
1963+body: JSON.stringify({
1964+stream: true,
1965+tools: [SESSIONS_SPAWN_TOOL],
1966+input: [
1967+makeUserInput(prompt),
1968+{
1969+type: "function_call_output",
1970+output:
1971+'{"status":"accepted","childSessionKey":"agent:qa:subagent:alpha","note":"ALPHA-OK"}',
1972+},
1973+],
1974+}),
1975+});
1976+expect(secondSpawn.status).toBe(200);
1977+expect(await secondSpawn.text()).toContain('\\"label\\":\\"qa-fanout-beta\\"');
1978+1979+const final = await fetch(`${server.baseUrl}/v1/responses`, {
1980+method: "POST",
1981+headers: { "content-type": "application/json" },
1982+body: JSON.stringify({
1983+stream: false,
1984+tools: [SESSIONS_SPAWN_TOOL],
1985+input: [
1986+makeUserInput("Continue with the QA scenario plan."),
1987+{
1988+type: "function_call_output",
1989+output: '{"status":"accepted","childSessionKey":"agent:qa:subagent:beta"}',
1990+},
1991+],
1992+}),
1993+});
1994+expect(final.status).toBe(200);
1995+expect(outputText(await final.json())).toBe("subagent-1: ok\nsubagent-2: ok");
1996+});
1997+19371998it("uses full request text when planning continuation subagent tool calls", async () => {
19381999const server = await startQaMockOpenAiServer({
19392000host: "127.0.0.1",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。