Commit Graph
167278 Commits
Author SHA1 Message Date
Hawk TicehurstandCopilot e64cbef5ff Use extensions icon for customizations in editor window (#340530)
Use extensions icon for Chat customizations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 17:46:01 +00:00
Connor Peet 61783517d5 Preserve newer debugger stop details during continued cleanup (#339530)
Fixes #339076.

A quick `continued` → `stopped` sequence can leave a thread paused while
its Call Stack pause reason is missing. The continued handler removes
session stop details after awaiting thread-status scheduling, so it can
also remove a newer stop recorded during that wait.

Clear the affected session stop details when the continued event
arrives, matching the existing eager recording of stopped events. Thread
cancellation and cleanup remain scheduled. Single-thread continuation
preserves other threads' records; all-thread continuation clears earlier
records, including stops without a thread ID.

Add six tests using DebugSession and RawDebugSession with a fake
protocol adapter. They cover newer single/all-thread stops, ordinary
continuation, an unaffected stopped thread, and an all-thread stop
without a thread ID. Three defect assertions fail against unmodified
main and pass with the change.

Validation for `7850f8fac1e91b5b6e45a04eecd15027dcb56a3b`, based on main
`5983cda0c8126417e5a9cdf33d0be2f4000d3f04`:
- Cloud browser debugger suites: 120 passed each on Linux/Windows
Chromium and macOS WebKit; baseline suites passed 114 each.
- Cloud Electron debugger suites: 137 passed on Linux/macOS, with one
existing Windows-only test skipped; 138 passed on Windows.
- Source type checking, targeted hygiene/ESLint, module layers, class
field initialization, TypeScript security compiler and diff checks
passed.
- Repository-wide JavaScript/TypeScript CodeQL analysis completed and
uploaded its results.
- Local macOS arm64 debugger suites and static checks also passed.

Fork validation: [cross-platform/source
checks](https://github.com/rksharma-owg/vscode/actions/runs/37164496155),
[Linux Electron
rerun](https://github.com/rksharma-owg/vscode/actions/runs/37164694653).
The initial Linux Electron job failed before tests due to sandbox-helper
permissions; the corrected runner passed. Fork-only workflow commits are
excluded from this PR.
2026-10-08 12:26:02 -05:00
Anthony Kim 6eb5f37d1c Add Stop for attached background shells in Agent Host chats (#340097)
agentHost: Stop attached background shells from their details

Adds a Stop Shell button beside a background shell's command in the
Background Shells pill: in the live output's title, or next to the
command line when the shell has no output.

The client sends the VS Code-only vscode/stopBackgroundWork request, so
the generated AHP protocol is unchanged. Hosts mark stoppable entries in
their _meta; Copilot marks attached shells and stops them through the
SDK's session.rpc.tasks.cancel. Detached shells are not offered yet.
2026-10-08 10:19:56 -07:00
Anthony Kim d2a9268a5f Show managed plugin progress and failures in Agent Host chat (#340362)
* agentHost: show managed plugin preparation in chat

The Copilot runtime prepares plugins required by the organization before
it admits a message, and reports progress and failures as session.info and
session.warning events of type managed_plugins. Agent Host only logged
them, so chat showed a generic "Working" and failures never reached the
user.

- Show the progress message as the waiting turn's activity, cleared when
  the runtime admits the message or the turn ends.
- Add a failure as a warning that stays visible in the turn; the runtime
  continues without the plugins it could not prepare.
- Only log events that arrive outside a waiting turn, such as preparation
  started by custom agent selection.

* agentHost: reword managed plugin preparation comments

Describe plugin preparation through the session events Agent Host
receives.

* agentHost: keep bare links in host warning text plain

GFM still turns bare URLs, www. addresses and email addresses into links
after markdown escaping. Escape the characters that start them so host
text in the managed plugin and BYOK warnings renders as plain text,
including in the accessible view.

* agentHost: show managed plugin progress as chat activity

The waiting request's progress row reads the chat's activity, but plugin
preparation progress was published as session activity, which never
reaches it. In a live run the progress event arrived while the turn was
waiting, and the row still showed a generic "Thinking".

Publish the progress as chat activity instead, like worktree creation
progress. Intent, Fusion, and command activity are unchanged.

* agentHost: show a managed plugin failure from between turns on the next turn

Plugin preparation for the organization can fail while no message is
waiting, for example after a background policy refresh. Agent Host only
logged those failures, so a failure that the next message did not report
again never reached the user.

Keep the latest such failure and show it in the next sent turn. Drop it
when a managed_plugins_complete info reports the plugins are ready.

* agentHost: show a held managed plugin failure once the message is admitted

A failure reported between turns was added to the next turn as soon as
the message was sent. The message's own admission then retried the failed
preparation and reported the failure again, so the turn showed the same
warning twice. In a live run with a 20-second policy refresh, every
message after an idle period showed two identical warnings.

Show the held failure at the root user.message echo instead, when
admission is over. A failure reported by that admission replaces the held
one, and a managed_plugins_complete info still drops it.

* agentHost: keep managed plugin progress through late abort events

A late abort or idle event from an aborted turn cleared the plugin
preparation progress of the replacement turn that was still waiting,
because the shared activity reset also cleared plugin progress. The
waiting message then lost its install or update text.

Clear plugin progress only for a new turn, admission, a failure, the end
of the turn, or an abort of that turn. Also emit a failure for the
waiting turn as a trusted root-turn action, so it is not dropped as a
late event of the aborted turn.
2026-10-08 09:31:50 -07:00
Cherry WangandCopilot c542a8375b chat: stabilize reference details loading and share pill hovers (#340433)
* chat: stabilize reference details and share pill hover behavior

Keep reference identities stable while metadata loads, centralize shared pill presentation and hover lifecycles, and preserve focus while live status refreshes. Bound background prefetching and promote interactive detail requests through the GitHub transport queue. Preserve the existing content-based popup sizing.

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

* chat: share reference presentation and refresh details smoothly

Render stable leading reference IDs while metadata resolves. Share provider-neutral pill presentation and hover ownership across Agents and editor windows, retain cached details during refresh, and update live status without replacing focused controls. Bound background prefetching and carry interactive priority through the GitHub transport queue.

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

* chat: format reference details refactor

Apply the repository formatter to the reference consumer and fixture changes.

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

* chat: keep shared text previews content sized

Scope the fixed responsive card width to GitHub issue, pull request, and commit content. Keep the shared hover shell responsible for layout and padding without widening short file, URL, customization, or shell previews. Cover content-sized text and rich-card bounds in both densities.

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

* chat: announce live reference status updates politely

Declare one atomic polite live region for issue and pull request status. Keep the live-region contract in the content renderer and preserve unchanged status DOM to avoid repeated announcements during metadata refreshes. Cover announcement attributes and redundant-update preservation.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 08:52:19 -07:00
Logan RamosandCopilot f21d8cb422 sessions: model a real effort and context size in the responsive picker fixture (#340499)
The responsive model fixture labelled its 'high' effort option 'Max 1M' to imitate the old picker's 'Effort Context' readout. The tabbed picker, now the default, also shows a model's context window when it has no context-size setting, so the fixture rendered 'Max 1M · 132K'. Advertise a real 'Max' effort and a 128K/1M context size instead, so the readout reads 'Max · 1M' at a similar width.

Also update the compact fixture's expected visual: the tabbed picker hides the configuration readout while compact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 11:37:08 -04:00
Christof MartiandCopilot 294d096681 agentHost: Honor process CA trust in authenticated proxy smoke (#340455)
* test: Require authenticated CAPI traffic in macOS proxy smoke

Check branch-generation requests in the mandatory Copilot test and exclude preflight curl authentication from Kerberos evidence.

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

* test: Verify authenticated proxy traffic without worktrees

Use utility title generation with a fresh prompt marker to exercise the Agent Host CAPI client. Require proxy authentication for chat completions, verify HTTP 407 without credentials, and assert that no worktree is created.

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

* ci: TEMPORARILY isolate macOS Agents Window smoke validation

Run only macOS Agents Window smoke and both PAC proxy modes. Keep the Azure Copilot VSIX producer, skip unrelated test jobs and source-map uploads, and queue an unpublished macOS ARM64 CI build.

Drop this temporary commit before merging the smoke-test fix.

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

* test: Authenticate the actual Copilot prompt through the proxy

Use the runtime's existing Kerberos SPN option and remove the unauthenticated mock-traffic exception. Match the fresh prompt marker on the actual Responses API request instead of a title-generation request.

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

* test: Exercise Kerberos proxy CONNECT with an HTTPS mock

Serve the authenticated fixture over TLS with a one-day test CA, retain secure discovery endpoints, and pass process-scoped CA trust to Node and the native runtime. Keep certificate verification enabled and leave default HTTP mocks unchanged.

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

* test: Temporarily trust the HTTPS fixture CA on macOS

Trust the generated CA for system-certificate consumers used by Node-side model discovery. Remove its trust entry and only its validated fingerprint during cleanup, and fail explicitly if certificate cleanup fails.

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

* ci: Restore normal validation and remove OS CA trust

Restore all temporary GitHub and Azure CI restrictions requested by review. Remove the interactive macOS trust-store setup, keeping certificate trust scoped to the Agent Host process.

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

* agentHost: Include process CA certificates in proxy requests

Merge Node extra CA certificates into the proxy-agent callback and request-service certificate loading. Cover certificate merging and error propagation, so HTTPS smoke model discovery needs no system trust-store changes.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 15:26:44 +00:00
Aaron MungerandCopilot e1af077cbc sessions: show remote host for workspace-less chats (#340325)
* sessions: show remote host for workspace-less chats

Fixes #340323.

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

* sessions: refresh renamed chat hosts and fix titlebar fixtures

Refresh workspace-less title context when provider session types change, and complete the screenshot fixture service mocks.

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

* sessions: import the titlebar event utility

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

* sessions: preserve DOM event types in the titlebar

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

* sessions: consolidate host title tests and fix grid fixture events

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 17:25:23 +02:00
roblourensandCopilot 4c8b9b7aca chat: rename Mission Control remote backend to GitHub environment (#340430)
chat: rename remote backend to GitHub environment (Written by Copilot)

Advertise githubEnvironment while retaining missionControl as an undocumented compatibility value. Keep backend routing, toggle accessibility, and help text consistent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 08:11:03 -07:00
roblourensandCopilot e41e5122eb agentHost: bump Copilot SDK to 1.0.18-preview.3 (#340441)
agentHost: bump Copilot SDK to 1.0.18-preview.3 (Written by Copilot)

Bundle runtime 1.0.94-3 consistently on desktop and remote, and align retained native telemetry issue evidence with the shipped revision. Preserve existing host code, prompt baselines, assertions, and gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 08:01:50 -07:00
8bc76bf5f9 canvases: fix: keep canvases alive between session/chat switches (#340465)
* sessions: Publish editor working-set lifecycle

Publish the intended session or chat owner before workspace hydration, distinguish queued restores from the sequenced editor apply, and keep the latest owner authoritative while superseded work drains. Let live editors register for retention through presentation-only Details collapse without coupling layout code to canvas types.

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

* sessions: Restore live canvases through working sets

Use opaque runtime-only serializer IDs so native editor working sets restore canvas tabs without persisting canvas identity or sources. Separate suspension from dismissal, retain the BrowserView model and browser-side state across switches, reconcile hydration and deletion safely, and use a focus-safe fallback when native restoration cannot reopen the input.

Co-authored-by: Joaquín Ruales <1588988+jruales@users.noreply.github.com>

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

* sessions: Cover live canvas restoration end to end

Exercise the real editor parts, editor service, serializer and layout controller across all layout scopes, sibling chats, split groups, hydration races, modal fallback, cold-runtime rejection, focus and activation, dismissal behavior, and retained browser state.

Co-authored-by: Joaquín Ruales <1588988+jruales@users.noreply.github.com>

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

* sessions: Document live canvas retention

Specify working-set suspension, live BrowserView lifetime and release conditions, and the Details-only exception for registered live editors whose runtime state cannot be reconstructed.

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

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:54:42 +02:00
ulugbeknaandCopilot App 85b5641b58 sessions: Document live canvas retention
Specify working-set suspension, live BrowserView lifetime and release conditions, and the Details-only exception for registered live editors whose runtime state cannot be reconstructed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:29:22 +02:00
27363f839d sessions: Cover live canvas restoration end to end
Exercise the real editor parts, editor service, serializer and layout controller across all layout scopes, sibling chats, split groups, hydration races, modal fallback, cold-runtime rejection, focus and activation, dismissal behavior, and retained browser state.

Co-authored-by: Joaquín Ruales <1588988+jruales@users.noreply.github.com>

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:29:17 +02:00
f2add7c59d sessions: Restore live canvases through working sets
Use opaque runtime-only serializer IDs so native editor working sets restore canvas tabs without persisting canvas identity or sources. Separate suspension from dismissal, retain the BrowserView model and browser-side state across switches, reconcile hydration and deletion safely, and use a focus-safe fallback when native restoration cannot reopen the input.

Co-authored-by: Joaquín Ruales <1588988+jruales@users.noreply.github.com>

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:29:12 +02:00
ulugbeknaandCopilot App 662587f926 sessions: Publish editor working-set lifecycle
Publish the intended session or chat owner before workspace hydration, distinguish queued restores from the sequenced editor apply, and keep the latest owner authoritative while superseded work drains. Let live editors register for retention through presentation-only Details collapse without coupling layout code to canvas types.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:29:07 +02:00
Benjamin Christopher SimmondsandCopilot 38d9885c15 sessions: Preserve views when reopening the Agents Window (#340495)
Separate window focus from explicit session navigation with a unified reveal target. Keep cold-open workspace handoff and require new-session intent for draft transfer without replacing existing composer input.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 16:12:15 +02:00
Ben VillalobosandCopilot db30bd7254 sessions: add cloud automation cards and run history (#340434)
* sessions: present cloud automation cards and run history

Expose provider-owned target metadata and independent history completeness. Render external runs with GitHub and supported stop actions, preserve keyboard focus, and refresh active history with bounded dispatch discovery without idle definition polling.

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

* sessions: refine cloud automation cards and mixed run history

Keep repository metadata compact, schedules in local time, refresh quiet and header-owned, and cloud/native history chronologically interleaved. Add the GitHub definition link and focus-aware row actions.

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

* sessions: validate cloud refresh states without false empty history

Only show the confirmed empty run state after the catalogue is ready. Cover refresh coalescing, gate cancellation, failed-poll recovery and high-contrast cloud history fixtures.

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

* sessions: clarify unconfirmed and failed cloud history states

Address wave5 Copilot review: gate accessible empty-history announcements on readiness, distinguish first-load failures from cached-history failures, and keep refresh tuning constants out of the architecture spec.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 07:00:17 -07:00
Ben VillalobosandCopilot 6f8fb8a6b3 sessions: add cloud automations to the composer dialog (#340420)
* sessions: add cloud automation dialog and workspace pickers

Add the cloud create/edit experience to the Automations dialog on top of the wave 3 cloud routing, behind chat.automations.cloud.enabled.

- Work in GitHub searches the user's private repositories (or accepts a URL), selects Cloud, and reuses a matching local checkout only when it can still run Cloud. Eligible local folders can choose Cloud directly; known public repositories hide Cloud for new automations.
- Repository eligibility is checked per selected folder (bounded, cached per account) and writes still revalidate. Existing cloud automations keep an immutable target with a disabled workspace picker.
- A Tools section opens a searchable picker over the Mission Control tool catalog, loaded on demand with loading, error and retry states. New automations select every catalog tool; saved tool IDs outside the catalog are preserved.
- Schedules are edited in local time and stored as GitHub's fixed UTC schedule; a note beside Create explains that cloud automations run on a schedule even when the computer is off.
- Escape closes quick inputs inside the dialog without closing it.

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

* sessions: initialize cloud automation configuration in the constructor

The configuration field initializer read the sessionTypeId parameter property, which is not yet assigned under standard class-field semantics and fails define-class-fields-check. Build the configuration in the constructor instead.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 07:00:16 -07:00
Ben VillalobosandCopilot 72aabed289 sessions: wire cloud automations behind an experiment gate (#339419)
* sessions: coordinate cloud mutations and history through GitHub domains

Extend the wave2 repository store with serialized mutation and bounded history coordination using leased GitHub clients and account/grant-scoped AbortSignals. Preserve uncertainty handling, preflight checks, and cold repository resolution.

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

* sessions: route cloud automations through the shared GitHub store

Rebuild wave3 on the refactored wave2 head, preserving the default-off gate, shared contracts, provider routing, and accepted-dispatch semantics. Retain reviewed fixes for independent history errors, unsupported run states, and null configuration resets without adding deferred UI or tool workflows.

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

* sessions: adapt cloud automation facade to Mission Control contracts

Use the replacement automation/task types and retained default-client lease, supply the required creation description, and preserve schedule validation and reviewed projection behavior.

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

* sessions: fix cloud automation lifecycle and update contracts

Enable new automations by default, reload after account and grant notifications settle while blocking writes until catalogue reconciliation, and remove unavailable preflight definitions with the shared conflict result. Add lifecycle and update regression tests.

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

* sessions: simplify cloud automation lifetime checks

Keep operations tied to their original cancellation signal and check cancellation at cache and persistence boundaries instead of repeatedly comparing account fields. Preserve uncertain mutation outcomes and cover client invalidation during repository resolution and publication.

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

* sessions: isolate cloud gate registration test from registry resets

Capture the registered cloud setting at module load, matching the existing parent-gate test, before configuration registry suites remove registrations. Reproduced with the combined registry/contribution suites and verified in Electron and Chromium.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 07:00:16 -07:00
Ben VillalobosandCopilot b52755d7b7 sessions: add cloud automation repository store (#339407)
* sessions: add cloud automation repository store

Cache user-owned cloud definitions from known and recent private repositories with explicit refresh and account isolation. Keep provider wiring, mutations, history and UI separate.

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

* sessions: rename cloud automation store for GitHub

Rename CloudAutomationStore to GitHubCloudAutomationStore and its files. No behavior change.

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

* sessions: use shared GitHub automation domain in store

Acquire the current user's authorization and a cloud-configured client through the shared GitHub service. Preserve account isolation, explicit refresh and complete catalogues without retaining the wave 1 HTTP client. Stack on #339438.

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

* sessions: adopt updated Mission Control automation client

Use and retain the default-account client rather than configuring a second lease. Adapt repository eligibility and bounded definition hydration to the replacement API while preserving upstream deletions.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 07:00:15 -07:00
Alex Ross d98708349f Developer: Open Url should use external URI openers (#340479)
* Developer: Open Url should use external URI openers

* CCR
2026-10-08 13:12:57 +00:00
Benjamin Christopher SimmondsandCopilot d3d31f6226 preferences: Handle missing local settings search results (#340462)
Treat absent local search results as having no exact match so configuration refreshes and provider-only results do not crash. Add regression coverage for cleared local results, remote-only results, AI result toggling, and existing exact-match deduplication.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 09:50:34 +00:00
Giuseppe CianciandCopilot f4a2106dc9 chat: preserve model options across duplicate provider groups (#340459)
Match configuration-only writes to the last entry used during model resolution and remove shadowed model preferences on save. Preserve unrelated models and provider groups, including when resetting defaults.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 11:37:09 +02:00
Lee Murray c36a5a589f Title bar: Keep menus above workbench content (#340295)
<!-- Thank you for submitting a Pull Request. Please:
* Read our Pull Request guidelines:

https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests
* Associate an issue with the Pull Request.
* Ensure that the code is up-to-date with the `main` branch.
* Include a description of the proposed changes and how to test them.
-->
This keeps application menus above Explorer and editor content when the
title bar is inactive.

### Changes

- Keep inactive title bars dimmed until the application menubar is
focused or open.
- Restore full title-bar container opacity while the menubar is active,
avoiding the stacking context that trapped menus beneath sibling
workbench parts.
- Clear menubar focus styling when the custom menubar is removed.
- Add regression coverage for inactive and focused menubar opacity.

Fixes #340237

### Validation

- `npm run build-fast -- --client-only` — passed
- `npm run typecheck-client` — passed
- `./scripts/test.sh --run
src/vs/workbench/test/browser/parts/titlebar/titlebarPart.test.ts` — 5
passing
- `npm run eslint --
src/vs/workbench/browser/parts/titlebar/titlebarPart.ts
src/vs/workbench/test/browser/parts/titlebar/titlebarPart.test.ts` —
passed
- `npm run stylelint --
src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css` — passed
with six pre-existing design-token suggestions
- Windows-emulated web workbench — confirmed the menu paints above
Explorer and editor content, while inactive opacity returns after
closing it
2026-10-08 09:59:47 +01:00
Bhavya UandCopilot c2352f0190 agentHost: load named host tools when no client can run tool search (#340101)
* agentHost: rank deferred tools on the host when no client can run tool search

Tool search is a client tool, but the tools it gates include server and MCP
tools that the host runs itself. When the client that runs the search is gone,
e.g. an autonomous Agent Merge turn after the window closed, the search failed
with "No client was connected to run Search tools" and no deferred tool could
be loaded for the rest of the turn.

Rank the same deferred-tool corpus on the host in that case: tools named in
the query first, then tf-idf over names and descriptions.

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

* agentHost: load exactly named host tools when tool search has no client

Replace the tf-idf ranking fallback with exact-name matching. Client tools
are left out because they cannot run without a client, and the result tells
the model why. When nothing matches, it lists the loadable names so the
model can search again by name.

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

* agentHost: answer tool search on the host when its client leaves mid-search

A search already routed to a client failed with "Client ... disconnected
before completing Search tools" when that client left before answering, so
no deferred tool could load. The override now answers on the host once the
client result has failed and no client can run tool search any more.

Also drops comments that restate the code.

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

* agentHost: keep the disconnect failure for a tool search already routed to a client

Agent Host publishes a failed completion for a routed search when its
client leaves, and chat state ignores any later completion. Answering that
call on the host gave the model tool references for a search the chat
shows as failed. The failure is now returned unchanged; the next search has
no client and takes the host fallback.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 08:45:36 +00:00
Bhavya UandCopilot 3a7c8e0181 agentHost: attribute edits to the committed Auto tier (#340437)
* agentHost: attribute edits to the committed Auto tier

Propagate the committed Copilot Auto tier into Agent Host edit telemetry,
matching extension-host attribution from #336757.

- Seed the root tier from `session.model.getCurrent()` (session.start and
  session.resume fire before the session subscribes) and keep it current from
  `session.model_change`; Auto-to-Auto changes that omit the tier keep it.
- Track subagent tiers separately; subagents never inherit the parent tier.
- Snapshot the tier per edit and add it to the `$autoTier:` source-key segment
  and `autoTier` property of `editTelemetry.editSources.details` (Microsoft
  and GitHub), the persisted edit marker, and `agentHost.trackEditSurvival`.
- Keep mixed-tier marker chains from merging in the workbench.

Fixes microsoft/vscode-internalbacklog#9981

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

* agentHost: snapshot Auto tier at tool start and cap sources by group

- Capture the Auto tier when a tool starts, including a pending runtime read,
  so a later tier change or an in-flight read cannot relabel or drop it. A read
  superseded by a later model change resolves as unknown.
- Keep a retained subagent's tier across idle and resume.
- Rank and cap reported sources by pre-tier group before subdividing by tier.

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

* agentHost: claim completed edits before resolving a pending Auto tier

Pass the captured tier snapshot into FileEditTracker, which claims the
completed edit before awaiting it. Awaiting first let a later same-file edit
overwrite the pending snapshot, and delayed output-only tool results.

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

* agentHost: keep edit claim order while an Auto tier read is pending

- Claim every file of a multi-file tool before awaiting any, so a later tool
  cannot take a pending patch's snapshot.
- Process each file's completed edits in claim order, so a later edit with a
  known tier cannot reach attribution before an earlier edit waiting on a
  pending tier read.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 06:50:14 +00:00
Vijay UpadyaandCopilot 87dd7d20c4 Telemetry: Add detailed Agent Host prep and first-progress diagnostics (#340386)
* Telemetry: Add detailed Agent Host prep and first-progress diagnostics

* Feedback update

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 06:09:15 +00:00
Osvaldo OrtegaandCopilot 529244c4a5 sessions: support repo-less Cloud chats (#340389)
* sessions: enable repo-less Cloud chats

Offer Cloud for workspace-less Agents Window chats through the existing sandbox gates. Omit repository provisioning and preparation while preserving model selections and workspace-less metadata across the native provider handoff and cache restoration.

Cover picker, lifecycle, and list placement behavior, including the existing cold-discovery limitation.

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

* sessions: notify Cloud quick-chat capability changes

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

* fix

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 05:41:32 +00:00
roblourensandCopilot 9a70979d5c agentHost: explain Mission Control security gaps (#340417)
* agentHost: explain Mission Control security gaps

Add a plain-language guide to the Mission Control requirements that are not fully implemented. For each gap it explains what the requirement is, why it matters, where VS Code stands, how Copilot Host and the Copilot app handle it, and what VS Code needs to do. Link it from the production gaps document.

(Written by Copilot)

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

* agentHost: refine Mission Control gaps explainer

Describe the merged S04 expiry enforcement and its remaining limits: revocation before the reported deadline and tokens without a deadline. Clarify that MC can see plaintext tokens during broker resealing, that SDK metadata for loaded sessions is replayed when sharing starts, and that S17/S28 is about configurable policy rather than all local enforcement.

(Written by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 05:32:34 +00:00
Hawk Ticehurst 88f4baf871 Hide Migrations page in sidebar when no available migrations (#340367)
Agent Host changes for agents/hide-migrations-page-when-empty
2026-10-08 05:25:30 +00:00
Hawk Ticehurst 09fb886a84 Add hover tooltip for Customizations button in agents sidebar (#340355)
Agent Host changes for agents/add-hover-tooltip-customizations-button
2026-10-08 05:19:29 +00:00
Vritant Bhardwaj ddcb6c27af mcp: don't expand .mcp.json URLs that the Copilot runtime rejects (#340379)
<!-- Thank you for submitting a Pull Request. Please:
* Read our Pull Request guidelines:

https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests
* Associate an issue with the Pull Request.
* Ensure that the code is up-to-date with the `main` branch.
* Include a description of the proposed changes and how to test them.
-->

Follow-up to #340369. Part of #340161.

#340369 expands `${VAR}` anywhere in a workspace `.mcp.json` server's
URL. The Copilot runtime is stricter: it parses the URL as written,
before expanding it, and rejects the server if it doesn't parse. As a
result, some URLs now work in VS Code's own chat while the same server
is rejected in Copilot sessions, which goes beyond what migration needs.

## Changes

A URL is now expanded only if it parses as a URL (`URL.canParse`).
Otherwise it's left unexpanded, as it was before #340369.

| URL in `.mcp.json` | Copilot runtime | VS Code after this PR |
|---|---|---|
| Host, path, query: `https://${HOST}/mcp?key=${KEY}` | ✅ | ✅ expanded |
| Default in path or query: `/${R:-eu}/mcp?k=${K:-x}` | ✅ | ✅ expanded |
| Default in the host: `https://${HOST:-example.com}/mcp` | ❌ rejected |
Left as written (was expanded) |
| Port: `http://localhost:${PORT}/mcp` | ❌ rejected | Left as written
(was expanded) |
| Whole URL: `${BASE}/mcp` | ❌ rejected | Left as written (was expanded)
|

Header values are still expanded even when the URL isn't.

## Notes for reviewers

- **Source for the Copilot behaviour:** `.mcp.json` servers go through
`workspace_discovery.rs` → `parse_workspace_config` →
`validate_server_config` → `validate_remote_server`, which calls
`Url::parse` on the URL as written and drops the server with "url:
Invalid url". I checked each URL form by running the runtime's `url`
crate (2.5.8, toolchain 1.98.1). `URL.canParse` follows the same WHATWG
standard and gave the same result for every form.
- **Not changed:** a URL whose scheme is a variable (`${SCHEME}://...`)
still makes VS Code drop every server in that `.mcp.json`, because
`URI.parse` throws in `claudeConfigToServerDefinition`. That predates
#340369.

## Validation

- `npm run typecheck-client`: passed
- `npm run build-fast -- --client-only`: passed
- `./scripts/test.sh --reporter dot --run
src/vs/platform/mcp/test/common/envVarResolution.test.ts --run
src/vs/workbench/contrib/mcp/test/common/mcpEnvironmentVariableExpansion.test.ts
--run
src/vs/workbench/contrib/mcp/test/common/nativeMcpDiscoveryAdapters.test.ts
--run
src/vs/workbench/contrib/mcp/test/common/workspaceDotMcpDiscovery.test.ts
--run src/vs/workbench/contrib/mcp/test/common/mcpRegistry.test.ts --run
src/vs/workbench/api/test/browser/mainThreadMcp.test.ts --run
src/vs/workbench/contrib/mcp/test/common/mcpServerConnection.test.ts
--run
src/vs/workbench/contrib/mcp/test/common/mcpServerRequestHandler.test.ts`:
169 passing, 14 pending (from an existing `.skip`)
- `npm run eslint -- <changed files>`: clean
2026-10-07 20:42:38 -08:00
Bhavya UandCopilot 9447b39a0b agentHost: load rename_chat eagerly for active-agent title generation (#340425)
* agentHost: load rename_chat eagerly for active-agent title generation

Active-agent naming reminds the agent to call rename_chat on its first turn, so
deferring the tool only adds a tool-search round-trip. Other strategies keep it
deferred.

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

* agentHost: note that utility title generation does not offer rename_chat

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 04:37:30 +00:00
roblourensandCopilot d3e4a861d8 cli: host agent servers as GitHub environments (Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 04:22:47 +00:00
Bhavya UandCopilot 58afa23a1c agentHost: add agent title review and consolidate title settings (#340095)
* agentHost: add agent title review strategy

Add an experiment-controlled `deferredAgentReview` title strategy behind
`chat.agentHost.experimental.agentTitleReview`. It keeps deferred host
naming, keeps `rename_chat` deferred with its `automatic` argument, and
adds a soft reminder with the current title after the first-response
refinement so the active agent renames only when the title is inaccurate
or no longer reflects the user's goal.

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

* agentHost: tighten agent title review reminder gating

- Gate the review reminder on the first response since the seed having
  completed rather than on refinement having started, so it also lifts
  when refinement never starts and never fires on the first turn of an
  auto-titled chat without a seed.
- Withhold the reminder while a host refinement is still in flight so
  the agent never judges the unrefined seed.
- Offer the reminder on at most three turns per chat, checked before the
  title-source metadata read.

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

* agentHost: consolidate title generation settings into one strategy setting

Replace the boolean `activeAgentTitleGeneration`, `deferredTitleGeneration`
and `agentTitleReview` settings with a single experiment-controlled enum,
`chat.agentHost.experimental.titleGeneration`, whose value is the strategy
(`utility`, `activeAgent`, `deferred` or `deferredAgentReview`). Arms are
now mutually exclusive and the treatment value matches the
`titleGenerationStrategy` telemetry value.

- The default keeps today's behavior: `activeAgent` outside Stable and
  `utility` in Stable.
- User values of the two shipped boolean settings are migrated to the new
  setting.
- The host prefers the `titleGeneration` root key and still reads the two
  legacy boolean root keys for clients that predate it.

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

* agentHost: ask the agent to rename at the end of its answer in title review

The review reminder did not say when to rename, and in practice the agent
renamed in a separate step before answering, delaying the answer on that
turn. Ask it to write the answer first and make the `rename_chat` call at
the end of the same message.

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

* agentHost: reduce the title setting to three strategies

`chat.agentHost.experimental.titleGeneration` now offers `utility`,
`activeAgent` and `agentReview` (previously `deferredAgentReview`, never
shipped), named by who writes the title.

- `deferred` (deferred host naming without agent review) is no longer
  selectable. It remains for sessions that already persisted it and for
  older clients that send the legacy boolean root key, so its stored
  meaning does not change.
- A legacy `deferredTitleGeneration: true` user value migrates to
  `agentReview`.
- The active agent naming reminder also asks the agent not to spend a
  separate step on renaming before it responds.

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

* agentHost: gate title review on a completed response and keep reminder cap across peer transition

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

* agentHost: address title review feedback

- Keep writing the legacy `activeAgentTitleGeneration` and
  `deferredTitleGeneration` root keys, derived from the strategy, so older
  hosts that persist root config follow the current setting instead of a
  stale stored value. Adds an optional `derivedKeys` mapping to agent host
  configuration sync.
- Withhold the review reminder while a refinement started before a peer
  made the default chat independent is still keyed by the session.
- Let any finished first response satisfy the review gate: a cancelled or
  failed one consumes refinement without running it, so the unrefined seed
  is reviewed on the next turn.

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

* agentHost: let older clients supersede a persisted title strategy

A legacy-only root-config patch that changes activeAgentTitleGeneration or
deferredTitleGeneration now drops the stored titleGeneration value so the host
follows the older client instead of a stale strategy written by a newer one.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 03:59:07 +00:00
roblourensandCopilot f9ff1d3d91 agentHost: bump Copilot SDK to 1.0.18-preview.1 (#340406)
* agentHost: bump Copilot SDK to 1.0.18-preview.1 (Written by Copilot)

Bundle runtime 1.0.94-1 on desktop and remote. Generate the runtime-owned builtin skill prompt additions, retain exact Auto-tier routing assertions for extensible SDK identifiers, and require the fixed native OTel concurrency workload to pass normally.

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

* smoke: pin proxy fixture worktree mode (Written by Copilot)

Keep authenticated CAPI branch-generation traffic in the PAC proxy fixtures independently of the production session default and optional development-only Codex availability. Preserve the existing Kerberos, network isolation, and chat assertions.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 03:48:16 +00:00
Dmitriy VasyuraandCopilot e63c52742b github: add cloud automations, tasks and environments domains (#339438)
* github: add cloud automations, tasks and environments domains

Add typed automations, cloudTasks and environments capabilities to the authorization-scoped GitHub client, composed like the existing query/pullRequests/mutations resources and reusing the engine's admission, cooldowns and telemetry. Endpoint, integration and API-version choices are explicit and part of lease identity. Mutations whose outcome is ambiguous are surfaced as uncertain and never replayed; environment connect/reconnect credential GETs are never cached, coalesced or retried, and HTTP 202 is reported as a typed waking result.

The domains are inert until called. Existing CloudSandboxApiService and automation consumers are not migrated.

Refs #339181

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

* Add comments

* github: address cloud domain review feedback

Group cloud modules under common/cloud and reuse GitHubRepositoryRef with account and host checks while preserving wire payloads.

Repair cloud rate-limit classifier integration after merging main and add regression coverage. Addresses review feedback on #339438.

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

* Add support for mission control APIs

* Test updates

* Remove old code.

* Update README

* Add tests, address feedback.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-07 20:10:41 -07:00
roblourensandCopilot 40a45df272 agentHost: enable detached long-lived service guidance (#340414)
* agentHost: detach long-lived services (Written by Copilot)

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

* agentHost: refresh detached service prompts (Written by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 02:36:31 +00:00
roblourensandCopilot df34818c51 agentHost: enforce Mission Control token expiry (Written by Copilot)
Use GitHub-reported deadlines to expire relay authorization, clean up subscriptions and client tool ownership, and fence awaited protected work.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 02:30:44 +00:00
roblourensandCopilot b99bfafc0a agentHost: advertise only Copilot models over Mission Control (#340401)
agentHost: scope Mission Control models to Copilot (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:43:28 +00:00
roblourensandCopilot 42359ef7ec agentHost: Include identity resource in relay auth errors (#340409)
agentHost: describe relay auth requirements (Written by Copilot)

Include the configured GitHub identity authority in standard AuthRequired error data so relay clients can authenticate before accessing sessions. Keep owner verification, pre-authentication privacy, and passive-client restrictions unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:40:41 +00:00
roblourens c028e2f6bc agentHost: stabilize E2E paths and lifecycle barriers (#340395)
<!-- Thank you for submitting a Pull Request. Please:
* Read our Pull Request guidelines:

https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests
* Associate an issue with the Pull Request.
* Ensure that the code is up-to-date with the `main` branch.
* Include a description of the proposed changes and how to test them.
-->

Follow-up to #340215, addressing shared Agent Host E2E instability
rather than changing individual product contracts.

### Changes

- Canonicalize 125 temporary directory allocations across the Agent Host
E2E suites and harness. Native realpath resolves Windows short/long
names and macOS aliases before paths enter provider configuration,
prompts, and AHP assertions. Cleanup ownership is unchanged;
canonicalization failures remove the just-allocated empty directory and
report errors.
- Share the exact-chat/turn completion and subsequent unread barrier
between executable snapshot rounds and imperative resumed-turn
scenarios. Earlier outcomes cannot complete another round of the same
turn. Errors and strict replay failures remain failures.
- Regenerate one resumed-turn AHP snapshot to retain the post-completion
unread action.
- Disable both Git automatic garbage collection and modern
auto-maintenance in all test repositories, including bare remotes,
clones, and MCP workspaces, to prevent unrelated background processes
retaining Windows handles at teardown. Clone-time maintenance is
disabled before clone executes; clones retain their existing author
identity.
- Add harness regression coverage for directory aliases, Windows short
paths, allocation/canonicalization/cleanup errors, and bare/clone Git
maintenance configuration; update the E2E reference.

No production or pipeline changes, timeout increases, retries, new skips
of existing scenarios, weakened assertions, or model-fixture edits. The
Windows-only regression is skipped on other platforms and on volumes
that do not provide 8.3 aliases.

### Validation

- `npm run build-fast -- --client-only` — passed.
- `npm run typecheck-client` — passed.
- `(git diff --name-only --diff-filter=ACM -z -- '*.ts'; git ls-files
--others --exclude-standard -z -- '*.ts') | xargs -0 npm run eslint --`
— passed for all 40 changed TypeScript files before commit; corrected
helper/test files rechecked after final edits.
- `./scripts/test.sh --run
src/vs/platform/agentHost/test/node/ahpSnapshot.test.ts --run
src/vs/platform/agentHost/test/node/agentHostTestDirectories.test.ts
--run
src/vs/platform/agentHost/test/node/agentHostE2EServerLease.test.ts
--reporter dot` — final revision: 21 passed; Windows-only regression
pending on macOS.
- `./scripts/test-integration.sh --run
src/vs/platform/agentHost/test/node/e2e/conformance/agentHostConformance.integrationTest.ts
--reporter dot` — 368 passed, 15 existing pending.
- `./scripts/test-integration.sh --run
src/vs/platform/agentHost/test/node/e2e/providers/copilotAgentHostE2E.integrationTest.ts
--run
src/vs/platform/agentHost/test/node/e2e/providers/claudeAgentHostE2E.integrationTest.ts
--reporter dot` — 390 passed, 62 existing pending.
- `./scripts/test-integration.sh --run
src/vs/platform/agentHost/test/node/e2e/providers/copilotAgentHostE2E.integrationTest.ts
--run
src/vs/platform/agentHost/test/node/e2e/providers/claudeAgentHostE2E.integrationTest.ts
--grep 'resumes a failed turn in place|resumes the same turn after
repeated failures|client tool reaches ready|workspace
conversion:|provider checkpoints: historical|archiving a never-restored'
--reporter dot` — final focused replay passed, 10 tests.
- `./scripts/test-integration.sh --run
src/vs/platform/agentHost/test/node/e2e/conformance/agentHostConformance.integrationTest.ts
--run
src/vs/platform/agentHost/test/node/e2e/providers/copilotAgentHostE2E.integrationTest.ts
--grep 'branch completions prioritize the default|archiving a detached
worktree removes|remote.*commit|fetch.*remote|pull.*remote|runtime mcp'
--reporter dot` — final review revision passed, 3 tests.
- `./scripts/test-integration.sh --run
src/vs/platform/agentHost/test/node/e2e/conformance/agentHostConformance.integrationTest.ts
--run
src/vs/platform/agentHost/test/node/e2e/providers/copilotAgentHostE2E.integrationTest.ts
--grep 'runtime MCP:|sync pulls a non-conflicting remote commit|sync
pushes an outgoing commit' --reporter dot` — final review revision
passed, 6 tests.
- `git diff --check` and commit hygiene — passed.

The full local conformance/provider runs preceded the final
native-realpath adapter and auto-maintenance addition; focused
harness/provider tests and type checks passed after those edits.
Packaged cross-platform validation is required before merge.

A selected local Codex checkpoint test was blocked by a macOS
`sandbox-exec` execution refusal. No sandbox controls were bypassed.
Azure will validate the packaged provider path.

Two independent definition-111 CI builds validate Windows, Linux, and
macOS without publishing or release:
-
[481908](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=481908)
— Windows/Linux/macOS Electron integration tasks passed at
`6148019506a5`; Windows E2E suite completed in 465.6 seconds.
-
[481909](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=481909)
— Windows/Linux/macOS Electron integration tasks passed at
`6148019506a5`; Windows E2E suite completed in 447.9 seconds.

GitHub
[37703368889](https://github.com/microsoft/vscode/actions/runs/37703368889)
passed Compile & Hygiene and all three platform Electron integration
jobs. Its Windows unit failures were defects in the new regression
tests: an expected path used legacy rather than native realpath, and cmd
quoting produced an invalid path. Commit `e826c7476a0a` corrects only
the unit-test file; E2E harness and scenario inputs are unchanged, so
their successful validation is retained. On
[37707649062](https://github.com/microsoft/vscode/actions/runs/37707649062),
all three platform Electron integration jobs and Windows Electron-Unit
passed. The Windows short-path and aliased-parent regressions explicitly
passed in both Electron and Node.js test runners, not skipped.

The Azure Linux/macOS smoke failures selecting the model context option
`1M` reproduce verbatim on unchanged main
[481889](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=481889).
They are outside this PR's Agent Host E2E scope; no UI or smoke tests
were changed.

On `e826c7476a0a`, GitHub Compile & Hygiene's native type check
completed with zero errors, but the full-repository ESLint process was
killed with exit 137 without a reported lint violation. Windows
Electron-Smoke failed during WSL preparation because `apt-get install`
segfaulted (exit 139), before smoke tests ran. Attempt 2 retries only
these two verified infrastructure-failed jobs without code changes.
Required CI checks remain in force.

The earlier runs 481904/481905 and GitHub 37701928554 were canceled as
superseded before these review corrections. Compile & Hygiene had passed
on the earlier GitHub revision; this is not counted as final-revision
validation.

(Written by Copilot)
2026-10-07 18:34:08 -07:00
roblourensandCopilot 51ec2ee42f agentHost: sync latest AHP with legacy version compatibility (#340393)
* agentHost: sync AHP 1.1 compatibility (Written by Copilot)

Sync generated protocol sources from agent-host-protocol at 13277064. Use upstream caret negotiation while retaining the exact 0.10.0 alias for client offers and host negotiation, and preserve legacy chat archive flags outside generated types.

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

* agentHost: fix protocol diagnostics and CI tests (Written by Copilot)

Report the actual client offers on incompatible remote connections and managed reconnects. Cover protocol and authentication failure statuses, and fix the browser assertion and remote chat read-state boundary tests exposed by CI.

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

* test: stabilize model refresh after sign-in (Written by Copilot)

Restore real timers after verifying that sign-out cancels pending model-refresh retries, then wait for the expected model after sign-in. This synchronizes the test with client restart filesystem I/O without changing its assertions or production behavior.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:25:41 +00:00
roblourensandCopilot a1e92b6a82 chat: use the remote connections toggle for Mission Control (#340382)
* chat: unify remote sharing toggle (Written by Copilot)

Use a backend selector for Dev Tunnel or Mission Control and enable sharing through the existing Allow Remote Connections toggle. Keep Dev Tunnel as the default, remember successful Mission Control opt-in locally, and withdraw access on backend changes.

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

* chat: fix sharing backend races and CI (Written by Copilot)

Capture the registered backend schema before configuration tests clear the global registry. Enforce Mission Control selection when an active Dev Tunnel mode arrives or is restored at startup, and ignore stale initial state after disposal or a newer event.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:24:45 +00:00
roblourensandCopilot 91fa153864 agentHost: preserve relay recovery across OS sleep (#340405)
agentHost: preserve relay recovery across OS sleep (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:07:22 +00:00
Connor PeetandCopilot 6dc8d808cb agentHost: enable bulk questions through the Copilot SDK (#340390)
* agentHost: enable bulk questions through the Copilot SDK

Use the structured ask_user tool so the agent can collect related answers in one form.

- Select the elicitation tool variant when a session starts or resumes.
- Keep ask-user answer conversion separate from MCP form conversion.
- Preserve freeform replies, automatic replies, and cancellation for question batches.
- Add tests for SDK launch options, bulk answers, MCP forms, and carousel rendering.

(Commit message generated by Copilot)

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

* agentHost: keep numeric ask-user question kinds

- Remove the numeric-to-text mapping for structured ask-user questions.
- Explain why boolean questions use a select control with freeform input.
- Update the bulk-question test to check the integer kind and numeric default.

(Commit message generated by Copilot)

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

* agentHost: refresh structured ask-user integration captures

- Record eight input and workspace scenarios with the structured ask_user schema.
- Add a real SDK test that collects two answers in one AHP input request.
- Check that both field values reach a successful tool result.

Validation: nine focused replay tests and all 950 deterministic Agent Host tests pass.

(Commit message generated by Copilot)

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

* agentHost: update structured ask-user prompt snapshots

- Generate the 19 model request baselines with the structured ask_user tool.
- Keep every prompt and schema assertion enabled.
- Verify that only ask_user definitions and instructions changed.

Validation: all 24 Copilot prompt integration tests pass in strict replay.

(Commit message generated by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 00:34:47 +00:00
roblourensandCopilot 5ebc6f66ef build: declare sanity runner host architecture (#340219)
* build: declare sanity runner host architecture (Written by Copilot)

Match the ARM64 pool for ARM64 and ARM32 artifact targets instead of inheriting the 1ES amd64 host default.

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

* Merge main for sanity host validation (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-07 17:33:07 -07:00
roblourensandCopilot 3ead11d604 build: complete Cloud Sandbox setup without manual recovery (#340396)
* build: finish sandbox Node setup automatically (Written by Copilot)

Select the verified Node runtime on the sandbox existing executable PATH, continue native header setup under that runtime, and cache completion using the selected Node version rather than the old hook process version.

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

* test: cover unattended sandbox Node handoff (Written by Copilot)

Verify startup runs native preinstall under the selected executable and records success in the same invocation, without manual environment recovery.

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

* build: reuse container flags in cloud sandboxes (Written by Copilot)

Use the existing Chromium shared-memory workaround for Linux Cloud Sandbox launches. Live probes confirmed the 64 MB shared-memory mount fills during module loading and the existing flag restores the workbench without protocol changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-07 17:32:34 -07:00
roblourensandCopilot de0c825f65 agentHost: support Copilot Host extensions on Mission Control (#340357)
* agentHost: support Copilot project extensions (Written by Copilot)

Expose Copilot Host-compatible project cloning, catalogue and pinning methods on the native Mission Control listener, with a user-home clone root and scoped filesystem access. Add approval and plan compatibility for iOS and desktop clients, preserving runtime policy and relay isolation.

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

* agentHost: isolate relay project state (Written by Copilot)

Reconcile boot pins with current workspace grants, keep catalogue publications out of shared root configuration, and reject approval changes without a live runtime. Clarify optional removal flag diagnostics and cover relay-only delivery and replay.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 00:31:58 +00:00
roblourensandCopilot 79510e02fa agentHost: add opt-in local credential delegation for Mission Control (#340387)
* agentHost: opt in to local MC credentials (Written by Copilot)

Allow an unregistered local-user opt-in in real builds to delegate the desktop credential for the exact Copilot protected resource. Validate remote and local owners, preserve MCP/repository authentication, and fence mode changes, rotation and withdrawal.

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

* agentHost: await model refresh in sign-out test (Written by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-07 17:31:15 -07:00