feat: collect structured turns from ACP session updates
UwfAcpClient now tracks all session/update events: - agent_message_chunk → assistant message content - agent_thought_chunk → assistant reasoning - tool_call → pending tool invocation (name + rawInput) - tool_call_update (completed/failed) → assistant tool_call + tool result Messages are accumulated across prompts (same session) and stored via storeHermesSessionDetail, restoring the full structured detail (turns with tool calls, reasoning) that was lost in the initial ACP migration. Ref #398
This commit is contained in:
@@ -53,4 +53,25 @@ describe("HermesAcpClient", () => {
|
||||
},
|
||||
{ timeout: 2 * 60 * 1000 },
|
||||
);
|
||||
|
||||
it(
|
||||
"prompt() collects structured messages including tool calls",
|
||||
async () => {
|
||||
await client.connect(process.cwd());
|
||||
const result = await client.prompt("Run this command: echo TOOL_DETAIL_TEST");
|
||||
expect(result.messages.length).toBeGreaterThan(0);
|
||||
// Should have at least one tool message (the echo command)
|
||||
const toolMessages = result.messages.filter((m) => m.role === "tool");
|
||||
expect(toolMessages.length).toBeGreaterThan(0);
|
||||
// Tool message should contain the output
|
||||
const toolContent = toolMessages[0]?.content ?? "";
|
||||
expect(toolContent).toContain("TOOL_DETAIL_TEST");
|
||||
// Should have assistant messages with tool_calls
|
||||
const assistantWithTools = result.messages.filter(
|
||||
(m) => m.role === "assistant" && m.tool_calls !== null,
|
||||
);
|
||||
expect(assistantWithTools.length).toBeGreaterThan(0);
|
||||
},
|
||||
{ timeout: 2 * 60 * 1000 },
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user