@codingame/monaco-vscode-chat-service-override 23.3.0 → 24.1.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 +13 -10
- package/package.json +5 -41
- package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +52 -0
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +61 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +152 -0
- 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 +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +9 -9
- 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.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +21 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +27 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +6 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +44 -208
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +17 -17
- 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 +23 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +358 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +222 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +241 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +11 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +67 -230
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +65 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +186 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +2 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +115 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +389 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +22 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +8 -8
- 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 +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +63 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +173 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +66 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +32 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +8 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +15 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +13 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +66 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +6 -7
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
- 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 +15 -4
- 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 +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +30 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +13 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +20 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +270 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +310 -170
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +35 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +1 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +22 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +18 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +80 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +2 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +48 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +16 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +257 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatSetup.d.ts → chatSetup/chatSetupContributions.d.ts} +4 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +622 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +359 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +89 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +667 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +260 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/chatSetup.css +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.js → chatStatus/chatStatusDashboard.js} +193 -325
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.d.ts → chatStatus/chatStatusEntry.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +190 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.d.ts → chatStatus/chatStatusItemService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatStatus/media}/chatStatus.css +22 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.js +108 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +57 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +478 -146
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.js +204 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.js +187 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +108 -62
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +37 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +37 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +232 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatusWidget.css +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +142 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +51 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +19 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.d.ts +49 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.js +100 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +41 -15
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +208 -162
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +15 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +61 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +60 -43
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +27 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +120 -87
- 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 +49 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +293 -187
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +43 -9
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +48 -29
- 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/inlineChat/browser/inlineChat.contribution.js +8 -13
- 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 +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +36 -41
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +18 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +142 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +3 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +19 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +78 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +26 -44
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +23 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +4 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +26 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +32 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +15 -29
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +10 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +38 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +32 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +5 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +128 -62
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +12 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +68 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +20 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +13 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +20 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +72 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +5 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +0 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +0 -154
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +0 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +0 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +0 -135
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +0 -216
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +0 -1617
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +0 -44
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +0 -313
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-dark.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-light.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/github.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/google.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.js → chatStatus/chatStatusItemService.js} +0 -0
|
@@ -15,16 +15,16 @@ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
15
15
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
16
16
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
17
17
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
18
|
-
import { TerminalCapability } from '@codingame/monaco-vscode-
|
|
18
|
+
import { TerminalCapability } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/capabilities/capabilities';
|
|
19
19
|
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
20
20
|
import { IRemoteAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
|
|
21
|
-
import { TerminalToolConfirmationStorageKeys } from '@codingame/monaco-vscode-
|
|
21
|
+
import { TerminalToolConfirmationStorageKeys } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart';
|
|
22
22
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
23
23
|
import { ToolDataSource, ToolInvocationPresentation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
24
24
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
|
|
25
25
|
import { ITerminalChatService, ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
26
26
|
import { ITerminalProfileResolverService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/common/terminal.service';
|
|
27
|
-
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-
|
|
27
|
+
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
|
|
28
28
|
import { getRecommendedToolsOverRunInTerminal } from '../alternativeRecommendation.js';
|
|
29
29
|
import { BasicExecuteStrategy } from '../executeStrategy/basicExecuteStrategy.js';
|
|
30
30
|
import { NoneExecuteStrategy } from '../executeStrategy/noneExecuteStrategy.js';
|
|
@@ -43,17 +43,21 @@ import { CommandLineCdPrefixRewriter } from './commandLineRewriter/commandLineCd
|
|
|
43
43
|
import { CommandLinePwshChainOperatorRewriter } from './commandLineRewriter/commandLinePwshChainOperatorRewriter.js';
|
|
44
44
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
45
45
|
import { IHistoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/history/common/history.service';
|
|
46
|
+
import { TerminalCommandArtifactCollector } from './terminalCommandArtifactCollector.js';
|
|
47
|
+
import { isNumber, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
46
48
|
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
49
|
+
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
47
50
|
|
|
48
51
|
var RunInTerminalTool_1;
|
|
49
52
|
const TOOL_REFERENCE_NAME = 'runInTerminal';
|
|
53
|
+
const LEGACY_TOOL_REFERENCE_FULL_NAMES = ['runCommands/runInTerminal'];
|
|
50
54
|
function createPowerShellModelDescription(shell) {
|
|
51
55
|
const isWinPwsh = isWindowsPowerShell(shell);
|
|
52
56
|
return [
|
|
53
57
|
`This tool allows you to execute ${isWinPwsh ? 'Windows PowerShell 5.1' : 'PowerShell'} commands in a persistent terminal session, preserving environment variables, working directory, and other context across multiple commands.`,
|
|
54
58
|
'',
|
|
55
59
|
'Command Execution:',
|
|
56
|
-
'- Use semicolons ; to chain commands on one line, NEVER use && even when asked explicitly',
|
|
60
|
+
isWinPwsh ? '- Use semicolons ; to chain commands on one line, NEVER use && even when asked explicitly' : '- Prefer ; when chaining commands on one line',
|
|
57
61
|
'- Prefer pipelines | for object-based data flow',
|
|
58
62
|
'- Never create a sub-shell (eg. powershell -c "command") unless explicitly asked',
|
|
59
63
|
'',
|
|
@@ -173,9 +177,10 @@ async function createRunInTerminalToolData(accessor) {
|
|
|
173
177
|
return {
|
|
174
178
|
id: 'run_in_terminal',
|
|
175
179
|
toolReferenceName: TOOL_REFERENCE_NAME,
|
|
176
|
-
|
|
180
|
+
legacyToolReferenceFullNames: LEGACY_TOOL_REFERENCE_FULL_NAMES,
|
|
181
|
+
displayName: ( localize(12031, 'Run in Terminal')),
|
|
177
182
|
modelDescription,
|
|
178
|
-
userDescription: ( localize(
|
|
183
|
+
userDescription: ( localize(12032, 'Run commands in the terminal')),
|
|
179
184
|
source: ToolDataSource.Internal,
|
|
180
185
|
icon: Codicon.terminal,
|
|
181
186
|
inputSchema: {
|
|
@@ -220,7 +225,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
220
225
|
}
|
|
221
226
|
return backgroundExecution.getOutput();
|
|
222
227
|
}
|
|
223
|
-
constructor(_chatService, _configurationService, _historyService, _instantiationService, _languageModelToolsService, _remoteAgentService, _storageService, _terminalChatService, _logService, _terminalService, _workspaceContextService) {
|
|
228
|
+
constructor(_chatService, _configurationService, _historyService, _instantiationService, _languageModelToolsService, _remoteAgentService, _storageService, _terminalChatService, _logService, _terminalService, _workspaceContextService, _chatWidgetService) {
|
|
224
229
|
super();
|
|
225
230
|
this._chatService = _chatService;
|
|
226
231
|
this._configurationService = _configurationService;
|
|
@@ -233,11 +238,13 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
233
238
|
this._logService = _logService;
|
|
234
239
|
this._terminalService = _terminalService;
|
|
235
240
|
this._workspaceContextService = _workspaceContextService;
|
|
241
|
+
this._chatWidgetService = _chatWidgetService;
|
|
236
242
|
this._sessionTerminalAssociations = ( new Map());
|
|
237
243
|
this._osBackend = this._remoteAgentService.getEnvironment().then(remoteEnv => remoteEnv?.os ?? OS);
|
|
238
244
|
this._terminalToolCreator = this._instantiationService.createInstance(ToolTerminalCreator);
|
|
239
245
|
this._treeSitterCommandParser = this._register(this._instantiationService.createInstance(TreeSitterCommandParser));
|
|
240
246
|
this._telemetry = this._instantiationService.createInstance(RunInTerminalToolTelemetry);
|
|
247
|
+
this._commandArtifactCollector = this._instantiationService.createInstance(TerminalCommandArtifactCollector);
|
|
241
248
|
this._profileFetcher = this._instantiationService.createInstance(TerminalProfileFetcher);
|
|
242
249
|
this._commandLineRewriters = [
|
|
243
250
|
this._register(this._instantiationService.createInstance(CommandLineCdPrefixRewriter)),
|
|
@@ -321,10 +328,23 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
321
328
|
};
|
|
322
329
|
}
|
|
323
330
|
const commandLine = rewrittenCommand ?? args.command;
|
|
324
|
-
const isEligibleForAutoApproval =
|
|
331
|
+
const isEligibleForAutoApproval = () => {
|
|
332
|
+
const config = this._configurationService.getValue(ChatConfiguration.EligibleForAutoApproval);
|
|
333
|
+
if (config && typeof config === 'object') {
|
|
334
|
+
if (Object.prototype.hasOwnProperty.call(config, TOOL_REFERENCE_NAME)) {
|
|
335
|
+
return config[TOOL_REFERENCE_NAME];
|
|
336
|
+
}
|
|
337
|
+
for (const legacyName of LEGACY_TOOL_REFERENCE_FULL_NAMES) {
|
|
338
|
+
if (Object.prototype.hasOwnProperty.call(config, legacyName)) {
|
|
339
|
+
return config[legacyName];
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return true;
|
|
344
|
+
};
|
|
325
345
|
const isAutoApproveEnabled = this._configurationService.getValue(TerminalChatAgentToolsSettingId.EnableAutoApprove) === true;
|
|
326
346
|
const isAutoApproveWarningAccepted = this._storageService.getBoolean(TerminalToolConfirmationStorageKeys.TerminalAutoApproveWarningAccepted, StorageScope.APPLICATION, false);
|
|
327
|
-
const isAutoApproveAllowed = isEligibleForAutoApproval && isAutoApproveEnabled && isAutoApproveWarningAccepted;
|
|
347
|
+
const isAutoApproveAllowed = isEligibleForAutoApproval() && isAutoApproveEnabled && isAutoApproveWarningAccepted;
|
|
328
348
|
const commandLineAnalyzerOptions = {
|
|
329
349
|
commandLine,
|
|
330
350
|
cwd,
|
|
@@ -332,6 +352,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
332
352
|
shell,
|
|
333
353
|
treeSitterLanguage: isPowerShell(shell, os) ? TreeSitterCommandParserLanguage.PowerShell : TreeSitterCommandParserLanguage.Bash,
|
|
334
354
|
terminalToolSessionId,
|
|
355
|
+
chatSessionId: context.chatSessionId,
|
|
335
356
|
};
|
|
336
357
|
const commandLineAnalyzerResults = await Promise.all(( this._commandLineAnalyzers.map(e => e.analyze(commandLineAnalyzerOptions))));
|
|
337
358
|
const disclaimersRaw = commandLineAnalyzerResults.filter(e => e.disclaimers).flatMap(e => e.disclaimers);
|
|
@@ -342,17 +363,25 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
342
363
|
{ supportThemeIcons: true }
|
|
343
364
|
));
|
|
344
365
|
}
|
|
345
|
-
const
|
|
346
|
-
|
|
366
|
+
const analyzersIsAutoApproveAllowed = commandLineAnalyzerResults.every(e => e.isAutoApproveAllowed);
|
|
367
|
+
const customActions = isEligibleForAutoApproval() && analyzersIsAutoApproveAllowed ? ( commandLineAnalyzerResults.map(e => e.customActions ?? [])).flat() : undefined;
|
|
347
368
|
let shellType = basename(shell, '.exe');
|
|
348
369
|
if (shellType === 'powershell') {
|
|
349
370
|
shellType = 'pwsh';
|
|
350
371
|
}
|
|
351
|
-
const isFinalAutoApproved =
|
|
372
|
+
const isFinalAutoApproved = (
|
|
373
|
+
(isAutoApproveAllowed &&
|
|
374
|
+
(
|
|
375
|
+
commandLineAnalyzerResults.some(e => e.isAutoApproved)) &&
|
|
376
|
+
commandLineAnalyzerResults.every(e => e.isAutoApproved !== false) &&
|
|
377
|
+
analyzersIsAutoApproveAllowed));
|
|
378
|
+
if (isFinalAutoApproved) {
|
|
379
|
+
toolSpecificData.autoApproveInfo = commandLineAnalyzerResults.find(e => e.autoApproveInfo)?.autoApproveInfo;
|
|
380
|
+
}
|
|
352
381
|
const confirmationMessages = isFinalAutoApproved ? undefined : {
|
|
353
382
|
title: args.isBackground
|
|
354
|
-
? ( localize(
|
|
355
|
-
: ( localize(
|
|
383
|
+
? ( localize(12033, "Run `{0}` command? (background terminal)", shellType))
|
|
384
|
+
: ( localize(12034, "Run `{0}` command?", shellType)),
|
|
356
385
|
message: ( new MarkdownString(args.explanation)),
|
|
357
386
|
disclaimer,
|
|
358
387
|
terminalCustomActions: customActions,
|
|
@@ -367,6 +396,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
367
396
|
if (!toolSpecificData) {
|
|
368
397
|
throw ( new Error('toolSpecificData must be provided for this tool'));
|
|
369
398
|
}
|
|
399
|
+
const commandId = toolSpecificData.terminalCommandId;
|
|
370
400
|
if (toolSpecificData.alternativeRecommendation) {
|
|
371
401
|
return {
|
|
372
402
|
content: [{
|
|
@@ -398,7 +428,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
398
428
|
const toolTerminal = await (args.isBackground
|
|
399
429
|
? this._initBackgroundTerminal(chatSessionId, termId, terminalToolSessionId, token)
|
|
400
430
|
: this._initForegroundTerminal(chatSessionId, termId, terminalToolSessionId, token));
|
|
401
|
-
this._handleTerminalVisibility(toolTerminal);
|
|
431
|
+
this._handleTerminalVisibility(toolTerminal, chatSessionId);
|
|
402
432
|
const timingConnectMs = Date.now() - timingStart;
|
|
403
433
|
const xterm = await toolTerminal.instance.xtermReadyPromise;
|
|
404
434
|
if (!xterm) {
|
|
@@ -418,7 +448,6 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
418
448
|
let pollingResult;
|
|
419
449
|
try {
|
|
420
450
|
this._logService.debug(`RunInTerminalTool: Starting background execution \`${command}\``);
|
|
421
|
-
const commandId = toolSpecificData.terminalCommandId;
|
|
422
451
|
const execution = ( new BackgroundTerminalExecution(toolTerminal.instance, xterm, command, chatSessionId, commandId));
|
|
423
452
|
RunInTerminalTool_1._backgroundExecutions.set(termId, execution);
|
|
424
453
|
outputMonitor = store.add(this._instantiationService.createInstance(OutputMonitor, execution, undefined, invocation.context, token, command));
|
|
@@ -427,6 +456,10 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
427
456
|
if (token.isCancellationRequested) {
|
|
428
457
|
throw ( new CancellationError());
|
|
429
458
|
}
|
|
459
|
+
await this._commandArtifactCollector.capture(toolSpecificData, toolTerminal.instance, commandId);
|
|
460
|
+
const state = toolSpecificData.terminalCommandState ?? {};
|
|
461
|
+
state.timestamp = state.timestamp ?? timingStart;
|
|
462
|
+
toolSpecificData.terminalCommandState = state;
|
|
430
463
|
let resultText = (didUserEditCommand
|
|
431
464
|
? `Note: The user manually edited the command to \`${command}\`, and that command is now running in terminal with ID=${termId}`
|
|
432
465
|
: didToolEditCommand
|
|
@@ -514,12 +547,23 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
514
547
|
outputMonitor = store.add(this._instantiationService.createInstance(OutputMonitor, { instance: toolTerminal.instance, sessionId: invocation.context?.sessionId, getOutput: (marker) => getOutput(toolTerminal.instance, marker ?? startMarker) }, undefined, invocation.context, token, command));
|
|
515
548
|
}
|
|
516
549
|
}));
|
|
517
|
-
const commandId = toolSpecificData.terminalCommandId;
|
|
518
550
|
const executeResult = await strategy.execute(command, token, commandId);
|
|
519
551
|
toolTerminal.receivedUserInput = false;
|
|
520
552
|
if (token.isCancellationRequested) {
|
|
521
553
|
throw ( new CancellationError());
|
|
522
554
|
}
|
|
555
|
+
await this._commandArtifactCollector.capture(toolSpecificData, toolTerminal.instance, commandId);
|
|
556
|
+
{
|
|
557
|
+
const state = toolSpecificData.terminalCommandState ?? {};
|
|
558
|
+
state.timestamp = state.timestamp ?? timingStart;
|
|
559
|
+
if (executeResult.exitCode !== undefined) {
|
|
560
|
+
state.exitCode = executeResult.exitCode;
|
|
561
|
+
if (state.timestamp !== undefined) {
|
|
562
|
+
state.duration = state.duration ?? Math.max(0, Date.now() - state.timestamp);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
toolSpecificData.terminalCommandState = state;
|
|
566
|
+
}
|
|
523
567
|
this._logService.debug(`RunInTerminalTool: Finished \`${strategy.type}\` execute strategy with exitCode \`${executeResult.exitCode}\`, result.length \`${executeResult.output?.length}\`, error \`${executeResult.error}\``);
|
|
524
568
|
outputLineCount = executeResult.output === undefined ? 0 : count(executeResult.output.trim(), '\n') + 1;
|
|
525
569
|
exitCode = executeResult.exitCode;
|
|
@@ -588,8 +632,9 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
588
632
|
};
|
|
589
633
|
}
|
|
590
634
|
}
|
|
591
|
-
_handleTerminalVisibility(toolTerminal) {
|
|
592
|
-
|
|
635
|
+
_handleTerminalVisibility(toolTerminal, chatSessionId) {
|
|
636
|
+
const chatSessionOpenInWidget = !!this._chatWidgetService.getWidgetBySessionResource(LocalChatSessionUri.forSession(chatSessionId));
|
|
637
|
+
if (this._configurationService.getValue(TerminalChatAgentToolsSettingId.OutputLocation) === 'terminal' && chatSessionOpenInWidget) {
|
|
593
638
|
this._terminalService.setActiveInstance(toolTerminal.instance);
|
|
594
639
|
this._terminalService.revealTerminal(toolTerminal.instance, true);
|
|
595
640
|
}
|
|
@@ -678,7 +723,7 @@ let RunInTerminalTool = class RunInTerminalTool extends Disposable {
|
|
|
678
723
|
terminal.processReady.then(() => terminal.processId),
|
|
679
724
|
timeout(5000).then(() => { throw ( new Error('Timeout')); })
|
|
680
725
|
]);
|
|
681
|
-
if (
|
|
726
|
+
if (isNumber(pid)) {
|
|
682
727
|
const storedAssociations = this._storageService.get(TerminalToolStorageKeysInternal.TerminalSession, StorageScope.WORKSPACE, '{}');
|
|
683
728
|
const associations = JSON.parse(storedAssociations);
|
|
684
729
|
const existingAssociation = associations[pid] || {};
|
|
@@ -741,7 +786,8 @@ RunInTerminalTool = RunInTerminalTool_1 = ( __decorate([
|
|
|
741
786
|
( __param(7, ITerminalChatService)),
|
|
742
787
|
( __param(8, ITerminalLogService)),
|
|
743
788
|
( __param(9, ITerminalService)),
|
|
744
|
-
( __param(10, IWorkspaceContextService))
|
|
789
|
+
( __param(10, IWorkspaceContextService)),
|
|
790
|
+
( __param(11, IChatWidgetService))
|
|
745
791
|
], RunInTerminalTool));
|
|
746
792
|
class BackgroundTerminalExecution extends Disposable {
|
|
747
793
|
constructor(instance, _xterm, _commandLine, sessionId, commandId) {
|
|
@@ -810,7 +856,7 @@ let TerminalProfileFetcher = class TerminalProfileFetcher {
|
|
|
810
856
|
if (profile === null || profile === undefined || typeof profile !== 'object') {
|
|
811
857
|
return false;
|
|
812
858
|
}
|
|
813
|
-
if ('path' in profile &&
|
|
859
|
+
if ('path' in profile && isString(profile.path)) {
|
|
814
860
|
return true;
|
|
815
861
|
}
|
|
816
862
|
return false;
|
|
@@ -7,7 +7,7 @@ import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench
|
|
|
7
7
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
8
8
|
import { TaskRunSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/tasks';
|
|
9
9
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
10
|
-
import { resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
|
|
10
|
+
import { resolveDependencyTasks, collectTerminalResults, tasksMatch } from '../../taskHelpers.js';
|
|
11
11
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
12
12
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
13
13
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
@@ -57,7 +57,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
57
57
|
await this._fileService.writeFile(tasksJsonUri, VSBuffer.fromString(JSON.stringify(tasksJson, null, '\t')));
|
|
58
58
|
_progress.report({ message: 'Updated tasks.json file' });
|
|
59
59
|
}
|
|
60
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
60
|
+
_progress.report({ message: ( new MarkdownString(( localize(12035, 'Resolving the task')))) });
|
|
61
61
|
let task;
|
|
62
62
|
const start = Date.now();
|
|
63
63
|
while (Date.now() - start < 5000 && !token.isCancellationRequested) {
|
|
@@ -68,9 +68,9 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
68
68
|
await timeout(100);
|
|
69
69
|
}
|
|
70
70
|
if (!task) {
|
|
71
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
71
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(12036, 'Task not found: `{0}`', args.task.label)))) };
|
|
72
72
|
}
|
|
73
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
73
|
+
_progress.report({ message: ( new MarkdownString(( localize(12037, 'Running task `{0}`', args.task.label)))) });
|
|
74
74
|
const raceResult = await Promise.race([this._tasksService.run(task, undefined, TaskRunSource.ChatAgent), timeout(3000)]);
|
|
75
75
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
76
76
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
@@ -78,13 +78,13 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
78
78
|
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(Boolean);
|
|
79
79
|
if (!terminals || terminals.length === 0) {
|
|
80
80
|
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
81
|
-
|
|
81
|
+
12038,
|
|
82
82
|
'Task started but no terminal was found for: `{0}`',
|
|
83
83
|
args.task.label
|
|
84
84
|
)))) };
|
|
85
85
|
}
|
|
86
86
|
const store = ( new DisposableStore());
|
|
87
|
-
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks);
|
|
87
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks, this._tasksService);
|
|
88
88
|
store.dispose();
|
|
89
89
|
for (const r of terminalResults) {
|
|
90
90
|
this._telemetryService.publicLog2?.('copilotChat.runTaskTool.createAndRunTask', {
|
|
@@ -110,8 +110,8 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
112
|
async _isTaskActive(task) {
|
|
113
|
-
const
|
|
114
|
-
return
|
|
113
|
+
const busyTasks = await this._tasksService.getBusyTasks();
|
|
114
|
+
return busyTasks?.some(t => tasksMatch(t, task)) ?? false;
|
|
115
115
|
}
|
|
116
116
|
async prepareToolInvocation(context, token) {
|
|
117
117
|
const args = context.parameters;
|
|
@@ -119,26 +119,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
119
119
|
const allTasks = await this._tasksService.tasks();
|
|
120
120
|
if (allTasks?.find(t => t._label === task.label)) {
|
|
121
121
|
return {
|
|
122
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
123
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
122
|
+
invocationMessage: ( new MarkdownString(( localize(12039, 'Task `{0}` already exists.', task.label)))),
|
|
123
|
+
pastTenseMessage: ( new MarkdownString(( localize(12040, 'Task `{0}` already exists.', task.label)))),
|
|
124
124
|
confirmationMessages: undefined
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
128
128
|
if (activeTasks.find(t => t._label === task.label)) {
|
|
129
129
|
return {
|
|
130
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
131
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
130
|
+
invocationMessage: ( new MarkdownString(( localize(12041, 'Task \`{0}\` is already running.', task.label)))),
|
|
131
|
+
pastTenseMessage: ( new MarkdownString(( localize(12041, 'Task \`{0}\` is already running.', task.label)))),
|
|
132
132
|
confirmationMessages: undefined
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
135
|
return {
|
|
136
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
137
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
136
|
+
invocationMessage: ( new MarkdownString(( localize(12042, 'Created task \`{0}\`', task.label)))),
|
|
137
|
+
pastTenseMessage: ( new MarkdownString(( localize(12043, 'Created task \`{0}\`', task.label)))),
|
|
138
138
|
confirmationMessages: {
|
|
139
|
-
title: ( localize(
|
|
139
|
+
title: ( localize(12044, 'Allow task creation and execution?')),
|
|
140
140
|
message: ( new MarkdownString(( localize(
|
|
141
|
-
|
|
141
|
+
12045,
|
|
142
142
|
'A task \`{0}\` with command \`{1}\`{2} will be created.',
|
|
143
143
|
task.label,
|
|
144
144
|
task.command,
|
|
@@ -159,12 +159,10 @@ CreateAndRunTaskTool = ( __decorate([
|
|
|
159
159
|
const CreateAndRunTaskToolData = {
|
|
160
160
|
id: 'create_and_run_task',
|
|
161
161
|
toolReferenceName: 'createAndRunTask',
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
)),
|
|
167
|
-
userDescription: ( localize(11907, "Create and run a task in the workspace")),
|
|
162
|
+
legacyToolReferenceFullNames: ['runTasks/createAndRunTask'],
|
|
163
|
+
displayName: ( localize(12046, 'Create and run Task')),
|
|
164
|
+
modelDescription: 'Creates and runs a build, run, or custom task for the workspace by generating or adding to a tasks.json file based on the project structure (such as package.json or README.md). If the user asks to build, run, launch and they have no tasks.json file, use this tool. If they ask to create or add a task, use this tool.',
|
|
165
|
+
userDescription: ( localize(12047, "Create and run a task in the workspace")),
|
|
168
166
|
source: ToolDataSource.Internal,
|
|
169
167
|
inputSchema: {
|
|
170
168
|
'type': 'object',
|
|
@@ -7,16 +7,17 @@ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
7
7
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
8
8
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
9
9
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
10
|
-
import { TasksAvailableContext } from '@codingame/monaco-vscode-
|
|
10
|
+
import { TasksAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
11
11
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
12
12
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
13
|
-
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
|
|
13
|
+
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults, tasksMatch } from '../../taskHelpers.js';
|
|
14
14
|
import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
|
|
15
15
|
|
|
16
16
|
const GetTaskOutputToolData = {
|
|
17
17
|
id: 'get_task_output',
|
|
18
18
|
toolReferenceName: 'getTaskOutput',
|
|
19
|
-
|
|
19
|
+
legacyToolReferenceFullNames: ['runTasks/getTaskOutput'],
|
|
20
|
+
displayName: ( localize(12048, 'Get Task Output')),
|
|
20
21
|
modelDescription: 'Get the output of a task',
|
|
21
22
|
source: ToolDataSource.Internal,
|
|
22
23
|
when: TasksAvailableContext,
|
|
@@ -52,16 +53,16 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
52
53
|
const taskDefinition = getTaskDefinition(args.id);
|
|
53
54
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
54
55
|
if (!task) {
|
|
55
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
56
|
+
return { invocationMessage: ( new MarkdownString(( localize(12049, 'Task not found: `{0}`', args.id)))) };
|
|
56
57
|
}
|
|
57
58
|
const taskLabel = task._label;
|
|
58
59
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
59
60
|
if (activeTasks.includes(task)) {
|
|
60
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
61
|
+
return { invocationMessage: ( new MarkdownString(( localize(12050, 'The task `{0}` is already running.', taskLabel)))) };
|
|
61
62
|
}
|
|
62
63
|
return {
|
|
63
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
64
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
64
|
+
invocationMessage: ( new MarkdownString(( localize(12051, 'Checking output for task `{0}`', taskLabel)))),
|
|
65
|
+
pastTenseMessage: ( new MarkdownString(( localize(12052, 'Checked output for task `{0}`', taskLabel)))),
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
68
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -69,17 +70,17 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
69
70
|
const taskDefinition = getTaskDefinition(args.id);
|
|
70
71
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
71
72
|
if (!task) {
|
|
72
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
73
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(12049, 'Task not found: `{0}`', args.id)))) };
|
|
73
74
|
}
|
|
74
75
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
75
76
|
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
76
77
|
const taskLabel = task._label;
|
|
77
78
|
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(t => !!t);
|
|
78
79
|
if (!terminals || terminals.length === 0) {
|
|
79
|
-
return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
80
|
+
return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(12053, 'Terminal not found for task `{0}`', taskLabel)))) };
|
|
80
81
|
}
|
|
81
82
|
const store = ( new DisposableStore());
|
|
82
|
-
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks);
|
|
83
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks, this._tasksService);
|
|
83
84
|
store.dispose();
|
|
84
85
|
for (const r of terminalResults) {
|
|
85
86
|
this._telemetryService.publicLog2?.('copilotChat.getTaskOutputTool.get', {
|
|
@@ -105,8 +106,8 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
108
|
async _isTaskActive(task) {
|
|
108
|
-
const
|
|
109
|
-
return
|
|
109
|
+
const busyTasks = await this._tasksService.getBusyTasks();
|
|
110
|
+
return busyTasks?.some(t => tasksMatch(t, task)) ?? false;
|
|
110
111
|
}
|
|
111
112
|
};
|
|
112
113
|
GetTaskOutputTool = ( __decorate([
|
|
@@ -4,11 +4,11 @@ import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/asyn
|
|
|
4
4
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
5
5
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
6
6
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
7
|
-
import { TasksAvailableContext } from '@codingame/monaco-vscode-
|
|
7
|
+
import { TasksAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
8
8
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
9
9
|
import { TaskRunSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/tasks';
|
|
10
10
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
11
|
-
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
|
|
11
|
+
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults, tasksMatch } from '../../taskHelpers.js';
|
|
12
12
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
13
13
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
14
14
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
@@ -32,26 +32,26 @@ let RunTaskTool = class RunTaskTool {
|
|
|
32
32
|
const taskDefinition = getTaskDefinition(args.id);
|
|
33
33
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
34
34
|
if (!task) {
|
|
35
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
35
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(12054, 'Task not found: `{0}`', args.id)))) };
|
|
36
36
|
}
|
|
37
37
|
const taskLabel = task._label;
|
|
38
38
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
39
39
|
if (activeTasks.includes(task)) {
|
|
40
|
-
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
40
|
+
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(12055, 'The task `{0}` is already running.', taskLabel)))) };
|
|
41
41
|
}
|
|
42
42
|
const raceResult = await Promise.race([this._tasksService.run(task, undefined, TaskRunSource.ChatAgent), timeout(3000)]);
|
|
43
43
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
44
44
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
45
45
|
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
46
46
|
if (!resources || resources.length === 0) {
|
|
47
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
47
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(12056, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
48
48
|
}
|
|
49
49
|
const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
|
|
50
50
|
if (terminals.length === 0) {
|
|
51
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
51
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(12056, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
52
52
|
}
|
|
53
53
|
const store = ( new DisposableStore());
|
|
54
|
-
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks);
|
|
54
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, (terminalTask) => this._isTaskActive(terminalTask), dependencyTasks, this._tasksService);
|
|
55
55
|
store.dispose();
|
|
56
56
|
for (const r of terminalResults) {
|
|
57
57
|
this._telemetryService.publicLog2?.('copilotChat.runTaskTool.run', {
|
|
@@ -77,35 +77,35 @@ let RunTaskTool = class RunTaskTool {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
async _isTaskActive(task) {
|
|
80
|
-
const
|
|
81
|
-
return
|
|
80
|
+
const busyTasks = await this._tasksService.getBusyTasks();
|
|
81
|
+
return busyTasks?.some(t => tasksMatch(t, task)) ?? false;
|
|
82
82
|
}
|
|
83
83
|
async prepareToolInvocation(context, token) {
|
|
84
84
|
const args = context.parameters;
|
|
85
85
|
const taskDefinition = getTaskDefinition(args.id);
|
|
86
86
|
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
87
87
|
if (!task) {
|
|
88
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
88
|
+
return { invocationMessage: ( new MarkdownString(( localize(12054, 'Task not found: `{0}`', args.id)))) };
|
|
89
89
|
}
|
|
90
90
|
const taskLabel = task._label;
|
|
91
91
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
92
92
|
if (task && activeTasks.includes(task)) {
|
|
93
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
93
|
+
return { invocationMessage: ( new MarkdownString(( localize(12057, 'The task is already running.')))) };
|
|
94
94
|
}
|
|
95
95
|
if (await this._isTaskActive(task)) {
|
|
96
96
|
return {
|
|
97
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
98
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
97
|
+
invocationMessage: ( new MarkdownString(( localize(12058, '`{0}` is already running.', taskLabel)))),
|
|
98
|
+
pastTenseMessage: ( new MarkdownString(( localize(12059, '`{0}` was already running.', taskLabel)))),
|
|
99
99
|
confirmationMessages: undefined
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
return {
|
|
103
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
103
|
+
invocationMessage: ( new MarkdownString(( localize(12060, 'Running `{0}`', taskLabel)))),
|
|
104
104
|
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground
|
|
105
|
-
? ( localize(
|
|
106
|
-
: ( localize(
|
|
105
|
+
? ( localize(12061, 'Started `{0}`', taskLabel))
|
|
106
|
+
: ( localize(12062, 'Ran `{0}`', taskLabel)))),
|
|
107
107
|
confirmationMessages: task
|
|
108
|
-
? { title: ( localize(
|
|
108
|
+
? { title: ( localize(12063, 'Allow task run?')), message: ( localize(12064, 'Allow to run the task `{0}`?', taskLabel)) }
|
|
109
109
|
: undefined
|
|
110
110
|
};
|
|
111
111
|
}
|
|
@@ -120,9 +120,10 @@ RunTaskTool = ( __decorate([
|
|
|
120
120
|
const RunTaskToolData = {
|
|
121
121
|
id: 'run_task',
|
|
122
122
|
toolReferenceName: 'runTask',
|
|
123
|
-
|
|
123
|
+
legacyToolReferenceFullNames: ['runTasks/runTask'],
|
|
124
|
+
displayName: ( localize(12065, 'Run Task')),
|
|
124
125
|
modelDescription: 'Runs a VS Code task.\n\n- If you see that an appropriate task exists for building or running code, prefer to use this tool to run the task instead of using the run_in_terminal tool.\n- Make sure that any appropriate build or watch task is running before trying to run tests or execute code.\n- If the user asks to run a task, use this tool to do so.',
|
|
125
|
-
userDescription: ( localize(
|
|
126
|
+
userDescription: ( localize(12066, 'Run tasks in the workspace')),
|
|
126
127
|
icon: Codicon.tools,
|
|
127
128
|
source: ToolDataSource.Internal,
|
|
128
129
|
when: TasksAvailableContext,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
2
|
import { Location } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
|
|
3
3
|
import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
|
|
4
|
-
import { ITaskSummary } from "@codingame/monaco-vscode-
|
|
4
|
+
import { ITaskSummary } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService";
|
|
5
5
|
import { OutputMonitorState } from "../monitoring/types.js";
|
|
6
6
|
import { MarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
|
|
7
7
|
export declare function toolResultDetailsFromResponse(terminalResults: {
|
|
@@ -17,7 +17,7 @@ function toolResultDetailsFromResponse(terminalResults) {
|
|
|
17
17
|
function toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults, getOutputTool) {
|
|
18
18
|
let resultSummary = '';
|
|
19
19
|
if (result?.exitCode) {
|
|
20
|
-
resultSummary = ( localize(
|
|
20
|
+
resultSummary = ( localize(12067, 'Task `{0}` failed with exit code {1}.', taskLabel, result.exitCode));
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
resultSummary += `\`${taskLabel}\` task `;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IChatTerminalToolInvocationData } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
|
|
2
|
+
import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
3
|
+
import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
|
|
4
|
+
export declare class TerminalCommandArtifactCollector {
|
|
5
|
+
private readonly _logService;
|
|
6
|
+
constructor(_logService: ITerminalLogService);
|
|
7
|
+
capture(toolSpecificData: IChatTerminalToolInvocationData, instance: ITerminalInstance, commandId: string | undefined): Promise<void>;
|
|
8
|
+
private _captureCommandOutput;
|
|
9
|
+
private _applyTheme;
|
|
10
|
+
private _createTerminalCommandUri;
|
|
11
|
+
private _tryGetCommand;
|
|
12
|
+
}
|