@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
package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js
CHANGED
|
@@ -1,10 +1,35 @@
|
|
|
1
1
|
|
|
2
2
|
import { isPowerShell } from './runInTerminalHelpers.js';
|
|
3
3
|
|
|
4
|
+
function createNumberRange(start, end) {
|
|
5
|
+
return Array.from({ length: end - start + 1 }, (_, i) => ( (start + i).toString()));
|
|
6
|
+
}
|
|
7
|
+
function sortByStringLengthDesc(arr) {
|
|
8
|
+
return [...arr].sort((a, b) => b.length - a.length);
|
|
9
|
+
}
|
|
4
10
|
const shellTypeResetChars = ( new Map([
|
|
5
|
-
['sh', [
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
['sh', sortByStringLengthDesc([
|
|
12
|
+
...( createNumberRange(1, 9).concat('').map(n => `${n}<<<`)),
|
|
13
|
+
...createNumberRange(1, 9).concat('').flatMap(n => ( createNumberRange(1, 9).map(m => `${n}>&${m}`))),
|
|
14
|
+
...( createNumberRange(1, 9).concat('').map(n => `${n}<>`)),
|
|
15
|
+
...( createNumberRange(1, 9).concat('&', '').map(n => `${n}>>`)),
|
|
16
|
+
...( createNumberRange(1, 9).concat('&', '').map(n => `${n}>`)),
|
|
17
|
+
'0<', '||', '&&', '|&', '<<', '&', ';', '{', '>', '<', '|'
|
|
18
|
+
])],
|
|
19
|
+
['zsh', sortByStringLengthDesc([
|
|
20
|
+
...( createNumberRange(1, 9).concat('').map(n => `${n}<<<`)),
|
|
21
|
+
...createNumberRange(1, 9).concat('').flatMap(n => ( createNumberRange(1, 9).map(m => `${n}>&${m}`))),
|
|
22
|
+
...( createNumberRange(1, 9).concat('').map(n => `${n}<>`)),
|
|
23
|
+
...( createNumberRange(1, 9).concat('&', '').map(n => `${n}>>`)),
|
|
24
|
+
...( createNumberRange(1, 9).concat('&', '').map(n => `${n}>`)),
|
|
25
|
+
'<(', '||', '>|', '>!', '&&', '|&', '&', ';', '{', '<(', '<', '|'
|
|
26
|
+
])],
|
|
27
|
+
['pwsh', sortByStringLengthDesc([
|
|
28
|
+
...createNumberRange(1, 6).concat('*', '').flatMap(n => ( createNumberRange(1, 6).map(m => `${n}>&${m}`))),
|
|
29
|
+
...( createNumberRange(1, 6).concat('*', '').map(n => `${n}>>`)),
|
|
30
|
+
...( createNumberRange(1, 6).concat('*', '').map(n => `${n}>`)),
|
|
31
|
+
'&&', '<', '|', ';', '!', '&'
|
|
32
|
+
])],
|
|
8
33
|
]));
|
|
9
34
|
function splitCommandLineIntoSubCommands(commandLine, envShell, envOS) {
|
|
10
35
|
let shellType;
|
|
@@ -35,79 +60,7 @@ function splitCommandLineIntoSubCommands(commandLine, envShell, envOS) {
|
|
|
35
60
|
}
|
|
36
61
|
}
|
|
37
62
|
}
|
|
38
|
-
return subCommands;
|
|
39
|
-
}
|
|
40
|
-
function extractInlineSubCommands(commandLine, envShell, envOS) {
|
|
41
|
-
const inlineCommands = [];
|
|
42
|
-
const shellType = isPowerShell(envShell, envOS) ? 'pwsh' : 'sh';
|
|
43
|
-
function extractWithPrefix(text, prefix) {
|
|
44
|
-
const results = [];
|
|
45
|
-
let i = 0;
|
|
46
|
-
while (i < text.length) {
|
|
47
|
-
const startIndex = text.indexOf(prefix, i);
|
|
48
|
-
if (startIndex === -1) {
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
const contentStart = startIndex + prefix.length;
|
|
52
|
-
if (contentStart >= text.length || text[contentStart] !== '(') {
|
|
53
|
-
i = startIndex + 1;
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
let parenCount = 1;
|
|
57
|
-
let j = contentStart + 1;
|
|
58
|
-
while (j < text.length && parenCount > 0) {
|
|
59
|
-
if (text[j] === '(') {
|
|
60
|
-
parenCount++;
|
|
61
|
-
}
|
|
62
|
-
else if (text[j] === ')') {
|
|
63
|
-
parenCount--;
|
|
64
|
-
}
|
|
65
|
-
j++;
|
|
66
|
-
}
|
|
67
|
-
if (parenCount === 0) {
|
|
68
|
-
const innerCommand = text.substring(contentStart + 1, j - 1).trim();
|
|
69
|
-
if (innerCommand) {
|
|
70
|
-
results.push(innerCommand);
|
|
71
|
-
results.push(...extractInlineSubCommands(innerCommand, envShell, envOS));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
i = startIndex + 1;
|
|
75
|
-
}
|
|
76
|
-
return results;
|
|
77
|
-
}
|
|
78
|
-
function extractBackticks(text) {
|
|
79
|
-
const results = [];
|
|
80
|
-
let i = 0;
|
|
81
|
-
while (i < text.length) {
|
|
82
|
-
const startIndex = text.indexOf('`', i);
|
|
83
|
-
if (startIndex === -1) {
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
const endIndex = text.indexOf('`', startIndex + 1);
|
|
87
|
-
if (endIndex === -1) {
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
const innerCommand = text.substring(startIndex + 1, endIndex).trim();
|
|
91
|
-
if (innerCommand) {
|
|
92
|
-
results.push(innerCommand);
|
|
93
|
-
results.push(...extractInlineSubCommands(innerCommand, envShell, envOS));
|
|
94
|
-
}
|
|
95
|
-
i = endIndex + 1;
|
|
96
|
-
}
|
|
97
|
-
return results;
|
|
98
|
-
}
|
|
99
|
-
if (shellType === 'pwsh') {
|
|
100
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '$'));
|
|
101
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '@'));
|
|
102
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '&'));
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '$'));
|
|
106
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '<'));
|
|
107
|
-
inlineCommands.push(...extractWithPrefix(commandLine, '>'));
|
|
108
|
-
inlineCommands.push(...extractBackticks(commandLine));
|
|
109
|
-
}
|
|
110
|
-
return ( new Set(inlineCommands));
|
|
63
|
+
return subCommands.filter(e => e.length > 0);
|
|
111
64
|
}
|
|
112
65
|
|
|
113
|
-
export {
|
|
66
|
+
export { splitCommandLineIntoSubCommands };
|
package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { DisposableStore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
|
+
import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
|
|
5
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
6
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
7
|
+
import { IToolInvocationContext, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
|
|
8
|
+
import { Task } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/tasks";
|
|
9
|
+
import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
|
|
10
|
+
import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
11
|
+
import { IExecution, IPollingResult, OutputMonitorState } from "./tools/monitoring/types.js";
|
|
12
|
+
export declare function getTaskDefinition(id: string): {
|
|
13
|
+
taskLabel: string;
|
|
14
|
+
taskType: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function getTaskRepresentation(task: IConfiguredTask | Task): string;
|
|
17
|
+
export declare function getTaskForTool(id: string | undefined, taskDefinition: {
|
|
18
|
+
taskLabel?: string;
|
|
19
|
+
taskType?: string;
|
|
20
|
+
}, workspaceFolder: string, configurationService: IConfigurationService, taskService: ITaskService, allowParentTask?: boolean): Promise<Task | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Represents a configured task in the system.
|
|
23
|
+
*
|
|
24
|
+
* This interface is used to define tasks that can be executed within the workspace.
|
|
25
|
+
* It includes optional properties for identifying and describing the task.
|
|
26
|
+
*
|
|
27
|
+
* Properties:
|
|
28
|
+
* - `type`: (optional) The type of the task, which categorizes it (e.g., "build", "test").
|
|
29
|
+
* - `label`: (optional) A user-facing label for the task, typically used for display purposes.
|
|
30
|
+
* - `script`: (optional) A script associated with the task, if applicable.
|
|
31
|
+
* - `command`: (optional) A command associated with the task, if applicable.
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
export interface IConfiguredTask {
|
|
35
|
+
label?: string;
|
|
36
|
+
type?: string;
|
|
37
|
+
script?: string;
|
|
38
|
+
command?: string;
|
|
39
|
+
args?: string[];
|
|
40
|
+
isBackground?: boolean;
|
|
41
|
+
problemMatcher?: string[];
|
|
42
|
+
group?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function resolveDependencyTasks(parentTask: Task, workspaceFolder: string, configurationService: IConfigurationService, taskService: ITaskService): Promise<Task[] | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Collects output, polling duration, and idle status for all terminals.
|
|
47
|
+
*/
|
|
48
|
+
export declare function collectTerminalResults(terminals: ITerminalInstance[], task: Task, instantiationService: IInstantiationService, invocationContext: IToolInvocationContext, progress: ToolProgress, token: CancellationToken, disposableStore: DisposableStore, isActive?: () => Promise<boolean>, dependencyTasks?: Task[]): Promise<Array<{
|
|
49
|
+
name: string;
|
|
50
|
+
output: string;
|
|
51
|
+
resources?: ILinkLocation[];
|
|
52
|
+
pollDurationMs: number;
|
|
53
|
+
state: OutputMonitorState;
|
|
54
|
+
inputToolManualAcceptCount: number;
|
|
55
|
+
inputToolManualRejectCount: number;
|
|
56
|
+
inputToolManualChars: number;
|
|
57
|
+
}>>;
|
|
58
|
+
export declare function taskProblemPollFn(execution: IExecution, token: CancellationToken, taskService: ITaskService): Promise<IPollingResult | undefined>;
|
|
59
|
+
export interface ILinkLocation {
|
|
60
|
+
uri: URI;
|
|
61
|
+
range?: Range;
|
|
62
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
|
|
2
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
3
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
4
|
+
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
5
|
+
import { getOutput } from './outputHelpers.js';
|
|
6
|
+
import { OutputMonitor } from './tools/monitoring/outputMonitor.js';
|
|
7
|
+
import { OutputMonitorState } from './tools/monitoring/types.js';
|
|
8
|
+
import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
9
|
+
|
|
10
|
+
function getTaskDefinition(id) {
|
|
11
|
+
const idx = id.indexOf(': ');
|
|
12
|
+
const taskType = id.substring(0, idx);
|
|
13
|
+
let taskLabel = idx > 0 ? id.substring(idx + 2) : id;
|
|
14
|
+
if (/^\d+$/.test(taskLabel)) {
|
|
15
|
+
taskLabel = id;
|
|
16
|
+
}
|
|
17
|
+
return { taskLabel, taskType };
|
|
18
|
+
}
|
|
19
|
+
function getTaskRepresentation(task) {
|
|
20
|
+
if ('label' in task && task.label) {
|
|
21
|
+
return task.label;
|
|
22
|
+
}
|
|
23
|
+
else if ('script' in task && task.script) {
|
|
24
|
+
return task.script;
|
|
25
|
+
}
|
|
26
|
+
else if ('command' in task && task.command) {
|
|
27
|
+
return typeof task.command === 'string' ? task.command : task.command.name?.toString() || '';
|
|
28
|
+
}
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
async function getTaskForTool(id, taskDefinition, workspaceFolder, configurationService, taskService, allowParentTask) {
|
|
32
|
+
let index = 0;
|
|
33
|
+
let task;
|
|
34
|
+
const workspaceFolderToTaskMap = await taskService.getWorkspaceTasks();
|
|
35
|
+
let configTasks = [];
|
|
36
|
+
for (const folder of ( workspaceFolderToTaskMap.keys())) {
|
|
37
|
+
const tasksConfig = configurationService.getValue('tasks', { resource: ( URI.parse(folder)) });
|
|
38
|
+
if (tasksConfig?.tasks) {
|
|
39
|
+
configTasks = configTasks.concat(tasksConfig.tasks);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const configTask of configTasks) {
|
|
43
|
+
if ((!allowParentTask && !configTask.type) || ('hide' in configTask && configTask.hide)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if ((configTask.type && taskDefinition.taskType ? configTask.type === taskDefinition.taskType : true) &&
|
|
47
|
+
((getTaskRepresentation(configTask) === taskDefinition?.taskLabel) || (id === configTask.label))) {
|
|
48
|
+
task = configTask;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
else if (!configTask.label && id === `${configTask.type}: ${index}`) {
|
|
52
|
+
task = configTask;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
index++;
|
|
56
|
+
}
|
|
57
|
+
if (!task) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
let tasksForWorkspace;
|
|
61
|
+
const workspaceFolderPath = URI.file(workspaceFolder).path;
|
|
62
|
+
for (const [folder, tasks] of workspaceFolderToTaskMap) {
|
|
63
|
+
if (( URI.parse(folder)).path === workspaceFolderPath) {
|
|
64
|
+
tasksForWorkspace = tasks;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (!tasksForWorkspace) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const configuringTasks = tasksForWorkspace.configurations?.byIdentifier;
|
|
72
|
+
const configuredTask = ( Object.values(configuringTasks ?? {})).find(t => {
|
|
73
|
+
return t.type === task.type && (t._label === task.label || t._label === `${task.type}: ${getTaskRepresentation(task)}` || t._label === getTaskRepresentation(task));
|
|
74
|
+
});
|
|
75
|
+
let resolvedTask;
|
|
76
|
+
if (configuredTask) {
|
|
77
|
+
resolvedTask = await taskService.tryResolveTask(configuredTask);
|
|
78
|
+
}
|
|
79
|
+
if (!resolvedTask) {
|
|
80
|
+
const customTasks = tasksForWorkspace.set?.tasks;
|
|
81
|
+
resolvedTask = customTasks?.find(t => task.label === t._label || task.label === t._label);
|
|
82
|
+
}
|
|
83
|
+
return resolvedTask;
|
|
84
|
+
}
|
|
85
|
+
async function resolveDependencyTasks(parentTask, workspaceFolder, configurationService, taskService) {
|
|
86
|
+
if (!parentTask.configurationProperties?.dependsOn) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
const dependencyTasks = await Promise.all(( parentTask.configurationProperties.dependsOn.map(async (dep) => {
|
|
90
|
+
const depId = typeof dep.task === 'string' ? dep.task : dep.task?._key;
|
|
91
|
+
if (!depId) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
return await getTaskForTool(depId, { taskLabel: depId }, workspaceFolder, configurationService, taskService);
|
|
95
|
+
})));
|
|
96
|
+
return dependencyTasks.filter((t) => t !== undefined);
|
|
97
|
+
}
|
|
98
|
+
async function collectTerminalResults(terminals, task, instantiationService, invocationContext, progress, token, disposableStore, isActive, dependencyTasks) {
|
|
99
|
+
const results = [];
|
|
100
|
+
if (token.isCancellationRequested) {
|
|
101
|
+
return results;
|
|
102
|
+
}
|
|
103
|
+
for (const instance of terminals) {
|
|
104
|
+
progress.report({ message: ( new MarkdownString(`Checking output for \`${instance.shellLaunchConfig.name ?? 'unknown'}\``)) });
|
|
105
|
+
const execution = {
|
|
106
|
+
getOutput: () => getOutput(instance) ?? '',
|
|
107
|
+
isActive,
|
|
108
|
+
task,
|
|
109
|
+
instance,
|
|
110
|
+
dependencyTasks,
|
|
111
|
+
sessionId: invocationContext.sessionId
|
|
112
|
+
};
|
|
113
|
+
const outputMonitor = disposableStore.add(instantiationService.createInstance(OutputMonitor, execution, taskProblemPollFn, invocationContext, token, task._label));
|
|
114
|
+
await Event.toPromise(outputMonitor.onDidFinishCommand);
|
|
115
|
+
const pollingResult = outputMonitor.pollingResult;
|
|
116
|
+
results.push({
|
|
117
|
+
name: instance.shellLaunchConfig.name ?? 'unknown',
|
|
118
|
+
output: pollingResult?.output ?? '',
|
|
119
|
+
pollDurationMs: pollingResult?.pollDurationMs ?? 0,
|
|
120
|
+
resources: pollingResult?.resources,
|
|
121
|
+
state: pollingResult?.state || OutputMonitorState.Idle,
|
|
122
|
+
inputToolManualAcceptCount: outputMonitor.outputMonitorTelemetryCounters.inputToolManualAcceptCount ?? 0,
|
|
123
|
+
inputToolManualRejectCount: outputMonitor.outputMonitorTelemetryCounters.inputToolManualRejectCount ?? 0,
|
|
124
|
+
inputToolManualChars: outputMonitor.outputMonitorTelemetryCounters.inputToolManualChars ?? 0,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return results;
|
|
128
|
+
}
|
|
129
|
+
async function taskProblemPollFn(execution, token, taskService) {
|
|
130
|
+
if (token.isCancellationRequested) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (execution.task) {
|
|
134
|
+
const data = taskService.getTaskProblems(execution.instance.instanceId);
|
|
135
|
+
if (data) {
|
|
136
|
+
const problemList = [];
|
|
137
|
+
const resultResources = [];
|
|
138
|
+
for (const [owner, { resources, markers }] of data.entries()) {
|
|
139
|
+
for (let i = 0; i < markers.length; i++) {
|
|
140
|
+
const uri = resources[i];
|
|
141
|
+
const marker = markers[i];
|
|
142
|
+
resultResources.push({
|
|
143
|
+
uri,
|
|
144
|
+
range: marker.startLineNumber !== undefined && marker.startColumn !== undefined && marker.endLineNumber !== undefined && marker.endColumn !== undefined
|
|
145
|
+
? ( new Range(
|
|
146
|
+
marker.startLineNumber,
|
|
147
|
+
marker.startColumn,
|
|
148
|
+
marker.endLineNumber,
|
|
149
|
+
marker.endColumn
|
|
150
|
+
))
|
|
151
|
+
: undefined
|
|
152
|
+
});
|
|
153
|
+
const label = uri ? uri.path.split('/').pop() ?? ( uri.toString()) : '';
|
|
154
|
+
const message = marker.message ?? '';
|
|
155
|
+
problemList.push(`Problem: ${message} in ${label} coming from ${owner}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (problemList.length === 0) {
|
|
159
|
+
return {
|
|
160
|
+
state: OutputMonitorState.Idle,
|
|
161
|
+
output: 'The task succeeded with no problems.',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
state: OutputMonitorState.Idle,
|
|
166
|
+
output: problemList.join('\n'),
|
|
167
|
+
resources: resultResources,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
throw ( new Error('Polling failed'));
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export { collectTerminalResults, getTaskDefinition, getTaskForTool, getTaskRepresentation, resolveDependencyTasks, taskProblemPollFn };
|
|
@@ -4,29 +4,60 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
|
|
|
4
4
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
5
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
6
6
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
7
|
+
import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
8
|
+
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
7
9
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
8
10
|
import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
|
|
11
|
+
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
12
|
+
import { showChatView } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
13
|
+
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
14
|
+
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
|
|
9
15
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
10
16
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
17
|
+
import { registerActiveInstanceAction, sharedWhenClause } from '@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common/vscode/vs/workbench/contrib/terminal/browser/terminalActions';
|
|
18
|
+
import { TerminalContextMenuGroup } from '@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/terminal/browser/terminalMenus';
|
|
19
|
+
import { TerminalContextKeys } from '@codingame/monaco-vscode-b6d52a6d-8c8e-51f5-bcd2-1722295e31d9-common/vscode/vs/workbench/contrib/terminal/common/terminalContextKey';
|
|
20
|
+
import { TerminalChatAgentToolsCommandId } from '../common/terminal.chatAgentTools.js';
|
|
21
|
+
import { GetTerminalLastCommandTool, GetTerminalLastCommandToolData } from './tools/getTerminalLastCommandTool.js';
|
|
22
|
+
import { GetTerminalOutputTool, GetTerminalOutputToolData } from './tools/getTerminalOutputTool.js';
|
|
23
|
+
import { GetTerminalSelectionTool, GetTerminalSelectionToolData } from './tools/getTerminalSelectionTool.js';
|
|
24
|
+
import { RunInTerminalTool, RunInTerminalToolData } from './tools/runInTerminalTool.js';
|
|
25
|
+
import { CreateAndRunTaskTool, CreateAndRunTaskToolData } from './tools/task/createAndRunTaskTool.js';
|
|
26
|
+
import { GetTaskOutputTool, GetTaskOutputToolData } from './tools/task/getTaskOutputTool.js';
|
|
27
|
+
import { RunTaskTool, RunTaskToolData } from './tools/task/runTaskTool.js';
|
|
13
28
|
|
|
14
29
|
let ChatAgentToolsContribution = class ChatAgentToolsContribution extends Disposable {
|
|
15
30
|
static { this.ID = 'terminal.chatAgentTools'; }
|
|
16
31
|
constructor(instantiationService, toolsService) {
|
|
17
32
|
super();
|
|
18
33
|
const runInTerminalTool = instantiationService.createInstance(RunInTerminalTool);
|
|
19
|
-
this._register(toolsService.
|
|
20
|
-
this._register(toolsService.registerToolImplementation(RunInTerminalToolData.id, runInTerminalTool));
|
|
34
|
+
this._register(toolsService.registerTool(RunInTerminalToolData, runInTerminalTool));
|
|
21
35
|
const getTerminalOutputTool = instantiationService.createInstance(GetTerminalOutputTool);
|
|
22
|
-
this._register(toolsService.
|
|
23
|
-
this._register(toolsService.
|
|
24
|
-
const toolSet = this._register(toolsService.createToolSet(ToolDataSource.Internal, 'runCommands', 'runCommands', {
|
|
36
|
+
this._register(toolsService.registerTool(GetTerminalOutputToolData, getTerminalOutputTool));
|
|
37
|
+
const runCommandsToolSet = this._register(toolsService.createToolSet(ToolDataSource.Internal, 'runCommands', 'runCommands', {
|
|
25
38
|
icon: ThemeIcon.fromId(Codicon.terminal.id),
|
|
26
|
-
description: ( localize(
|
|
39
|
+
description: ( localize(11430, 'Runs commands in the terminal'))
|
|
27
40
|
}));
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
runCommandsToolSet.addTool(RunInTerminalToolData);
|
|
42
|
+
runCommandsToolSet.addTool(GetTerminalOutputToolData);
|
|
43
|
+
const getTerminalSelectionTool = instantiationService.createInstance(GetTerminalSelectionTool);
|
|
44
|
+
this._register(toolsService.registerTool(GetTerminalSelectionToolData, getTerminalSelectionTool));
|
|
45
|
+
const getTerminalLastCommandTool = instantiationService.createInstance(GetTerminalLastCommandTool);
|
|
46
|
+
this._register(toolsService.registerTool(GetTerminalLastCommandToolData, getTerminalLastCommandTool));
|
|
47
|
+
runCommandsToolSet.addTool(GetTerminalSelectionToolData);
|
|
48
|
+
runCommandsToolSet.addTool(GetTerminalLastCommandToolData);
|
|
49
|
+
const runTaskTool = instantiationService.createInstance(RunTaskTool);
|
|
50
|
+
this._register(toolsService.registerTool(RunTaskToolData, runTaskTool));
|
|
51
|
+
const getTaskOutputTool = instantiationService.createInstance(GetTaskOutputTool);
|
|
52
|
+
this._register(toolsService.registerTool(GetTaskOutputToolData, getTaskOutputTool));
|
|
53
|
+
const createAndRunTaskTool = instantiationService.createInstance(CreateAndRunTaskTool);
|
|
54
|
+
this._register(toolsService.registerTool(CreateAndRunTaskToolData, createAndRunTaskTool));
|
|
55
|
+
const runTasksToolSet = this._register(toolsService.createToolSet(ToolDataSource.Internal, 'runTasks', 'runTasks', {
|
|
56
|
+
description: ( localize(11431, 'Runs tasks and gets their output for your workspace')),
|
|
57
|
+
}));
|
|
58
|
+
runTasksToolSet.addTool(RunTaskToolData);
|
|
59
|
+
runTasksToolSet.addTool(GetTaskOutputToolData);
|
|
60
|
+
runTasksToolSet.addTool(CreateAndRunTaskToolData);
|
|
30
61
|
}
|
|
31
62
|
};
|
|
32
63
|
ChatAgentToolsContribution = ( __decorate([
|
|
@@ -34,3 +65,37 @@ ChatAgentToolsContribution = ( __decorate([
|
|
|
34
65
|
( __param(1, ILanguageModelToolsService))
|
|
35
66
|
], ChatAgentToolsContribution));
|
|
36
67
|
registerWorkbenchContribution2(ChatAgentToolsContribution.ID, ChatAgentToolsContribution, WorkbenchPhase.AfterRestored);
|
|
68
|
+
registerActiveInstanceAction({
|
|
69
|
+
id: TerminalChatAgentToolsCommandId.ChatAddTerminalSelection,
|
|
70
|
+
title: ( localize(11432, 'Add Terminal Selection to Chat')),
|
|
71
|
+
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, sharedWhenClause.terminalAvailable)),
|
|
72
|
+
menu: [
|
|
73
|
+
{
|
|
74
|
+
id: MenuId.TerminalInstanceContext,
|
|
75
|
+
group: TerminalContextMenuGroup.Chat,
|
|
76
|
+
order: 1,
|
|
77
|
+
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, TerminalContextKeys.textSelected))
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
run: async (activeInstance, _c, accessor) => {
|
|
81
|
+
const viewsService = accessor.get(IViewsService);
|
|
82
|
+
const chatWidgetService = accessor.get(IChatWidgetService);
|
|
83
|
+
const selection = activeInstance.selection;
|
|
84
|
+
if (!selection) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const chatView = chatWidgetService.lastFocusedWidget || (await showChatView(viewsService));
|
|
88
|
+
if (!chatView) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
chatView.attachmentModel.addContext({
|
|
92
|
+
id: `terminal-selection-${Date.now()}`,
|
|
93
|
+
kind: 'generic',
|
|
94
|
+
name: ( localize(11433, 'Terminal Selection')),
|
|
95
|
+
fullName: ( localize(11433, 'Terminal Selection')),
|
|
96
|
+
value: selection,
|
|
97
|
+
icon: Codicon.terminal
|
|
98
|
+
});
|
|
99
|
+
chatView.focusInput();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
3
|
+
import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
|
|
2
4
|
import { type ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
3
5
|
import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
|
|
4
6
|
export declare enum ShellIntegrationQuality {
|
|
@@ -9,16 +11,27 @@ export declare enum ShellIntegrationQuality {
|
|
|
9
11
|
export interface IToolTerminal {
|
|
10
12
|
instance: ITerminalInstance;
|
|
11
13
|
shellIntegrationQuality: ShellIntegrationQuality;
|
|
14
|
+
receivedUserInput?: boolean;
|
|
12
15
|
}
|
|
13
16
|
export declare class ToolTerminalCreator {
|
|
17
|
+
private readonly _configurationService;
|
|
18
|
+
private readonly _logService;
|
|
14
19
|
private readonly _terminalService;
|
|
15
20
|
/**
|
|
16
21
|
* The shell preference cached for the lifetime of the window. This allows skipping previous
|
|
17
22
|
* shell approaches that failed in previous runs to save time.
|
|
18
23
|
*/
|
|
19
24
|
private static _lastSuccessfulShell;
|
|
20
|
-
constructor(_terminalService: ITerminalService);
|
|
21
|
-
createTerminal(token: CancellationToken): Promise<IToolTerminal>;
|
|
25
|
+
constructor(_configurationService: IConfigurationService, _logService: ITerminalLogService, _terminalService: ITerminalService);
|
|
26
|
+
createTerminal(shell: string, token: CancellationToken): Promise<IToolTerminal>;
|
|
27
|
+
/**
|
|
28
|
+
* Synchronously update shell integration quality based on the terminal instance's current
|
|
29
|
+
* capabilities. This is a defensive change to avoid no shell integration being sticky
|
|
30
|
+
* https://github.com/microsoft/vscode/issues/260880
|
|
31
|
+
*
|
|
32
|
+
* Only upgrade quality just in case.
|
|
33
|
+
*/
|
|
34
|
+
refreshShellIntegrationQuality(toolTerminal: IToolTerminal): void;
|
|
22
35
|
private _createCopilotTerminal;
|
|
23
36
|
private _waitForShellIntegration;
|
|
24
37
|
}
|