mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-15 12:55:51 +00:00
91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import {
|
|
addAssistantToolTraceHost,
|
|
addToolTraceEntry,
|
|
clearActiveToolTraceHost,
|
|
createToolTraceState,
|
|
} from "./render.js";
|
|
|
|
describe("tool trace grouping state", () => {
|
|
test("keeps tool entries attached to the current assistant turn", () => {
|
|
let state = createToolTraceState();
|
|
|
|
const assistant = addAssistantToolTraceHost(state, "Checking the repo");
|
|
state = assistant.state;
|
|
|
|
const toolUse = addToolTraceEntry(state, "use");
|
|
state = toolUse.state;
|
|
|
|
const toolResult = addToolTraceEntry(state, "result");
|
|
state = toolResult.state;
|
|
|
|
expect(assistant.host).toEqual({
|
|
id: "trace-1",
|
|
kind: "assistant",
|
|
assistantContent: "Checking the repo",
|
|
entryKinds: [],
|
|
});
|
|
expect(toolUse.createdHost).toBeNull();
|
|
expect(toolResult.createdHost).toBeNull();
|
|
expect(state.hosts).toEqual([
|
|
{
|
|
id: "trace-1",
|
|
kind: "assistant",
|
|
assistantContent: "Checking the repo",
|
|
entryKinds: ["use", "result"],
|
|
},
|
|
]);
|
|
});
|
|
|
|
test("creates an orphan trace host when tool activity has no assistant turn", () => {
|
|
const result = addToolTraceEntry(createToolTraceState(), "use");
|
|
|
|
expect(result.createdHost).toEqual({
|
|
id: "trace-1",
|
|
kind: "orphan",
|
|
assistantContent: "",
|
|
entryKinds: ["use"],
|
|
});
|
|
expect(result.state.hosts).toEqual([
|
|
{
|
|
id: "trace-1",
|
|
kind: "orphan",
|
|
assistantContent: "",
|
|
entryKinds: ["use"],
|
|
},
|
|
]);
|
|
});
|
|
|
|
test("starts a new orphan host after a visible user turn clears the active assistant host", () => {
|
|
let state = createToolTraceState();
|
|
state = addAssistantToolTraceHost(state, "Running tools").state;
|
|
state = addToolTraceEntry(state, "use").state;
|
|
|
|
state = clearActiveToolTraceHost(state);
|
|
|
|
const nextResult = addToolTraceEntry(state, "result");
|
|
|
|
expect(nextResult.createdHost).toEqual({
|
|
id: "trace-2",
|
|
kind: "orphan",
|
|
assistantContent: "",
|
|
entryKinds: ["result"],
|
|
});
|
|
expect(nextResult.state.hosts).toEqual([
|
|
{
|
|
id: "trace-1",
|
|
kind: "assistant",
|
|
assistantContent: "Running tools",
|
|
entryKinds: ["use"],
|
|
},
|
|
{
|
|
id: "trace-2",
|
|
kind: "orphan",
|
|
assistantContent: "",
|
|
entryKinds: ["result"],
|
|
},
|
|
]);
|
|
});
|
|
});
|