2026-07-17 16:22:38 -04:00
|
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
|
|
|
|
|
|
import { formatToolDisplay } from "./toolExecutionDisplay";
|
|
|
|
|
|
|
|
|
|
describe("formatToolDisplay", () => {
|
|
|
|
|
const projectPath = "/workspace/open-swe";
|
|
|
|
|
|
|
|
|
|
it("renders read_file with the file_path alias consistently", () => {
|
|
|
|
|
expect(
|
|
|
|
|
formatToolDisplay(
|
|
|
|
|
"read_file /workspace/open-swe/AGENTS.md",
|
|
|
|
|
"read",
|
|
|
|
|
{ file_path: "/workspace/open-swe/AGENTS.md" },
|
|
|
|
|
projectPath,
|
|
|
|
|
),
|
|
|
|
|
).toBe("Read AGENTS.md");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("renders ls as a list operation with a relative path", () => {
|
|
|
|
|
expect(
|
|
|
|
|
formatToolDisplay(
|
|
|
|
|
"ls /workspace/open-swe/ui",
|
|
|
|
|
"read",
|
|
|
|
|
{ path: "/workspace/open-swe/ui" },
|
|
|
|
|
projectPath,
|
|
|
|
|
),
|
|
|
|
|
).toBe("List ui");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("renders search tools with their pattern", () => {
|
|
|
|
|
expect(
|
|
|
|
|
formatToolDisplay("grep", "search", { pattern: "tool_calls" }, projectPath),
|
|
|
|
|
).toBe('Search "tool_calls"');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("normalizes write_todos", () => {
|
|
|
|
|
expect(formatToolDisplay("write todos", "other", {}, projectPath)).toBe("Update todos");
|
|
|
|
|
});
|
2026-07-17 16:22:38 -04:00
|
|
|
|
|
|
|
|
it("sentence-cases raw tool names", () => {
|
|
|
|
|
expect(formatToolDisplay("enter_plan_mode", "other", {}, projectPath)).toBe(
|
|
|
|
|
"Enter plan mode",
|
|
|
|
|
);
|
|
|
|
|
expect(formatToolDisplay("save_plan", "other", {}, projectPath)).toBe("Save plan");
|
|
|
|
|
expect(formatToolDisplay("slack_thread_reply", "other", {}, projectPath)).toBe(
|
|
|
|
|
"Slack thread reply",
|
|
|
|
|
);
|
|
|
|
|
});
|
2026-07-17 16:22:38 -04:00
|
|
|
});
|