@codingame/monaco-vscode-chat-service-override 20.4.1 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +15 -7
- package/package.json +38 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
- package/vscode/src/vs/base/common/policy.d.ts +0 -41
- package/vscode/src/vs/base/common/policy.js +0 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
- /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
2
|
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
3
|
-
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service";
|
|
4
|
-
import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
|
|
5
3
|
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
|
|
6
4
|
import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
|
|
7
5
|
import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
|
|
8
6
|
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
7
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
8
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
9
9
|
export declare class CreateAndRunTaskTool implements IToolImpl {
|
|
10
10
|
private readonly _tasksService;
|
|
11
11
|
private readonly _telemetryService;
|
|
12
12
|
private readonly _terminalService;
|
|
13
|
-
private readonly _languageModelsService;
|
|
14
|
-
private readonly _chatService;
|
|
15
13
|
private readonly _fileService;
|
|
16
|
-
|
|
14
|
+
private readonly _configurationService;
|
|
15
|
+
private readonly _instantiationService;
|
|
16
|
+
constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _fileService: IFileService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService);
|
|
17
17
|
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
18
18
|
private _isTaskActive;
|
|
19
19
|
prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
@@ -3,26 +3,27 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
3
3
|
import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
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
|
-
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
7
|
-
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
8
6
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
9
7
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
10
8
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
11
|
-
import {
|
|
12
|
-
import { getOutput } from '../outputHelpers.js';
|
|
9
|
+
import { resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
|
|
13
10
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
14
11
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
15
12
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
16
13
|
import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
|
|
14
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
15
|
+
import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
|
|
16
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
17
|
+
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
17
18
|
|
|
18
19
|
let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
19
|
-
constructor(_tasksService, _telemetryService, _terminalService,
|
|
20
|
+
constructor(_tasksService, _telemetryService, _terminalService, _fileService, _configurationService, _instantiationService) {
|
|
20
21
|
this._tasksService = _tasksService;
|
|
21
22
|
this._telemetryService = _telemetryService;
|
|
22
23
|
this._terminalService = _terminalService;
|
|
23
|
-
this._languageModelsService = _languageModelsService;
|
|
24
|
-
this._chatService = _chatService;
|
|
25
24
|
this._fileService = _fileService;
|
|
25
|
+
this._configurationService = _configurationService;
|
|
26
|
+
this._instantiationService = _instantiationService;
|
|
26
27
|
}
|
|
27
28
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
28
29
|
const args = invocation.parameters;
|
|
@@ -55,7 +56,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
55
56
|
await this._fileService.writeFile(tasksJsonUri, VSBuffer.fromString(JSON.stringify(tasksJson, null, '\t')));
|
|
56
57
|
_progress.report({ message: 'Updated tasks.json file' });
|
|
57
58
|
}
|
|
58
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
59
|
+
_progress.report({ message: ( new MarkdownString(( localize(11463, 'Resolving the task')))) });
|
|
59
60
|
let task;
|
|
60
61
|
const start = Date.now();
|
|
61
62
|
while (Date.now() - start < 5000 && !token.isCancellationRequested) {
|
|
@@ -66,43 +67,43 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
66
67
|
await timeout(100);
|
|
67
68
|
}
|
|
68
69
|
if (!task) {
|
|
69
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
70
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(11464, 'Task not found: `{0}`', args.task.label)))) };
|
|
70
71
|
}
|
|
71
|
-
_progress.report({ message: ( new MarkdownString(( localize(
|
|
72
|
+
_progress.report({ message: ( new MarkdownString(( localize(11465, 'Running task `{0}`', args.task.label)))) });
|
|
72
73
|
const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
|
|
73
74
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
75
|
+
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
76
|
+
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
77
|
+
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(Boolean);
|
|
78
|
+
if (!terminals || terminals.length === 0) {
|
|
77
79
|
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
78
|
-
|
|
80
|
+
11466,
|
|
79
81
|
'Task started but no terminal was found for: `{0}`',
|
|
80
82
|
args.task.label
|
|
81
83
|
)))) };
|
|
82
84
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
const store = ( new DisposableStore());
|
|
86
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
87
|
+
store.dispose();
|
|
88
|
+
for (const r of terminalResults) {
|
|
89
|
+
this._telemetryService.publicLog2?.('copilotChat.runTaskTool.createAndRunTask', {
|
|
90
|
+
taskLabel: args.task.label,
|
|
91
|
+
bufferLength: r.output.length ?? 0,
|
|
92
|
+
pollDurationMs: r.pollDurationMs ?? 0,
|
|
93
|
+
inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
|
|
94
|
+
inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
|
|
95
|
+
inputToolManualChars: r.inputToolManualChars ?? 0,
|
|
96
|
+
});
|
|
87
97
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
output += `Task \`${args.task.label}\` started and will continue to run in the background.`;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
this._telemetryService.publicLog2?.('copilotChat.runTaskTool.createAndRunTask', {
|
|
101
|
-
taskLabel: args.task.label,
|
|
102
|
-
bufferLength: outputAndIdle.output.length,
|
|
103
|
-
pollDurationMs: outputAndIdle?.pollDurationMs ?? 0,
|
|
104
|
-
});
|
|
105
|
-
return { content: [{ kind: 'text', value: `The output was ${outputAndIdle.output}` }], toolResultMessage: output };
|
|
98
|
+
const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
|
|
99
|
+
const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
|
|
100
|
+
const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
|
|
101
|
+
const toolResultMessage = toolResultMessageFromResponse(result, args.task.label, toolResultDetails, terminalResults);
|
|
102
|
+
return {
|
|
103
|
+
content: [{ kind: 'text', value: uniqueDetails }],
|
|
104
|
+
toolResultMessage,
|
|
105
|
+
toolResultDetails
|
|
106
|
+
};
|
|
106
107
|
}
|
|
107
108
|
async _isTaskActive(task) {
|
|
108
109
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
@@ -114,26 +115,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
114
115
|
const allTasks = await this._tasksService.tasks();
|
|
115
116
|
if (allTasks?.find(t => t._label === task.label)) {
|
|
116
117
|
return {
|
|
117
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
118
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
118
|
+
invocationMessage: ( new MarkdownString(( localize(11467, 'Task `{0}` already exists.', task.label)))),
|
|
119
|
+
pastTenseMessage: ( new MarkdownString(( localize(11468, 'Task `{0}` already exists.', task.label)))),
|
|
119
120
|
confirmationMessages: undefined
|
|
120
121
|
};
|
|
121
122
|
}
|
|
122
123
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
123
124
|
if (activeTasks.find(t => t._label === task.label)) {
|
|
124
125
|
return {
|
|
125
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
126
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
126
|
+
invocationMessage: ( new MarkdownString(( localize(11469, 'Task \`{0}\` is already running.', task.label)))),
|
|
127
|
+
pastTenseMessage: ( new MarkdownString(( localize(11469, 'Task \`{0}\` is already running.', task.label)))),
|
|
127
128
|
confirmationMessages: undefined
|
|
128
129
|
};
|
|
129
130
|
}
|
|
130
131
|
return {
|
|
131
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
132
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
132
|
+
invocationMessage: ( new MarkdownString(( localize(11470, 'Created task \`{0}\`', task.label)))),
|
|
133
|
+
pastTenseMessage: ( new MarkdownString(( localize(11471, 'Created task \`{0}\`', task.label)))),
|
|
133
134
|
confirmationMessages: {
|
|
134
|
-
title: ( localize(
|
|
135
|
+
title: ( localize(11472, 'Allow task creation and execution?')),
|
|
135
136
|
message: ( new MarkdownString(( localize(
|
|
136
|
-
|
|
137
|
+
11473,
|
|
137
138
|
'Copilot will create the task \`{0}\` with command \`{1}\`{2}.',
|
|
138
139
|
task.label,
|
|
139
140
|
task.command,
|
|
@@ -147,19 +148,19 @@ CreateAndRunTaskTool = ( __decorate([
|
|
|
147
148
|
( __param(0, ITaskService)),
|
|
148
149
|
( __param(1, ITelemetryService)),
|
|
149
150
|
( __param(2, ITerminalService)),
|
|
150
|
-
( __param(3,
|
|
151
|
-
( __param(4,
|
|
152
|
-
( __param(5,
|
|
151
|
+
( __param(3, IFileService)),
|
|
152
|
+
( __param(4, IConfigurationService)),
|
|
153
|
+
( __param(5, IInstantiationService))
|
|
153
154
|
], CreateAndRunTaskTool));
|
|
154
155
|
const CreateAndRunTaskToolData = {
|
|
155
156
|
id: 'create_and_run_task',
|
|
156
157
|
toolReferenceName: 'createAndRunTask',
|
|
157
|
-
displayName: ( localize(
|
|
158
|
+
displayName: ( localize(11474, 'Create and run Task')),
|
|
158
159
|
modelDescription: ( localize(
|
|
159
|
-
|
|
160
|
+
11475,
|
|
160
161
|
'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.'
|
|
161
162
|
)),
|
|
162
|
-
userDescription: ( localize(
|
|
163
|
+
userDescription: ( localize(11476, "Create and run a task in the workspace")),
|
|
163
164
|
source: ToolDataSource.Internal,
|
|
164
165
|
inputSchema: {
|
|
165
166
|
'type': 'object',
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
2
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
3
|
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
4
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
5
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
4
6
|
import { type CountTokensCallback, type IPreparedToolInvocation, type IToolData, type IToolImpl, type IToolInvocation, type IToolInvocationPreparationContext, type IToolResult, type ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
|
|
5
7
|
import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
|
|
6
8
|
import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
|
|
@@ -13,7 +15,10 @@ export declare class GetTaskOutputTool extends Disposable implements IToolImpl {
|
|
|
13
15
|
private readonly _tasksService;
|
|
14
16
|
private readonly _terminalService;
|
|
15
17
|
private readonly _configurationService;
|
|
16
|
-
|
|
18
|
+
private readonly _instantiationService;
|
|
19
|
+
private readonly _telemetryService;
|
|
20
|
+
constructor(_tasksService: ITaskService, _terminalService: ITerminalService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService, _telemetryService: ITelemetryService);
|
|
17
21
|
prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
18
22
|
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
23
|
+
private _isTaskActive;
|
|
19
24
|
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
4
|
+
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
6
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
7
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
8
|
+
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
9
|
+
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
10
|
+
import { TasksAvailableContext } from '@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
11
|
+
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
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';
|
|
14
|
+
import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
|
|
15
|
+
|
|
16
|
+
const GetTaskOutputToolData = {
|
|
17
|
+
id: 'get_task_output',
|
|
18
|
+
toolReferenceName: 'getTaskOutput',
|
|
19
|
+
displayName: ( localize(11477, 'Get Task Output')),
|
|
20
|
+
modelDescription: 'Get the output of a task',
|
|
21
|
+
source: ToolDataSource.Internal,
|
|
22
|
+
when: TasksAvailableContext,
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
id: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'The task ID for which to get the output.'
|
|
29
|
+
},
|
|
30
|
+
workspaceFolder: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'The workspace folder path containing the task'
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
required: [
|
|
36
|
+
'id',
|
|
37
|
+
'workspaceFolder'
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
42
|
+
constructor(_tasksService, _terminalService, _configurationService, _instantiationService, _telemetryService) {
|
|
43
|
+
super();
|
|
44
|
+
this._tasksService = _tasksService;
|
|
45
|
+
this._terminalService = _terminalService;
|
|
46
|
+
this._configurationService = _configurationService;
|
|
47
|
+
this._instantiationService = _instantiationService;
|
|
48
|
+
this._telemetryService = _telemetryService;
|
|
49
|
+
}
|
|
50
|
+
async prepareToolInvocation(context, token) {
|
|
51
|
+
const args = context.parameters;
|
|
52
|
+
const taskDefinition = getTaskDefinition(args.id);
|
|
53
|
+
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
54
|
+
if (!task) {
|
|
55
|
+
return { invocationMessage: ( new MarkdownString(( localize(11478, 'Task not found: `{0}`', args.id)))) };
|
|
56
|
+
}
|
|
57
|
+
const taskLabel = task._label;
|
|
58
|
+
const activeTasks = await this._tasksService.getActiveTasks();
|
|
59
|
+
if (activeTasks.includes(task)) {
|
|
60
|
+
return { invocationMessage: ( new MarkdownString(( localize(11479, 'The task `{0}` is already running.', taskLabel)))) };
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
invocationMessage: ( new MarkdownString(( localize(11480, 'Checking output for task `{0}`', taskLabel)))),
|
|
64
|
+
pastTenseMessage: ( new MarkdownString(( localize(11481, 'Checked output for task `{0}`', taskLabel)))),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async invoke(invocation, _countTokens, _progress, token) {
|
|
68
|
+
const args = invocation.parameters;
|
|
69
|
+
const taskDefinition = getTaskDefinition(args.id);
|
|
70
|
+
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
71
|
+
if (!task) {
|
|
72
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11478, 'Task not found: `{0}`', args.id)))) };
|
|
73
|
+
}
|
|
74
|
+
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
75
|
+
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
76
|
+
const taskLabel = task._label;
|
|
77
|
+
const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(t => !!t);
|
|
78
|
+
if (!terminals || terminals.length === 0) {
|
|
79
|
+
return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11482, 'Terminal not found for task `{0}`', taskLabel)))) };
|
|
80
|
+
}
|
|
81
|
+
const store = ( new DisposableStore());
|
|
82
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
83
|
+
store.dispose();
|
|
84
|
+
for (const r of terminalResults) {
|
|
85
|
+
this._telemetryService.publicLog2?.('copilotChat.getTaskOutputTool.get', {
|
|
86
|
+
taskId: args.id,
|
|
87
|
+
bufferLength: r.output.length ?? 0,
|
|
88
|
+
pollDurationMs: r.pollDurationMs ?? 0,
|
|
89
|
+
inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
|
|
90
|
+
inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
|
|
91
|
+
inputToolManualChars: r.inputToolManualChars ?? 0,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
|
|
95
|
+
const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
|
|
96
|
+
const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
|
|
97
|
+
const toolResultMessage = toolResultMessageFromResponse(undefined, taskLabel, toolResultDetails, terminalResults);
|
|
98
|
+
return {
|
|
99
|
+
content: [{ kind: 'text', value: uniqueDetails }],
|
|
100
|
+
toolResultMessage,
|
|
101
|
+
toolResultDetails
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async _isTaskActive(task) {
|
|
105
|
+
const activeTasks = await this._tasksService.getActiveTasks();
|
|
106
|
+
return activeTasks?.includes(task) ?? false;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
GetTaskOutputTool = ( __decorate([
|
|
110
|
+
( __param(0, ITaskService)),
|
|
111
|
+
( __param(1, ITerminalService)),
|
|
112
|
+
( __param(2, IConfigurationService)),
|
|
113
|
+
( __param(3, IInstantiationService)),
|
|
114
|
+
( __param(4, ITelemetryService))
|
|
115
|
+
], GetTaskOutputTool));
|
|
116
|
+
|
|
117
|
+
export { GetTaskOutputTool, GetTaskOutputToolData };
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
2
|
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
3
|
-
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service";
|
|
4
|
-
import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
|
|
5
3
|
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
|
|
6
4
|
import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
|
|
7
5
|
import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
|
|
8
6
|
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
7
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
9
8
|
export declare class RunTaskTool implements IToolImpl {
|
|
10
9
|
private readonly _tasksService;
|
|
11
10
|
private readonly _telemetryService;
|
|
12
11
|
private readonly _terminalService;
|
|
13
|
-
private readonly _languageModelsService;
|
|
14
|
-
private readonly _chatService;
|
|
15
12
|
private readonly _configurationService;
|
|
16
|
-
|
|
13
|
+
private readonly _instantiationService;
|
|
14
|
+
constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService);
|
|
17
15
|
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
18
16
|
private _isTaskActive;
|
|
19
17
|
prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
@@ -3,25 +3,25 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
3
3
|
import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
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
|
-
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
7
|
-
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
8
6
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
7
|
+
import { TasksAvailableContext } from '@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
9
8
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
10
9
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
11
|
-
import {
|
|
12
|
-
import { getOutput } from '../outputHelpers.js';
|
|
13
|
-
import { getTaskDefinition, getTaskForTool } from './taskHelpers.js';
|
|
10
|
+
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
|
|
14
11
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
15
12
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
13
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
14
|
+
import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
|
|
15
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
16
|
+
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
16
17
|
|
|
17
18
|
let RunTaskTool = class RunTaskTool {
|
|
18
|
-
constructor(_tasksService, _telemetryService, _terminalService,
|
|
19
|
+
constructor(_tasksService, _telemetryService, _terminalService, _configurationService, _instantiationService) {
|
|
19
20
|
this._tasksService = _tasksService;
|
|
20
21
|
this._telemetryService = _telemetryService;
|
|
21
22
|
this._terminalService = _terminalService;
|
|
22
|
-
this._languageModelsService = _languageModelsService;
|
|
23
|
-
this._chatService = _chatService;
|
|
24
23
|
this._configurationService = _configurationService;
|
|
24
|
+
this._instantiationService = _instantiationService;
|
|
25
25
|
}
|
|
26
26
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
27
27
|
const args = invocation.parameters;
|
|
@@ -29,45 +29,48 @@ let RunTaskTool = class RunTaskTool {
|
|
|
29
29
|
return { content: [{ kind: 'text', value: `No invocation context` }], toolResultMessage: `No invocation context` };
|
|
30
30
|
}
|
|
31
31
|
const taskDefinition = getTaskDefinition(args.id);
|
|
32
|
-
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
32
|
+
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
33
33
|
if (!task) {
|
|
34
|
-
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
34
|
+
return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11483, 'Task not found: `{0}`', args.id)))) };
|
|
35
35
|
}
|
|
36
36
|
const taskLabel = task._label;
|
|
37
37
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
38
38
|
if (activeTasks.includes(task)) {
|
|
39
|
-
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
39
|
+
return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(11484, 'The task `{0}` is already running.', taskLabel)))) };
|
|
40
40
|
}
|
|
41
41
|
const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
|
|
42
42
|
const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
46
|
-
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(
|
|
43
|
+
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
44
|
+
const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
|
|
45
|
+
if (!resources || resources.length === 0) {
|
|
46
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11485, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
outputAndIdle = await racePollingOrPrompt(() => pollForOutputAndIdle({ getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) }, true, token, this._languageModelsService), () => promptForMorePolling(taskLabel, token, invocation.context, this._chatService), outputAndIdle, token, this._languageModelsService, { getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) });
|
|
48
|
+
const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
|
|
49
|
+
if (terminals.length === 0) {
|
|
50
|
+
return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11485, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
|
|
52
51
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
const store = ( new DisposableStore());
|
|
53
|
+
const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
|
|
54
|
+
store.dispose();
|
|
55
|
+
for (const r of terminalResults) {
|
|
56
|
+
this._telemetryService.publicLog2?.('copilotChat.runTaskTool.run', {
|
|
57
|
+
taskId: args.id,
|
|
58
|
+
bufferLength: r.output.length ?? 0,
|
|
59
|
+
pollDurationMs: r.pollDurationMs ?? 0,
|
|
60
|
+
inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
|
|
61
|
+
inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
|
|
62
|
+
inputToolManualChars: r.inputToolManualChars ?? 0,
|
|
63
|
+
});
|
|
56
64
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
taskId: args.id,
|
|
67
|
-
bufferLength: outputAndIdle.output.length,
|
|
68
|
-
pollDurationMs: outputAndIdle?.pollDurationMs ?? 0,
|
|
69
|
-
});
|
|
70
|
-
return { content: [{ kind: 'text', value: `The output was ${outputAndIdle.output}` }], toolResultMessage: output };
|
|
65
|
+
const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
|
|
66
|
+
const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
|
|
67
|
+
const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
|
|
68
|
+
const toolResultMessage = toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults);
|
|
69
|
+
return {
|
|
70
|
+
content: [{ kind: 'text', value: uniqueDetails }],
|
|
71
|
+
toolResultMessage,
|
|
72
|
+
toolResultDetails
|
|
73
|
+
};
|
|
71
74
|
}
|
|
72
75
|
async _isTaskActive(task) {
|
|
73
76
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
@@ -76,29 +79,29 @@ let RunTaskTool = class RunTaskTool {
|
|
|
76
79
|
async prepareToolInvocation(context, token) {
|
|
77
80
|
const args = context.parameters;
|
|
78
81
|
const taskDefinition = getTaskDefinition(args.id);
|
|
79
|
-
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
82
|
+
const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
|
|
80
83
|
if (!task) {
|
|
81
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
84
|
+
return { invocationMessage: ( new MarkdownString(( localize(11483, 'Task not found: `{0}`', args.id)))) };
|
|
82
85
|
}
|
|
83
86
|
const taskLabel = task._label;
|
|
84
87
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
85
88
|
if (task && activeTasks.includes(task)) {
|
|
86
|
-
return { invocationMessage: ( new MarkdownString(( localize(
|
|
89
|
+
return { invocationMessage: ( new MarkdownString(( localize(11486, 'The task is already running.')))) };
|
|
87
90
|
}
|
|
88
91
|
if (await this._isTaskActive(task)) {
|
|
89
92
|
return {
|
|
90
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
91
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
93
|
+
invocationMessage: ( new MarkdownString(( localize(11487, '`{0}` is already running.', taskLabel)))),
|
|
94
|
+
pastTenseMessage: ( new MarkdownString(( localize(11488, '`{0}` was already running.', taskLabel)))),
|
|
92
95
|
confirmationMessages: undefined
|
|
93
96
|
};
|
|
94
97
|
}
|
|
95
98
|
return {
|
|
96
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
99
|
+
invocationMessage: ( new MarkdownString(( localize(11489, 'Running `{0}`', taskLabel)))),
|
|
97
100
|
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground
|
|
98
|
-
? ( localize(
|
|
99
|
-
: ( localize(
|
|
101
|
+
? ( localize(11490, 'Started `{0}`', taskLabel))
|
|
102
|
+
: ( localize(11491, 'Ran `{0}`', taskLabel)))),
|
|
100
103
|
confirmationMessages: task
|
|
101
|
-
? { title: ( localize(
|
|
104
|
+
? { title: ( localize(11492, 'Allow task run?')), message: ( localize(11493, 'Allow Copilot to run the task `{0}`?', taskLabel)) }
|
|
102
105
|
: undefined
|
|
103
106
|
};
|
|
104
107
|
}
|
|
@@ -107,17 +110,18 @@ RunTaskTool = ( __decorate([
|
|
|
107
110
|
( __param(0, ITaskService)),
|
|
108
111
|
( __param(1, ITelemetryService)),
|
|
109
112
|
( __param(2, ITerminalService)),
|
|
110
|
-
( __param(3,
|
|
111
|
-
( __param(4,
|
|
112
|
-
( __param(5, IConfigurationService))
|
|
113
|
+
( __param(3, IConfigurationService)),
|
|
114
|
+
( __param(4, IInstantiationService))
|
|
113
115
|
], RunTaskTool));
|
|
114
116
|
const RunTaskToolData = {
|
|
115
117
|
id: 'run_task',
|
|
116
118
|
toolReferenceName: 'runTask',
|
|
117
|
-
displayName: ( localize(
|
|
119
|
+
displayName: ( localize(11494, 'Run Task')),
|
|
118
120
|
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.',
|
|
119
|
-
userDescription: ( localize(
|
|
121
|
+
userDescription: ( localize(11495, 'Tool for running tasks in the workspace')),
|
|
122
|
+
icon: Codicon.tools,
|
|
120
123
|
source: ToolDataSource.Internal,
|
|
124
|
+
when: TasksAvailableContext,
|
|
121
125
|
inputSchema: {
|
|
122
126
|
'type': 'object',
|
|
123
127
|
'properties': {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { Location } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
|
|
3
|
+
import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
|
|
4
|
+
import { ITaskSummary } from "@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService";
|
|
5
|
+
import { OutputMonitorState } from "../monitoring/types.js";
|
|
6
|
+
import { MarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
|
|
7
|
+
export declare function toolResultDetailsFromResponse(terminalResults: {
|
|
8
|
+
output: string;
|
|
9
|
+
resources?: ILinkLocation[];
|
|
10
|
+
}[]): (URI | Location)[];
|
|
11
|
+
export declare function toolResultMessageFromResponse(result: ITaskSummary | undefined, taskLabel: string, toolResultDetails: (URI | Location)[], terminalResults: {
|
|
12
|
+
output: string;
|
|
13
|
+
resources?: ILinkLocation[];
|
|
14
|
+
state: OutputMonitorState;
|
|
15
|
+
}[]): MarkdownString;
|
|
16
|
+
export interface ILinkLocation {
|
|
17
|
+
uri: URI;
|
|
18
|
+
range?: Range;
|
|
19
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
3
|
+
import { OutputMonitorState } from '../monitoring/types.js';
|
|
4
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
5
|
+
|
|
6
|
+
function toolResultDetailsFromResponse(terminalResults) {
|
|
7
|
+
return Array.from(( ( new Map(terminalResults
|
|
8
|
+
.flatMap(r => r.resources?.filter(res => res.uri).map(res => {
|
|
9
|
+
const range = res.range;
|
|
10
|
+
const item = range !== undefined ? { uri: res.uri, range } : res.uri;
|
|
11
|
+
const key = range !== undefined
|
|
12
|
+
? `${( res.uri.toString())}-${( range.toString())}`
|
|
13
|
+
: `${( res.uri.toString())}`;
|
|
14
|
+
return [key, item];
|
|
15
|
+
}) ?? []))).values()));
|
|
16
|
+
}
|
|
17
|
+
function toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults) {
|
|
18
|
+
let resultSummary = '';
|
|
19
|
+
if (result?.exitCode) {
|
|
20
|
+
resultSummary = ( localize(11496, 'Task `{0}` failed with exit code {1}.', taskLabel, result.exitCode));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
resultSummary += `\`${taskLabel}\` task `;
|
|
24
|
+
const problemCount = toolResultDetails.length;
|
|
25
|
+
resultSummary += terminalResults.every(r => r.state === OutputMonitorState.Idle)
|
|
26
|
+
? (problemCount
|
|
27
|
+
? `finished with \`${problemCount}\` problem${problemCount === 1 ? '' : 's'}`
|
|
28
|
+
: 'finished')
|
|
29
|
+
: (problemCount
|
|
30
|
+
? `started and will continue to run in the background with \`${problemCount}\` problem${problemCount === 1 ? '' : 's'}`
|
|
31
|
+
: 'started and will continue to run in the background');
|
|
32
|
+
}
|
|
33
|
+
return ( new MarkdownString(resultSummary));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { toolResultDetailsFromResponse, toolResultMessageFromResponse };
|