Commit Graph

430 Commits

Author SHA1 Message Date
Rob Lourens
e6e776a4b6 Add SSH remote agent host bootstrap (#304882)
* Add SSH remote agent host bootstrap

Adds a new ISSHRemoteAgentHostService that automates connecting to a
remote machine via SSH, installing the VS Code CLI, starting
'code agent-host', and forwarding the agent host port back through
the SSH tunnel.

- New service interface and types in common/sshRemoteAgentHost.ts
- Full implementation using ssh2 in electron-browser/ with dynamic
  imports to respect layering rules
- Multi-step quick input flow for SSH connection details integrated
  into the remote agent host picker
- 'Connect via SSH' command registered in contributions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address PR review feedback

- Strip password/privateKeyPath from ISSHAgentHostConnection.config
  so secrets are not exposed to consumers after connect
- Redact connection tokens (?tkn=...) in all log output and error
  messages to prevent credential leakage
- Parse user@host:port format in SSH host input with proper validation
  for port range and missing components
- Guard onDidClose with a closed flag to prevent double-fire when
  dispose and SSH close/error events overlap

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* SSH working through main process

Co-authored-by: Copilot <copilot@github.com>

* Resolve ssh configs

Co-authored-by: Copilot <copilot@github.com>

* progress

* Granular connect progress, test fix

Co-authored-by: Copilot <copilot@github.com>

* Test, refactor

Co-authored-by: Copilot <copilot@github.com>

* Resolve comments

Co-authored-by: Copilot <copilot@github.com>

* Get rid of cpu-features

* Move to shared process

Co-authored-by: Copilot <copilot@github.com>

* fixes

Co-authored-by: Copilot <copilot@github.com>

* add ssh2 to remote/package.json

* Cleanup and fixes

Co-authored-by: Copilot <copilot@github.com>

* fix

Co-authored-by: Copilot <copilot@github.com>

* fix

Co-authored-by: Copilot <copilot@github.com>

* resolve comments

Co-authored-by: Copilot <copilot@github.com>

* comments

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
2026-03-31 21:37:07 -07:00
Henning Dieterichs
b533ee4b6e Updates component explorer & adopts rspack for fixture serving (#306484) 2026-04-01 03:25:14 +00:00
Raymond Zhao
c1f3775929 chore: run npm audit fix (#306509) 2026-03-30 16:32:21 -07:00
Robo
d11c632ba8 chore: update electron@39.8.5 (#306292)
* chore: update electron@39.8.5

* chore: bump distro
2026-03-30 11:13:12 +00:00
Alex Ross
d96c52ea7d Bump version (#306223) 2026-03-30 08:43:58 +02:00
Robo
bfd8d748ee chore: bump spdlog@0.15.8 (#305281)
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
2026-03-26 21:32:56 +00:00
Lee Murray
dbc84712ae Update @vscode/codicons version to 0.0.46-1 (#304821)
Update @vscode/codicons version to 0.0.46-1 in package.json and package-lock.json

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
2026-03-26 12:42:39 +00:00
Rob Lourens
6c52b71c9a Bump copilot-sdk (#304267)
Co-authored-by: Copilot <copilot@github.com>
2026-03-23 21:58:56 +00:00
Johannes Rieken
9b649d8c33 update version to 1.114 (#303975) 2026-03-23 07:28:25 +00:00
dependabot[bot]
47924f85ad Bump fast-xml-parser from 5.5.6 to 5.5.8 (#303716)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.6 to 5.5.8.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.6...v5.5.8)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-22 18:29:04 -07:00
Robo
30c0bd03a4 chore: bump electron@39.8.3 (#303738)
* chore: bump electron@39.8.3

* chore: update build

* chore: bump distro
2026-03-22 07:20:14 +01:00
Alex Dima
0a0ba75021 Adopt new codicons version 2026-03-21 21:08:48 +01:00
dileepyavan
b978bf74b2 tmp directory should not be used by sandboxed commands (#303699)
* Fix terminal sandbox tmp handling and upgrade sandbox runtime

Fixes #299224

Fixes #303568

* fixing test

* merging changes
2026-03-21 10:20:44 +01:00
Robo
4315cca958 Revert "chore: bump electron@39.8.3" (#303369)
* Revert "chore: bump electron@39.8.3 (#302875)"

This reverts commit d4f7ac5014.

* chore: bump distro
2026-03-20 02:21:37 +00:00
Christof Marti
4be80a8b42 Update to @vscode/proxy-agent 0.40.0 (#298236) 2026-03-19 23:34:29 +00:00
Raymond Zhao
1bd8567766 chore: run npm audit fix (#302988) 2026-03-18 22:10:27 +00:00
Robo
d4f7ac5014 chore: bump electron@39.8.3 (#302875)
* chore: bump electron@39.8.3

* chore: bump distro
2026-03-18 20:26:19 +00:00
dependabot[bot]
b1bf9e91c7 build(deps): bump undici from 6.23.0 to 6.24.1 (#302876)
Bumps [undici](https://github.com/nodejs/undici) from 6.23.0 to 6.24.1.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.23.0...v6.24.1)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.24.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 16:29:22 +00:00
dependabot[bot]
7e1b034ad0 build(deps-dev): bump fast-xml-parser from 5.4.2 to 5.5.6 (#302608)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.4.2 to 5.5.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.2...v5.5.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 16:06:50 +00:00
Robo
f8fd37feb6 chore: bump electron@39.8.2 (#302204) 2026-03-17 07:54:12 +00:00
Anthony Kim
262ba6d42f Update conpty to 1.25 (#301398)
* Update conpty to 1.25

* see if changes fix 1.2.0-beta11 defering conptyNative.connect()

* Revert "see if changes fix 1.2.0-beta11 defering conptyNative.connect()"

This reverts commit c5d9064efa.

* Reapply "see if changes fix 1.2.0-beta11 defering conptyNative.connect()"

This reverts commit ded49adb14.
2026-03-16 18:27:00 -07:00
Rob Lourens
98f15b55ea Implement agentHost process (#296627)
* agent host init

* Agent host: Copilot SDK integration with chat UI

* Agent host: direct MessagePort, logging, SDK wrapper, env fix

* Refactoring and cleanup

* Copilot-authored message: Agent-host tool rendering, protocol, and session 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

* Copilot-authored message: Model picker, session class, DI and test cleanup

* Cleanups

* stuff

* add diagram

* Add claude agent

* Clean up

* Copy some build script changes from #295817

* Simplify

* Update docs

* Register agent-host via chatSessions contribution API, reduce peripheral diff

* Cleanup

* Don't ship stuff in stable

* Dynamic agent discovery via listAgents() IPC

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)

* Fix review findings: proxy, disposal, filtering, tests

- 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)

* Use DI for AgentHostLanguageModelProvider

(Written by Copilot)

* Strip @img/sharp native binaries from builds

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)

* Strip Claude SDK vendored ripgrep binaries

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)

* Add tests for AgentSession, AgentService dispatcher, and workbench agent host components

(Written by Copilot)

* Add trace logging, IPC output channel, tool permissions, and attachment 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)

* Add tests for attachment context conversion and threading

(Written by Copilot)

* Add gap analysis docs for Copilot and Claude SDK implementations

(Written by Copilot)

* Sanitize env vars for Copilot CLI subprocess

Strip VSCODE_*, ELECTRON_* (except ELECTRON_RUN_AS_NODE), NODE_OPTIONS, and
other debug-related env vars that can interfere with the Node.js process the
SDK spawns. Matches the env sanitization from the extension implementation.
Also set useStdio and autoStart for proper CLI communication.

(Written by Copilot)

* Add error, usage, and title_changed event types to IPC contract

Add IAgentErrorEvent, IAgentUsageEvent, and IAgentTitleChangedEvent to the
progress event union. Wire up session.error and assistant.usage events from
the Copilot SDK to fire as IPC events instead of only logging. Handle error
events in the renderer session handler by rendering the error message. Usage
and title_changed events are logged at trace level.

(Written by Copilot)

* Add abortSession IPC method for proper cancellation

Add abortSession(session) to the IPC contract, implemented across AgentService,
CopilotAgent (calls session.abort()), ClaudeAgent (no-op, uses AbortController),
and the renderer proxy. Wire up cancellation in the session handler to call
abortSession before finishing, so the SDK actually stops processing.

(Written by Copilot)

* Address reviewer feedback: error finishes request, Claude abort, tests

- Error events now call finish() so the request doesn't hang if the SDK
  doesn't send idle after an error
- ClaudeAgent.abortSession calls ClaudeSession.abort() which signals the
  AbortController and creates a new one for future turns
- Add test: cancellation calls abortSession on the agent host service
- Add test: error event renders message and finishes the request
- Remove stale TODO in interruptActiveResponseCallback
- Use timeout() helper instead of raw setTimeout in test
- Update gap docs to reflect completed work

(Written by Copilot)

* Add permission request IPC round-trip (Written by Copilot)

* Remove Claude agent from agent-host process

Strip the Claude Agent SDK integration from the agent-host utility process
to focus on the Copilot SDK path.

- Delete src/vs/platform/agent/node/claude/ (claudeAgent, claudeSession, claudeToolDisplay)
- Remove @anthropic-ai/claude-agent-sdk from package.json
- Remove AgentHostClaude enum member and all switch cases
- Remove Claude command registration in electron-browser chat.contribution
- Clean up build scripts (.moduleignore, verify-macho, gulpfile.vscode)
- Narrow AgentProvider type to just 'copilot'
- Update tests and documentation

(Written by Copilot)

* Wire up permission confirmation UI with ChatToolInvocation (Written by Copilot)

* Fix reviewer feedback: safe permission serialization, deny on abort/dispose (Written by Copilot)

* Forward reasoning events as thinking blocks (Written by Copilot)

* Pass workspace folder as workingDirectory to Copilot SDK (Written by Copilot)

* Store and pass workingDirectory on session resume, update gap docs (Written by Copilot)

* Fix permission rendering, session-scoped permissions, and test gaps (Written by Copilot)

* Auto-approve read permissions inside workspace folder (Written by Copilot)

* Move read auto-approve into CopilotAgent where permission policy belongs (Written by Copilot)

* Update gap docs (Written by Copilot)

* Use log language for IPC output channel, add trace prefix (Written by Copilot)

* Add tool rendering gaps to docs (Written by Copilot)

* Stringify URIs in IPC output channel for readability (Written by Copilot)

* Fix IPC output channel: use log languageId with non-log channel for proper append + syntax highlighting (Written by Copilot)

* Fix build errors: add URI import, fix test mock types (Written by Copilot)

* Don't localize agent host provider strings (Written by Copilot)

* Remove claude-agent-sdk from eslint allowed imports (Written by Copilot)

* fix test

* initial thoughts

* Rename folder to agentHost

* Fix paths

* Fixes

* Fixes for copilot

* Fix moduleignore

* first working protocol version

align more closely with protocol

json rpc and some gaps

* cleanup

* Fix copilot pty.node packaging

* Fix test

* prebuild packaging

* Agenthost server fixes

* Update monaco.d.ts

* Update docs

* Fixes

* Build fix

* Fix build issues

* reduce duplication in side effecting code

* fix model switching not working

* reduce mock duplication

* Build fixes

* Copy vscode's node.pty

* And ripgrep

* And thsi

* Ripgrep goes to non-SDK

* Skip copy for stable build

* Remove outdated script

* Build fixes for asar

* fix

* Add some logging

* Fix for windows

* Fix

* Logs

* build: add glob diagnostic for copyCopilotNativeDeps

* build: check both node_modules/ and .asar.unpacked/ for source binaries

* Fix

* Remove excalidraw

---------

Co-authored-by: Connor Peet <connor@peet.io>
Co-authored-by: Connor Peet <copeet@microsoft.com>
2026-03-16 15:33:31 -07:00
Robo
c3eb7f8453 chore: bump electron@39.8.1 (#302053)
* chore: bump electron@39.8.1

* chore: update node.js build

* chore: bump distro

* chore: bump .nvmrc
2026-03-16 14:51:48 +00:00
Johannes Rieken
97af18c54e update version to 1.113 (#301958)
update version
2026-03-16 09:38:13 +01:00
dependabot[bot]
be855d27b8 build(deps): bump undici from 7.18.2 to 7.24.0 (#301624)
Bumps [undici](https://github.com/nodejs/undici) from 7.18.2 to 7.24.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.18.2...v7.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-13 17:52:39 -07:00
Raymond Zhao
c11185fd50 chore: run npm audit fix (#301189) 2026-03-12 18:48:37 +00:00
Robo
d666fe6572 feat: add assets for macOS 26 icon support (#300901) 2026-03-12 05:32:01 +00:00
Matt Bierner
cfff60f09d Merge pull request #300860 from mjbvz/dev/mjbvz/heavy-swallow
Re-remove webpack (again again)
2026-03-11 18:14:40 -07:00
Henning Dieterichs
5d56633a57 updates component explorer 2026-03-11 22:30:41 +01:00
Christof Marti
383c174f7a Add proxy support to WebSocket (#298236) 2026-03-11 21:27:42 +00:00
Matt Bierner
7a090df6c7 Re-remove webpack (again again)
This reverts commit 1d31c3ce40.
2026-03-11 10:46:45 -07:00
Anthony Kim
7461493056 Bump xterm to 6.1.0-beta.191 (#300822) 2026-03-11 10:40:56 -07:00
Henning Dieterichs
099d9c3f13 updates component explorer 2026-03-11 12:30:20 +01:00
Osvaldo Ortega
1d31c3ce40 Revert "Re-remove webpack" 2026-03-10 20:12:53 -07:00
Osvaldo Ortega
5a84afd304 Merge pull request #300603 from microsoft/osortega/magic-weasel
Ripgrep package version bump
2026-03-10 18:26:01 -07:00
Osvaldo Ortega
7d59e8c22f Ripgrep package version bump 2026-03-10 17:29:39 -07:00
Osvaldo Ortega
01c89399b5 Update 2026-03-10 16:25:16 -07:00
Osvaldo Ortega
63b43291ff Merge branch 'main' of https://github.com/microsoft/vscode into copilot-worktree-2026-02-27T00-36-54 2026-03-10 14:57:02 -07:00
Matt Bierner
03968c2076 Re-remove webpack
All of our extensions are now using esbuild
2026-03-10 13:42:52 -07:00
dependabot[bot]
82ee6ebf02 Bump the component-explorer group with 2 updates (#300168)
Bumps the component-explorer group with 2 updates: [@vscode/component-explorer](https://github.com/microsoft/vscode-packages/tree/HEAD/js-component-explorer/packages/explorer) and [@vscode/component-explorer-cli](https://github.com/microsoft/vscode-packages/tree/HEAD/js-component-explorer/packages/cli).


Updates `@vscode/component-explorer` from 0.1.1-19 to 0.1.1-22
- [Commits](https://github.com/microsoft/vscode-packages/commits/HEAD/js-component-explorer/packages/explorer)

Updates `@vscode/component-explorer-cli` from 0.1.1-15 to 0.1.1-18
- [Commits](https://github.com/microsoft/vscode-packages/commits/HEAD/js-component-explorer/packages/cli)

---
updated-dependencies:
- dependency-name: "@vscode/component-explorer"
  dependency-version: 0.1.1-22
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: component-explorer
- dependency-name: "@vscode/component-explorer-cli"
  dependency-version: 0.1.1-18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: component-explorer
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-10 11:52:14 -07:00
Anthony Kim
01eb53f0f9 Bump xterm to take IME overflow fix (#300322)
Bump xterm to take IME fix
2026-03-10 11:03:43 -07:00
Lee Murray
31fa18a9e4 Update @vscode/codicons to version 0.0.45-14 (#300457)
chore: update @vscode/codicons version to 0.0.45-14 in package.json and package-lock.json

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
2026-03-10 15:13:09 +00:00
Matt Bierner
11e8f0217a Merge pull request #299846 from mjbvz/dev/mjbvz/embarrassed-rodent
Update build TS versions
2026-03-09 00:47:50 -07:00
Anthony Kim
4fb8242c5f Bump xterm to fix kitty keyboard protocol (#299833) 2026-03-07 23:03:35 -08:00
Robo
3154150df5 chore: bump electron@39.8.0 (#299669)
* chore: bump electron@39.8.0

* chore: bump distro
2026-03-07 01:26:01 +00:00
Matt Bierner
cac47a6efc Update build TS versions 2026-03-06 10:41:25 -08:00
Johannes Rieken
a9a9436b2b Bump version to 1.112.0 in package.json and package-lock.json (#299736) 2026-03-06 11:26:44 +00:00
Matt Bierner
7165ef63e3 Use older zip.js 2026-03-05 14:47:37 -08:00
Matt Bierner
e1116427ee Restore old package-lock exact version 2026-03-05 13:28:32 -08:00
Matt Bierner
9086b47862 Temporarily restore webpack ext builds
Needed since https://github.com/microsoft/vscode/pull/298920 snuck in which brought back webpack for the github extension
2026-03-05 08:45:54 -08:00