@codingame/monaco-vscode-chat-service-override 23.2.2 → 24.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +13 -10
- package/package.json +5 -41
- package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +52 -0
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +61 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +152 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +21 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +27 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +6 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +44 -208
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +23 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +358 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +222 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +241 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +11 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +67 -230
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +65 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +186 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +2 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +115 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +389 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +22 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +63 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +173 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +66 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +32 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +8 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +15 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +13 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +66 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +30 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +13 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +20 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +270 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +310 -170
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +35 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +1 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +22 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +18 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +80 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +2 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +48 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +16 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +257 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatSetup.d.ts → chatSetup/chatSetupContributions.d.ts} +4 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +622 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +359 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +89 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +667 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +260 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/chatSetup.css +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.js → chatStatus/chatStatusDashboard.js} +193 -325
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.d.ts → chatStatus/chatStatusEntry.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +190 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.d.ts → chatStatus/chatStatusItemService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatStatus/media}/chatStatus.css +22 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.js +108 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +57 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +478 -146
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.js +204 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.js +187 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +108 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +37 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +37 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +232 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatusWidget.css +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +142 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +51 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +19 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.d.ts +49 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.js +100 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +41 -15
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +208 -162
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +15 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +61 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +60 -43
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +27 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +120 -87
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +49 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +293 -187
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +43 -9
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +48 -29
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -13
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +36 -41
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +18 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +142 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +3 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +19 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +78 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +26 -44
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +23 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +4 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +26 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +32 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +15 -29
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +10 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +38 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +32 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +5 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +128 -62
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +12 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +68 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +20 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +13 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +20 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +72 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +5 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +0 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +0 -154
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +0 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +0 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +0 -135
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +0 -216
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +0 -1617
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +0 -44
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +0 -313
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-dark.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-light.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/github.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/google.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.js → chatStatus/chatStatusItemService.js} +0 -0
|
@@ -8,18 +8,18 @@ import { isObject, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/
|
|
|
8
8
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
9
9
|
import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
|
|
10
10
|
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
11
|
-
import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-
|
|
12
|
-
import { ChatModel } from '@codingame/monaco-vscode-
|
|
11
|
+
import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatElicitationRequestPart';
|
|
12
|
+
import { ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModel';
|
|
13
|
+
import { ElicitationState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
|
|
13
14
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
14
15
|
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
15
16
|
import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
16
17
|
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
17
18
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
18
|
-
import { detectsInputRequiredPattern } from '../../executeStrategy/executeStrategy.js';
|
|
19
19
|
import { OutputMonitorState, PollingConsts } from './types.js';
|
|
20
20
|
import { getTextResponseFromStream } from './utils.js';
|
|
21
21
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
22
|
-
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-
|
|
22
|
+
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
|
|
23
23
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
24
24
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
25
25
|
import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatUri';
|
|
@@ -86,6 +86,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
86
86
|
case OutputMonitorState.Idle: {
|
|
87
87
|
const idleResult = await this._handleIdleState(token);
|
|
88
88
|
if (idleResult.shouldContinuePollling) {
|
|
89
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
89
90
|
continue;
|
|
90
91
|
}
|
|
91
92
|
else {
|
|
@@ -121,17 +122,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
121
122
|
const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
|
|
122
123
|
if (confirmationPrompt?.detectedRequestForFreeFormInput) {
|
|
123
124
|
this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
|
|
124
|
-
const
|
|
125
|
-
if (
|
|
126
|
-
await ( new Promise(resolve => {
|
|
127
|
-
const disposable = this._execution.instance.onData(data => {
|
|
128
|
-
if (data === '\r' || data === '\n' || data === '\r\n') {
|
|
129
|
-
this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
|
|
130
|
-
disposable.dispose();
|
|
131
|
-
resolve();
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}));
|
|
125
|
+
const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
|
|
126
|
+
if (receivedTerminalInput) {
|
|
135
127
|
await timeout(200);
|
|
136
128
|
return { shouldContinuePollling: true };
|
|
137
129
|
}
|
|
@@ -193,13 +185,15 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
193
185
|
}
|
|
194
186
|
else {
|
|
195
187
|
const r = race.r;
|
|
196
|
-
|
|
188
|
+
const state = (typeof r === 'object' && r !== null) ? r.state : r;
|
|
189
|
+
if (state === OutputMonitorState.Idle || state === OutputMonitorState.Cancelled || state === OutputMonitorState.Timeout) {
|
|
197
190
|
try {
|
|
198
191
|
continuePollingPart?.hide();
|
|
199
192
|
}
|
|
200
193
|
catch { }
|
|
201
194
|
continuePollingPart = undefined;
|
|
202
195
|
continuePollingDecisionP = undefined;
|
|
196
|
+
this._promptPart = undefined;
|
|
203
197
|
return false;
|
|
204
198
|
}
|
|
205
199
|
return true;
|
|
@@ -237,7 +231,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
237
231
|
const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
|
|
238
232
|
const isActive = execution.isActive ? await execution.isActive() : undefined;
|
|
239
233
|
this._logService.trace(`OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`);
|
|
240
|
-
if (recentlyIdle
|
|
234
|
+
if (recentlyIdle && isActive !== true) {
|
|
241
235
|
this._state = OutputMonitorState.Idle;
|
|
242
236
|
return this._state;
|
|
243
237
|
}
|
|
@@ -255,10 +249,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
255
249
|
if (token.isCancellationRequested || this._state === OutputMonitorState.Cancelled) {
|
|
256
250
|
return { promise: Promise.resolve(false) };
|
|
257
251
|
}
|
|
258
|
-
const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(
|
|
259
|
-
|
|
252
|
+
const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(12018, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
|
|
253
|
+
12019,
|
|
260
254
|
"This will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
|
|
261
|
-
)))), '', ( localize(
|
|
255
|
+
)))), '', ( localize(12020, 'Yes')), ( localize(12021, 'No')), async () => true, async () => { this._state = OutputMonitorState.Cancelled; return false; });
|
|
262
256
|
return { promise: result.promise.then(p => p ?? false), part: result.part };
|
|
263
257
|
}
|
|
264
258
|
async _assessOutputForErrors(buffer, token) {
|
|
@@ -284,8 +278,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
284
278
|
if (!model) {
|
|
285
279
|
return undefined;
|
|
286
280
|
}
|
|
287
|
-
const
|
|
288
|
-
const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question) and that prompt has NOT already been answered, extract the prompt text. The prompt may ask to choose from a set. If so, extract the possible options as a JSON object with keys 'prompt', 'options' (an array of strings or an object with option to description mappings), and 'freeFormInput': false. If no options are provided, and free form input is requested, for example: Password:, return the word freeFormInput. For example, if the options are "[Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel", the option to description mappings would be {"Y": "Yes", "A": "Yes to All", "N": "No", "L": "No to All", "C": "Cancel"}. If there is no such prompt, return null. If the option is ambiguous
|
|
281
|
+
const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split('\n').slice(-15).join('\n');
|
|
282
|
+
const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question) and that prompt has NOT already been answered, extract the prompt text. The prompt may ask to choose from a set. If so, extract the possible options as a JSON object with keys 'prompt', 'options' (an array of strings or an object with option to description mappings), and 'freeFormInput': false. If no options are provided, and free form input is requested, for example: Password:, return the word freeFormInput. For example, if the options are "[Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel", the option to description mappings would be {"Y": "Yes", "A": "Yes to All", "N": "No", "L": "No to All", "C": "Cancel"}. If there is no such prompt, return null. If the option is ambiguous, return null.
|
|
289
283
|
Examples:
|
|
290
284
|
1. Output: "Do you want to overwrite? (y/n)"
|
|
291
285
|
Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
|
|
@@ -306,9 +300,14 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
306
300
|
Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
|
|
307
301
|
|
|
308
302
|
7. Output: "Press any key to close the terminal."
|
|
309
|
-
Response:
|
|
303
|
+
Response: {"prompt": "Press any key to continue...", "options": ["a"], "freeFormInput": false}
|
|
310
304
|
|
|
311
305
|
8. Output: "Terminal will be reused by tasks, press any key to close it."
|
|
306
|
+
Response: {"prompt": "Terminal will be reused by tasks, press any key to close it.", "options": ["a"], "freeFormInput": false}
|
|
307
|
+
|
|
308
|
+
9. Output: "Password:"
|
|
309
|
+
Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
|
|
310
|
+
10. Output: "press ctrl-c to detach, ctrl-d to kill"
|
|
312
311
|
Response: null
|
|
313
312
|
|
|
314
313
|
Alternatively, the prompt may request free form input, for example:
|
|
@@ -317,7 +316,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
317
316
|
2. Output: "Password:"
|
|
318
317
|
Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
|
|
319
318
|
Now, analyze this output:
|
|
320
|
-
${
|
|
319
|
+
${lastLines}
|
|
321
320
|
`;
|
|
322
321
|
const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier('core')), [{ role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }], {}, token);
|
|
323
322
|
const responseText = await getTextResponseFromStream(response);
|
|
@@ -333,20 +332,14 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
333
332
|
if (this._lastPrompt === obj.prompt) {
|
|
334
333
|
return;
|
|
335
334
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
return ( NON_SPECIFIC_OPTIONS.has(lowerOption));
|
|
340
|
-
};
|
|
335
|
+
if (obj.freeFormInput === true) {
|
|
336
|
+
return { prompt: obj.prompt, options: [], detectedRequestForFreeFormInput: true };
|
|
337
|
+
}
|
|
341
338
|
if (Array.isArray(obj.options) && obj.options.every(isString)) {
|
|
342
|
-
|
|
343
|
-
if (filteredOptions.length === 0) {
|
|
344
|
-
return undefined;
|
|
345
|
-
}
|
|
346
|
-
return { prompt: obj.prompt, options: filteredOptions, detectedRequestForFreeFormInput: obj.freeFormInput };
|
|
339
|
+
return { prompt: obj.prompt, options: obj.options, detectedRequestForFreeFormInput: obj.freeFormInput };
|
|
347
340
|
}
|
|
348
341
|
else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
|
|
349
|
-
const keys = ( Object.keys(obj.options))
|
|
342
|
+
const keys = ( Object.keys(obj.options));
|
|
350
343
|
if (keys.length === 0) {
|
|
351
344
|
return undefined;
|
|
352
345
|
}
|
|
@@ -391,7 +384,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
391
384
|
}
|
|
392
385
|
const parsed = suggestedOption.replace(/['"`]/g, '').trim();
|
|
393
386
|
const index = confirmationPrompt.options.indexOf(parsed);
|
|
394
|
-
const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, '').trim());
|
|
387
|
+
const validOption = confirmationPrompt.options.find(opt => parsed === 'any key' || parsed === opt.replace(/['"`]/g, '').trim());
|
|
395
388
|
if (!validOption || index === -1) {
|
|
396
389
|
return;
|
|
397
390
|
}
|
|
@@ -406,37 +399,71 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
406
399
|
return description ? { suggestedOption: { description, option: validOption }, sentToTerminal } : { suggestedOption: validOption, sentToTerminal };
|
|
407
400
|
}
|
|
408
401
|
async _requestFreeFormTerminalInput(token, execution, confirmationPrompt) {
|
|
409
|
-
const
|
|
410
|
-
|
|
402
|
+
const focusTerminalSelection = Symbol('focusTerminalSelection');
|
|
403
|
+
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12022, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
404
|
+
12023,
|
|
411
405
|
"{0}\nPlease provide the required input to the terminal.\n\n",
|
|
412
406
|
confirmationPrompt.prompt
|
|
413
|
-
)))), '', ( localize(
|
|
407
|
+
)))), '', ( localize(12024, 'Focus terminal')), undefined, () => {
|
|
414
408
|
this._showInstance(execution.instance.instanceId);
|
|
415
|
-
return
|
|
409
|
+
return focusTerminalSelection;
|
|
416
410
|
});
|
|
411
|
+
let inputDataDisposable = Disposable.None;
|
|
412
|
+
let instanceDisposedDisposable = Disposable.None;
|
|
417
413
|
const inputPromise = ( new Promise(resolve => {
|
|
418
|
-
|
|
414
|
+
let settled = false;
|
|
415
|
+
const settle = (value, state) => {
|
|
416
|
+
if (settled) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
settled = true;
|
|
420
|
+
part.hide();
|
|
421
|
+
inputDataDisposable.dispose();
|
|
422
|
+
instanceDisposedDisposable.dispose();
|
|
423
|
+
this._state = state;
|
|
424
|
+
resolve(value);
|
|
425
|
+
};
|
|
426
|
+
inputDataDisposable = this._register(execution.instance.onDidInputData((data) => {
|
|
419
427
|
if (!data || data === '\r' || data === '\n' || data === '\r\n') {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
this._state = OutputMonitorState.PollingForIdle;
|
|
423
|
-
resolve(true);
|
|
428
|
+
this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
|
|
429
|
+
settle(true, OutputMonitorState.PollingForIdle);
|
|
424
430
|
}
|
|
425
431
|
}));
|
|
432
|
+
instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
|
|
433
|
+
settle(false, OutputMonitorState.Cancelled);
|
|
434
|
+
}));
|
|
426
435
|
}));
|
|
436
|
+
const disposeListeners = () => {
|
|
437
|
+
inputDataDisposable.dispose();
|
|
438
|
+
instanceDisposedDisposable.dispose();
|
|
439
|
+
};
|
|
427
440
|
const result = await Promise.race([userPrompt, inputPromise]);
|
|
441
|
+
if (result === focusTerminalSelection) {
|
|
442
|
+
execution.instance.focus(true);
|
|
443
|
+
return await inputPromise;
|
|
444
|
+
}
|
|
445
|
+
if (result === undefined) {
|
|
446
|
+
disposeListeners();
|
|
447
|
+
return false;
|
|
448
|
+
}
|
|
449
|
+
disposeListeners();
|
|
428
450
|
return !!result;
|
|
429
451
|
}
|
|
430
452
|
async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
|
|
431
|
-
|
|
453
|
+
let suggestedOptionValue = isString(suggestedOption) ? suggestedOption : suggestedOption.option;
|
|
454
|
+
if (suggestedOptionValue === 'any key') {
|
|
455
|
+
suggestedOptionValue = 'a';
|
|
456
|
+
}
|
|
457
|
+
const focusTerminalSelection = Symbol('focusTerminalSelection');
|
|
432
458
|
let inputDataDisposable = Disposable.None;
|
|
433
|
-
|
|
434
|
-
|
|
459
|
+
let instanceDisposedDisposable = Disposable.None;
|
|
460
|
+
const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12025, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
461
|
+
12026,
|
|
435
462
|
"{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
|
|
436
463
|
confirmationPrompt.prompt,
|
|
437
464
|
suggestedOptionValue,
|
|
438
|
-
|
|
439
|
-
)))), '', ( localize(
|
|
465
|
+
isString(suggestedOption) ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
|
|
466
|
+
)))), '', ( localize(12027, 'Allow')), ( localize(12028, 'Focus Terminal')), async (value) => {
|
|
440
467
|
let option = undefined;
|
|
441
468
|
if (value === true) {
|
|
442
469
|
option = suggestedOptionValue;
|
|
@@ -447,25 +474,51 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
447
474
|
this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
|
|
448
475
|
this._outputMonitorTelemetryCounters.inputToolManualChars += option?.length || 0;
|
|
449
476
|
return option;
|
|
450
|
-
},
|
|
477
|
+
}, () => {
|
|
451
478
|
this._showInstance(execution.instance.instanceId);
|
|
452
|
-
this._state = OutputMonitorState.Cancelled;
|
|
453
479
|
this._outputMonitorTelemetryCounters.inputToolManualRejectCount++;
|
|
454
|
-
|
|
455
|
-
return undefined;
|
|
480
|
+
return focusTerminalSelection;
|
|
456
481
|
}, getMoreActions(suggestedOption, confirmationPrompt));
|
|
457
482
|
const inputPromise = ( new Promise(resolve => {
|
|
458
|
-
|
|
483
|
+
let settled = false;
|
|
484
|
+
const settle = (value, state) => {
|
|
485
|
+
if (settled) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
settled = true;
|
|
459
489
|
part.hide();
|
|
460
490
|
inputDataDisposable.dispose();
|
|
461
|
-
|
|
462
|
-
|
|
491
|
+
instanceDisposedDisposable.dispose();
|
|
492
|
+
this._state = state;
|
|
493
|
+
resolve(value);
|
|
494
|
+
};
|
|
495
|
+
inputDataDisposable = this._register(execution.instance.onDidInputData(() => {
|
|
496
|
+
settle(true, OutputMonitorState.PollingForIdle);
|
|
497
|
+
}));
|
|
498
|
+
instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
|
|
499
|
+
settle(false, OutputMonitorState.Cancelled);
|
|
463
500
|
}));
|
|
464
501
|
}));
|
|
502
|
+
const disposeListeners = () => {
|
|
503
|
+
inputDataDisposable.dispose();
|
|
504
|
+
instanceDisposedDisposable.dispose();
|
|
505
|
+
};
|
|
465
506
|
const optionToRun = await Promise.race([userPrompt, inputPromise]);
|
|
466
|
-
if (optionToRun) {
|
|
507
|
+
if (optionToRun === focusTerminalSelection) {
|
|
508
|
+
execution.instance.focus(true);
|
|
509
|
+
return await inputPromise;
|
|
510
|
+
}
|
|
511
|
+
if (optionToRun === true) {
|
|
512
|
+
disposeListeners();
|
|
513
|
+
return true;
|
|
514
|
+
}
|
|
515
|
+
if (typeof optionToRun === 'string' && optionToRun.length) {
|
|
516
|
+
execution.instance.focus(true);
|
|
517
|
+
disposeListeners();
|
|
467
518
|
await execution.instance.sendText(optionToRun, true);
|
|
519
|
+
return optionToRun;
|
|
468
520
|
}
|
|
521
|
+
disposeListeners();
|
|
469
522
|
return optionToRun;
|
|
470
523
|
}
|
|
471
524
|
_showInstance(instanceId) {
|
|
@@ -491,7 +544,6 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
491
544
|
let part;
|
|
492
545
|
const promise = ( new Promise(resolve => {
|
|
493
546
|
const thePart = part = this._register(( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async (value) => {
|
|
494
|
-
thePart.state = 'accepted';
|
|
495
547
|
thePart.hide();
|
|
496
548
|
this._promptPart = undefined;
|
|
497
549
|
try {
|
|
@@ -501,8 +553,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
501
553
|
catch {
|
|
502
554
|
resolve(undefined);
|
|
503
555
|
}
|
|
556
|
+
return ElicitationState.Accepted;
|
|
504
557
|
}, async () => {
|
|
505
|
-
thePart.state = 'rejected';
|
|
506
558
|
thePart.hide();
|
|
507
559
|
this._promptPart = undefined;
|
|
508
560
|
try {
|
|
@@ -512,6 +564,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
512
564
|
catch {
|
|
513
565
|
resolve(undefined);
|
|
514
566
|
}
|
|
567
|
+
return ElicitationState.Rejected;
|
|
515
568
|
},
|
|
516
569
|
undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++)));
|
|
517
570
|
chatModel.acceptResponseProgress(request, thePart);
|
|
@@ -539,7 +592,7 @@ OutputMonitor = ( __decorate([
|
|
|
539
592
|
], OutputMonitor));
|
|
540
593
|
function getMoreActions(suggestedOption, confirmationPrompt) {
|
|
541
594
|
const moreActions = [];
|
|
542
|
-
const moreOptions = confirmationPrompt.options.filter(a => a !== (
|
|
595
|
+
const moreOptions = confirmationPrompt.options.filter(a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option));
|
|
543
596
|
let i = 0;
|
|
544
597
|
for (const option of moreOptions) {
|
|
545
598
|
const label = option + (confirmationPrompt.descriptions ? ' (' + confirmationPrompt.descriptions[i] + ')' : '');
|
|
@@ -556,5 +609,18 @@ function getMoreActions(suggestedOption, confirmationPrompt) {
|
|
|
556
609
|
}
|
|
557
610
|
return moreActions.length ? moreActions : undefined;
|
|
558
611
|
}
|
|
612
|
+
function detectsInputRequiredPattern(cursorLine) {
|
|
613
|
+
return ([
|
|
614
|
+
/\s*(?:\[[^\]]\]\s+[^\[]+\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/,
|
|
615
|
+
/(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i,
|
|
616
|
+
/[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i,
|
|
617
|
+
/\(y\)\s*$/i,
|
|
618
|
+
/:\s*$/,
|
|
619
|
+
/\(END\)$/,
|
|
620
|
+
/password[:]?$/i,
|
|
621
|
+
/\?\s*(?:\([a-z\s]+\))?$/i,
|
|
622
|
+
/press a(?:ny)? key/i,
|
|
623
|
+
].some(e => e.test(cursorLine)));
|
|
624
|
+
}
|
|
559
625
|
|
|
560
|
-
export { OutputMonitor };
|
|
626
|
+
export { OutputMonitor, detectsInputRequiredPattern };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Task } from "@codingame/monaco-vscode-
|
|
1
|
+
import type { Task } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService";
|
|
2
2
|
import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
3
3
|
import type { ILinkLocation } from "../../taskHelpers.js";
|
|
4
4
|
import type { IMarker as XtermMarker } from "@xterm/xterm";
|
|
@@ -13,7 +13,7 @@ export interface IExecution {
|
|
|
13
13
|
isActive?: () => Promise<boolean>;
|
|
14
14
|
task?: Task | Pick<Task, "configurationProperties">;
|
|
15
15
|
dependencyTasks?: Task[];
|
|
16
|
-
instance: Pick<ITerminalInstance, "sendText" | "instanceId" | "onDidInputData" | "onData" | "focus" | "registerMarker">;
|
|
16
|
+
instance: Pick<ITerminalInstance, "sendText" | "instanceId" | "onDidInputData" | "onDisposed" | "onData" | "focus" | "registerMarker">;
|
|
17
17
|
sessionId: string | undefined;
|
|
18
18
|
}
|
|
19
19
|
export interface IPollingResult {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
3
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
3
4
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
4
5
|
import { ToolDataSource, ToolInvocationPresentation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
|
|
5
6
|
import { RunInTerminalTool } from './runInTerminalTool.js';
|
|
6
7
|
|
|
7
8
|
const ConfirmTerminalCommandToolData = {
|
|
8
9
|
id: 'vscode_get_terminal_confirmation',
|
|
9
|
-
displayName: ( localize(
|
|
10
|
+
displayName: ( localize(12029, 'Confirm Terminal Command')),
|
|
10
11
|
modelDescription: [
|
|
11
12
|
'This tool allows you to get explicit user confirmation for a terminal command without executing it.',
|
|
12
13
|
'',
|
|
@@ -24,7 +25,7 @@ const ConfirmTerminalCommandToolData = {
|
|
|
24
25
|
'',
|
|
25
26
|
'After confirmation, use a tool to actually execute the command.'
|
|
26
27
|
].join('\n'),
|
|
27
|
-
userDescription: ( localize(
|
|
28
|
+
userDescription: ( localize(12030, 'Tool for confirming terminal commands')),
|
|
28
29
|
source: ToolDataSource.Internal,
|
|
29
30
|
icon: Codicon.shield,
|
|
30
31
|
inputSchema: {
|
|
@@ -52,6 +53,15 @@ const ConfirmTerminalCommandToolData = {
|
|
|
52
53
|
};
|
|
53
54
|
class ConfirmTerminalCommandTool extends RunInTerminalTool {
|
|
54
55
|
async prepareToolInvocation(context, token) {
|
|
56
|
+
try {
|
|
57
|
+
const sessionUri = context.chatSessionId ? ( URI.parse(context.chatSessionId)) : undefined;
|
|
58
|
+
const sessionId = sessionUri ? this._chatService.getSession(sessionUri)?.sessionId : undefined;
|
|
59
|
+
if (sessionId) {
|
|
60
|
+
context.chatSessionId = sessionId;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
}
|
|
55
65
|
const preparedInvocation = await super.prepareToolInvocation(context, token);
|
|
56
66
|
if (preparedInvocation) {
|
|
57
67
|
preparedInvocation.presentation = ToolInvocationPresentation.HiddenAfterComplete;
|
|
@@ -16,6 +16,7 @@ import { ITerminalProfileResolverService } from "@codingame/monaco-vscode-api/vs
|
|
|
16
16
|
import { type IToolTerminal } from "../toolTerminalCreator.js";
|
|
17
17
|
import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
|
|
18
18
|
import { IHistoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/history/common/history.service";
|
|
19
|
+
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
19
20
|
export declare function createRunInTerminalToolData(accessor: ServicesAccessor): Promise<IToolData>;
|
|
20
21
|
export interface IRunInTerminalInputParams {
|
|
21
22
|
command: string;
|
|
@@ -23,7 +24,7 @@ export interface IRunInTerminalInputParams {
|
|
|
23
24
|
isBackground: boolean;
|
|
24
25
|
}
|
|
25
26
|
export declare class RunInTerminalTool extends Disposable implements IToolImpl {
|
|
26
|
-
|
|
27
|
+
protected readonly _chatService: IChatService;
|
|
27
28
|
private readonly _configurationService;
|
|
28
29
|
private readonly _historyService;
|
|
29
30
|
private readonly _instantiationService;
|
|
@@ -34,9 +35,11 @@ export declare class RunInTerminalTool extends Disposable implements IToolImpl {
|
|
|
34
35
|
private readonly _logService;
|
|
35
36
|
private readonly _terminalService;
|
|
36
37
|
private readonly _workspaceContextService;
|
|
38
|
+
private readonly _chatWidgetService;
|
|
37
39
|
private readonly _terminalToolCreator;
|
|
38
40
|
private readonly _treeSitterCommandParser;
|
|
39
41
|
private readonly _telemetry;
|
|
42
|
+
private readonly _commandArtifactCollector;
|
|
40
43
|
protected readonly _profileFetcher: TerminalProfileFetcher;
|
|
41
44
|
private readonly _commandLineRewriters;
|
|
42
45
|
private readonly _commandLineAnalyzers;
|
|
@@ -44,7 +47,7 @@ export declare class RunInTerminalTool extends Disposable implements IToolImpl {
|
|
|
44
47
|
protected readonly _osBackend: Promise<OperatingSystem>;
|
|
45
48
|
private static readonly _backgroundExecutions;
|
|
46
49
|
static getBackgroundOutput(id: string): string;
|
|
47
|
-
constructor(_chatService: IChatService, _configurationService: IConfigurationService, _historyService: IHistoryService, _instantiationService: IInstantiationService, _languageModelToolsService: ILanguageModelToolsService, _remoteAgentService: IRemoteAgentService, _storageService: IStorageService, _terminalChatService: ITerminalChatService, _logService: ITerminalLogService, _terminalService: ITerminalService, _workspaceContextService: IWorkspaceContextService);
|
|
50
|
+
constructor(_chatService: IChatService, _configurationService: IConfigurationService, _historyService: IHistoryService, _instantiationService: IInstantiationService, _languageModelToolsService: ILanguageModelToolsService, _remoteAgentService: IRemoteAgentService, _storageService: IStorageService, _terminalChatService: ITerminalChatService, _logService: ITerminalLogService, _terminalService: ITerminalService, _workspaceContextService: IWorkspaceContextService, _chatWidgetService: IChatWidgetService);
|
|
48
51
|
prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
49
52
|
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
50
53
|
private _handleTerminalVisibility;
|