@codingame/monaco-vscode-chat-service-override 22.1.8 → 23.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 +16 -7
- package/package.json +43 -41
- package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +57 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +26 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +51 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.d.ts → chatNewActions.d.ts} +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.js → chatNewActions.js} +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +101 -98
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +43 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +33 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +154 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +347 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +250 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +97 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +290 -231
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +7 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +113 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +102 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +646 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +46 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +17 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +44 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +25 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +46 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +45 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +30 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +60 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +60 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +29 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +365 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +58 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +6 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +38 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +11 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +83 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +91 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +64 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +370 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +61 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +787 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +122 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +211 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css +69 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +21 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +54 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +31 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +16 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +29 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +37 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +96 -131
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +66 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +77 -71
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +91 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +458 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +212 -150
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +96 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +15 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +33 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +688 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +15 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +126 -135
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditorController.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +38 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +24 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +15 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +89 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +30 -29
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +10 -19
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +61 -43
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +254 -165
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +10 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +13 -17
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +51 -21
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +74 -20
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +11 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +83 -53
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +136 -78
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +18 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +357 -157
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +55 -28
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +235 -108
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +50 -4
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +11 -7
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +12 -14
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +18 -30
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +62 -139
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +16 -15
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +119 -15
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +6 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +192 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +21 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +8 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +18 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +18 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +24 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +33 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +42 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +14 -21
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +227 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +133 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +75 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +71 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +28 -15
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +366 -363
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +18 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +123 -0
- package/vscode/src/vs/base/common/yaml.d.ts +0 -74
- package/vscode/src/vs/base/common/yaml.js +0 -597
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +0 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +0 -239
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +0 -102
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +0 -435
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.d.ts +0 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +0 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +0 -49
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +0 -380
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.d.ts +0 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.js +0 -137
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +0 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +0 -176
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.d.ts +0 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +0 -206
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +0 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +0 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +0 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +0 -65
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +0 -306
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +0 -102
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.d.ts +0 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.js +0 -247
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +0 -118
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +0 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +0 -66
|
@@ -1,81 +1,189 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { sep } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
4
|
+
import { raceCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
3
5
|
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
4
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
5
7
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
6
|
-
import {
|
|
8
|
+
import { Disposable, DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
|
+
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
10
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
11
|
+
import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
12
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
13
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
7
14
|
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
8
15
|
import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
9
|
-
import {
|
|
16
|
+
import { MenuId, MenuItemAction, MenuRegistry, registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
17
|
+
import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
|
|
10
18
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
11
19
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
12
20
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
|
|
21
|
+
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
13
22
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
23
|
+
import { isDark } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/theme';
|
|
24
|
+
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
14
25
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
15
26
|
import { isProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
|
|
16
27
|
import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
17
28
|
import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
|
|
18
|
-
import { ChatEditorInput } from '@codingame/monaco-vscode-
|
|
29
|
+
import { ChatEditorInput } from '@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/browser/chatEditorInput';
|
|
19
30
|
import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
|
|
20
31
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
|
|
21
|
-
import { ChatSessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
|
|
32
|
+
import { localChatSessionType, ChatSessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
|
|
22
33
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import { NEW_CHAT_SESSION_ACTION_ID } from './chatSessions/common.js';
|
|
34
|
+
import { AGENT_SESSIONS_VIEWLET_ID, ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
35
|
+
import { CHAT_CATEGORY } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
|
|
36
|
+
import { NEW_CHAT_SESSION_ACTION_ID } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/browser/chatSessions/common';
|
|
27
37
|
|
|
28
38
|
const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
29
39
|
extensionPoint: 'chatSessions',
|
|
30
40
|
jsonSchema: {
|
|
31
|
-
description: ( localize(
|
|
41
|
+
description: ( localize(5366, 'Contributes chat session integrations to the chat widget.')),
|
|
32
42
|
type: 'array',
|
|
33
43
|
items: {
|
|
34
44
|
type: 'object',
|
|
45
|
+
additionalProperties: false,
|
|
35
46
|
properties: {
|
|
36
47
|
type: {
|
|
37
|
-
description: ( localize(
|
|
48
|
+
description: ( localize(5367, 'Unique identifier for the type of chat session.')),
|
|
38
49
|
type: 'string',
|
|
39
50
|
},
|
|
40
51
|
name: {
|
|
41
|
-
description: ( localize(
|
|
52
|
+
description: ( localize(
|
|
53
|
+
5368,
|
|
54
|
+
'Name of the dynamically registered chat participant (eg: @agent). Must not contain whitespace.'
|
|
55
|
+
)),
|
|
42
56
|
type: 'string',
|
|
57
|
+
pattern: '^[\\w-]+$'
|
|
43
58
|
},
|
|
44
59
|
displayName: {
|
|
45
|
-
description: ( localize(
|
|
60
|
+
description: ( localize(5369, 'A longer name for this item which is used for display in menus.')),
|
|
46
61
|
type: 'string',
|
|
47
62
|
},
|
|
48
63
|
description: {
|
|
49
|
-
description: ( localize(
|
|
64
|
+
description: ( localize(5370, 'Description of the chat session for use in menus and tooltips.')),
|
|
50
65
|
type: 'string'
|
|
51
66
|
},
|
|
52
67
|
when: {
|
|
53
|
-
description: ( localize(
|
|
68
|
+
description: ( localize(5371, 'Condition which must be true to show this item.')),
|
|
69
|
+
type: 'string'
|
|
70
|
+
},
|
|
71
|
+
icon: {
|
|
72
|
+
description: ( localize(
|
|
73
|
+
5372,
|
|
74
|
+
'Icon identifier (codicon ID) for the chat session editor tab. For example, "$(github)" or "$(cloud)".'
|
|
75
|
+
)),
|
|
76
|
+
anyOf: [{
|
|
77
|
+
type: 'string'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'object',
|
|
81
|
+
properties: {
|
|
82
|
+
light: {
|
|
83
|
+
description: ( localize(5373, 'Icon path when a light theme is used')),
|
|
84
|
+
type: 'string'
|
|
85
|
+
},
|
|
86
|
+
dark: {
|
|
87
|
+
description: ( localize(5374, 'Icon path when a dark theme is used')),
|
|
88
|
+
type: 'string'
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}]
|
|
92
|
+
},
|
|
93
|
+
order: {
|
|
94
|
+
description: ( localize(5375, 'Order in which this item should be displayed.')),
|
|
95
|
+
type: 'integer'
|
|
96
|
+
},
|
|
97
|
+
alternativeIds: {
|
|
98
|
+
description: ( localize(5376, 'Alternative identifiers for backward compatibility.')),
|
|
99
|
+
type: 'array',
|
|
100
|
+
items: {
|
|
101
|
+
type: 'string'
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
welcomeTitle: {
|
|
105
|
+
description: ( localize(
|
|
106
|
+
5377,
|
|
107
|
+
'Title text to display in the chat welcome view for this session type.'
|
|
108
|
+
)),
|
|
109
|
+
type: 'string'
|
|
110
|
+
},
|
|
111
|
+
welcomeMessage: {
|
|
112
|
+
description: ( localize(
|
|
113
|
+
5378,
|
|
114
|
+
'Message text (supports markdown) to display in the chat welcome view for this session type.'
|
|
115
|
+
)),
|
|
116
|
+
type: 'string'
|
|
117
|
+
},
|
|
118
|
+
welcomeTips: {
|
|
119
|
+
description: ( localize(
|
|
120
|
+
5379,
|
|
121
|
+
'Tips text (supports markdown and theme icons) to display in the chat welcome view for this session type.'
|
|
122
|
+
)),
|
|
123
|
+
type: 'string'
|
|
124
|
+
},
|
|
125
|
+
inputPlaceholder: {
|
|
126
|
+
description: ( localize(
|
|
127
|
+
5380,
|
|
128
|
+
'Placeholder text to display in the chat input box for this session type.'
|
|
129
|
+
)),
|
|
54
130
|
type: 'string'
|
|
55
131
|
},
|
|
56
132
|
capabilities: {
|
|
57
|
-
description: ( localize(
|
|
133
|
+
description: ( localize(5381, 'Optional capabilities for this chat session.')),
|
|
58
134
|
type: 'object',
|
|
135
|
+
additionalProperties: false,
|
|
59
136
|
properties: {
|
|
60
137
|
supportsFileAttachments: {
|
|
61
138
|
description: ( localize(
|
|
62
|
-
|
|
139
|
+
5382,
|
|
63
140
|
'Whether this chat session supports attaching files or file references.'
|
|
64
141
|
)),
|
|
65
142
|
type: 'boolean'
|
|
66
143
|
},
|
|
67
144
|
supportsToolAttachments: {
|
|
68
145
|
description: ( localize(
|
|
69
|
-
|
|
146
|
+
5383,
|
|
70
147
|
'Whether this chat session supports attaching tools or tool references.'
|
|
71
148
|
)),
|
|
72
149
|
type: 'boolean'
|
|
150
|
+
},
|
|
151
|
+
supportsMCPAttachments: {
|
|
152
|
+
description: ( localize(5384, 'Whether this chat session supports attaching MCP resources.')),
|
|
153
|
+
type: 'boolean'
|
|
154
|
+
},
|
|
155
|
+
supportsImageAttachments: {
|
|
156
|
+
description: ( localize(5385, 'Whether this chat session supports attaching images.')),
|
|
157
|
+
type: 'boolean'
|
|
158
|
+
},
|
|
159
|
+
supportsSearchResultAttachments: {
|
|
160
|
+
description: ( localize(5386, 'Whether this chat session supports attaching search results.')),
|
|
161
|
+
type: 'boolean'
|
|
162
|
+
},
|
|
163
|
+
supportsInstructionAttachments: {
|
|
164
|
+
description: ( localize(5387, 'Whether this chat session supports attaching instructions.')),
|
|
165
|
+
type: 'boolean'
|
|
166
|
+
},
|
|
167
|
+
supportsSourceControlAttachments: {
|
|
168
|
+
description: ( localize(
|
|
169
|
+
5388,
|
|
170
|
+
'Whether this chat session supports attaching source control changes.'
|
|
171
|
+
)),
|
|
172
|
+
type: 'boolean'
|
|
173
|
+
},
|
|
174
|
+
supportsProblemAttachments: {
|
|
175
|
+
description: ( localize(5389, 'Whether this chat session supports attaching problems.')),
|
|
176
|
+
type: 'boolean'
|
|
177
|
+
},
|
|
178
|
+
supportsSymbolAttachments: {
|
|
179
|
+
description: ( localize(5390, 'Whether this chat session supports attaching symbols.')),
|
|
180
|
+
type: 'boolean'
|
|
73
181
|
}
|
|
74
182
|
}
|
|
75
183
|
},
|
|
76
184
|
commands: {
|
|
77
185
|
markdownDescription: ( localize(
|
|
78
|
-
|
|
186
|
+
5391,
|
|
79
187
|
"Commands available for this chat session, which the user can invoke with a `/`."
|
|
80
188
|
)),
|
|
81
189
|
type: 'array',
|
|
@@ -87,17 +195,17 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
87
195
|
properties: {
|
|
88
196
|
name: {
|
|
89
197
|
description: ( localize(
|
|
90
|
-
|
|
198
|
+
5392,
|
|
91
199
|
"A short name by which this command is referred to in the UI, e.g. `fix` or `explain` for commands that fix an issue or explain code. The name should be unique among the commands provided by this participant."
|
|
92
200
|
)),
|
|
93
201
|
type: 'string'
|
|
94
202
|
},
|
|
95
203
|
description: {
|
|
96
|
-
description: ( localize(
|
|
204
|
+
description: ( localize(5393, "A description of this command.")),
|
|
97
205
|
type: 'string'
|
|
98
206
|
},
|
|
99
207
|
when: {
|
|
100
|
-
description: ( localize(
|
|
208
|
+
description: ( localize(5394, "A condition which must be true to enable this command.")),
|
|
101
209
|
type: 'string'
|
|
102
210
|
},
|
|
103
211
|
}
|
|
@@ -113,44 +221,66 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
113
221
|
}
|
|
114
222
|
}
|
|
115
223
|
});
|
|
116
|
-
class ContributedChatSessionData {
|
|
117
|
-
|
|
224
|
+
class ContributedChatSessionData extends Disposable {
|
|
225
|
+
getOption(optionId) {
|
|
226
|
+
return this._optionsCache.get(optionId);
|
|
227
|
+
}
|
|
228
|
+
setOption(optionId, value) {
|
|
229
|
+
this._optionsCache.set(optionId, value);
|
|
230
|
+
}
|
|
231
|
+
constructor(session, chatSessionType, resource, options, onWillDispose) {
|
|
232
|
+
super();
|
|
118
233
|
this.session = session;
|
|
119
234
|
this.chatSessionType = chatSessionType;
|
|
120
|
-
this.
|
|
235
|
+
this.resource = resource;
|
|
236
|
+
this.options = options;
|
|
121
237
|
this.onWillDispose = onWillDispose;
|
|
122
|
-
this.
|
|
123
|
-
|
|
124
|
-
|
|
238
|
+
this._optionsCache = ( new Map());
|
|
239
|
+
if (options) {
|
|
240
|
+
for (const [key, value] of Object.entries(options)) {
|
|
241
|
+
this._optionsCache.set(key, value);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
this._register(this.session.onWillDispose(() => {
|
|
245
|
+
this.onWillDispose(this.resource);
|
|
125
246
|
}));
|
|
126
247
|
}
|
|
127
|
-
dispose() {
|
|
128
|
-
this._disposableStore.dispose();
|
|
129
|
-
}
|
|
130
248
|
}
|
|
131
249
|
let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
132
250
|
get onDidChangeInProgress() { return this._onDidChangeInProgress.event; }
|
|
133
|
-
|
|
251
|
+
get onDidChangeContentProviderSchemes() { return this._onDidChangeContentProviderSchemes.event; }
|
|
252
|
+
constructor(_logService, _chatAgentService, _extensionService, _contextKeyService, _menuService, _themeService, _labelService) {
|
|
134
253
|
super();
|
|
135
254
|
this._logService = _logService;
|
|
136
255
|
this._chatAgentService = _chatAgentService;
|
|
137
256
|
this._extensionService = _extensionService;
|
|
138
257
|
this._contextKeyService = _contextKeyService;
|
|
258
|
+
this._menuService = _menuService;
|
|
259
|
+
this._themeService = _themeService;
|
|
260
|
+
this._labelService = _labelService;
|
|
139
261
|
this._itemsProviders = ( new Map());
|
|
140
|
-
this._onDidChangeItemsProviders = this._register(( new Emitter()));
|
|
141
|
-
this.onDidChangeItemsProviders = this._onDidChangeItemsProviders.event;
|
|
142
|
-
this._contentProviders = ( new Map());
|
|
143
262
|
this._contributions = ( new Map());
|
|
144
|
-
this.
|
|
263
|
+
this._contributionDisposables = this._register(( new DisposableMap()));
|
|
264
|
+
this._contentProviders = ( new Map());
|
|
265
|
+
this._alternativeIdMap = ( new Map());
|
|
145
266
|
this._contextKeys = ( new Set());
|
|
267
|
+
this._onDidChangeItemsProviders = this._register(( new Emitter()));
|
|
268
|
+
this.onDidChangeItemsProviders = this._onDidChangeItemsProviders.event;
|
|
146
269
|
this._onDidChangeSessionItems = this._register(( new Emitter()));
|
|
147
270
|
this.onDidChangeSessionItems = this._onDidChangeSessionItems.event;
|
|
148
271
|
this._onDidChangeAvailability = this._register(( new Emitter()));
|
|
149
272
|
this.onDidChangeAvailability = this._onDidChangeAvailability.event;
|
|
150
273
|
this._onDidChangeInProgress = this._register(( new Emitter()));
|
|
274
|
+
this._onDidChangeContentProviderSchemes = this._register(( new Emitter()));
|
|
151
275
|
this.inProgressMap = ( new Map());
|
|
152
|
-
this.
|
|
153
|
-
this.
|
|
276
|
+
this._sessionTypeOptions = ( new Map());
|
|
277
|
+
this._sessionTypeIcons = ( new Map());
|
|
278
|
+
this._sessionTypeWelcomeTitles = ( new Map());
|
|
279
|
+
this._sessionTypeWelcomeMessages = ( new Map());
|
|
280
|
+
this._sessionTypeWelcomeTips = ( new Map());
|
|
281
|
+
this._sessionTypeInputPlaceholders = ( new Map());
|
|
282
|
+
this._sessions = ( new ResourceMap());
|
|
283
|
+
this._editableSessions = ( new ResourceMap());
|
|
154
284
|
this._register(extensionPoint.setHandler(extensions => {
|
|
155
285
|
for (const ext of extensions) {
|
|
156
286
|
if (!isProposedApiEnabled(ext.description, 'chatSessionsProvider')) {
|
|
@@ -160,17 +290,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
160
290
|
continue;
|
|
161
291
|
}
|
|
162
292
|
for (const contribution of ext.value) {
|
|
163
|
-
|
|
164
|
-
type: contribution.type,
|
|
165
|
-
name: contribution.name,
|
|
166
|
-
displayName: contribution.displayName,
|
|
167
|
-
description: contribution.description,
|
|
168
|
-
when: contribution.when,
|
|
169
|
-
capabilities: contribution.capabilities,
|
|
170
|
-
extensionDescription: ext.description,
|
|
171
|
-
commands: contribution.commands
|
|
172
|
-
};
|
|
173
|
-
this._register(this.registerContribution(c));
|
|
293
|
+
this._register(this.registerContribution(contribution, ext.description));
|
|
174
294
|
}
|
|
175
295
|
}
|
|
176
296
|
}));
|
|
@@ -182,14 +302,22 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
182
302
|
this._logService.warn(`Failed to update progress status for '${chatSessionType}':`, error);
|
|
183
303
|
});
|
|
184
304
|
}));
|
|
305
|
+
this._register(this._labelService.registerFormatter({
|
|
306
|
+
scheme: Schemas.copilotPr,
|
|
307
|
+
formatting: {
|
|
308
|
+
label: '${authority}${path}',
|
|
309
|
+
separator: sep,
|
|
310
|
+
stripPathStartingSeparator: true,
|
|
311
|
+
}
|
|
312
|
+
}));
|
|
185
313
|
}
|
|
186
314
|
reportInProgress(chatSessionType, count) {
|
|
187
315
|
let displayName;
|
|
188
|
-
if (chatSessionType ===
|
|
189
|
-
displayName = 'Local Chat
|
|
316
|
+
if (chatSessionType === localChatSessionType) {
|
|
317
|
+
displayName = 'Local Chat Agent';
|
|
190
318
|
}
|
|
191
319
|
else {
|
|
192
|
-
displayName = this._contributions.get(chatSessionType)?.displayName;
|
|
320
|
+
displayName = this._contributions.get(chatSessionType)?.contribution.displayName;
|
|
193
321
|
}
|
|
194
322
|
if (displayName) {
|
|
195
323
|
this.inProgressMap.set(displayName, count);
|
|
@@ -201,7 +329,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
201
329
|
}
|
|
202
330
|
async updateInProgressStatus(chatSessionType) {
|
|
203
331
|
try {
|
|
204
|
-
const items = await this.
|
|
332
|
+
const items = await this.getChatSessionItems(chatSessionType, CancellationToken.None);
|
|
205
333
|
const inProgress = items.filter(item => item.status === ChatSessionStatus.InProgress);
|
|
206
334
|
this.reportInProgress(chatSessionType, inProgress.length);
|
|
207
335
|
}
|
|
@@ -209,7 +337,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
209
337
|
this._logService.warn(`Failed to update in-progress status for chat session type '${chatSessionType}':`, error);
|
|
210
338
|
}
|
|
211
339
|
}
|
|
212
|
-
registerContribution(contribution) {
|
|
340
|
+
registerContribution(contribution, ext) {
|
|
213
341
|
if (( this._contributions.has(contribution.type))) {
|
|
214
342
|
this._logService.warn(`Chat session contribution with id '${contribution.type}' is already registered.`);
|
|
215
343
|
return { dispose: () => { } };
|
|
@@ -222,16 +350,61 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
222
350
|
}
|
|
223
351
|
}
|
|
224
352
|
}
|
|
225
|
-
this._contributions.set(contribution.type, contribution);
|
|
353
|
+
this._contributions.set(contribution.type, { contribution, extension: ext });
|
|
354
|
+
if (contribution.alternativeIds) {
|
|
355
|
+
for (const altId of contribution.alternativeIds) {
|
|
356
|
+
if (( this._alternativeIdMap.has(altId))) {
|
|
357
|
+
this._logService.warn(`Alternative ID '${altId}' is already mapped to '${this._alternativeIdMap.get(altId)}'. Remapping to '${contribution.type}'.`);
|
|
358
|
+
}
|
|
359
|
+
this._alternativeIdMap.set(altId, contribution.type);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
let icon;
|
|
363
|
+
if (contribution.icon) {
|
|
364
|
+
if (typeof contribution.icon === 'string') {
|
|
365
|
+
icon = contribution.icon.startsWith('$(') && contribution.icon.endsWith(')')
|
|
366
|
+
? ThemeIcon.fromString(contribution.icon)
|
|
367
|
+
: ThemeIcon.fromId(contribution.icon);
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
icon = {
|
|
371
|
+
dark: joinPath(ext.extensionLocation, contribution.icon.dark),
|
|
372
|
+
light: joinPath(ext.extensionLocation, contribution.icon.light)
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (icon) {
|
|
377
|
+
this._sessionTypeIcons.set(contribution.type, icon);
|
|
378
|
+
}
|
|
379
|
+
if (contribution.welcomeTitle) {
|
|
380
|
+
this._sessionTypeWelcomeTitles.set(contribution.type, contribution.welcomeTitle);
|
|
381
|
+
}
|
|
382
|
+
if (contribution.welcomeMessage) {
|
|
383
|
+
this._sessionTypeWelcomeMessages.set(contribution.type, contribution.welcomeMessage);
|
|
384
|
+
}
|
|
385
|
+
if (contribution.welcomeTips) {
|
|
386
|
+
this._sessionTypeWelcomeTips.set(contribution.type, contribution.welcomeTips);
|
|
387
|
+
}
|
|
388
|
+
if (contribution.inputPlaceholder) {
|
|
389
|
+
this._sessionTypeInputPlaceholders.set(contribution.type, contribution.inputPlaceholder);
|
|
390
|
+
}
|
|
226
391
|
this._evaluateAvailability();
|
|
227
392
|
return {
|
|
228
393
|
dispose: () => {
|
|
229
394
|
this._contributions.delete(contribution.type);
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
395
|
+
if (contribution.alternativeIds) {
|
|
396
|
+
for (const altId of contribution.alternativeIds) {
|
|
397
|
+
if (this._alternativeIdMap.get(altId) === contribution.type) {
|
|
398
|
+
this._alternativeIdMap.delete(altId);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
234
401
|
}
|
|
402
|
+
this._sessionTypeIcons.delete(contribution.type);
|
|
403
|
+
this._sessionTypeWelcomeTitles.delete(contribution.type);
|
|
404
|
+
this._sessionTypeWelcomeMessages.delete(contribution.type);
|
|
405
|
+
this._sessionTypeWelcomeTips.delete(contribution.type);
|
|
406
|
+
this._sessionTypeInputPlaceholders.delete(contribution.type);
|
|
407
|
+
this._contributionDisposables.deleteAndDispose(contribution.type);
|
|
235
408
|
}
|
|
236
409
|
};
|
|
237
410
|
}
|
|
@@ -242,28 +415,77 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
242
415
|
const whenExpr = ContextKeyExpr.deserialize(contribution.when);
|
|
243
416
|
return !whenExpr || this._contextKeyService.contextMatchesRules(whenExpr);
|
|
244
417
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
418
|
+
_resolveToPrimaryType(sessionType) {
|
|
419
|
+
const contribution = this._contributions.get(sessionType)?.contribution;
|
|
420
|
+
if (contribution) {
|
|
421
|
+
if (this._isContributionAvailable(contribution)) {
|
|
422
|
+
return sessionType;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
const primaryType = this._alternativeIdMap.get(sessionType);
|
|
426
|
+
if (primaryType) {
|
|
427
|
+
const altContribution = this._contributions.get(primaryType)?.contribution;
|
|
428
|
+
if (altContribution && this._isContributionAvailable(altContribution)) {
|
|
429
|
+
this._logService.info(`Resolving chat session type '${sessionType}' to alternative type '${primaryType}'`);
|
|
430
|
+
return primaryType;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return undefined;
|
|
434
|
+
}
|
|
435
|
+
_registerMenuItems(contribution, extensionDescription) {
|
|
436
|
+
const contextKeyService = this._contextKeyService.createOverlay([
|
|
437
|
+
['chatSessionType', contribution.type]
|
|
438
|
+
]);
|
|
439
|
+
const rawMenuActions = this._menuService.getMenuActions(MenuId.ChatSessionsCreateSubMenu, contextKeyService);
|
|
440
|
+
const menuActions = ( rawMenuActions.map(value => value[1])).flat();
|
|
441
|
+
const whenClause = ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', `${AGENT_SESSIONS_VIEWLET_ID}.${contribution.type}`))));
|
|
442
|
+
if (menuActions.length === 1) {
|
|
443
|
+
const first = menuActions[0];
|
|
444
|
+
if (first instanceof MenuItemAction) {
|
|
445
|
+
return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
|
|
446
|
+
group: 'navigation',
|
|
447
|
+
title: first.label,
|
|
448
|
+
icon: Codicon.plus,
|
|
449
|
+
order: 1,
|
|
450
|
+
when: whenClause,
|
|
451
|
+
command: first.item,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
if (menuActions.length) {
|
|
456
|
+
return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
|
|
457
|
+
group: 'navigation',
|
|
458
|
+
title: ( localize(5395, "Create chat session")),
|
|
250
459
|
icon: Codicon.plus,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
460
|
+
order: 1,
|
|
461
|
+
when: whenClause,
|
|
462
|
+
submenu: MenuId.ChatSessionsCreateSubMenu,
|
|
463
|
+
isSplitButton: menuActions.length > 1
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
|
|
468
|
+
command: {
|
|
469
|
+
id: `${NEW_CHAT_SESSION_ACTION_ID}.${contribution.type}`,
|
|
470
|
+
title: ( localize(5396, "New {0}", contribution.displayName)),
|
|
471
|
+
icon: Codicon.plus,
|
|
472
|
+
source: {
|
|
473
|
+
id: extensionDescription.identifier.value,
|
|
474
|
+
title: extensionDescription.displayName || extensionDescription.name,
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
group: 'navigation',
|
|
478
|
+
order: 1,
|
|
479
|
+
when: whenClause,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
260
482
|
}
|
|
261
483
|
_registerCommands(contribution) {
|
|
262
484
|
return registerAction2(class OpenNewChatSessionEditorAction extends Action2 {
|
|
263
485
|
constructor() {
|
|
264
486
|
super({
|
|
265
487
|
id: `workbench.action.chat.openNewSessionEditor.${contribution.type}`,
|
|
266
|
-
title: ( localize2(
|
|
488
|
+
title: ( localize2(5396, "New {0}", contribution.displayName)),
|
|
267
489
|
category: CHAT_CATEGORY,
|
|
268
490
|
icon: Codicon.plus,
|
|
269
491
|
f1: true,
|
|
@@ -278,12 +500,15 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
278
500
|
const options = {
|
|
279
501
|
override: ChatEditorInput.EditorID,
|
|
280
502
|
pinned: true,
|
|
503
|
+
title: {
|
|
504
|
+
fallback: ( localize(5397, "{0}", contribution.displayName)),
|
|
505
|
+
}
|
|
281
506
|
};
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
});
|
|
507
|
+
const resource = ( URI.from({
|
|
508
|
+
scheme: type,
|
|
509
|
+
path: `/untitled-${generateUuid()}`,
|
|
510
|
+
}));
|
|
511
|
+
await editorService.openEditor({ resource, options });
|
|
287
512
|
}
|
|
288
513
|
catch (e) {
|
|
289
514
|
logService.error(`Failed to open new '${type}' chat session editor`, e);
|
|
@@ -293,20 +518,16 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
293
518
|
}
|
|
294
519
|
_evaluateAvailability() {
|
|
295
520
|
let hasChanges = false;
|
|
296
|
-
for (const contribution of ( this._contributions.values())) {
|
|
297
|
-
const isCurrentlyRegistered = ( this.
|
|
521
|
+
for (const { contribution, extension } of ( this._contributions.values())) {
|
|
522
|
+
const isCurrentlyRegistered = ( this._contributionDisposables.has(contribution.type));
|
|
298
523
|
const shouldBeRegistered = this._isContributionAvailable(contribution);
|
|
299
524
|
if (isCurrentlyRegistered && !shouldBeRegistered) {
|
|
300
|
-
|
|
301
|
-
if (store) {
|
|
302
|
-
store.dispose();
|
|
303
|
-
this._disposableStores.delete(contribution.type);
|
|
304
|
-
}
|
|
525
|
+
this._contributionDisposables.deleteAndDispose(contribution.type);
|
|
305
526
|
this._disposeSessionsForContribution(contribution.type);
|
|
306
527
|
hasChanges = true;
|
|
307
528
|
}
|
|
308
529
|
else if (!isCurrentlyRegistered && shouldBeRegistered) {
|
|
309
|
-
this._enableContribution(contribution);
|
|
530
|
+
this._enableContribution(contribution, extension);
|
|
310
531
|
hasChanges = true;
|
|
311
532
|
}
|
|
312
533
|
}
|
|
@@ -315,23 +536,23 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
315
536
|
for (const provider of ( this._itemsProviders.values())) {
|
|
316
537
|
this._onDidChangeItemsProviders.fire(provider);
|
|
317
538
|
}
|
|
318
|
-
for (const contribution of ( this._contributions.values())) {
|
|
539
|
+
for (const { contribution } of ( this._contributions.values())) {
|
|
319
540
|
this._onDidChangeSessionItems.fire(contribution.type);
|
|
320
541
|
}
|
|
321
542
|
}
|
|
322
543
|
}
|
|
323
|
-
_enableContribution(contribution) {
|
|
544
|
+
_enableContribution(contribution, ext) {
|
|
324
545
|
const disposableStore = ( new DisposableStore());
|
|
325
|
-
this.
|
|
326
|
-
disposableStore.add(this._registerAgent(contribution));
|
|
546
|
+
this._contributionDisposables.set(contribution.type, disposableStore);
|
|
547
|
+
disposableStore.add(this._registerAgent(contribution, ext));
|
|
327
548
|
disposableStore.add(this._registerCommands(contribution));
|
|
328
|
-
disposableStore.add(this._registerMenuItems(contribution));
|
|
549
|
+
disposableStore.add(this._registerMenuItems(contribution, ext));
|
|
329
550
|
}
|
|
330
551
|
_disposeSessionsForContribution(contributionId) {
|
|
331
552
|
const sessionsToDispose = [];
|
|
332
|
-
for (const [
|
|
553
|
+
for (const [sessionResource, sessionData] of this._sessions) {
|
|
333
554
|
if (sessionData.chatSessionType === contributionId) {
|
|
334
|
-
sessionsToDispose.push(
|
|
555
|
+
sessionsToDispose.push(sessionResource);
|
|
335
556
|
}
|
|
336
557
|
}
|
|
337
558
|
if (sessionsToDispose.length > 0) {
|
|
@@ -344,9 +565,8 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
344
565
|
}
|
|
345
566
|
}
|
|
346
567
|
}
|
|
347
|
-
_registerAgent(contribution) {
|
|
348
|
-
const { type: id, name, displayName, description
|
|
349
|
-
const { identifier: extensionId, name: extensionName, displayName: extensionDisplayName, publisher: extensionPublisherId } = extensionDescription;
|
|
568
|
+
_registerAgent(contribution, ext) {
|
|
569
|
+
const { type: id, name, displayName, description } = contribution;
|
|
350
570
|
const agentData = {
|
|
351
571
|
id,
|
|
352
572
|
name,
|
|
@@ -364,25 +584,30 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
364
584
|
isSticky: false,
|
|
365
585
|
},
|
|
366
586
|
capabilities: contribution.capabilities,
|
|
367
|
-
extensionId,
|
|
368
|
-
extensionVersion:
|
|
369
|
-
extensionDisplayName:
|
|
370
|
-
extensionPublisherId,
|
|
587
|
+
extensionId: ext.identifier,
|
|
588
|
+
extensionVersion: ext.version,
|
|
589
|
+
extensionDisplayName: ext.displayName || ext.name,
|
|
590
|
+
extensionPublisherId: ext.publisher,
|
|
371
591
|
};
|
|
372
592
|
return this._chatAgentService.registerAgent(id, agentData);
|
|
373
593
|
}
|
|
374
594
|
getAllChatSessionContributions() {
|
|
375
|
-
return Array.from(( this._contributions.values())
|
|
595
|
+
return Array.from(( this._contributions.values()), x => x.contribution)
|
|
596
|
+
.filter(contribution => this._isContributionAvailable(contribution));
|
|
376
597
|
}
|
|
377
598
|
getAllChatSessionItemProviders() {
|
|
378
599
|
return [...( this._itemsProviders.values())].filter(provider => {
|
|
379
|
-
const contribution = this._contributions.get(provider.chatSessionType);
|
|
600
|
+
const contribution = this._contributions.get(provider.chatSessionType)?.contribution;
|
|
380
601
|
return !contribution || this._isContributionAvailable(contribution);
|
|
381
602
|
});
|
|
382
603
|
}
|
|
383
|
-
async
|
|
604
|
+
async hasChatSessionItemProvider(chatViewType) {
|
|
384
605
|
await this._extensionService.whenInstalledExtensionsRegistered();
|
|
385
|
-
const
|
|
606
|
+
const resolvedType = this._resolveToPrimaryType(chatViewType);
|
|
607
|
+
if (resolvedType) {
|
|
608
|
+
chatViewType = resolvedType;
|
|
609
|
+
}
|
|
610
|
+
const contribution = this._contributions.get(chatViewType)?.contribution;
|
|
386
611
|
if (contribution && !this._isContributionAvailable(contribution)) {
|
|
387
612
|
return false;
|
|
388
613
|
}
|
|
@@ -392,22 +617,35 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
392
617
|
await this._extensionService.activateByEvent(`onChatSession:${chatViewType}`);
|
|
393
618
|
return ( this._itemsProviders.has(chatViewType));
|
|
394
619
|
}
|
|
395
|
-
async
|
|
620
|
+
async canResolveChatSession(chatSessionResource) {
|
|
396
621
|
await this._extensionService.whenInstalledExtensionsRegistered();
|
|
397
|
-
const
|
|
622
|
+
const resolvedType = this._resolveToPrimaryType(chatSessionResource.scheme) || chatSessionResource.scheme;
|
|
623
|
+
const contribution = this._contributions.get(resolvedType)?.contribution;
|
|
398
624
|
if (contribution && !this._isContributionAvailable(contribution)) {
|
|
399
625
|
return false;
|
|
400
626
|
}
|
|
401
|
-
if (( this._contentProviders.has(
|
|
627
|
+
if (( this._contentProviders.has(chatSessionResource.scheme))) {
|
|
402
628
|
return true;
|
|
403
629
|
}
|
|
404
|
-
await this._extensionService.activateByEvent(`onChatSession:${
|
|
405
|
-
return ( this._contentProviders.has(
|
|
630
|
+
await this._extensionService.activateByEvent(`onChatSession:${chatSessionResource.scheme}`);
|
|
631
|
+
return ( this._contentProviders.has(chatSessionResource.scheme));
|
|
406
632
|
}
|
|
407
|
-
async
|
|
408
|
-
|
|
633
|
+
async getAllChatSessionItems(token) {
|
|
634
|
+
return Promise.all(Array.from(this.getAllChatSessionContributions(), async (contrib) => {
|
|
635
|
+
return {
|
|
636
|
+
chatSessionType: contrib.type,
|
|
637
|
+
items: await this.getChatSessionItems(contrib.type, token)
|
|
638
|
+
};
|
|
639
|
+
}));
|
|
640
|
+
}
|
|
641
|
+
async getChatSessionItems(chatSessionType, token) {
|
|
642
|
+
if (!(await this.hasChatSessionItemProvider(chatSessionType))) {
|
|
409
643
|
return [];
|
|
410
644
|
}
|
|
645
|
+
const resolvedType = this._resolveToPrimaryType(chatSessionType);
|
|
646
|
+
if (resolvedType) {
|
|
647
|
+
chatSessionType = resolvedType;
|
|
648
|
+
}
|
|
411
649
|
const provider = this._itemsProviders.get(chatSessionType);
|
|
412
650
|
if (provider?.provideChatSessionItems) {
|
|
413
651
|
const sessions = await provider.provideChatSessionItems(token);
|
|
@@ -438,10 +676,15 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
438
676
|
};
|
|
439
677
|
}
|
|
440
678
|
registerChatSessionContentProvider(chatSessionType, provider) {
|
|
679
|
+
if (( this._contentProviders.has(chatSessionType))) {
|
|
680
|
+
throw ( new Error(`Content provider for ${chatSessionType} is already registered.`));
|
|
681
|
+
}
|
|
441
682
|
this._contentProviders.set(chatSessionType, provider);
|
|
683
|
+
this._onDidChangeContentProviderSchemes.fire({ added: [chatSessionType], removed: [] });
|
|
442
684
|
return {
|
|
443
685
|
dispose: () => {
|
|
444
686
|
this._contentProviders.delete(chatSessionType);
|
|
687
|
+
this._onDidChangeContentProviderSchemes.fire({ added: [], removed: [chatSessionType] });
|
|
445
688
|
for (const [key, session] of this._sessions) {
|
|
446
689
|
if (session.chatSessionType === chatSessionType) {
|
|
447
690
|
session.dispose();
|
|
@@ -451,10 +694,14 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
451
694
|
}
|
|
452
695
|
};
|
|
453
696
|
}
|
|
454
|
-
async
|
|
455
|
-
if (!(await this.
|
|
697
|
+
async getNewChatSessionItem(chatSessionType, options, token) {
|
|
698
|
+
if (!(await this.hasChatSessionItemProvider(chatSessionType))) {
|
|
456
699
|
throw Error(`Cannot find provider for ${chatSessionType}`);
|
|
457
700
|
}
|
|
701
|
+
const resolvedType = this._resolveToPrimaryType(chatSessionType);
|
|
702
|
+
if (resolvedType) {
|
|
703
|
+
chatSessionType = resolvedType;
|
|
704
|
+
}
|
|
458
705
|
const provider = this._itemsProviders.get(chatSessionType);
|
|
459
706
|
if (!provider?.provideNewChatSessionItem) {
|
|
460
707
|
throw Error(`Provider for ${chatSessionType} does not support creating sessions`);
|
|
@@ -463,52 +710,125 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
463
710
|
this._onDidChangeSessionItems.fire(chatSessionType);
|
|
464
711
|
return chatSessionItem;
|
|
465
712
|
}
|
|
466
|
-
async
|
|
467
|
-
|
|
468
|
-
throw Error(`Can not find provider for ${chatSessionType}`);
|
|
469
|
-
}
|
|
470
|
-
const provider = this._contentProviders.get(chatSessionType);
|
|
471
|
-
if (!provider) {
|
|
472
|
-
throw Error(`Can not find provider for ${chatSessionType}`);
|
|
473
|
-
}
|
|
474
|
-
const sessionKey = `${chatSessionType}_${id}`;
|
|
475
|
-
const existingSessionData = this._sessions.get(sessionKey);
|
|
713
|
+
async getOrCreateChatSession(sessionResource, token) {
|
|
714
|
+
const existingSessionData = this._sessions.get(sessionResource);
|
|
476
715
|
if (existingSessionData) {
|
|
477
716
|
return existingSessionData.session;
|
|
478
717
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
718
|
+
if (!(await raceCancellationError(this.canResolveChatSession(sessionResource), token))) {
|
|
719
|
+
throw Error(`Can not find provider for ${sessionResource}`);
|
|
720
|
+
}
|
|
721
|
+
const resolvedType = this._resolveToPrimaryType(sessionResource.scheme) || sessionResource.scheme;
|
|
722
|
+
const provider = this._contentProviders.get(resolvedType);
|
|
723
|
+
if (!provider) {
|
|
724
|
+
throw Error(`Can not find provider for ${sessionResource}`);
|
|
725
|
+
}
|
|
726
|
+
const session = await raceCancellationError(provider.provideChatSessionContent(sessionResource, token), token);
|
|
727
|
+
const sessionData = ( new ContributedChatSessionData(
|
|
728
|
+
session,
|
|
729
|
+
sessionResource.scheme,
|
|
730
|
+
sessionResource,
|
|
731
|
+
session.options,
|
|
732
|
+
resource => {
|
|
733
|
+
sessionData.dispose();
|
|
734
|
+
this._sessions.delete(resource);
|
|
735
|
+
}
|
|
736
|
+
));
|
|
737
|
+
this._sessions.set(sessionResource, sessionData);
|
|
482
738
|
return session;
|
|
483
739
|
}
|
|
484
|
-
|
|
485
|
-
const
|
|
486
|
-
|
|
740
|
+
hasAnySessionOptions(sessionResource) {
|
|
741
|
+
const session = this._sessions.get(sessionResource);
|
|
742
|
+
return !!session && !!session.options && ( Object.keys(session.options)).length > 0;
|
|
743
|
+
}
|
|
744
|
+
getSessionOption(sessionResource, optionId) {
|
|
745
|
+
const session = this._sessions.get(sessionResource);
|
|
746
|
+
return session?.getOption(optionId);
|
|
487
747
|
}
|
|
488
|
-
|
|
748
|
+
setSessionOption(sessionResource, optionId, value) {
|
|
749
|
+
const session = this._sessions.get(sessionResource);
|
|
750
|
+
return !!session?.setOption(optionId, value);
|
|
751
|
+
}
|
|
752
|
+
async setEditableSession(sessionResource, data) {
|
|
489
753
|
if (!data) {
|
|
490
|
-
this._editableSessions.delete(
|
|
754
|
+
this._editableSessions.delete(sessionResource);
|
|
491
755
|
}
|
|
492
756
|
else {
|
|
493
|
-
this._editableSessions.set(
|
|
757
|
+
this._editableSessions.set(sessionResource, data);
|
|
494
758
|
}
|
|
495
|
-
this._onDidChangeSessionItems.fire(
|
|
759
|
+
this._onDidChangeSessionItems.fire(localChatSessionType);
|
|
496
760
|
}
|
|
497
|
-
getEditableData(
|
|
498
|
-
return this._editableSessions.get(
|
|
761
|
+
getEditableData(sessionResource) {
|
|
762
|
+
return this._editableSessions.get(sessionResource);
|
|
499
763
|
}
|
|
500
|
-
isEditable(
|
|
501
|
-
return ( this._editableSessions.has(
|
|
764
|
+
isEditable(sessionResource) {
|
|
765
|
+
return ( this._editableSessions.has(sessionResource));
|
|
502
766
|
}
|
|
503
767
|
notifySessionItemsChanged(chatSessionType) {
|
|
504
768
|
this._onDidChangeSessionItems.fire(chatSessionType);
|
|
505
769
|
}
|
|
770
|
+
setOptionGroupsForSessionType(chatSessionType, handle, optionGroups) {
|
|
771
|
+
if (optionGroups) {
|
|
772
|
+
this._sessionTypeOptions.set(chatSessionType, optionGroups);
|
|
773
|
+
}
|
|
774
|
+
else {
|
|
775
|
+
this._sessionTypeOptions.delete(chatSessionType);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
getOptionGroupsForSessionType(chatSessionType) {
|
|
779
|
+
return this._sessionTypeOptions.get(chatSessionType);
|
|
780
|
+
}
|
|
781
|
+
setOptionsChangeCallback(callback) {
|
|
782
|
+
this._optionsChangeCallback = callback;
|
|
783
|
+
}
|
|
784
|
+
async notifySessionOptionsChange(sessionResource, updates) {
|
|
785
|
+
if (!updates.length) {
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
if (this._optionsChangeCallback) {
|
|
789
|
+
await this._optionsChangeCallback(sessionResource, updates);
|
|
790
|
+
}
|
|
791
|
+
for (const u of updates) {
|
|
792
|
+
this.setSessionOption(sessionResource, u.optionId, u.value);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
getIconForSessionType(chatSessionType) {
|
|
796
|
+
const sessionTypeIcon = this._sessionTypeIcons.get(chatSessionType);
|
|
797
|
+
if (ThemeIcon.isThemeIcon(sessionTypeIcon)) {
|
|
798
|
+
return sessionTypeIcon;
|
|
799
|
+
}
|
|
800
|
+
if (isDark(this._themeService.getColorTheme().type)) {
|
|
801
|
+
return sessionTypeIcon?.dark;
|
|
802
|
+
}
|
|
803
|
+
else {
|
|
804
|
+
return sessionTypeIcon?.light;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
getWelcomeTitleForSessionType(chatSessionType) {
|
|
808
|
+
return this._sessionTypeWelcomeTitles.get(chatSessionType);
|
|
809
|
+
}
|
|
810
|
+
getWelcomeMessageForSessionType(chatSessionType) {
|
|
811
|
+
return this._sessionTypeWelcomeMessages.get(chatSessionType);
|
|
812
|
+
}
|
|
813
|
+
getInputPlaceholderForSessionType(chatSessionType) {
|
|
814
|
+
return this._sessionTypeInputPlaceholders.get(chatSessionType);
|
|
815
|
+
}
|
|
816
|
+
getCapabilitiesForSessionType(chatSessionType) {
|
|
817
|
+
const contribution = this._contributions.get(chatSessionType)?.contribution;
|
|
818
|
+
return contribution?.capabilities;
|
|
819
|
+
}
|
|
820
|
+
getContentProviderSchemes() {
|
|
821
|
+
return Array.from(( this._contentProviders.keys()));
|
|
822
|
+
}
|
|
506
823
|
};
|
|
507
824
|
ChatSessionsService = ( __decorate([
|
|
508
825
|
( __param(0, ILogService)),
|
|
509
826
|
( __param(1, IChatAgentService)),
|
|
510
827
|
( __param(2, IExtensionService)),
|
|
511
|
-
( __param(3, IContextKeyService))
|
|
828
|
+
( __param(3, IContextKeyService)),
|
|
829
|
+
( __param(4, IMenuService)),
|
|
830
|
+
( __param(5, IThemeService)),
|
|
831
|
+
( __param(6, ILabelService))
|
|
512
832
|
], ChatSessionsService));
|
|
513
833
|
|
|
514
834
|
export { ChatSessionsService };
|