Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.ts
5310 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import './experiments/agentSessionsExperiments.contribution.js';
7
import { Codicon } from '../../../../../base/common/codicons.js';
8
import { localize, localize2 } from '../../../../../nls.js';
9
import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js';
10
import { registerSingleton, InstantiationType } from '../../../../../platform/instantiation/common/extensions.js';
11
import { Registry } from '../../../../../platform/registry/common/platform.js';
12
import { Extensions as QuickAccessExtensions, IQuickAccessRegistry } from '../../../../../platform/quickinput/common/quickAccess.js';
13
import { ChatContextKeys } from '../../common/actions/chatContextKeys.js';
14
import { AgentSessionsViewerOrientation, AgentSessionsViewerPosition } from './agentSessions.js';
15
import { IAgentSessionsService, AgentSessionsService } from './agentSessionsService.js';
16
import { LocalAgentsSessionsController } from './localAgentSessionsController.js';
17
import { registerWorkbenchContribution2, WorkbenchPhase } from '../../../../common/contributions.js';
18
import { ISubmenuItem, MenuId, MenuRegistry, registerAction2 } from '../../../../../platform/actions/common/actions.js';
19
import { 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';
20
import { AgentSessionsQuickAccessProvider, AGENT_SESSIONS_QUICK_ACCESS_PREFIX } from './agentSessionsQuickAccess.js';
21
22
//#region Actions and Menus
23
24
registerAction2(FocusAgentSessionsAction);
25
registerAction2(PickAgentSessionAction);
26
registerAction2(ArchiveAllAgentSessionsAction);
27
registerAction2(MarkAllAgentSessionsReadAction);
28
registerAction2(ArchiveAgentSessionSectionAction);
29
registerAction2(UnarchiveAgentSessionSectionAction);
30
registerAction2(MarkAgentSessionSectionReadAction);
31
registerAction2(ArchiveAgentSessionAction);
32
registerAction2(UnarchiveAgentSessionAction);
33
registerAction2(RenameAgentSessionAction);
34
registerAction2(DeleteAgentSessionAction);
35
registerAction2(DeleteAllLocalSessionsAction);
36
registerAction2(MarkAgentSessionUnreadAction);
37
registerAction2(MarkAgentSessionReadAction);
38
registerAction2(OpenAgentSessionInNewWindowAction);
39
registerAction2(OpenAgentSessionInEditorGroupAction);
40
registerAction2(OpenAgentSessionInNewEditorGroupAction);
41
registerAction2(RefreshAgentSessionsViewerAction);
42
registerAction2(FindAgentSessionInViewerAction);
43
registerAction2(ShowAgentSessionsSidebar);
44
registerAction2(HideAgentSessionsSidebar);
45
registerAction2(ToggleAgentSessionsSidebar);
46
registerAction2(ToggleShowAgentSessionsAction);
47
registerAction2(SetAgentSessionsOrientationStackedAction);
48
registerAction2(SetAgentSessionsOrientationSideBySideAction);
49
50
// --- Agent Sessions Toolbar
51
52
MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {
53
submenu: MenuId.AgentSessionsViewerFilterSubMenu,
54
title: localize2('filterAgentSessions', "Filter Agent Sessions"),
55
group: 'navigation',
56
order: 3,
57
icon: Codicon.filter,
58
} satisfies ISubmenuItem);
59
60
MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {
61
command: {
62
id: ShowAgentSessionsSidebar.ID,
63
title: ShowAgentSessionsSidebar.TITLE,
64
icon: Codicon.layoutSidebarRightOff,
65
},
66
group: 'navigation',
67
order: 5,
68
when: ContextKeyExpr.and(
69
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),
70
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)
71
)
72
});
73
74
MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {
75
command: {
76
id: ShowAgentSessionsSidebar.ID,
77
title: ShowAgentSessionsSidebar.TITLE,
78
icon: Codicon.layoutSidebarLeftOff,
79
},
80
group: 'navigation',
81
order: 5,
82
when: ContextKeyExpr.and(
83
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),
84
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)
85
)
86
});
87
88
MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {
89
command: {
90
id: HideAgentSessionsSidebar.ID,
91
title: HideAgentSessionsSidebar.TITLE,
92
icon: Codicon.layoutSidebarRight,
93
},
94
group: 'navigation',
95
order: 5,
96
when: ContextKeyExpr.and(
97
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.SideBySide),
98
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)
99
)
100
});
101
102
MenuRegistry.appendMenuItem(MenuId.AgentSessionsToolbar, {
103
command: {
104
id: HideAgentSessionsSidebar.ID,
105
title: HideAgentSessionsSidebar.TITLE,
106
icon: Codicon.layoutSidebarLeft,
107
},
108
group: 'navigation',
109
order: 5,
110
when: ContextKeyExpr.and(
111
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.SideBySide),
112
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)
113
)
114
});
115
116
// --- Sessions Title Toolbar
117
118
MenuRegistry.appendMenuItem(MenuId.ChatViewSessionTitleToolbar, {
119
command: {
120
id: ShowAgentSessionsSidebar.ID,
121
title: ShowAgentSessionsSidebar.TITLE,
122
icon: Codicon.layoutSidebarLeftOff,
123
},
124
group: 'navigation',
125
order: 1,
126
when: ContextKeyExpr.and(
127
ContextKeyExpr.or(
128
ChatContextKeys.agentSessionsViewerVisible.negate(),
129
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),
130
),
131
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Left)
132
)
133
});
134
135
MenuRegistry.appendMenuItem(MenuId.ChatViewSessionTitleToolbar, {
136
command: {
137
id: ShowAgentSessionsSidebar.ID,
138
title: ShowAgentSessionsSidebar.TITLE,
139
icon: Codicon.layoutSidebarRightOff,
140
},
141
group: 'navigation',
142
order: 1,
143
when: ContextKeyExpr.and(
144
ContextKeyExpr.or(
145
ChatContextKeys.agentSessionsViewerVisible.negate(),
146
ChatContextKeys.agentSessionsViewerOrientation.isEqualTo(AgentSessionsViewerOrientation.Stacked),
147
),
148
ChatContextKeys.agentSessionsViewerPosition.isEqualTo(AgentSessionsViewerPosition.Right)
149
)
150
});
151
152
//#endregion
153
154
//#region Quick Access
155
156
Registry.as<IQuickAccessRegistry>(QuickAccessExtensions.Quickaccess).registerQuickAccessProvider({
157
ctor: AgentSessionsQuickAccessProvider,
158
prefix: AGENT_SESSIONS_QUICK_ACCESS_PREFIX,
159
contextKey: 'inAgentSessionsPicker',
160
when: ChatContextKeys.enabled,
161
placeholder: localize('agentSessionsQuickAccessPlaceholder', "Search agent sessions by name"),
162
helpEntries: [{
163
description: localize('agentSessionsQuickAccessHelp', "Show All Agent Sessions"),
164
commandId: 'workbench.action.chat.history',
165
}]
166
});
167
168
//#endregion
169
170
//#region Workbench Contributions
171
172
registerWorkbenchContribution2(LocalAgentsSessionsController.ID, LocalAgentsSessionsController, WorkbenchPhase.AfterRestored);
173
174
registerSingleton(IAgentSessionsService, AgentSessionsService, InstantiationType.Delayed);
175
176
//#endregion
177
178