feat: group chat extension customizations under 'Built-in' in managem…#303584
Merged
joshspicer merged 1 commit intomainfrom Mar 20, 2026
Merged
feat: group chat extension customizations under 'Built-in' in managem…#303584joshspicer merged 1 commit intomainfrom
joshspicer merged 1 commit intomainfrom
Conversation
3cde4fd to
76accb6
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the Chat Customizations management editor to visually group items contributed by the default chat extension (GitHub Copilot Chat) under a “Built-in” header (instead of “Extensions”), aligning with existing MCP list grouping patterns.
Changes:
- Move
BUILTIN_STORAGE/AICustomizationPromptsStorageinto the common AI customization workspace service and re-export from existing entrypoints. - Extend the core Local harness’ storage source list to include
builtin, and add tests ensuring the storage-source filter respects it. - Add UI-layer detection (
IProductService.defaultChatAgent.chatExtensionId) to setgroupKey: BUILTIN_STORAGEfor items coming from the default chat extension.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/contrib/chat/test/browser/aiCustomization/applyStorageSourceFilter.test.ts | Adds coverage for builtin source behavior in applyStorageSourceFilter. |
| src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts | Defines AICustomizationPromptsStorage and BUILTIN_STORAGE in the common layer. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.ts | Includes BUILTIN_STORAGE in the core Local harness sources. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts | Re-exports BUILTIN_STORAGE and the storage union type from common. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts | Implements built-in grouping for default chat extension items via groupKey. |
| src/vs/sessions/contrib/chat/common/builtinPromptsStorage.ts | Re-exports the shared built-in storage discriminator/type for sessions compatibility. |
| src/vs/sessions/AI_CUSTOMIZATIONS.md | Documents the new built-in grouping behavior and updated source list. |
Comments suppressed due to low confidence (1)
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts:1056
- In the Skills section, this now always calls
listPromptFiles(PromptsType.skill, ...)to build an extensionId lookup. That can be noticeably more expensive than needed (it enumerates all storages) and is a regression from the previous behavior where the call only happened when disabled skills needed to be included. Consider building the lookup vialistPromptFilesForStorage(PromptsType.skill, PromptsStorage.extension, ...)(and only when there are any extension skills), keeping the fulllistPromptFilescall inside the disabled-skills path if still required for that.
for (const agent of agents) {
const filename = basename(agent.uri);
const isChatExt = agent.source.storage === PromptsStorage.extension && this.isChatExtensionItem(agent.source.extensionId);
items.push({
id: agent.uri.toString(),
uri: agent.uri,
name: agent.name,
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts
Outdated
Show resolved
Hide resolved
76accb6 to
11f53b9
Compare
…ent editor Items contributed by the default chat extension (GitHub Copilot Chat) are now shown under a 'Built-in' group header instead of 'Extensions' in the Chat Customizations editor. This applies to agents, skills, prompts, and instructions — matching the existing pattern used by the MCP list widget. The grouping is determined at the UI layer using IProductService to identify the chat extension ID, setting groupKey on matching items. No data model changes needed. - Move BUILTIN_STORAGE/AICustomizationPromptsStorage to common layer - Add BUILTIN_STORAGE to VS Code harness filter sources - Add isChatExtensionItem() helper using productService.defaultChatAgent - Set groupKey: BUILTIN_STORAGE for items from the chat extension - Add tests for builtin source filtering - Update AI_CUSTOMIZATIONS.md spec
11f53b9 to
ffd28f7
Compare
roblourens
approved these changes
Mar 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #303584
…ent editor
Items contributed by the default chat extension (GitHub Copilot Chat) are now shown under a 'Built-in' group header instead of 'Extensions' in the Chat Customizations editor. This applies to agents, skills, prompts, and instructions — matching the existing pattern used by the MCP list widget.
The grouping is determined at the UI layer using IProductService to identify the chat extension ID, setting groupKey on matching items. No data model changes needed.