* Revert "Chat dictation: always use Nemotron model, remove model setting (#326718)"
This reverts commit 6d02468e2c.
* Revert "Dictation: migrate on-device runtime to Foundry Local streaming ASR (#326678)"
This reverts commit 6b3ff3c7f0.
* chore: remove old context menu code from code.iss
* chore: remove old app name symlink on macOS
* chore: update comment for windows fs workaround
* chore: update issue link for context menu workaround
* chore: remove stale comment from libcxx-fetcher
* Revert "fix: builtin resolution of electron modules via asar hook (#324861)"
This reverts commit 5928613aa1.
* Revert "fix: restrict asar esm hook resolution to app resources (#324851)"
This reverts commit 89bc3825bd.
* Revert "feat: restore asar for node_modules (#324084)"
This reverts commit c9dda3b36a.
* feat: restore node_modules bundled into asar
* fix: store node_modules at top level inside asar archive
* Revert "fix: store node_modules at top level inside asar archive"
This reverts commit 4747aa5e375cc1fe49b8eb510dd1acec1fd6a581.
* fix: pack node_modules into asar
* fix: read copilot/ripgrep natives from node_modules.asar.unpacked
* fix: load node-context modules and native binaries from ASAR
- bootstrap-esm: resolve bare specifiers via package self-reference so
Node applies the package's real `exports`/`main` and ESM conditions.
The previous CommonJS `require.resolve()` picked the `require`
condition and loaded the CJS entry of dual CJS/ESM packages (e.g.
playwright-core), which did not expose their named ESM exports.
- amdX: in `_nodeJSLoadScript`, read module files with the ASAR-aware
`require('fs')` instead of `import('fs')`, which the resolution hook
maps to the ASAR-unaware `original-fs` and therefore cannot read
files inside the archive (e.g. @vscode/iconv-lite-umd).
- agentHost commandAutoApprover: load the tree-sitter `.wasm` files
from node_modules.asar.unpacked in built apps (node_modules in dev).
- agentHost copilotAgent: resolve the @github/copilot-<platform> CLI
and the @microsoft/mxc-sdk sandbox binaries from
node_modules.asar.unpacked in built apps, and unpack
@microsoft/mxc-sdk/bin so those executables can be spawned.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: resolve ASAR modules relative to the archive root
Two follow-up fixes for ASAR support:
- bootstrap-esm: resolve packages inside node_modules.asar with relative
specifiers (require.resolve("./<pkg>/package.json") and "./<spec>")
instead of bare specifiers. The archive directory is named
node_modules.asar, so a bare-specifier resolution walks for a
node_modules directory that does not exist and fails. This broke every
native module imported from main.js in the packaged app
(@vscode/spdlog, @vscode/sqlite3, native-keymap, @vscode/deviceid,
@vscode/policy-watcher), preventing startup.
- create-universal-app: pass `singleArchFiles` so the universal merger
allows files that are unique to a single arch inside the merged
node_modules.asar (the @github/copilot-<arch> platform package and the
arch-specific copilot/ripgrep binaries). These paths are ASAR-internal
(top level, no node_modules prefix); without the allowlist the merge
aborts with "Detected unique file ... not covered by allowList rule".
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: resolve sandbox runtime and Windows CJS lookups with ASAR
* fix: resolve ESM modules from the importer's own node_modules
* fix: unpack node-pty package.json
* fix: resolve node-pty binaries from unpacked asar in Copilot shim
* fix: resolve Copilot native binaries from node_modules.asar.unpacked
* fix: universal build for mxc
* fix: load tree-sitter wasm from node_modules on web
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chore: bump electron@42.4.0
* chore: apply temp dir workaround for short paths
* chore: use 24.15.x for CI node
* chore: update nodejs build
* chore: bump electron@42.5.0
* fix: unblock playwright install on node 24.17
Node 24.16+ made Readable pause()/resume() a no-op on destroyed streams
which makes yauzl 2.x / extract-zip 2.x and older playwright extraction
hang forever.
- extensions/copilot: add "yauzl": "^3.3.1" override (was missed by #318682)
so electron and @vscode/vsce no longer resolve the broken yauzl 2.10, fixing the
hung `npm ci` in the Copilot and Extract chat-lib pipelines.
- extensions/copilot: bump electron ^39.8.5 -> ^42.5.0 so its install
script uses the native @electron-internal/extract-zip instead of extract-zip.
- bump @playwright/test ^1.56.1 -> ^1.61.1 so `playwright install`
uses the fixed extractor, unblocking the "Download Electron and
Playwright" step in all electron test pipelines.
* chore: update build
* agentHost: fix macOS sandbox smoke sentinel parsing
On macOS CI, the AgentHost sandbox smoke test resolves the shell to
/bin/sh, which uses the sentinel-based completion path. In that path, the
parser could consume the echoed sentinel command text
(`<<<COPILOT_SENTINEL_..._EXIT_$?>>>`) before the real numeric marker
arrived, causing a false `Exit code: -1` failure even though the command
later completed successfully.
Harden the sentinel parser to ignore echoed/non-numeric sentinel text
and use the latest complete numeric marker instead. Also force the
macOS AgentHost sandbox smoke test to use /bin/sh and assert that in the
suite log so local runs exercise the same path as CI.
Adds a regression test for echoed sentinel command text.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chore: update screenshot baseline after playwright bump
* chore: bump distro
* chore: fix typecheck
* chore: bump distro
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add os-theme to .moduleignore as it's not used by the CLI
* Remove outdated libc6 dependency version from referenceGeneratedDepsByArch
* Remove outdated libc6 dependency version from referenceGeneratedDepsByArch
* chore: update @github/copilot and @github/copilot-sdk to version 1.0.61 and 1.0.1 respectively
- Bump @github/copilot from 1.0.60 to 1.0.61 in package.json and package-lock.json
- Update @github/copilot-sdk from 1.0.0 to 1.0.1 in package.json and package-lock.json
- Modify postinstall script to copy tgrep files instead of sharp files
- Update tests to include tgrep binaries
- Change model in e2e tests from 'claude-opus-4.7' to 'gpt-5-mini'
* fix: add libm.so.6(GLIBC_2.27)(64bit) to referenceGeneratedDepsByArch
* Bump @github/copilot-sdk to 1.0.0-beta.8 (Written by Copilot)
Also bumps @github/copilot CLI to 1.0.55-3 to satisfy the SDK's
`^1.0.55-1` peer requirement.
Key SDK breaking changes adapted in `src/vs/platform/agentHost/`:
- `CopilotClientOptions`: `useStdio`/`cliPath`/`autoStart` →
`connection: RuntimeConnection.forStdio({ path })`; `remote` →
`enableRemoteSessions`.
- `SessionContext.cwd` → `workingDirectory`.
- `CopilotSession.getMessages()` → `getEvents()`,
`destroy()` → `disconnect()`.
- `PermissionRequest` is now a discriminated union; the host-side
`ITypedPermissionRequest` is no longer `extends PermissionRequest` but
a standalone bag-of-optionals interface so existing call sites continue
to work. Extended host signal with the new `extension-management` /
`extension-permission-access` kinds.
- `BaseHookInput`: `timestamp: number` → `Date`, `cwd` →
`workingDirectory`, new required `sessionId`.
- `Tool.handler` is now optional — tests use `tool.handler!(...)`.
- `ToolBinaryResult.type` narrowed to literal `'image' | 'resource'`.
- `AssistantUsageData.copilotUsage` and `ShutdownData.totalPremiumRequests`
removed; corresponding accumulation/trace code dropped.
Validation: 0 TS errors, layers check passes, all 1357 agent-host unit
tests pass. Real-SDK integration tests: 9/11 passing. Two failures
documented in the session plan:
- plan-mode session-state test times out (likely needs migration of the
`_enablePlanModeOnClient` shim to the new public
`SessionConfig.onExitPlanModeRequest`).
- subagent-routing test: `read_agent` now appears on the parent session
(likely a CLI 1.0.55 behavior change).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix broken @github/copilot-win32-x64 entry in remote/package-lock.json
The committed remote/package-lock.json had a malformed stub entry:
"node_modules/@github/copilot/node_modules/@github/copilot-win32-x64": {
"optional": true
}
with no version field, which caused npm install to crash with:
TypeError: Invalid Version:
at Node.canDedupe (.../@npmcli/arborist/lib/node.js:1137:32)
at PlaceDep.pruneDedupable (.../@npmcli/arborist/lib/place-dep.js:426:14)
Replaced with a proper top-level node_modules entry for
@github/copilot-win32-x64@1.0.55-3 (matches the resolution used for
the other platform optionals on the @github/copilot dep). This is what
npm naturally produces when regenerating the lockfile from scratch.
Fixes the failing 'Install dependencies' step on the macOS / Remote
CI job.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Bump deb amd64 libc6 floor to 2.15 for new @github/copilot runtime.node
The new @github/copilot 1.0.55-3 ships a Linux x64 runtime.node that
references GLIBC_2.15 (was GLIBC_2.14 in 1.0.49). dpkg-shlibdeps now
emits libc6 (>= 2.15) for amd64; update the reference list so the deb
prepare task no longer fails the build.
Only amd64 is affected: arm64 runtime.node GLIBC version set is
unchanged, and @github/copilot does not ship an armhf binary. The
overall libc6 floor for the package is still 2.28, so distro support
is unchanged.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Run our build scripts directly as typescript #277567
Follow up on #276864
For #277526
* Remove a few more ts-node references
* Fix linux and script reference
* Remove `_build-script` ref
* Fix script missing closing quote
* use type only import
* Fix export
* Make sure to run copy-policy-dto
* Make sure we run the copy-policy-dto script
* Enable `verbatimModuleSyntax`
* Pipelines fixes
* Try adding explicit ext to path
* Fix bad edit
* Revert extra `--`
---------
Co-authored-by: João Moreno <joaomoreno@users.noreply.github.com>
For #269213
This adds a new eslint rule for `as any` and `<any>({... })`. We'd like to remove almost all of these, however right now the first goal is to prevent them in new code. That's why with this first PR I simply add `eslint-disable` comments for all breaks
Trying to get this change in soon after branching off for release to hopefully minimize disruption during debt week work