Path: blob/main/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.ts
5310 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 './experiments/agentSessionsExperiments.contribution.js';6import { Codicon } from '../../../../../base/common/codicons.js';7import { localize, localize2 } from '../../../../../nls.js';8import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js';9import { registerSingleton, InstantiationType } from '../../../../../platform/instantiation/common/extensions.js';10import { Registry } from '../../../../../platform/registry/common/platform.js';11import { Extensions as QuickAccessExtensions, IQuickAccessRegistry } from '../../../../../platform/quickinput/common/quickAccess.js';12import { ChatContextKeys } from '../../common/actions/chatContextKeys.js';13import { AgentSessionsViewerOrientation, AgentSessionsViewerPosition } from './agentSessions.js';14import { IAgentSessionsService, AgentSessionsService } from './agentSessionsService.js';15import { LocalAgentsSessionsController } from './localAgentSessionsController.js';16import { registerWorkbenchContribution2, WorkbenchPhase } from '../../../../common/contributions.js';17import { ISubmenuItem, MenuId, MenuRegistry, registerAction2 } from '../../../../../platform/actions/common/actions.js';18import { ArchiveAgentSessionAction, ArchiveAgentSessionSectionAction, UnarchiveAgentSessionAction, OpenAgentSessionInEditorGroupAction, OpenAgentSessionInNewEditorGroupAction, OpenAgentSessionInNewWindowAction, ShowAgentSessionsSidebar, HideAgentSessionsSidebar, ToggleAgentSessionsSidebar, RefreshAgentSessionsViewerAction, FindAgentSessionInViewerAction, MarkAgentSessionUnreadAction, MarkAgentSessionReadAction, FocusAgentSessionsAction, SetAgentSessionsOrientationStackedAction, SetAgentSessionsOrientationSideBySideAction, PickAgentSessionAction, ArchiveAllAgentSessionsAction, MarkAllAgentSessionsReadAction, RenameAgentSessionAction, DeleteAgentSessionAction, DeleteAllLocalSessionsAction, MarkAgentSessionSectionReadAction, ToggleShowAgentSessionsAction, UnarchiveAgentSessionSectionAction } from './agentSessionsActions.js';19import { AgentSessionsQuickAccessProvider, AGENT_SESSIONS_QUICK_ACCESS_PREFIX } from './agentSessionsQuickAccess.js';2021//#region Actions and Menus2223registerAction2(FocusAgentSessionsAction);24registerAction2(PickAgentSessionAction);25registerAction2(ArchiveAllAgentSessionsAction);26registerAction2(MarkAllAgentSessionsReadAction);27registerAction2(ArchiveAgentSessionSectionAction);28registerAction2(UnarchiveAgentSessionSectionAction);29registerAction2(MarkAgentSessionSectionReadAction);30registerAction2(ArchiveAgentSessionAction);31registerAction2(UnarchiveAgentSessionAction);32registerAction2(RenameAgentSessionAction);33registerAction2(DeleteAgentSessionAction);34registerAction2(DeleteAllLocalSessionsAction);35registerAction2(MarkAgentSessionUnreadAction);36registerAction2(MarkAgentSessionReadAction);37registerAction2(OpenAgentSessionInNewWindowAction);38registerAction2(OpenAgentSessionInEditorGroupAction);39registerAction2(OpenAgentSessionInNewEditorGroupAction);40registerAction2(RefreshAgentSessionsViewerAction);41registerAction2(FindAgentSessionInViewerAction);42registerAction2(ShowAgentSessionsSidebar);43registerAction2(HideAgentSessionsSidebar);44registerAction2(ToggleAgentSessionsSidebar);45registerAction2(ToggleShowAgentSessionsAction);46registerAction2(SetAgentSessionsOrientationStackedAction);47registerAction2(SetAgentSessionsOrientationSideBySideAction);4849// --- Agent Sessions Toolbar5051MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {52submenu: MenuId.AgentSessionsViewerFilterSubMenu,53title: localize2('filterAgentSessions', "Filter Agent Sessions"),54group: 'navigation',55order: 3,56icon: Codicon.filter,57} satisfies ISubmenuItem);5859MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {60command: {61id: ShowAgentSessionsSidebar.ID,62title: ShowAgentSessionsSidebar.TITLE,63icon: Codicon.layoutSidebarRightOff,64},65group: 'navigation',66order: 5,67when: ContextKeyExpr.and(68ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),69ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)70)71});7273MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {74command: {75id: ShowAgentSessionsSidebar.ID,76title: ShowAgentSessionsSidebar.TITLE,77icon: Codicon.layoutSidebarLeftOff,78},79group: 'navigation',80order: 5,81when: ContextKeyExpr.and(82ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),83ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)84)85});8687MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {88command: {89id: HideAgentSessionsSidebar.ID,90title: HideAgentSessionsSidebar.TITLE,91icon: Codicon.layoutSidebarRight,92},93group: 'navigation',94order: 5,95when: ContextKeyExpr.and(96ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.SideBySide),97ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)98)99});100101MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {102command: {103id: HideAgentSessionsSidebar.ID,104title: HideAgentSessionsSidebar.TITLE,105icon: Codicon.layoutSidebarLeft,106},107group: 'navigation',108order: 5,109when: ContextKeyExpr.and(110ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.SideBySide),111ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)112)113});114115// --- Sessions Title Toolbar116117MenuRegistry.appendMenuItem(MenuId.ChatViewSessionTitleToolbar, {118command: {119id: ShowAgentSessionsSidebar.ID,120title: ShowAgentSessionsSidebar.TITLE,121icon: Codicon.layoutSidebarLeftOff,122},123group: 'navigation',124order: 1,125when: ContextKeyExpr.and(126ContextKeyExpr.or(127ChatContextKeys.agentSessionsViewerVisible.negate(),128ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),129),130ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)131)132});133134MenuRegistry.appendMenuItem(MenuId.ChatViewSessionTitleToolbar, {135command: {136id: ShowAgentSessionsSidebar.ID,137title: ShowAgentSessionsSidebar.TITLE,138icon: Codicon.layoutSidebarRightOff,139},140group: 'navigation',141order: 1,142when: ContextKeyExpr.and(143ContextKeyExpr.or(144ChatContextKeys.agentSessionsViewerVisible.negate(),145ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),146),147ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)148)149});150151//#endregion152153//#region Quick Access154155Registry.as<IQuickAccessRegistry>(QuickAccessExtensions.Quickaccess).registerQuickAccessProvider({156ctor: AgentSessionsQuickAccessProvider,157prefix: AGENT_SESSIONS_QUICK_ACCESS_PREFIX,158contextKey: 'inAgentSessionsPicker',159when: ChatContextKeys.enabled,160placeholder: localize('agentSessionsQuickAccessPlaceholder', "Search agent sessions by name"),161helpEntries: [{162description: localize('agentSessionsQuickAccessHelp', "Show All Agent Sessions"),163commandId: 'workbench.action.chat.history',164}]165});166167//#endregion168169//#region Workbench Contributions170171registerWorkbenchContribution2(LocalAgentsSessionsController.ID, LocalAgentsSessionsController, WorkbenchPhase.AfterRestored);172173registerSingleton(IAgentSessionsService, AgentSessionsService, InstantiationType.Delayed);174175//#endregion176177178