

























@@ -150,6 +150,52 @@ describe("executePreparedCliRun supervisor output capture", () => {
150150expect(result.sessionId).toBe("session-jsonl-large");
151151});
152152153+it("parses oversized resume JSONL output from the effective resume output mode", async () => {
154+const largeToolEvent = `${JSON.stringify({
155+ type: "stream_event",
156+ event: {
157+ type: "content_block_delta",
158+ delta: { type: "tool_delta", text: "x".repeat(2 * 1024 * 1024) },
159+ },
160+ })}\n`;
161+const resultEvent = `${JSON.stringify({
162+ type: "result",
163+ session_id: "resume-jsonl-session",
164+ result: "resumed answer",
165+ })}\n`;
166+const context = buildPreparedCliRunContext({
167+output: "text",
168+provider: "resume-jsonl-cli",
169+});
170+Object.assign(context.preparedBackend.backend, {
171+jsonlDialect: "claude-stream-json" as const,
172+resumeArgs: ["resume", "{sessionId}"],
173+resumeOutput: "jsonl" as const,
174+sessionMode: "existing" as const,
175+});
176+177+supervisorSpawnMock.mockImplementationOnce(async (...args: unknown[]) => {
178+const input = args[0] as SupervisorSpawnInput;
179+input.onStdout?.(largeToolEvent);
180+input.onStdout?.(resultEvent);
181+return createManagedRun({
182+reason: "exit",
183+exitCode: 0,
184+exitSignal: null,
185+durationMs: 50,
186+stdout: input.captureOutput === false ? "" : `${largeToolEvent}${resultEvent}`,
187+stderr: "",
188+timedOut: false,
189+noOutputTimedOut: false,
190+});
191+});
192+193+const result = await executePreparedCliRun(context, "resume-jsonl-session");
194+195+expect(result.text).toBe("resumed answer");
196+expect(result.sessionId).toBe("resume-jsonl-session");
197+});
198+153199it("classifies failed stdout from the retained parse buffer before the diagnostic tail", async () => {
154200const errorPrefix = `${JSON.stringify({
155201 type: "result",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。