mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-09 00:01:17 +00:00
82 lines
2.1 KiB
TypeScript
82 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { parsePromptEventLine } from "./events.js";
|
|
|
|
describe("parsePromptEventLine", () => {
|
|
it("parses raw ACP session/update agent_message_chunk lines", () => {
|
|
const line = JSON.stringify({
|
|
jsonrpc: "2.0",
|
|
method: "session/update",
|
|
params: {
|
|
sessionId: "s1",
|
|
update: {
|
|
sessionUpdate: "agent_message_chunk",
|
|
content: { type: "text", text: "hello" },
|
|
},
|
|
},
|
|
});
|
|
expect(parsePromptEventLine(line)).toEqual({
|
|
type: "text_delta",
|
|
text: "hello",
|
|
stream: "output",
|
|
tag: "agent_message_chunk",
|
|
});
|
|
});
|
|
|
|
it("parses usage_update with stable metadata", () => {
|
|
const line = JSON.stringify({
|
|
jsonrpc: "2.0",
|
|
method: "session/update",
|
|
params: {
|
|
sessionId: "s1",
|
|
update: {
|
|
sessionUpdate: "usage_update",
|
|
used: 12,
|
|
size: 500,
|
|
},
|
|
},
|
|
});
|
|
expect(parsePromptEventLine(line)).toEqual({
|
|
type: "status",
|
|
text: "usage updated: 12/500",
|
|
tag: "usage_update",
|
|
used: 12,
|
|
size: 500,
|
|
});
|
|
});
|
|
|
|
it("parses tool_call_update without using call ids as primary fallback label", () => {
|
|
const line = JSON.stringify({
|
|
jsonrpc: "2.0",
|
|
method: "session/update",
|
|
params: {
|
|
sessionId: "s1",
|
|
update: {
|
|
sessionUpdate: "tool_call_update",
|
|
toolCallId: "call_ABC123",
|
|
status: "in_progress",
|
|
},
|
|
},
|
|
});
|
|
expect(parsePromptEventLine(line)).toEqual({
|
|
type: "tool_call",
|
|
text: "tool call (in_progress)",
|
|
tag: "tool_call_update",
|
|
toolCallId: "call_ABC123",
|
|
status: "in_progress",
|
|
title: "tool call",
|
|
});
|
|
});
|
|
|
|
it("keeps compatibility with simplified text/done lines", () => {
|
|
expect(parsePromptEventLine(JSON.stringify({ type: "text", content: "alpha" }))).toEqual({
|
|
type: "text_delta",
|
|
text: "alpha",
|
|
stream: "output",
|
|
});
|
|
expect(parsePromptEventLine(JSON.stringify({ type: "done", stopReason: "end_turn" }))).toEqual({
|
|
type: "done",
|
|
stopReason: "end_turn",
|
|
});
|
|
});
|
|
});
|