{{ message }}
Repository navigation
Attribute chat edits to resolved Auto tiers - #336757
Merged
Logan Ramos (lramos15) merged 10 commits intoSep 25, 2026
Merged
Logan Ramos (lramos15) merged 10 commits into
Logan Ramos (lramos15) merged 10 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Quota fallback can leave stale Auto-tier metadata and misattribute utility-model edits.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 1
What changed in this PR
Adds invisible Auto-tier metadata so chat edits are attributed to the resolved routing tier across queues, reroutes, caching, and persistence.
Changes:
- Adds and transports the proposed Auto-tier progress part.
- Snapshots tier metadata per edit batch.
- Subdivides edit telemetry by validated tier while preserving source caps.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Keep attribution in explicit per-edit snapshots, clear it on quota fallback, and isolate subagent tiers. Normalize in chat-common rather than the editor layer and reuse existing regression coverage. Refs microsoft#336757 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bring microsoft#336757 up to date after the attribution and test refinements. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Logan Ramos (lramos15)
marked this pull request as ready for review
September 25, 2026 16:08
Logan Ramos (lramos15)
self-requested a review
September 25, 2026 16:10
Emit started, resolved and failed states from one event. Deliver endpoint and tier together to every caller while preserving routing-row behavior for cached and coalesced resolutions. Refs microsoft#336757 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Author
Resolve the grouping conflict without exposing internal chat keys or merging chat scopes when applying source caps. Extend the existing focus-window regression to cover capped chat groups. Refs microsoft#336757 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Drop the separate tier part. The resolution part now reports model and tier together, with a hidden variant for reused sessions, surfaces without a routing row, and attribution clears. Refs microsoft#336757 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Auto's tier is attribution for the edits it produced, so it now rides on ChatResponseTextEditPart/ChatResponseNotebookEditPart.autoTier and flows per batch through the DTO into the chat model's editMetadata. This drops the stateful side channel: ChatResponseAutoModeResolutionPart is back to its original shape, ChatModel no longer intercepts resolution parts or tracks a request tier, and the subagent tool needs no tier plumbing. The extension stamps the tier in reportAutoModeRouting by wrapping the turn's stream; the handler clears it when the quota fallback switches the turn off Auto. Tests follow the data: the quota fixture is replaced by reporter-level assertions, and the model/edit tests set autoTier directly on the edit parts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Restore existing AutomodeService tests to their original assertions, keeping routing lifecycle and tier stamping concentrated in the dedicated edit attribution suite. - Focus edit source telemetry test on Chat.applyEdits and deduplicate focus window capping checks. - Simplify queued edits test in ChatEditingService. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Logan Ramos (lramos15)
previously approved these changes
Sep 25, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Logan Ramos (lramos15)
approved these changes
Sep 25, 2026
Dmitriy Vasyura (dmitrivMS)
approved these changes
Sep 25, 2026
Logan Ramos (lramos15)
enabled auto-merge (squash)
September 25, 2026 22:27
Bhavya U (bhavyaus)
added a commit
that referenced
this pull request
Oct 8, 2026
* 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Attributes chat edits to the client-resolved Auto tier, including defaults, overrides, cache hits, and reroutes. The tier is carried on the edits themselves:
ChatResponseTextEditPartandChatResponseNotebookEditPartgain an optionalautoTier(typed asChatAutoModeTier), which flows per edit batch through the DTO into the chat model'seditMetadatasnapshots and on into the edit source. Attribution stays tied to the originating request through async queues and restored history. Unknown, failed, older-producer, and non-Auto cases remain unset. No visible UI changes.Adds optional
autoTierdetail metadata to prevent mixed-tier aggregation while preserving existing model IDs, source predicates, and pre-tier top-10/30 source coverage. Each selected source expands to at most five known or unknown tier rows.Design
$modelId/$harness/$originedit-source metadata rather than in a response-level side channel.ChatResponseAutoModeResolutionPartkeeps its original shape,ChatModeldoes not track a live tier, and the subagent tool needs no tier plumbing.reportAutoModeRoutingreports endpoint and tier through one routing lifecycle event (started/resolved/failed), returns a stream wrapper that stamps the current tier onto edits, and exposesclearTier()so the quota fallback stops attributing once a turn switches off Auto. Every caller receives a result, including cache hits and coalesced calls; only actual routing rounds produce visible routing rows.Validation
npm run gulp compile-clientand the affected core suites (chat model, operation log, language models, subagent tool, chat editing, notebook entries, edit-source telemetry, ext-host chat agents and type converters, agent-host chat contribution): 893 tests passed.vscode-dtsliteral-type rule), andgit diff --checkpassed.The all-extension
npm run compileis blocked by a missing localesbuilddependency in an unrelated built-in extension; the targeted workbench and Copilot checks above passed.