Skip to content

Honor model-provided inline edits eagerness prompts - #2

Closed
bstee615 wants to merge 2523 commits into
bstee615-include-patchbased02optimizedfrom
bstee615-wire-models-eagerness-prompt
Closed

Honor model-provided inline edits eagerness prompts#2
bstee615 wants to merge 2523 commits into
bstee615-include-patchbased02optimizedfrom
bstee615-wire-models-eagerness-prompt

Conversation

@bstee615

Copy link
Copy Markdown
Owner

Summary

  • accept optional capabilities.eagernessPrompt strings from the Proxy /models response
  • carry the selected model's value into inline edits prompt options without fabricating a fallback
  • honor aggressionHighLow for PatchBased02-family prompts by prepending high/low aggression tags while leaving medium and absent values on the existing prompt path
  • avoid applying the legacy timing-based eagerness adjustment when the model-provided eagerness prompt is active

Dependencies

Validation

  • npm run typecheck in extensions/copilot
  • focused Vitest suites: 82 passing
  • focused overrideModelConfig tests: 9 passing
  • ESLint on all changed files
  • staged VS Code hygiene / pre-commit hook

The full xtabProvider.spec.ts run also completed 188 tests successfully but retained three unrelated integration assertion failures in existing edit-yield scenarios; the directly affected test group passes independently.

Copilot AI and others added 30 commits August 25, 2026 23:04
…led (microsoft#332609)

* Initial plan

* Avoid inheriting agent-merge overrides in session creation defaults

Co-authored-by: benibenj <44439583+benibenj@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: benibenj <44439583+benibenj@users.noreply.github.com>
…#332476)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix(chat): stop observing layout while pet is disabled

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

Copilot-Session: aacd276e-cf84-48bd-a2ab-6f6a4d4c3431

* test(chat): update disabled pet fixture host

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

Copilot-Session: aacd276e-cf84-48bd-a2ab-6f6a4d4c3431

* test(chat): isolate pet resize observer

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

Copilot-Session: aacd276e-cf84-48bd-a2ab-6f6a4d4c3431

---------

Copilot-Session: aacd276e-cf84-48bd-a2ab-6f6a4d4c3431
…icrosoft#332612)

* Do not cache a session-state subscription that failed to subscribe

Pinning a visible session is deliberately idempotent so that "re-running per
tick also recovers a subscription that could not be created earlier". That
recovery never ran: a subscribe that failed was stored in
`_sessionStateSubscriptions` like any other, so every later tick saw a live
subscription and returned early.

A failed subscribe is easy to miss because it settles via `onDidError` and
never fires `onDidChange` — the only event this consumer listened to — so the
session simply stopped receiving state, silently and permanently. Its
changesets never reached the adapter, which left the Changes view empty for
the rest of the session.

This is reachable whenever a session is addressed before the host has created
it: a cloud sandbox subscribes with the id Mission Control minted, roughly
700ms before `createSession`, and the host answers NotFound. The same applies
to the momentarily-disconnected remote the existing comment describes.

The subscription is now dropped when it errors, in both directions: bail
without caching if it already carries an error, and delete the entry if one
arrives later. The next tick then re-subscribes, by which point the session
exists.

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

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* chat: resolve MCP App resources through agent host

Routes resource links from agent-host MCP Apps through the connection-specific URI mapper.

- Adds the connection authority to agent-host MCP App render data.
- Converts App resource URIs with toAgentHostUri before the workbench uses them.
- Updates adapter tests for the new render data.

(Commit message generated by Copilot)

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

* chat: refresh MCP App model when authority changes

Includes the connection authority when comparing agent-host MCP App render data. This recreates the
model when resource routing moves to another agent-host connection.

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

Adds Content-Security-Policy frame-ancestors 'self' and X-Frame-Options
SAMEORIGIN on all serve-web HTTP responses. Same-origin iframes continue
to work.

- Appends a CSP frame-ancestors 'self' directive on each response
- Sets X-Frame-Options SAMEORIGIN on each response

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: stabilize prompt height during toolbar changes

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

* Refactor chat input component for improved height calculation logic

- Adjust height calculation to better accommodate varying input sizes
- Clean up code for readability and maintainability

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#332607)

chat: honor preferred Copilot harness during session loading

Unify new-chat harness selection so the picker and creation paths apply the Copilot preference consistently when session navigation temporarily has no bound model. Consolidate the resolver around ServicesAccessor and cover remembered and current harness precedence.\n\n(Written by Copilot)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Enforce stable link presentation provider kinds

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

* Fix link presentation CI failures

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

* Register GitHub contribution for localization

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

* Remove Markdown GitHub link presentations

Keep GitHub repository, issue, and pull request presentations in core only. Address review feedback around provider re-registration, cache kind validation, check statuses, fixture kinds, and optional repository fields.

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

Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

* Fix default account event test type

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

* Fix default account type import

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8d0d714f-06c2-4399-83ba-5016fae514f5
…332639)

* chat: require confirmation for .mcp.json edits

Updates edit approval patterns so edits to `.mcp.json` require user confirmation in both edit execution paths.

- Adds `.mcp.json` to the standard chat edit confirmation patterns.
- Adds `.mcp.json` to the agent host edit confirmation patterns.
- Extends focused tests for both edit execution paths.

(Commit message generated by Copilot)

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

* agentHost: test .mcp.json path casing

Adds `.mcp.json` to the existing non-canonical casing coverage for protected edit paths.

(Commit message generated by Copilot)

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

* chat: always confirm .npmrc edits

Treat .npmrc files as non-overridable protected edit targets in both chat approval paths, with root and nested-path coverage.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agent host: pass bridge token through environment

Updates the server launch path to carry the agent host bridge token separately from parsed server arguments.

- Passes the bridge token through the process environment.
- Threads the token through server startup as dedicated configuration.
- Redacts connection tokens from argument and endpoint logs.
- Adds coverage for command construction and log output.

(Commit message generated by Copilot)

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

* agent host: log bridge endpoint on connect

Defers bridge endpoint logging until the renderer starts the upstream connection.

- Creates static and deferred upstream connections on the first connect call.
- Keeps listener registration free of connection log output.
- Updates the endpoint logging test to cover the connection boundary.

(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>
…t#332668)

The resource service now walks parent directories until it finds an
existing path. It then applies realpath to that ancestor and appends
the missing suffix before the grant check.

- Walks ancestors in _canonicalize instead of only the immediate parent
- Adds a unit test for nested missing paths through a directory symlink
- Keeps coverage for new files that stay inside the granted tree

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chore: revert to electron@42.8.1

* chore: bump distro
* debug: encode Windows batch adapter arguments

Updates Windows batch adapter process startup to construct the cmd.exe
command line explicitly.

- Encodes batch file paths and arguments with Windows command-line rules.
- Configures cmd.exe argument parsing explicitly.
- Rejects argument values that cmd.exe cannot represent.
- Adds unit tests for quoting and invalid argument handling.

(Commit message generated by Copilot)

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

* debug: test batch argument round trips

Adds a Windows-only process test for batch adapter argument handling.

- Invokes a temporary batch adapter through cmd.exe.
- Verifies that each argument is preserved.
- Confirms that command metacharacters remain part of the argument.

(Commit message generated by Copilot)

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

* debug: capture batch parameters directly

Updates the Windows batch round-trip test to record positional values
before it launches the capture process.

- Stores each batch parameter in an inherited environment value.
- Reads the captured values without forwarding the original command line.

(Commit message generated by Copilot)

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

* debug: decode captured batch parameters

Updates the Windows batch round-trip test to forward each positional
parameter explicitly through the native argument parser.

- Preserves empty positional parameters during capture.
- Decodes quoted values and terminal backslashes before comparison.

(Commit message generated by Copilot)

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

* debug: scope batch round-trip assertions

Updates the Windows process test to distinguish values that can be
round-tripped from quote-bearing values that cmd.exe reparses.

- Compares representable argument values exactly.
- Verifies that a quote-bearing value does not create the marker file.

(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>
* chat input: refactor and responsiveness

* address comments

* address comp

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…oft#332470)

* Avoid detached terminal link provider listeners

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

* Isolate terminal link contribution tests

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: add dynamic codicon chat backgrounds

Add a theme-aware in-memory Codicons preset alongside image backgrounds. Reconcile Set/Clear/Layout commands across background types, add live layout previews with commit-on-close behavior, and retain a five-image machine-local MRU for quick reuse.

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

* sessions: restore chat background layout on save failure

Roll back transient layout state to the configured value when the settings write fails, so an unsaved preview cannot remain active.

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

* sessions: lowercase recently used background label

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

* sessions: avoid saving cancelled background layout

Restore an in-memory layout preview without writing configuration when the picker is cancelled or rejects.

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

* sessions: consolidate chat background updates

Use one union-typed service method for both image and built-in background selections while preserving image-only recent history behavior.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* pet: add more hats

* fix tests, address comments
…-proxy-resolver-0.4.0

Update os-proxy-resolver to 0.4.0
* Split session artifacts into artifacts and references

An artifact is something the session produced that is not an ordinary
workspace edit: a pull request or issue it opened, a plan file written
outside the workspace, another side effect of its work. A reference is
something it did not produce but the user should look at because of the
task: the pull request or commit that introduced a bug, a relevant page.

The agent now says which it recorded through a mandatory `isArtifact`
flag, so the tools are renamed to `add_artifact_or_reference`,
`remove_artifact_or_reference` and `list_artifacts_and_references`, and
the per-type `createdByThisSession` field is gone — being produced by the
session is the definition of an artifact. Entries persisted before this
change read back as artifacts. Tool calls render "Added artifact" or
"Added reference" from the flag; removal takes its wording from what it
actually removed.

References get their own pill, always summarized as a count, placed
directly after the artifacts pill so the two read as a pair. Only
artifacts are promoted into the pull request and issue pills, which poll
GitHub, but a reference keeps its link identity so anything those pills
already show is offered exactly once.

Along the way:

- The artifacts pill no longer collapses into a lone entry unless it is a
  file, whose name and themed icon say what it is; every other single
  artifact stays behind "1 Artifact" so the row keeps a stable shape.
  `alwaysSummarize` becomes a `ChatPillSingleEntry` policy interpreted in
  one place.
- Parsing GitHub issue and pull request references out of user messages is
  removed. It fed the same pills from a second source, which would show a
  recorded reference twice, and it guessed at intent the agent can now
  state outright.
- A `uri` the client cannot open is rejected when it is recorded, instead
  of being reported as added and then appearing in no pill at all.
- Reading persisted artifacts reports what it could not parse, so a
  corrupt row no longer empties a session's artifacts without a trace.

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

* Address review feedback on artifacts and references

- `isArtifact` accepts only a boolean, with an absent field as the sole
  legacy default. A malformed value such as `"false"` or `null` no longer
  reads back as an artifact; the entry is rejected and counted among the
  dropped rows the caller warns about.
- A recorded `uri` is validated by the client's own strict `URI.parse`
  rather than a hand-rolled pattern, so the two can no longer disagree.
  The previous check accepted values like `foo/bar:baz`, which the client
  then failed to open, leaving the entry in no pill at all.
- Renamed server tools keep answering to the names they were advertised
  under. `IServerToolGroup` gains `legacyToolNames`, the host translates a
  legacy name before dispatching, and the display path falls back to it
  once no advertised tool matches — so restored history and prompts
  written against `add_artifact` still route and still render. Groups only
  ever see their current names.
- The Sessions and agent host provider specifications now state that
  `ISession.artifacts` carries both categories and that consumers must use
  `isArtifact` to tell them apart.

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

* Use the bookmark icon for the references pill

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

---------

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

* Route custom agent configuration to customizations

Co-authored-by: aeschli <6461412+aeschli@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: aeschli <6461412+aeschli@users.noreply.github.com>
Co-authored-by: Martin Aeschlimann <martinae@microsoft.com>
* Route terminal output sources through active parts

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

* Remove stale output source event override

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dmitrivMS <9581278+dmitrivMS@users.noreply.github.com>
Co-authored-by: Anthony Kim <62267334+anthonykim1@users.noreply.github.com>
…osoft#332708)

perf: keep session lookups out of per-file feedback loops

The agent feedback overlay walked every original/modified URI of the active
multi-diff and did session-scoped work per file. Each candidate ended up in
`ISessionsManagementService.getSession()`, which rebuilds every provider's
session catalog and scans it linearly, so a Changes editor with thousands of
files blocked the renderer for seconds (worst case: no feedback at all, since
nothing stops the scan early).

- Resolve sessions in `AgentFeedbackService` through the active session facade
  when it is the one asked for, plus a single-entry memo of the last lookup
  (hit or miss) that is dropped on any session catalog change.
- Deduplicate candidates by session resource via `getFeedbackSessionCandidates`
  so feedback/backend work runs once per distinct session, lazily, preserving
  the existing early exit.

Refs microsoft#332670

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…oft#332299)

* chat: Refresh customization source after harness registration

Cache placeholder customization sources until their matching harness descriptor changes. This avoids repeated warning bursts while still replacing an empty source when a provider registers late.

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

* chat: Avoid refreshes for unrelated harness changes

Only rebind the customization source listener and refetch observed sections when the active source identity changes.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
test: allow real Git checkout test more time

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rosoft#332713)

refactor: update waveform bar count and dimensions to match codicon specifications

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
* feat: add layout density options to Settings menu for Modern UI

* fix: update run method to return a promise for layout density changes

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
…rosoft#332621)

* Agent Host changes for lramos15/agents/add-pet-rendering-fixtures

* Address review feedback on chat pet platform fix

- Dock the sub-session tip in the composer's notice stack instead of the
  outer stack, so the pet stands on its top edge rather than sinking 31px
  into it. The tip already claimed the composer's notice lane, so this
  needed no pet changes.
- Replace the notification + getting-started tip fixture, a state the
  notice host cannot produce, with notification + todos which genuinely
  coexist.
- Assert fixtures actually paint a pet sprite and keep it inside the
  screenshot, so a missing or cropped pet fails instead of baking into a
  baseline.
- Restore a newline in chatPetWidget.test.ts that broke hygiene.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83f3c563-ee39-493a-b5dd-86bde510d9e6

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 83f3c563-ee39-493a-b5dd-86bde510d9e6
vritant24 and others added 27 commits August 28, 2026 10:39
Convert each working-directory path explicitly when building MCP support
scope roots and compare their semantic paths in the focused test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Include unsupported MCP servers in customization migration hints and compose
file and MCP summaries independently to keep pluralization maintainable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#333214)

Agent Host changes for lramos15/agents/vscode-issue-333188-fix-plan-review
Unify the Microsoft internal telemetry signal across processes

The workbench, the agent host and the machine domain check each had their
own idea of who counts as internal, and the 1DS internal routing flag was
decided once at client construction from the domain check alone. An
internal account on a machine that is not domain joined was marked in the
payload but never routed internally.

- Add `isInternalAccount` next to `getInternalOrg` as the one definition
  (staff or internal org), adopted by the agent host and the workbench.
- Plumb `is_staff` through the entitlement state so the workbench honours
  it too. Existing persisted state without it falls back to the previous
  org-only behaviour until the next entitlement fetch.
- Decide the 1DS routing flag per envelope instead of per client, so the
  shared process appender covers main and renderer events alike.
- Wire `setInternalTelemetryContext`, which had no production caller, and
  clear the account half of the signal again when the account changes.
- Read `msftInternal` live, since an account can sign in after startup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f02f06e6-2270-404e-bf31-57d264a2d077
* automations: clarify configure tool intent

Require explicit automation or recurring-schedule intent before the model creates a persistent automation. Exclude ordinary PR monitoring and follow-up requests from inferred creation intent. Fixes microsoft#333085.

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

Copilot-Session: 5ac2e8cc-c7e4-4a2c-ada0-02a5921ef35f

* automations: test configure tool intent guidance

Pin the model-facing contract that automation creation requires explicit or recurring-schedule intent and must not be inferred from ordinary monitoring requests.

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

Copilot-Session: 5ac2e8cc-c7e4-4a2c-ada0-02a5921ef35f

* signing commit

---------

Copilot-Session: 5ac2e8cc-c7e4-4a2c-ada0-02a5921ef35f
Route the unit-test launchers through the version-aware Electron preparation path so repeated runs avoid re-downloading and re-extracting the same runtime.

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

agent host: expose MCP support assessment
* show migrate customization hint in chat view

* fix test

* update

* fix test
* Add aggregated fetcher failure telemetry

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

* Bound fetcher failure telemetry

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix chat transcript find keybindings

Disable generic tree search for chat transcripts and route F3/Shift+F3 through chat Find, reopening the widget while preserving its query and active result.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pull in microsoft/vscode-distro#1453 so shipped product configurations include the Microsoft provider name used by the Copilot sign-in dialog.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tention (microsoft#333167)

* Agents - show a badge on the application icon for sessions needing attention

Adds an opt-in badge on the application icon showing how many non-archived
sessions in the Agents window are unread or waiting for input.

The new `sessions.showApplicationBadge` setting is off by default and carries
`experiment: { mode: 'auto' }`, so it can be rolled out (and rolled back)
through Exp without a window reload.

Platform behaviour differs because the OS support does:

- macOS (dock) and Linux (Unity launcher) render the count themselves via
  `app.setBadgeCount`.
- Windows has no equivalent for an unpackaged Win32 app: `app.setBadgeCount`
  is a no-op there and `BrowserWindow.setOverlayIcon` only takes a bitmap.
  The renderer therefore draws a themed overlay and hands it over as a
  `data:` URL. A nested `VSBuffer` would not survive the `ProxyChannel`,
  which only revives buffers passed as top-level arguments.

`DockBadgeManager` now owns the application-wide badge for both the transient
`FocusMode.Notify` attention dot and the per-window counts, so the two cannot
overwrite each other. Counts are keyed by window and released on window
dispose, so a closed or crashed window cannot strand a phantom badge.

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

* Agents - fix application badge property init order and IPC payload

Two CI failures, both in the new application badge:

- The observables were created in field initializers that read constructor
  parameter properties, which `define-class-fields-check` rejects because
  those properties are not assigned yet under `useDefineForClassFields`.
  They now get created in the constructor body.

- `iconDataURL` was set to `undefined` on platforms that do not need an
  overlay image. The IPC serializes the badge as JSON, which drops undefined
  valued properties, so the badge arriving in the main process no longer
  matched the one sent. The property is now omitted instead, which is what
  the round trip test asserts.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: bump Claude Agent SDK to 0.3.248

Update the development and packaged SDK pins, adopt the required callback request IDs, and refresh real-SDK E2E captures. Harden fixture path normalization and keep shared file-operation scenarios provider-independent.

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

* agentHost: normalize truncated E2E workspace paths

Scrub harness-owned temp workspaces even when session titles contain only an older, truncated, or username-normalized path. Add a black-box recording regression test and refresh the four affected Claude list_sessions fixtures.

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

* agentHost: make Claude E2E paths portable

Canonicalize recorded workspace and home path separators after parsing model traffic so Windows captures replay on macOS and Linux without corrupting serialized JSON. Refresh path-bearing fixtures and make the shared two-peer write prompt deterministic.

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

* agentHost: use Claude Agent SDK 0.3.247

Use the immediately preceding Claude Agent SDK release because 0.3.248 is unavailable in the build cache. Keep the development and packaged SDK pins and platform lock entries in sync.

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

* agentHost: refresh Claude 0.3.247 model fixture

Record the 0.3.247 runtime's unquoted model-switch confirmation so strict request matching remains accurate for the cached SDK version.

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

* build: pin Claude Agent SDK to 0.3.239

Use the newest SDK release permitted by the seven-day package embargo.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remote agent host connections were established in six different places, and reconnection was
implemented five times over. Only WebSocket connections could use the protocol client's soft
reconnect, so SSH, WSL, tunnel and Dev Container connections were torn down and rebuilt on every
transport drop: a new clientId, no action replay, and pending tool calls cancelled by the host.
This moves connection ownership into RemoteAgentHostService and gives every kind the same
reconnect behaviour.

- Adds ReconnectingTransport, which re-establishes an inner transport through an owner-supplied
  callback. Relay-backed kinds now supply a transport factory, so they get the protocol client's
  backoff, clientId preservation, server-side action replay and outbox draining.
- Adds a reconnect policy per connection kind, replacing five hand-written backoff loops. The
  protocol client now honours a maximum attempt count instead of retrying forever, and reports
  terminal failure upward rather than running its own recovery.
- Adds a `reconnecting` connection status, distinct from `connecting`. Recovery loops no longer
  replace a protocol client that is already restoring itself, and a send during a drop waits for
  the connection instead of failing.
- Adds IRemoteAgentHostConnectionFactory. A factory builds an unconnected client and exposes the
  entries of its kind; the service performs the handshake, classifies the result, sets the status
  and owns retries. WebSocket and SSH use this path.
- Moves entry persistence to the owning producer. The service reads entries and never writes them,
  so an address that moves between stores cannot be resurrected.
- Moves malformed-frame protection into RelayTransport, where it now closes the transport instead
  of the connection, so a corrupted stream recovers through soft reconnect. SSH and WSL did not
  have this protection before.
- Opens the SSH configuration file, instead of a setting that cannot contain the host, for an SSH
  host defined by an ~/.ssh/config alias.

WSL, tunnel, cloud sandbox and Dev Container connections still register through
addManagedConnection. Later changes move them to connection factories, after which
addManagedConnection and the dialableByService flag can both be removed.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Hover: restore scrolling for long content

* Hover: verify overflowing content in test

* Preserve hover actions when content scrolls

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

---------

Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…icrosoft#333243)

* agentHost: preserve legacy Copilot CLI session titles on migration

* Feedback updates
…osoft#333258)

Adds a managed-settings preset that enables the agent runtime sandbox with bypass allowed while denying outbound network access, so sandboxed tools run offline. Makes it easy to exercise the no-internet sandbox policy path against the local mock server.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Keeps the connection entry when a transport drops during the handshake. The protocol client
  moves to `reconnecting` and schedules its own retry before it rejects the original connect,
  so disposing the entry cancelled that retry and discarded the client replay state.
- Settles a pending connection wait when a soft reconnect restores the transport. The wait
  previously ran to its timeout even though the host was reachable again.
- Counts reconnect attempts before recording the next one, so a policy of `maxAttempts: n`
  performs n attempts. The Dev Container policy of 3 attempts performed 2, and a policy of 1
  performed none.
- Follows an in-flight dial in `waitForConnection` instead of a fixed timeout. An SSH host can
  install the remote CLI first, which takes longer than the WebSocket-scale limit, and the caller
  received a timeout while that attempt continued and later succeeded.

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Revert "agentHost: Prefer stored Copilot restore metadata (microsoft#332984)"

The workaround is no longer needed. This reverts commit 3327a40. (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert "agentHost: temporarily disable retryable errors"

Reverts microsoft#332839 now that the retry issue is fixed.

(Written by Copilot)

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

* agentHost: preserve non-resumable error handling

Keep subagent errors non-resumable when their parent mapping is missing, and retain dispatcher coverage for rejecting non-resumable retry requests.

(Written by Copilot)

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

---------

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

* Agent Host changes for agents/automation-card-duplicate-option

* sessions: handle duplicate dialog failures

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

Copilot-Session: a713c12c-1a43-4f7f-9337-fca7f8dfe89f

* Fix automation context menu test typing

Copilot-Session: a713c12c-1a43-4f7f-9337-fca7f8dfe89f
…ost-connection-ownership

agentHost: give every remote connection one owner and one reconnect path
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bce40ed-b23b-4b38-8c2a-11a9b30a08ce
@bstee615
bstee615 force-pushed the bstee615-wire-models-eagerness-prompt branch from b0441f1 to 926015e Compare August 28, 2026 23:14
@bstee615

Copy link
Copy Markdown
Owner Author

Replaced by the upstream draft PR microsoft#333279: microsoft#333279

@bstee615 bstee615 closed this Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.