Repository navigation
Conversation
… as on web Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Pi tool rows now use existing descriptive labels instead of raw tool names, aligning mobile presentation with web. The change affects display metadata only, without changing tool execution or permissions. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
Problem
On mobile, rows for Pi's built-in tools show only the raw tool name. A Pi
readshows "Read" with no file,grep/find/lsshow "Grep"/"Find"/"Ls", and a singleedit/writeshows "Edit"/"Write". Web shows "Read src/a.ts", "Searched foo in src", and the changed file for the same items, and so does mobile for every other provider.The cause is that the Pi adapter sets each file-change and generic tool item's
titleto the Pi tool name. Mobile'sitemSummarytreats a non-empty title as the label, while web mostly works the label out from the item. No other adapter does this: Cursor leavestitlenull, and Claude, OpenCode, ACP, and Cursor set read and search titles withformatReadToolLabel/formatSearchToolLabel.Change
emitToolIteminpackages/provider-pi/src/server/adapter.tsnow setstitle: nullonfile_changeanddynamic_toolitems, like Cursor's default. Both clients then derive the same label. MCP tools keep their title from themcpToolPresentationspread that follows. Command items still usebash/powershell, which an existing test pins to tell the two shells apart.Scope and approval
Very small, focused fix for an obvious bug, so no prior issue: one adapter labels tools differently from all of its siblings, and the change is 2 lines plus 2 assertions in existing tests.
Overlap search: I searched the PR index and GitHub for Pi tool titles and labels. #27607 (Pi task lists) adds a separate todo-list emitter and does not touch these lines. #16529 (Cua) and #27521 (nested Pi tools) do not change Pi item titles either.
Verification
adapter.test.tsfail withAssertionError: expected 'read' to equal null, and the file-change assertion in "persists edit patches and write content on file change items" also fails.vp test run src/server/adapter.test.ts(packages/provider-pi) passes 93/93, including after rebasing on current main.vp run check:changedpasses: format, lint, knip, typecheck (9 packages), tests 94/94.buildThreadFeedwith a throwaway test (not committed), using Pi-shaped items:Reviewed with sol-loop: 1 round with GPT-6.1 Sol on high. Sol verdict: approved.
Created with Claude Opus 5.5 in Claude Code (T3 Code).
🤖 Generated with Claude Code