@codingame/monaco-vscode-chat-service-override 22.1.8 → 23.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +16 -7
- package/package.json +43 -41
- package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +57 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +26 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +51 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.d.ts → chatNewActions.d.ts} +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.js → chatNewActions.js} +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +101 -98
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +43 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +33 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +154 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +347 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +250 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +97 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +290 -231
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +7 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +113 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +102 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +646 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +46 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +17 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +44 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +25 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +46 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +45 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +30 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +60 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +60 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +29 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +365 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +58 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +6 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +38 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +11 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +83 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +91 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +64 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +370 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +61 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +787 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +122 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +211 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css +69 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +21 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +54 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +31 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +16 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +29 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +37 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +96 -131
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +66 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +77 -71
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +91 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +458 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +212 -150
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +96 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +15 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +33 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +688 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +15 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +126 -135
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditorController.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +38 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +24 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +15 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +89 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +30 -29
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +10 -19
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +61 -43
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +254 -165
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +10 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +13 -17
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +51 -21
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +74 -20
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +11 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +83 -53
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +136 -78
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +18 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +357 -157
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +55 -28
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +235 -108
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +50 -4
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +11 -7
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +12 -14
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +18 -30
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +62 -139
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +16 -15
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +119 -15
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +6 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +192 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +21 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +8 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +18 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +18 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +24 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +33 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +42 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +14 -21
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +227 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +133 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +75 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +71 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +28 -15
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +366 -363
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +18 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +123 -0
- package/vscode/src/vs/base/common/yaml.d.ts +0 -74
- package/vscode/src/vs/base/common/yaml.js +0 -597
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +0 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +0 -239
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +0 -102
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +0 -435
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.d.ts +0 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +0 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +0 -49
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +0 -380
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.d.ts +0 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.js +0 -137
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +0 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +0 -176
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.d.ts +0 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +0 -206
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +0 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +0 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +0 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +0 -65
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +0 -306
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +0 -102
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.d.ts +0 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.js +0 -247
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +0 -118
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +0 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +0 -66
|
@@ -14,14 +14,16 @@ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platf
|
|
|
14
14
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
15
15
|
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
16
16
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
17
|
+
import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
|
|
17
18
|
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
18
|
-
import { showChatView } from '@codingame/monaco-vscode-
|
|
19
|
+
import { showChatView } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
19
20
|
import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
|
|
20
|
-
import {
|
|
21
|
+
import { isCellTextEditOperationArray } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModel';
|
|
22
|
+
import { ChatMode } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModes';
|
|
21
23
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
22
24
|
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
23
|
-
import { InlineChatWidget } from '@codingame/monaco-vscode-
|
|
24
|
-
import { MENU_INLINE_CHAT_WIDGET_SECONDARY } from '@codingame/monaco-vscode-
|
|
25
|
+
import { InlineChatWidget } from '@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatWidget';
|
|
26
|
+
import { MENU_INLINE_CHAT_WIDGET_SECONDARY } from '@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
|
|
25
27
|
import { TerminalStickyScrollContribution } from '@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common/vscode/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollContribution';
|
|
26
28
|
import * as terminalChatWidget from './media/terminalChatWidget.css';
|
|
27
29
|
import { TerminalChatContextKeys, MENU_TERMINAL_CHAT_WIDGET_INPUT_SIDE_TOOLBAR, TerminalChatCommandId, MENU_TERMINAL_CHAT_WIDGET_STATUS } from '@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common/vscode/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat';
|
|
@@ -53,7 +55,7 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
53
55
|
get lastResponseContent() {
|
|
54
56
|
return this._lastResponseContent;
|
|
55
57
|
}
|
|
56
|
-
constructor(_terminalElement, _instance, _xterm, contextKeyService, _chatService, _storageService, _viewsService, instantiationService, _chatAgentService) {
|
|
58
|
+
constructor(_terminalElement, _instance, _xterm, contextKeyService, _chatService, _storageService, _viewsService, instantiationService, _chatAgentService, _layoutService) {
|
|
57
59
|
super();
|
|
58
60
|
this._terminalElement = _terminalElement;
|
|
59
61
|
this._instance = _instance;
|
|
@@ -62,6 +64,7 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
62
64
|
this._storageService = _storageService;
|
|
63
65
|
this._viewsService = _viewsService;
|
|
64
66
|
this._chatAgentService = _chatAgentService;
|
|
67
|
+
this._layoutService = _layoutService;
|
|
65
68
|
this._onDidHide = this._register(( new Emitter()));
|
|
66
69
|
this.onDidHide = this._onDidHide.event;
|
|
67
70
|
this._messages = this._store.add(( new Emitter()));
|
|
@@ -100,7 +103,8 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
100
103
|
telemetrySource: 'terminal-inline-chat',
|
|
101
104
|
executeToolbar: MenuId.ChatExecute,
|
|
102
105
|
inputSideToolbar: MENU_TERMINAL_CHAT_WIDGET_INPUT_SIDE_TOOLBAR,
|
|
103
|
-
}
|
|
106
|
+
},
|
|
107
|
+
defaultMode: ChatMode.Ask
|
|
104
108
|
}
|
|
105
109
|
});
|
|
106
110
|
this._register(this._inlineChatWidget.chatWidget.onDidChangeViewModel(() => this._saveViewState()));
|
|
@@ -163,7 +167,7 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
163
167
|
}
|
|
164
168
|
_resetPlaceholder() {
|
|
165
169
|
const defaultAgent = this._chatAgentService.getDefaultAgent(ChatAgentLocation.Terminal);
|
|
166
|
-
this.inlineChatWidget.placeholder = defaultAgent?.description ?? ( localize(
|
|
170
|
+
this.inlineChatWidget.placeholder = defaultAgent?.description ?? ( localize(11825, 'Ask about commands'));
|
|
167
171
|
}
|
|
168
172
|
async reveal(viewState) {
|
|
169
173
|
await this._createSession(viewState);
|
|
@@ -346,13 +350,13 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
346
350
|
this._activeRequestCts?.cancel();
|
|
347
351
|
this._requestActiveContextKey.set(false);
|
|
348
352
|
const model = this._inlineChatWidget.getChatModel();
|
|
349
|
-
if (!model?.
|
|
353
|
+
if (!model?.sessionResource) {
|
|
350
354
|
return;
|
|
351
355
|
}
|
|
352
|
-
this._chatService.cancelCurrentRequestForSession(model?.
|
|
356
|
+
this._chatService.cancelCurrentRequestForSession(model?.sessionResource);
|
|
353
357
|
}
|
|
354
358
|
async viewInChat() {
|
|
355
|
-
const widget = await showChatView(this._viewsService);
|
|
359
|
+
const widget = await showChatView(this._viewsService, this._layoutService);
|
|
356
360
|
const currentRequest = this._inlineChatWidget.chatWidget.viewModel?.model.getRequests().find(r => r.id === this._currentRequestId);
|
|
357
361
|
if (!widget || !currentRequest?.response) {
|
|
358
362
|
return;
|
|
@@ -370,17 +374,17 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
370
374
|
}
|
|
371
375
|
else if (item.kind === 'notebookEditGroup') {
|
|
372
376
|
for (const group of item.edits) {
|
|
373
|
-
if (
|
|
377
|
+
if (isCellTextEditOperationArray(group)) {
|
|
374
378
|
message.push({
|
|
375
379
|
kind: 'textEdit',
|
|
376
|
-
edits:
|
|
377
|
-
uri: group.uri
|
|
380
|
+
edits: ( group.map(e => e.edit)),
|
|
381
|
+
uri: group[0].uri
|
|
378
382
|
});
|
|
379
383
|
}
|
|
380
384
|
else {
|
|
381
385
|
message.push({
|
|
382
386
|
kind: 'notebookEdit',
|
|
383
|
-
edits:
|
|
387
|
+
edits: group,
|
|
384
388
|
uri: item.uri
|
|
385
389
|
});
|
|
386
390
|
}
|
|
@@ -390,7 +394,7 @@ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
|
|
|
390
394
|
message.push(item);
|
|
391
395
|
}
|
|
392
396
|
}
|
|
393
|
-
this._chatService.addCompleteRequest(widget.viewModel.
|
|
397
|
+
this._chatService.addCompleteRequest(widget.viewModel.sessionResource, `@${this._terminalAgentName} ${currentRequest.message.text}`, currentRequest.variableData, currentRequest.attempt, {
|
|
394
398
|
message,
|
|
395
399
|
result: currentRequest.response.result,
|
|
396
400
|
followups: currentRequest.response.followups
|
|
@@ -405,7 +409,8 @@ TerminalChatWidget = ( __decorate([
|
|
|
405
409
|
( __param(5, IStorageService)),
|
|
406
410
|
( __param(6, IViewsService)),
|
|
407
411
|
( __param(7, IInstantiationService)),
|
|
408
|
-
( __param(8, IChatAgentService))
|
|
412
|
+
( __param(8, IChatAgentService)),
|
|
413
|
+
( __param(9, IWorkbenchLayoutService))
|
|
409
414
|
], TerminalChatWidget));
|
|
410
415
|
|
|
411
416
|
export { TerminalChatWidget };
|
|
@@ -6,7 +6,7 @@ import { isObject } from '@codingame/monaco-vscode-api/vscode/vs/base/common/typ
|
|
|
6
6
|
import { structuralEquals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/equals';
|
|
7
7
|
import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
|
|
8
8
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
9
|
-
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-
|
|
9
|
+
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-de235d7f-e72a-5adb-9256-acf6c64eb6f2-common/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
|
|
10
10
|
import { isPowerShell } from './runInTerminalHelpers.js';
|
|
11
11
|
|
|
12
12
|
const neverMatchRegex = /(?!.*)/;
|
|
@@ -22,6 +22,7 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
|
|
|
22
22
|
this.updateConfiguration();
|
|
23
23
|
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
|
24
24
|
if (e.affectsConfiguration(TerminalChatAgentToolsSettingId.AutoApprove) ||
|
|
25
|
+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.IgnoreDefaultAutoApproveRules) ||
|
|
25
26
|
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAutoApproveCompatible)) {
|
|
26
27
|
this.updateConfiguration();
|
|
27
28
|
}
|
|
@@ -122,7 +123,8 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
|
|
|
122
123
|
const allowListRules = [];
|
|
123
124
|
const allowListCommandLineRules = [];
|
|
124
125
|
const denyListCommandLineRules = [];
|
|
125
|
-
|
|
126
|
+
const ignoreDefaults = this._configurationService.getValue(TerminalChatAgentToolsSettingId.IgnoreDefaultAutoApproveRules) === true;
|
|
127
|
+
for (const [key, value] of Object.entries(config)) {
|
|
126
128
|
const defaultValue = configInspectValue?.default?.value;
|
|
127
129
|
const isDefaultRule = !!(isObject(defaultValue) &&
|
|
128
130
|
key in defaultValue &&
|
|
@@ -139,6 +141,9 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
|
|
|
139
141
|
: checkTarget(configInspectValue.userValue) ? ConfigurationTarget.USER
|
|
140
142
|
: checkTarget(configInspectValue.applicationValue) ? ConfigurationTarget.APPLICATION
|
|
141
143
|
: ConfigurationTarget.DEFAULT);
|
|
144
|
+
if (ignoreDefaults && isDefaultRule && sourceTarget === ConfigurationTarget.DEFAULT) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
142
147
|
if (typeof value === 'boolean') {
|
|
143
148
|
const { regex, regexCaseInsensitive } = this._convertAutoApproveEntryToRegex(key);
|
|
144
149
|
if (value === true) {
|
|
@@ -170,7 +175,7 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
|
|
|
170
175
|
}
|
|
171
176
|
}
|
|
172
177
|
}
|
|
173
|
-
}
|
|
178
|
+
}
|
|
174
179
|
return {
|
|
175
180
|
denyListRules,
|
|
176
181
|
allowListRules,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
2
|
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
3
|
-
import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-
|
|
3
|
+
import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-10af0e5d-64cb-56de-b584-29ab4a355d15-common/vscode/vs/platform/terminal/common/capabilities/capabilities";
|
|
4
4
|
import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
|
|
5
5
|
import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } from "./executeStrategy.js";
|
|
6
6
|
import type { IMarker as IXtermMarker } from "@xterm/xterm";
|
|
@@ -37,6 +37,6 @@ export declare class BasicExecuteStrategy implements ITerminalExecuteStrategy {
|
|
|
37
37
|
private readonly _onDidCreateStartMarker;
|
|
38
38
|
onDidCreateStartMarker: Event<IXtermMarker | undefined>;
|
|
39
39
|
constructor(_instance: ITerminalInstance, _hasReceivedUserInput: () => boolean, _commandDetection: ICommandDetectionCapability, _logService: ITerminalLogService);
|
|
40
|
-
execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
|
|
40
|
+
execute(commandLine: string, token: CancellationToken, commandId?: string): Promise<ITerminalExecuteStrategyResult>;
|
|
41
41
|
private _log;
|
|
42
42
|
}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
4
4
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
|
-
import { MutableDisposable, DisposableStore
|
|
5
|
+
import { MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
6
|
import { isNumber } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
7
7
|
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
8
8
|
import { trackIdleOnPrompt, waitForIdle } from './executeStrategy.js';
|
|
9
|
+
import { setupRecreatingStartMarker } from './strategyHelpers.js';
|
|
9
10
|
|
|
10
11
|
let BasicExecuteStrategy = class BasicExecuteStrategy {
|
|
11
12
|
constructor(_instance, _hasReceivedUserInput, _commandDetection, _logService) {
|
|
@@ -18,7 +19,7 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
|
|
|
18
19
|
this._onDidCreateStartMarker = ( new Emitter());
|
|
19
20
|
this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
|
|
20
21
|
}
|
|
21
|
-
async execute(commandLine, token) {
|
|
22
|
+
async execute(commandLine, token, commandId) {
|
|
22
23
|
const store = ( new DisposableStore());
|
|
23
24
|
try {
|
|
24
25
|
const idlePromptPromise = trackIdleOnPrompt(this._instance, 1000, store);
|
|
@@ -27,12 +28,19 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
|
|
|
27
28
|
this._log('onDone 1 of 2 via end event, waiting for short idle prompt');
|
|
28
29
|
return idlePromptPromise.then(() => {
|
|
29
30
|
this._log('onDone 2 of 2 via short idle prompt');
|
|
30
|
-
return
|
|
31
|
+
return {
|
|
32
|
+
'type': 'success',
|
|
33
|
+
command: e
|
|
34
|
+
};
|
|
31
35
|
});
|
|
32
36
|
}),
|
|
33
37
|
Event.toPromise(token.onCancellationRequested, store).then(() => {
|
|
34
38
|
this._log('onDone via cancellation');
|
|
35
39
|
}),
|
|
40
|
+
Event.toPromise(this._instance.onDisposed, store).then(() => {
|
|
41
|
+
this._log('onDone via terminal disposal');
|
|
42
|
+
return { type: 'disposal' };
|
|
43
|
+
}),
|
|
36
44
|
trackIdleOnPrompt(this._instance, 3000, store).then(() => {
|
|
37
45
|
this._log('onDone long idle prompt');
|
|
38
46
|
}),
|
|
@@ -44,29 +52,7 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
|
|
|
44
52
|
}
|
|
45
53
|
this._log('Waiting for idle');
|
|
46
54
|
await waitForIdle(this._instance.onData, 1000);
|
|
47
|
-
|
|
48
|
-
const recreateStartMarker = () => {
|
|
49
|
-
if (store.isDisposed) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const marker = xterm.raw.registerMarker();
|
|
53
|
-
this._startMarker.value = marker ?? undefined;
|
|
54
|
-
this._onDidCreateStartMarker.fire(marker);
|
|
55
|
-
if (!marker) {
|
|
56
|
-
markerListener.clear();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
markerListener.value = marker.onDispose(() => {
|
|
60
|
-
this._log(`Start marker was disposed, recreating`);
|
|
61
|
-
recreateStartMarker();
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
recreateStartMarker();
|
|
65
|
-
store.add(toDisposable(() => {
|
|
66
|
-
markerListener.dispose();
|
|
67
|
-
this._startMarker.clear();
|
|
68
|
-
this._onDidCreateStartMarker.fire(undefined);
|
|
69
|
-
}));
|
|
55
|
+
setupRecreatingStartMarker(xterm, this._startMarker, m => this._onDidCreateStartMarker.fire(m), store, this._log.bind(this));
|
|
70
56
|
if (this._hasReceivedUserInput()) {
|
|
71
57
|
this._log('Command timed out, sending SIGINT and retrying');
|
|
72
58
|
await this._instance.sendText('\x03', false);
|
|
@@ -74,7 +60,12 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
|
|
|
74
60
|
}
|
|
75
61
|
this._log(`Executing command line \`${commandLine}\``);
|
|
76
62
|
this._instance.sendText(commandLine, true);
|
|
77
|
-
|
|
63
|
+
this._log('Waiting for done event');
|
|
64
|
+
const onDoneResult = await onDone;
|
|
65
|
+
if (onDoneResult && onDoneResult.type === 'disposal') {
|
|
66
|
+
throw ( new Error('The terminal was closed'));
|
|
67
|
+
}
|
|
68
|
+
const finishedCommand = onDoneResult && onDoneResult.type === 'success' ? onDoneResult.command : undefined;
|
|
78
69
|
this._log('Waiting for idle');
|
|
79
70
|
await waitForIdle(this._instance.onData, 1000);
|
|
80
71
|
if (token.isCancellationRequested) {
|
|
@@ -8,9 +8,12 @@ export interface ITerminalExecuteStrategy {
|
|
|
8
8
|
/**
|
|
9
9
|
* Executes a command line and gets a result designed to be passed directly to an LLM. The
|
|
10
10
|
* result will include information about the exit code.
|
|
11
|
+
* @param commandLine The command line to execute
|
|
12
|
+
* @param token Cancellation token
|
|
13
|
+
* @param commandId Optional predefined command ID to link the command
|
|
11
14
|
*/
|
|
12
|
-
execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
|
|
13
|
-
onDidCreateStartMarker: Event<IXtermMarker | undefined>;
|
|
15
|
+
execute(commandLine: string, token: CancellationToken, commandId?: string): Promise<ITerminalExecuteStrategyResult>;
|
|
16
|
+
readonly onDidCreateStartMarker: Event<IXtermMarker | undefined>;
|
|
14
17
|
}
|
|
15
18
|
export interface ITerminalExecuteStrategyResult {
|
|
16
19
|
output: string | undefined;
|
|
@@ -40,9 +40,11 @@ function detectsCommonPromptPattern(cursorLine) {
|
|
|
40
40
|
const PS_CONFIRM_RE = /\s*(?:\[[^\]]\]\s+[^\[]+\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/;
|
|
41
41
|
const YN_PAIRED_RE = /(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i;
|
|
42
42
|
const YN_AFTER_PUNCT_RE = /[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i;
|
|
43
|
+
const CONFIRM_Y_RE = /\(y\)\s*$/i;
|
|
43
44
|
const LINE_ENDS_WITH_COLON_RE = /:\s*$/;
|
|
45
|
+
const END = /\(END\)$/;
|
|
44
46
|
function detectsInputRequiredPattern(cursorLine) {
|
|
45
|
-
return PS_CONFIRM_RE.test(cursorLine) || YN_PAIRED_RE.test(cursorLine) || YN_AFTER_PUNCT_RE.test(cursorLine) || LINE_ENDS_WITH_COLON_RE.test(cursorLine.trim());
|
|
47
|
+
return PS_CONFIRM_RE.test(cursorLine) || YN_PAIRED_RE.test(cursorLine) || YN_AFTER_PUNCT_RE.test(cursorLine) || CONFIRM_Y_RE.test(cursorLine) || LINE_ENDS_WITH_COLON_RE.test(cursorLine.trim()) || END.test(cursorLine);
|
|
46
48
|
}
|
|
47
49
|
async function waitForIdleWithPromptHeuristics(onData, instance, idlePollIntervalMs, extendedTimeoutMs) {
|
|
48
50
|
await waitForIdle(onData, idlePollIntervalMs);
|
|
@@ -19,6 +19,6 @@ export declare class NoneExecuteStrategy implements ITerminalExecuteStrategy {
|
|
|
19
19
|
private readonly _onDidCreateStartMarker;
|
|
20
20
|
onDidCreateStartMarker: Event<IXtermMarker | undefined>;
|
|
21
21
|
constructor(_instance: ITerminalInstance, _hasReceivedUserInput: () => boolean, _logService: ITerminalLogService);
|
|
22
|
-
execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
|
|
22
|
+
execute(commandLine: string, token: CancellationToken, commandId?: string): Promise<ITerminalExecuteStrategyResult>;
|
|
23
23
|
private _log;
|
|
24
24
|
}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
4
4
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
|
-
import { MutableDisposable, DisposableStore
|
|
5
|
+
import { MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
6
|
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
7
7
|
import { waitForIdle, waitForIdleWithPromptHeuristics } from './executeStrategy.js';
|
|
8
|
+
import { setupRecreatingStartMarker } from './strategyHelpers.js';
|
|
8
9
|
|
|
9
10
|
let NoneExecuteStrategy = class NoneExecuteStrategy {
|
|
10
11
|
constructor(_instance, _hasReceivedUserInput, _logService) {
|
|
@@ -16,7 +17,7 @@ let NoneExecuteStrategy = class NoneExecuteStrategy {
|
|
|
16
17
|
this._onDidCreateStartMarker = ( new Emitter());
|
|
17
18
|
this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
|
|
18
19
|
}
|
|
19
|
-
async execute(commandLine, token) {
|
|
20
|
+
async execute(commandLine, token, commandId) {
|
|
20
21
|
const store = ( new DisposableStore());
|
|
21
22
|
try {
|
|
22
23
|
if (token.isCancellationRequested) {
|
|
@@ -32,29 +33,7 @@ let NoneExecuteStrategy = class NoneExecuteStrategy {
|
|
|
32
33
|
if (token.isCancellationRequested) {
|
|
33
34
|
throw ( new CancellationError());
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
const recreateStartMarker = () => {
|
|
37
|
-
if (store.isDisposed) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const marker = xterm.raw.registerMarker();
|
|
41
|
-
this._startMarker.value = marker ?? undefined;
|
|
42
|
-
this._onDidCreateStartMarker.fire(marker);
|
|
43
|
-
if (!marker) {
|
|
44
|
-
markerListener.clear();
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
markerListener.value = marker.onDispose(() => {
|
|
48
|
-
this._log(`Start marker was disposed, recreating`);
|
|
49
|
-
recreateStartMarker();
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
recreateStartMarker();
|
|
53
|
-
store.add(toDisposable(() => {
|
|
54
|
-
markerListener.dispose();
|
|
55
|
-
this._startMarker.clear();
|
|
56
|
-
this._onDidCreateStartMarker.fire(undefined);
|
|
57
|
-
}));
|
|
36
|
+
setupRecreatingStartMarker(xterm, this._startMarker, m => this._onDidCreateStartMarker.fire(m), store, this._log.bind(this));
|
|
58
37
|
if (this._hasReceivedUserInput()) {
|
|
59
38
|
this._log('Command timed out, sending SIGINT and retrying');
|
|
60
39
|
await this._instance.sendText('\x03', false);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
2
|
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
3
|
-
import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-
|
|
3
|
+
import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-10af0e5d-64cb-56de-b584-29ab4a355d15-common/vscode/vs/platform/terminal/common/capabilities/capabilities";
|
|
4
4
|
import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
|
|
5
5
|
import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
6
6
|
import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } from "./executeStrategy.js";
|
|
@@ -21,6 +21,6 @@ export declare class RichExecuteStrategy implements ITerminalExecuteStrategy {
|
|
|
21
21
|
private readonly _onDidCreateStartMarker;
|
|
22
22
|
onDidCreateStartMarker: Event<IXtermMarker | undefined>;
|
|
23
23
|
constructor(_instance: ITerminalInstance, _commandDetection: ICommandDetectionCapability, _logService: ITerminalLogService);
|
|
24
|
-
execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
|
|
24
|
+
execute(commandLine: string, token: CancellationToken, commandId?: string): Promise<ITerminalExecuteStrategyResult>;
|
|
25
25
|
private _log;
|
|
26
26
|
}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
4
4
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
|
-
import { MutableDisposable, DisposableStore
|
|
5
|
+
import { MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
6
|
import { isNumber } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
7
7
|
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
8
8
|
import { trackIdleOnPrompt } from './executeStrategy.js';
|
|
9
|
+
import { setupRecreatingStartMarker } from './strategyHelpers.js';
|
|
9
10
|
|
|
10
11
|
let RichExecuteStrategy = class RichExecuteStrategy {
|
|
11
12
|
constructor(_instance, _commandDetection, _logService) {
|
|
@@ -17,7 +18,7 @@ let RichExecuteStrategy = class RichExecuteStrategy {
|
|
|
17
18
|
this._onDidCreateStartMarker = ( new Emitter());
|
|
18
19
|
this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
|
|
19
20
|
}
|
|
20
|
-
async execute(commandLine, token) {
|
|
21
|
+
async execute(commandLine, token, commandId) {
|
|
21
22
|
const store = ( new DisposableStore());
|
|
22
23
|
try {
|
|
23
24
|
this._log('Waiting for xterm');
|
|
@@ -28,41 +29,31 @@ let RichExecuteStrategy = class RichExecuteStrategy {
|
|
|
28
29
|
const onDone = Promise.race([
|
|
29
30
|
Event.toPromise(this._commandDetection.onCommandFinished, store).then(e => {
|
|
30
31
|
this._log('onDone via end event');
|
|
31
|
-
return
|
|
32
|
+
return {
|
|
33
|
+
'type': 'success',
|
|
34
|
+
command: e
|
|
35
|
+
};
|
|
32
36
|
}),
|
|
33
37
|
Event.toPromise(token.onCancellationRequested, store).then(() => {
|
|
34
38
|
this._log('onDone via cancellation');
|
|
35
39
|
}),
|
|
40
|
+
Event.toPromise(this._instance.onDisposed, store).then(() => {
|
|
41
|
+
this._log('onDone via terminal disposal');
|
|
42
|
+
return { type: 'disposal' };
|
|
43
|
+
}),
|
|
36
44
|
trackIdleOnPrompt(this._instance, 1000, store).then(() => {
|
|
37
45
|
this._log('onDone via idle prompt');
|
|
38
46
|
}),
|
|
39
47
|
]);
|
|
40
|
-
|
|
41
|
-
const recreateStartMarker = () => {
|
|
42
|
-
if (store.isDisposed) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const marker = xterm.raw.registerMarker();
|
|
46
|
-
this._startMarker.value = marker ?? undefined;
|
|
47
|
-
this._onDidCreateStartMarker.fire(marker);
|
|
48
|
-
if (!marker) {
|
|
49
|
-
markerListener.clear();
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
markerListener.value = marker.onDispose(() => {
|
|
53
|
-
recreateStartMarker();
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
recreateStartMarker();
|
|
57
|
-
store.add(toDisposable(() => {
|
|
58
|
-
markerListener.dispose();
|
|
59
|
-
this._startMarker.clear();
|
|
60
|
-
this._onDidCreateStartMarker.fire(undefined);
|
|
61
|
-
}));
|
|
48
|
+
setupRecreatingStartMarker(xterm, this._startMarker, m => this._onDidCreateStartMarker.fire(m), store, this._log.bind(this));
|
|
62
49
|
this._log(`Executing command line \`${commandLine}\``);
|
|
63
|
-
this._instance.runCommand(commandLine, true);
|
|
50
|
+
this._instance.runCommand(commandLine, true, commandId);
|
|
64
51
|
this._log('Waiting for done event');
|
|
65
|
-
const
|
|
52
|
+
const onDoneResult = await onDone;
|
|
53
|
+
if (onDoneResult && onDoneResult.type === 'disposal') {
|
|
54
|
+
throw ( new Error('The terminal was closed'));
|
|
55
|
+
}
|
|
56
|
+
const finishedCommand = onDoneResult && onDoneResult.type === 'success' ? onDoneResult.command : undefined;
|
|
66
57
|
if (token.isCancellationRequested) {
|
|
67
58
|
throw ( new CancellationError());
|
|
68
59
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DisposableStore, MutableDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import type { IMarker as IXtermMarker } from "@xterm/xterm";
|
|
3
|
+
/**
|
|
4
|
+
* Sets up a recreating start marker which is resilient to prompts that clear/re-render (eg. transient
|
|
5
|
+
* or powerlevel10k style prompts). The marker is recreated at the cursor position whenever the
|
|
6
|
+
* existing marker is disposed. The caller is responsible for adding the startMarker to the store.
|
|
7
|
+
*/
|
|
8
|
+
export declare function setupRecreatingStartMarker(xterm: {
|
|
9
|
+
raw: {
|
|
10
|
+
registerMarker(): IXtermMarker | undefined;
|
|
11
|
+
};
|
|
12
|
+
}, startMarker: MutableDisposable<IXtermMarker>, fire: (marker: IXtermMarker | undefined) => void, store: DisposableStore, log?: (message: string) => void): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
import { MutableDisposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
3
|
+
|
|
4
|
+
function setupRecreatingStartMarker(xterm, startMarker, fire, store, log) {
|
|
5
|
+
const markerListener = ( new MutableDisposable());
|
|
6
|
+
const recreateStartMarker = () => {
|
|
7
|
+
if (store.isDisposed) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const marker = xterm.raw.registerMarker();
|
|
11
|
+
startMarker.value = marker ?? undefined;
|
|
12
|
+
fire(marker);
|
|
13
|
+
if (!marker) {
|
|
14
|
+
markerListener.clear();
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
markerListener.value = marker.onDispose(() => {
|
|
18
|
+
log?.('Start marker was disposed, recreating');
|
|
19
|
+
recreateStartMarker();
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
recreateStartMarker();
|
|
23
|
+
store.add(toDisposable(() => {
|
|
24
|
+
markerListener.dispose();
|
|
25
|
+
startMarker.clear();
|
|
26
|
+
fire(undefined);
|
|
27
|
+
}));
|
|
28
|
+
store.add(startMarker);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { setupRecreatingStartMarker };
|
|
@@ -2,6 +2,9 @@ import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/com
|
|
|
2
2
|
import type { ToolConfirmationAction } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
|
|
3
3
|
import type { ICommandApprovalResultWithReason } from "./commandLineAutoApprover.js";
|
|
4
4
|
export declare function isPowerShell(envShell: string, os: OperatingSystem): boolean;
|
|
5
|
+
export declare function isWindowsPowerShell(envShell: string): boolean;
|
|
6
|
+
export declare function isZsh(envShell: string, os: OperatingSystem): boolean;
|
|
7
|
+
export declare function isFish(envShell: string, os: OperatingSystem): boolean;
|
|
5
8
|
export declare function sanitizeTerminalOutput(output: string): string;
|
|
6
9
|
export declare function generateAutoApproveActions(commandLine: string, subCommands: string[], autoApproveResult: {
|
|
7
10
|
subCommandResults: ICommandApprovalResultWithReason[];
|
|
@@ -3,7 +3,7 @@ import { Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/ac
|
|
|
3
3
|
import { coalesce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
|
|
4
4
|
import { win32, posix } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
5
5
|
import { OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
6
|
-
import '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
|
|
6
|
+
import { escapeRegExpCharacters } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
|
|
7
7
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
8
8
|
|
|
9
9
|
function isPowerShell(envShell, os) {
|
|
@@ -12,9 +12,25 @@ function isPowerShell(envShell, os) {
|
|
|
12
12
|
}
|
|
13
13
|
return /^(?:powershell|pwsh)(?:-preview)?$/.test(posix.basename(envShell));
|
|
14
14
|
}
|
|
15
|
+
function isWindowsPowerShell(envShell) {
|
|
16
|
+
return envShell.endsWith('System32\\WindowsPowerShell\\v1.0\\powershell.exe');
|
|
17
|
+
}
|
|
18
|
+
function isZsh(envShell, os) {
|
|
19
|
+
if (os === OperatingSystem.Windows) {
|
|
20
|
+
return /^zsh(?:\.exe)?$/i.test(win32.basename(envShell));
|
|
21
|
+
}
|
|
22
|
+
return /^zsh$/.test(posix.basename(envShell));
|
|
23
|
+
}
|
|
24
|
+
function isFish(envShell, os) {
|
|
25
|
+
if (os === OperatingSystem.Windows) {
|
|
26
|
+
return /^fish(?:\.exe)?$/i.test(win32.basename(envShell));
|
|
27
|
+
}
|
|
28
|
+
return /^fish$/.test(posix.basename(envShell));
|
|
29
|
+
}
|
|
15
30
|
function generateAutoApproveActions(commandLine, subCommands, autoApproveResult) {
|
|
16
31
|
const actions = [];
|
|
17
|
-
const canCreateAutoApproval = (
|
|
32
|
+
const canCreateAutoApproval = (autoApproveResult.subCommandResults.every(e => e.result !== 'denied') &&
|
|
33
|
+
autoApproveResult.commandLineResult.result !== 'denied');
|
|
18
34
|
if (canCreateAutoApproval) {
|
|
19
35
|
const unapprovedSubCommands = subCommands.filter((_, index) => {
|
|
20
36
|
return autoApproveResult.subCommandResults[index].result !== 'approved';
|
|
@@ -56,11 +72,11 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
56
72
|
if (subCommandsToSuggest.length > 0) {
|
|
57
73
|
let subCommandLabel;
|
|
58
74
|
if (subCommandsToSuggest.length === 1) {
|
|
59
|
-
subCommandLabel = ( localize(
|
|
75
|
+
subCommandLabel = ( localize(11827, 'Always Allow Command: {0}', subCommandsToSuggest[0]));
|
|
60
76
|
}
|
|
61
77
|
else {
|
|
62
78
|
const commandSeparated = subCommandsToSuggest.join(', ');
|
|
63
|
-
subCommandLabel = ( localize(
|
|
79
|
+
subCommandLabel = ( localize(11828, 'Always Allow Commands: {0}', commandSeparated));
|
|
64
80
|
}
|
|
65
81
|
actions.push({
|
|
66
82
|
label: subCommandLabel,
|
|
@@ -78,11 +94,11 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
78
94
|
!( commandsWithSubcommands.has(commandLine)) &&
|
|
79
95
|
!( commandsWithSubSubCommands.has(commandLine))) {
|
|
80
96
|
actions.push({
|
|
81
|
-
label: ( localize(
|
|
97
|
+
label: ( localize(11829, 'Always Allow Exact Command Line')),
|
|
82
98
|
data: {
|
|
83
99
|
type: 'newRule',
|
|
84
100
|
rule: {
|
|
85
|
-
key: commandLine
|
|
101
|
+
key: `/^${escapeRegExpCharacters(commandLine)}$/`,
|
|
86
102
|
value: {
|
|
87
103
|
approve: true,
|
|
88
104
|
matchCommandLine: true
|
|
@@ -96,7 +112,7 @@ function generateAutoApproveActions(commandLine, subCommands, autoApproveResult)
|
|
|
96
112
|
actions.push(( new Separator()));
|
|
97
113
|
}
|
|
98
114
|
actions.push({
|
|
99
|
-
label: ( localize(
|
|
115
|
+
label: ( localize(11830, 'Configure Auto Approve...')),
|
|
100
116
|
data: {
|
|
101
117
|
type: 'configure'
|
|
102
118
|
}
|
|
@@ -109,4 +125,4 @@ function dedupeRules(rules) {
|
|
|
109
125
|
});
|
|
110
126
|
}
|
|
111
127
|
|
|
112
|
-
export { dedupeRules, generateAutoApproveActions, isPowerShell };
|
|
128
|
+
export { dedupeRules, generateAutoApproveActions, isFish, isPowerShell, isWindowsPowerShell, isZsh };
|
package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export declare function resolveDependencyTasks(parentTask: Task, workspaceFolder
|
|
|
45
45
|
/**
|
|
46
46
|
* Collects output, polling duration, and idle status for all terminals.
|
|
47
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<{
|
|
48
|
+
export declare function collectTerminalResults(terminals: ITerminalInstance[], task: Task, instantiationService: IInstantiationService, invocationContext: IToolInvocationContext, progress: ToolProgress, token: CancellationToken, disposableStore: DisposableStore, isActive?: (task: Task) => Promise<boolean>, dependencyTasks?: Task[]): Promise<Array<{
|
|
49
49
|
name: string;
|
|
50
50
|
output: string;
|
|
51
51
|
resources?: ILinkLocation[];
|