@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.0.1
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 +24 -3
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +265 -203
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
- package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
|
@@ -44,10 +44,11 @@ import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/work
|
|
|
44
44
|
import { ChatConfiguration, ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
45
45
|
import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
46
46
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
47
|
+
import { ChatSessionOperationLog } from '../model/chatSessionOperationLog.js';
|
|
47
48
|
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
48
49
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
49
50
|
|
|
50
|
-
const serializedChatKey =
|
|
51
|
+
const serializedChatKey = "interactive.sessions";
|
|
51
52
|
let CancellableRequest = class CancellableRequest {
|
|
52
53
|
constructor(cancellationTokenSource, requestId, toolsService) {
|
|
53
54
|
this.cancellationTokenSource = cancellationTokenSource;
|
|
@@ -64,13 +65,14 @@ let CancellableRequest = class CancellableRequest {
|
|
|
64
65
|
this.cancellationTokenSource.cancel();
|
|
65
66
|
}
|
|
66
67
|
};
|
|
67
|
-
CancellableRequest = ( __decorate([
|
|
68
|
-
( __param(2, ILanguageModelToolsService))
|
|
69
|
-
], CancellableRequest));
|
|
68
|
+
CancellableRequest = ( __decorate([( __param(2, ILanguageModelToolsService))], CancellableRequest));
|
|
70
69
|
let ChatService = class ChatService extends Disposable {
|
|
71
70
|
get transferredSessionResource() {
|
|
72
71
|
return this._transferredSessionResource;
|
|
73
72
|
}
|
|
73
|
+
get onDidCreateModel() {
|
|
74
|
+
return this._sessionModels.onDidCreateModel;
|
|
75
|
+
}
|
|
74
76
|
setSaveModelsEnabled(enabled) {
|
|
75
77
|
this._saveModelsEnabled = enabled;
|
|
76
78
|
}
|
|
@@ -84,7 +86,19 @@ let ChatService = class ChatService extends Disposable {
|
|
|
84
86
|
const workspace = this.workspaceContextService.getWorkspace();
|
|
85
87
|
return !workspace.configuration && workspace.folders.length === 0;
|
|
86
88
|
}
|
|
87
|
-
constructor(
|
|
89
|
+
constructor(
|
|
90
|
+
storageService,
|
|
91
|
+
logService,
|
|
92
|
+
extensionService,
|
|
93
|
+
instantiationService,
|
|
94
|
+
workspaceContextService,
|
|
95
|
+
chatSlashCommandService,
|
|
96
|
+
chatAgentService,
|
|
97
|
+
configurationService,
|
|
98
|
+
chatTransferService,
|
|
99
|
+
chatSessionService,
|
|
100
|
+
mcpService
|
|
101
|
+
) {
|
|
88
102
|
super();
|
|
89
103
|
this.storageService = storageService;
|
|
90
104
|
this.logService = logService;
|
|
@@ -103,35 +117,38 @@ let ChatService = class ChatService extends Disposable {
|
|
|
103
117
|
this.onDidSubmitRequest = this._onDidSubmitRequest.event;
|
|
104
118
|
this._onDidPerformUserAction = this._register(( new Emitter()));
|
|
105
119
|
this.onDidPerformUserAction = this._onDidPerformUserAction.event;
|
|
120
|
+
this._onDidReceiveQuestionCarouselAnswer = this._register(( new Emitter()));
|
|
121
|
+
this.onDidReceiveQuestionCarouselAnswer = this._onDidReceiveQuestionCarouselAnswer.event;
|
|
106
122
|
this._onDidDisposeSession = this._register(( new Emitter()));
|
|
107
123
|
this.onDidDisposeSession = this._onDidDisposeSession.event;
|
|
108
124
|
this._sessionFollowupCancelTokens = this._register(( new DisposableResourceMap()));
|
|
109
125
|
this._sessionModels = this._register(instantiationService.createInstance(ChatModelStore, {
|
|
110
|
-
createModel:
|
|
111
|
-
willDisposeModel: async
|
|
126
|
+
createModel: props => this._startSession(props),
|
|
127
|
+
willDisposeModel: async model => {
|
|
112
128
|
const localSessionId = LocalChatSessionUri.parseLocalSessionId(model.sessionResource);
|
|
113
129
|
if (localSessionId && this.shouldStoreSession(model)) {
|
|
114
130
|
if (model.getRequests().length === 0 && !model.customTitle) {
|
|
115
131
|
await this._chatSessionStore.deleteSession(localSessionId);
|
|
116
|
-
}
|
|
117
|
-
else if (this._saveModelsEnabled) {
|
|
132
|
+
} else if (this._saveModelsEnabled) {
|
|
118
133
|
await this._chatSessionStore.storeSessions([model]);
|
|
119
134
|
}
|
|
120
|
-
}
|
|
121
|
-
else if (!localSessionId && model.getRequests().length > 0) {
|
|
135
|
+
} else if (!localSessionId && model.getRequests().length > 0) {
|
|
122
136
|
await this._chatSessionStore.storeSessionsMetadataOnly([model]);
|
|
123
137
|
}
|
|
124
138
|
}
|
|
125
139
|
}));
|
|
126
140
|
this._register(this._sessionModels.onDidDisposeModel(model => {
|
|
127
|
-
this._onDidDisposeSession.fire({
|
|
141
|
+
this._onDidDisposeSession.fire({
|
|
142
|
+
sessionResource: [model.sessionResource],
|
|
143
|
+
reason: "cleared"
|
|
144
|
+
});
|
|
128
145
|
}));
|
|
129
146
|
this._chatServiceTelemetry = this.instantiationService.createInstance(ChatServiceTelemetry);
|
|
130
147
|
this._chatSessionStore = this._register(this.instantiationService.createInstance(ChatSessionStore));
|
|
131
148
|
this._chatSessionStore.migrateDataIfNeeded(() => this.migrateData());
|
|
132
149
|
const transferredData = this._chatSessionStore.getTransferredSessionData();
|
|
133
150
|
if (transferredData) {
|
|
134
|
-
this.trace(
|
|
151
|
+
this.trace("constructor", `Transferred session ${transferredData}`);
|
|
135
152
|
this._transferredSessionResource = transferredData;
|
|
136
153
|
}
|
|
137
154
|
this.reviveSessionsWithEdits();
|
|
@@ -149,12 +166,16 @@ let ChatService = class ChatService extends Disposable {
|
|
|
149
166
|
return this.chatAgentService.getContributedDefaultAgent(location) !== undefined;
|
|
150
167
|
}
|
|
151
168
|
migrateData() {
|
|
152
|
-
const sessionData = this.storageService.get(
|
|
169
|
+
const sessionData = this.storageService.get(
|
|
170
|
+
serializedChatKey,
|
|
171
|
+
this.isEmptyWindow ? StorageScope.APPLICATION : StorageScope.WORKSPACE,
|
|
172
|
+
""
|
|
173
|
+
);
|
|
153
174
|
if (sessionData) {
|
|
154
175
|
const persistedSessions = this.deserializeChats(sessionData);
|
|
155
176
|
const countsForLog = ( Object.keys(persistedSessions)).length;
|
|
156
177
|
if (countsForLog > 0) {
|
|
157
|
-
this.info(
|
|
178
|
+
this.info("migrateData", `Restored ${countsForLog} persisted sessions`);
|
|
158
179
|
}
|
|
159
180
|
return persistedSessions;
|
|
160
181
|
}
|
|
@@ -164,11 +185,11 @@ let ChatService = class ChatService extends Disposable {
|
|
|
164
185
|
if (!this._saveModelsEnabled) {
|
|
165
186
|
return;
|
|
166
187
|
}
|
|
167
|
-
const liveLocalChats = Array.from(( this._sessionModels.values()))
|
|
168
|
-
.filter(session => this.shouldStoreSession(session));
|
|
188
|
+
const liveLocalChats = Array.from(( this._sessionModels.values())).filter(session => this.shouldStoreSession(session));
|
|
169
189
|
this._chatSessionStore.storeSessions(liveLocalChats);
|
|
170
|
-
const liveNonLocalChats = Array.from(( this._sessionModels.values()))
|
|
171
|
-
|
|
190
|
+
const liveNonLocalChats = Array.from(( this._sessionModels.values())).filter(
|
|
191
|
+
session => !LocalChatSessionUri.parseLocalSessionId(session.sessionResource)
|
|
192
|
+
);
|
|
172
193
|
this._chatSessionStore.storeSessionsMetadataOnly(liveNonLocalChats);
|
|
173
194
|
}
|
|
174
195
|
shouldStoreSession(session) {
|
|
@@ -180,13 +201,20 @@ let ChatService = class ChatService extends Disposable {
|
|
|
180
201
|
notifyUserAction(action) {
|
|
181
202
|
this._chatServiceTelemetry.notifyUserAction(action);
|
|
182
203
|
this._onDidPerformUserAction.fire(action);
|
|
183
|
-
if (action.action.kind ===
|
|
204
|
+
if (action.action.kind === "chatEditingSessionAction") {
|
|
184
205
|
const model = this._sessionModels.get(action.sessionResource);
|
|
185
206
|
if (model) {
|
|
186
207
|
model.notifyEditingAction(action.action);
|
|
187
208
|
}
|
|
188
209
|
}
|
|
189
210
|
}
|
|
211
|
+
notifyQuestionCarouselAnswer(requestId, resolveId, answers) {
|
|
212
|
+
this._onDidReceiveQuestionCarouselAnswer.fire({
|
|
213
|
+
requestId,
|
|
214
|
+
resolveId,
|
|
215
|
+
answers
|
|
216
|
+
});
|
|
217
|
+
}
|
|
190
218
|
async setChatSessionTitle(sessionResource, title) {
|
|
191
219
|
const model = this._sessionModels.get(sessionResource);
|
|
192
220
|
if (model) {
|
|
@@ -201,16 +229,14 @@ let ChatService = class ChatService extends Disposable {
|
|
|
201
229
|
trace(method, message) {
|
|
202
230
|
if (message) {
|
|
203
231
|
this.logService.trace(`ChatService#${method}: ${message}`);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
232
|
+
} else {
|
|
206
233
|
this.logService.trace(`ChatService#${method}`);
|
|
207
234
|
}
|
|
208
235
|
}
|
|
209
236
|
info(method, message) {
|
|
210
237
|
if (message) {
|
|
211
238
|
this.logService.info(`ChatService#${method}: ${message}`);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
239
|
+
} else {
|
|
214
240
|
this.logService.info(`ChatService#${method}`);
|
|
215
241
|
}
|
|
216
242
|
}
|
|
@@ -221,19 +247,18 @@ let ChatService = class ChatService extends Disposable {
|
|
|
221
247
|
try {
|
|
222
248
|
const arrayOfSessions = revive(JSON.parse(sessionData));
|
|
223
249
|
if (!Array.isArray(arrayOfSessions)) {
|
|
224
|
-
throw ( new Error(
|
|
250
|
+
throw ( new Error("Expected array"));
|
|
225
251
|
}
|
|
226
252
|
const sessions = arrayOfSessions.reduce((acc, session) => {
|
|
227
253
|
for (const request of session.requests) {
|
|
228
254
|
if (Array.isArray(request.response)) {
|
|
229
|
-
request.response = ( request.response.map(
|
|
230
|
-
if (typeof response ===
|
|
255
|
+
request.response = ( request.response.map(response => {
|
|
256
|
+
if (typeof response === "string") {
|
|
231
257
|
return ( new MarkdownString(response));
|
|
232
258
|
}
|
|
233
259
|
return response;
|
|
234
260
|
}));
|
|
235
|
-
}
|
|
236
|
-
else if (typeof request.response === 'string') {
|
|
261
|
+
} else if (typeof request.response === "string") {
|
|
237
262
|
request.response = [( new MarkdownString(request.response))];
|
|
238
263
|
}
|
|
239
264
|
}
|
|
@@ -241,15 +266,17 @@ let ChatService = class ChatService extends Disposable {
|
|
|
241
266
|
return acc;
|
|
242
267
|
}, {});
|
|
243
268
|
return sessions;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
269
|
+
} catch (err) {
|
|
270
|
+
this.error(
|
|
271
|
+
"deserializeChats",
|
|
272
|
+
`Malformed session data: ${err}. [${sessionData.substring(0, 20)}${sessionData.length > 20 ? "..." : ""}]`
|
|
273
|
+
);
|
|
247
274
|
return {};
|
|
248
275
|
}
|
|
249
276
|
}
|
|
250
277
|
async reviveSessionsWithEdits() {
|
|
251
278
|
const idx = await this._chatSessionStore.getIndex();
|
|
252
|
-
await Promise.all(( ( Object.values(idx)).map(async
|
|
279
|
+
await Promise.all(( ( Object.values(idx)).map(async session => {
|
|
253
280
|
if (!session.hasPendingEdits) {
|
|
254
281
|
return;
|
|
255
282
|
}
|
|
@@ -267,10 +294,8 @@ let ChatService = class ChatService extends Disposable {
|
|
|
267
294
|
return [...liveSessionItems, ...historySessionItems];
|
|
268
295
|
}
|
|
269
296
|
async getLiveSessionItems() {
|
|
270
|
-
return await Promise.all(( Array.from(( this._sessionModels.values()))
|
|
271
|
-
.
|
|
272
|
-
.map(async (session) => {
|
|
273
|
-
const title = session.title || ( localize(5944, "New Chat"));
|
|
297
|
+
return await Promise.all(( Array.from(( this._sessionModels.values())).filter(session => this.shouldBeInHistory(session)).map(async session => {
|
|
298
|
+
const title = session.title || ( localize(6219, "New Chat"));
|
|
274
299
|
return {
|
|
275
300
|
sessionResource: session.sessionResource,
|
|
276
301
|
title,
|
|
@@ -278,23 +303,25 @@ let ChatService = class ChatService extends Disposable {
|
|
|
278
303
|
timing: session.timing,
|
|
279
304
|
isActive: true,
|
|
280
305
|
stats: await awaitStatsForSession(session),
|
|
281
|
-
lastResponseState: session.lastRequest?.response?.state ?? ResponseModelState.Pending
|
|
306
|
+
lastResponseState: session.lastRequest?.response?.state ?? ResponseModelState.Pending
|
|
282
307
|
};
|
|
283
308
|
})));
|
|
284
309
|
}
|
|
285
310
|
async getHistorySessionItems() {
|
|
286
311
|
const index = await this._chatSessionStore.getIndex();
|
|
287
|
-
return ( ( Object.values(index))
|
|
288
|
-
.filter(entry => !entry.isExternal)
|
|
289
|
-
.filter(entry => !( this._sessionModels.has(LocalChatSessionUri.forSession(entry.sessionId))) && entry.initialLocation === ChatAgentLocation.Chat && !entry.isEmpty)
|
|
290
|
-
.map((entry) => {
|
|
312
|
+
return ( ( Object.values(index)).filter(entry => !entry.isExternal).filter(entry => !( this._sessionModels.has(LocalChatSessionUri.forSession(entry.sessionId))) && entry.initialLocation === ChatAgentLocation.Chat && !entry.isEmpty).map(entry => {
|
|
291
313
|
const sessionResource = LocalChatSessionUri.forSession(entry.sessionId);
|
|
314
|
+
const lastResponseState = entry.lastResponseState ?? ResponseModelState.Complete;
|
|
292
315
|
return ({
|
|
293
316
|
...entry,
|
|
294
317
|
sessionResource,
|
|
295
|
-
timing: entry.timing ?? {
|
|
318
|
+
timing: entry.timing ?? {
|
|
319
|
+
created: entry.lastMessageDate,
|
|
320
|
+
lastRequestStarted: undefined,
|
|
321
|
+
lastRequestEnded: entry.lastMessageDate
|
|
322
|
+
},
|
|
296
323
|
isActive: ( this._sessionModels.has(sessionResource)),
|
|
297
|
-
lastResponseState:
|
|
324
|
+
lastResponseState: lastResponseState === ResponseModelState.Pending || lastResponseState === ResponseModelState.NeedsInput ? ResponseModelState.Complete : lastResponseState
|
|
298
325
|
});
|
|
299
326
|
}));
|
|
300
327
|
}
|
|
@@ -305,9 +332,13 @@ let ChatService = class ChatService extends Disposable {
|
|
|
305
332
|
return {
|
|
306
333
|
...metadata,
|
|
307
334
|
sessionResource,
|
|
308
|
-
timing: metadata.timing ?? {
|
|
335
|
+
timing: metadata.timing ?? {
|
|
336
|
+
created: metadata.lastMessageDate,
|
|
337
|
+
lastRequestStarted: undefined,
|
|
338
|
+
lastRequestEnded: metadata.lastMessageDate
|
|
339
|
+
},
|
|
309
340
|
isActive: ( this._sessionModels.has(sessionResource)),
|
|
310
|
-
lastResponseState: metadata.lastResponseState ?? ResponseModelState.Complete
|
|
341
|
+
lastResponseState: metadata.lastResponseState ?? ResponseModelState.Complete
|
|
311
342
|
};
|
|
312
343
|
}
|
|
313
344
|
return undefined;
|
|
@@ -317,13 +348,16 @@ let ChatService = class ChatService extends Disposable {
|
|
|
317
348
|
}
|
|
318
349
|
async removeHistoryEntry(sessionResource) {
|
|
319
350
|
await this._chatSessionStore.deleteSession(this.toLocalSessionId(sessionResource));
|
|
320
|
-
this._onDidDisposeSession.fire({
|
|
351
|
+
this._onDidDisposeSession.fire({
|
|
352
|
+
sessionResource: [sessionResource],
|
|
353
|
+
reason: "cleared"
|
|
354
|
+
});
|
|
321
355
|
}
|
|
322
356
|
async clearAllHistoryEntries() {
|
|
323
357
|
await this._chatSessionStore.clearAllSessions();
|
|
324
358
|
}
|
|
325
359
|
startSession(location, options) {
|
|
326
|
-
this.trace(
|
|
360
|
+
this.trace("startSession");
|
|
327
361
|
const sessionId = generateUuid();
|
|
328
362
|
const sessionResource = LocalChatSessionUri.forSession(sessionId);
|
|
329
363
|
return this._sessionModels.acquireOrCreate({
|
|
@@ -336,8 +370,24 @@ let ChatService = class ChatService extends Disposable {
|
|
|
336
370
|
});
|
|
337
371
|
}
|
|
338
372
|
_startSession(props) {
|
|
339
|
-
const {
|
|
340
|
-
|
|
373
|
+
const {
|
|
374
|
+
initialData,
|
|
375
|
+
location,
|
|
376
|
+
sessionResource,
|
|
377
|
+
sessionId,
|
|
378
|
+
canUseTools,
|
|
379
|
+
transferEditingSession,
|
|
380
|
+
disableBackgroundKeepAlive,
|
|
381
|
+
inputState
|
|
382
|
+
} = props;
|
|
383
|
+
const model = this.instantiationService.createInstance(ChatModel, initialData, {
|
|
384
|
+
initialLocation: location,
|
|
385
|
+
canUseTools,
|
|
386
|
+
resource: sessionResource,
|
|
387
|
+
sessionId,
|
|
388
|
+
disableBackgroundKeepAlive,
|
|
389
|
+
inputState
|
|
390
|
+
});
|
|
341
391
|
if (location === ChatAgentLocation.Chat) {
|
|
342
392
|
model.startEditingSession(true, transferEditingSession);
|
|
343
393
|
}
|
|
@@ -345,14 +395,14 @@ let ChatService = class ChatService extends Disposable {
|
|
|
345
395
|
return model;
|
|
346
396
|
}
|
|
347
397
|
initializeSession(model) {
|
|
348
|
-
this.trace(
|
|
398
|
+
this.trace("initializeSession", `Initialize session ${model.sessionResource}`);
|
|
349
399
|
this.activateDefaultAgent(model.initialLocation).catch(e => this.logService.error(e));
|
|
350
400
|
}
|
|
351
401
|
async activateDefaultAgent(location) {
|
|
352
402
|
await this.extensionService.whenInstalledExtensionsRegistered();
|
|
353
403
|
const defaultAgentData = this.chatAgentService.getContributedDefaultAgent(location) ?? this.chatAgentService.getContributedDefaultAgent(ChatAgentLocation.Chat);
|
|
354
404
|
if (!defaultAgentData) {
|
|
355
|
-
throw ( new ErrorNoTelemetry(
|
|
405
|
+
throw ( new ErrorNoTelemetry("No default agent contributed"));
|
|
356
406
|
}
|
|
357
407
|
if (!defaultAgentData.isCore) {
|
|
358
408
|
await this.extensionService.activateById(defaultAgentData.extensionId, {
|
|
@@ -363,7 +413,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
363
413
|
}
|
|
364
414
|
const defaultAgent = this.chatAgentService.getActivatedAgents().find(agent => agent.id === defaultAgentData.id);
|
|
365
415
|
if (!defaultAgent) {
|
|
366
|
-
throw ( new ErrorNoTelemetry(
|
|
416
|
+
throw ( new ErrorNoTelemetry("No default agent registered"));
|
|
367
417
|
}
|
|
368
418
|
}
|
|
369
419
|
getSession(sessionResource) {
|
|
@@ -373,7 +423,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
373
423
|
return this._sessionModels.acquireExisting(sessionResource);
|
|
374
424
|
}
|
|
375
425
|
async getOrRestoreSession(sessionResource) {
|
|
376
|
-
this.trace(
|
|
426
|
+
this.trace("getOrRestoreSession", `${sessionResource}`);
|
|
377
427
|
const existingRef = this._sessionModels.acquireExisting(sessionResource);
|
|
378
428
|
if (existingRef) {
|
|
379
429
|
return existingRef;
|
|
@@ -385,20 +435,19 @@ let ChatService = class ChatService extends Disposable {
|
|
|
385
435
|
let sessionData;
|
|
386
436
|
if (isEqual(this.transferredSessionResource, sessionResource)) {
|
|
387
437
|
this._transferredSessionResource = undefined;
|
|
388
|
-
sessionData =
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
sessionData = revive(await this._chatSessionStore.readSession(sessionId));
|
|
438
|
+
sessionData = await this._chatSessionStore.readTransferredSession(sessionResource);
|
|
439
|
+
} else {
|
|
440
|
+
sessionData = await this._chatSessionStore.readSession(sessionId);
|
|
392
441
|
}
|
|
393
442
|
if (!sessionData) {
|
|
394
443
|
return undefined;
|
|
395
444
|
}
|
|
396
445
|
const sessionRef = this._sessionModels.acquireOrCreate({
|
|
397
446
|
initialData: sessionData,
|
|
398
|
-
location: sessionData.initialLocation ?? ChatAgentLocation.Chat,
|
|
447
|
+
location: sessionData.value.initialLocation ?? ChatAgentLocation.Chat,
|
|
399
448
|
sessionResource,
|
|
400
449
|
sessionId,
|
|
401
|
-
canUseTools: true
|
|
450
|
+
canUseTools: true
|
|
402
451
|
});
|
|
403
452
|
return sessionRef;
|
|
404
453
|
}
|
|
@@ -407,18 +456,20 @@ let ChatService = class ChatService extends Disposable {
|
|
|
407
456
|
if (!sessionId) {
|
|
408
457
|
return undefined;
|
|
409
458
|
}
|
|
410
|
-
return this._sessionModels.get(sessionResource)?.title ??
|
|
411
|
-
this._chatSessionStore.getMetadataForSessionSync(sessionResource)?.title;
|
|
459
|
+
return this._sessionModels.get(sessionResource)?.title ?? this._chatSessionStore.getMetadataForSessionSync(sessionResource)?.title;
|
|
412
460
|
}
|
|
413
461
|
loadSessionFromContent(data) {
|
|
414
462
|
const sessionId = data.sessionId ?? generateUuid();
|
|
415
463
|
const sessionResource = LocalChatSessionUri.forSession(sessionId);
|
|
416
464
|
return this._sessionModels.acquireOrCreate({
|
|
417
|
-
initialData:
|
|
465
|
+
initialData: {
|
|
466
|
+
value: data,
|
|
467
|
+
serializer: ( new ChatSessionOperationLog())
|
|
468
|
+
},
|
|
418
469
|
location: data.initialLocation ?? ChatAgentLocation.Chat,
|
|
419
470
|
sessionResource,
|
|
420
471
|
sessionId,
|
|
421
|
-
canUseTools: true
|
|
472
|
+
canUseTools: true
|
|
422
473
|
});
|
|
423
474
|
}
|
|
424
475
|
async loadSessionForResource(chatSessionResource, location, token) {
|
|
@@ -437,12 +488,12 @@ let ChatService = class ChatService extends Disposable {
|
|
|
437
488
|
sessionResource: chatSessionResource,
|
|
438
489
|
canUseTools: false,
|
|
439
490
|
transferEditingSession: providedSession.transferredState?.editingSession,
|
|
440
|
-
inputState: providedSession.transferredState?.inputState
|
|
491
|
+
inputState: providedSession.transferredState?.inputState
|
|
441
492
|
});
|
|
442
493
|
modelRef.object.setContributedChatSession({
|
|
443
494
|
chatSessionResource,
|
|
444
495
|
chatSessionType,
|
|
445
|
-
isUntitled: chatSessionResource.path.startsWith(
|
|
496
|
+
isUntitled: chatSessionResource.path.startsWith("/untitled-")
|
|
446
497
|
});
|
|
447
498
|
const model = modelRef.object;
|
|
448
499
|
const disposables = ( new DisposableStore());
|
|
@@ -452,27 +503,32 @@ let ChatService = class ChatService extends Disposable {
|
|
|
452
503
|
}));
|
|
453
504
|
let lastRequest;
|
|
454
505
|
for (const message of providedSession.history) {
|
|
455
|
-
if (message.type ===
|
|
506
|
+
if (message.type === "request") {
|
|
456
507
|
if (lastRequest) {
|
|
457
508
|
lastRequest.response?.complete();
|
|
458
509
|
}
|
|
459
510
|
const requestText = message.prompt;
|
|
460
511
|
const parsedRequest = {
|
|
461
512
|
text: requestText,
|
|
462
|
-
parts: [( new ChatRequestTextPart(( new OffsetRange(0, requestText.length)), {
|
|
513
|
+
parts: [( new ChatRequestTextPart(( new OffsetRange(0, requestText.length)), {
|
|
514
|
+
startLineNumber: 1,
|
|
515
|
+
startColumn: 1,
|
|
516
|
+
endLineNumber: 1,
|
|
517
|
+
endColumn: requestText.length + 1
|
|
518
|
+
}, requestText))]
|
|
463
519
|
};
|
|
464
|
-
const agent = message.participant
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
520
|
+
const agent = message.participant ?
|
|
521
|
+
this.chatAgentService.getAgent(message.participant) : this.chatAgentService.getAgent(chatSessionType);
|
|
522
|
+
lastRequest = model.addRequest(parsedRequest, message.variableData ?? {
|
|
523
|
+
variables: []
|
|
524
|
+
}, 0,
|
|
468
525
|
undefined, agent, undefined,
|
|
469
526
|
undefined,
|
|
470
527
|
undefined,
|
|
471
528
|
undefined,
|
|
472
529
|
false,
|
|
473
530
|
undefined, undefined, message.id);
|
|
474
|
-
}
|
|
475
|
-
else {
|
|
531
|
+
} else {
|
|
476
532
|
if (lastRequest) {
|
|
477
533
|
for (const part of message.parts) {
|
|
478
534
|
model.acceptResponseProgress(lastRequest, part);
|
|
@@ -487,7 +543,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
487
543
|
const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
|
|
488
544
|
this._pendingRequests.set(model.sessionResource, initialCancellationRequest);
|
|
489
545
|
const cancellationListener = disposables.add(( new MutableDisposable()));
|
|
490
|
-
const createCancellationListener =
|
|
546
|
+
const createCancellationListener = token => {
|
|
491
547
|
return token.onCancellationRequested(() => {
|
|
492
548
|
providedSession.interruptActiveResponseCallback?.().then(userConfirmedInterruption => {
|
|
493
549
|
if (!userConfirmedInterruption) {
|
|
@@ -515,8 +571,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
515
571
|
cancellationListener.clear();
|
|
516
572
|
}
|
|
517
573
|
}));
|
|
518
|
-
}
|
|
519
|
-
else {
|
|
574
|
+
} else {
|
|
520
575
|
if (lastRequest && model.editingSession) {
|
|
521
576
|
await chatEditingSessionIsReady(model.editingSession);
|
|
522
577
|
lastRequest.response?.complete();
|
|
@@ -529,7 +584,9 @@ let ChatService = class ChatService extends Disposable {
|
|
|
529
584
|
if (!model) {
|
|
530
585
|
return;
|
|
531
586
|
}
|
|
532
|
-
const {
|
|
587
|
+
const {
|
|
588
|
+
contributedChatSession
|
|
589
|
+
} = model;
|
|
533
590
|
return contributedChatSession;
|
|
534
591
|
}
|
|
535
592
|
async resendRequest(request, options) {
|
|
@@ -539,7 +596,10 @@ let ChatService = class ChatService extends Disposable {
|
|
|
539
596
|
}
|
|
540
597
|
const cts = this._pendingRequests.get(request.session.sessionResource);
|
|
541
598
|
if (cts) {
|
|
542
|
-
this.trace(
|
|
599
|
+
this.trace(
|
|
600
|
+
"resendRequest",
|
|
601
|
+
`Session ${request.session.sessionResource} already has a pending request, cancelling...`
|
|
602
|
+
);
|
|
543
603
|
cts.cancel();
|
|
544
604
|
}
|
|
545
605
|
const location = options?.location ?? model.initialLocation;
|
|
@@ -550,14 +610,23 @@ let ChatService = class ChatService extends Disposable {
|
|
|
550
610
|
const resendOptions = {
|
|
551
611
|
...options,
|
|
552
612
|
locationData: request.locationData,
|
|
553
|
-
attachedContext: request.attachedContext
|
|
613
|
+
attachedContext: request.attachedContext
|
|
554
614
|
};
|
|
555
|
-
await this._sendRequestAsync(
|
|
615
|
+
await this._sendRequestAsync(
|
|
616
|
+
model,
|
|
617
|
+
model.sessionResource,
|
|
618
|
+
request.message,
|
|
619
|
+
attempt,
|
|
620
|
+
enableCommandDetection,
|
|
621
|
+
defaultAgent,
|
|
622
|
+
location,
|
|
623
|
+
resendOptions
|
|
624
|
+
).responseCompletePromise;
|
|
556
625
|
}
|
|
557
626
|
async sendRequest(sessionResource, request, options) {
|
|
558
|
-
this.trace(
|
|
627
|
+
this.trace("sendRequest", `sessionResource: ${( sessionResource.toString())}, message: ${request.substring(0, 20)}${request.length > 20 ? "[...]" : ""}}`);
|
|
559
628
|
if (!request.trim() && !options?.slashCommand && !options?.agentId && !options?.agentIdSilent) {
|
|
560
|
-
this.trace(
|
|
629
|
+
this.trace("sendRequest", "Rejected empty message");
|
|
561
630
|
return;
|
|
562
631
|
}
|
|
563
632
|
const model = this._sessionModels.get(sessionResource);
|
|
@@ -565,7 +634,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
565
634
|
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
566
635
|
}
|
|
567
636
|
if (( this._pendingRequests.has(sessionResource))) {
|
|
568
|
-
this.trace(
|
|
637
|
+
this.trace("sendRequest", `Session ${sessionResource} already has a pending request`);
|
|
569
638
|
return;
|
|
570
639
|
}
|
|
571
640
|
const requests = model.getRequests();
|
|
@@ -574,8 +643,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
574
643
|
if (request.shouldBeRemovedOnSend) {
|
|
575
644
|
if (request.shouldBeRemovedOnSend.afterUndoStop) {
|
|
576
645
|
request.response?.finalizeUndoState();
|
|
577
|
-
}
|
|
578
|
-
else {
|
|
646
|
+
} else {
|
|
579
647
|
await this.removeRequest(sessionResource, request.id);
|
|
580
648
|
}
|
|
581
649
|
}
|
|
@@ -585,12 +653,21 @@ let ChatService = class ChatService extends Disposable {
|
|
|
585
653
|
const defaultAgent = this.chatAgentService.getDefaultAgent(location, options?.modeInfo?.kind);
|
|
586
654
|
const parsedRequest = this.parseChatRequest(sessionResource, request, location, options);
|
|
587
655
|
const silentAgent = options?.agentIdSilent ? this.chatAgentService.getAgent(options.agentIdSilent) : undefined;
|
|
588
|
-
const agent = silentAgent ?? parsedRequest.parts.find(
|
|
589
|
-
const agentSlashCommandPart = parsedRequest.parts.find(
|
|
656
|
+
const agent = silentAgent ?? parsedRequest.parts.find(r => r instanceof ChatRequestAgentPart)?.agent ?? defaultAgent;
|
|
657
|
+
const agentSlashCommandPart = parsedRequest.parts.find(r => r instanceof ChatRequestAgentSubcommandPart);
|
|
590
658
|
return {
|
|
591
|
-
...this._sendRequestAsync(
|
|
659
|
+
...this._sendRequestAsync(
|
|
660
|
+
model,
|
|
661
|
+
sessionResource,
|
|
662
|
+
parsedRequest,
|
|
663
|
+
attempt,
|
|
664
|
+
!options?.noCommandDetection,
|
|
665
|
+
silentAgent ?? defaultAgent,
|
|
666
|
+
location,
|
|
667
|
+
options
|
|
668
|
+
),
|
|
592
669
|
agent,
|
|
593
|
-
slashCommand: agentSlashCommandPart?.command
|
|
670
|
+
slashCommand: agentSlashCommandPart?.command
|
|
594
671
|
};
|
|
595
672
|
}
|
|
596
673
|
parseChatRequest(sessionResource, request, location, options) {
|
|
@@ -600,8 +677,11 @@ let ChatService = class ChatService extends Disposable {
|
|
|
600
677
|
if (!agent) {
|
|
601
678
|
throw ( new Error(`Unknown agent: ${options.agentId}`));
|
|
602
679
|
}
|
|
603
|
-
parserContext = {
|
|
604
|
-
|
|
680
|
+
parserContext = {
|
|
681
|
+
selectedAgent: agent,
|
|
682
|
+
mode: options.modeInfo?.kind
|
|
683
|
+
};
|
|
684
|
+
const commandPart = options.slashCommand ? ` ${chatSubcommandLeader}${options.slashCommand}` : "";
|
|
605
685
|
request = `${chatAgentLeader}${agent.name}${commandPart} ${request}`;
|
|
606
686
|
}
|
|
607
687
|
const parsedRequest = this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(sessionResource, request, location, parserContext);
|
|
@@ -613,12 +693,21 @@ let ChatService = class ChatService extends Disposable {
|
|
|
613
693
|
this._sessionFollowupCancelTokens.set(sessionResource, newTokenSource);
|
|
614
694
|
return newTokenSource.token;
|
|
615
695
|
}
|
|
616
|
-
_sendRequestAsync(
|
|
696
|
+
_sendRequestAsync(
|
|
697
|
+
model,
|
|
698
|
+
sessionResource,
|
|
699
|
+
parsedRequest,
|
|
700
|
+
attempt,
|
|
701
|
+
enableCommandDetection,
|
|
702
|
+
defaultAgent,
|
|
703
|
+
location,
|
|
704
|
+
options
|
|
705
|
+
) {
|
|
617
706
|
const followupsCancelToken = this.refreshFollowupsCancellationToken(sessionResource);
|
|
618
707
|
let request;
|
|
619
|
-
const agentPart = parsedRequest.parts.find(
|
|
620
|
-
const agentSlashCommandPart = parsedRequest.parts.find(
|
|
621
|
-
const commandPart = parsedRequest.parts.find(
|
|
708
|
+
const agentPart = parsedRequest.parts.find(r => r instanceof ChatRequestAgentPart);
|
|
709
|
+
const agentSlashCommandPart = parsedRequest.parts.find(r => r instanceof ChatRequestAgentSubcommandPart);
|
|
710
|
+
const commandPart = parsedRequest.parts.find(r => r instanceof ChatRequestSlashCommandPart);
|
|
622
711
|
const requests = [...model.getRequests()];
|
|
623
712
|
const requestTelemetry = this.instantiationService.createInstance(ChatRequestTelemetry, {
|
|
624
713
|
agent: agentPart?.agent ?? defaultAgent,
|
|
@@ -630,7 +719,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
630
719
|
enableCommandDetection
|
|
631
720
|
});
|
|
632
721
|
let gotProgress = false;
|
|
633
|
-
const requestType = commandPart ?
|
|
722
|
+
const requestType = commandPart ? "slashCommand" : "string";
|
|
634
723
|
const responseCreated = ( new DeferredPromise());
|
|
635
724
|
let responseCreatedComplete = false;
|
|
636
725
|
function completeResponseCreated() {
|
|
@@ -643,7 +732,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
643
732
|
const source = store.add(( new CancellationTokenSource()));
|
|
644
733
|
const token = source.token;
|
|
645
734
|
const sendRequestInternal = async () => {
|
|
646
|
-
const progressCallback =
|
|
735
|
+
const progressCallback = progress => {
|
|
647
736
|
if (token.isCancellationRequested) {
|
|
648
737
|
return;
|
|
649
738
|
}
|
|
@@ -651,11 +740,16 @@ let ChatService = class ChatService extends Disposable {
|
|
|
651
740
|
for (let i = 0; i < progress.length; i++) {
|
|
652
741
|
const isLast = i === progress.length - 1;
|
|
653
742
|
const progressItem = progress[i];
|
|
654
|
-
if (progressItem.kind ===
|
|
655
|
-
this.trace(
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
743
|
+
if (progressItem.kind === "markdownContent") {
|
|
744
|
+
this.trace(
|
|
745
|
+
"sendRequest",
|
|
746
|
+
`Provider returned progress for session ${model.sessionResource}, ${progressItem.content.value.length} chars`
|
|
747
|
+
);
|
|
748
|
+
} else {
|
|
749
|
+
this.trace(
|
|
750
|
+
"sendRequest",
|
|
751
|
+
`Provider returned progress: ${JSON.stringify(progressItem)}`
|
|
752
|
+
);
|
|
659
753
|
}
|
|
660
754
|
model.acceptResponseProgress(request, progressItem, !isLast);
|
|
661
755
|
}
|
|
@@ -665,17 +759,20 @@ let ChatService = class ChatService extends Disposable {
|
|
|
665
759
|
let detectedCommand;
|
|
666
760
|
const stopWatch = ( new StopWatch(false));
|
|
667
761
|
store.add(token.onCancellationRequested(() => {
|
|
668
|
-
this.trace(
|
|
762
|
+
this.trace(
|
|
763
|
+
"sendRequest",
|
|
764
|
+
`Request for session ${model.sessionResource} was cancelled`
|
|
765
|
+
);
|
|
669
766
|
if (!request) {
|
|
670
767
|
return;
|
|
671
768
|
}
|
|
672
769
|
requestTelemetry.complete({
|
|
673
770
|
timeToFirstProgress: undefined,
|
|
674
|
-
result:
|
|
771
|
+
result: "cancelled",
|
|
675
772
|
totalTime: stopWatch.elapsed(),
|
|
676
773
|
requestType,
|
|
677
774
|
detectedAgent,
|
|
678
|
-
request
|
|
775
|
+
request
|
|
679
776
|
});
|
|
680
777
|
model.cancelRequest(request);
|
|
681
778
|
}));
|
|
@@ -684,16 +781,32 @@ let ChatService = class ChatService extends Disposable {
|
|
|
684
781
|
let agentOrCommandFollowups = undefined;
|
|
685
782
|
if (agentPart || (defaultAgent && !commandPart)) {
|
|
686
783
|
const prepareChatAgentRequest = (agent, command, enableCommandDetection, chatRequest, isParticipantDetected) => {
|
|
687
|
-
const initVariableData = {
|
|
688
|
-
|
|
784
|
+
const initVariableData = {
|
|
785
|
+
variables: []
|
|
786
|
+
};
|
|
787
|
+
request = chatRequest ?? model.addRequest(
|
|
788
|
+
parsedRequest,
|
|
789
|
+
initVariableData,
|
|
790
|
+
attempt,
|
|
791
|
+
options?.modeInfo,
|
|
792
|
+
agent,
|
|
793
|
+
command,
|
|
794
|
+
options?.confirmation,
|
|
795
|
+
options?.locationData,
|
|
796
|
+
options?.attachedContext,
|
|
797
|
+
undefined,
|
|
798
|
+
options?.userSelectedModelId,
|
|
799
|
+
options?.userSelectedTools?.get()
|
|
800
|
+
);
|
|
689
801
|
let variableData;
|
|
690
802
|
let message;
|
|
691
803
|
if (chatRequest) {
|
|
692
804
|
variableData = chatRequest.variableData;
|
|
693
805
|
message = getPromptText(request.message).message;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
|
|
806
|
+
} else {
|
|
807
|
+
variableData = {
|
|
808
|
+
variables: this.prepareContext(request.attachedContext)
|
|
809
|
+
};
|
|
697
810
|
model.updateRequest(request, variableData);
|
|
698
811
|
const promptTextResult = getPromptText(request.message);
|
|
699
812
|
variableData = updateRanges(variableData, promptTextResult.diff);
|
|
@@ -716,7 +829,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
716
829
|
userSelectedModelId: options?.userSelectedModelId,
|
|
717
830
|
userSelectedTools: options?.userSelectedTools?.get(),
|
|
718
831
|
modeInstructions: options?.modeInfo?.modeInstructions,
|
|
719
|
-
editedFileEvents: request.editedFileEvents
|
|
832
|
+
editedFileEvents: request.editedFileEvents
|
|
720
833
|
};
|
|
721
834
|
let isInitialTools = true;
|
|
722
835
|
store.add(autorun(reader => {
|
|
@@ -732,19 +845,12 @@ let ChatService = class ChatService extends Disposable {
|
|
|
732
845
|
}));
|
|
733
846
|
return agentRequest;
|
|
734
847
|
};
|
|
735
|
-
if (this.configurationService.getValue(
|
|
736
|
-
this.chatAgentService.hasChatParticipantDetectionProviders() &&
|
|
737
|
-
!agentPart &&
|
|
738
|
-
!commandPart &&
|
|
739
|
-
!agentSlashCommandPart &&
|
|
740
|
-
enableCommandDetection &&
|
|
741
|
-
(location !== ChatAgentLocation.EditorInline || !this.configurationService.getValue(InlineChatConfigKeys.EnableV2)) &&
|
|
742
|
-
options?.modeInfo?.kind !== ChatModeKind.Agent &&
|
|
743
|
-
options?.modeInfo?.kind !== ChatModeKind.Edit &&
|
|
744
|
-
!options?.agentIdSilent) {
|
|
848
|
+
if (this.configurationService.getValue("chat.detectParticipant.enabled") !== false && this.chatAgentService.hasChatParticipantDetectionProviders() && !agentPart && !commandPart && !agentSlashCommandPart && enableCommandDetection && (location !== ChatAgentLocation.EditorInline || !this.configurationService.getValue(InlineChatConfigKeys.EnableV2)) && options?.modeInfo?.kind !== ChatModeKind.Agent && options?.modeInfo?.kind !== ChatModeKind.Edit && !options?.agentIdSilent) {
|
|
745
849
|
const defaultAgentHistory = this.getHistoryEntriesFromModel(requests, location, defaultAgent.id);
|
|
746
850
|
const chatAgentRequest = prepareChatAgentRequest(defaultAgent, undefined, enableCommandDetection, undefined, false);
|
|
747
|
-
const result = await this.chatAgentService.detectAgentOrCommand(chatAgentRequest, defaultAgentHistory, {
|
|
851
|
+
const result = await this.chatAgentService.detectAgentOrCommand(chatAgentRequest, defaultAgentHistory, {
|
|
852
|
+
location
|
|
853
|
+
}, token);
|
|
748
854
|
if (result && this.chatAgentService.getAgent(result.agent.id)?.locations?.includes(location)) {
|
|
749
855
|
request.response?.setAgent(result.agent, result.command);
|
|
750
856
|
detectedAgent = result.agent;
|
|
@@ -755,7 +861,13 @@ let ChatService = class ChatService extends Disposable {
|
|
|
755
861
|
const command = detectedCommand ?? agentSlashCommandPart?.command;
|
|
756
862
|
await this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`);
|
|
757
863
|
const history = this.getHistoryEntriesFromModel(requests, location, agent.id);
|
|
758
|
-
const requestProps = prepareChatAgentRequest(
|
|
864
|
+
const requestProps = prepareChatAgentRequest(
|
|
865
|
+
agent,
|
|
866
|
+
command,
|
|
867
|
+
enableCommandDetection,
|
|
868
|
+
request,
|
|
869
|
+
!!detectedAgent
|
|
870
|
+
);
|
|
759
871
|
this.generateInitialChatTitleIfNeeded(model, requestProps, defaultAgent, token);
|
|
760
872
|
const pendingRequest = this._pendingRequests.get(sessionResource);
|
|
761
873
|
if (pendingRequest && !pendingRequest.requestId) {
|
|
@@ -772,10 +884,11 @@ let ChatService = class ChatService extends Disposable {
|
|
|
772
884
|
const agentResult = await this.chatAgentService.invokeAgent(agent.id, requestProps, progressCallback, history, token);
|
|
773
885
|
rawResult = agentResult;
|
|
774
886
|
agentOrCommandFollowups = this.chatAgentService.getFollowups(agent.id, requestProps, agentResult, history, followupsCancelToken);
|
|
775
|
-
}
|
|
776
|
-
else if (commandPart && this.chatSlashCommandService.hasCommand(commandPart.slashCommand.command)) {
|
|
887
|
+
} else if (commandPart && this.chatSlashCommandService.hasCommand(commandPart.slashCommand.command)) {
|
|
777
888
|
if (commandPart.slashCommand.silent !== true) {
|
|
778
|
-
request = model.addRequest(parsedRequest, {
|
|
889
|
+
request = model.addRequest(parsedRequest, {
|
|
890
|
+
variables: []
|
|
891
|
+
}, attempt, options?.modeInfo);
|
|
779
892
|
completeResponseCreated();
|
|
780
893
|
}
|
|
781
894
|
const history = [];
|
|
@@ -783,82 +896,114 @@ let ChatService = class ChatService extends Disposable {
|
|
|
783
896
|
if (!modelRequest.response) {
|
|
784
897
|
continue;
|
|
785
898
|
}
|
|
786
|
-
history.push({
|
|
787
|
-
|
|
899
|
+
history.push({
|
|
900
|
+
role: ChatMessageRole.User,
|
|
901
|
+
content: [{
|
|
902
|
+
type: "text",
|
|
903
|
+
value: modelRequest.message.text
|
|
904
|
+
}]
|
|
905
|
+
});
|
|
906
|
+
history.push({
|
|
907
|
+
role: ChatMessageRole.Assistant,
|
|
908
|
+
content: [{
|
|
909
|
+
type: "text",
|
|
910
|
+
value: ( modelRequest.response.response.toString())
|
|
911
|
+
}]
|
|
912
|
+
});
|
|
788
913
|
}
|
|
789
914
|
const message = parsedRequest.text;
|
|
790
|
-
const commandResult = await this.chatSlashCommandService.executeCommand(
|
|
791
|
-
|
|
792
|
-
|
|
915
|
+
const commandResult = await this.chatSlashCommandService.executeCommand(
|
|
916
|
+
commandPart.slashCommand.command,
|
|
917
|
+
message.substring(commandPart.slashCommand.command.length + 1).trimStart(),
|
|
918
|
+
( new Progress(p => {
|
|
919
|
+
progressCallback([p]);
|
|
920
|
+
})),
|
|
921
|
+
history,
|
|
922
|
+
location,
|
|
923
|
+
model.sessionResource,
|
|
924
|
+
token
|
|
925
|
+
);
|
|
793
926
|
agentOrCommandFollowups = Promise.resolve(commandResult?.followUp);
|
|
794
927
|
rawResult = {};
|
|
795
|
-
}
|
|
796
|
-
else {
|
|
928
|
+
} else {
|
|
797
929
|
throw ( new Error(`Cannot handle request`));
|
|
798
930
|
}
|
|
799
931
|
if (token.isCancellationRequested && !rawResult) {
|
|
800
932
|
return;
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
933
|
+
} else {
|
|
803
934
|
if (!rawResult) {
|
|
804
|
-
this.trace(
|
|
805
|
-
|
|
935
|
+
this.trace(
|
|
936
|
+
"sendRequest",
|
|
937
|
+
`Provider returned no response for session ${model.sessionResource}`
|
|
938
|
+
);
|
|
939
|
+
rawResult = {
|
|
940
|
+
errorDetails: {
|
|
941
|
+
message: ( localize(6220, "Provider returned null response"))
|
|
942
|
+
}
|
|
943
|
+
};
|
|
806
944
|
}
|
|
807
|
-
const result = rawResult.errorDetails?.responseIsFiltered ?
|
|
808
|
-
rawResult.errorDetails && gotProgress ? 'errorWithOutput' :
|
|
809
|
-
rawResult.errorDetails ? 'error' :
|
|
810
|
-
'success';
|
|
945
|
+
const result = rawResult.errorDetails?.responseIsFiltered ? "filtered" : rawResult.errorDetails && gotProgress ? "errorWithOutput" : rawResult.errorDetails ? "error" : "success";
|
|
811
946
|
requestTelemetry.complete({
|
|
812
947
|
timeToFirstProgress: rawResult.timings?.firstProgress,
|
|
813
948
|
totalTime: rawResult.timings?.totalElapsed,
|
|
814
949
|
result,
|
|
815
950
|
requestType,
|
|
816
951
|
detectedAgent,
|
|
817
|
-
request
|
|
952
|
+
request
|
|
818
953
|
});
|
|
819
954
|
model.setResponse(request, rawResult);
|
|
820
955
|
completeResponseCreated();
|
|
821
|
-
this.trace(
|
|
956
|
+
this.trace(
|
|
957
|
+
"sendRequest",
|
|
958
|
+
`Provider returned response for session ${model.sessionResource}`
|
|
959
|
+
);
|
|
822
960
|
request.response?.complete();
|
|
823
961
|
if (agentOrCommandFollowups) {
|
|
824
962
|
agentOrCommandFollowups.then(followups => {
|
|
825
963
|
model.setFollowups(request, followups);
|
|
826
964
|
const commandForTelemetry = agentSlashCommandPart ? agentSlashCommandPart.command.name : commandPart?.slashCommand.command;
|
|
827
|
-
this._chatServiceTelemetry.retrievedFollowups(agentPart?.agent.id ??
|
|
965
|
+
this._chatServiceTelemetry.retrievedFollowups(agentPart?.agent.id ?? "", commandForTelemetry, followups?.length ?? 0);
|
|
828
966
|
});
|
|
829
967
|
}
|
|
830
968
|
}
|
|
831
|
-
}
|
|
832
|
-
catch (err) {
|
|
969
|
+
} catch (err) {
|
|
833
970
|
this.logService.error(`Error while handling chat request: ${toErrorMessage(err, true)}`);
|
|
834
971
|
requestTelemetry.complete({
|
|
835
972
|
timeToFirstProgress: undefined,
|
|
836
973
|
totalTime: undefined,
|
|
837
|
-
result:
|
|
974
|
+
result: "error",
|
|
838
975
|
requestType,
|
|
839
976
|
detectedAgent,
|
|
840
|
-
request
|
|
977
|
+
request
|
|
841
978
|
});
|
|
842
979
|
if (request) {
|
|
843
|
-
const rawResult = {
|
|
980
|
+
const rawResult = {
|
|
981
|
+
errorDetails: {
|
|
982
|
+
message: err.message
|
|
983
|
+
}
|
|
984
|
+
};
|
|
844
985
|
model.setResponse(request, rawResult);
|
|
845
986
|
completeResponseCreated();
|
|
846
987
|
request.response?.complete();
|
|
847
988
|
}
|
|
848
|
-
}
|
|
849
|
-
finally {
|
|
989
|
+
} finally {
|
|
850
990
|
store.dispose();
|
|
851
991
|
}
|
|
852
992
|
};
|
|
853
993
|
const rawResponsePromise = sendRequestInternal();
|
|
854
|
-
this._pendingRequests.set(
|
|
994
|
+
this._pendingRequests.set(
|
|
995
|
+
model.sessionResource,
|
|
996
|
+
this.instantiationService.createInstance(CancellableRequest, source, undefined)
|
|
997
|
+
);
|
|
855
998
|
rawResponsePromise.finally(() => {
|
|
856
999
|
this._pendingRequests.deleteAndDispose(model.sessionResource);
|
|
857
1000
|
});
|
|
858
|
-
this._onDidSubmitRequest.fire({
|
|
1001
|
+
this._onDidSubmitRequest.fire({
|
|
1002
|
+
chatSessionResource: model.sessionResource
|
|
1003
|
+
});
|
|
859
1004
|
return {
|
|
860
1005
|
responseCreatedPromise: responseCreated.p,
|
|
861
|
-
responseCompletePromise: rawResponsePromise
|
|
1006
|
+
responseCompletePromise: rawResponsePromise
|
|
862
1007
|
};
|
|
863
1008
|
}
|
|
864
1009
|
generateInitialChatTitleIfNeeded(model, request, defaultAgent, token) {
|
|
@@ -866,10 +1011,10 @@ let ChatService = class ChatService extends Disposable {
|
|
|
866
1011
|
return;
|
|
867
1012
|
}
|
|
868
1013
|
const singleEntryHistory = [{
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
1014
|
+
request,
|
|
1015
|
+
response: [],
|
|
1016
|
+
result: {}
|
|
1017
|
+
}];
|
|
873
1018
|
const generate = async () => {
|
|
874
1019
|
const title = await this.chatAgentService.getChatTitle(defaultAgent.id, singleEntryHistory, token);
|
|
875
1020
|
if (title && !model.customTitle) {
|
|
@@ -911,14 +1056,18 @@ let ChatService = class ChatService extends Disposable {
|
|
|
911
1056
|
const historyRequest = {
|
|
912
1057
|
sessionResource: request.session.sessionResource,
|
|
913
1058
|
requestId: request.id,
|
|
914
|
-
agentId: request.response.agent?.id ??
|
|
1059
|
+
agentId: request.response.agent?.id ?? "",
|
|
915
1060
|
message: promptTextResult.message,
|
|
916
1061
|
command: request.response.slashCommand?.name,
|
|
917
1062
|
variables: updateRanges(request.variableData, promptTextResult.diff),
|
|
918
1063
|
location: ChatAgentLocation.Chat,
|
|
919
|
-
editedFileEvents: request.editedFileEvents
|
|
1064
|
+
editedFileEvents: request.editedFileEvents
|
|
920
1065
|
};
|
|
921
|
-
history.push({
|
|
1066
|
+
history.push({
|
|
1067
|
+
request: historyRequest,
|
|
1068
|
+
response: toChatHistoryContent(request.response.response.value),
|
|
1069
|
+
result: request.response.result ?? {}
|
|
1070
|
+
});
|
|
922
1071
|
}
|
|
923
1072
|
return history;
|
|
924
1073
|
}
|
|
@@ -936,7 +1085,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
936
1085
|
}
|
|
937
1086
|
async adoptRequest(sessionResource, request) {
|
|
938
1087
|
if (!(request instanceof ChatRequestModel)) {
|
|
939
|
-
throw ( new TypeError(
|
|
1088
|
+
throw ( new TypeError("Can only adopt requests of type ChatRequestModel"));
|
|
940
1089
|
}
|
|
941
1090
|
const target = this._sessionModels.get(sessionResource);
|
|
942
1091
|
if (!target) {
|
|
@@ -953,19 +1102,21 @@ let ChatService = class ChatService extends Disposable {
|
|
|
953
1102
|
}
|
|
954
1103
|
}
|
|
955
1104
|
async addCompleteRequest(sessionResource, message, variableData, attempt, response) {
|
|
956
|
-
this.trace(
|
|
1105
|
+
this.trace("addCompleteRequest", `message: ${message}`);
|
|
957
1106
|
const model = this._sessionModels.get(sessionResource);
|
|
958
1107
|
if (!model) {
|
|
959
1108
|
throw ( new Error(`Unknown session: ${sessionResource}`));
|
|
960
1109
|
}
|
|
961
|
-
const parsedRequest = typeof message ===
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
if (typeof response.message ===
|
|
966
|
-
model.acceptResponseProgress(request, {
|
|
967
|
-
|
|
968
|
-
|
|
1110
|
+
const parsedRequest = typeof message === "string" ? this.instantiationService.createInstance(ChatRequestParser).parseChatRequest(sessionResource, message) : message;
|
|
1111
|
+
const request = model.addRequest(parsedRequest, variableData || {
|
|
1112
|
+
variables: []
|
|
1113
|
+
}, attempt ?? 0, undefined, undefined, undefined, undefined, undefined, undefined, true);
|
|
1114
|
+
if (typeof response.message === "string") {
|
|
1115
|
+
model.acceptResponseProgress(request, {
|
|
1116
|
+
content: ( new MarkdownString(response.message)),
|
|
1117
|
+
kind: "markdownContent"
|
|
1118
|
+
});
|
|
1119
|
+
} else {
|
|
969
1120
|
for (const part of response.message) {
|
|
970
1121
|
model.acceptResponseProgress(request, part, true);
|
|
971
1122
|
}
|
|
@@ -977,7 +1128,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
977
1128
|
request.response?.complete();
|
|
978
1129
|
}
|
|
979
1130
|
cancelCurrentRequestForSession(sessionResource) {
|
|
980
|
-
this.trace(
|
|
1131
|
+
this.trace("cancelCurrentRequestForSession", `session: ${sessionResource}`);
|
|
981
1132
|
this._pendingRequests.get(sessionResource)?.cancel();
|
|
982
1133
|
this._pendingRequests.deleteAndDispose(sessionResource);
|
|
983
1134
|
}
|
|
@@ -1004,10 +1155,13 @@ let ChatService = class ChatService extends Disposable {
|
|
|
1004
1155
|
await this._chatSessionStore.storeTransferSession({
|
|
1005
1156
|
sessionResource: model.sessionResource,
|
|
1006
1157
|
timestampInMilliseconds: Date.now(),
|
|
1007
|
-
toWorkspace: toWorkspace
|
|
1158
|
+
toWorkspace: toWorkspace
|
|
1008
1159
|
}, model);
|
|
1009
1160
|
this.chatTransferService.addWorkspaceToTransferred(toWorkspace);
|
|
1010
|
-
this.trace(
|
|
1161
|
+
this.trace(
|
|
1162
|
+
"transferChatSession",
|
|
1163
|
+
`Transferred session ${model.sessionResource} to workspace ${( toWorkspace.toString())}`
|
|
1164
|
+
);
|
|
1011
1165
|
}
|
|
1012
1166
|
getChatStorageFolder() {
|
|
1013
1167
|
return this._chatSessionStore.getChatStorageFolder();
|
|
@@ -1021,7 +1175,7 @@ let ChatService = class ChatService extends Disposable {
|
|
|
1021
1175
|
appendProgress(request, progress) {
|
|
1022
1176
|
const model = this._sessionModels.get(request.session.sessionResource);
|
|
1023
1177
|
if (!(request instanceof ChatRequestModel)) {
|
|
1024
|
-
throw ( new BugIndicatingError(
|
|
1178
|
+
throw ( new BugIndicatingError("Can only append progress to requests of type ChatRequestModel"));
|
|
1025
1179
|
}
|
|
1026
1180
|
model?.acceptResponseProgress(request, progress);
|
|
1027
1181
|
}
|
|
@@ -1033,18 +1187,6 @@ let ChatService = class ChatService extends Disposable {
|
|
|
1033
1187
|
return localSessionId;
|
|
1034
1188
|
}
|
|
1035
1189
|
};
|
|
1036
|
-
ChatService = ( __decorate([
|
|
1037
|
-
( __param(0, IStorageService)),
|
|
1038
|
-
( __param(1, ILogService)),
|
|
1039
|
-
( __param(2, IExtensionService)),
|
|
1040
|
-
( __param(3, IInstantiationService)),
|
|
1041
|
-
( __param(4, IWorkspaceContextService)),
|
|
1042
|
-
( __param(5, IChatSlashCommandService)),
|
|
1043
|
-
( __param(6, IChatAgentService)),
|
|
1044
|
-
( __param(7, IConfigurationService)),
|
|
1045
|
-
( __param(8, IChatTransferService)),
|
|
1046
|
-
( __param(9, IChatSessionsService)),
|
|
1047
|
-
( __param(10, IMcpService))
|
|
1048
|
-
], ChatService));
|
|
1190
|
+
ChatService = ( __decorate([( __param(0, IStorageService)), ( __param(1, ILogService)), ( __param(2, IExtensionService)), ( __param(3, IInstantiationService)), ( __param(4, IWorkspaceContextService)), ( __param(5, IChatSlashCommandService)), ( __param(6, IChatAgentService)), ( __param(7, IConfigurationService)), ( __param(8, IChatTransferService)), ( __param(9, IChatSessionsService)), ( __param(10, IMcpService))], ChatService));
|
|
1049
1191
|
|
|
1050
1192
|
export { ChatService };
|