* copy everything from #237624
* try to better word notes in proposed.d.ts
* why is test being so flaky
* try sending one more text
* strictEqual only on isInteractedWith always fails
* update the name as recommended
* embed to make sure we are selecting event we are interested in as recommended
* add node as part of TerminalShellType
* getting type ..extHostTypes.TerminalShellType.Bash is not comparable to type ..vscode.TerminalShellType.Bash
* just use one enum?
* figured out how to get from extHostTypes
* clean up
Fixes#30066
This finalizes the documentPaste api. This api allows extensions to attach metadata on text copy and change how content is pasted. Some examples:
- Updating imports for pasted code
- Inserting an image as an attachment in notebooks
- Pasting files converts them to relative text paths
* Add an edit tool (doesn't work)
* More
* Properly wait on text edits to be done applying
* Better editFile tool
* Fixes
* Be more insistent with editFile instructions
* Add "agent mode" UI
* Fix error thrown when calling tools sometimes
* Persist chat agent mode state
* Hide editing tools from other extensions for now
* Fix test build issues
* Allow disabling tools agent mode
* Remove comment
* Fix codeblock index properly
* Cleanup
* Cleanup
* Remove ccreq check
* Rename for clarity
* put copilot fix and explain in status bar
* fix up actions
* watch for execution error within the viewmodel
* make observable publicly readonly
* remove unused service
* fix tests
* remove unused import
* Try LanguageModelToolResultItem
* Implement it
* lmTools API updates
Resolve TODOs
* Fix build
* Doc
* More content type -> mime type
* More edits
* Fixes
* Add LanguageModelChatToolMode
* Add implementation
* New thing
* note
* API version bump
* Finish it
* Updates
* Properly convert tool result content parts
* properly convert and send type to ext
* switch to new type that includes mimeType
* add new type
* use thenable
* change to proposed
* fix whitespace
* Move to new account preference concept
Previously, session preference was at a per-"set of scopes" bases. This means that an extension could ask for scopes A,B,C and get account 1... but then ask for scopes E,F and get account 2.
Thinking on this more, it really doesn't make sense. An extension should have a preference wholistically since we also don't surface scopes to the user.
This PR:
* changes that model (while keeping the old model for migration purposes for now)
* allows the user to change that value via the gear icon in the Trusted Extensions quick pick
* hooks up the extension event for when the user changes that
* lastly introduces a product.json entry that allows an extension to be a "child" of another extension's preference. This will be useful for GitHub Copilot & GitHub Copilot Chat sharing the same preference.
Out of scope:
* Adding entries to the extension editor to get to this quick pick (it'll come later, but I wanted to get these changes in now)
* placeholder