move sessions management service to services layer#308189
Merged
Conversation
Contributor
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors the Sessions “management” and “provider registry” APIs into the src/vs/sessions/services/ layer, updating consumers across vs/sessions/contrib/* (and a few workbench fixtures/tests) to import the new service-layer contracts and implementations.
Changes:
- Introduces service-layer contracts for sessions management (
sessionsManagement.ts) and consolidates core session types/constants intoservices/sessions/common/session.ts. - Adds a new
SessionsProvidersServiceinservices/sessions/browser/and updatesSessionsManagementServiceto subscribe directly to provider events. - Updates providers, UI contributions, and tests to use the new service-layer imports and the renamed workspace browse action API (
run()).
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts | Update fixture imports to new sessions management service contract. |
| src/vs/sessions/sessions.common.main.ts | Ensure new sessions management service implementation is loaded/registered. |
| src/vs/sessions/SESSIONS_PROVIDER.md | Update documentation file reference for the common session interface. |
| src/vs/sessions/services/sessions/common/sessionsProvider.ts | Move provider-facing types to services layer; rename browse action type usage. |
| src/vs/sessions/services/sessions/common/sessionsManagement.ts | New service-layer contract for sessions management (interfaces/context key). |
| src/vs/sessions/services/sessions/common/session.ts | Consolidate core session types + Copilot session type constants into services layer. |
| src/vs/sessions/services/sessions/browser/sessionsProvidersService.ts | New providers registry service in the sessions services layer. |
| src/vs/sessions/services/sessions/browser/sessionsManagementService.ts | Move/adjust management service implementation to use new providers registry and contracts. |
| src/vs/sessions/contrib/workspace/browser/workspaceFolderManagement.ts | Update imports to service-layer sessions types/contracts. |
| src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts | Update test imports to service-layer sessions types/contracts. |
| src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts | Update imports for sessions mgmt and Copilot CLI session type constant. |
| src/vs/sessions/contrib/sessions/test/browser/sessionsList.test.ts | Update test imports to service-layer sessions types. |
| src/vs/sessions/contrib/sessions/test/browser/aiCustomizationShortcutsWidget.fixture.ts | Update fixture imports to service-layer sessions management contract. |
| src/vs/sessions/contrib/sessions/common/sessionsProvidersService.ts | Remove old contrib-layer providers service (moved to services layer). |
| src/vs/sessions/contrib/sessions/common/sessionsProvider.ts | Remove old contrib-layer provider contract (moved to services layer). |
| src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.ts | Update view actions to import sessions mgmt/context key from services layer. |
| src/vs/sessions/contrib/sessions/browser/views/sessionsView.ts | Update view to import session types + management service from services layer. |
| src/vs/sessions/contrib/sessions/browser/views/sessionsList.ts | Update view to import Copilot CLI type + sessions mgmt/types from services layer. |
| src/vs/sessions/contrib/sessions/browser/sessionTypes.ts | Remove old sessionTypes module (moved into services/sessions/common/session.ts). |
| src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts | Update imports to use services-layer sessions management/providers services. |
| src/vs/sessions/contrib/sessions/browser/sessionsProvidersService.ts | Remove old contrib-layer providers registry (moved to services layer). |
| src/vs/sessions/contrib/sessions/browser/sessionsActions.ts | Update actions to use services-layer sessions management/types. |
| src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts | Stop registering sessions management singleton from contrib; now registered in services layer. |
| src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/remoteAgentHost/test/browser/remoteAgentHostSessionsProvider.test.ts | Update test imports to services-layer session/provider types. |
| src/vs/sessions/contrib/remoteAgentHost/browser/remoteAgentHostSessionsProvider.ts | Update provider to services-layer types; rename browse action method to run(). |
| src/vs/sessions/contrib/remoteAgentHost/browser/remoteAgentHostActions.ts | Update imports and browse action invocation (run()). |
| src/vs/sessions/contrib/remoteAgentHost/browser/remoteAgentHost.contribution.ts | Update imports to services-layer providers/mgmt services. |
| src/vs/sessions/contrib/localAgentHost/test/browser/localAgentHostSessionsProvider.test.ts | Update test imports to services-layer session/provider types. |
| src/vs/sessions/contrib/localAgentHost/browser/localAgentHostSessionsProvider.ts | Update provider to services-layer types; rename browse action method to run(). |
| src/vs/sessions/contrib/localAgentHost/browser/localAgentHost.contribution.ts | Update imports to services-layer providers service. |
| src/vs/sessions/contrib/layout/browser/layoutController.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/github/test/browser/githubService.test.ts | Update imports to services-layer session constants. |
| src/vs/sessions/contrib/github/browser/github.contribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.ts | Update imports to services-layer GITHUB_REMOTE_FILE_SCHEME. |
| src/vs/sessions/contrib/fileTreeView/browser/fileTreeView.contribution.ts | Update imports to services-layer GITHUB_REMOTE_FILE_SCHEME. |
| src/vs/sessions/contrib/copilotChatSessions/test/browser/copilotChatSessionsProvider.test.ts | Update test imports to services-layer provider/session workspace types. |
| src/vs/sessions/contrib/copilotChatSessions/browser/modePicker.ts | Update imports to services-layer mgmt/providers services + session type constants. |
| src/vs/sessions/contrib/copilotChatSessions/browser/modelPicker.ts | Update imports to services-layer mgmt/providers services. |
| src/vs/sessions/contrib/copilotChatSessions/browser/isolationPicker.ts | Update imports to services-layer mgmt/providers services. |
| src/vs/sessions/contrib/copilotChatSessions/browser/copilotChatSessionsProvider.ts | Update provider to services-layer session/provider types; rename browse actions to run(). |
| src/vs/sessions/contrib/copilotChatSessions/browser/copilotChatSessionsActions.ts | Update imports to services-layer mgmt/providers services + session type constants. |
| src/vs/sessions/contrib/copilotChatSessions/browser/copilotChatSessions.contribution.ts | Update provider registration to use services-layer providers service. |
| src/vs/sessions/contrib/copilotChatSessions/browser/branchPicker.ts | Update imports to services-layer mgmt/providers services. |
| src/vs/sessions/contrib/codeReview/test/browser/codeReviewService.test.ts | Update test imports to services-layer sessions management/types. |
| src/vs/sessions/contrib/codeReview/browser/codeReviewService.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.ts | Update imports to services-layer sessions management + cloud session type. |
| src/vs/sessions/contrib/chat/test/browser/sessionWorkspacePicker.test.ts | Update test to new providers service event shape and APIs. |
| src/vs/sessions/contrib/chat/test/browser/sessionsConfigurationService.test.ts | Update test imports to services-layer sessions management/types. |
| src/vs/sessions/contrib/chat/browser/sessionWorkspacePicker.ts | Update workspace picker to new browse action API (run()) and providers service API. |
| src/vs/sessions/contrib/chat/browser/sessionTypePicker.ts | Update imports for sessions management + session type to services layer. |
| src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.ts | Update imports to services-layer session types. |
| src/vs/sessions/contrib/chat/browser/runScriptAction.ts | Update imports to services-layer sessions management/types. |
| src/vs/sessions/contrib/chat/browser/newChatViewPane.ts | Update imports to services-layer mgmt/providers services. |
| src/vs/sessions/contrib/chat/browser/newChatPermissionPicker.ts | Update imports to services-layer mgmt/providers services. |
| src/vs/sessions/contrib/chat/browser/chat.contribution.ts | Update imports to services-layer sessions management + Copilot CLI type. |
| src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/changes/browser/checksViewModel.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/changes/browser/checksActions.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/changes/browser/changesViewRenderer.ts | Update imports to services-layer sessions management + scheme constant. |
| src/vs/sessions/contrib/changes/browser/changesViewModel.ts | Update imports to services-layer sessions management + cloud type constant. |
| src/vs/sessions/contrib/changes/browser/changesViewActions.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/changes/browser/changesView.ts | Update imports to services-layer sessions management + session constants. |
| src/vs/sessions/contrib/changes/browser/changesTitleBarWidget.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackOverviewRulerContribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorWidgetContribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorUtils.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorOverlay.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorInputContribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackEditorActions.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/contrib/agentFeedback/browser/agentFeedback.contribution.ts | Update imports to services-layer sessions management contract. |
| src/vs/sessions/browser/parts/sessionCompositeBar.ts | Update imports to depend on sessions/services rather than contrib/sessions. |
| eslint.config.js | Extend import-layer allowlists to account for new vs/sessions/services/* layer. |
Copilot's findings
Comments suppressed due to low confidence (1)
eslint.config.js:2142
- In the
src/vs/sessions/services/*/~import allowlist,vs/workbench/contrib/*/~is included unconditionally and again as a{ when: 'test' }conditional. With the unconditional entry present, the conditional is ineffective and sessions/services code can import workbench/contrib in non-test code, which seems unintended (the comment suggests this should be test-only). Remove the unconditional entry or keep only the conditional rule (and ensure the intent matches layering constraints).
'vs/workbench/~',
'vs/workbench/services/*/~',
'vs/sessions/~',
'vs/sessions/services/*/~',
'vs/workbench/contrib/*/~',
{
'when': 'test',
'pattern': 'vs/workbench/contrib/*/~'
}, // TODO@layers
- Files reviewed: 75/75 changed files
- Comments generated: 3
hediet
approved these changes
Apr 7, 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.