Commit Graph

256 Commits

Author SHA1 Message Date
Matt Bierner 91f6127cc9 Merge pull request #316142 from microsoft/dev/mjbvz/important-anglerfish
Gate external ingest on policy on token
2026-05-15 10:25:46 -07:00
Don Jayamanne d1e403ebbf Add archived state management and worktree sharing for chat sessions (#316561)
* Add archived state management and worktree sharing for chat sessions

- Introduced `archived` property in `ChatSessionMetadataFile` to track archived sessions.
- Updated `IChatSessionMetadataStore` interface to include methods for setting and getting archived state.
- Implemented logic in `ChatSessionMetadataStore` and `MockChatSessionMetadataStore` to handle archived sessions.
- Added `getBlockingSiblingSessionsForFolder` utility to identify sessions that share worktrees.
- Modified CLI chat session commands to respect archived state during session deletion and worktree cleanup.
- Updated tests to cover new functionality and ensure proper behavior of session management.

* Add worktree sharing edge-case unit tests

Co-authored-by: DonJayamanne <1948812+DonJayamanne@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-05-14 22:21:16 -07:00
vritant24 ef061ccb0f Rename copilot-fast/copilot-base to copilot-utility-small/copilot-utility
Introduces dedicated endpoint resolver classes (CopilotUtilitySmallChatEndpoint,
CopilotUtilityChatEndpoint) in place of the ModelAliasRegistry indirection, and
republishes the resolved utility endpoints under their new family ids
('copilot-utility-small', 'copilot-utility') as LanguageModelChatInformation
entries so that workbench callers using selectLanguageModels({ vendor: 'copilot',
id: 'copilot-utility-small' }) keep working.

- Renames the internal family identifiers everywhere they're consumed:
  callers, tests, and workbench code in src/vs/workbench/contrib/chat/.
- Drops src/platform/endpoint/common/modelAliasRegistry.ts.
- CopilotUtilitySmallChatEndpoint.resolve tries a small primary model and
  falls back to a second small model if the primary is unavailable.
- CopilotUtilityChatEndpoint.resolve returns the API-marked default base
  model (is_chat_fallback === true), preserving existing behavior.
- Updates _copilotBaseModel field and 'copilot-base' literal in
  ModelMetadataFetcher to _copilotUtilityModel / 'copilot-utility'.

No user-facing behavior change. The setting-driven 'disabled'/'default'/BYOK
selector support will be layered on top in a follow-up.

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

remove comment

remove code smell

remove more code smell
2026-05-14 10:37:23 -07:00
Matt Bierner 964d1fa6ff Adding UI for external ingest enablement 2026-05-13 18:17:41 -07:00
Bhavya U 256a46f76a Re-enable multifile-edit-claude stests with claude-sonnet-4.5 (#316126)
Fixes #315940
2026-05-12 23:07:56 +00:00
Paul 6ea302552b String updates for additional spend (#316037) 2026-05-12 10:04:29 -07:00
Bhavya U 6b5334c5f4 feat: make stream a caller-controlled passthrough in Messages API (#311003)
* feat: make stream a caller-controlled passthrough in Messages API

Allow callers to set stream: false via requestOptions instead of
hardcoding stream: true. Add non-streaming response handler for the
Anthropic Messages API that parses single JSON responses.

- createMessagesRequestBody: stream: true → options.requestOptions?.stream ?? true
- preparePostOptions: stream: true as default before spread (callers can override)
- processResponseFromMessagesEndpoint: auto-detect via Content-Type header
- processNonStreamingResponseFromMessagesEndpoint: new handler for JSON responses
  with tool call support in finishedCb delta, defensive parsing, cache-token
  consistency warning, unknown block type logging
- Remove stale 'stream not respected' comment from fetch.ts
- Remove stream: false from agentIntent.ts inline summarization
- 10 new tests for non-streaming handler

* fix: add telemetry parity for non-streaming path and bump cache salt

* regenerate simulation cache for review-inline tests

* Regenerate simulation cache after rebase

* Temporarily disable multifile-edit-claude variant (#315940)

claude-3.5-sonnet returns model_not_supported from the endpoint, breaking
simulation cache regen. Re-enable when the test is updated to use a
currently-supported Claude model.

* Fix terminal strict-mode crash on empty suggestions + update baseline

- terminal.stest.ts: guard strict-mode `ok()` predicate so when the model
  returns no code block, the test fails cleanly with the existing message
  instead of crashing with 'Cannot read properties of undefined (reading match)'.
  Also drop the stale commented-out debug block.
- baseline.json: refresh scores (68.01 -> 68.69) and drop the 14 entries for
  the disabled multifile-edit-claude variant (see #315940).
- Remove now-orphaned multifile-edit-claude-panel.json outcome file.

* Apply CI-observed score improvements for cpp inline scenarios

CI on Linux scores 4 cpp InlineChatIntent scenarios higher than my local
macOS run does (likely platform-specific line-ending/whitespace normalization
in the cpp grader). Update baseline.json to match the Linux scores:

- edit-InlineChatIntent [inline] [cpp] - edit for cpp:               5 -> 9
- edit-InlineChatIntent [inline] [cpp] - edit for macro:             0 -> 2
- generate-InlineChatIntent [inline] [cpp] - cpp code generation:    3 -> 10
- generate-InlineChatIntent [inline] [cpp] - templated code gen:     0 -> 10

Overall score: 68.69 -> 68.86.

* Populate cpp diagnostic cache via Docker for cross-platform parity

The earlier rebase cache regen produced new LLM responses for the cpp
inline tests but failed to populate the clang diagnostic provider cache
for those new inputs, because clang detection on macOS is broken (Apple
clang prints '-v' output to stderr, but findIfInstalled only checks
stdout) and Docker wasn't running. As a result the cpp diagnostic cache
was missing entries for the new LLM responses, and CI re-ran clang live
on each platform with diverging results:

  - Linux CI:   clang available, scored highest (9, 2, 10, 10)
  - Windows CI: no clang, errored out (5, 0, 10, 10 with worsening)
  - macOS:      Apple clang misdetected as missing, Docker off, errored

This commit:

  1. Bumps CLANG_DIAGNOSTICS_PROVIDER_CACHE_SALT 5 -> 6 to invalidate
     any contaminated entries.
  2. Adds two new cache layers populated by running cpp tests via Docker
     (using the mcr.microsoft.com/devcontainers/cpp image, same Linux
     clang as CI). All 14 cpp scenarios now produce deterministic,
     platform-independent diagnostic results when read from cache.

Verified with --require-cache: all cpp scenarios pass without invoking
clang/docker at runtime.
2026-05-11 21:59:58 -07:00
Bhavya U 6b0c41bc3c Remove Copilot Memory (CAPI) feature (#315813)
Strip Copilot Memory (CAPI) feature entirely

Removes the CAPI-backed Copilot Memory that synced repository-scoped facts
to GitHub. The local file-based MemoryTool with user/session/repo scopes
remains as the sole memory mechanism.

- Delete AgentMemoryService and its test.
- Remove the github.copilot.chat.copilotMemory.enabled setting and its NLS string.
- Remove ConfigKey.CopilotMemoryEnabled.
- Strip all CAPI gating in memoryTool.tsx, memoryContextPrompt.tsx, tools.ts.
- Drop _dispatchRepoCAPI / _repoCreate / _sendRepoTelemetry.
- /memories/repo/ now always routes to local storage.
- Update memoryTool.spec.tsx: remove mock CAPI services and CAPI-only tests.
- Update simulationExtHostToolsService.ts for the new ToolsContribution arity.
2026-05-11 19:57:10 +00:00
Ladislau Szomoru 31d554803a Agents - improve state management for session operation (#315492) 2026-05-09 22:19:57 +00:00
Ladislau Szomoru 6c4a7f8b6d Copilot - scaffold method to eagerly refresh changes cache (#315468)
* Agents - do not show "Mark as Done" while a git operation is in progress

* Copilot - scaffold method to eagerly refresh changes cache

* Fix tests
2026-05-09 19:16:52 +02:00
Ladislau Szomoru 7d24158495 Initial implementation (#314957) 2026-05-07 14:24:47 +02:00
Ulugbek Abdullaev bca6df1d1d Fix xtab-275 edit-window spillover in nes-datagen (#313483)
* fix(nes-datagen): discard xtab-275 oracle edits outside edit window

The NES model can only edit lines inside the prompt's <|code_to_edit|>
window [K, N). formatAsEditWindowOnly was expanding the window to cover
stray oracle edits, so the assistant text spilled out of the window and
duplicated surrounding context when applied.

Instead, keep edits in order and drop the first edit that isn't fully
contained in [K, N) along with every later edit (later offsets assume
earlier edits were applied). Add unit tests covering both the spillover
repro and the all-in-window control case.

* refactor(nes-datagen): extract filterEditsInsideEditWindow helper

Pull the line-containment filter out of formatAsEditWindowOnly into a
reusable helper, plus a small getEditLineRange utility to dedupe the
offset->line conversion. No behavior change.

* refactor(nes-datagen): route xtab-275 dropped-edit warnings through pipeline logger

Replace the console.warn in formatAsEditWindowOnly with a structured
return shape ({ assistant, droppedCount }) and a ResponseLogger threaded
through generateResponse / generateAllResponses. The pipeline now logs
dropped edits via its existing log callback (so warnings are visible to
dataset curators and captured by the e2e test logs), and surfaces the
count on IGeneratedResponse.droppedEditCount.

* fix(nes-datagen): correct netLineChange math for full-line deletions

splitLines("L6\n") returns ['L6', ''] (length 2), so deleting a single
terminated line was counted as -2 lines instead of -1. Compute the delta
by counting newlines in the old segment vs. the new text, which gives
the correct line-count delta for any combination of insertions,
deletions, or replacements without the trailing-empty quirk.

* test(nes-datagen): cover line-changing and boundary-straddling oracle edits

Add cases for in-window inserts that grow the slice, in-window deletes
that shrink it, edits that straddle the window boundary (must be
discarded), and the all-edits-outside fallback (assistant equals the
original window slice with droppedCount equal to all edits).

* fix(nes-datagen): filter oracle edits independently against edit window

Oracle edits come from StringEdit.compose().replacements upstream
(processor.ts) and applyEditsToContent applies them all to the original
doc by sorting offset-descending — so each edit's offsets are
independent. The earlier drop-and-truncate rule (which discarded every
edit after the first out-of-window one) was over-conservative and threw
away in-window edits that were perfectly applicable.

Filter each edit on its own merits and update the test that relied on
the truncate behavior to assert independent filtering instead.

* feat(nes-datagen): surface dropped-edit count in pipeline summary

Sum droppedEditCount across all generated responses and append it to
the [4/5] log line when nonzero, so dataset curators running the
pipeline can see at a glance how many oracle edits were discarded as
out-of-window. Silent omission was the original bug; making it visible
in the summary closes the feedback loop.
2026-05-02 14:59:18 +05:00
Matt Bierner 5330efed43 Merge pull request #313446 from mjbvz/dev/mjbvz/fancy-scorpion
Add external ingest info to the workspace index diagnostics
2026-04-30 12:00:49 -07:00
Matt Bierner f3c604e355 Merge pull request #313449 from mjbvz/dev/mjbvz/complete-catshark
Clearly make `.esbuild` file a module
2026-04-30 11:03:05 -07:00
Ulugbek Abdullaev 3e02836331 Make xtab modelConfiguration an advanced setting (#313482)
* Make xtab modelConfiguration an advanced setting

Move InlineEditsXtabProviderModelConfiguration from TeamInternal to Advanced. Renames the key from chat.advanced.inlineEdits.xtabProvider.modelConfiguration to chat.inlineEdits.xtabProvider.modelConfiguration with a migration for backward compatibility, and exposes it via package.json. Experiments continue using the separate modelConfigurationString setting.

* Fix localModelConfig type to allow null

* Use fully-qualified key in simulation help text
2026-04-30 15:13:34 +02:00
Matt Bierner 59240b668c Make .esbuild file a module
This prevents this annoying warning from getting printed all the time

```
[watch-copilot         ] [watch:esbuild  ] (node:12319) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///Users/matb/projects/vscode/extensions/copilot/.esbuild.ts is not specified and it doesn't parse as CommonJS.
[watch-copilot         ] [watch:esbuild  ] Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
[watch-copilot         ] [watch:esbuild  ] To eliminate this warning, add "type": "module" to /Users/matb/projects/vscode/extensions/copilot/package.json.
[watch-copilot         ] [watch:esbuild  ] (Use `node --trace-warnings ...` to show where the warning was created)
```

Co-authored-by: Copilot <copilot@github.com>
2026-04-30 00:06:45 -07:00
Matt Bierner f4643a4673 Add external ingest info to the workspace index diagnostics
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 23:23:01 -07:00
Don Jayamanne 3b2b5e066d Update GitHub Copilot npm and permission handling (#313364)
* update github copilot npm and update permission handling to use 'approve-once' instead of 'approved'

* Updates

* Fix permissionHelpers tests: update 'approved' to 'approve-once' and fix conditional check

Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/6e5d31b2-034c-4c94-8145-c6a5c7c9c81b

Co-authored-by: DonJayamanne <1948812+DonJayamanne@users.noreply.github.com>

* Add setPermissionsRequired to MockCliSdkSession test helper

Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/25f015e8-12a6-41d3-84b5-26cc1ef86ea1

Co-authored-by: DonJayamanne <1948812+DonJayamanne@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-04-29 19:07:15 -07:00
Paul 498fb0e6b6 Fix overage URL (#313404) 2026-04-30 02:04:46 +00:00
Matt Bierner 75d676cce9 Merge branch 'main' into dev/mjbvz/copilot-eslint-unify 2026-04-29 08:00:31 -07:00
Johannes Rieken c76e907f98 make v2 default mode for inline chat (#313184)
* remove old inline chat from extension

* refactor: remove deprecated inline chat V2 configuration and related checks

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

* refactor: update context keys for inline chat and clean up unused variables

* address copilot review: fix typo and rename forInlineAndInlineChatIntent

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-29 12:50:58 +02:00
Matt Bierner 371c4a0a73 Use root eslint for copilot 2026-04-28 15:20:59 -07:00
Paul b712765852 Add support for usage-based billing (#312892) 2026-04-28 02:37:05 +00:00
Johannes Rieken e337ed550d Merge pull request #312156 from microsoft/joh/remove-doc-intent
copilot: remove InlineDocIntent and /doc command
2026-04-24 11:14:55 +02:00
Johannes d314fbc8c7 stests 2026-04-24 09:34:51 +02:00
Don Jayamanne f5d02ffd6d Add event emitters for workspace folder and worktree changes (#312288)
* Add event emitters for workspace folder and worktree changes; improve cache management

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

* Update extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts

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

* Update extensions/copilot/src/extension/chatSessions/vscode-node/copilotCLIChatSessions.ts

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

* Enhance chat session item handling by eagerly including changes for refreshed sessions to improve UX

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

* Change defaults

* Fixes

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

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-23 20:50:21 -07:00
Matt Bierner 1a54933643 Revert "Use main eslint config for copilot extension too" 2026-04-23 15:17:22 -07:00
Matt Bierner fe56e84ba7 Merge pull request #312228 from mjbvz/dev/mjbvz/boring-python
Add basic github lexical search
2026-04-23 15:08:53 -07:00
Matt Bierner 74fca4377e Merge pull request #311606 from microsoft/dev/mjbvz/advisory-swallow
Use main eslint config for copilot extension too
2026-04-23 14:29:25 -07:00
Matt Bierner cf82f857de Add basic github lexical search
Fixes #312210

This is using the old search endpoint. We'll start switching over the new one once it's ready

Co-authored-by: Copilot <copilot@github.com>
2026-04-23 14:16:49 -07:00
Johannes e5bfe28ae3 copilot: remove InlineDocIntent and /doc command 2026-04-23 17:43:05 +02:00
Don Jayamanne c385fd3dde feat(copilot): enable lazy loading for chat session items and update related configurations (#312047)
* feat(copilot): enable lazy loading for chat session items and update related configurations

* updates
2026-04-23 06:34:22 +00:00
Don Jayamanne 8c4616c5d4 feat(copilotcli): Perf impromvent by lazy loading chat session items (#311817)
* feat(copilotcli): add lazy loading for chat session items

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

* Update extensions/copilot/src/extension/chatSessions/vscode-node/copilotCLIChatSessions.ts

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

* Update extensions/copilot/package.nls.json

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

* Updates

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

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-22 17:16:21 -07:00
Matt Bierner ad6844f64d Use main eslint config for copilot extension too
- Moves copilot eslint config into top level eslint config
- Adopts some standard rules
- Suppress a few new shared rules
2026-04-20 22:46:02 -07:00
Matt Bierner 110f6f9559 Fix some basic eslint errors in copilot
Starts working through some basic repo wide eslint rules for the copilot extension. Stuff like missing semicolons and missing readonly modifiers for disposables
2026-04-20 11:48:22 -07:00
Martin Aeschlimann bf8712457a use IPromptsService to provide customizations (#309873)
* use IPromptsService to provide customizations

* update

* update

* update

* update

* Update extensions/copilot/src/platform/promptFiles/test/common/mockPromptsService.ts

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

* update

* dispose MockPromptsService

* update

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-15 00:40:03 -07:00
Matt Bierner f8e1706349 Merge branch 'main' into dev/mjbvz/potential-narwhal 2026-04-13 10:24:52 -07:00
Ladislau Szomoru 43b1f4bd8b Agents - remove "Update Branch" command (#309375)
* Agents - remove "Update Branch" command

* Remove more code
2026-04-13 01:06:58 -07:00
Tyler James Leonhardt 8c15ca4852 Move IRequestLogger into common (#309121)
* Move IRequestLogger into common

so that it can be used in common files.

also two tiny feedbacks in claude from https://github.com/microsoft/vscode/pull/309119

* format
2026-04-10 17:58:44 -07:00
Matt Bierner 8a370f0f75 move under ext src 2026-04-09 13:31:06 -07:00
Matt Bierner ae4af364ad Fix a few subprojects 2026-04-09 11:39:04 -07:00
Don Jayamanne c7fd971659 refactor: remove getSessionIdForWorkspaceFolder method and update clearWorkspaceChanges to handle both session IDs and folder URIs (#308644)
* refactor: remove getSessionIdForWorkspaceFolder method and update clearWorkspaceChanges to handle both session IDs and folder URIs

* Address comments
2026-04-09 11:19:33 +00:00
Don Jayamanne 0afa58dace feat(copilot): Updated the Copilot CLI options to support a model interface (#308418)
* feat(copilot): Updated the Copilot CLI optoins to support a model interface

* Fix tests
2026-04-07 21:43:05 -07:00
João Moreno b72f636fd9 duplicate telemetry events 2026-04-06 21:13:45 +02:00
Don Jayamanne cc27248bda Update dependencies and improve session initialization in Copilot CLI (#4930)
* Update dependencies and improve session initialization in Copilot CLI

* Update package.json

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

* Update to 1.0.17

* Updates

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-05 15:37:26 +00:00
Matt Bierner 708469c47f Aligning more terms for new codebase index (#4948) 2026-04-02 22:40:00 +00:00
Don Jayamanne a7af848fb1 Update command handling in Copilot CLI with corresponding descriptions (#4927)
* Update command handling in Copilot CLI with corresponding descriptions

* Update src/extension/chatSessions/copilotcli/node/copilotcliSession.ts

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

* Update src/extension/chatSessions/copilotcli/node/copilotcliSession.ts

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

* Updates

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-02 01:29:39 +00:00
Ulugbek Abdullaev f74070d549 nes: pipeline: add e2e tests (#4895)
* nes: pipeline: add e2e tests

* address review: conditional catch + toMatchFileSnapshot
2026-04-01 06:46:42 +00:00
Don Jayamanne 464d963149 refactor: update session options to use consistent naming and structure across session management (#4878) 2026-03-31 19:56:32 +00:00
Don Jayamanne bfc7d31943 refactor(CopilotCLI): streamline chat history retrieval and clean up unused imports (#4860)
* refactor(CopilotCLI): streamline chat history retrieval and clean up unused imports

* Fix test failures
2026-03-31 09:23:30 +00:00