@codingame/monaco-vscode-chat-service-override 20.4.1 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +15 -7
- package/package.json +38 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
- package/vscode/src/vs/base/common/policy.d.ts +0 -41
- package/vscode/src/vs/base/common/policy.js +0 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
- /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
|
@@ -4,6 +4,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
4
4
|
import * as chatSetup from './media/chatSetup.css';
|
|
5
5
|
import { $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
6
6
|
import { Dialog, DialogContentsAlignment } from '@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common/vscode/vs/base/browser/ui/dialog/dialog';
|
|
7
|
+
import { coalesce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
|
|
7
8
|
import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
8
9
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
9
10
|
import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
|
|
@@ -25,8 +26,10 @@ import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/plat
|
|
|
25
26
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
26
27
|
import { Extensions } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configurationRegistry';
|
|
27
28
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
29
|
+
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
28
30
|
import { createWorkbenchDialogOptions } from '@codingame/monaco-vscode-f1bbc6d3-6129-583c-a2ba-c80b832993d2-common/vscode/vs/platform/dialogs/browser/dialog';
|
|
29
31
|
import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
32
|
+
import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
|
|
30
33
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
31
34
|
import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
32
35
|
import { ILayoutService } from '@codingame/monaco-vscode-api/vscode/vs/platform/layout/browser/layoutService.service';
|
|
@@ -43,9 +46,12 @@ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platfo
|
|
|
43
46
|
import { IWorkspaceTrustManagementService, IWorkspaceTrustRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service';
|
|
44
47
|
import { ViewContainerLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views';
|
|
45
48
|
import { IViewDescriptorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service';
|
|
46
|
-
import { ProgressBadge } from '@codingame/monaco-vscode-
|
|
49
|
+
import { ProgressBadge } from '@codingame/monaco-vscode-9a5ab9e7-d838-5831-9eb4-e79ea3764dcb-common/vscode/vs/workbench/services/activity/common/activity';
|
|
47
50
|
import { IActivityService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/activity/common/activity.service';
|
|
48
51
|
import { IAuthenticationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication.service';
|
|
52
|
+
import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
|
|
53
|
+
import { EnablementState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionManagement';
|
|
54
|
+
import { IWorkbenchExtensionEnablementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.service';
|
|
49
55
|
import { ExtensionUrlHandlerOverrideRegistry } from '@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler';
|
|
50
56
|
import { nullExtensionDescription } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
|
|
51
57
|
import { IHostService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service';
|
|
@@ -61,6 +67,7 @@ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
|
|
|
61
67
|
import { ChatEntitlement, ChatEntitlementRequests, isProUser } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatEntitlementService';
|
|
62
68
|
import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEntitlementService.service';
|
|
63
69
|
import { ChatRequestModel } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
|
|
70
|
+
import { ChatMode } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModes';
|
|
64
71
|
import { ChatRequestToolPart, ChatRequestAgentPart } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
|
|
65
72
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
66
73
|
import { ChatConfiguration, ChatAgentLocation, ChatModeKind, validateChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
@@ -69,11 +76,10 @@ import { CHAT_SETUP_ACTION_ID, CHAT_CATEGORY, CHAT_OPEN_ACTION_ID } from '@codin
|
|
|
69
76
|
import { showCopilotView, ChatViewId } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
70
77
|
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
71
78
|
import { CHAT_SIDEBAR_PANEL_ID } from './chatViewPane.js';
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
|
|
79
|
+
import { chatViewsWelcomeRegistry } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcome';
|
|
80
|
+
import { IPreferencesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/preferences/common/preferences.service';
|
|
75
81
|
|
|
76
|
-
var SetupAgent_1, ChatSetup_1;
|
|
82
|
+
var SetupAgent_1, ChatSetup_1, ChatTeardownContribution_1;
|
|
77
83
|
registerCss(chatSetup);
|
|
78
84
|
const defaultChat = {
|
|
79
85
|
extensionId: product.defaultChatAgent?.extensionId ?? '',
|
|
@@ -91,6 +97,8 @@ const defaultChat = {
|
|
|
91
97
|
walkthroughCommand: product.defaultChatAgent?.walkthroughCommand ?? '',
|
|
92
98
|
completionsRefreshTokenCommand: product.defaultChatAgent?.completionsRefreshTokenCommand ?? '',
|
|
93
99
|
chatRefreshTokenCommand: product.defaultChatAgent?.chatRefreshTokenCommand ?? '',
|
|
100
|
+
termsStatementUrl: product.defaultChatAgent?.termsStatementUrl ?? '',
|
|
101
|
+
privacyStatementUrl: product.defaultChatAgent?.privacyStatementUrl ?? ''
|
|
94
102
|
};
|
|
95
103
|
const ToolsAgentContextKey = ( ContextKeyExpr.and(( ContextKeyExpr.equals(`config.${ChatConfiguration.AgentEnabled}`, true)),
|
|
96
104
|
ContextKeyExpr.not(`previewFeaturesDisabled`)));
|
|
@@ -128,24 +136,28 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
128
136
|
return SetupAgent_1.doRegisterAgent(instantiationService, chatAgentService, id, `${defaultChat.provider.default.name} Copilot`, true, description, location, mode, context, controller);
|
|
129
137
|
});
|
|
130
138
|
}
|
|
131
|
-
static
|
|
139
|
+
static registerBuiltInAgents(instantiationService, context, controller) {
|
|
132
140
|
return instantiationService.invokeFunction(accessor => {
|
|
133
141
|
const chatAgentService = accessor.get(IChatAgentService);
|
|
134
142
|
const disposables = ( new DisposableStore());
|
|
135
|
-
const {
|
|
136
|
-
disposables.add(
|
|
143
|
+
const { disposable: vscodeDisposable } = SetupAgent_1.doRegisterAgent(instantiationService, chatAgentService, 'setup.vscode', 'vscode', false, ( localize2(5202, "Ask questions about VS Code")).value, ChatAgentLocation.Panel, undefined, context, controller);
|
|
144
|
+
disposables.add(vscodeDisposable);
|
|
145
|
+
const { disposable: workspaceDisposable } = SetupAgent_1.doRegisterAgent(instantiationService, chatAgentService, 'setup.workspace', 'workspace', false, ( localize2(5203, "Ask about your workspace")).value, ChatAgentLocation.Panel, undefined, context, controller);
|
|
146
|
+
disposables.add(workspaceDisposable);
|
|
147
|
+
const { disposable: terminalDisposable } = SetupAgent_1.doRegisterAgent(instantiationService, chatAgentService, 'setup.terminal.agent', 'terminal', false, ( localize2(5204, "Ask how to do something in the terminal")).value, ChatAgentLocation.Panel, undefined, context, controller);
|
|
148
|
+
disposables.add(terminalDisposable);
|
|
137
149
|
disposables.add(SetupTool.registerTool(instantiationService, {
|
|
138
|
-
id: '
|
|
150
|
+
id: 'setup_tools_createNewWorkspace',
|
|
139
151
|
source: ToolDataSource.Internal,
|
|
140
152
|
icon: Codicon.newFolder,
|
|
141
|
-
displayName: ( localize(
|
|
142
|
-
modelDescription: ( localize(
|
|
143
|
-
userDescription: ( localize(
|
|
153
|
+
displayName: ( localize(5205, "New Workspace")),
|
|
154
|
+
modelDescription: ( localize(5206, "Scaffold a new workspace in VS Code")),
|
|
155
|
+
userDescription: ( localize(5206, "Scaffold a new workspace in VS Code")),
|
|
144
156
|
canBeReferencedInPrompt: true,
|
|
145
157
|
toolReferenceName: 'new',
|
|
146
158
|
when: ContextKeyExpr.true(),
|
|
147
159
|
}).disposable);
|
|
148
|
-
return {
|
|
160
|
+
return { disposable: disposables };
|
|
149
161
|
});
|
|
150
162
|
}
|
|
151
163
|
static doRegisterAgent(instantiationService, chatAgentService, id, name, isDefault, description, location, mode, context, controller) {
|
|
@@ -163,6 +175,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
163
175
|
metadata: { helpTextPrefix: SetupAgent_1.SETUP_NEEDED_MESSAGE },
|
|
164
176
|
description,
|
|
165
177
|
extensionId: nullExtensionDescription.identifier,
|
|
178
|
+
extensionVersion: undefined,
|
|
166
179
|
extensionDisplayName: nullExtensionDescription.name,
|
|
167
180
|
extensionPublisherId: nullExtensionDescription.publisher
|
|
168
181
|
}));
|
|
@@ -173,8 +186,8 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
173
186
|
}
|
|
174
187
|
return { agent, disposable: disposables };
|
|
175
188
|
}
|
|
176
|
-
static { this.SETUP_NEEDED_MESSAGE = ( new MarkdownString(( localize(
|
|
177
|
-
static { this.TRUST_NEEDED_MESSAGE = ( new MarkdownString(( localize(
|
|
189
|
+
static { this.SETUP_NEEDED_MESSAGE = ( new MarkdownString(( localize(5207, "You need to set up GitHub Copilot and be signed in to use Chat.")))); }
|
|
190
|
+
static { this.TRUST_NEEDED_MESSAGE = ( new MarkdownString(( localize(5208, "You need to trust this workspace to use Chat.")))); }
|
|
178
191
|
constructor(context, controller, location, instantiationService, logService, configurationService, telemetryService, environmentService, workspaceTrustManagementService) {
|
|
179
192
|
super();
|
|
180
193
|
this.context = context;
|
|
@@ -214,7 +227,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
214
227
|
}
|
|
215
228
|
progress({
|
|
216
229
|
kind: 'progressMessage',
|
|
217
|
-
content: ( new MarkdownString(( localize(
|
|
230
|
+
content: ( new MarkdownString(( localize(5209, "Getting chat ready...")))),
|
|
218
231
|
});
|
|
219
232
|
await this.forwardRequestToCopilot(requestModel, progress, chatService, languageModelsService, chatAgentService, chatWidgetService, languageModelToolsService);
|
|
220
233
|
return {};
|
|
@@ -226,7 +239,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
226
239
|
catch (error) {
|
|
227
240
|
progress({
|
|
228
241
|
kind: 'warning',
|
|
229
|
-
content: ( new MarkdownString(( localize(
|
|
242
|
+
content: ( new MarkdownString(( localize(5210, "Failed to get a response. Please try again."))))
|
|
230
243
|
});
|
|
231
244
|
}
|
|
232
245
|
}
|
|
@@ -245,16 +258,19 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
245
258
|
}
|
|
246
259
|
async doForwardRequestToCopilotWhenReady(requestModel, progress, chatService, languageModelsService, chatAgentService, chatWidgetService, languageModelToolsService) {
|
|
247
260
|
const widget = chatWidgetService.getWidgetBySessionId(requestModel.session.sessionId);
|
|
248
|
-
const
|
|
261
|
+
const modeInfo = widget?.input.currentModeInfo;
|
|
249
262
|
const languageModel = widget?.input.currentLanguageModel;
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
263
|
+
let agentReady = false;
|
|
264
|
+
let languageModelReady = false;
|
|
265
|
+
let toolsModelReady = false;
|
|
266
|
+
const whenAgentReady = this.whenAgentReady(chatAgentService, modeInfo?.kind)?.then(() => agentReady = true);
|
|
267
|
+
const whenLanguageModelReady = this.whenLanguageModelReady(languageModelsService)?.then(() => languageModelReady = true);
|
|
268
|
+
const whenToolsModelReady = this.whenToolsModelReady(languageModelToolsService, requestModel)?.then(() => toolsModelReady = true);
|
|
253
269
|
if (whenLanguageModelReady instanceof Promise || whenAgentReady instanceof Promise || whenToolsModelReady instanceof Promise) {
|
|
254
270
|
const timeoutHandle = setTimeout(() => {
|
|
255
271
|
progress({
|
|
256
272
|
kind: 'progressMessage',
|
|
257
|
-
content: ( new MarkdownString(( localize(
|
|
273
|
+
content: ( new MarkdownString(( localize(5211, "Chat is almost ready...")))),
|
|
258
274
|
});
|
|
259
275
|
}, 10000);
|
|
260
276
|
try {
|
|
@@ -267,20 +283,25 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
267
283
|
let warningMessage;
|
|
268
284
|
if (ready === 'timedout') {
|
|
269
285
|
warningMessage = ( localize(
|
|
270
|
-
|
|
271
|
-
"
|
|
286
|
+
5212,
|
|
287
|
+
"Chat took too long to get ready. Please ensure you are signed in to {0} and that the extension `{1}` is installed and enabled.",
|
|
272
288
|
defaultChat.provider.default.name,
|
|
273
289
|
defaultChat.chatExtensionId
|
|
274
290
|
));
|
|
275
291
|
}
|
|
276
292
|
else {
|
|
277
293
|
warningMessage = ( localize(
|
|
278
|
-
|
|
279
|
-
"
|
|
294
|
+
5213,
|
|
295
|
+
"Chat failed to get ready. Please ensure you are signed in to {0} and that the extension `{1}` is installed and enabled.",
|
|
280
296
|
defaultChat.provider.default.name,
|
|
281
297
|
defaultChat.chatExtensionId
|
|
282
298
|
));
|
|
283
299
|
}
|
|
300
|
+
this.logService.warn(warningMessage, {
|
|
301
|
+
agentReady: whenAgentReady ? agentReady : undefined,
|
|
302
|
+
languageModelReady: whenLanguageModelReady ? languageModelReady : undefined,
|
|
303
|
+
toolsModelReady: whenToolsModelReady ? toolsModelReady : undefined
|
|
304
|
+
});
|
|
284
305
|
progress({
|
|
285
306
|
kind: 'warning',
|
|
286
307
|
content: ( new MarkdownString(warningMessage))
|
|
@@ -295,7 +316,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
295
316
|
}
|
|
296
317
|
await chatService.resendRequest(requestModel, {
|
|
297
318
|
...widget?.getModeRequestOptions(),
|
|
298
|
-
|
|
319
|
+
modeInfo,
|
|
299
320
|
userSelectedModelId: languageModel,
|
|
300
321
|
});
|
|
301
322
|
}
|
|
@@ -358,8 +379,8 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
358
379
|
progress({
|
|
359
380
|
kind: 'progressMessage',
|
|
360
381
|
content: ( new MarkdownString(( localize(
|
|
361
|
-
|
|
362
|
-
"Signing in to {0}
|
|
382
|
+
5214,
|
|
383
|
+
"Signing in to {0}...",
|
|
363
384
|
ChatEntitlementRequests.providerId(this.configurationService) === defaultChat.provider.enterprise.id ? defaultChat.provider.enterprise.name : defaultChat.provider.default.name
|
|
364
385
|
)))),
|
|
365
386
|
});
|
|
@@ -367,7 +388,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
367
388
|
case ChatSetupStep.Installing:
|
|
368
389
|
progress({
|
|
369
390
|
kind: 'progressMessage',
|
|
370
|
-
content: ( new MarkdownString(( localize(
|
|
391
|
+
content: ( new MarkdownString(( localize(5215, "Getting chat ready...")))),
|
|
371
392
|
});
|
|
372
393
|
break;
|
|
373
394
|
}
|
|
@@ -396,7 +417,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
396
417
|
else {
|
|
397
418
|
progress({
|
|
398
419
|
kind: 'warning',
|
|
399
|
-
content: ( new MarkdownString(( localize(
|
|
420
|
+
content: ( new MarkdownString(( localize(5216, "Chat setup failed."))))
|
|
400
421
|
});
|
|
401
422
|
}
|
|
402
423
|
}
|
|
@@ -433,6 +454,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
433
454
|
variableData: requestModel.variableData,
|
|
434
455
|
timestamp: Date.now(),
|
|
435
456
|
attempt: requestModel.attempt,
|
|
457
|
+
modeInfo: requestModel.modeInfo,
|
|
436
458
|
confirmation: requestModel.confirmation,
|
|
437
459
|
locationData: requestModel.locationData,
|
|
438
460
|
attachedContext: requestModel.attachedContext,
|
|
@@ -477,6 +499,7 @@ let SetupAgent = class SetupAgent extends Disposable {
|
|
|
477
499
|
variableData: variableData,
|
|
478
500
|
timestamp: Date.now(),
|
|
479
501
|
attempt: requestModel.attempt,
|
|
502
|
+
modeInfo: requestModel.modeInfo,
|
|
480
503
|
confirmation: requestModel.confirmation,
|
|
481
504
|
locationData: requestModel.locationData,
|
|
482
505
|
attachedContext: [chatRequestToolEntry],
|
|
@@ -497,9 +520,8 @@ class SetupTool extends Disposable {
|
|
|
497
520
|
return instantiationService.invokeFunction(accessor => {
|
|
498
521
|
const toolService = accessor.get(ILanguageModelToolsService);
|
|
499
522
|
const disposables = ( new DisposableStore());
|
|
500
|
-
disposables.add(toolService.registerToolData(toolData));
|
|
501
523
|
const tool = instantiationService.createInstance(SetupTool);
|
|
502
|
-
disposables.add(toolService.
|
|
524
|
+
disposables.add(toolService.registerTool(toolData, tool));
|
|
503
525
|
return { tool, disposable: disposables };
|
|
504
526
|
});
|
|
505
527
|
}
|
|
@@ -586,7 +608,7 @@ let ChatSetup = class ChatSetup {
|
|
|
586
608
|
const dialogSkipped = this.skipDialogOnce;
|
|
587
609
|
this.skipDialogOnce = false;
|
|
588
610
|
const trusted = await this.workspaceTrustRequestService.requestWorkspaceTrust({
|
|
589
|
-
message: ( localize(
|
|
611
|
+
message: ( localize(5217, "AI features are currently only supported in trusted workspaces."))
|
|
590
612
|
});
|
|
591
613
|
if (!trusted) {
|
|
592
614
|
this.context.update({ later: true });
|
|
@@ -610,19 +632,19 @@ let ChatSetup = class ChatSetup {
|
|
|
610
632
|
try {
|
|
611
633
|
switch (setupStrategy) {
|
|
612
634
|
case ChatSetupStrategy.SetupWithEnterpriseProvider:
|
|
613
|
-
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: true, useSocialProvider: undefined });
|
|
635
|
+
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: true, useSocialProvider: undefined, additionalScopes: options?.additionalScopes });
|
|
614
636
|
break;
|
|
615
637
|
case ChatSetupStrategy.SetupWithoutEnterpriseProvider:
|
|
616
|
-
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: undefined });
|
|
638
|
+
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: undefined, additionalScopes: options?.additionalScopes });
|
|
617
639
|
break;
|
|
618
640
|
case ChatSetupStrategy.SetupWithAppleProvider:
|
|
619
|
-
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: 'apple' });
|
|
641
|
+
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: 'apple', additionalScopes: options?.additionalScopes });
|
|
620
642
|
break;
|
|
621
643
|
case ChatSetupStrategy.SetupWithGoogleProvider:
|
|
622
|
-
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: 'google' });
|
|
644
|
+
success = await this.controller.value.setupWithProvider({ useEnterpriseProvider: false, useSocialProvider: 'google', additionalScopes: options?.additionalScopes });
|
|
623
645
|
break;
|
|
624
646
|
case ChatSetupStrategy.DefaultSetup:
|
|
625
|
-
success = await this.controller.value.setup();
|
|
647
|
+
success = await this.controller.value.setup(options);
|
|
626
648
|
break;
|
|
627
649
|
case ChatSetupStrategy.Canceled:
|
|
628
650
|
this.context.update({ later: true });
|
|
@@ -664,49 +686,55 @@ let ChatSetup = class ChatSetup {
|
|
|
664
686
|
const styleButton = (...classes) => ({ styleButton: (button) => button.element.classList.add(...classes) });
|
|
665
687
|
let buttons;
|
|
666
688
|
if (this.context.state.entitlement === ChatEntitlement.Unknown || options?.forceSignInDialog) {
|
|
667
|
-
const defaultProviderButton = [( localize(
|
|
689
|
+
const defaultProviderButton = [( localize(5218, "Continue with {0}", defaultChat.provider.default.name)), ChatSetupStrategy.SetupWithoutEnterpriseProvider, styleButton('continue-button', 'default')];
|
|
668
690
|
const defaultProviderLink = [defaultProviderButton[0], defaultProviderButton[1], styleButton('link-button')];
|
|
669
|
-
const enterpriseProviderButton = [( localize(
|
|
691
|
+
const enterpriseProviderButton = [( localize(5218, "Continue with {0}", defaultChat.provider.enterprise.name)), ChatSetupStrategy.SetupWithEnterpriseProvider, styleButton('continue-button', 'default')];
|
|
670
692
|
const enterpriseProviderLink = [enterpriseProviderButton[0], enterpriseProviderButton[1], styleButton('link-button')];
|
|
671
|
-
const googleProviderButton = [( localize(
|
|
693
|
+
const googleProviderButton = [( localize(5218, "Continue with {0}", defaultChat.provider.google.name)), ChatSetupStrategy.SetupWithGoogleProvider, styleButton('continue-button', 'google')];
|
|
694
|
+
const appleProviderButton = [( localize(5218, "Continue with {0}", defaultChat.provider.apple.name)), ChatSetupStrategy.SetupWithAppleProvider, styleButton('continue-button', 'apple')];
|
|
672
695
|
if (ChatEntitlementRequests.providerId(this.configurationService) !== defaultChat.provider.enterprise.id) {
|
|
673
696
|
buttons = coalesce([
|
|
674
697
|
defaultProviderButton,
|
|
675
|
-
|
|
698
|
+
googleProviderButton,
|
|
699
|
+
variant === 'apple' ? appleProviderButton : undefined,
|
|
676
700
|
enterpriseProviderLink
|
|
677
701
|
]);
|
|
678
702
|
}
|
|
679
703
|
else {
|
|
680
704
|
buttons = coalesce([
|
|
681
705
|
enterpriseProviderButton,
|
|
682
|
-
|
|
706
|
+
googleProviderButton,
|
|
707
|
+
variant === 'apple' ? appleProviderButton : undefined,
|
|
683
708
|
defaultProviderLink
|
|
684
709
|
]);
|
|
685
710
|
}
|
|
686
711
|
}
|
|
687
712
|
else {
|
|
688
|
-
buttons = [[( localize(
|
|
713
|
+
buttons = [[( localize(5219, "Set up Copilot")), ChatSetupStrategy.DefaultSetup, undefined]];
|
|
689
714
|
}
|
|
690
|
-
buttons.push([( localize(
|
|
715
|
+
buttons.push([( localize(5220, "Skip for now")), ChatSetupStrategy.Canceled, styleButton('link-button', 'skip-button')]);
|
|
691
716
|
return buttons;
|
|
692
717
|
}
|
|
693
718
|
getDialogTitle(options) {
|
|
694
719
|
if (this.context.state.entitlement === ChatEntitlement.Unknown || options?.forceSignInDialog) {
|
|
695
|
-
return localize(
|
|
720
|
+
return localize(5221, "Sign in to use GitHub Copilot");
|
|
696
721
|
}
|
|
697
|
-
return localize(
|
|
722
|
+
return localize(5222, "Start using GitHub Copilot");
|
|
698
723
|
}
|
|
699
724
|
createDialogFooter(disposables) {
|
|
700
725
|
const element = $('.chat-setup-dialog-footer');
|
|
701
726
|
const markdown = this.instantiationService.createInstance(MarkdownRenderer, {});
|
|
702
|
-
const
|
|
703
|
-
|
|
704
|
-
"{0}
|
|
727
|
+
const footer = ( localize(
|
|
728
|
+
5223,
|
|
729
|
+
"By continuing, you agree to {0}'s [Terms]({1}) and [Privacy Statement]({2}). {3} Copilot may show [public code]({4}) suggestions and use your data to improve the product. You can change these [settings]({5}) anytime.",
|
|
730
|
+
defaultChat.provider.default.name,
|
|
731
|
+
defaultChat.termsStatementUrl,
|
|
732
|
+
defaultChat.privacyStatementUrl,
|
|
705
733
|
defaultChat.provider.default.name,
|
|
706
734
|
defaultChat.publicCodeMatchesUrl,
|
|
707
735
|
defaultChat.manageSettingsUrl
|
|
708
736
|
));
|
|
709
|
-
element.appendChild($('p', undefined, disposables.add(markdown.render(( new MarkdownString(
|
|
737
|
+
element.appendChild($('p', undefined, disposables.add(markdown.render(( new MarkdownString(footer, { isTrusted: true })))).element));
|
|
710
738
|
return element;
|
|
711
739
|
}
|
|
712
740
|
};
|
|
@@ -723,13 +751,14 @@ ChatSetup = ChatSetup_1 = ( __decorate([
|
|
|
723
751
|
], ChatSetup));
|
|
724
752
|
let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
725
753
|
static { this.ID = 'workbench.contrib.chatSetup'; }
|
|
726
|
-
constructor(productService, instantiationService, commandService, telemetryService, chatEntitlementService, logService) {
|
|
754
|
+
constructor(productService, instantiationService, commandService, telemetryService, chatEntitlementService, logService, contextKeyService) {
|
|
727
755
|
super();
|
|
728
756
|
this.productService = productService;
|
|
729
757
|
this.instantiationService = instantiationService;
|
|
730
758
|
this.commandService = commandService;
|
|
731
759
|
this.telemetryService = telemetryService;
|
|
732
760
|
this.logService = logService;
|
|
761
|
+
this.contextKeyService = contextKeyService;
|
|
733
762
|
const context = chatEntitlementService.context?.value;
|
|
734
763
|
const requests = chatEntitlementService.requests?.value;
|
|
735
764
|
if (!context || !requests) {
|
|
@@ -754,40 +783,48 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
754
783
|
const { agent, disposable } = SetupAgent.registerDefaultAgents(this.instantiationService, ChatAgentLocation.Panel, mode, context, controller);
|
|
755
784
|
panelAgentDisposables.add(disposable);
|
|
756
785
|
panelAgentDisposables.add(agent.onUnresolvableError(() => {
|
|
757
|
-
|
|
758
|
-
|
|
786
|
+
const panelAgentHasGuidance = ( chatViewsWelcomeRegistry.get().some(descriptor => this.contextKeyService.contextMatchesRules(descriptor.when)));
|
|
787
|
+
if (panelAgentHasGuidance) {
|
|
788
|
+
this.logService.error('[chat setup] Unresolvable error from Copilot agent registration, clearing registration.');
|
|
789
|
+
panelAgentDisposables.dispose();
|
|
790
|
+
}
|
|
759
791
|
}));
|
|
760
792
|
}
|
|
761
793
|
disposables.add(SetupAgent.registerDefaultAgents(this.instantiationService, ChatAgentLocation.Terminal, undefined, context, controller).disposable);
|
|
762
794
|
disposables.add(SetupAgent.registerDefaultAgents(this.instantiationService, ChatAgentLocation.Notebook, undefined, context, controller).disposable);
|
|
763
795
|
disposables.add(SetupAgent.registerDefaultAgents(this.instantiationService, ChatAgentLocation.Editor, undefined, context, controller).disposable);
|
|
764
796
|
}
|
|
765
|
-
if (!
|
|
797
|
+
if ((!context.state.installed || context.state.entitlement === ChatEntitlement.Unknown || context.state.entitlement === ChatEntitlement.Unresolved) && !vscodeAgentDisposables.value) {
|
|
766
798
|
const disposables = vscodeAgentDisposables.value = ( new DisposableStore());
|
|
767
|
-
disposables.add(SetupAgent.
|
|
799
|
+
disposables.add(SetupAgent.registerBuiltInAgents(this.instantiationService, context, controller).disposable);
|
|
768
800
|
}
|
|
769
801
|
}
|
|
770
802
|
else {
|
|
771
803
|
defaultAgentDisposables.clear();
|
|
772
804
|
vscodeAgentDisposables.clear();
|
|
773
805
|
}
|
|
774
|
-
if (context.state.installed && !context.state.disabled) {
|
|
806
|
+
if ((context.state.installed && context.state.entitlement !== ChatEntitlement.Unknown && context.state.entitlement !== ChatEntitlement.Unresolved) && !context.state.disabled) {
|
|
775
807
|
vscodeAgentDisposables.clear();
|
|
776
808
|
}
|
|
777
809
|
};
|
|
778
810
|
this._register(Event.runAndSubscribe(context.onDidChange, () => updateRegistration()));
|
|
779
811
|
}
|
|
780
812
|
registerActions(context, requests, controller) {
|
|
781
|
-
const chatSetupTriggerContext = ( ContextKeyExpr.or(( ChatContextKeys.Setup.installed.negate()), ChatContextKeys.Entitlement.canSignUp));
|
|
782
|
-
const CHAT_SETUP_ACTION_LABEL = ( localize2(5112, "Use AI Features with Copilot for free..."));
|
|
783
813
|
class ChatSetupTriggerAction extends Action2 {
|
|
814
|
+
static { this.CHAT_SETUP_ACTION_LABEL = ( localize2(5224, "Use AI Features with Copilot for free...")); }
|
|
784
815
|
constructor() {
|
|
785
816
|
super({
|
|
786
817
|
id: CHAT_SETUP_ACTION_ID,
|
|
787
|
-
title: CHAT_SETUP_ACTION_LABEL,
|
|
818
|
+
title: ChatSetupTriggerAction.CHAT_SETUP_ACTION_LABEL,
|
|
788
819
|
category: CHAT_CATEGORY,
|
|
789
820
|
f1: true,
|
|
790
|
-
precondition:
|
|
821
|
+
precondition: ( ContextKeyExpr.or(
|
|
822
|
+
ChatContextKeys.Setup.hidden,
|
|
823
|
+
ChatContextKeys.Setup.disabled,
|
|
824
|
+
ChatContextKeys.Setup.untrusted,
|
|
825
|
+
( ChatContextKeys.Setup.installed.negate()),
|
|
826
|
+
ChatContextKeys.Entitlement.canSignUp
|
|
827
|
+
))
|
|
791
828
|
});
|
|
792
829
|
}
|
|
793
830
|
async run(accessor, mode, options) {
|
|
@@ -797,18 +834,26 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
797
834
|
const dialogService = accessor.get(IDialogService);
|
|
798
835
|
const commandService = accessor.get(ICommandService);
|
|
799
836
|
const lifecycleService = accessor.get(ILifecycleService);
|
|
837
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
800
838
|
await context.update({ hidden: false });
|
|
839
|
+
configurationService.updateValue(ChatTeardownContribution.CHAT_DISABLED_CONFIGURATION_KEY, false);
|
|
801
840
|
if (mode) {
|
|
802
841
|
const chatWidget = await showCopilotView(viewsService, layoutService);
|
|
803
842
|
chatWidget?.input.setChatMode(mode);
|
|
804
843
|
}
|
|
844
|
+
if (options?.forceNoDialog) {
|
|
845
|
+
const chatWidget = await showCopilotView(viewsService, layoutService);
|
|
846
|
+
ChatSetup.getInstance(instantiationService, context, controller).skipDialog();
|
|
847
|
+
chatWidget?.acceptInput(( localize(5225, "Set up chat.")));
|
|
848
|
+
return true;
|
|
849
|
+
}
|
|
805
850
|
const setup = ChatSetup.getInstance(instantiationService, context, controller);
|
|
806
851
|
const { success } = await setup.run(options);
|
|
807
852
|
if (success === false && !lifecycleService.willShutdown) {
|
|
808
853
|
const { confirmed } = await dialogService.confirm({
|
|
809
854
|
type: Severity.Error,
|
|
810
|
-
message: ( localize(
|
|
811
|
-
primaryButton: ( localize(
|
|
855
|
+
message: ( localize(5226, "Chat setup failed. Would you like to try again?")),
|
|
856
|
+
primaryButton: ( localize(5227, "Retry")),
|
|
812
857
|
});
|
|
813
858
|
if (confirmed) {
|
|
814
859
|
return Boolean(await commandService.executeCommand(CHAT_SETUP_ACTION_ID, mode, options));
|
|
@@ -821,7 +866,7 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
821
866
|
constructor() {
|
|
822
867
|
super({
|
|
823
868
|
id: 'workbench.action.chat.triggerSetupForceSignIn',
|
|
824
|
-
title: ( localize2(
|
|
869
|
+
title: ( localize2(5228, "Sign in to use AI features"))
|
|
825
870
|
});
|
|
826
871
|
}
|
|
827
872
|
async run(accessor) {
|
|
@@ -835,25 +880,21 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
835
880
|
constructor() {
|
|
836
881
|
super({
|
|
837
882
|
id: 'workbench.action.chat.triggerSetupWithoutDialog',
|
|
838
|
-
title: CHAT_SETUP_ACTION_LABEL
|
|
839
|
-
precondition: chatSetupTriggerContext
|
|
883
|
+
title: ChatSetupTriggerAction.CHAT_SETUP_ACTION_LABEL
|
|
840
884
|
});
|
|
841
885
|
}
|
|
842
886
|
async run(accessor) {
|
|
843
|
-
const
|
|
844
|
-
const
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
const chatWidget = await showCopilotView(viewsService, layoutService);
|
|
848
|
-
ChatSetup.getInstance(instantiationService, context, controller).skipDialog();
|
|
849
|
-
chatWidget?.acceptInput(( localize(5116, "Set up Copilot.")));
|
|
887
|
+
const commandService = accessor.get(ICommandService);
|
|
888
|
+
const telemetryService = accessor.get(ITelemetryService);
|
|
889
|
+
telemetryService.publicLog2('workbenchActionExecuted', { id: CHAT_SETUP_ACTION_ID, from: 'api' });
|
|
890
|
+
return commandService.executeCommand(CHAT_SETUP_ACTION_ID, undefined, { forceNoDialog: true });
|
|
850
891
|
}
|
|
851
892
|
}
|
|
852
893
|
class ChatSetupFromAccountsAction extends Action2 {
|
|
853
894
|
constructor() {
|
|
854
895
|
super({
|
|
855
896
|
id: 'workbench.action.chat.triggerSetupFromAccounts',
|
|
856
|
-
title: ( localize2(
|
|
897
|
+
title: ( localize2(5229, "Sign in to use AI features...")),
|
|
857
898
|
menu: {
|
|
858
899
|
id: MenuId.AccountsContext,
|
|
859
900
|
group: '2_copilot',
|
|
@@ -868,71 +909,30 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
868
909
|
return commandService.executeCommand(CHAT_SETUP_ACTION_ID);
|
|
869
910
|
}
|
|
870
911
|
}
|
|
871
|
-
class ChatSetupHideAction extends Action2 {
|
|
872
|
-
static { this.ID = 'workbench.action.chat.hideSetup'; }
|
|
873
|
-
static { this.TITLE = ( localize2(5118, "Hide AI Features")); }
|
|
874
|
-
constructor() {
|
|
875
|
-
super({
|
|
876
|
-
id: ChatSetupHideAction.ID,
|
|
877
|
-
title: ChatSetupHideAction.TITLE,
|
|
878
|
-
f1: true,
|
|
879
|
-
category: CHAT_CATEGORY,
|
|
880
|
-
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.installed.negate()), ( ChatContextKeys.Setup.hidden.negate()))),
|
|
881
|
-
menu: {
|
|
882
|
-
id: MenuId.ChatTitleBarMenu,
|
|
883
|
-
group: 'z_hide',
|
|
884
|
-
order: 1,
|
|
885
|
-
when: ( ChatContextKeys.Setup.installed.negate())
|
|
886
|
-
}
|
|
887
|
-
});
|
|
888
|
-
}
|
|
889
|
-
async run(accessor) {
|
|
890
|
-
const viewsDescriptorService = accessor.get(IViewDescriptorService);
|
|
891
|
-
const layoutService = accessor.get(IWorkbenchLayoutService);
|
|
892
|
-
const dialogService = accessor.get(IDialogService);
|
|
893
|
-
const { confirmed } = await dialogService.confirm({
|
|
894
|
-
message: ( localize(5119, "Are you sure you want to hide AI features?")),
|
|
895
|
-
detail: ( localize(
|
|
896
|
-
5120,
|
|
897
|
-
"You can restore AI features by running the '{0}' command.",
|
|
898
|
-
CHAT_SETUP_ACTION_LABEL.value
|
|
899
|
-
)),
|
|
900
|
-
primaryButton: ( localize(5121, "Hide AI Features"))
|
|
901
|
-
});
|
|
902
|
-
if (!confirmed) {
|
|
903
|
-
return;
|
|
904
|
-
}
|
|
905
|
-
const location = viewsDescriptorService.getViewLocationById(ChatViewId);
|
|
906
|
-
await context.update({ hidden: true });
|
|
907
|
-
if (location === ViewContainerLocation.AuxiliaryBar) {
|
|
908
|
-
const activeContainers = viewsDescriptorService.getViewContainersByLocation(location).filter(container => viewsDescriptorService.getViewContainerModel(container).activeViewDescriptors.length > 0);
|
|
909
|
-
if (activeContainers.length === 0) {
|
|
910
|
-
layoutService.setPartHidden(true, Parts.AUXILIARYBAR_PART);
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
912
|
const windowFocusListener = this._register(( new MutableDisposable()));
|
|
916
913
|
class UpgradePlanAction extends Action2 {
|
|
917
914
|
constructor() {
|
|
918
915
|
super({
|
|
919
916
|
id: 'workbench.action.chat.upgradePlan',
|
|
920
|
-
title: ( localize2(
|
|
921
|
-
category: ( localize2(
|
|
917
|
+
title: ( localize2(5230, "Upgrade to GitHub Copilot Pro")),
|
|
918
|
+
category: ( localize2(5231, 'Chat')),
|
|
922
919
|
f1: true,
|
|
923
|
-
precondition: ( ContextKeyExpr.
|
|
920
|
+
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ContextKeyExpr.or(
|
|
921
|
+
ChatContextKeys.Entitlement.canSignUp,
|
|
922
|
+
ChatContextKeys.Entitlement.planFree
|
|
923
|
+
)))),
|
|
924
924
|
menu: {
|
|
925
925
|
id: MenuId.ChatTitleBarMenu,
|
|
926
926
|
group: 'a_first',
|
|
927
927
|
order: 1,
|
|
928
|
-
when: ( ContextKeyExpr.and(ChatContextKeys.Entitlement.
|
|
928
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.Entitlement.planFree, ( ContextKeyExpr.or(
|
|
929
929
|
ChatContextKeys.chatQuotaExceeded,
|
|
930
930
|
ChatContextKeys.completionsQuotaExceeded
|
|
931
931
|
))))
|
|
932
932
|
}
|
|
933
933
|
});
|
|
934
934
|
}
|
|
935
|
-
async run(accessor
|
|
935
|
+
async run(accessor) {
|
|
936
936
|
const openerService = accessor.get(IOpenerService);
|
|
937
937
|
const hostService = accessor.get(IHostService);
|
|
938
938
|
const commandService = accessor.get(ICommandService);
|
|
@@ -956,22 +956,28 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
956
956
|
constructor() {
|
|
957
957
|
super({
|
|
958
958
|
id: 'workbench.action.chat.manageOverages',
|
|
959
|
-
title: ( localize2(
|
|
960
|
-
category: ( localize2(
|
|
959
|
+
title: ( localize2(5232, "Manage GitHub Copilot Overages")),
|
|
960
|
+
category: ( localize2(5231, 'Chat')),
|
|
961
961
|
f1: true,
|
|
962
|
-
precondition: ( ContextKeyExpr.
|
|
962
|
+
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ContextKeyExpr.or(
|
|
963
|
+
ChatContextKeys.Entitlement.planPro,
|
|
964
|
+
ChatContextKeys.Entitlement.planProPlus
|
|
965
|
+
)))),
|
|
963
966
|
menu: {
|
|
964
967
|
id: MenuId.ChatTitleBarMenu,
|
|
965
968
|
group: 'a_first',
|
|
966
969
|
order: 1,
|
|
967
|
-
when: ( ContextKeyExpr.and(( ContextKeyExpr.or(
|
|
970
|
+
when: ( ContextKeyExpr.and(( ContextKeyExpr.or(
|
|
971
|
+
ChatContextKeys.Entitlement.planPro,
|
|
972
|
+
ChatContextKeys.Entitlement.planProPlus
|
|
973
|
+
)), ( ContextKeyExpr.or(
|
|
968
974
|
ChatContextKeys.chatQuotaExceeded,
|
|
969
975
|
ChatContextKeys.completionsQuotaExceeded
|
|
970
976
|
))))
|
|
971
977
|
}
|
|
972
978
|
});
|
|
973
979
|
}
|
|
974
|
-
async run(accessor
|
|
980
|
+
async run(accessor) {
|
|
975
981
|
const openerService = accessor.get(IOpenerService);
|
|
976
982
|
openerService.open(( URI.parse(defaultChat.manageOveragesUrl)));
|
|
977
983
|
}
|
|
@@ -980,7 +986,6 @@ let ChatSetupContribution = class ChatSetupContribution extends Disposable {
|
|
|
980
986
|
registerAction2(ChatSetupTriggerForceSignInDialogAction);
|
|
981
987
|
registerAction2(ChatSetupFromAccountsAction);
|
|
982
988
|
registerAction2(ChatSetupTriggerWithoutDialogAction);
|
|
983
|
-
registerAction2(ChatSetupHideAction);
|
|
984
989
|
registerAction2(UpgradePlanAction);
|
|
985
990
|
registerAction2(EnableOveragesAction);
|
|
986
991
|
}
|
|
@@ -1004,8 +1009,109 @@ ChatSetupContribution = ( __decorate([
|
|
|
1004
1009
|
( __param(2, ICommandService)),
|
|
1005
1010
|
( __param(3, ITelemetryService)),
|
|
1006
1011
|
( __param(4, IChatEntitlementService)),
|
|
1007
|
-
( __param(5, ILogService))
|
|
1012
|
+
( __param(5, ILogService)),
|
|
1013
|
+
( __param(6, IContextKeyService))
|
|
1008
1014
|
], ChatSetupContribution));
|
|
1015
|
+
let ChatTeardownContribution = class ChatTeardownContribution extends Disposable {
|
|
1016
|
+
static { ChatTeardownContribution_1 = this; }
|
|
1017
|
+
static { this.ID = 'workbench.contrib.chatTeardown'; }
|
|
1018
|
+
static { this.CHAT_DISABLED_CONFIGURATION_KEY = 'chat.disableAIFeatures'; }
|
|
1019
|
+
constructor(chatEntitlementService, configurationService, extensionsWorkbenchService, extensionEnablementService, viewDescriptorService, layoutService) {
|
|
1020
|
+
super();
|
|
1021
|
+
this.configurationService = configurationService;
|
|
1022
|
+
this.extensionsWorkbenchService = extensionsWorkbenchService;
|
|
1023
|
+
this.extensionEnablementService = extensionEnablementService;
|
|
1024
|
+
this.viewDescriptorService = viewDescriptorService;
|
|
1025
|
+
this.layoutService = layoutService;
|
|
1026
|
+
const context = chatEntitlementService.context?.value;
|
|
1027
|
+
if (!context) {
|
|
1028
|
+
return;
|
|
1029
|
+
}
|
|
1030
|
+
this.registerListeners();
|
|
1031
|
+
this.registerActions();
|
|
1032
|
+
this.handleChatDisabled(false);
|
|
1033
|
+
}
|
|
1034
|
+
handleChatDisabled(fromEvent) {
|
|
1035
|
+
const chatDisabled = this.configurationService.inspect(ChatTeardownContribution_1.CHAT_DISABLED_CONFIGURATION_KEY);
|
|
1036
|
+
if (chatDisabled.value === true) {
|
|
1037
|
+
this.maybeEnableOrDisableExtension(typeof chatDisabled.workspaceValue === 'boolean' ? EnablementState.DisabledWorkspace : EnablementState.DisabledGlobally);
|
|
1038
|
+
if (fromEvent) {
|
|
1039
|
+
this.maybeHideAuxiliaryBar();
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
else if (chatDisabled.value === false && fromEvent ) {
|
|
1043
|
+
this.maybeEnableOrDisableExtension(typeof chatDisabled.workspaceValue === 'boolean' ? EnablementState.EnabledWorkspace : EnablementState.EnabledGlobally);
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
async registerListeners() {
|
|
1047
|
+
this._register(this.configurationService.onDidChangeConfiguration(e => {
|
|
1048
|
+
if (!e.affectsConfiguration(ChatTeardownContribution_1.CHAT_DISABLED_CONFIGURATION_KEY)) {
|
|
1049
|
+
return;
|
|
1050
|
+
}
|
|
1051
|
+
this.handleChatDisabled(true);
|
|
1052
|
+
}));
|
|
1053
|
+
await this.extensionsWorkbenchService.queryLocal();
|
|
1054
|
+
this._register(this.extensionsWorkbenchService.onChange(e => {
|
|
1055
|
+
if (e && !ExtensionIdentifier.equals(e.identifier.id, defaultChat.chatExtensionId)) {
|
|
1056
|
+
return;
|
|
1057
|
+
}
|
|
1058
|
+
const defaultChatExtension = this.extensionsWorkbenchService.local.find(value => ExtensionIdentifier.equals(value.identifier.id, defaultChat.chatExtensionId));
|
|
1059
|
+
if (defaultChatExtension?.local && this.extensionEnablementService.isEnabled(defaultChatExtension.local)) {
|
|
1060
|
+
this.configurationService.updateValue(ChatTeardownContribution_1.CHAT_DISABLED_CONFIGURATION_KEY, false);
|
|
1061
|
+
}
|
|
1062
|
+
}));
|
|
1063
|
+
}
|
|
1064
|
+
async maybeEnableOrDisableExtension(state) {
|
|
1065
|
+
const defaultChatExtension = this.extensionsWorkbenchService.local.find(value => ExtensionIdentifier.equals(value.identifier.id, defaultChat.chatExtensionId));
|
|
1066
|
+
if (!defaultChatExtension) {
|
|
1067
|
+
return;
|
|
1068
|
+
}
|
|
1069
|
+
await this.extensionsWorkbenchService.setEnablement([defaultChatExtension], state);
|
|
1070
|
+
await this.extensionsWorkbenchService.updateRunningExtensions(state === EnablementState.EnabledGlobally || state === EnablementState.EnabledWorkspace ? ( localize(5233, "Enabling AI features")) : ( localize(5234, "Disabling AI features")));
|
|
1071
|
+
}
|
|
1072
|
+
maybeHideAuxiliaryBar() {
|
|
1073
|
+
const activeContainers = this.viewDescriptorService.getViewContainersByLocation(ViewContainerLocation.AuxiliaryBar).filter(container => this.viewDescriptorService.getViewContainerModel(container).activeViewDescriptors.length > 0);
|
|
1074
|
+
if ((activeContainers.length === 0) ||
|
|
1075
|
+
(activeContainers.length === 1 && activeContainers.at(0)?.id === CHAT_SIDEBAR_PANEL_ID)
|
|
1076
|
+
) {
|
|
1077
|
+
this.layoutService.setPartHidden(true, Parts.AUXILIARYBAR_PART);
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
registerActions() {
|
|
1081
|
+
class ChatSetupHideAction extends Action2 {
|
|
1082
|
+
static { this.ID = 'workbench.action.chat.hideSetup'; }
|
|
1083
|
+
static { this.TITLE = ( localize2(5235, "Learn How to Hide AI Features")); }
|
|
1084
|
+
constructor() {
|
|
1085
|
+
super({
|
|
1086
|
+
id: ChatSetupHideAction.ID,
|
|
1087
|
+
title: ChatSetupHideAction.TITLE,
|
|
1088
|
+
f1: true,
|
|
1089
|
+
category: CHAT_CATEGORY,
|
|
1090
|
+
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.installed.negate()))),
|
|
1091
|
+
menu: {
|
|
1092
|
+
id: MenuId.ChatTitleBarMenu,
|
|
1093
|
+
group: 'z_hide',
|
|
1094
|
+
order: 1,
|
|
1095
|
+
when: ( ChatContextKeys.Setup.installed.negate())
|
|
1096
|
+
}
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1099
|
+
async run(accessor) {
|
|
1100
|
+
const preferencesService = accessor.get(IPreferencesService);
|
|
1101
|
+
preferencesService.openSettings({ jsonEditor: false, query: `@id:${ChatTeardownContribution_1.CHAT_DISABLED_CONFIGURATION_KEY}` });
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
registerAction2(ChatSetupHideAction);
|
|
1105
|
+
}
|
|
1106
|
+
};
|
|
1107
|
+
ChatTeardownContribution = ChatTeardownContribution_1 = ( __decorate([
|
|
1108
|
+
( __param(0, IChatEntitlementService)),
|
|
1109
|
+
( __param(1, IConfigurationService)),
|
|
1110
|
+
( __param(2, IExtensionsWorkbenchService)),
|
|
1111
|
+
( __param(3, IWorkbenchExtensionEnablementService)),
|
|
1112
|
+
( __param(4, IViewDescriptorService)),
|
|
1113
|
+
( __param(5, IWorkbenchLayoutService))
|
|
1114
|
+
], ChatTeardownContribution));
|
|
1009
1115
|
var ChatSetupStep;
|
|
1010
1116
|
(function (ChatSetupStep) {
|
|
1011
1117
|
ChatSetupStep[ChatSetupStep["Initial"] = 1] = "Initial";
|
|
@@ -1047,7 +1153,7 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1047
1153
|
}
|
|
1048
1154
|
async setup(options) {
|
|
1049
1155
|
const watch = ( new StopWatch(false));
|
|
1050
|
-
const title = ( localize(
|
|
1156
|
+
const title = ( localize(5236, "Getting chat ready..."));
|
|
1051
1157
|
const badge = this.activityService.showViewContainerActivity(CHAT_SIDEBAR_PANEL_ID, {
|
|
1052
1158
|
badge: ( new ProgressBadge(() => title)),
|
|
1053
1159
|
});
|
|
@@ -1103,12 +1209,12 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1103
1209
|
const { confirmed } = await this.dialogService.confirm({
|
|
1104
1210
|
type: Severity.Error,
|
|
1105
1211
|
message: ( localize(
|
|
1106
|
-
|
|
1212
|
+
5237,
|
|
1107
1213
|
"Failed to sign in to {0}. Would you like to try again?",
|
|
1108
1214
|
ChatEntitlementRequests.providerId(this.configurationService) === defaultChat.provider.enterprise.id ? defaultChat.provider.enterprise.name : defaultChat.provider.default.name
|
|
1109
1215
|
)),
|
|
1110
|
-
detail: ( localize(
|
|
1111
|
-
primaryButton: ( localize(
|
|
1216
|
+
detail: ( localize(5238, "You must be signed in to use AI features.")),
|
|
1217
|
+
primaryButton: ( localize(5227, "Retry"))
|
|
1112
1218
|
});
|
|
1113
1219
|
if (confirmed) {
|
|
1114
1220
|
return this.signIn(options);
|
|
@@ -1120,23 +1226,25 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1120
1226
|
const wasRunning = this.context.state.installed && !this.context.state.disabled;
|
|
1121
1227
|
let signUpResult = undefined;
|
|
1122
1228
|
const provider = options.useSocialProvider ?? options.useEnterpriseProvider ? defaultChat.provider.enterprise.id : defaultChat.provider.default.id;
|
|
1229
|
+
let sessions = session ? [session] : undefined;
|
|
1123
1230
|
try {
|
|
1124
1231
|
if (entitlement !== ChatEntitlement.Free &&
|
|
1125
1232
|
!isProUser(entitlement) &&
|
|
1126
1233
|
entitlement !== ChatEntitlement.Unavailable
|
|
1127
1234
|
) {
|
|
1128
|
-
if (!
|
|
1235
|
+
if (!sessions) {
|
|
1129
1236
|
try {
|
|
1130
|
-
|
|
1237
|
+
const existingSessions = await this.authenticationService.getSessions(providerId);
|
|
1238
|
+
sessions = existingSessions.length > 0 ? [...existingSessions] : undefined;
|
|
1131
1239
|
}
|
|
1132
1240
|
catch (error) {
|
|
1133
1241
|
}
|
|
1134
|
-
if (!
|
|
1242
|
+
if (!sessions || sessions.length === 0) {
|
|
1135
1243
|
this.telemetryService.publicLog2('commandCenter.chatInstall', { installResult: 'failedNoSession', installDuration: watch.elapsed(), signUpErrorCode: undefined, provider });
|
|
1136
1244
|
return false;
|
|
1137
1245
|
}
|
|
1138
1246
|
}
|
|
1139
|
-
signUpResult = await this.requests.signUpFree(
|
|
1247
|
+
signUpResult = await this.requests.signUpFree(sessions);
|
|
1140
1248
|
if (typeof signUpResult !== 'boolean' ) {
|
|
1141
1249
|
this.telemetryService.publicLog2('commandCenter.chatInstall', { installResult: 'failedSignUp', installDuration: watch.elapsed(), signUpErrorCode: signUpResult.errorCode, provider });
|
|
1142
1250
|
}
|
|
@@ -1170,11 +1278,11 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1170
1278
|
const { confirmed } = await this.dialogService.confirm({
|
|
1171
1279
|
type: Severity.Error,
|
|
1172
1280
|
message: ( localize(
|
|
1173
|
-
|
|
1174
|
-
"An error occurred while setting up
|
|
1281
|
+
5239,
|
|
1282
|
+
"An error occurred while setting up chat. Would you like to try again?"
|
|
1175
1283
|
)),
|
|
1176
1284
|
detail: error && !isCancellationError(error) ? toErrorMessage(error) : undefined,
|
|
1177
|
-
primaryButton: ( localize(
|
|
1285
|
+
primaryButton: ( localize(5227, "Retry"))
|
|
1178
1286
|
});
|
|
1179
1287
|
if (confirmed) {
|
|
1180
1288
|
return this.doInstallWithRetry();
|
|
@@ -1184,7 +1292,7 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1184
1292
|
}
|
|
1185
1293
|
}
|
|
1186
1294
|
async doInstall() {
|
|
1187
|
-
await this.extensionsWorkbenchService.install(defaultChat.
|
|
1295
|
+
await this.extensionsWorkbenchService.install(defaultChat.chatExtensionId, {
|
|
1188
1296
|
enable: true,
|
|
1189
1297
|
isApplicationScoped: true,
|
|
1190
1298
|
isMachineScoped: false,
|
|
@@ -1214,6 +1322,7 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1214
1322
|
if (options.useEnterpriseProvider) {
|
|
1215
1323
|
const success = await this.handleEnterpriseInstance();
|
|
1216
1324
|
if (!success) {
|
|
1325
|
+
this.telemetryService.publicLog2('commandCenter.chatInstall', { installResult: 'failedEnterpriseSetup', installDuration: 0, signUpErrorCode: undefined, provider: undefined });
|
|
1217
1326
|
return success;
|
|
1218
1327
|
}
|
|
1219
1328
|
}
|
|
@@ -1244,8 +1353,8 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1244
1353
|
}
|
|
1245
1354
|
let isSingleWord = false;
|
|
1246
1355
|
const result = await this.quickInputService.input({
|
|
1247
|
-
prompt: ( localize(
|
|
1248
|
-
placeHolder: ( localize(
|
|
1356
|
+
prompt: ( localize(5240, "What is your {0} instance?", defaultChat.provider.enterprise.name)),
|
|
1357
|
+
placeHolder: ( localize(5241, 'i.e. "octocat" or "https://octocat.ghe.com"...')),
|
|
1249
1358
|
ignoreFocusLost: true,
|
|
1250
1359
|
value: uri,
|
|
1251
1360
|
validateInput: async (value) => {
|
|
@@ -1256,14 +1365,14 @@ let ChatSetupController = class ChatSetupController extends Disposable {
|
|
|
1256
1365
|
if (domainRegEx.test(value)) {
|
|
1257
1366
|
isSingleWord = true;
|
|
1258
1367
|
return {
|
|
1259
|
-
content: ( localize(
|
|
1368
|
+
content: ( localize(5242, "Will resolve to {0}", `https://${value}.ghe.com`)),
|
|
1260
1369
|
severity: Severity.Info
|
|
1261
1370
|
};
|
|
1262
1371
|
}
|
|
1263
1372
|
if (!fullUriRegEx.test(value)) {
|
|
1264
1373
|
return {
|
|
1265
1374
|
content: ( localize(
|
|
1266
|
-
|
|
1375
|
+
5243,
|
|
1267
1376
|
'You must enter a valid {0} instance (i.e. "octocat" or "https://octocat.ghe.com")',
|
|
1268
1377
|
defaultChat.provider.enterprise.name
|
|
1269
1378
|
)),
|
|
@@ -1310,4 +1419,4 @@ function refreshTokens(commandService) {
|
|
|
1310
1419
|
commandService.executeCommand(defaultChat.chatRefreshTokenCommand);
|
|
1311
1420
|
}
|
|
1312
1421
|
|
|
1313
|
-
export { ChatSetupContribution };
|
|
1422
|
+
export { ChatSetupContribution, ChatTeardownContribution };
|