* Add support for local repository memory and update telemetry events
* Update memory command labels for clarity in the UI
* update test
* Add repository memory section to snapshot tests for clarity
* ghost: use CompletionsFetchService
also comes with lots of fixes in CompletionsFetchService
* ghost: stream: refactor: extract CopilotAnnotations types to platform/
* completionFetchService: remove hard-coding n=1
* support for copilot_annotations
* fix incorrect import
* fix incorrect destroy of http connection
* fix: update response accumulation logic in CompletionAccumulator
* refresh token more correctly
* Fixes for external ingest
- Make sure we use relative paths
- Add command to clear
- Avoid requests if the index is already up to date
* Small cleanup
* fetcherService: change `FetchOptions#json` to be `unknown` instead of `any` and document it
* completionsFetchService: don't use `any`
* completionsFetchService: less logic within service
try reducing logic such that the service's easier to evolve
* completionsFetchService: refactor: cleanup
* address comments
* fix ci
Enables the same `no-unexternalized-strings` with have in `vscode` in this repo. This make sure we have a more consistent style across repos and when generating edits
* init
* Re-work code search implementation
Prepping for future work by making it easier to have individual repos in a workspace handle code search their own way. The previous implementation had gotten kind of unwieldy after we bolted on the ADO support. Extending it further would have made this even worse
* tool can give alternative definition by model
* Pass IChatEndpoint in getEnabledTools for calling tools' alternativeDefinition
* Introduce a ICopilotToolExtension to support override existing built-in tools and provide alternative definition.
* Fix errors
* add gpt-5-codex
* remove gpt-5
* remove references to old setting `github.copilot.chat.advanced.inlineChat2`
* play with `InlineChatIntent`
* wip
* move things, better/simpler prompt
* cleanup, renames, stuff
* more wip
* done after tool call
* edit and generate stest for new InlineChatIntent
* use codebook for diagnostics
* inline chat fixing stests
* stest run
* remove old Inline2 tests
* remove slash commands for v2, remove the editCodeIntent path for v2
* 💄
* 💄
* Don't use `diagnosticsTimeout` when with inline chat because the new diagnostics will never be read but slow down the result
* fix compile error
* stest run
* update baseline
* prevent some JSON errors from empty output
* unfresh baseline.json
* use `MockGithubAvailableEmbeddingTypesService` in stests
* back to hamfisted skipping of stests
* send telemetry from inline chat intent
* tweak some stests
* Extract chat lib
* Extract chat lib
* Add test
* Get test working
* Simulate response
* Fix type issue
* Package
* Cleanup
* Tuck away workspace service
* Include package.json
* Ensure shim is used
* Include tiktoken files in package
* Update @vscode/copilot-api
* Ignore chat-lib
Right now we return `undefined` when computing embeddings fails. I think it makes more sense to throw exceptions with the details of why this failed so we can track these
* Increase number of tokens full workspace can use
Adjusting some of the default numbers. Tool calling was ending up with a pretty small budget for `#codebase`
* Update a few more refs
* Unify embeddings paths
Our code has two embeddings paths for legacy reasons:
- The capi api based one that only supports text3small. This is used everywhere except `#codebase`
- The new github embeddings endpoint based. This one supports additional embedding types and options. However it is currently only used in `#codebase`
This change switches everything to use the new github embeddings endpoint instead
* Fix static deps in tests
* wip
* make it work
* error handling and retry on an invalid stateful marker
* Basic statefulMarker round-trip
* add createRequestBody on endpoints
* adopt createRequestBody in responses
* adopt generalized audience
Adopts https://github.com/microsoft/vscode/pull/259273
* Slice messages array based on stateful marker data
* Send statefulMarker via LanguageModelDataPart
* Stateful marker container value is not JSON
* Properly ignore stateful marker when requested
* add setting for byok responses api, log view
* encode model with stateful marker
* Add setting to toggle responses api truncation vs our summarization
* Fix AutoChatEndpoint after merge
* vitest
* fixup
* Try enabling response for azure
---------
Co-authored-by: Connor Peet <connor@peet.io>
Co-authored-by: Logan Ramos <loganramos@microsoft.com>
* When rendering the prompts, exclude turns from the history that errored due to prompt filtration. This was resulting in users getting stuck in a state where all their subsequent requests were being filtered.
* Differentiate between response-filtered and prompt-filtered results (response-filtered requests should be rendered in the message history whereas prompt-filtered requests should not)
Triggers tool grouping when users hit the 128 limit. Reworks an EXP
setting which allows the limit to be configurable (lowered or raised
arbitrarily high.) Users of the setting keep the existing 64 tool limit.
Will have a corresponding VS Code PR.
* add ability to specify modelConfig from file
* use custom model in test endpoint provider
* fix model check
* change model config to be independant from specifying model to run
* support yaml
* use readFileSync
* remove yaml parsing
* improve comment
* fix api key
* fix comment
* make opt parsing alig to comment
This behavior is enabled behind a setting `"github.copilot.chat.virtualTools.enabled": true,`
When enabled, if the tool count is over a threshold value, we'll group
tools into 'virtual tools'. The virtual tools act as directories that
only activate and show the tools they contain when the model calls them.
Grouping is done for an entire extension or MCP server if it presents
a small number of MCP tools, or for a categorization of tools when there
are a large number. Built-in tools are never grouped.
Expanded tool groups are automatically re-collapsed, based on LRU, if
the too limit is exceeded, or optimistically to a lower threshold during
summarization when there's going to be a cache miss anyway.
Todo:
- Better validation of LM categorization (ensure no missing tools)
- General Telemetry
- And logic to ensure that the tool limit can never be hit (heirarchal grouping)
- Explore embeddings as better pre-selection of expanded virtual tools
- Explore subagents as an alternative to expansion
- Success telemetry based on mirrored requests