@codingame/monaco-vscode-chat-service-override 22.1.9 → 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 +17 -8
- package/package.json +43 -40
- 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 +19 -19
- 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 +34 -33
- 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 +13 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +20 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +63 -140
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +17 -16
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
- 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
|
@@ -9,6 +9,7 @@ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/comm
|
|
|
9
9
|
import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
|
|
10
10
|
import { Disposable, DisposableMap, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
11
11
|
import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
|
|
12
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
12
13
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
13
14
|
import { StopWatch } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stopwatch';
|
|
14
15
|
import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
@@ -25,21 +26,22 @@ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs
|
|
|
25
26
|
import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
26
27
|
import { IMcpService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
|
27
28
|
import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
|
|
28
|
-
import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-
|
|
29
|
-
import { ChatRequestTextPart, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-
|
|
30
|
-
import { ChatRequestParser } from '@codingame/monaco-vscode-
|
|
29
|
+
import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModel';
|
|
30
|
+
import { ChatRequestTextPart, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
|
|
31
|
+
import { ChatRequestParser } from '@codingame/monaco-vscode-bc6f260d-ec63-5c95-9446-1ca7d0872719-common/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
|
|
32
|
+
import { ChatMcpServersStarting } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
|
|
31
33
|
import { ChatServiceTelemetry, ChatRequestTelemetry } from './chatServiceTelemetry.js';
|
|
32
34
|
import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
|
|
33
35
|
import { ChatSessionStore } from './chatSessionStore.js';
|
|
34
36
|
import { IChatSlashCommandService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSlashCommands.service';
|
|
35
37
|
import { IChatTransferService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatTransferService.service';
|
|
36
|
-
import {
|
|
38
|
+
import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatUri';
|
|
37
39
|
import { ChatConfiguration, ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
38
40
|
import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
39
41
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
|
|
40
|
-
import { ObservableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/map';
|
|
41
42
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
42
43
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
44
|
+
import { ObservableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/map';
|
|
43
45
|
|
|
44
46
|
const serializedChatKey = 'interactive.sessions';
|
|
45
47
|
const TransferredGlobalChatKey = 'chat.workspaceTransfer';
|
|
@@ -63,6 +65,56 @@ let CancellableRequest = class CancellableRequest {
|
|
|
63
65
|
CancellableRequest = ( __decorate([
|
|
64
66
|
( __param(2, ILanguageModelToolsService))
|
|
65
67
|
], CancellableRequest));
|
|
68
|
+
class ChatModelStore {
|
|
69
|
+
constructor() {
|
|
70
|
+
this._models = ( new ObservableMap());
|
|
71
|
+
}
|
|
72
|
+
get observable() {
|
|
73
|
+
return this._models.observable;
|
|
74
|
+
}
|
|
75
|
+
values() {
|
|
76
|
+
return ( this._models.values());
|
|
77
|
+
}
|
|
78
|
+
get(uri) {
|
|
79
|
+
return this._models.get(this.toKey(uri));
|
|
80
|
+
}
|
|
81
|
+
has(uri) {
|
|
82
|
+
return ( this._models.has(this.toKey(uri)));
|
|
83
|
+
}
|
|
84
|
+
set(uri, value) {
|
|
85
|
+
this._models.set(this.toKey(uri), value);
|
|
86
|
+
}
|
|
87
|
+
delete(uri) {
|
|
88
|
+
return this._models.delete(this.toKey(uri));
|
|
89
|
+
}
|
|
90
|
+
toKey(uri) {
|
|
91
|
+
return ( uri.toString());
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
class DisposableResourceMap extends Disposable {
|
|
95
|
+
constructor() {
|
|
96
|
+
super(...arguments);
|
|
97
|
+
this._map = this._register(( new DisposableMap()));
|
|
98
|
+
}
|
|
99
|
+
get(sessionResource) {
|
|
100
|
+
return this._map.get(this.toKey(sessionResource));
|
|
101
|
+
}
|
|
102
|
+
set(sessionResource, value) {
|
|
103
|
+
this._map.set(this.toKey(sessionResource), value);
|
|
104
|
+
}
|
|
105
|
+
has(sessionResource) {
|
|
106
|
+
return ( this._map.has(this.toKey(sessionResource)));
|
|
107
|
+
}
|
|
108
|
+
deleteAndLeak(sessionResource) {
|
|
109
|
+
return this._map.deleteAndLeak(this.toKey(sessionResource));
|
|
110
|
+
}
|
|
111
|
+
deleteAndDispose(sessionResource) {
|
|
112
|
+
this._map.deleteAndDispose(this.toKey(sessionResource));
|
|
113
|
+
}
|
|
114
|
+
toKey(uri) {
|
|
115
|
+
return ( uri.toString());
|
|
116
|
+
}
|
|
117
|
+
}
|
|
66
118
|
let ChatService = class ChatService extends Disposable {
|
|
67
119
|
get transferredSessionData() {
|
|
68
120
|
return this._transferredSessionData;
|
|
@@ -87,18 +139,16 @@ let ChatService = class ChatService extends Disposable {
|
|
|
87
139
|
this.chatTransferService = chatTransferService;
|
|
88
140
|
this.chatSessionService = chatSessionService;
|
|
89
141
|
this.mcpService = mcpService;
|
|
90
|
-
this._sessionModels = ( new
|
|
91
|
-
this._contentProviderSessionModels = ( new
|
|
92
|
-
this.
|
|
93
|
-
this._pendingRequests = this._register(( new DisposableMap()));
|
|
142
|
+
this._sessionModels = ( new ChatModelStore());
|
|
143
|
+
this._contentProviderSessionModels = this._register(( new DisposableResourceMap()));
|
|
144
|
+
this._pendingRequests = this._register(( new DisposableResourceMap()));
|
|
94
145
|
this._onDidSubmitRequest = this._register(( new Emitter()));
|
|
95
146
|
this.onDidSubmitRequest = this._onDidSubmitRequest.event;
|
|
96
147
|
this._onDidPerformUserAction = this._register(( new Emitter()));
|
|
97
148
|
this.onDidPerformUserAction = this._onDidPerformUserAction.event;
|
|
98
149
|
this._onDidDisposeSession = this._register(( new Emitter()));
|
|
99
150
|
this.onDidDisposeSession = this._onDidDisposeSession.event;
|
|
100
|
-
this._sessionFollowupCancelTokens = this._register(( new
|
|
101
|
-
this._mcpServersInteractionMessageShown = ( new WeakSet());
|
|
151
|
+
this._sessionFollowupCancelTokens = this._register(( new DisposableResourceMap()));
|
|
102
152
|
this._chatServiceTelemetry = this.instantiationService.createInstance(ChatServiceTelemetry);
|
|
103
153
|
const sessionData = storageService.get(serializedChatKey, this.isEmptyWindow ? StorageScope.APPLICATION : StorageScope.WORKSPACE, '');
|
|
104
154
|
if (sessionData) {
|
|
@@ -140,21 +190,27 @@ let ChatService = class ChatService extends Disposable {
|
|
|
140
190
|
}
|
|
141
191
|
saveState() {
|
|
142
192
|
const liveChats = Array.from(( this._sessionModels.values()))
|
|
143
|
-
.filter(session =>
|
|
193
|
+
.filter(session => {
|
|
194
|
+
if (!LocalChatSessionUri.parseLocalSessionId(session.sessionResource)) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return session.initialLocation === ChatAgentLocation.Chat;
|
|
198
|
+
});
|
|
144
199
|
this._chatSessionStore.storeSessions(liveChats);
|
|
145
200
|
}
|
|
146
201
|
notifyUserAction(action) {
|
|
147
202
|
this._chatServiceTelemetry.notifyUserAction(action);
|
|
148
203
|
this._onDidPerformUserAction.fire(action);
|
|
149
204
|
if (action.action.kind === 'chatEditingSessionAction') {
|
|
150
|
-
const model = this._sessionModels.get(action.
|
|
205
|
+
const model = this._sessionModels.get(action.sessionResource);
|
|
151
206
|
if (model) {
|
|
152
207
|
model.notifyEditingAction(action.action);
|
|
153
208
|
}
|
|
154
209
|
}
|
|
155
210
|
}
|
|
156
|
-
async setChatSessionTitle(
|
|
157
|
-
const
|
|
211
|
+
async setChatSessionTitle(sessionResource, title) {
|
|
212
|
+
const sessionId = this.toLocalSessionId(sessionResource);
|
|
213
|
+
const model = this._sessionModels.get(sessionResource);
|
|
158
214
|
if (model) {
|
|
159
215
|
model.setCustomTitle(title);
|
|
160
216
|
}
|
|
@@ -239,13 +295,13 @@ let ChatService = class ChatService extends Disposable {
|
|
|
239
295
|
}
|
|
240
296
|
}
|
|
241
297
|
}
|
|
242
|
-
async
|
|
298
|
+
async getLocalSessionHistory() {
|
|
243
299
|
const liveSessionItems = ( Array.from(( this._sessionModels.values()))
|
|
244
|
-
.filter(session =>
|
|
245
|
-
.map(session => {
|
|
246
|
-
const title = session.title || ( localize(
|
|
300
|
+
.filter(session => this.shouldBeInHistory(session))
|
|
301
|
+
.map((session) => {
|
|
302
|
+
const title = session.title || ( localize(5803, "New Chat"));
|
|
247
303
|
return {
|
|
248
|
-
|
|
304
|
+
sessionResource: session.sessionResource,
|
|
249
305
|
title,
|
|
250
306
|
lastMessageDate: session.lastMessageDate,
|
|
251
307
|
isActive: true,
|
|
@@ -253,29 +309,39 @@ let ChatService = class ChatService extends Disposable {
|
|
|
253
309
|
}));
|
|
254
310
|
const index = await this._chatSessionStore.getIndex();
|
|
255
311
|
const entries = ( ( Object.values(index))
|
|
256
|
-
.filter(entry => !( this._sessionModels.has(entry.sessionId)) &&
|
|
257
|
-
.map((entry) =>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
312
|
+
.filter(entry => !( this._sessionModels.has(LocalChatSessionUri.forSession(entry.sessionId))) && this.shouldBeInHistory(entry) && !entry.isEmpty)
|
|
313
|
+
.map((entry) => {
|
|
314
|
+
const sessionResource = LocalChatSessionUri.forSession(entry.sessionId);
|
|
315
|
+
return ({
|
|
316
|
+
...entry,
|
|
317
|
+
sessionResource,
|
|
318
|
+
isActive: ( this._sessionModels.has(sessionResource))
|
|
319
|
+
});
|
|
320
|
+
}));
|
|
261
321
|
return [...liveSessionItems, ...entries];
|
|
262
322
|
}
|
|
263
|
-
|
|
264
|
-
|
|
323
|
+
shouldBeInHistory(entry) {
|
|
324
|
+
if (entry.sessionResource) {
|
|
325
|
+
return !entry.isImported && LocalChatSessionUri.parseLocalSessionId(entry.sessionResource) && entry.initialLocation !== ChatAgentLocation.EditorInline;
|
|
326
|
+
}
|
|
327
|
+
return !entry.isImported && entry.initialLocation !== ChatAgentLocation.EditorInline;
|
|
328
|
+
}
|
|
329
|
+
async removeHistoryEntry(sessionResource) {
|
|
330
|
+
await this._chatSessionStore.deleteSession(this.toLocalSessionId(sessionResource));
|
|
265
331
|
}
|
|
266
332
|
async clearAllHistoryEntries() {
|
|
267
333
|
await this._chatSessionStore.clearAllSessions();
|
|
268
334
|
}
|
|
269
|
-
startSession(location, token, isGlobalEditingSession = true,
|
|
335
|
+
startSession(location, token, isGlobalEditingSession = true, options) {
|
|
270
336
|
this.trace('startSession');
|
|
271
|
-
return this._startSession(undefined, location, isGlobalEditingSession, token,
|
|
337
|
+
return this._startSession(undefined, location, isGlobalEditingSession, token, options);
|
|
272
338
|
}
|
|
273
|
-
_startSession(someSessionHistory, location, isGlobalEditingSession, token,
|
|
274
|
-
const model = this.instantiationService.createInstance(ChatModel, someSessionHistory, { initialLocation: location,
|
|
339
|
+
_startSession(someSessionHistory, location, isGlobalEditingSession, token, options, transferEditingSession) {
|
|
340
|
+
const model = this.instantiationService.createInstance(ChatModel, someSessionHistory, { initialLocation: location, canUseTools: options?.canUseTools ?? true, resource: options?.sessionResource });
|
|
275
341
|
if (location === ChatAgentLocation.Chat) {
|
|
276
|
-
model.startEditingSession(isGlobalEditingSession);
|
|
342
|
+
model.startEditingSession(isGlobalEditingSession, transferEditingSession);
|
|
277
343
|
}
|
|
278
|
-
this._sessionModels.set(model.
|
|
344
|
+
this._sessionModels.set(model.sessionResource, model);
|
|
279
345
|
this.initializeSession(model, token);
|
|
280
346
|
return model;
|
|
281
347
|
}
|
|
@@ -301,15 +367,22 @@ let ChatService = class ChatService extends Disposable {
|
|
|
301
367
|
throw ( new ErrorNoTelemetry('No default agent registered'));
|
|
302
368
|
}
|
|
303
369
|
}
|
|
304
|
-
getSession(
|
|
305
|
-
return this._sessionModels.get(
|
|
370
|
+
getSession(sessionResource) {
|
|
371
|
+
return this._sessionModels.get(sessionResource);
|
|
306
372
|
}
|
|
307
|
-
|
|
308
|
-
this.
|
|
309
|
-
|
|
373
|
+
getSessionByLegacyId(sessionId) {
|
|
374
|
+
return Array.from(( this._sessionModels.values())).find(session => session.sessionId === sessionId);
|
|
375
|
+
}
|
|
376
|
+
async getOrRestoreSession(sessionResource) {
|
|
377
|
+
this.trace('getOrRestoreSession', `${sessionResource}`);
|
|
378
|
+
const model = this._sessionModels.get(sessionResource);
|
|
310
379
|
if (model) {
|
|
311
380
|
return model;
|
|
312
381
|
}
|
|
382
|
+
const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
|
|
383
|
+
if (!sessionId) {
|
|
384
|
+
throw ( new Error(`Cannot restore non-local session ${sessionResource}`));
|
|
385
|
+
}
|
|
313
386
|
let sessionData;
|
|
314
387
|
if (this.transferredSessionData?.sessionId === sessionId) {
|
|
315
388
|
sessionData = revive(this._persistedSessions[sessionId]);
|
|
@@ -320,21 +393,29 @@ let ChatService = class ChatService extends Disposable {
|
|
|
320
393
|
if (!sessionData) {
|
|
321
394
|
return undefined;
|
|
322
395
|
}
|
|
323
|
-
const session = this._startSession(sessionData, sessionData.initialLocation ?? ChatAgentLocation.Chat, true, CancellationToken.None);
|
|
396
|
+
const session = this._startSession(sessionData, sessionData.initialLocation ?? ChatAgentLocation.Chat, true, CancellationToken.None, { canUseTools: true, sessionResource });
|
|
324
397
|
const isTransferred = this.transferredSessionData?.sessionId === sessionId;
|
|
325
398
|
if (isTransferred) {
|
|
326
399
|
this._transferredSessionData = undefined;
|
|
327
400
|
}
|
|
328
401
|
return session;
|
|
329
402
|
}
|
|
330
|
-
isPersistedSessionEmpty(
|
|
403
|
+
isPersistedSessionEmpty(sessionResource) {
|
|
404
|
+
const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
|
|
405
|
+
if (!sessionId) {
|
|
406
|
+
throw ( new Error(`Cannot restore non-local session ${sessionResource}`));
|
|
407
|
+
}
|
|
331
408
|
const session = this._persistedSessions[sessionId];
|
|
332
409
|
if (session) {
|
|
333
410
|
return session.requests.length === 0;
|
|
334
411
|
}
|
|
335
412
|
return this._chatSessionStore.isSessionEmpty(sessionId);
|
|
336
413
|
}
|
|
337
|
-
getPersistedSessionTitle(
|
|
414
|
+
getPersistedSessionTitle(sessionResource) {
|
|
415
|
+
const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
|
|
416
|
+
if (!sessionId) {
|
|
417
|
+
return undefined;
|
|
418
|
+
}
|
|
338
419
|
const session = this._persistedSessions[sessionId];
|
|
339
420
|
if (session) {
|
|
340
421
|
const title = session.customTitle || ChatModel.getDefaultTitle(session.requests);
|
|
@@ -353,34 +434,30 @@ let ChatService = class ChatService extends Disposable {
|
|
|
353
434
|
loadSessionFromContent(data) {
|
|
354
435
|
return this._startSession(data, data.initialLocation ?? ChatAgentLocation.Chat, true, CancellationToken.None);
|
|
355
436
|
}
|
|
356
|
-
async loadSessionForResource(
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
throw ( new Error('Invalid chat session URI'));
|
|
437
|
+
async loadSessionForResource(chatSessionResource, location, token) {
|
|
438
|
+
if (chatSessionResource.scheme === Schemas.vscodeLocalChatSession) {
|
|
439
|
+
return this.getOrRestoreSession(chatSessionResource);
|
|
360
440
|
}
|
|
361
|
-
const existing = this._contentProviderSessionModels.get(
|
|
441
|
+
const existing = this._contentProviderSessionModels.get(chatSessionResource);
|
|
362
442
|
if (existing) {
|
|
363
443
|
return existing.model;
|
|
364
444
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
this._contentProviderSessionModels.set(chatSessionType, ( new Map()));
|
|
374
|
-
}
|
|
445
|
+
const providedSession = await this.chatSessionService.getOrCreateChatSession(chatSessionResource, CancellationToken.None);
|
|
446
|
+
const chatSessionType = chatSessionResource.scheme;
|
|
447
|
+
const model = this._startSession(undefined, location, true, CancellationToken.None, { sessionResource: chatSessionResource, canUseTools: false }, providedSession.initialEditingSession);
|
|
448
|
+
model.setContributedChatSession({
|
|
449
|
+
chatSessionResource,
|
|
450
|
+
chatSessionType,
|
|
451
|
+
isUntitled: chatSessionResource.path.startsWith('/untitled-')
|
|
452
|
+
});
|
|
375
453
|
const disposables = ( new DisposableStore());
|
|
376
|
-
this._contentProviderSessionModels.
|
|
454
|
+
this._contentProviderSessionModels.set(chatSessionResource, { model, dispose: () => disposables.dispose() });
|
|
377
455
|
disposables.add(model.onDidDispose(() => {
|
|
378
|
-
this._contentProviderSessionModels
|
|
379
|
-
|
|
380
|
-
content.dispose();
|
|
456
|
+
this._contentProviderSessionModels.deleteAndDispose(chatSessionResource);
|
|
457
|
+
providedSession.dispose();
|
|
381
458
|
}));
|
|
382
459
|
let lastRequest;
|
|
383
|
-
for (const message of
|
|
460
|
+
for (const message of providedSession.history) {
|
|
384
461
|
if (message.type === 'request') {
|
|
385
462
|
if (lastRequest) {
|
|
386
463
|
model.completeResponse(lastRequest);
|
|
@@ -393,8 +470,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
393
470
|
const agent = message.participant
|
|
394
471
|
? this.chatAgentService.getAgent(message.participant)
|
|
395
472
|
: this.chatAgentService.getAgent(chatSessionType);
|
|
396
|
-
lastRequest = model.addRequest(parsedRequest, { variables: [] },
|
|
397
|
-
0,
|
|
473
|
+
lastRequest = model.addRequest(parsedRequest, message.variableData ?? { variables: [] }, 0,
|
|
398
474
|
undefined, agent, undefined,
|
|
399
475
|
undefined,
|
|
400
476
|
undefined,
|
|
@@ -410,27 +486,26 @@ let ChatService = class ChatService extends Disposable {
|
|
|
410
486
|
}
|
|
411
487
|
}
|
|
412
488
|
}
|
|
413
|
-
if (
|
|
489
|
+
if (providedSession.progressObs && lastRequest && providedSession.interruptActiveResponseCallback) {
|
|
414
490
|
const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
|
|
415
|
-
this._pendingRequests.set(model.
|
|
416
|
-
const cancellationListener = ( new MutableDisposable());
|
|
491
|
+
this._pendingRequests.set(model.sessionResource, initialCancellationRequest);
|
|
492
|
+
const cancellationListener = disposables.add(( new MutableDisposable()));
|
|
417
493
|
const createCancellationListener = (token) => {
|
|
418
494
|
return token.onCancellationRequested(() => {
|
|
419
|
-
|
|
495
|
+
providedSession.interruptActiveResponseCallback?.().then(userConfirmedInterruption => {
|
|
420
496
|
if (!userConfirmedInterruption) {
|
|
421
497
|
const newCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
|
|
422
|
-
this._pendingRequests.set(model.
|
|
498
|
+
this._pendingRequests.set(model.sessionResource, newCancellationRequest);
|
|
423
499
|
cancellationListener.value = createCancellationListener(newCancellationRequest.cancellationTokenSource.token);
|
|
424
500
|
}
|
|
425
501
|
});
|
|
426
502
|
});
|
|
427
503
|
};
|
|
428
504
|
cancellationListener.value = createCancellationListener(initialCancellationRequest.cancellationTokenSource.token);
|
|
429
|
-
disposables.add(cancellationListener);
|
|
430
505
|
let lastProgressLength = 0;
|
|
431
506
|
disposables.add(autorun(reader => {
|
|
432
|
-
const progressArray =
|
|
433
|
-
const isComplete =
|
|
507
|
+
const progressArray = providedSession.progressObs?.read(reader) ?? [];
|
|
508
|
+
const isComplete = providedSession.isCompleteObs?.read(reader) ?? false;
|
|
434
509
|
if (progressArray.length > lastProgressLength) {
|
|
435
510
|
const newProgress = progressArray.slice(lastProgressLength);
|
|
436
511
|
for (const progress of newProgress) {
|
|
@@ -451,24 +526,22 @@ let ChatService = class ChatService extends Disposable {
|
|
|
451
526
|
}
|
|
452
527
|
return model;
|
|
453
528
|
}
|
|
454
|
-
|
|
455
|
-
const
|
|
456
|
-
if (!
|
|
529
|
+
getChatSessionFromInternalUri(sessionResource) {
|
|
530
|
+
const model = this._sessionModels.get(sessionResource);
|
|
531
|
+
if (!model) {
|
|
457
532
|
return;
|
|
458
533
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
isUntitled: data.chatSessionId.startsWith('untitled-'),
|
|
462
|
-
};
|
|
534
|
+
const { contributedChatSession } = model;
|
|
535
|
+
return contributedChatSession;
|
|
463
536
|
}
|
|
464
537
|
async resendRequest(request, options) {
|
|
465
|
-
const model = this._sessionModels.get(request.session.
|
|
538
|
+
const model = this._sessionModels.get(request.session.sessionResource);
|
|
466
539
|
if (!model && model !== request.session) {
|
|
467
|
-
throw ( new Error(`Unknown session: ${request.session.
|
|
540
|
+
throw ( new Error(`Unknown session: ${request.session.sessionResource}`));
|
|
468
541
|
}
|
|
469
|
-
const cts = this._pendingRequests.get(request.session.
|
|
542
|
+
const cts = this._pendingRequests.get(request.session.sessionResource);
|
|
470
543
|
if (cts) {
|
|
471
|
-
this.trace('resendRequest', `Session ${request.session.
|
|
544
|
+
this.trace('resendRequest', `Session ${request.session.sessionResource} already has a pending request, cancelling...`);
|
|
472
545
|
cts.cancel();
|
|
473
546
|
}
|
|
474
547
|
const location = options?.location ?? model.initialLocation;
|
|
@@ -481,20 +554,20 @@ let ChatService = class ChatService extends Disposable {
|
|
|
481
554
|
locationData: request.locationData,
|
|
482
555
|
attachedContext: request.attachedContext,
|
|
483
556
|
};
|
|
484
|
-
await this._sendRequestAsync(model, model.
|
|
557
|
+
await this._sendRequestAsync(model, model.sessionResource, request.message, attempt, enableCommandDetection, defaultAgent, location, resendOptions).responseCompletePromise;
|
|
485
558
|
}
|
|
486
|
-
async sendRequest(
|
|
487
|
-
this.trace('sendRequest', `
|
|
559
|
+
async sendRequest(sessionResource, request, options) {
|
|
560
|
+
this.trace('sendRequest', `sessionResource: ${( sessionResource.toString())}, message: ${request.substring(0, 20)}${request.length > 20 ? '[...]' : ''}}`);
|
|
488
561
|
if (!request.trim() && !options?.slashCommand && !options?.agentId && !options?.agentIdSilent) {
|
|
489
562
|
this.trace('sendRequest', 'Rejected empty message');
|
|
490
563
|
return;
|
|
491
564
|
}
|
|
492
|
-
const model = this._sessionModels.get(
|
|
565
|
+
const model = this._sessionModels.get(sessionResource);
|
|
493
566
|
if (!model) {
|
|
494
|
-
throw ( new Error(`Unknown session: ${
|
|
567
|
+
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
495
568
|
}
|
|
496
|
-
if (( this._pendingRequests.has(
|
|
497
|
-
this.trace('sendRequest', `Session ${
|
|
569
|
+
if (( this._pendingRequests.has(sessionResource))) {
|
|
570
|
+
this.trace('sendRequest', `Session ${sessionResource} already has a pending request`);
|
|
498
571
|
return;
|
|
499
572
|
}
|
|
500
573
|
const requests = model.getRequests();
|
|
@@ -505,24 +578,24 @@ let ChatService = class ChatService extends Disposable {
|
|
|
505
578
|
request.response?.finalizeUndoState();
|
|
506
579
|
}
|
|
507
580
|
else {
|
|
508
|
-
await this.removeRequest(
|
|
581
|
+
await this.removeRequest(sessionResource, request.id);
|
|
509
582
|
}
|
|
510
583
|
}
|
|
511
584
|
}
|
|
512
585
|
const location = options?.location ?? model.initialLocation;
|
|
513
586
|
const attempt = options?.attempt ?? 0;
|
|
514
587
|
const defaultAgent = this.chatAgentService.getDefaultAgent(location, options?.modeInfo?.kind);
|
|
515
|
-
const parsedRequest = this.parseChatRequest(
|
|
588
|
+
const parsedRequest = this.parseChatRequest(sessionResource, request, location, options);
|
|
516
589
|
const silentAgent = options?.agentIdSilent ? this.chatAgentService.getAgent(options.agentIdSilent) : undefined;
|
|
517
590
|
const agent = silentAgent ?? parsedRequest.parts.find((r) => r instanceof ChatRequestAgentPart)?.agent ?? defaultAgent;
|
|
518
591
|
const agentSlashCommandPart = parsedRequest.parts.find((r) => r instanceof ChatRequestAgentSubcommandPart);
|
|
519
592
|
return {
|
|
520
|
-
...this._sendRequestAsync(model,
|
|
593
|
+
...this._sendRequestAsync(model, sessionResource, parsedRequest, attempt, !options?.noCommandDetection, silentAgent ?? defaultAgent, location, options),
|
|
521
594
|
agent,
|
|
522
595
|
slashCommand: agentSlashCommandPart?.command,
|
|
523
596
|
};
|
|
524
597
|
}
|
|
525
|
-
parseChatRequest(
|
|
598
|
+
parseChatRequest(sessionResource, request, location, options) {
|
|
526
599
|
let parserContext = options?.parserContext;
|
|
527
600
|
if (options?.agentId) {
|
|
528
601
|
const agent = this.chatAgentService.getAgent(options.agentId);
|
|
@@ -533,24 +606,24 @@ let ChatService = class ChatService extends Disposable {
|
|
|
533
606
|
const commandPart = options.slashCommand ? ` ${chatSubcommandLeader}${options.slashCommand}` : '';
|
|
534
607
|
request = `${chatAgentLeader}${agent.name}${commandPart} ${request}`;
|
|
535
608
|
}
|
|
536
|
-
const parsedRequest = this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(
|
|
609
|
+
const parsedRequest = this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(sessionResource, request, location, parserContext);
|
|
537
610
|
return parsedRequest;
|
|
538
611
|
}
|
|
539
|
-
refreshFollowupsCancellationToken(
|
|
540
|
-
this._sessionFollowupCancelTokens.get(
|
|
612
|
+
refreshFollowupsCancellationToken(sessionResource) {
|
|
613
|
+
this._sessionFollowupCancelTokens.get(sessionResource)?.cancel();
|
|
541
614
|
const newTokenSource = ( new CancellationTokenSource());
|
|
542
|
-
this._sessionFollowupCancelTokens.set(
|
|
615
|
+
this._sessionFollowupCancelTokens.set(sessionResource, newTokenSource);
|
|
543
616
|
return newTokenSource.token;
|
|
544
617
|
}
|
|
545
|
-
_sendRequestAsync(model,
|
|
546
|
-
const followupsCancelToken = this.refreshFollowupsCancellationToken(
|
|
618
|
+
_sendRequestAsync(model, sessionResource, parsedRequest, attempt, enableCommandDetection, defaultAgent, location, options) {
|
|
619
|
+
const followupsCancelToken = this.refreshFollowupsCancellationToken(sessionResource);
|
|
547
620
|
let request;
|
|
548
621
|
const agentPart = 'kind' in parsedRequest ? undefined : parsedRequest.parts.find((r) => r instanceof ChatRequestAgentPart);
|
|
549
622
|
const agentSlashCommandPart = 'kind' in parsedRequest ? undefined : parsedRequest.parts.find((r) => r instanceof ChatRequestAgentSubcommandPart);
|
|
550
623
|
const commandPart = 'kind' in parsedRequest ? undefined : parsedRequest.parts.find((r) => r instanceof ChatRequestSlashCommandPart);
|
|
551
624
|
const requests = [...model.getRequests()];
|
|
552
625
|
const requestTelemetry = this.instantiationService.createInstance(ChatRequestTelemetry, {
|
|
553
|
-
agentPart,
|
|
626
|
+
agent: agentPart?.agent ?? defaultAgent,
|
|
554
627
|
agentSlashCommandPart,
|
|
555
628
|
commandPart,
|
|
556
629
|
sessionId: model.sessionId,
|
|
@@ -615,7 +688,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
615
688
|
if (agentPart || (defaultAgent && !commandPart)) {
|
|
616
689
|
const prepareChatAgentRequest = (agent, command, enableCommandDetection, chatRequest, isParticipantDetected) => {
|
|
617
690
|
const initVariableData = { variables: [] };
|
|
618
|
-
request = chatRequest ?? model.addRequest(parsedRequest, initVariableData, attempt, options?.modeInfo, agent, command, options?.confirmation, options?.locationData, options?.attachedContext, undefined, options?.userSelectedModelId);
|
|
691
|
+
request = chatRequest ?? model.addRequest(parsedRequest, initVariableData, attempt, options?.modeInfo, agent, command, options?.confirmation, options?.locationData, options?.attachedContext, undefined, options?.userSelectedModelId, options?.userSelectedTools?.get());
|
|
619
692
|
let variableData;
|
|
620
693
|
let message;
|
|
621
694
|
if (chatRequest) {
|
|
@@ -629,19 +702,8 @@ let ChatService = class ChatService extends Disposable {
|
|
|
629
702
|
variableData = updateRanges(variableData, promptTextResult.diff);
|
|
630
703
|
message = promptTextResult.message;
|
|
631
704
|
}
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
const tools = options?.userSelectedTools?.read(reader);
|
|
635
|
-
if (isInitialTools) {
|
|
636
|
-
isInitialTools = false;
|
|
637
|
-
return;
|
|
638
|
-
}
|
|
639
|
-
if (tools) {
|
|
640
|
-
this.chatAgentService.setRequestTools(agent.id, request.id, tools);
|
|
641
|
-
}
|
|
642
|
-
}));
|
|
643
|
-
return {
|
|
644
|
-
sessionId,
|
|
705
|
+
const agentRequest = {
|
|
706
|
+
sessionId: model.sessionId,
|
|
645
707
|
requestId: request.id,
|
|
646
708
|
agentId: agent.id,
|
|
647
709
|
message,
|
|
@@ -657,8 +719,22 @@ let ChatService = class ChatService extends Disposable {
|
|
|
657
719
|
userSelectedModelId: options?.userSelectedModelId,
|
|
658
720
|
userSelectedTools: options?.userSelectedTools?.get(),
|
|
659
721
|
modeInstructions: options?.modeInfo?.modeInstructions,
|
|
660
|
-
editedFileEvents: request.editedFileEvents
|
|
722
|
+
editedFileEvents: request.editedFileEvents,
|
|
723
|
+
chatSummary: options?.chatSummary
|
|
661
724
|
};
|
|
725
|
+
let isInitialTools = true;
|
|
726
|
+
store.add(autorun(reader => {
|
|
727
|
+
const tools = options?.userSelectedTools?.read(reader);
|
|
728
|
+
if (isInitialTools) {
|
|
729
|
+
isInitialTools = false;
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
if (tools) {
|
|
733
|
+
this.chatAgentService.setRequestTools(agent.id, request.id, tools);
|
|
734
|
+
agentRequest.userSelectedTools = tools;
|
|
735
|
+
}
|
|
736
|
+
}));
|
|
737
|
+
return agentRequest;
|
|
662
738
|
};
|
|
663
739
|
if (this.configurationService.getValue('chat.detectParticipant.enabled') !== false &&
|
|
664
740
|
this.chatAgentService.hasChatParticipantDetectionProviders() &&
|
|
@@ -680,33 +756,36 @@ let ChatService = class ChatService extends Disposable {
|
|
|
680
756
|
}
|
|
681
757
|
const agent = (detectedAgent ?? agentPart?.agent ?? defaultAgent);
|
|
682
758
|
const command = detectedCommand ?? agentSlashCommandPart?.command;
|
|
683
|
-
|
|
684
|
-
this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`),
|
|
685
|
-
this.mcpService.autostart(token),
|
|
686
|
-
]);
|
|
759
|
+
await this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`);
|
|
687
760
|
const history = this.getHistoryEntriesFromModel(requests, model.sessionId, location, agent.id);
|
|
688
761
|
const requestProps = prepareChatAgentRequest(agent, command, enableCommandDetection, request , !!detectedAgent);
|
|
689
|
-
const pendingRequest = this._pendingRequests.get(
|
|
762
|
+
const pendingRequest = this._pendingRequests.get(sessionResource);
|
|
690
763
|
if (pendingRequest && !pendingRequest.requestId) {
|
|
691
764
|
pendingRequest.requestId = requestProps.requestId;
|
|
692
765
|
}
|
|
693
766
|
completeResponseCreated();
|
|
694
|
-
if (
|
|
695
|
-
this.
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
id: 'mcp.startServersWithInteraction',
|
|
701
|
-
title: ( localize(5600, 'Start MCP Servers')),
|
|
702
|
-
arguments: []
|
|
703
|
-
}
|
|
704
|
-
}]);
|
|
767
|
+
if (model.canUseTools) {
|
|
768
|
+
const autostartResult = ( new ChatMcpServersStarting(this.mcpService.autostart(token)));
|
|
769
|
+
if (!autostartResult.isEmpty) {
|
|
770
|
+
progressCallback([autostartResult]);
|
|
771
|
+
await autostartResult.wait();
|
|
772
|
+
}
|
|
705
773
|
}
|
|
706
774
|
const agentResult = await this.chatAgentService.invokeAgent(agent.id, requestProps, progressCallback, history, token);
|
|
707
775
|
rawResult = agentResult;
|
|
708
776
|
agentOrCommandFollowups = this.chatAgentService.getFollowups(agent.id, requestProps, agentResult, history, followupsCancelToken);
|
|
709
|
-
|
|
777
|
+
if (model.getRequests().length === 1 && !model.customTitle) {
|
|
778
|
+
const chatHistory = this.getHistoryEntriesFromModel(model.getRequests(), model.sessionId, location, agent.id);
|
|
779
|
+
chatTitlePromise = this.chatAgentService.getChatTitle(agent.id, chatHistory, CancellationToken.None).then((title) => {
|
|
780
|
+
if (title === undefined) {
|
|
781
|
+
const defaultAgentForTitle = this.chatAgentService.getDefaultAgent(location);
|
|
782
|
+
if (defaultAgentForTitle) {
|
|
783
|
+
return this.chatAgentService.getChatTitle(defaultAgentForTitle.id, chatHistory, CancellationToken.None);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
return title;
|
|
787
|
+
});
|
|
788
|
+
}
|
|
710
789
|
}
|
|
711
790
|
else if (commandPart && this.chatSlashCommandService.hasCommand(commandPart.slashCommand.command)) {
|
|
712
791
|
if (commandPart.slashCommand.silent !== true) {
|
|
@@ -737,7 +816,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
737
816
|
else {
|
|
738
817
|
if (!rawResult) {
|
|
739
818
|
this.trace('sendRequest', `Provider returned no response for session ${model.sessionId}`);
|
|
740
|
-
rawResult = { errorDetails: { message: ( localize(
|
|
819
|
+
rawResult = { errorDetails: { message: ( localize(5804, "Provider returned null response")) } };
|
|
741
820
|
}
|
|
742
821
|
const result = rawResult.errorDetails?.responseIsFiltered ? 'filtered' :
|
|
743
822
|
rawResult.errorDetails && gotProgress ? 'errorWithOutput' :
|
|
@@ -791,11 +870,11 @@ let ChatService = class ChatService extends Disposable {
|
|
|
791
870
|
}
|
|
792
871
|
};
|
|
793
872
|
const rawResponsePromise = sendRequestInternal();
|
|
794
|
-
this._pendingRequests.set(model.
|
|
873
|
+
this._pendingRequests.set(model.sessionResource, this.instantiationService.createInstance(CancellableRequest, source, undefined));
|
|
795
874
|
rawResponsePromise.finally(() => {
|
|
796
|
-
this._pendingRequests.deleteAndDispose(model.
|
|
875
|
+
this._pendingRequests.deleteAndDispose(model.sessionResource);
|
|
797
876
|
});
|
|
798
|
-
this._onDidSubmitRequest.fire({
|
|
877
|
+
this._onDidSubmitRequest.fire({ chatSessionResource: model.sessionResource });
|
|
799
878
|
return {
|
|
800
879
|
responseCreatedPromise: responseCreated.p,
|
|
801
880
|
responseCompletePromise: rawResponsePromise,
|
|
@@ -827,6 +906,9 @@ let ChatService = class ChatService extends Disposable {
|
|
|
827
906
|
if (forAgentId !== request.response.agent?.id && !agent?.isDefault) {
|
|
828
907
|
continue;
|
|
829
908
|
}
|
|
909
|
+
if (location === ChatAgentLocation.EditorInline) {
|
|
910
|
+
continue;
|
|
911
|
+
}
|
|
830
912
|
const promptTextResult = getPromptText(request.message);
|
|
831
913
|
const historyRequest = {
|
|
832
914
|
sessionId: sessionId,
|
|
@@ -842,44 +924,44 @@ let ChatService = class ChatService extends Disposable {
|
|
|
842
924
|
}
|
|
843
925
|
return history;
|
|
844
926
|
}
|
|
845
|
-
async removeRequest(
|
|
846
|
-
const model = this._sessionModels.get(
|
|
927
|
+
async removeRequest(sessionResource, requestId) {
|
|
928
|
+
const model = this._sessionModels.get(sessionResource);
|
|
847
929
|
if (!model) {
|
|
848
|
-
throw ( new Error(`Unknown session: ${
|
|
930
|
+
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
849
931
|
}
|
|
850
|
-
const pendingRequest = this._pendingRequests.get(
|
|
932
|
+
const pendingRequest = this._pendingRequests.get(sessionResource);
|
|
851
933
|
if (pendingRequest?.requestId === requestId) {
|
|
852
934
|
pendingRequest.cancel();
|
|
853
|
-
this._pendingRequests.deleteAndDispose(
|
|
935
|
+
this._pendingRequests.deleteAndDispose(sessionResource);
|
|
854
936
|
}
|
|
855
937
|
model.removeRequest(requestId);
|
|
856
938
|
}
|
|
857
|
-
async adoptRequest(
|
|
939
|
+
async adoptRequest(sessionResource, request) {
|
|
858
940
|
if (!(request instanceof ChatRequestModel)) {
|
|
859
941
|
throw ( new TypeError('Can only adopt requests of type ChatRequestModel'));
|
|
860
942
|
}
|
|
861
|
-
const target = this._sessionModels.get(
|
|
943
|
+
const target = this._sessionModels.get(sessionResource);
|
|
862
944
|
if (!target) {
|
|
863
|
-
throw ( new Error(`Unknown session: ${
|
|
945
|
+
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
864
946
|
}
|
|
865
947
|
const oldOwner = request.session;
|
|
866
948
|
target.adoptRequest(request);
|
|
867
949
|
if (request.response && !request.response.isComplete) {
|
|
868
|
-
const cts = this._pendingRequests.deleteAndLeak(oldOwner.
|
|
950
|
+
const cts = this._pendingRequests.deleteAndLeak(oldOwner.sessionResource);
|
|
869
951
|
if (cts) {
|
|
870
952
|
cts.requestId = request.id;
|
|
871
|
-
this._pendingRequests.set(target.
|
|
953
|
+
this._pendingRequests.set(target.sessionResource, cts);
|
|
872
954
|
}
|
|
873
955
|
}
|
|
874
956
|
}
|
|
875
|
-
async addCompleteRequest(
|
|
957
|
+
async addCompleteRequest(sessionResource, message, variableData, attempt, response) {
|
|
876
958
|
this.trace('addCompleteRequest', `message: ${message}`);
|
|
877
|
-
const model = this._sessionModels.get(
|
|
959
|
+
const model = this._sessionModels.get(sessionResource);
|
|
878
960
|
if (!model) {
|
|
879
|
-
throw ( new Error(`Unknown session: ${
|
|
961
|
+
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
880
962
|
}
|
|
881
963
|
const parsedRequest = typeof message === 'string' ?
|
|
882
|
-
this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(
|
|
964
|
+
this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(sessionResource, message) :
|
|
883
965
|
message;
|
|
884
966
|
const request = model.addRequest(parsedRequest, variableData || { variables: [] }, attempt ?? 0, undefined, undefined, undefined, undefined, undefined, undefined, true);
|
|
885
967
|
if (typeof response.message === 'string') {
|
|
@@ -896,31 +978,31 @@ let ChatService = class ChatService extends Disposable {
|
|
|
896
978
|
}
|
|
897
979
|
model.completeResponse(request);
|
|
898
980
|
}
|
|
899
|
-
cancelCurrentRequestForSession(
|
|
900
|
-
this.trace('cancelCurrentRequestForSession', `
|
|
901
|
-
this._pendingRequests.get(
|
|
902
|
-
this._pendingRequests.deleteAndDispose(
|
|
981
|
+
cancelCurrentRequestForSession(sessionResource) {
|
|
982
|
+
this.trace('cancelCurrentRequestForSession', `session: ${sessionResource}`);
|
|
983
|
+
this._pendingRequests.get(sessionResource)?.cancel();
|
|
984
|
+
this._pendingRequests.deleteAndDispose(sessionResource);
|
|
903
985
|
}
|
|
904
|
-
async clearSession(
|
|
905
|
-
this.trace('clearSession', `
|
|
906
|
-
const model = this._sessionModels.get(
|
|
986
|
+
async clearSession(sessionResource) {
|
|
987
|
+
this.trace('clearSession', `session: ${sessionResource}`);
|
|
988
|
+
const model = this._sessionModels.get(sessionResource);
|
|
907
989
|
if (!model) {
|
|
908
|
-
throw ( new Error(`Unknown session: ${
|
|
990
|
+
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
909
991
|
}
|
|
910
|
-
|
|
911
|
-
if (
|
|
992
|
+
const localSessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
|
|
993
|
+
if (localSessionId && (model.initialLocation === ChatAgentLocation.Chat)) {
|
|
912
994
|
if (model.getRequests().length === 0 && !model.customTitle) {
|
|
913
|
-
await this._chatSessionStore.deleteSession(
|
|
995
|
+
await this._chatSessionStore.deleteSession(localSessionId);
|
|
914
996
|
}
|
|
915
997
|
else {
|
|
916
998
|
await this._chatSessionStore.storeSessions([model]);
|
|
917
999
|
}
|
|
918
1000
|
}
|
|
919
|
-
this._sessionModels.delete(
|
|
1001
|
+
this._sessionModels.delete(sessionResource);
|
|
920
1002
|
model.dispose();
|
|
921
|
-
this._pendingRequests.get(
|
|
922
|
-
this._pendingRequests.deleteAndDispose(
|
|
923
|
-
this._onDidDisposeSession.fire({
|
|
1003
|
+
this._pendingRequests.get(sessionResource)?.cancel();
|
|
1004
|
+
this._pendingRequests.deleteAndDispose(sessionResource);
|
|
1005
|
+
this._onDidDisposeSession.fire({ sessionResource, reason: 'cleared' });
|
|
924
1006
|
}
|
|
925
1007
|
hasSessions() {
|
|
926
1008
|
return this._chatSessionStore.hasSessions();
|
|
@@ -951,6 +1033,13 @@ let ChatService = class ChatService extends Disposable {
|
|
|
951
1033
|
logChatIndex() {
|
|
952
1034
|
this._chatSessionStore.logIndex();
|
|
953
1035
|
}
|
|
1036
|
+
toLocalSessionId(sessionResource) {
|
|
1037
|
+
const localSessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
|
|
1038
|
+
if (!localSessionId) {
|
|
1039
|
+
throw ( new Error(`Invalid local chat session resource: ${sessionResource}`));
|
|
1040
|
+
}
|
|
1041
|
+
return localSessionId;
|
|
1042
|
+
}
|
|
954
1043
|
};
|
|
955
1044
|
ChatService = ( __decorate([
|
|
956
1045
|
( __param(0, IStorageService)),
|