Claude agent host: roadmap status sync + Phase 8.5 (rich tool-call rendering)#316724
Draft
TylerLeonhardt wants to merge 2 commits into
Draft
Claude agent host: roadmap status sync + Phase 8.5 (rich tool-call rendering)#316724TylerLeonhardt wants to merge 2 commits into
TylerLeonhardt wants to merge 2 commits into
Conversation
…ndering) - Mark Phases 5, 6, 7, 8 as DONE (implementations have shipped; just catching the headings up to reality). - Insert Phase 8.5 — Rich tool-call rendering parity with Copilot. Today the Claude permission card for Bash reads 'Run shell command' with no command shown; Bash/Grep/Glob rows render in the generic renderer instead of the dedicated terminal/search renderers. This phase ports Copilot's getInvocationMessage / getPastTenseMessage / getToolKind / getShellLanguage / getToolInputString shape into claudeToolDisplay.ts and wires them through the permission, mapper, and replay paths. Phase 6.5 (Fork) intentionally stays Deferred.
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the Claude agent host roadmap documentation to reflect current implementation status and to add a new planned Phase 8.5 focused on richer tool-call rendering (matching Copilot’s tool-call UI fidelity).
Changes:
- Mark Phases 5–8 as ✅ DONE in the roadmap headings.
- Add Phase 8.5 section describing planned work to improve Claude tool-call invocation/past-tense messaging and
_metatagging for terminal/search/subagent renderers.
Show a summary per file
| File | Description |
|---|---|
| src/vs/platform/agentHost/node/claude/roadmap.md | Updates phase status headings and adds a new Phase 8.5 plan for richer tool-call rendering parity. |
Copilot's findings
- Files reviewed: 1/1 changed files
- Comments generated: 2
Comment on lines
+813
to
+815
| subagent specially. Phase 12 already laid the `_meta.toolKind: | ||
| 'subagent'` half down; this phase finishes the parity for the rest of | ||
| the SDK's built-in tools. |
Comment on lines
+836
to
+839
| - `getClaudeToolKind(toolName)` → `'terminal' | 'subagent' | | ||
| 'search' | undefined`. `Bash` / `BashOutput` / `KillBash` → | ||
| `'terminal'`; `Grep` / `Glob` → `'search'`; `Task` → | ||
| `'subagent'` (Phase 12 already does this; consolidate the call |
Adds phase8.5-plan.md alongside roadmap.md's Phase 8.5 section.
Synthesized from a 3-model council (GPT-5.5, Claude Opus 4.6,
GPT-5.3-Codex) and refined through a grill-with-docs session.
Locked decisions:
- D1: getClaudeToolKind is a TOOL_ROWS column (single source of truth).
- D2: add Agent row to TOOL_ROWS; delete SUBAGENT_TOOL_NAMES.
- D3: defensive Record<string, unknown> access; no per-tool exported
types.
- D4: pastTenseMessage is success-aware (tool_result.is_error).
- D5: live mapper mirrors Copilot's stash-on-start/reuse-on-complete
pattern, with state encapsulated in a new ClaudeToolCallRegistry
class (replaces today's bare maps on ClaudeMapperState).
- D6: _meta single-write on Start; reducer carries to Complete; replay
emits on its single terminal action (asymmetry by design).
- D7: MCP tools get toolKind: undefined.
- D8: one big per-tool snapshot table covering all 5 helpers.
- D9: getClaudeInvocationMessage('Task', ...) owns the Task description
fallback; Phase 12's site reduces to a plain helper call.
- D10: _meta stays flat (no per-kind namespacing).
Steps cover claudeToolDisplay (helpers + columns), claudeCanUseTool
(permission card rich invocation + _meta), sessionPermissions (forward
_meta through pending->ready), claudeMapSessionEvents (registry
migration + _meta on Start + success-aware past tense),
claudeReplayMapper (parity), claudeSubagentSignals (inner tool
parity), and the snapshot + behavior tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documentation-only update to
src/vs/platform/agentHost/node/claude/roadmap.md.What's in
Status catch-up. Marks Phases 5, 6, 7, 8 as ✅ DONE. The code for all four has been on
mainfor a while; the headings just hadn't been updated. Phase 6.5 (Fork) intentionally stays Deferred — its scope is blocked behind Phase 13's result-message mapper and the throw atclaudeAgent.tsis the agreed terminal state for now.New Phase 8.5 — Rich tool-call rendering parity with Copilot. Captures a gap surfaced during live testing:
Bashpermission card reads 'Run shell command' with no command shown.Bash/Grep/Globrows render in the generic tool renderer instead of the dedicated terminal / search renderers.'<displayName> finished'instead of including the actual command / file / pattern.The phase ports Copilot's helper shape from
copilotToolDisplay.ts—getInvocationMessage/getPastTenseMessage/getToolKind/getShellLanguage/getToolInputString— intoclaudeToolDisplay.ts, keyed off the SDK'stool_use.inputschemas, and wires them through:claudeCanUseTool.ts— so permission cards include the actual invocation and use the righttoolKind/language.claudeMapSessionEvents.ts— so liveSessionToolCallReady/SessionToolCallCompletecarry rich invocation + past-tense +_meta.toolKind/_meta.language(single canonical path; Phase 12'ssubagenttoolKind reuses the same field).claudeReplayMapper.ts— same_metaand rich messages on historical rows so restored sessions render identically to live ones.Not in this PR
Just the roadmap update. The Phase 8.5 implementation will follow as its own PR.
Risk
None — markdown only.