* Remove explicit 'any'
* remove any
* fix typecheck failure
* export CopilotToolParamsBase
* replace any with unknown in toolsService
* fix typing for IEmbeddingsEndpoint
* fix tool types
* use `unknown` for tool contructor type
* feat: add option to include ignored files in search results
* Provide instruction of includeIgnoredFiles to models in case of missing match
* updated warnings
* edits: fix conflicting edits in multi-replace-string
- Minimize identical content in text edits to avoid potential conflicts in context
- Explicitly error any edits that still fail rather than garbling the file
Closes https://github.com/microsoft/vscode/issues/277154
* rm test.only
* fix whitespaces not being preserved in ws flex match
* first cut - migrate settings marked with INTERNAL and adopt to advanced tag
* support old key while
- reading config value
- reading experiment
- listening to changes
* make experiment change event aware of old id
* fix tests
* fix tests
* Add backward support for the pattern used in older experiments
* fix id
---------
Co-authored-by: Alex Dima <alexdima@microsoft.com>
* 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
* Revert to generic 'Open Command Palette' when command not found, instead of reverting to JSON code block
* Also update vscode run command
* Fix test
* Rename test case for clarity
---------
Co-authored-by: Joaquín Ruales <joruales@Joaquins-MacBook-Pro-2.local>
* Initial plan
* Improve presentation of regex-based searches in agent mode
- Updated FindTextInFilesTool to indicate "regex" vs "text" in search messages
- Updated Claude grep tool formatter to show "Searched for regex"
- Added test for literal text search message format
- Updated existing test to match new regex message format
Co-authored-by: roblourens <323878+roblourens@users.noreply.github.com>
* Make regex/text keywords localizable via l10n
- Moved 'regex' and 'text' keywords inside l10n.t() calls
- This allows localization system to translate or keep terms as appropriate per language
- Addresses localization concern about whether 'regex' should be localized
Co-authored-by: roblourens <323878+roblourens@users.noreply.github.com>
* Refactor nested ternary operators into helper method
- Extract message generation logic into getResultMessage helper
- Improves code readability and maintainability
- All tests passing
Co-authored-by: roblourens <323878+roblourens@users.noreply.github.com>
* Update ChatSessionContentProvider test snapshot
- Updated snapshot to reflect new grep message format
- Changed from "Searched text for" to "Searched for regex"
- All tests now passing (8/8)
Co-authored-by: roblourens <323878+roblourens@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: roblourens <323878+roblourens@users.noreply.github.com>
This fixes a race condition that can happen in LM results that contain
multiple edit tool calls. The emission and application of edits is
async, and so it is possible that an edit can be emitted and the next
edit generated before the first edit's changes are propagated to the
extension host's model.
This resolves the issue by keeping, updating, and reusing snapshotted
documents on each turn's prompt context.
cc @DonJayamanne for notebook stuff. This is a little shakier but it
seems to work (and I know NB prefers the separate notebook edit tool
anyway.)
* 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
- Include healed patch in replace_string tool results
- Add EXP to disable replace_string healing for non-Gemini models
- Add an example to the replace_string prompts for greater fidelity
* Hello Copilot (#1493)
Co-authored-by: kieferrm <4674940+kieferrm@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* Fix applyPatch-tool emitting incorrect edits
Started to use applyPatch in stests (`joh/slow-meerkat`) which resulted in corrected files because of bogous edits. The culprit is that the applyPatch-tool computes multiple text edits and then dispatches them to the stream via individual calls. The semantics of that is that call `N` knows new offsets after applying edits from the `N-1` call. Tho, the calls aren't made like that by the tool. Instead, it should dispatch its edit in a single call
* fix windows tests
---------
Co-authored-by: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com>
Co-authored-by: kieferrm <4674940+kieferrm@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* Fix Markdown link in Run Command tool
* Import commandUri in vscodeCmdTool.tsx
Add import for commandUri from linkify commands
* Use commandId instead of name
* Small comment
Add comments to clarify command ID handling in Quick Open.
* feat: support folder paths in get_errors tool
* rename test files for getErrors
* Add tests for the getErrorsTool
* updated snap
* polished tests
* Update output format to keep parity
* Added one more test with range
* Updated per comments
* Support getAllDiagnostics in SimulationWorkspace
---------
Co-authored-by: Rob Lourens <roblourens@gmail.com>
* adding starting changes for tool selection from default toolset
* update code to have all current default tools in groups (or ungrouped if default) and set exp to true
* update max tools
* small changes
* separate logic for built in tool grouping to new file
* remove unnecessary telemetry sending
* adding intermediate changes
* updated explicit tool set
* only perform grouping for gpt 4.1 and 5
* updated the hard tool limit back to 128, added logic
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add tool grouping enum
* updating tool groupings
* remove computeAll reliance on IChatEndpoint
* removing non built in tools from enum?:
* creating helper function to do built in toolset check
* set experimental flag to false & remove endpoint reliance in built in tools (since we're doing it for all models)
* add edit_files to core
* debugging changes
* Apply suggestion from @connor4312
Co-authored-by: Connor Peet <connor@peet.io>
* Apply suggestion from @connor4312
Co-authored-by: Connor Peet <connor@peet.io>
* Apply suggestion from @connor4312
Co-authored-by: Connor Peet <connor@peet.io>
* update to remove chat endpoint + clean up categorization code
* removing think tool
* updating to use assertnever
---------
Co-authored-by: Anisha Agarwal <anishaagarwal@Anishas-MacBook-Pro.local>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Connor Peet <connor@peet.io>