* Add ChatSessionCustomizationsProvider proposed API
New types in chatSessionCustomizations.d.ts:
- ChatSessionCustomizationType enum (well-known group IDs)
- ChatSessionCustomizationStorageLocation enum
- ChatSessionCustomizationItem, ChatSessionCustomizationItemGroup
- ChatSessionCustomizationsProvider (provideCustomizations + resolveCustomizationDeletion)
New registration function in chatSessionsProvider.d.ts:
- chat.registerChatSessionCustomizationsProvider(chatSessionType, provider)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Implement ChatSessionCustomizationsProvider e2e plumbing
Protocol: DTOs and 5 new methods on MainThread/ExtHost shapes.
Ext host: registerChatSessionCustomizationsProvider, provideCustomizations,
resolveCustomizationDeletion proxy methods.
Type converters: ChatSessionCustomizations.fromItem/fromGroup.
Main thread: bridge with per-handle emitters, harness descriptor registration.
Service: IChatSessionCustomizationsProvider + registerCustomizationsProvider,
getCustomizations, resolveCustomizationDeletion on IChatSessionsService.
Harness: registerContributedHarness() on ICustomizationHarnessService,
derived observable merges built-in + contributed harnesses.
UI: AICustomizationListWidget reads from provider when extension harness
is active, falls back to IPromptsService for built-in harnesses.
Setting: chat.customizations.providedByExtensions.enabled (experimental).
Command registration: openNewChatSessionInPlace for all contributions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Unhardcode AgentSessionProviders to support extension-contributed session types
Widen type annotations from AgentSessionProviders enum to AgentSessionTarget
across session target picker, delegation picker, welcome view, and utility
functions. Add default cases to exhaustive switch statements. Fix
chatInputPart getActiveSessionType to fall back to getChatSessionType for
extension-contributed URIs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add joshbot extensionDevelopmentPath to Run and Compile Code - OSS task
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Wire provider group commands to create buttons in customization UI
When an extension-contributed harness is active, buildCreateActions()
reads commands from the provider's group data instead of the harness
descriptor. Commands flow through the full plumbing:
extension → protocol DTO → main thread → service → list widget
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add error handling to ext host customizations provider methods
Wrap provideCustomizations and resolveCustomizationDeletion in
try-catch to prevent extension errors from crashing the ext host.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Subscribe to onDidChangeCustomizations in list widget for live updates
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix group commands race condition, remove resolveCustomizationDeletion
Commands bug: _fetchItemsFromProvider no longer sets _currentGroupCommands
as a side effect. Commands are now extracted in loadItems() after the
section-guard check, eliminating races from computeItemCountForSection.
Deletion: removed resolveCustomizationDeletion from the full stack
(proposed API, protocol, ext host, main thread, service, mocks).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add NOTES.md with open design items for cross-harness customizations
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update NOTES.md with pattern analysis and concrete context proposal
Analyzed TreeDataProvider, StorageSourceFilter, CompletionItemProvider,
and CodeActionProvider patterns. Proposed ChatSessionCustomizationsContext
parameter with discoveredItems for provider-as-curator model.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Simplify cross-harness approach: pull via chatPromptFiles API
No new API needed. Extensions use existing chat.customAgents,
chat.skills, chat.instructions arrays to discover global items
and merge them in provideCustomizations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add swap file for VIM 9.1 configuration
* Remove swap file for VIM configuration
* Fix JoshBot task: inline arg into command string
Shell tasks with && in command don't work with separate args array.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix create buttons: call updateAddButton after loadItems
buildCreateActions reads _currentGroupCommands which is populated in
loadItems. Calling updateAddButton before loadItems meant commands
were always undefined for extension harnesses.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Guard extension customizations behind setting as a full feature gate
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix missing Hooks section, remove redundant config check
- Add 'hooks' case to sectionToCustomizationGroupIds
- Remove dead UseCustomizationsProvider check from widget (already
enforced at registration in mainThreadChatSessions)
- Remove unused IConfigurationService and ChatConfiguration imports
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Wire itemCommands to context menu for extension harness items
Extension-provided itemCommands now appear in the right-click context
menu on customization items when a non-built-in harness is active.
Commands receive the item id and uri as arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add inSessions flag to Launch Component Explorer task
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix component fixtures: add IChatSessionsService mock
AICustomizationListWidget now depends on IChatSessionsService.
Add mock to both list widget and management editor fixtures.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Refactor ChatSessionCustomizationItem: remove id property and update related code
* Remove JoshBot task from tasks.json
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Rename setting to chat.customizations.providerApi.enabled
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Replace hardcoded harness checks with hasCustomizationsProvider
Remove all CustomizationHarness.VSCode/CLI/Claude comparisons from
the list widget. Instead check chatSessionsService.hasCustomizationsProvider()
which works for any harness — built-in or extension-contributed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add TODO comments to proposed API for open design questions
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove NOTES.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add TODO: Remove hardcoded providers from core
Mark all knownProvider/knownType if-else patterns that branch on
whether a session type is in the AgentSessionProviders enum.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
* sessions - separate user dir for `--sessions` runs
* Update tasks.json
---------
Co-authored-by: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com>
Fixes#303361
Introduces \\\ variables that extract named capture groups
from a task problem matcher's endsPattern and make them available for
substitution in launch configurations and other variable-resolved contexts.
Changes:
- WatchingProblemCollector.tryFinish() extracts matches.groups from endsPattern
- IProblemCollectorEvent carries capturedVariables in BackgroundProcessingEnds
- TerminalTaskSystem registers captured variables via contributeVariable()
- VariableKind.TaskVar added to the enum
- Test added for taskVar variable resolution
- .vscode/launch.json updated to use \
- Updated @vscode/component-explorer to version 0.1.1-16 and @vscode/component-explorer-cli to version 0.1.1-12 in package.json and package-lock.json.
- Added new test fixtures for chat question carousel, code action list, find widget, inline completions extras, rename widget, and suggest widget.
- Implemented rendering logic for new fixtures to enhance testing capabilities for various components.
* Run our build scripts directly as typescript #277567
Follow up on #276864
For #277526
* Remove a few more ts-node references
* Fix linux and script reference
* Remove `_build-script` ref
* Fix script missing closing quote
* use type only import
* Fix export
* Make sure to run copy-policy-dto
* Make sure we run the copy-policy-dto script
* Enable `verbatimModuleSyntax`
* Pipelines fixes
* Try adding explicit ext to path
* Fix bad edit
* Revert extra `--`
---------
Co-authored-by: João Moreno <joaomoreno@users.noreply.github.com>
* Add another server built on top of our own automation framework
It's a big PR but a lot of this is boiler plate. It's just essentially wrapping our Automation framework in a bunch of tools.
* Lay the foundation for multiplexing
* feat: move from yarn to npm
* chore: skip yarn.lock files
* fix: playwright download
* chore: fix compile and hygiene
* chore: bump vsce@2.17.0
Refs 8b49e9dfdf
* test: update results for bat and sh colorizer tests
* fix: add missing lock files for windows
* fix: switch to legacy-peer-deps
* chore: update markdown-it@14.1.0
Refs 737c95a129
esbuild step in extensions-ci-pr was previously using markdown-it
from root which had userland punycode and was able to compile successfully.
* ci: increase pr timeout for windows integration tests
* chore: fix product build
* build: ignore extension dev dependency for rcedit
* build: fix working directory inside container
* build: fix dependency generation
* npm: update dependencies
* ci: use global npmrc
* ci: update cache
* ci: setup global npmrc for private npm auth
* build: fix extension bundling
* chore: sync npm dependencies
* ci: debug env variables for container
* ci: fix win32 cli pipeline
* build: fix npmrc config usage for build/ and remote/ dirs
* fix: windows build
* fix: container builds
* fix: markdown-language-features tests and bundling
```
[03:58:22] Error: Command failed: /Users/demohan/.nvm/versions/node/v20.15.1/bin/node /Users/demohan/github/vscode/extensions/markdown-language-features/esbuild-notebook.js --outputRoot /Users/demohan/github/vscode/.build/extensions/markdown-language-features
✘ [ERROR] Could not resolve "punycode"
extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
14 │ var punycode = require('punycode');
╵ ~~~~~~~~~~
The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```
Adds userland package based on beed9aee2c
* fix: container builds for distro
* chore: update yarn occurrences
* fixup! chore: bump vsce@2.17.0
Uses the closest version to `main` branch that does not
include d3cc84cdec
while still having the fix 8b49e9dfdf
* chore: sync npm dependencies
* chore: sync npm dependencies
* chore: sync npm dependencies
* chore: throw error when yarn is used for installation
* chore: add review feedback
* chore: switch exec => run where needed
* chore: npm sync dependencies
* fix: markdown-language-features bundling
```
✘ [ERROR] Could not resolve "punycode"
extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
14 │ var punycode = require('punycode');
╵ ~~~~~~~~~~
The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```
Adds missing userland package based on markdown-it/markdown-it@beed9ae,
can be removed once we update markdown-it >= 14.1.0
* ci: rename no-yarn-lock-changes.yml
* chore: sync npm dependencies
* ci: restore no-yarn-lock-changes.yml
We can disable it in a separate PR to keep the required
checks happy and also need workflow edit perms.
* chore: sync npm dependencies
* ci: rebuild cache
* ci: fix no-package-lock-changes.yml
* chore: bump distro
* chore: rm yarn.lock files
* chore: rm yarn.lock files without dependencies
* chore: add vscode-selfhost-import-aid to postinstall dirs
* chore: bump distro
* web - first cut `yarn web` via our server
* properly pipe output
* web - remove traces of web playground
* web - remember last opened workspace for convinience
* use vscode-test-web for server less, clean up web commands
* fix comment
* fix `yarn web`
* rename to code-server
* open system browser
* code-server script: use minimist
* test resolver: use ./scripts/code-server
* integartion tests: fix code-server command name
Co-authored-by: Martin Aeschlimann <martinae@microsoft.com>