Conversation
style - set width to 100% for `interactive-input-part`
* modal - surface some editor actions in a new toolbar * ccr
#299636) sessions customizations: make it easier to scan mcp/plugin marketplace list
* sessions: add built-in prompt files with override support Ship bundled .prompt.md files with the Sessions app that appear as slash commands out of the box. Built-in prompts use a BUILTIN_STORAGE constant (cast as PromptsStorage) defined in the aiCustomization layer, avoiding changes to the core PromptsStorage enum and prompt service types. - AgenticPromptsService discovers prompts from vs/sessions/prompts/ at runtime via FileAccess and injects them into the listing pipeline - Override logic: user/workspace prompts with matching names take precedence over built-in ones - Built-in prompts open as read-only in the management editor - Sessions tree view, workspace service, and counts handle BUILTIN_STORAGE - Add /create-pr as the first built-in prompt - Bundle prompt files via gulpfile resource includes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions: use AICustomizationPromptsStorage type for builtin storage Adopt the new AICustomizationPromptsStorage union type in the sessions tree view method signature. Use string-keyed Records and targeted casts at the PromptsStorage boundary to stay type-safe. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: remove PromptsStorage casts, widen IStorageSourceFilter Use AICustomizationPromptsStorage in sessions-local interfaces (IAICustomizationGroupItem, IAICustomizationFileItem) and widen IStorageSourceFilter.sources to readonly string[] so BUILTIN_STORAGE flows through without casts. The only remaining cast is at the IPromptPath creation boundary in AgenticPromptsService. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: move BUILTIN_STORAGE to sessions common layer Move AICustomizationPromptsStorage type and BUILTIN_STORAGE constant from the workbench browser UI module to sessions/contrib/chat/common so that AgenticPromptsService (a service) does not depend on UI code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…9663) Replace the `as IPromptPath` cast in discoverBuiltinPrompts with a createBuiltinPromptPath factory function that contains the type narrowing in one place, satisfying the code-no-dangerous-type-assertions ESLint rule. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: @lszomoruMatched files:
@bpaseroMatched files:
@rzhao271Matched files:
|
benibenj
approved these changes
Mar 6, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds Sessions-window features around code review and built-in prompts, improves modal editor title actions support, and refactors several Sessions UI/terminal behaviors to better align with those new capabilities.
Changes:
- Introduces a Sessions Code Review service + toolbar contribution and wires it into the Changes view and Agent Feedback comment UI.
- Adds “built-in” prompt discovery for the Sessions app (
vs/sessions/prompts/*.prompt.md) and surfaces it in AI customization UIs/counting. - Adds a dedicated modal editor editor-title menu (
modalEditor/editorTitle) and updates modal editor UI behavior/actions.
Reviewed changes
Copilot reviewed 60 out of 60 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/test/browser/componentFixtures/agentSessionsViewer.fixture.ts | Updates fixture to new AgentSessionRenderer ctor param. |
| src/vs/workbench/services/editor/test/browser/modalEditorGroup.test.ts | Adds modal preserveFocus behavior test. |
| src/vs/workbench/services/editor/browser/editorService.ts | Overrides preserveFocus for first modal editor open. |
| src/vs/workbench/services/actions/common/menusExtensionPoint.ts | Registers new API menu key for modal editor title. |
| src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts | Moves sync controls container usage; removes JSON button. |
| src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts | Duplicates editor title actions into modal editor title menu. |
| src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css | Removes settings header right-controls styling. |
| src/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css | Simplifies header/search CSS selectors. |
| src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts | Removes JSON button UI; simplifies header DOM. |
| src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts | Extends storage-source filter to allow built-in discriminator. |
| src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.ts | Adds internal command pass-through for code review run. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts | Updates marketplace item layout/height. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css | Adds styling for new “extension-list-item” layout. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts | Updates gallery item layout/height similar to plugins. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts | Treats built-in storage as read-only. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts | Adds BUILTIN_STORAGE discriminator in workbench layer. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts | Adds “Built-in” group and filtering support. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.ts | Adds built-in storage icon. |
| src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts | Adds active-session observable to render “Allow” button state. |
| src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts | Tracks active session resource as observable for renderer. |
| src/vs/workbench/browser/parts/editor/modalEditorPart.ts | Adds modal editor editor-title toolbar; hides tabs/actions in modal. |
| src/vs/workbench/browser/parts/editor/media/modalEditorPart.css | Adds separator styling for modal header actions. |
| src/vs/workbench/browser/parts/editor/editor.contribution.ts | Adds optional registration into modal editor title menu. |
| src/vs/sessions/sessions.desktop.main.ts | Registers Sessions code review contributions. |
| src/vs/sessions/prompts/create-pr.prompt.md | Adds built-in “create PR” prompt for Sessions. |
| src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts | Updates tests for cwd-based terminal visibility + recency logic. |
| src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts | Refactors terminal management to cwd-based visibility + active selection. |
| src/vs/sessions/contrib/sessions/test/browser/customizationCounts.test.ts | Extends counts tests with built-in storage. |
| src/vs/sessions/contrib/sessions/browser/customizationCounts.ts | Adds built-in storage counting. |
| src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.ts | Changes auth session acquisition behavior and errors on missing sessions. |
| src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts | Enables Copilot for markdown/plaintext by default in Sessions. |
| src/vs/sessions/contrib/codeReview/test/browser/codeReviewService.test.ts | Adds comprehensive unit tests for Sessions CodeReviewService. |
| src/vs/sessions/contrib/codeReview/browser/codeReviewService.ts | Implements Sessions CodeReviewService + payload normalization. |
| src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.ts | Registers service + toolbar action with state-driven tooltip/icon. |
| src/vs/sessions/contrib/chat/common/builtinPromptsStorage.ts | Defines BUILTIN_STORAGE and built-in prompt path type. |
| src/vs/sessions/contrib/chat/browser/promptsService.ts | Discovers built-in prompts and filters overridden ones. |
| src/vs/sessions/contrib/chat/browser/newChatViewPane.ts | Enables model management in Sessions chat picker. |
| src/vs/sessions/contrib/chat/browser/folderPicker.ts | Removes workspace fallback for folder selection display. |
| src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts | Includes built-in storage in Sessions customization filters. |
| src/vs/sessions/contrib/changesView/browser/media/changesView.css | Adds badge styling for code review comment counts. |
| src/vs/sessions/contrib/changesView/browser/changesView.ts | Shows per-file code review comment counts; tweaks toolbar rendering. |
| src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.ts | Adds built-in group support in Sessions AI customization tree. |
| src/vs/sessions/contrib/agentFeedback/test/browser/sessionEditorComments.test.ts | Tests merging/sorting/grouping of feedback + review comments. |
| src/vs/sessions/contrib/agentFeedback/test/browser/agentFeedbackEditorWidget.fixture.ts | Adds fixtures for combined comment widget UI states. |
| src/vs/sessions/contrib/agentFeedback/test/browser/agentFeedbackEditorOverlayWidget.fixture.ts | Adds fixtures for overlay widget with/without feedback actions. |
| src/vs/sessions/contrib/agentFeedback/browser/sessionEditorComments.ts | Implements unified comment model for feedback + code review. |
| src/vs/sessions/contrib/agentFeedback/browser/media/agentFeedbackEditorWidget.css | Styles code review badges/actions and suggestion rendering. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.ts | Adds suggestion support + generalized navigation helpers. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorWidgetContribution.ts | Renders unified comments; supports convert/remove + suggestion display. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorOverlay.ts | Overlay now reflects combined comments; binds new context keys. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorActions.ts | Navigation/actions updated to operate on unified comment list. |
| src/vs/sessions/contrib/accountMenu/test/browser/updateHoverWidget.fixture.ts | Fixture layout adjusted (padding moved to CSS). |
| src/vs/sessions/contrib/accountMenu/browser/media/updateHoverWidget.css | Adds padding to hover widget root. |
| src/vs/sessions/browser/workbench.ts | Forces initial editor part layout for view method correctness. |
| src/vs/sessions/browser/media/style.css | Ensures chat input part uses full width. |
| src/vs/sessions/AI_CUSTOMIZATIONS.md | Documents built-in prompt discovery/override behavior (needs correction). |
| src/vs/platform/actions/common/actions.ts | Adds MenuId.ModalEditorEditorTitle. |
| extensions/markdown-language-features/package.json | Contributes markdown preview action to modal editor title menu. |
| extensions/github/src/commands.ts | Removes unused github.checkOpenPullRequest command. |
| build/gulpfile.vscode.ts | Packages built-in Sessions prompt markdown files. |
Comments suppressed due to low confidence (1)
src/vs/sessions/contrib/agentFeedback/test/browser/agentFeedbackEditorWidget.fixture.ts:152
- The mock
ICodeReviewServiceimplementation doesn't match the real interface:getReviewStatemust accept asessionResource: URIparameter. With the current signature this fixture will not type-check. Update the override signature (it can ignore the argument and return the same observable).
function createMockCodeReviewService(): ICodeReviewService {
return new class extends mock<ICodeReviewService>() {
private readonly _state = observableValue<ICodeReviewState>('fixture.reviewState', { kind: CodeReviewStateKind.Idle });
override getReviewState() {
return this._state;
}
override hasReview(): boolean {
return false;
}
override requestReview(): void { }
override removeComment(): void { }
override dismissReview(): void { }
}();
joshspicer
approved these changes
Mar 6, 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.
No description provided.