These files were added in an earlier commit on this branch but are not
part of the sessions e2e test framework (which lives under
src/vs/sessions/test/e2e/).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: Use ref-counted model collection for tool confirmation inputs
Fixes duplicate model error when ToolConfirmationSubPart re-renders with
the same toolCallId. Models keyed by URI are now managed via a ref-counted
ReferenceCollection (InlineTextModelCollection) on IChatContentPartRenderContext,
so multiple SubPart instances can safely share the same model. The model is only
disposed when the last reference is released, preventing the 'Cannot add model
because it already exists!' error during list re-rendering or parallel tool calls.
- Add InlineTextModelCollection class wrapping ReferenceCollection<ITextModel>
to handle ref-counted model lifecycle keyed by URI
- Add inlineTextModels field to IChatContentPartRenderContext
- Wire InlineTextModelCollection into chatListRenderer, passing to all context
sites
- Update chatToolConfirmationSubPart to use context.inlineTextModels.acquire()
instead of modelService.createModel()
- Remove unused IModelService injection from chatToolConfirmationSubPart
Fixes https://github.com/microsoft/vscode/issues/294345
(Commit message generated by Copilot)
* ci failure
Replaces full TextModel instantiation with lightweight ITextBuffer
(PieceTree) in _applyTextEditsToContent to reduce memory overhead
and initialization cost when replaying text edits. Now maintains a
single buffer across consecutive edit operations instead of creating
and disposing a model for each edit.
Additionally caches finalized diff stats in _finalizedDiffCache to
avoid redundant model creation and diff computation when code block
pills scroll back into view. When the observable chain is rebuilt for
a pill that was previously visible, a constObservable returns the
cached IEditSessionEntryDiff instead of rebuilding the entire model
reference chain and computing the diff again.
- Replace TextModel with createTextBuffer/ITextBuffer in replay loop
- Remove unused IInstantiationService and IModelService dependencies
- Add _finalizedDiffCache for caching computed diff stats
- Return constObservable for cached finalized diffs
- Remove Date.now() temp URI generation and model creation overhead
Fixes https://github.com/microsoft/vscode/issues/290274
(Commit message generated by Copilot)
* wrapping the command in single quotes and escaping it to prevent any shell injection issues
* Update src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add IsNewChatSessionContext to sessions management service import and register Cmd+W keybinding for new session
* Add secondary keybinding for opening new session with Cmd+W in non-empty state
* Enhance Cmd+W keybinding condition to require non-empty active editor group
* Fix Cmd+W keybinding condition to check for visible editors instead of empty editor group
* chat: deduplicate global auto-approve warning across windows
Add CancellationToken support to IDialogService.prompt() and implement
cross-window deduplication for the global auto-approve confirmation dialog.
When \chat.tools.global.autoApprove\ is enabled, the opt-in warning
previously appeared in every window because each window independently
checked the APPLICATION-scoped storage flag and showed the dialog without
coordination.
Changes:
- Add <token?: CancellationToken> to IBaseDialogOptions, allowing dialogs
to be programmatically dismissed via cancellation
- Update BrowserDialogHandler.doShow() to register token cancellation and
dispose the dialog when the token fires
- In LanguageModelToolsService._checkGlobalAutoApprove(), use
CancellationTokenSource + storageService.onDidChangeValue listener to
detect when another window stores the opt-in flag and cancel the dialog
- Apply the same pattern to the /autoApprove slash command handler
- Within-window deduplication: pending promise cached in
_pendingGlobalAutoApproveCheck prevents duplicate dialogs from multiple
simultaneous tool invocations
After opt-in is stored by any window, other windows detect the storage
change via the token listener and cancel their dialogs. The prompt then
resolves as if approved, avoiding duplicate user interaction.
Fixes https://github.com/microsoft/vscode/issues/292150
(Commit message generated by Copilot)
* pr comments
* chat: make sendChatRequest extensionIdentifier parameter optional
Makes the 'from' parameter optional (ExtensionIdentifier | undefined) in the
sendChatRequest method chain across ILanguageModelsService, RPC protocol, and
implementations. This allows internal VS Code calls to pass undefined instead
of instantiating invalid ExtensionIdentifier('core') identifiers.
- Updates ILanguageModelsService.sendChatRequest signature
- Updates ILanguageModelChatProvider.sendChatRequest signature
- Updates ExtHostLanguageModelsShape protocol
- Updates ExtHostLanguageModels \ implementation
- Removes new ExtensionIdentifier('core') from 5 internal callers
- Passes undefined as requestInitiator when from is absent
- Bumps vscode.proposed.chatProvider API version to 5
- Updates test mocks to accept optional from parameter
Refs https://github.com/microsoft/vscode/issues/290436
(Commit message generated by Copilot)
* keep api as old version for now
* Update src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* changes for showing start up errors in a dialog
* changes for showing start up errors in a dialog
* changes for showing start up errors in a dialog
* changes for showing start up errors in a dialog
* changes
* changes
* changes
* migrating to event from taillog
* changes for runtime errors
* refactoring changes
* refactoring changes
* refactoring changes
* changes
lm: fix mcpServerDefinitions proposal validation for packed extensions
Updates distro hash to include a fix for mcpServerDefinitions API proposal
validation when extensions are installed as VSIX. Extensions can now
properly declare and use vscode.lm.startMcpGateway without validation errors.
- Fixes validation logic for packed extension API proposal declarations
- Enables mcpServerDefinitions to be properly recognized in extension
package.json enabledApiProposals
- Resolves failure when calling vscode.lm.startMcpGateway on installed VSIX
extensions
Fixes https://github.com/microsoft/vscode/issues/298643
(Commit message generated by Copilot)
* chat: add plugin details editor with reactive action updates
- Implements a new AgentPluginEditor details pane that displays plugin information, readme, and action buttons for both installed plugins and marketplace items
- Adds reactive action button updates: when a plugin is enabled/disabled, installed/uninstalled, buttons update in real-time without re-rendering the entire editor
- Makes the marketplace name a clickable link to the GitHub repository (when githubRepo is available)
- Adds proper CSS classes to action buttons (install, enable, disable, uninstall) so they render correctly in the header
- Handles state transitions: marketplace items automatically become installed items when installed, and vice versa
- Supports readme rendering from local files, remote repositories, and GitHub blob URLs (converting to raw.githubusercontent.com for proper fetching)
Fixes#297246
(Commit message generated by Copilot)
* pr comments
* test
* merge
* fix circular dep
* Reduce chat input label hide threshold from 650 to 400
* Collapse chat input picker buttons to 22x22 icons at narrow widths
When the chat input is narrow (<250px), hide chevrons on mode, session
target, model, and workspace pickers. Mode and session target pickers
collapse to centered 22x22 icon-only buttons matching the add-context
button size. Update actionMinWidth to 22 and toolbar gap to 4px.
* Simplify chat input toolbar responsive behavior
* Apply initial hideChevrons state in render()