* chat: combine multiple pending steering messages into single request
When Copilot is running a tool, sending multiple steering messages only sends
the first one. The chatbot waits indefinitely for the remaining messages.
This fix combines all consecutive pending steering messages into a single
request by:
- Adding dequeueAllSteeringRequests() to ChatModel to dequeue all
consecutive steering messages at the front of the queue
- Refactoring processNextPendingRequest() to handle both steering and queued
requests through a unified flow that:
- Combines multiple steering message texts with \n\n separator
- Merges attachments from all steering messages
- Re-parses the combined text
- Sends as a single request to the agent
Fixes https://github.com/microsoft/vscode/issues/298324
(Commit message generated by Copilot)
* comments
* chat: add manage action gear icon to installed agent plugins
Adds a ManagePluginAction that displays a gear icon in the plugin list
for installed plugins. Clicking the gear icon shows a context menu with
management options (enable/disable, open folder, open README, uninstall),
making it consistent with how extensions and MCP servers display their
management UI.
- Adds ManagePluginAction class that provides dropdown menu with
management actions for installed plugins
- Adds ManagePluginActionViewItem to render the action as a clickable
gear icon with context menu
- Updates AgentPluginRenderer to include the gear icon in the action bar
for installed plugins
- Context menu displays enable/disable, open folder, open README, and
uninstall options
Fixes https://github.com/microsoft/vscode/issues/298461
(Commit message generated by Copilot)
* chat: clean up manage plugin action to follow MCP pattern
- Extract shared getInstalledPluginContextMenuActionGroups() to
deduplicate action construction between gear menu and context menu
- Restructure ManagePluginAction with createActionViewItem() pattern
matching MCP/extensions DropDownAction approach
- Add onHide disposal for context menu actions
- Remove redundant getDomNodePagePosition import
Per the MCP spec, the 'properties' field in tool inputSchema is optional,
with 'type' being the only required field. However, JSON Schema Draft 7
validation requires 'properties' for object types, causing spurious
warnings like 'Tool foo failed validation: schema must have a properties
object'.
Fix by normalizing the inputSchema to include an empty properties object
when not present.
Fixes#251723
* chat: support relative paths in plugin locations
- Changes chat.pluginLocations to support home-relative (~/) and
workspace-relative (./) paths instead of absolute paths
- Adds path normalization and validation in agentPluginServiceImpl
- Updates constants and contribution for plugin path handling
- Ensures settings are shareable across machines by avoiding absolute paths
Fixes https://github.com/microsoft/vscode/issues/297365
(Commit message generated by Copilot)
* comment
Adds max-height: 90vh to the dialog box to prevent it from exceeding the
viewport height, matching the existing max-width: 90vw constraint.
The message content area now scrolls when it exceeds available space:
- Added align-self: stretch to .dialog-message-container in horizontal
layout so it fills the row height and triggers overflow-y scrolling
- Added min-height: 0 to .dialog-message-container in vertical layout
to allow flex shrinking and overflow-y scrolling
- Changed .dialog-message-container overflow from 'hidden' to 'overflow-y:
auto; overflow-x: hidden' to enable vertical scrolling
Buttons, toolbar, and footer remain visible. Only message content scrolls.
Fixes https://github.com/microsoft/vscode/issues/296528
(Commit message generated by Copilot)
Adds support for managing tool confirmation preferences directly from the tool
picker. This allows users to approve tools and external paths at the workspace
level, reducing friction when using tools that require confirmation.
- Adds 'Manage Approval' button to tools that support confirmation
- Integrates ILanguageModelToolsConfirmationService with tool picker
- Adds workspace-level allowlist persistence for external paths
- Extends ActionableButton type to support keepOpen behavior
- Implements workspace folder selection and allowlist management
- Adds ObservableMemento for persistent storage of approved paths
Fixes https://github.com/microsoft/vscode-internalbacklog/issues/6805
* Polish question carousel: keyboard nav, badge styling, focus outlines
* chat: prioritize selected single-select answer over freeform draft
* Enhance question carousel with tab navigation and review functionality
* Polish question carousel: stack title/desc, plain numbers, multiline Q:/A: summary, Cmd+Enter submit
* Polish question carousel titles and execute controls
* Address PR feedback: guard checkmark on actual answers, restore queue/steer, deduplicate format helper, fix JSDoc
* Fix carousel tests: update selectors for tab-bar UI
* Fix remaining carousel tests from main merge
* Add ARIA tabpanel pattern and clear tab indicators on dispose
* Adjust tab bar padding-left to 4px for multi-question carousels
* Fix CI: non-null assertion and remove unused constants
* fix: show steer/queue submenu during question carousel when text is typed
- Cancel button now hides when input has text during question carousel
(matches behavior during regular in-progress requests)
- Queue/steer submenu now appears during question carousel and tool
confirmation states, since requestInProgress is false in those states
- Removed unused requestInProgressWithoutInput and pendingToolCall vars
* mcp: add support for ui/download-file requests
- Adds McpUiDownloadFileRequest and McpUiDownloadFileResult types to modelContextProtocolApps.ts for MCP apps to request file downloads
- Introduces IChatResponseResourceFileSystemProvider interface with an associate() method to store arbitrary data in the chat response filesystem and track it by session for cleanup
- Extracts ChatResourceGroupWidget as a reusable component for rendering resource groups with save/download actions, used by both ChatToolOutputContentSubPart and MCP app downloads
- Adds _handleDownloadFile() in ChatMcpAppModel to process download requests, supporting both inline EmbeddedResource and ResourceLink types from the MCP protocol
- Adds download resource container in ChatMcpAppSubPart that renders downloaded resources as attachment pills with toolbar actions
- Registers IChatResponseResourceFileSystemProvider as a singleton service
Fixes#298836
(Commit message generated by Copilot)
* mcp: add support for ui/download-file requests
- Adds McpUiDownloadFileRequest and McpUiDownloadFileResult types
- Introduces IChatResponseResourceFileSystemProvider interface
- Extracts ChatResourceGroupWidget as reusable component
- Adds _handleDownloadFile in ChatMcpAppModel
- Adds download container in ChatMcpAppSubPart
- Registers IChatResponseResourceFileSystemProvider singleton
Fixes#298836
(Commit message generated by Copilot)
* pr comments