Repository navigation
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. Walkthrough
Severity of issue fixed: Medium Merge Risk:
|
# Conflicts: # src/renderer/src/i18n/locales/en.json
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

Minor · Use mcpToolIdentity for the expanded identity line. · NativeChatToolInvocation.tsx:21-27
src/renderer/src/components/native-chat/NativeChatToolInvocation.tsx:21-27
Minor · Functional Correctness · Quick win Use
mcpToolIdentityfor the expanded identity line.The expanded header currently bypasses the identity helper. For an MCP name without explicit identity, the compact row shows the derived
server / tool, but the expanded header does not. Use the helper for the expanded identity line while keepingcall.nameso the exact tool name remains available.Suggested fix
import { formatToolInput, MAX_TOOL_DETAIL_LENGTH, truncateToolDetail } from '../../../../shared/native-chat/tools/native-chat-tool-summary' +import { mcpToolIdentity } from '../../../../shared/native-chat/tools/native-chat-tool-identity' import { NativeChatCopyButton } from './NativeChatCopyButton' @@ const [expanded, setExpanded] = useState(false) const available = call.input !== null && call.input !== undefined + const identity = mcpToolIdentity(call.name, call.mcpIdentity) return ( @@ - {call.mcpIdentity ? ( + {identity ? ( <p className="whitespace-pre-wrap break-all font-mono text-xs text-chat-foreground-faint"> - {call.mcpIdentity.server} / {call.mcpIdentity.tool} + {identity.server} / {identity.tool} </p> ) : null}

Minor · Treat null as a valid no-argument input. · NativeChatToolInvocation.tsx:17-19
src/renderer/src/components/native-chat/NativeChatToolInvocation.tsx:17-19
Minor · Functional Correctness · Quick win Treat
nullas a valid no-argument input.Claude and Codex persist reachable no-argument calls with
input: null. The current predicate sends those calls to the unavailable-input message. Keepundefinedas the omitted legacy-input case, but rendernullthrough the valid empty-input path.Suggested fix
- const available = call.input !== null && call.input !== undefined + const available = call.input !== undefined

Minor · Distinguish omitted input from a valid no-argument… · MobileNativeChatToolInvocation.tsx:30-32
mobile/src/session/native-chat/transcript/MobileNativeChatToolInvocation.tsx:30-32
Minor · Functional Correctness · Quick win Distinguish omitted input from a valid no-argument call.
Claude and Codex persist reachable no-argument calls with
input: null. The current predicate treats those calls as unavailable, so mobile can displayInput is not available in this transcript.instead of the valid invocation details. Check only for omittedundefinedinput. This preserves the legacy fallback without inventing parameters.Suggested fix
- const available = call.input !== null && call.input !== undefined + const available = call.input !== undefined

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
d5528c07-ef53-4e74-a0a8-31a7e55fd8eb
Files selected for processing: 1-
mobile/src/session/native-chat/transcript/MobileNativeChatMessage.tool-result-availability.test.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.
-
# Conflicts: # src/renderer/src/i18n/locales/en.json
# Conflicts: # src/renderer/src/i18n/locales/en.json
ELI5
Expand a compact tool row to see exactly which tool the agent called and the input it received. Shortened commands and additional arguments remain inspectable before or after output arrives.
What Changed
Why
A row summary can omit working directories, offsets, nested arguments and long custom-tool input. CSS can clip even a command shorter than the formatter's preview limit. Exposing the input already held in the transcript solves this without new provider requests or wire fields.
Linked Issue
Fixes #36633
Visual Proof
Earlier captures retain their original source and capture context. This refresh does not claim a new rendered, packaged-app or physical-device run.
Actual production-component fixtures, in English. Before uses upstream
b45d71bf8dc5; after uses this change. The same fixture and interaction expand both rows in each capture. No image files are included in the PR tree.Testing
Risk
Level: Low
This changes transcript presentation only. The riskiest boundary is showing incomplete legacy tool input or retaining long text in an open disclosure; unknown input stays explicit and the initial display is bounded. Existing local/remote output ownership and mixed-version wire contracts remain unchanged. Revert this PR to restore the output-only disclosure; no persisted data or provider action needs reversal.
AI Disclosure
Implemented and checked with OpenAI Codex assistance. The contributor owns the change and its validation.
Review
Qualified against frozen upstream main
18f674e69ff6708b634f53d668582d3943acb74d. Fixed the derived-identity finding from the formal review. Deferred the proposed desktop/mobilenull-input change:src/main/claude/claude-message-journaling.tsusesinput: nullwhen the original tool use is unavailable;src/main/claude/structured/journal/claude-structured-item-translation.tscoalesces omitted input to null; andsrc/main/codex/codex-structured-item-translation.ts:mcpToolArgumentsmaps both omitted arguments and an empty object to null. The current producer contract cannot distinguish those states, so treating onlyundefinedas unavailable would label some unknown legacy input as a valid empty invocation. A producer/contract correction is outside this presentation change. The review bot is paused before the current head; latest-head external approval is not claimed.Agent skill upstream boundary
Notes
Input is rendered as text and copied only on user action. There are no new execution, approval, routing or platform-process paths. The advisory docstring percentage does not justify repetitive comments contrary to repository guidance.
Checklist