mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-15 18:30:39 +09:00
fix cursor stream-json multiplexed output handling
This commit is contained in:
parent
875924a7f3
commit
426c1044b6
6 changed files with 89 additions and 7 deletions
|
|
@ -39,6 +39,24 @@ describe("cursor parser", () => {
|
|||
expect(parsed.costUsd).toBeCloseTo(0.001, 6);
|
||||
expect(parsed.errorMessage).toBe("model access denied");
|
||||
});
|
||||
|
||||
it("parses multiplexed stdout-prefixed json lines", () => {
|
||||
const stdout = [
|
||||
'stdout{"type":"system","subtype":"init","session_id":"chat_prefixed","model":"gpt-5"}',
|
||||
'stdout{"type":"assistant","message":{"content":[{"type":"output_text","text":"prefixed hello"}]}}',
|
||||
'stdout{"type":"result","subtype":"success","usage":{"input_tokens":3,"output_tokens":2,"cached_input_tokens":1},"total_cost_usd":0.0001}',
|
||||
].join("\n");
|
||||
|
||||
const parsed = parseCursorJsonl(stdout);
|
||||
expect(parsed.sessionId).toBe("chat_prefixed");
|
||||
expect(parsed.summary).toBe("prefixed hello");
|
||||
expect(parsed.usage).toEqual({
|
||||
inputTokens: 3,
|
||||
cachedInputTokens: 1,
|
||||
outputTokens: 2,
|
||||
});
|
||||
expect(parsed.costUsd).toBeCloseTo(0.0001, 6);
|
||||
});
|
||||
});
|
||||
|
||||
describe("cursor stale session detection", () => {
|
||||
|
|
@ -108,6 +126,16 @@ describe("cursor ui stdout parser", () => {
|
|||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("parses stdout-prefixed json lines", () => {
|
||||
const ts = "2026-03-05T00:00:00.000Z";
|
||||
expect(
|
||||
parseCursorStdoutLine(
|
||||
'stdout{"type":"assistant","message":{"content":[{"type":"thinking","text":"streamed"}]}}',
|
||||
ts,
|
||||
),
|
||||
).toEqual([{ kind: "thinking", ts, text: "streamed" }]);
|
||||
});
|
||||
});
|
||||
|
||||
function stripAnsi(value: string): string {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue