Path: blob/main/src/vs/sessions/contrib/copilotChatSessions/browser/copilotChatSessions.contribution.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IWorkbenchContribution, registerWorkbenchContribution2, WorkbenchPhase } from '../../../../workbench/common/contributions.js';6import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';7import { Disposable } from '../../../../base/common/lifecycle.js';8import { CopilotChatSessionsProvider, COPILOT_MULTI_CHAT_SETTING, CLAUDE_CODE_ENABLED_SETTING } from '../../copilotChatSessions/browser/copilotChatSessionsProvider.js';9import '../../copilotChatSessions/browser/copilotChatSessionsActions.js';10import { ISessionsProvidersService } from '../../../services/sessions/browser/sessionsProvidersService.js';11import { Registry } from '../../../../platform/registry/common/platform.js';12import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from '../../../../platform/configuration/common/configurationRegistry.js';13import { localize } from '../../../../nls.js';1415Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).registerConfiguration({16id: 'sessions',17properties: {18[COPILOT_MULTI_CHAT_SETTING]: {19type: 'boolean',20default: true,21tags: ['preview'],22description: localize('sessions.github.copilot.multiChatSessions', "Whether to enable multiple chats within a single session in the Copilot Chat sessions provider."),23},24[CLAUDE_CODE_ENABLED_SETTING]: {25type: 'boolean',26default: true,27experiment: { mode: 'startup' },28description: localize('sessions.chat.claudeAgent.enabled', "Enable Claude Agent sessions in the Agents app. Start and resume agentic coding sessions powered by Anthropic's Claude Agent SDK directly. Uses your existing Copilot subscription."),29},30},31});3233/**34* Registers the {@link CopilotChatSessionsProvider} as a sessions provider.35*36* Coexists with the local agent host provider when `chat.agentHost.enabled`37* is true. The two providers list disjoint sets of sessions:38* - The local agent host filters via the per-session Agent Host SQLite DB39* (database-existence ownership gate in `CopilotAgent.listSessions`).40* - This provider's underlying extension service filters via the per-session41* metadata file's `origin` field, which the local agent host never writes.42*/43class DefaultSessionsProviderContribution extends Disposable implements IWorkbenchContribution {44static readonly ID = 'sessions.defaultSessionsProvider';4546constructor(47@IInstantiationService instantiationService: IInstantiationService,48@ISessionsProvidersService sessionsProvidersService: ISessionsProvidersService,49) {50super();5152const provider = this._register(instantiationService.createInstance(CopilotChatSessionsProvider));53this._register(sessionsProvidersService.registerProvider(provider));54}55}5657registerWorkbenchContribution2(DefaultSessionsProviderContribution.ID, DefaultSessionsProviderContribution, WorkbenchPhase.AfterRestored);585960