Agent-host: Spawn from CLI and connect to remotes from Sessions#301140
Merged
roblourens merged 126 commits intomainfrom Mar 17, 2026
Merged
Agent-host: Spawn from CLI and connect to remotes from Sessions#301140roblourens merged 126 commits intomainfrom
roblourens merged 126 commits intomainfrom
Conversation
…ssion fixes Tool invocation rendering: - Emit tool_start/tool_complete as ChatToolInvocation (not progressMessage) - Shell tools (bash/powershell) render as terminal command blocks with IChatTerminalToolInvocationData, output, and exit codes - Non-shell tools render via invocationMessage/pastTenseMessage (markdown) - Filter out report_intent (hidden internal tool) Agent-agnostic protocol: - IPC events carry display-ready fields (displayName, invocationMessage, pastTenseMessage, toolInput, toolOutput, toolKind, language) - All Copilot CLI-specific logic in copilotToolDisplay.ts with typed interfaces for known tools (CopilotToolName enum, parameter types) - Renderer never references specific SDK tool names Session fixes: - Resumed sessions show tool invocations in history (getSessionMessages now returns tool events alongside messages) - Fixed 'already has a pending request' on resumed sessions by conditionally providing interruptActiveResponseCallback - Fixed event filtering for resumed sessions (sessionId override in _trackSession) Documentation: - Split parity.md into design.md (decisions) and backlog.md (tasks) - Updated architecture.md, sessions.md with cross-references - Added maintenance notes to all docs
Replace hardcoded per-provider contributions with a single AgentHostContribution that discovers available agents from the agent host process at startup. Each IAgent backend now exposes an IAgentDescriptor with display metadata and auth requirements. - Add IAgentDescriptor interface and listAgents() to IPC contract - CopilotAgent/ClaudeAgent return descriptors via getDescriptor() - Single AgentHostContribution discovers + registers dynamically - Remove agentHostConstants.ts (no more hardcoded session types) - AgentHostSessionListController/LMProvider take params instead - Rename AgentSessionProviders.AgentHost -> AgentHostCopilot - Update architecture.md, sessions.md, backlog.md (Written by Copilot)
- Add listAgents() forwarding to AgentHostServiceClient - Guard async discovery against disposal race - Add provider field to IAgentModelInfo for per-provider filtering - Filter models and sessions by provider in LM provider and list controller - Update tests for new dynamic API and agent-host-copilot scheme (Written by Copilot)
(Written by Copilot)
sharp is a transitive dependency of the Claude Agent SDK used for image processing. Its native .node binaries cause dpkg-shlibdeps errors during Debian packaging due to $ORIGIN RPATH references. Strip all @img/sharp-* platform packages since the agent host doesn't need image processing at runtime. (Written by Copilot)
The Claude Agent SDK bundles ripgrep binaries for all platforms under vendor/ripgrep/. Wrong-architecture binaries cause macOS Mach-O verification to fail. Strip them entirely via .moduleignore (VS Code has its own ripgrep) and add to verify-macho skip list. (Written by Copilot)
…ent host components (Written by Copilot)
…nt context - Add Agent Host IPC output channel (only registered at trace log level) that logs all IPC method calls, results, and progress events with full JSON payloads - Add trace-level logging in AgentService dispatcher for all method calls - Add trace-level logging in session handler for all progress events and session resolution - Wire up onPermissionRequest handler on CopilotClient.createSession and resumeSession to auto-approve tool permission requests - Add IAgentAttachment type to IPC contract and thread attachments from chat variables (file, directory, selection) through sendMessage to the Copilot SDK (Written by Copilot)
(Written by Copilot)
(Written by Copilot)
… hosts (#301639) * Add directory listing to protocol, and folder picker for remote agent hosts * Protocol improvements * Don't register agenthost URIs as workspace folders * Update pickers after merge * Resolve comments
This reverts commit c30d944.
mjbvz
previously approved these changes
Mar 17, 2026
pwang347
approved these changes
Mar 17, 2026
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.
Exposes --agent-host-port/--agent-host-path to specify an additional port for them to listen on. This runs as a separate process mirroring the architecture from desktop.
Does a 'hello world'.
There are changes to the import logic. I honestly don't know a lot about the import changes Opus is doing here . Without them, there is an error:
This was Copilot's explanation for why they're needed here but not in Electron:
cc @bpasero as the expert in this area