* feat: add dynamic customization slash commands to sessions new-chat page
Add individual prompt/skill files as slash commands in the sessions
window's new-chat input, matching what the customizations view shows.
- Add getFilteredPromptSlashCommands() to IAICustomizationWorkspaceService
- Core: passthrough to IPromptsService
- Sessions: filters via applyStorageSourceFilter() per prompt type
- Add second completion provider in SlashCommandHandler for dynamic
prompt/skill slash commands alongside existing static ones
- Update decorations to recognize and highlight dynamic prompt commands
- Subscribe to onDidChangeSlashCommands for cache refresh
- Fix regex in tryExecuteSlashCommand to support Unicode prompt names
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: expand prompt slash commands into CLI-friendly references
When a user types /my-prompt in the sessions new-chat input, expand it
before sending to: 'Use the prompt file located at [name](uri).' so
the CLI agent can locate and process the prompt file.
- Add tryExpandPromptSlashCommand() to SlashCommandHandler
- Call it in _send() before session.setQuery() to rewrite the query
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Commit customization files to main repo for worktree persistence
Customization files (agents, skills, instructions, prompts, hooks) are
now always committed to the main repository so they persist across
worktrees. When a worktree session is active, the file is also copied
and committed there so the running session picks it up immediately.
- Rewrite SessionsAICustomizationWorkspaceService.commitFiles() with
dual-commit logic (main repo + worktree)
- Add deleteFiles() to IAICustomizationWorkspaceService interface
- Wire delete action to commit removals to git
- Show friendly warning when main repo commit fails from a worktree
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* api: fix memory leaks in MainThreadManagedSockets
Refactors MainThreadManagedSockets to properly manage disposables and prevent
memory leaks. Uses DisposableMap for registrations and DisposableStore to
collect socket disposal listeners.
- Changes _registrations from Map<number, IDisposable> to DisposableMap to
leverage automatic disposal when clearing entries.
- Collects Event.once listeners for socket disposal in a DisposableStore to
ensure they are properly disposed of when the factory is unregistered.
- Minor whitespace fix on closeRemote method signature.
Refs https://github.com/microsoft/vscode/issues/293200
(Commit message generated by Copilot)
* Better
* Don't show Used n references when opening an old session
Alternate fix for #297152
* Don't show Used n references when opening an old session
Alternate fix for #297152
* 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