diff --git a/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts b/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts index e6b63481e..88965ba15 100644 --- a/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts +++ b/packages/server/src/server/agent/providers/claude/tool-call-detail-parser.ts @@ -96,6 +96,12 @@ const ClaudeToolDetailPass2Schema = z.union([ toolDetailBranchByName("search", ToolSearchInputSchema, z.unknown(), (input) => toSearchToolDetail(input) ), + toolDetailBranchByName("Grep", ToolSearchInputSchema, z.unknown(), (input) => + toSearchToolDetail(input) + ), + toolDetailBranchByName("grep", ToolSearchInputSchema, z.unknown(), (input) => + toSearchToolDetail(input) + ), toolDetailBranchByName("Glob", ToolSearchInputSchema, z.unknown(), (input) => toSearchToolDetail(input) ), diff --git a/packages/server/src/server/agent/providers/claude/tool-call-mapper.test.ts b/packages/server/src/server/agent/providers/claude/tool-call-mapper.test.ts index b993b7184..339164430 100644 --- a/packages/server/src/server/agent/providers/claude/tool-call-mapper.test.ts +++ b/packages/server/src/server/agent/providers/claude/tool-call-mapper.test.ts @@ -245,6 +245,30 @@ describe("claude tool-call mapper", () => { }); }); + it("maps Grep calls as search detail using pattern input", () => { + const item = expectMapped( + mapClaudeCompletedToolCall({ + callId: "claude-grep-1", + name: "Grep", + input: { + pattern: '\\\\\\"cli\\\\\\""', + path: "/Users/moboudra/dev/paseo/packages/desktop/src-tauri/src", + output_mode: "content", + "-n": true, + }, + output: { output: "No matches found" }, + }) + ); + + expect(item.status).toBe("completed"); + expect(item.error).toBeNull(); + expect(item.name).toBe("Grep"); + expect(item.detail).toEqual({ + type: "search", + query: '\\\\\\"cli\\\\\\""', + }); + }); + it("normalizes claude speak tool names through schema transforms", () => { const item = expectMapped( mapClaudeCompletedToolCall({ diff --git a/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts b/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts index 3c21b022c..f6c162dd5 100644 --- a/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts +++ b/packages/server/src/server/agent/providers/claude/tool-call-mapper.ts @@ -75,6 +75,8 @@ const ClaudeSearchToolNameSchema = z.union([ z.literal("WebSearch"), z.literal("web_search"), z.literal("search"), + z.literal("Grep"), + z.literal("grep"), z.literal("Glob"), z.literal("glob"), ]);