

























@@ -81,6 +81,16 @@ const mockState = vi.hoisted(() => ({
8181deleteMediaBufferCalls: [] as Array<{ id: string; subdir?: string }>,
8282}));
838384+function readTranscriptJsonLines(transcriptPath: string): Array<Record<string, unknown>> {
85+const entries: Array<Record<string, unknown>> = [];
86+for (const line of fs.readFileSync(transcriptPath, "utf-8").split("\n")) {
87+if (line.length > 0) {
88+entries.push(JSON.parse(line) as Record<string, unknown>);
89+}
90+}
91+return entries;
92+}
93+8494const bindingMocks = vi.hoisted(() => ({
8595resolveByConversation: vi.fn((_ref: unknown) => null as { targetSessionKey?: string } | null),
8696}));
@@ -782,11 +792,7 @@ describe("chat directive tag stripping for non-streaming final payloads", () =>
782792// Agent-run delivery is a live projection; Pi message_end owns persisted
783793// assistant transcript entries, including stale media/text final payloads.
784794expect(assistantUpdates).toEqual([]);
785-const transcriptLines = fs
786-.readFileSync(mockState.transcriptPath, "utf-8")
787-.split("\n")
788-.filter(Boolean)
789-.map((line) => JSON.parse(line) as Record<string, unknown>);
795+const transcriptLines = readTranscriptJsonLines(mockState.transcriptPath);
790796const assistantEntries = transcriptLines.filter(
791797(entry) =>
792798(entry as { message?: { role?: string } }).message?.role === "assistant" ||
@@ -833,11 +839,7 @@ describe("chat directive tag stripping for non-streaming final payloads", () =>
833839// Normal agent-run final text must not be mirrored into JSONL by WebChat;
834840// Pi persists the model-visible assistant turn from message_end.
835841expect(assistantUpdates).toEqual([]);
836-const transcriptLines = fs
837-.readFileSync(mockState.transcriptPath, "utf-8")
838-.split("\n")
839-.filter(Boolean)
840-.map((line) => JSON.parse(line) as Record<string, unknown>);
842+const transcriptLines = readTranscriptJsonLines(mockState.transcriptPath);
841843const assistantEntries = transcriptLines.filter(
842844(entry) =>
843845(entry as { message?: { role?: string } }).message?.role === "assistant" ||
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。