[pull] main from microsoft:main#1281
Merged
Merged
Conversation
…317791) When a terminal is being disposed, _resizeDebouncer is set to undefined before the dispose sequence completes. If a configuration change event fires during disposal (e.g. from terminalSuggestConfiguration registration), setVisible -> _resize is called and crashes trying to call .resize() on undefined. Add _resizeDebouncer to the early-return check at the top of _resize and replace the non-null assertion with optional chaining as a safety net. Co-authored-by: vs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
More robust css rules for issue reporter
…317803) * build: persist ADO buildId/definitionId on published build records Adds Build.BuildId and System.DefinitionId from the ADO build run to the per-build document upserted into the Cosmos DB builds container (one per quality). Consumed by microsoft/vscode-release-server to render direct 'Open build pipeline in Azure DevOps' links per release without relying on a runtime ADO REST lookup by sourceVersion. Both fields are validated to be positive integers; if missing (e.g. local dev runs) they are omitted from the document. The dashboard handles missing fields gracefully via its existing fallback lookup, so this is non-breaking. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * build: simplify - read env vars directly, drop test/package.json changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * build: persist ADO buildId/definitionId on published build records Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(copilot): opt-in HTTP cache for the Node fetch fetcher
Adds an opportunistic cache support to the Copilot Node fetch path. The cache
is strictly opt-in per request and composes with the existing VSCode proxy
and CA-injection patch.
- `__vscodeCreateFetchPatch({ interceptors })` lets the extension host
build a second proxy-aware `fetch` with extra undici interceptors. The
default `__vscodePatchedFetch` is unchanged.
- `NodeFetchFetcher` builds an undici cache interceptor once at
construction time and uses the factory to produce a `cachedFetch` that
routes through both the proxy patch and the cache. Requests are tagged
with an internal `__copilotCachePatch` marker (stripped before fetch);
unmarked requests keep going through the regular patched fetch. When
the host lacks the factory, caching is silently disabled so requests
never bypass the proxy patch.
- `FetchOptions.cache?: boolean` — opportunistic hint. Fetchers without
cache support ignore it; fallback to other fetchers is unaffected.
- `Response.cacheStatus` and `FetchTelemetryEvent.cacheStatus`:
`'hit' | 'stale-hit' | 'revalidated' | 'miss' | 'bypass'`.
- New setting `github.copilot.advanced.debug.nodeFetchCache`:
`'off' | 'memory' | 'persistent'` (default `'memory'`). `'persistent'`
uses undici's SQLite store under the extension's global storage
(`undici-cache.v1.sqlite`) when available, otherwise falls back to
memory.
- New `taggedCacheInterceptor` wraps `undici.interceptors.cache` and
stamps a private `VSCODE_CACHE_STATUS_HEADER` on the response so the
base fetcher can read the outcome without parsing undici internals.
- `BaseFetchFetcher` exposes an overridable `_buildRequestInit` hook and
reports `cacheStatus` on `Response` and `fetchTelemetry`.
Notes
- No behavior change for callers that don't set `cache: true`.
- The cache interceptor is constructed once per fetcher instance; the
composed dispatcher chain is reused so connection pooling is preserved.
- Depends on microsoft/vscode-proxy-agent#100
For #308310
* fix: undici integration tests
- drop the `age` header gate from classify(): undici's cache interceptor
only adds if-modified-since / if-none-match when revalidating a stored
entry, so `state.conditional` alone is a sufficient signal. The age header
is not guaranteed on a revalidated 200, which caused 'revalidated' to be
misreported as 'miss'.
- the etag integration test used
`cache-control: max-age=0, must-revalidate`, which undici treats as
already-stale on arrival and refuses to store (cache-handler.js bails when
`now >= absoluteStaleAt`), so there was nothing to revalidate on the second
call. Switch the origin to `public, max-age=60` and pass
`cache-control: no-cache` on the second request to drive undici's
needsRevalidation() path, which dispatches with if-none-match and serves
the cached body on 304.
* chore: fix lint
* chore: cleanup cache marker in favor of function arg
…ty-bare-dir-entry cli: skip bare top-level directory entries when extracting archives
* feat: enhance session customization handling and state management across agents * refactor: simplify customization sync logic in CopilotAgent * fix: guard initial customization publish for disposed sessions Co-authored-by: DonJayamanne <1948812+DonJayamanne@users.noreply.github.com> * feat: improve initial customization handling during session creation --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Our current implementation has some bugs that can hide changes. However even after fixing these, I'm not 100% confident a unexpected change wont sneak through. Best to make users aware of this while also trying to prevent this
…ngth telmetry event
feat(debug): add 'Copy All' action to Watch view context menu
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* draft version * draft version * adding mxc for windows sandboxing * Potential fix for pull request finding Merging readwritePaths Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * cleaning up PR * cleaning up * Run Windows MXC commands directly * Pin MXC SDK lockfiles * fixing tests and cleaning up env variables * adding a flag for windows sandboxing as its experimental * adding a flag for windows sandboxing as its experimental * adding a flag for windows sandboxing as its experimental --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: vs-code-engineering[bot] <vs-code-engineering[bot]@users.noreply.github.com>
Show a warning when showing the rendered markdown diff
* Chronicle: Add cost-tips command * feedback updates
* Browser: support element selection in subframes * feedback * graceful handling after frame disposal
* Long context pricing * Fix
…t sessions (#316907) Fix duplicate terminal tool render from pastTenseMessage For agent host sessions, terminal tool calls were having pastTenseMessage set on the serialized history invocation, which the renderer then displays alongside the terminal command — causing the past-tense message to appear to duplicate the main message. The live finalize path already suppressed pastTenseMessage for terminal tools using a broader check (terminal content URI OR tool kind). The history replay path (completedToolCallToSerialized) was only checking the terminal content URI. Align them so pastTenseMessage is suppressed for terminal tools detected either way. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* refactor and add tests for agentCustomizationContentExpander * fix tests
Long lines in read_file output were getting pruned by the token-budget prompt renderer, so the agent saw an empty result and looped — adding unbounded session log size each retry. Truncate any line over 2000 characters at the source with a `[truncated]` marker, and append a notice when any line was truncated so the model knows the data is abbreviated rather than missing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…versationid-to-tool-usage Add GHCP telemetry correlation fields for tool responses and response turns
…317856) * agent-host: stop config pickers flashing during resolveSessionConfig When a user changed a session-config picker (isolation, branch, autoApprove, mode, claude permission mode), all schema-driven pickers visually disappeared and reappeared while the async resolveSessionConfig round-trip ran. Root cause: NewSession.setConfigValue wiped the cached schema to { properties: {} } during the optimistic update, so every well-known mode/autoApprove guard returned false and hid its picker until the new schema arrived ~200-500 ms later. Fix: - Preserve the existing schema in NewSession.setConfigValue. - Introduce an observable isResolvingConfig on NewSession, owned by resolveConfig's finally, with begin/endResolveConfigSync helpers for the synchronous-set-before-event path and the no-connection early- return path. - Expose IObservable<boolean> isSessionConfigResolving(sessionId) on IAgentHostSessionsProvider; constObservable(false) for any session that isn't the in-flight new session. - Distinct from session.loading: the latter also stays true while config is complete-but-required-values-missing, where pickers must remain interactive. Every picker that mutates session config now disables on this observable: generic per-property chips, the mode/claude permission mode enum pickers, the autoApprove permission action item, the mobile bottom-sheet mode picker, and the mobile combined Mode+Model new-session chip. The autoApprove permission picker also gates the delegate's setPermissionLevel on the same observable, because ActionWidgetDropdown opens via Enter/Space directly on its label and CSS pointer-events: none does not block keyboard activation. A defense-in-depth bail in setSessionConfigValue drops second-arrival changes on a new session while a resolve is already in flight. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agent-host: update FakeProvider mocks for isSessionConfigResolving Two unit-test FakeProvider mocks were missing the new isSessionConfigResolving method that the production AgentHostPermissionPickerDelegate and AgentHostSessionEnumPicker (claude permission mode) now call. Add a no-op constObservable(false) implementation to both so the rendered delegate / picker code paths don't TypeError. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agent-host: address Copilot review feedback on PR #317856 Move _isResolvingActiveSessionConfig derived initialization into the constructor so its body safely closes over parameter-property service references (avoids depending on class-field/parameter-property initialization ordering). Split the picker trigger's read-only (permanent: <span> + aria-readonly) state from the resolving state (transient: <a> stays focusable, slot gets .disabled class, aria-disabled is set). Click is blocked at the picker level by an in-flight resolve check in _showPicker. 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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )