murashit_codex-panel/tests/features/chat/presentation/thread-stream/subagent-activity-preview.test.ts
murashit aadcf179bc refactor(runtime): make vault the fixed workspace root
Remove protocol thread cwd from panel state and operations.
Require the immutable vault root wherever path presentation needs a workspace base.
2026-07-20 17:27:56 +09:00

77 lines
2.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import type { ThreadStreamItem } from "../../../../../src/features/chat/domain/thread-stream/items";
import { subagentActivityPreview } from "../../../../../src/features/chat/presentation/thread-stream/subagent-activity-preview";
describe("subagent activity preview", () => {
it("shows streamed reasoning without its transport label", () => {
expect(
subagentActivityPreview(
{
id: "reasoning",
kind: "reasoning",
role: "tool",
text: "reasoning: Inspecting notification routing",
},
"/vault",
),
).toBe("Inspecting notification routing");
});
it("prefers the active task step", () => {
expect(
subagentActivityPreview(
{
id: "tasks",
kind: "taskProgress",
role: "tool",
explanation: "Implementation plan",
steps: [
{ step: "Read code", status: "completed" },
{ step: "Patch notification routing", status: "inProgress" },
],
status: "inProgress",
},
"/vault",
),
).toBe("Patch notification routing");
});
it("reuses the compact command target summary", () => {
expect(
subagentActivityPreview(
{
id: "command",
kind: "command",
role: "tool",
commandAction: "search",
commandTarget: { kind: "search", query: "inactive", path: "/vault/src" },
command: 'rg "inactive" src',
cwd: "/vault",
status: "inProgress",
},
"/vault",
),
).toBe("inactive in src");
});
it("uses the first non-empty assistant line and omits user items", () => {
const assistant: ThreadStreamItem = {
id: "answer",
kind: "dialogue",
dialogueKind: "assistantResponse",
dialogueState: "completed",
role: "assistant",
text: "\n Tests are passing. \nMore detail",
};
const user: ThreadStreamItem = {
id: "prompt",
kind: "dialogue",
dialogueKind: "user",
role: "user",
text: "Do the work",
};
expect(subagentActivityPreview(assistant, "/vault")).toBe("Tests are passing.");
expect(subagentActivityPreview(user, "/vault")).toBeNull();
});
});