Ensure the hidden spinner state wins over the shared spinner stylesheet regardless of CSS load order. This fixes the continuation regression assertion in the full Electron and browser test suites.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use local decoded avatars, browser-owned readiness conditions and deferred paint to keep component screenshots deterministic. Replace the discovery SVG loader with the shared DOM spinner and preserve reduced-motion behavior. Document the fixture design contract and extend loading-state regression coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: fix canvas reopen failures
Treat undefined editor results without a matching open editor as failures, and scope presentation cleanup to the exact canvas input generation. Add regressions for undefined results and overlapping stale/new opens.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: harden canvas reopen cleanup
Ignore disposed editor matches when validating undefined open results, and cover rejected close cleanup so the same live canvas can create a fresh input generation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: support read state with legacy Agent Hosts
Treat missing per-chat read state from pre-0.10 Agent Hosts as unknown, preserve the client's conservative state across refreshes, and translate read updates to the legacy session-level action.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: fix legacy chat read fallback
Update the requested chat optimistically on pre-0.10 hosts and always dispatch retryable session-level read actions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: use valid protocol version in remote tests
Use the generated current AHP version in remote provider mocks so capability checks exercise a valid negotiated SemVer.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: Eagerly load set_workspace for workspaceless chats
Keep the base tool deferred, but expose it eagerly when a session is workspaceless. Add Copilot and Codex end-to-end coverage for first-prompt workspace conversion.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: Expand workspace file URI placeholders on replay
Preserve file URI semantics when replaying workdir placeholders so Windows drive paths are parsed as file paths rather than URI authorities. Regenerate the workspace conversion fixtures and cover the expansion directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: synchronize session read aggregate
Dispatch the session-level read action whenever a participating chat changes the effective aggregate, while leaving hidden and tool chats independent.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: synchronize session read state from chats
Move aggregate read-state authority to Agent Host so clients only dispatch chat changes. Promote the session when the last participating unread chat becomes read, while preserving explicitly unread sessions on redundant chat updates.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: restore chat read action documentation
Keep session aggregate synchronization as an Agent Host implementation detail without changing the existing protocol action contract.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: avoid duplicate read state persistence
Apply an explicit session read action before synchronizing its sole chat so the chat transition does not recursively promote and persist the same session state twice.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: Match Dev Container smoke CLI quality and commit
Prefer the desktop commit CLI when published, and explicitly fall back to the latest CLI in the same quality channel for unpublished builds. Stable smoke runs no longer depend on an Insiders-only fixture.
Fixes#339677
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: Match source Dev Container CLI server directory
Apply the runtime source-only -dev suffix after merging product overrides so the provisioned commit-pinned CLI is reused by the production installer. Packaged and legacy fallback paths remain unchanged.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Honor the owning host's automatic PR association setting when resolving chat PR pills. Map recorded artifact owners from host chat URIs to UI resources so created PRs remain visible, including during chat catalog hydration.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configure the actual Mocha runner with local and CI defaults, and forward explicit timeout overrides instead of relying on the outer CLI.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: release output channel disposal listeners with their channel
* test: cover output disposal retention without explicit GC
* test: isolate output channel disposal from shared registry
Save and clear pre-existing output channel descriptors before constructing the test service, then restore them after its disposal. This prevents order-dependent active-channel assertions and initialization-after-shutdown leaks when agent-session tests run first.
* fix: release native context menu callbacks on dismissal
* fix: preserve file URLs in native context menu test fixture
* test: remove native context menu lifecycle fixture
* fix: release document paste edits using their cache IDs
* Keep paste edit sessions alive through alternative selection
* Simplify paste edit lifetime with reference counting
* Transfer paste edit ownership between replacement widgets
* Encapsulate paste edit ownership in a session class
* Return paste edit sessions directly from getPasteEdits
* chat: preserve local removals when refreshing history
Keep locally removed historical requests protected from passive history refreshes so checkpoint-discarded turns cannot reappear or change the next request's truncation boundary. Preserve provider-only removal and reintroduction behavior, with service/model/view regressions for explicit and generated request IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: retain removed anonymous history identities
Remember locally removed anonymous request identities across provider omissions so reintroduced turns cannot bypass removal protection. Preserve unique-match safeguards and cover omission, repeated refreshes, predecessor selection, and ambiguous anonymous histories.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: limit removal protection to unchanged history
Keep the fix scoped to the regression from #339458: unchanged history must not recreate a request removed locally. Remove persistent deletion identity tracking so changed and reintroduced turns retain their prior replay behavior, including genuinely new anonymous prompts. Add regression controls and clarify the history-refresh contract; leave older checkpoint-state and local-removal gaps out of scope.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: configure cloud sandbox models and permissions
Discover cloud models and reasoning options through Mission Control, reuse mode and approval controls for sandbox drafts, and retain selections through the first turn and restoration. Keep service-discovered models available when the sandbox AHP catalog omits them.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: update cloud sandbox accessibility help expectations
Assert mode, permissions, model, and reasoning guidance instead of the removed Agent Default placeholder.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: address cloud sandbox picker review feedback
Preserve Allow All defaults, restore toolbar keyboard focus, and share account model discovery and retry notifications across sandbox providers.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: update Copilot SDK to 1.0.17-preview.3
Align the bundled runtime pin with 1.0.92-3 and refresh prompt snapshots for updated write_agent steering guidance and deterministic task model ordering.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: align remote Copilot SDK and runtime versions
Keep the remote server dependency in sync with the root SDK upgrade as required by the repository hygiene check.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: isolate Copilot OTel batch export scheduling
Use a test-owned 100ms native span batch interval so default or inherited scheduling cannot exhaust the bounded export-readiness wait. Preserve the existing span assertions and wait deadline in both telemetry suites.
Verified that the previous and upgraded SDK both defer the first default Linux export by about 10 seconds. Reproduced the missing-span failure with a long inherited schedule; the unchanged assertions pass after isolating the child schedule.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: update Copilot SDK to 1.0.17-preview.4
Align root and remote runtime pins with 1.0.92-4, adapt typed sandbox RPC mocks, normalize standalone runtime change notices, and restore warm managed-telemetry regression coverage.
Keep the upgrade in draft: live exit-only plan approval continued into edits twice with preview.4, while a preview.3 live control passed. Deterministic replay does not establish that the live behavior is correct.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Keep background shell output visible while the elapsed time updates
The Background Shells picker refreshes each row once a second, and a row's
description includes its elapsed time. The dropdown pill's hover cache took
the changed description for a different resource and released the row's
hover disposable, which closed the live output terminal. The picker then
rebuilt it in the open details, so the output vanished and came back on
every update.
The pill now releases a cached hover disposable only when the entry that
replaces it no longer carries it. A removed entry still releases its hover.
* Keep a shared hover disposable cached until its entry is removed
Addresses review thread https://github.com/microsoft/vscode/pull/339636#discussion_r4180441849.
When an entry updated while the dropdown was closed, the pill dropped its
cached hover without releasing the disposable the entry still carried, and
nothing cached it again until the dropdown reopened. Removing the entry or
disposing the pill then no longer released it. The cached hover now stays
until the entry is removed or stops carrying that disposable.
* sessions: Use first-prompt titles for Cloud Sandboxes
Push the draft title to the sandbox host before sending the first turn so new sessions do not retain the default branch name. Cover both creation paths and title normalization in regression tests.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Retain sandbox titles until the host knows the session
Live sandbox validation reproduced the early rename being lost before host session creation. Retain provisional renames and apply the latest title when the host lists or announces the session.
Cover delayed host discovery, replacement renames, and cleanup in real-provider regression tests.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Recognize both Copilot agent-host provider IDs for response identity, unsaved editor attachments, semantic search, and telemetry categorization without rewriting URI schemes or protocol identifiers.
Written by Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: fix Cloud Sandbox slash command suggestions
Filter plain-text agent host completions by their insertion text instead of their display label, and show slash command descriptions separately in both chat inputs. Add regression coverage for Monaco filtering and the Agents draft composer.
Fixesmicrosoft/vscode-internalbacklog#9797
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: preserve slash completion labels with acceptance spaces
Avoid treating the command name as a description when the insertion text includes a trailing acceptance space. Cover both trimmed and exact command display labels while retaining descriptive Cloud Sandbox labels.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixes#334196 by classifying superseded subscribe requests from their ownership identity, returning an explicit cancellation error and logging expected cancellation at trace level. Preserve genuine missing-resource failures and newer subscription ownership. Add protocol races and real cold-restoration regression coverage.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Skip identical persisted replication frames within each mirror epoch without weakening gap or conflict validation. Resolve the recorded default or sole chat instead of displaying an empty assumed chat.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The GDPR comment for `copilotSdk/tool_call_executed.result_token_count`
said the value is measured with the model tokenizer. The Copilot runtime
computes it locally with `o200k_base` scaled by a per-model multiplier, and
only for successful text results up to 20 KiB that carry no binary or
structured-reference content. Say so, and state that absence is not zero,
so consumers do not read the column as an exact or billed token count.
Comment-only. The forwarder already passes SDK metrics through unchanged.
Refs github/copilot-agent-runtime#20172
Refs #335623
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: show Cloud Sandbox setup progress
Reuse draft preparation progress for sandbox provisioning and repository cloning. Wait for repository readiness before dispatching the first turn and handing off to the remote session.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Merge main into Cloud Sandbox setup progress
Preserve upstream sandbox renaming and startup progress regression coverage.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: harden Cloud Sandbox preparation lifecycle
Keep provisioning protected until its connection attempt settles, reference-count overlapping preparation activities, and preserve clone retry progress. Localize preparation errors and add regression coverage for these cases.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Sync Cloud Sandbox archives through Mission Control
Route task archive and unarchive operations through Mission Control without waking sandbox environments. Discover archived tasks and reconcile their flags in both window types, preserving archived history and surfacing rejected mutations. Add cross-client, persistence, ordering, and remote-provider regression coverage.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Harden Cloud Sandbox archive reconciliation
Persist explicit unarchived task flags, cancel queued archive mutations when their provider is disposed, and notify Editor users when mutations fail. Add focused restoration, lifecycle, and error-reporting regression coverage.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Fix empty cloud sandbox resume views
Join an explicit sandbox wake during session activation instead of resolving offline history while the connection is still pending. Replay an unambiguous recorded chat when no default was announced, while preserving explicit defaults and respecting peer-chat catalogue metadata.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: Respect removed chats during cloud history replay
Distinguish missing chat catalogue evidence from an explicitly emptied catalogue before inferring a default chat. Cover removed user, tool, side, and fork chats, including removals whose additions were not recorded.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record a bounded sampleId after a user selection succeeds across submenu, filtered, and recent workspace entries. Preserve generic picker telemetry privacy filtering and cover non-sample, programmatic, unavailable, failed, declined, and superseded selections.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Report session customization telemetry
Collect customization inventory after the first request accepted for a new session, using the shared chat service so both the editor and Agents windows are covered.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* remove cancelation timeout out of whenCustomizationsReady
* update
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: add Blobby color customization
Add the True Name achievement and /blobby flow, with free Stable and Insiders palettes plus unlockable preset and custom colors. Unify achievements and color selection in the customization editor while preserving sprite animations, accessories, accessibility, and persisted choices.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: update Blobby customization screenshot baselines
Accept the reviewed Linux CI screenshots for the new customization tabs and True Name account badge.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: hide Blobby commands when AI features are disabled
Gate both slash command descriptors and the new customization actions on chatSetupHidden, independently of whether a default agent is registered. Add regression coverage for hidden and restored availability while retaining the runtime entitlement guards.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: reopen dismissed canvases from Add Tab
Expose live dismissed canvas instances in the editor Add Tab menu, using provider titles and semantic instance IDs to disambiguate duplicates. Keep registrations scoped to the active conversation and clean them up reactively.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: stabilize canvas reopen lifecycle
Keep Add Tab command identities stable across canvas metadata updates, restore retry state when editor opens fail across chat switches, and guarantee unique instance labels. Cover stale menu actions, canvas lifetime removal, automatic-open failures, and label collisions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>