Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.ts
5222 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 './inlineChatDefaultModel.js';67import { EditorContributionInstantiation, registerEditorContribution } from '../../../../editor/browser/editorExtensions.js';8import { IMenuItem, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';9import { InlineChatController } from './inlineChatController.js';10import * as InlineChatActions from './inlineChatActions.js';11import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_V1_ENABLED, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, MENU_INLINE_CHAT_WIDGET_STATUS } from '../common/inlineChat.js';12import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';13import { Registry } from '../../../../platform/registry/common/platform.js';14import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';15import { InlineChatNotebookContribution } from './inlineChatNotebook.js';16import { IWorkbenchContributionsRegistry, registerWorkbenchContribution2, Extensions as WorkbenchExtensions, WorkbenchPhase } from '../../../common/contributions.js';17import { IInlineChatSessionService } from './inlineChatSessionService.js';18import { InlineChatEnabler, InlineChatEscapeToolContribution, InlineChatSessionServiceImpl } from './inlineChatSessionServiceImpl.js';19import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';20import { CancelAction, ChatSubmitAction } from '../../chat/browser/actions/chatExecuteActions.js';21import { localize } from '../../../../nls.js';22import { ChatContextKeys } from '../../chat/common/actions/chatContextKeys.js';23import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';24import { InlineChatAccessibilityHelp } from './inlineChatAccessibilityHelp.js';2526registerEditorContribution(InlineChatController.ID, InlineChatController, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors2728registerAction2(InlineChatActions.KeepSessionAction2);29registerAction2(InlineChatActions.UndoSessionAction2);30registerAction2(InlineChatActions.UndoAndCloseSessionAction2);3132// --- browser3334registerSingleton(IInlineChatSessionService, InlineChatSessionServiceImpl, InstantiationType.Delayed);3536// --- MENU special ---3738const editActionMenuItem: IMenuItem = {39group: '0_main',40order: 0,41command: {42id: ChatSubmitAction.ID,43title: localize('send.edit', "Edit Code"),44},45when: ContextKeyExpr.and(46ChatContextKeys.inputHasText,47CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),48CTX_INLINE_CHAT_EDITING,49CTX_INLINE_CHAT_V1_ENABLED50),51};5253const generateActionMenuItem: IMenuItem = {54group: '0_main',55order: 0,56command: {57id: ChatSubmitAction.ID,58title: localize('send.generate', "Generate"),59},60when: ContextKeyExpr.and(61ChatContextKeys.inputHasText,62CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),63CTX_INLINE_CHAT_EDITING.toNegated(),64CTX_INLINE_CHAT_V1_ENABLED65),66};6768MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, editActionMenuItem);69MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, generateActionMenuItem);7071const cancelActionMenuItem: IMenuItem = {72group: '0_main',73order: 0,74command: {75id: CancelAction.ID,76title: localize('cancel', "Cancel Request"),77shortTitle: localize('cancelShort', "Cancel"),78},79when: ContextKeyExpr.and(80CTX_INLINE_CHAT_REQUEST_IN_PROGRESS,81),82};8384MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, cancelActionMenuItem);8586// --- actions ---8788registerAction2(InlineChatActions.StartSessionAction);89registerAction2(InlineChatActions.FocusInlineChat);909192const workbenchContributionsRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);93workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookContribution, LifecyclePhase.Restored);9495registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);96registerWorkbenchContribution2(InlineChatEscapeToolContribution.Id, InlineChatEscapeToolContribution, WorkbenchPhase.AfterRestored);97AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());9899100