Skip to content

Merge upstream changes for 1.109.0#11

Merged
timtmok merged 537 commits intomainfrom
merge/1.109.0
Mar 6, 2026
Merged

Merge upstream changes for 1.109.0#11
timtmok merged 537 commits intomainfrom
merge/1.109.0

Conversation

@timtmok
Copy link

@timtmok timtmok commented Feb 20, 2026

No description provided.

DonJayamanne and others added 30 commits January 23, 2026 07:50
…icrosoft#3102)

* Copilot CLI session storage changes and metadata to define cwd/repo

* Update src/extension/agents/copilotcli/node/copilotcliSessionService.ts

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Include default diagnostics into the inline completion prompt

* Some minor renames

* Update nls string

* Name setting correctly

* Rename NLS key

* Remove team internal setting from package.json / nls

* Fix VS Code imports

* Use ILanguageDiagnosticsService instead of languages reference

* Import correct experimentation service

* Declare ILanguageDiagnosticsService fro chatLib completions

* Initial plan

* Add comprehensive tests for getDefaultDiagnostics method

Co-authored-by: dbaeumer <1931590+dbaeumer@users.noreply.github.com>

* Remove unnecessary async keywords from test functions

Co-authored-by: dbaeumer <1931590+dbaeumer@users.noreply.github.com>

* Restore async keywords to existing tests that use await

Co-authored-by: dbaeumer <1931590+dbaeumer@users.noreply.github.com>

---------

Co-authored-by: Dirk Baeumer <dirkb@microsoft.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dbaeumer <1931590+dbaeumer@users.noreply.github.com>
…#3116)

* Initial plan

* Add isAuto and isBYOK measures to inline.request telemetry

Co-authored-by: jrieken <1794099+jrieken@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jrieken <1794099+jrieken@users.noreply.github.com>
…o memory (microsoft#3109)

* implement agent memory service and integrate with memory tool for repo memory

* fix(tools): correct tool name retrieval in invokeTool method

* Update src/extension/tools/node/memoryTool.tsx

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

* refactor(tests): update memory tool tests to use 'repo' path instead of 'workspace'

* fix(tools): rename memory tool to 'copilot_memory' and update tool invocation logic

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* ghost: logContext: include prompt in ghost logContext

* fix issues

* fix issues
…t#3129)

* tools: remove explanation field from MultiReplaceStringTool

Removes the optional 'explanation' field from the multiReplaceString tool
input parameters. This simplifies the tool interface and aligns with the
latest tool design patterns.

- Removes 'explanation' from package.json tool definition
- Removes 'explanation' from IMultiReplaceStringToolParams interface
- Updates multiReplaceStringTool to use IAbstractReplaceStringInput directly

Fixes microsoft/vscode#289907

(Commit message generated by Copilot)

* fix ci
…3132)

* add toolTokenCount to telemetry measurements and requests

* test: add toolTokenCount to snapshot tests for tool call iterations
* Log tool calls to debug view

I still want to get the request messages to be in the same combining token, but this gives me the logging at least somewhat.

* add stop clearing behavior
* Update errors microsoft/vscode#279098

* localization

* Update src/extension/chatSessions/vscode-node/copilotCloudSessionsProvider.ts

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Support empty and multi-root workspaces

The issue was the content provider loading from the wrong path. This is easy for the empty workspace case - even the terminal uses process.cwd.

But for multi-root it's more of a "best we can do" case because ideally we'd load chats from a different place than  the`cwd`-influenced .. and instead be tied to the code-workspace file... but this was a decent compromise for now.

* fix comment
* Add notebook serializer for chat replay exports with auto-collapsing cells

- Add ChatReplayNotebookSerializer to display .chatreplay.json files as notebooks
- Register notebook type 'copilot-chat-replay' in package.json
- Auto-collapse cells with collapsed: true metadata when notebook opens
- Add chatReplayTypes.ts with types for exported chat replay format
- Add chatReplayExport.ts with functions to create/serialize exports
- Refactor requestLogTree.ts to use shared export functions
- Add TestRequestLogger for unit testing
- Add comprehensive tests for serializer and export functions

* handle single exports

* styling
* tools: page large mcp output to a readable disk file

* Update src/extension/prompts/node/panel/toolCalling.tsx

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

* fix test

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…3100)

* Initial plan

* Include searchSubagent and askQuestions tools in Plan agent when enabled

- Modified PlanAgentProvider.buildCustomizedConfig to check if searchSubagent and askQuestions tools are enabled via configuration
- Added ToolName import to access tool name constants
- Added checks for ConfigKey.Advanced.SearchSubagentToolEnabled and ConfigKey.AskQuestionsEnabled
- Tools are automatically included in the Plan agent's tool list when their corresponding settings are enabled
- Updated onDidChangeConfiguration listener to monitor changes to these settings and refresh the agent
- Added comprehensive unit tests to verify the new functionality including:
  - Tools are included when enabled
  - Tools are not included when disabled
  - Both tools work together when both are enabled
  - Deduplication works when tools are also in additionalTools
  - Change events fire correctly when settings change
- All tests passing (31/31)

Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>

* Improve test robustness for tool deduplication check

- Updated regex pattern to match both single and double quotes for better robustness
- Addresses code review feedback about brittle test implementation

Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>

* Fix regex pattern for consistent quote matching in test

- Updated regex to match either single or double quotes consistently (not mixed)
- Pattern now uses alternation to prevent matching invalid mixed quotes like 'tool"
- Addresses code review feedback for more precise pattern matching

Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>

* Apply suggestion from @Copilot

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

* Add missing IExperimentationService import in PlanAgentProvider

* Fix askQuestions tool reference name and remove searchSubagent from Plan agent

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>
Co-authored-by: Harald Kirschner <hkirschner@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
ulugbekna and others added 26 commits February 3, 2026 14:34
barebone ghostText reimplementation in Chat repo
chain imports where:
* vscode-node imports
* node which imports
* common
Bumps @isaacs/brace-expansion from 5.0.0 to 5.0.1.

---
updated-dependencies:
- dependency-name: "@isaacs/brace-expansion"
  dependency-version: 5.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Since this tool will move into Core this temporarily fixes this. When in moves to Core we won't have to deal with this.

Fixes microsoft/vscode#292710
* generate source maps

* feat: add source map upload functionality to Azure Blob Storage

* feat: implement Azure CLI task for uploading source maps and update package.json

* feat: update source map upload process to include extension ID in CDN path

* Use template uploadSourceMaps instead of custom script

- Remove uploadSourceMaps.ts script (template handles upload now)
- Remove @azure/storage-blob dependency
- Remove upload-sourcemaps npm script
- Update pre-release.yml and release.yml to use template's uploadSourceMaps parameter

* Add processLocalization parameter to pre-release pipeline

- Allows skipping localization (GetEnglishStrings/PushEnglishStrings) for test runs
- Defaults to true to maintain existing behavior

* Apply suggestion from @Copilot

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Implement service and sample hook

* Adapt to new shape

* API version

* Update src/extension/chat/vscode-node/chatHookService.ts

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

* Update src/extension/prompt/node/defaultIntentRequestHandler.ts

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

---------

Co-authored-by: Rob Lourens <roblourens@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…microsoft#3423)

* Fix Gemini BYOK telemetry: token usage capture and TTFTE improvements

* include thoughtsTokenCount
…check (microsoft#3425)

Adds support for the 'vscode-chat-response-resource' scheme when checking
if a file is external and needs confirmation. This scheme is used for
chat response resources and should be treated similarly to untitled files
that don't require external file confirmation.

- Extends isFileExternalAndNeedsConfirmation to recognize the
  vscode-chat-response-resource scheme
- Allows chat response resources to be accessed without confirmation
  dialogs

Fixes microsoft/vscode#292733

(Commit message generated by Copilot)
…els prompt (microsoft#3427)

* Remove "you don't have to read the attachment" comment from older models prompt
For #284959

* Revert

* Revert this
* Add parentRequestId for subagent telemetry

* Update test snapshot
… of folder (microsoft#3426)

* Support background session folder picker with validation of existence of folder

* Fix windows tests

* Fix windows tests

* Fix paths
* Remove unwanted hint from background agent prompts

* Fix tests
* check before enabling interleaved thinking

* fix: simplify Sonnet 4 model check in AnthropicPromptResolver

* fix: update hash check for hidden model G
* Remove unwanted LM hint from background agent promtps

* Fix tests

* Fix paths on windows

* Update src/extension/agents/copilotcli/node/copilotcliPromptResolver.ts

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

* Update src/extension/agents/copilotcli/node/copilotcliPromptResolver.ts

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…microsoft#3437)

* feat(inlineEdits): make user happiness score algorithm configurable

Add UserHappinessScoreConfiguration interface and experiment-based config
to allow tuning the happiness score calculation via experiments:

- Add configurable score weights (acceptedScore, rejectedScore)
- Add configurable thresholds (highThreshold, mediumThreshold)
- Add InlineEditsUserHappinessScoreConfigurationString config key
- Load configuration from experiment service with JSON validation

The algorithm behavior remains unchanged with default values matching
the original hardcoded implementation (accepted=1, rejected=0,
highThreshold=0.7, mediumThreshold=0.4).

* feat(inlineEdits): add ignored action tracking to happiness score

Add support for tracking when users ignore (neither accept nor reject)
inline edit suggestions:

- Add 'ignored' action type alongside 'accepted' and 'rejected'
- Add handleIgnored() method to UserInteractionMonitor, XtabProvider,
  and IStatelessNextEditProvider interface
- Add configurable ignoredScore (default: 0.9, near-accept)
- Skip ignored actions in debounce time calculation

This allows the happiness score algorithm to account for suggestions
that were shown but neither explicitly accepted nor rejected.

* feat(inlineEdits): update happiness score to v2 algorithm

Implement enhanced happiness score calculation with improved handling
of ignored/not-accepted actions:

Algorithm changes:
- Add ignored action limiting via window expansion to prevent score
  dilution from long sequences of ignored suggestions
- Add normalized scoring (0-1 range based on accept/reject weights)
- Add configurable options: includeIgnored, ignoredLimit,
  limitConsecutiveIgnored, limitTotalIgnored

Default value changes (tuned via experimentation):
- rejectedScore: 0 -> 0.2 (partial credit for explicit rejection)
- ignoredScore: 0.9 -> 0.5 (neutral treatment for ignored)
- highThreshold: 0.7 -> 0.6 (slightly easier to reach high aggressiveness)

New defaults enable total-ignored limiting (max 5 ignored actions in
the 10-action window) which allows the algorithm to look further back
in history to find meaningful accept/reject signals.

* Rename adaptive aggressiveness configuration

* feat(tests): add user happiness score tests to ensure new configurable algorithm behaves like original

* Keep more items than MAX_INTERACTIONS_CONSIDERED to account for dynamic window.

* Record ignore events to user interaction monitor

* Keep old behavior for timing; use a separate array to track events for aggressiveness level, including "ignored" events

* Only log events to interaction monitor if edit was shown and not superseded

* Add unit tests for happiness calculation and history logging

* Make default config equivalent to the original formula

* Make the unit test check the actual v2 implementation

* Fix test

* Log aggressiveness level and happiness score to XTabProvider log context

* Remove local files

* Remove extra line

* Doc

* Move validator to xtabPromptOptions

* Fix typo in configuration name

* Fix fallback to 0.5 calculation to use the correct denominator

* Catch and log validation errors, fallback to default

* Revert accidental change to default adaptive mode settings. Add validator for configured values. Remove default values from comments to avoid redundancy.

* Move lint options parsing function next to its validator

* Restore vscode settings

* Added a member variable to track if the last edit was shown instead of passing wasShown. Tested that only one suggestion is shown at a time, even with side-by-side editors of the same or different file (clicking away from the editor ignores the suggestion)

* Fix test

* use an enum instead of union of strings

* do not use `as any`

* fix reversed args

* migrate to using ActionKind enum and use TestLogService

---------

Co-authored-by: Ben Steenhoek <bensteenhoek@microsoft.com>
…icrosoft#3439)

* Add Xtab275EditIntent prompting strategy with edit intent filtering

This adds a new prompting strategy that extends Xtab275 with edit intent
tag parsing. The model returns an edit_intent tag indicating confidence
level (no_edit, low, medium, high), which is then filtered against the
user's aggressiveness level.

Filtering logic:
- no_edit: Never show
- low intent: Show for all aggressiveness levels
- medium intent: Show for low/medium aggressiveness
- high intent: Only show for low aggressiveness

Changes:
- Add EditIntent enum and namespace with parsing and filtering logic
- Add EditWindowWithEditIntent response format
- Add Xtab275EditIntent prompting strategy
- Implement parseEditIntentFromStream in xtabProvider
- Add editIntent telemetry field
- Add comprehensive unit tests for EditIntent

Co-authored-by: GitHub Copilot <noreply@github.com>

* Short circuit when we hit a no_edit or low-confidence edit, and skip parsing the rest of the response

* Add an experimental key to telemetry to log parse errors for edit intent

* Change the filtering logic so there's only one place where edit intent short-circuits to skip the rest of the stream

* Add tests for parsing edit stream

* Log unknown values parsed during edit intent parsing

* Clean up tests

* Fix failing test by actually returning expected error

* Remove unused method

* Testing

* Fix bug where premature promise resolution was causing error streaming response

* Fix flipped confidence levels mapping to aggressiveness!

* Update comment

* Add manual test cases

* Remove manual tests

* Remove edit intent from log context

* Update doc comments

* Fix indentation src/platform/inlineEdits/common/dataTypes/xtabPromptOptions.ts

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

* Add parser for short edit intent tags

* Support short edit intent tags through another prompting strategy

* Remove unnecessary change

* Fix switch case

* Fix missing cases

* Update test constant 🤦

---------

Co-authored-by: Ben Steenhoek <bensteenhoek@microsoft.com>
Co-authored-by: GitHub Copilot <noreply@github.com>
Co-authored-by: Benjamin Steenhoek <bstee615@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@timtmok timtmok requested a review from jmcphers February 20, 2026 15:39
@timtmok timtmok merged commit c82187a into main Mar 6, 2026
3 of 7 checks passed
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.