@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.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 +24 -3
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
- 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 +265 -203
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
- package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
|
@@ -3,7 +3,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
3
3
|
import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
4
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
5
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
6
|
-
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
|
+
import { Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
7
|
import { isObject, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
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';
|
|
@@ -20,15 +20,34 @@ 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
22
|
import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
|
|
23
|
-
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
24
23
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
25
24
|
import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
|
|
25
|
+
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
26
26
|
|
|
27
27
|
let OutputMonitor = class OutputMonitor extends Disposable {
|
|
28
|
-
get state() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
get state() {
|
|
29
|
+
return this._state;
|
|
30
|
+
}
|
|
31
|
+
get pollingResult() {
|
|
32
|
+
return this._pollingResult;
|
|
33
|
+
}
|
|
34
|
+
get outputMonitorTelemetryCounters() {
|
|
35
|
+
return this._outputMonitorTelemetryCounters;
|
|
36
|
+
}
|
|
37
|
+
constructor(
|
|
38
|
+
_execution,
|
|
39
|
+
_pollFn,
|
|
40
|
+
invocationContext,
|
|
41
|
+
token,
|
|
42
|
+
command,
|
|
43
|
+
_languageModelsService,
|
|
44
|
+
_taskService,
|
|
45
|
+
_chatService,
|
|
46
|
+
_chatWidgetService,
|
|
47
|
+
_configurationService,
|
|
48
|
+
_logService,
|
|
49
|
+
_terminalService
|
|
50
|
+
) {
|
|
32
51
|
super();
|
|
33
52
|
this._execution = _execution;
|
|
34
53
|
this._pollFn = _pollFn;
|
|
@@ -40,6 +59,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
40
59
|
this._logService = _logService;
|
|
41
60
|
this._terminalService = _terminalService;
|
|
42
61
|
this._state = OutputMonitorState.PollingForIdle;
|
|
62
|
+
this._userInputtedSinceIdleDetected = false;
|
|
63
|
+
this._userInputListener = this._register(( new MutableDisposable()));
|
|
43
64
|
this._outputMonitorTelemetryCounters = {
|
|
44
65
|
inputToolManualAcceptCount: 0,
|
|
45
66
|
inputToolManualRejectCount: 0,
|
|
@@ -48,7 +69,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
48
69
|
inputToolAutoChars: 0,
|
|
49
70
|
inputToolManualShownCount: 0,
|
|
50
71
|
inputToolFreeFormInputShownCount: 0,
|
|
51
|
-
inputToolFreeFormInputCount: 0
|
|
72
|
+
inputToolFreeFormInputCount: 0
|
|
52
73
|
};
|
|
53
74
|
this._onDidFinishCommand = this._register(( new Emitter()));
|
|
54
75
|
this.onDidFinishCommand = this._onDidFinishCommand.event;
|
|
@@ -65,31 +86,33 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
65
86
|
try {
|
|
66
87
|
while (!token.isCancellationRequested) {
|
|
67
88
|
switch (this._state) {
|
|
68
|
-
|
|
89
|
+
case OutputMonitorState.PollingForIdle:
|
|
90
|
+
{
|
|
69
91
|
this._state = await this._waitForIdle(this._execution, extended, token);
|
|
70
92
|
continue;
|
|
71
93
|
}
|
|
72
|
-
|
|
94
|
+
case OutputMonitorState.Timeout:
|
|
95
|
+
{
|
|
73
96
|
const shouldContinuePolling = await this._handleTimeoutState(command, invocationContext, extended, token);
|
|
74
97
|
if (shouldContinuePolling) {
|
|
75
98
|
extended = true;
|
|
99
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
76
100
|
continue;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
101
|
+
} else {
|
|
79
102
|
this._promptPart?.hide();
|
|
80
103
|
this._promptPart = undefined;
|
|
81
104
|
break;
|
|
82
105
|
}
|
|
83
106
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
107
|
+
case OutputMonitorState.Cancelled:
|
|
108
|
+
break;
|
|
109
|
+
case OutputMonitorState.Idle:
|
|
110
|
+
{
|
|
87
111
|
const idleResult = await this._handleIdleState(token);
|
|
88
112
|
if (idleResult.shouldContinuePollling) {
|
|
89
113
|
this._state = OutputMonitorState.PollingForIdle;
|
|
90
114
|
continue;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
115
|
+
} else {
|
|
93
116
|
resources = idleResult.resources;
|
|
94
117
|
modelOutputEvalResponse = idleResult.modelOutputEvalResponse;
|
|
95
118
|
output = idleResult.output;
|
|
@@ -104,23 +127,22 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
104
127
|
if (token.isCancellationRequested) {
|
|
105
128
|
this._state = OutputMonitorState.Cancelled;
|
|
106
129
|
}
|
|
107
|
-
}
|
|
108
|
-
finally {
|
|
130
|
+
} finally {
|
|
109
131
|
this._pollingResult = {
|
|
110
132
|
state: this._state,
|
|
111
133
|
output: output ?? this._execution.getOutput(),
|
|
112
|
-
modelOutputEvalResponse: token.isCancellationRequested ?
|
|
134
|
+
modelOutputEvalResponse: token.isCancellationRequested ? "Cancelled" : modelOutputEvalResponse,
|
|
113
135
|
pollDurationMs: Date.now() - pollStartTime,
|
|
114
136
|
resources
|
|
115
137
|
};
|
|
138
|
+
this._userInputListener.clear();
|
|
116
139
|
const promptPart = this._promptPart;
|
|
117
140
|
this._promptPart = undefined;
|
|
118
141
|
if (promptPart) {
|
|
119
142
|
try {
|
|
120
143
|
promptPart.hide();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
this._logService.error('OutputMonitor: Failed to hide prompt', err);
|
|
144
|
+
} catch (err) {
|
|
145
|
+
this._logService.error("OutputMonitor: Failed to hide prompt", err);
|
|
124
146
|
}
|
|
125
147
|
}
|
|
126
148
|
this._onDidFinishCommand.fire();
|
|
@@ -129,87 +151,127 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
129
151
|
async _handleIdleState(token) {
|
|
130
152
|
const output = this._execution.getOutput(this._lastPromptMarker);
|
|
131
153
|
if (detectsNonInteractiveHelpPattern(output)) {
|
|
132
|
-
return {
|
|
154
|
+
return {
|
|
155
|
+
shouldContinuePollling: false,
|
|
156
|
+
output
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const isTask = this._execution.task !== undefined;
|
|
160
|
+
const isTaskInactive = this._execution.isActive ? !(await this._execution.isActive()) : true;
|
|
161
|
+
if (isTask && isTaskInactive && detectsVSCodeTaskFinishMessage(output)) {
|
|
162
|
+
return {
|
|
163
|
+
shouldContinuePollling: false,
|
|
164
|
+
output
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if ((!isTask || !isTaskInactive) && detectsGenericPressAnyKeyPattern(output)) {
|
|
168
|
+
const currentMarker = this._execution.instance.registerMarker();
|
|
169
|
+
if (currentMarker) {
|
|
170
|
+
this._lastPromptMarker = currentMarker;
|
|
171
|
+
}
|
|
172
|
+
this._cleanupIdleInputListener();
|
|
173
|
+
this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
|
|
174
|
+
const lastLine = output.trimEnd().split(/\r?\n/).pop() || "";
|
|
175
|
+
const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, {
|
|
176
|
+
prompt: lastLine,
|
|
177
|
+
options: [],
|
|
178
|
+
detectedRequestForFreeFormInput: true
|
|
179
|
+
}, true );
|
|
180
|
+
if (receivedTerminalInput) {
|
|
181
|
+
await timeout(200);
|
|
182
|
+
return {
|
|
183
|
+
shouldContinuePollling: true
|
|
184
|
+
};
|
|
185
|
+
} else {
|
|
186
|
+
return {
|
|
187
|
+
shouldContinuePollling: false
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (this._userInputtedSinceIdleDetected) {
|
|
192
|
+
this._cleanupIdleInputListener();
|
|
193
|
+
return {
|
|
194
|
+
shouldContinuePollling: true
|
|
195
|
+
};
|
|
133
196
|
}
|
|
134
197
|
const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
|
|
198
|
+
if (this._userInputtedSinceIdleDetected) {
|
|
199
|
+
this._cleanupIdleInputListener();
|
|
200
|
+
return {
|
|
201
|
+
shouldContinuePollling: true
|
|
202
|
+
};
|
|
203
|
+
}
|
|
135
204
|
if (confirmationPrompt?.detectedRequestForFreeFormInput) {
|
|
205
|
+
if (this._userInputtedSinceIdleDetected) {
|
|
206
|
+
this._cleanupIdleInputListener();
|
|
207
|
+
return {
|
|
208
|
+
shouldContinuePollling: true
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
this._cleanupIdleInputListener();
|
|
136
212
|
this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
|
|
137
213
|
const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
|
|
138
214
|
if (receivedTerminalInput) {
|
|
139
215
|
await timeout(200);
|
|
140
|
-
return {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
216
|
+
return {
|
|
217
|
+
shouldContinuePollling: true
|
|
218
|
+
};
|
|
219
|
+
} else {
|
|
220
|
+
return {
|
|
221
|
+
shouldContinuePollling: false
|
|
222
|
+
};
|
|
144
223
|
}
|
|
145
224
|
}
|
|
146
225
|
if (confirmationPrompt?.options.length) {
|
|
147
226
|
const suggestedOptionResult = await this._selectAndHandleOption(confirmationPrompt, token);
|
|
148
227
|
if (suggestedOptionResult?.sentToTerminal) {
|
|
149
|
-
|
|
228
|
+
this._cleanupIdleInputListener();
|
|
229
|
+
return {
|
|
230
|
+
shouldContinuePollling: true
|
|
231
|
+
};
|
|
150
232
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
return {
|
|
233
|
+
if (this._userInputtedSinceIdleDetected) {
|
|
234
|
+
this._cleanupIdleInputListener();
|
|
235
|
+
return {
|
|
236
|
+
shouldContinuePollling: true
|
|
237
|
+
};
|
|
154
238
|
}
|
|
155
|
-
|
|
239
|
+
this._cleanupIdleInputListener();
|
|
240
|
+
const confirmed = await this._confirmRunInTerminal(
|
|
241
|
+
token,
|
|
242
|
+
suggestedOptionResult?.suggestedOption ?? confirmationPrompt.options[0],
|
|
243
|
+
this._execution,
|
|
244
|
+
confirmationPrompt
|
|
245
|
+
);
|
|
246
|
+
if (confirmed) {
|
|
247
|
+
return {
|
|
248
|
+
shouldContinuePollling: true
|
|
249
|
+
};
|
|
250
|
+
} else {
|
|
156
251
|
this._execution.instance.focus(true);
|
|
157
|
-
return {
|
|
252
|
+
return {
|
|
253
|
+
shouldContinuePollling: false
|
|
254
|
+
};
|
|
158
255
|
}
|
|
159
256
|
}
|
|
257
|
+
this._cleanupIdleInputListener();
|
|
160
258
|
const custom = await this._pollFn?.(this._execution, token, this._taskService);
|
|
161
259
|
const resources = custom?.resources;
|
|
162
260
|
const modelOutputEvalResponse = await this._assessOutputForErrors(this._execution.getOutput(), token);
|
|
163
|
-
return {
|
|
261
|
+
return {
|
|
262
|
+
resources,
|
|
263
|
+
modelOutputEvalResponse,
|
|
264
|
+
shouldContinuePollling: false,
|
|
265
|
+
output: custom?.output ?? output
|
|
266
|
+
};
|
|
164
267
|
}
|
|
165
|
-
async _handleTimeoutState(
|
|
166
|
-
|
|
167
|
-
|
|
268
|
+
async _handleTimeoutState(_command, _invocationContext, _extended, _token) {
|
|
269
|
+
if (_extended) {
|
|
270
|
+
this._logService.info("OutputMonitor: Extended polling timeout reached after 2 minutes");
|
|
168
271
|
this._state = OutputMonitorState.Cancelled;
|
|
169
272
|
return false;
|
|
170
273
|
}
|
|
171
|
-
|
|
172
|
-
const { promise: p, part } = await this._promptForMorePolling(command, token, invocationContext);
|
|
173
|
-
let continuePollingDecisionP = p;
|
|
174
|
-
continuePollingPart = part;
|
|
175
|
-
const nextPollP = this._waitForIdle(this._execution, extended, token)
|
|
176
|
-
.catch(() => ({
|
|
177
|
-
state: OutputMonitorState.Cancelled,
|
|
178
|
-
output: this._execution.getOutput(),
|
|
179
|
-
modelOutputEvalResponse: 'Cancelled'
|
|
180
|
-
}));
|
|
181
|
-
const race = await Promise.race([
|
|
182
|
-
continuePollingDecisionP.then(v => ({ kind: 'decision', v })),
|
|
183
|
-
nextPollP.then(r => ({ kind: 'poll', r }))
|
|
184
|
-
]);
|
|
185
|
-
if (race.kind === 'decision') {
|
|
186
|
-
try {
|
|
187
|
-
continuePollingPart?.hide();
|
|
188
|
-
}
|
|
189
|
-
catch { }
|
|
190
|
-
continuePollingPart = undefined;
|
|
191
|
-
if (race.v === false) {
|
|
192
|
-
this._state = OutputMonitorState.Cancelled;
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
continuePollingDecisionP = undefined;
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
const r = race.r;
|
|
200
|
-
const state = (typeof r === 'object' && r !== null) ? r.state : r;
|
|
201
|
-
if (state === OutputMonitorState.Idle || state === OutputMonitorState.Cancelled || state === OutputMonitorState.Timeout) {
|
|
202
|
-
try {
|
|
203
|
-
continuePollingPart?.hide();
|
|
204
|
-
}
|
|
205
|
-
catch { }
|
|
206
|
-
continuePollingPart = undefined;
|
|
207
|
-
continuePollingDecisionP = undefined;
|
|
208
|
-
this._promptPart = undefined;
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
return true;
|
|
212
|
-
}
|
|
274
|
+
return true;
|
|
213
275
|
}
|
|
214
276
|
async _waitForIdle(execution, extendedPolling, token) {
|
|
215
277
|
const maxWaitMs = extendedPolling ? PollingConsts.ExtendedPollingMaxDuration : PollingConsts.FirstPollingMaxDuration;
|
|
@@ -218,7 +280,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
218
280
|
let waited = 0;
|
|
219
281
|
let consecutiveIdleEvents = 0;
|
|
220
282
|
let hasReceivedData = false;
|
|
221
|
-
const onDataDisposable = execution.instance.onData(
|
|
283
|
+
const onDataDisposable = execution.instance.onData(_data => {
|
|
222
284
|
hasReceivedData = true;
|
|
223
285
|
});
|
|
224
286
|
try {
|
|
@@ -230,30 +292,33 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
230
292
|
const currentOutput = execution.getOutput();
|
|
231
293
|
if (detectsNonInteractiveHelpPattern(currentOutput)) {
|
|
232
294
|
this._state = OutputMonitorState.Idle;
|
|
295
|
+
this._setupIdleInputListener();
|
|
233
296
|
return this._state;
|
|
234
297
|
}
|
|
235
298
|
const promptResult = detectsInputRequiredPattern(currentOutput);
|
|
236
299
|
if (promptResult) {
|
|
237
300
|
this._state = OutputMonitorState.Idle;
|
|
301
|
+
this._setupIdleInputListener();
|
|
238
302
|
return this._state;
|
|
239
303
|
}
|
|
240
304
|
if (hasReceivedData) {
|
|
241
305
|
consecutiveIdleEvents = 0;
|
|
242
306
|
hasReceivedData = false;
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
307
|
+
} else {
|
|
245
308
|
consecutiveIdleEvents++;
|
|
246
309
|
}
|
|
247
310
|
const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
|
|
248
311
|
const isActive = execution.isActive ? await execution.isActive() : undefined;
|
|
249
|
-
this._logService.trace(
|
|
312
|
+
this._logService.trace(
|
|
313
|
+
`OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`
|
|
314
|
+
);
|
|
250
315
|
if (recentlyIdle && isActive !== true) {
|
|
251
316
|
this._state = OutputMonitorState.Idle;
|
|
317
|
+
this._setupIdleInputListener();
|
|
252
318
|
return this._state;
|
|
253
319
|
}
|
|
254
320
|
}
|
|
255
|
-
}
|
|
256
|
-
finally {
|
|
321
|
+
} finally {
|
|
257
322
|
onDataDisposable.dispose();
|
|
258
323
|
}
|
|
259
324
|
if (token.isCancellationRequested) {
|
|
@@ -261,29 +326,34 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
261
326
|
}
|
|
262
327
|
return OutputMonitorState.Timeout;
|
|
263
328
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
329
|
+
_setupIdleInputListener() {
|
|
330
|
+
this._userInputtedSinceIdleDetected = false;
|
|
331
|
+
this._userInputListener.value = this._execution.instance.onDidInputData(() => {
|
|
332
|
+
this._userInputtedSinceIdleDetected = true;
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
_cleanupIdleInputListener() {
|
|
336
|
+
this._userInputtedSinceIdleDetected = false;
|
|
337
|
+
this._userInputListener.clear();
|
|
273
338
|
}
|
|
274
339
|
async _assessOutputForErrors(buffer, token) {
|
|
275
340
|
const model = await this._getLanguageModel();
|
|
276
341
|
if (!model) {
|
|
277
|
-
return
|
|
278
|
-
}
|
|
279
|
-
const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier(
|
|
342
|
+
return "No models available";
|
|
343
|
+
}
|
|
344
|
+
const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
|
|
345
|
+
role: ChatMessageRole.User,
|
|
346
|
+
content: [{
|
|
347
|
+
type: "text",
|
|
348
|
+
value: `Evaluate this terminal output to determine if there were errors. If there are errors, return them. Otherwise, return undefined: ${buffer}.`
|
|
349
|
+
}]
|
|
350
|
+
}], {}, token);
|
|
280
351
|
try {
|
|
281
352
|
const responseFromStream = getTextResponseFromStream(response);
|
|
282
353
|
await Promise.all([response.result, responseFromStream]);
|
|
283
354
|
return await responseFromStream;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
return 'Error occurred ' + err;
|
|
355
|
+
} catch (err) {
|
|
356
|
+
return "Error occurred " + err;
|
|
287
357
|
}
|
|
288
358
|
}
|
|
289
359
|
async _determineUserInputOptions(execution, token) {
|
|
@@ -294,82 +364,95 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
294
364
|
if (!model) {
|
|
295
365
|
return undefined;
|
|
296
366
|
}
|
|
297
|
-
const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split(
|
|
367
|
+
const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split("\n").slice(-15).join("\n");
|
|
298
368
|
if (detectsNonInteractiveHelpPattern(lastLines)) {
|
|
299
369
|
return undefined;
|
|
300
370
|
}
|
|
301
|
-
const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question)
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
2. Output: "Confirm: [Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel"
|
|
307
|
-
Response: {"prompt": "Confirm", "options": ["Y", "A", "N", "L", "C"], "freeFormInput": false}
|
|
308
|
-
|
|
309
|
-
3. Output: "Accept license terms? (yes/no)"
|
|
310
|
-
Response: {"prompt": "Accept license terms?", "options": ["yes", "no"], "freeFormInput": false}
|
|
371
|
+
const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question) that appears at the VERY END of the output and has NOT already been answered (i.e., there is no user response or subsequent output after the prompt), extract the prompt text. IMPORTANT: Only detect prompts that are at the end of the output with no content following them - if there is any output after the prompt, the prompt has already been answered and you should return null. 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.
|
|
372
|
+
Examples:
|
|
373
|
+
1. Output: "Do you want to overwrite? (y/n)"
|
|
374
|
+
Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
|
|
311
375
|
|
|
312
|
-
|
|
313
|
-
|
|
376
|
+
2. Output: "Confirm: [Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel"
|
|
377
|
+
Response: {"prompt": "Confirm", "options": ["Y", "A", "N", "L", "C"], "freeFormInput": false}
|
|
314
378
|
|
|
315
|
-
|
|
316
|
-
|
|
379
|
+
3. Output: "Accept license terms? (yes/no)"
|
|
380
|
+
Response: {"prompt": "Accept license terms?", "options": ["yes", "no"], "freeFormInput": false}
|
|
317
381
|
|
|
318
|
-
|
|
319
|
-
|
|
382
|
+
4. Output: "Press Enter to continue"
|
|
383
|
+
Response: {"prompt": "Press Enter to continue", "options": ["Enter"], "freeFormInput": false}
|
|
320
384
|
|
|
321
|
-
|
|
322
|
-
|
|
385
|
+
5. Output: "Type Yes to proceed"
|
|
386
|
+
Response: {"prompt": "Type Yes to proceed", "options": ["Yes"], "freeFormInput": false}
|
|
323
387
|
|
|
324
|
-
|
|
325
|
-
|
|
388
|
+
6. Output: "Continue [y/N]"
|
|
389
|
+
Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
|
|
326
390
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
391
|
+
7. Output: "Password:"
|
|
392
|
+
Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
|
|
393
|
+
8. Output: "press ctrl-c to detach, ctrl-d to kill"
|
|
394
|
+
Response: null
|
|
395
|
+
9. Output: "Continue (y/n)? y"
|
|
396
|
+
Response: null (the prompt was already answered with 'y')
|
|
397
|
+
10. Output: "Do you want to proceed? (yes/no)\nyes\nProceeding with operation..."
|
|
398
|
+
Response: null (the prompt was already answered and there is subsequent output)
|
|
331
399
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
400
|
+
Alternatively, the prompt may request free form input, for example:
|
|
401
|
+
1. Output: "Enter your username:"
|
|
402
|
+
Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": []}
|
|
403
|
+
2. Output: "Password:"
|
|
404
|
+
Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
|
|
405
|
+
3. Output: "Press any key to continue..."
|
|
406
|
+
Response: {"prompt": "Press any key to continue...", "freeFormInput": true, "options": []}
|
|
407
|
+
Now, analyze this output:
|
|
408
|
+
${lastLines}
|
|
409
|
+
`;
|
|
410
|
+
const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
|
|
411
|
+
role: ChatMessageRole.User,
|
|
412
|
+
content: [{
|
|
413
|
+
type: "text",
|
|
414
|
+
value: promptText
|
|
415
|
+
}]
|
|
416
|
+
}], {}, token);
|
|
341
417
|
const responseText = await getTextResponseFromStream(response);
|
|
342
418
|
try {
|
|
343
419
|
const match = responseText.match(/\{[\s\S]*\}/);
|
|
344
420
|
if (match) {
|
|
345
421
|
const obj = JSON.parse(match[0]);
|
|
346
|
-
if (isObject(obj) &&
|
|
347
|
-
'prompt' in obj && isString(obj.prompt) &&
|
|
348
|
-
'options' in obj &&
|
|
349
|
-
'options' in obj &&
|
|
350
|
-
'freeFormInput' in obj && typeof obj.freeFormInput === 'boolean') {
|
|
422
|
+
if (isObject(obj) && "prompt" in obj && isString(obj.prompt) && "options" in obj && "options" in obj && "freeFormInput" in obj && typeof obj.freeFormInput === "boolean") {
|
|
351
423
|
if (this._lastPrompt === obj.prompt) {
|
|
352
424
|
return;
|
|
353
425
|
}
|
|
354
426
|
if (obj.freeFormInput === true) {
|
|
355
|
-
return {
|
|
427
|
+
return {
|
|
428
|
+
prompt: obj.prompt,
|
|
429
|
+
options: [],
|
|
430
|
+
detectedRequestForFreeFormInput: true
|
|
431
|
+
};
|
|
356
432
|
}
|
|
357
433
|
if (Array.isArray(obj.options) && obj.options.every(isString)) {
|
|
358
|
-
return {
|
|
359
|
-
|
|
360
|
-
|
|
434
|
+
return {
|
|
435
|
+
prompt: obj.prompt,
|
|
436
|
+
options: obj.options,
|
|
437
|
+
detectedRequestForFreeFormInput: obj.freeFormInput
|
|
438
|
+
};
|
|
439
|
+
} else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
|
|
361
440
|
const keys = ( Object.keys(obj.options));
|
|
362
441
|
if (keys.length === 0) {
|
|
363
442
|
return undefined;
|
|
364
443
|
}
|
|
365
444
|
const descriptions = ( keys.map(key => obj.options[key]));
|
|
366
|
-
return {
|
|
445
|
+
return {
|
|
446
|
+
prompt: obj.prompt,
|
|
447
|
+
options: keys,
|
|
448
|
+
descriptions,
|
|
449
|
+
detectedRequestForFreeFormInput: obj.freeFormInput
|
|
450
|
+
};
|
|
367
451
|
}
|
|
368
452
|
}
|
|
369
453
|
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
console.error('Failed to parse confirmation prompt from language model response:', err);
|
|
454
|
+
} catch (err) {
|
|
455
|
+
console.error("Failed to parse confirmation prompt from language model response:", err);
|
|
373
456
|
}
|
|
374
457
|
return undefined;
|
|
375
458
|
}
|
|
@@ -381,7 +464,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
381
464
|
if (!model) {
|
|
382
465
|
return undefined;
|
|
383
466
|
}
|
|
384
|
-
const models = await this._languageModelsService.selectLanguageModels({
|
|
467
|
+
const models = await this._languageModelsService.selectLanguageModels({
|
|
468
|
+
vendor: "copilot",
|
|
469
|
+
family: model.replaceAll("copilot/", "")
|
|
470
|
+
});
|
|
385
471
|
if (!models.length) {
|
|
386
472
|
return undefined;
|
|
387
473
|
}
|
|
@@ -394,16 +480,20 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
394
480
|
this._lastPromptMarker = currentMarker;
|
|
395
481
|
this._lastPrompt = prompt;
|
|
396
482
|
const promptText = `Given the following confirmation prompt and options from a terminal output, which option is the default?\nPrompt: "${prompt}"\nOptions: ${JSON.stringify(options)}\nRespond with only the option string.`;
|
|
397
|
-
const response = await this._languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier(
|
|
398
|
-
|
|
399
|
-
|
|
483
|
+
const response = await this._languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier("core")), [{
|
|
484
|
+
role: ChatMessageRole.User,
|
|
485
|
+
content: [{
|
|
486
|
+
type: "text",
|
|
487
|
+
value: promptText
|
|
488
|
+
}]
|
|
489
|
+
}], {}, token);
|
|
400
490
|
const suggestedOption = (await getTextResponseFromStream(response)).trim();
|
|
401
491
|
if (!suggestedOption) {
|
|
402
492
|
return;
|
|
403
493
|
}
|
|
404
|
-
const parsed = suggestedOption.replace(/['"`]/g,
|
|
494
|
+
const parsed = suggestedOption.replace(/['"`]/g, "").trim();
|
|
405
495
|
const index = confirmationPrompt.options.indexOf(parsed);
|
|
406
|
-
const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g,
|
|
496
|
+
const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, "").trim());
|
|
407
497
|
if (!validOption || index === -1) {
|
|
408
498
|
return;
|
|
409
499
|
}
|
|
@@ -415,15 +505,27 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
415
505
|
sentToTerminal = true;
|
|
416
506
|
}
|
|
417
507
|
const description = confirmationPrompt.descriptions?.[index];
|
|
418
|
-
return description ? {
|
|
508
|
+
return description ? {
|
|
509
|
+
suggestedOption: {
|
|
510
|
+
description,
|
|
511
|
+
option: validOption
|
|
512
|
+
},
|
|
513
|
+
sentToTerminal
|
|
514
|
+
} : {
|
|
515
|
+
suggestedOption: validOption,
|
|
516
|
+
sentToTerminal
|
|
517
|
+
};
|
|
419
518
|
}
|
|
420
|
-
async _requestFreeFormTerminalInput(token, execution, confirmationPrompt) {
|
|
421
|
-
const focusTerminalSelection = Symbol(
|
|
422
|
-
const {
|
|
423
|
-
|
|
519
|
+
async _requestFreeFormTerminalInput(token, execution, confirmationPrompt, acceptAnyKey = false) {
|
|
520
|
+
const focusTerminalSelection = Symbol("focusTerminalSelection");
|
|
521
|
+
const {
|
|
522
|
+
promise: userPrompt,
|
|
523
|
+
part
|
|
524
|
+
} = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12379, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
525
|
+
12380,
|
|
424
526
|
"{0}\nPlease provide the required input to the terminal.\n\n",
|
|
425
527
|
confirmationPrompt.prompt
|
|
426
|
-
)))),
|
|
528
|
+
)))), "", ( localize(12381, "Focus terminal")), undefined, () => {
|
|
427
529
|
this._showInstance(execution.instance.instanceId);
|
|
428
530
|
return focusTerminalSelection;
|
|
429
531
|
});
|
|
@@ -442,8 +544,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
442
544
|
this._state = state;
|
|
443
545
|
resolve(value);
|
|
444
546
|
};
|
|
445
|
-
inputDataDisposable = this._register(execution.instance.onDidInputData(
|
|
446
|
-
if (
|
|
547
|
+
inputDataDisposable = this._register(execution.instance.onDidInputData(data => {
|
|
548
|
+
if ((acceptAnyKey && data.length > 0) || (!acceptAnyKey && (data === "\r" || data === "\n" || data === "\r\n"))) {
|
|
447
549
|
this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
|
|
448
550
|
settle(true, OutputMonitorState.PollingForIdle);
|
|
449
551
|
}
|
|
@@ -470,25 +572,24 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
470
572
|
}
|
|
471
573
|
async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
|
|
472
574
|
const suggestedOptionValue = isString(suggestedOption) ? suggestedOption : suggestedOption.option;
|
|
473
|
-
|
|
474
|
-
return;
|
|
475
|
-
}
|
|
476
|
-
const focusTerminalSelection = Symbol('focusTerminalSelection');
|
|
575
|
+
const focusTerminalSelection = Symbol("focusTerminalSelection");
|
|
477
576
|
let inputDataDisposable = Disposable.None;
|
|
478
577
|
let instanceDisposedDisposable = Disposable.None;
|
|
479
|
-
const {
|
|
480
|
-
|
|
578
|
+
const {
|
|
579
|
+
promise: userPrompt,
|
|
580
|
+
part
|
|
581
|
+
} = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12382, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
|
|
582
|
+
12383,
|
|
481
583
|
"{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
|
|
482
584
|
confirmationPrompt.prompt,
|
|
483
585
|
suggestedOptionValue,
|
|
484
|
-
isString(suggestedOption) ?
|
|
485
|
-
)))),
|
|
586
|
+
isString(suggestedOption) ? "" : suggestedOption.description ? " (" + suggestedOption.description + ")" : ""
|
|
587
|
+
)))), "", ( localize(12384, "Allow")), ( localize(12385, "Focus Terminal")), async value => {
|
|
486
588
|
let option = undefined;
|
|
487
589
|
if (value === true) {
|
|
488
590
|
option = suggestedOptionValue;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
option = value.label.split(' (')[0];
|
|
591
|
+
} else if (typeof value === "object" && "label" in value) {
|
|
592
|
+
option = value.label.split(" (")[0];
|
|
492
593
|
}
|
|
493
594
|
this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
|
|
494
595
|
this._outputMonitorTelemetryCounters.inputToolManualChars += option?.length || 0;
|
|
@@ -531,7 +632,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
531
632
|
disposeListeners();
|
|
532
633
|
return true;
|
|
533
634
|
}
|
|
534
|
-
if (typeof optionToRun ===
|
|
635
|
+
if (typeof optionToRun === "string" && optionToRun.length) {
|
|
535
636
|
execution.instance.focus(true);
|
|
536
637
|
disposeListeners();
|
|
537
638
|
await execution.instance.sendText(optionToRun, true);
|
|
@@ -551,25 +652,35 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
551
652
|
this._terminalService.setActiveInstance(instance);
|
|
552
653
|
this._terminalService.revealActiveTerminal(true);
|
|
553
654
|
}
|
|
554
|
-
_createElicitationPart(
|
|
655
|
+
_createElicitationPart(
|
|
656
|
+
token,
|
|
657
|
+
sessionId,
|
|
658
|
+
title,
|
|
659
|
+
detail,
|
|
660
|
+
subtitle,
|
|
661
|
+
acceptLabel,
|
|
662
|
+
rejectLabel,
|
|
663
|
+
onAccept,
|
|
664
|
+
onReject,
|
|
665
|
+
moreActions
|
|
666
|
+
) {
|
|
555
667
|
const chatModel = sessionId && this._chatService.getSession(LocalChatSessionUri.forSession(sessionId));
|
|
556
668
|
if (!(chatModel instanceof ChatModel)) {
|
|
557
|
-
throw ( new Error(
|
|
669
|
+
throw ( new Error("No model"));
|
|
558
670
|
}
|
|
559
671
|
const request = chatModel.getRequests().at(-1);
|
|
560
672
|
if (!request) {
|
|
561
|
-
throw ( new Error(
|
|
673
|
+
throw ( new Error("No request"));
|
|
562
674
|
}
|
|
563
675
|
let part;
|
|
564
676
|
const promise = ( new Promise(resolve => {
|
|
565
|
-
const thePart = part =
|
|
677
|
+
const thePart = part = ( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async value => {
|
|
566
678
|
thePart.hide();
|
|
567
679
|
this._promptPart = undefined;
|
|
568
680
|
try {
|
|
569
681
|
const r = await (onAccept ? onAccept(value) : undefined);
|
|
570
682
|
resolve(r);
|
|
571
|
-
}
|
|
572
|
-
catch {
|
|
683
|
+
} catch {
|
|
573
684
|
resolve(undefined);
|
|
574
685
|
}
|
|
575
686
|
return ElicitationState.Accepted;
|
|
@@ -579,49 +690,51 @@ let OutputMonitor = class OutputMonitor extends Disposable {
|
|
|
579
690
|
try {
|
|
580
691
|
const r = await (onReject ? onReject() : undefined);
|
|
581
692
|
resolve(r);
|
|
582
|
-
}
|
|
583
|
-
catch {
|
|
693
|
+
} catch {
|
|
584
694
|
resolve(undefined);
|
|
585
695
|
}
|
|
586
696
|
return ElicitationState.Rejected;
|
|
587
697
|
},
|
|
588
|
-
undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++))
|
|
698
|
+
undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++));
|
|
589
699
|
chatModel.acceptResponseProgress(request, thePart);
|
|
590
700
|
this._promptPart = thePart;
|
|
591
701
|
}));
|
|
592
702
|
this._register(token.onCancellationRequested(() => part.hide()));
|
|
593
|
-
return {
|
|
703
|
+
return {
|
|
704
|
+
promise,
|
|
705
|
+
part
|
|
706
|
+
};
|
|
594
707
|
}
|
|
595
708
|
async _getLanguageModel() {
|
|
596
|
-
let models = await this._languageModelsService.selectLanguageModels({
|
|
709
|
+
let models = await this._languageModelsService.selectLanguageModels({
|
|
710
|
+
vendor: "copilot",
|
|
711
|
+
id: "copilot-fast"
|
|
712
|
+
});
|
|
597
713
|
if (!models.length) {
|
|
598
|
-
models = await this._languageModelsService.selectLanguageModels({
|
|
714
|
+
models = await this._languageModelsService.selectLanguageModels({
|
|
715
|
+
vendor: "copilot",
|
|
716
|
+
family: "gpt-4o-mini"
|
|
717
|
+
});
|
|
599
718
|
}
|
|
600
719
|
return models.length ? models[0] : undefined;
|
|
601
720
|
}
|
|
602
721
|
};
|
|
603
|
-
OutputMonitor = ( __decorate([
|
|
604
|
-
( __param(5, ILanguageModelsService)),
|
|
605
|
-
( __param(6, ITaskService)),
|
|
606
|
-
( __param(7, IChatService)),
|
|
607
|
-
( __param(8, IChatWidgetService)),
|
|
608
|
-
( __param(9, IConfigurationService)),
|
|
609
|
-
( __param(10, ILogService)),
|
|
610
|
-
( __param(11, ITerminalService))
|
|
611
|
-
], OutputMonitor));
|
|
722
|
+
OutputMonitor = ( __decorate([( __param(5, ILanguageModelsService)), ( __param(6, ITaskService)), ( __param(7, IChatService)), ( __param(8, IChatWidgetService)), ( __param(9, IConfigurationService)), ( __param(10, ITerminalLogService)), ( __param(11, ITerminalService))], OutputMonitor));
|
|
612
723
|
function getMoreActions(suggestedOption, confirmationPrompt) {
|
|
613
724
|
const moreActions = [];
|
|
614
|
-
const moreOptions = confirmationPrompt.options.filter(
|
|
725
|
+
const moreOptions = confirmationPrompt.options.filter(
|
|
726
|
+
a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option)
|
|
727
|
+
);
|
|
615
728
|
let i = 0;
|
|
616
729
|
for (const option of moreOptions) {
|
|
617
|
-
const label = option + (confirmationPrompt.descriptions ?
|
|
730
|
+
const label = option + (confirmationPrompt.descriptions ? " (" + confirmationPrompt.descriptions[i] + ")" : "");
|
|
618
731
|
const action = {
|
|
619
732
|
label,
|
|
620
733
|
tooltip: label,
|
|
621
734
|
id: `terminal.poll.send.${option}`,
|
|
622
735
|
class: undefined,
|
|
623
736
|
enabled: true,
|
|
624
|
-
run: async () => {
|
|
737
|
+
run: async () => {}
|
|
625
738
|
};
|
|
626
739
|
i++;
|
|
627
740
|
moreActions.push(action);
|
|
@@ -638,7 +751,7 @@ function detectsInputRequiredPattern(cursorLine) {
|
|
|
638
751
|
/\(END\)$/,
|
|
639
752
|
/password[:]?$/i,
|
|
640
753
|
/\?\s*(?:\([a-z\s]+\))?$/i,
|
|
641
|
-
/press a(?:ny)? key/i
|
|
754
|
+
/press a(?:ny)? key/i
|
|
642
755
|
].some(e => e.test(cursorLine)));
|
|
643
756
|
}
|
|
644
757
|
function detectsNonInteractiveHelpPattern(cursorLine) {
|
|
@@ -654,5 +767,18 @@ function detectsNonInteractiveHelpPattern(cursorLine) {
|
|
|
654
767
|
/press u\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:show|print|display)\s*(?:the )?(?:server )?urls?/i
|
|
655
768
|
].some(e => e.test(cursorLine)));
|
|
656
769
|
}
|
|
770
|
+
const taskFinishMessages = [(
|
|
771
|
+
localize(12386, "Terminal will be reused by tasks, press any key to close it.")), ( localize(12387, "Terminal will be reused by tasks, press any key to close it.")), (
|
|
772
|
+
localize(12388, "Press any key to close the terminal.")), ( localize(12389, "Press any key to close the terminal."))];
|
|
773
|
+
function detectsVSCodeTaskFinishMessage(cursorLine) {
|
|
774
|
+
const normalized = cursorLine.replace(/\s/g, "").toLowerCase();
|
|
775
|
+
return (taskFinishMessages.some(msg => normalized.includes(msg.replace(/\s/g, "").toLowerCase())));
|
|
776
|
+
}
|
|
777
|
+
function detectsGenericPressAnyKeyPattern(cursorLine) {
|
|
778
|
+
if (detectsVSCodeTaskFinishMessage(cursorLine)) {
|
|
779
|
+
return false;
|
|
780
|
+
}
|
|
781
|
+
return /press a(?:ny)? key/i.test(cursorLine);
|
|
782
|
+
}
|
|
657
783
|
|
|
658
|
-
export { OutputMonitor, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern };
|
|
784
|
+
export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage };
|