@codingame/monaco-vscode-katex-common 30.0.1 → 31.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/package.json +3 -3
- package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +16 -0
- package/vscode/src/vs/platform/actions/browser/actionbar.js +22 -0
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +50 -0
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +138 -0
- package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +12 -0
- package/vscode/src/vs/platform/networkFilter/common/settings.js +14 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +73 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +51 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +64 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +17 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +73 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +20 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +73 -49
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +41 -99
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +13 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +11 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +339 -161
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +33 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollections.d.ts +43 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollections.js +147 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +55 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +42 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animation.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animationRegistry.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animationRegistry.js +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/blockAnimations.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/blockAnimations.js +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/buffer.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/bufferRegistry.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/bufferRegistry.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/offBuffer.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/offBuffer.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/wordBuffer.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/wordBuffer.js +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +77 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +170 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/media/chatIncrementalRendering.css +112 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +24 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +111 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +425 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +16 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +68 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +101 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +36 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +217 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +23 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +168 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +18 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +7 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +1 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +7 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +24 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +104 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +11 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +257 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentContent.css +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +286 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +15 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +25 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +29 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +258 -321
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +392 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +24 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.js +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +38 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +577 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +4 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +58 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +44 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +362 -188
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +42 -95
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +9 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +57 -38
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +21 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/{modelPickerActionItem2.js → modelPickerActionItem.js} +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +38 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +94 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +218 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +12 -21
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +355 -156
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +2 -13
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +72 -65
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +4 -43
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +238 -204
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +4 -19
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +128 -115
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +6 -9
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +152 -49
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +64 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +40 -40
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminal/terminalContribChatExports.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +41 -0
- 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 +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +165 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +163 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +144 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +40 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +43 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +256 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +94 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +221 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +392 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +243 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +310 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +168 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +33 -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 +13 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +47 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +24 -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 +32 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +108 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +412 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +192 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +2258 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +43 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +118 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +141 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +608 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +0 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +0 -196
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +0 -29
- package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +0 -215
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +0 -18
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +0 -107
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
3
|
+
import { isPowerShell } from '../../runInTerminalHelpers.js';
|
|
4
|
+
|
|
5
|
+
class CommandLinePwshChainOperatorRewriter extends Disposable {
|
|
6
|
+
constructor(_treeSitterCommandParser) {
|
|
7
|
+
super();
|
|
8
|
+
this._treeSitterCommandParser = _treeSitterCommandParser;
|
|
9
|
+
}
|
|
10
|
+
async rewrite(options) {
|
|
11
|
+
if (isPowerShell(options.shell, options.os)) {
|
|
12
|
+
let doubleAmpersandCaptures;
|
|
13
|
+
try {
|
|
14
|
+
doubleAmpersandCaptures = await this._treeSitterCommandParser.extractPwshDoubleAmpersandChainOperators(options.commandLine);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
}
|
|
18
|
+
if (doubleAmpersandCaptures && doubleAmpersandCaptures.length > 0) {
|
|
19
|
+
let rewritten = options.commandLine;
|
|
20
|
+
for (const capture of doubleAmpersandCaptures.reverse()) {
|
|
21
|
+
rewritten = `${rewritten.substring(0, capture.node.startIndex)};${rewritten.substring(capture.node.endIndex)}`;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
rewritten,
|
|
25
|
+
reasoning: '&& re-written to ;'
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { CommandLinePwshChainOperatorRewriter };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { MaybePromise } from "@codingame/monaco-vscode-api/vscode/vs/base/common/async";
|
|
2
|
+
import type { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import type { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
|
|
4
|
+
import type { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
5
|
+
export interface ICommandLineRewriter extends IDisposable {
|
|
6
|
+
rewrite(options: ICommandLineRewriterOptions): MaybePromise<ICommandLineRewriterResult | undefined>;
|
|
7
|
+
}
|
|
8
|
+
export interface ICommandLineRewriterOptions {
|
|
9
|
+
commandLine: string;
|
|
10
|
+
cwd: URI | undefined;
|
|
11
|
+
shell: string;
|
|
12
|
+
os: OperatingSystem;
|
|
13
|
+
isBackground?: boolean;
|
|
14
|
+
requestUnsandboxedExecution?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface ICommandLineRewriterResult {
|
|
17
|
+
rewritten: string;
|
|
18
|
+
reasoning: string;
|
|
19
|
+
forDisplay?: string;
|
|
20
|
+
isSandboxWrapped?: boolean;
|
|
21
|
+
requiresUnsandboxConfirmation?: boolean;
|
|
22
|
+
blockedDomains?: string[];
|
|
23
|
+
deniedDomains?: string[];
|
|
24
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { ITerminalSandboxService } from "../../../common/terminalSandboxService.js";
|
|
3
|
+
import type { ICommandLineRewriter, ICommandLineRewriterOptions, ICommandLineRewriterResult } from "./commandLineRewriter.js";
|
|
4
|
+
export declare class CommandLineSandboxRewriter extends Disposable implements ICommandLineRewriter {
|
|
5
|
+
private readonly _sandboxService;
|
|
6
|
+
constructor(_sandboxService: ITerminalSandboxService);
|
|
7
|
+
rewrite(options: ICommandLineRewriterOptions): Promise<ICommandLineRewriterResult | undefined>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import '../../../common/terminalSandboxService.js';
|
|
5
|
+
import { TerminalSandboxPrerequisiteCheck } from '../../../../../../../platform/sandbox/common/terminalSandboxService.js';
|
|
6
|
+
import { ITerminalSandboxService } from '@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/terminalSandboxService.service';
|
|
7
|
+
|
|
8
|
+
let CommandLineSandboxRewriter = class CommandLineSandboxRewriter extends Disposable {
|
|
9
|
+
constructor(_sandboxService) {
|
|
10
|
+
super();
|
|
11
|
+
this._sandboxService = _sandboxService;
|
|
12
|
+
}
|
|
13
|
+
async rewrite(options) {
|
|
14
|
+
const sandboxPrereqs = await this._sandboxService.checkForSandboxingPrereqs();
|
|
15
|
+
if (!sandboxPrereqs.enabled || sandboxPrereqs.failedCheck === TerminalSandboxPrerequisiteCheck.Config) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const wrappedCommand = this._sandboxService.wrapCommand(options.commandLine, options.requestUnsandboxedExecution, options.shell);
|
|
19
|
+
return {
|
|
20
|
+
rewritten: wrappedCommand.command,
|
|
21
|
+
reasoning: wrappedCommand.requiresUnsandboxConfirmation ? "Switched command to unsandboxed execution because the command includes a domain that is not in the sandbox allowlist" : "Wrapped command for sandbox execution",
|
|
22
|
+
forDisplay: options.commandLine,
|
|
23
|
+
isSandboxWrapped: wrappedCommand.isSandboxWrapped,
|
|
24
|
+
requiresUnsandboxConfirmation: wrappedCommand.requiresUnsandboxConfirmation,
|
|
25
|
+
blockedDomains: wrappedCommand.blockedDomains,
|
|
26
|
+
deniedDomains: wrappedCommand.deniedDomains
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
CommandLineSandboxRewriter = ( __decorate([( __param(0, ITerminalSandboxService))], CommandLineSandboxRewriter));
|
|
31
|
+
|
|
32
|
+
export { CommandLineSandboxRewriter };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
3
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
|
+
import { IToolInvocationContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
|
|
5
|
+
import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
|
|
6
|
+
import { IExecution, IPollingResult, OutputMonitorState } from "./types.js";
|
|
7
|
+
import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
|
|
8
|
+
export interface IOutputMonitor extends Disposable {
|
|
9
|
+
readonly pollingResult: IPollingResult & {
|
|
10
|
+
pollDurationMs: number;
|
|
11
|
+
} | undefined;
|
|
12
|
+
readonly outputMonitorTelemetryCounters: IOutputMonitorTelemetryCounters;
|
|
13
|
+
readonly onDidFinishCommand: Event<void>;
|
|
14
|
+
readonly onDidDetectInputNeeded: Event<void>;
|
|
15
|
+
}
|
|
16
|
+
export interface IOutputMonitorTelemetryCounters {
|
|
17
|
+
inputToolManualAcceptCount: number;
|
|
18
|
+
inputToolManualRejectCount: number;
|
|
19
|
+
inputToolManualChars: number;
|
|
20
|
+
inputToolAutoAcceptCount: number;
|
|
21
|
+
inputToolAutoChars: number;
|
|
22
|
+
inputToolManualShownCount: number;
|
|
23
|
+
inputToolFreeFormInputShownCount: number;
|
|
24
|
+
inputToolFreeFormInputCount: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class OutputMonitor extends Disposable implements IOutputMonitor {
|
|
27
|
+
private readonly _execution;
|
|
28
|
+
private readonly _pollFn;
|
|
29
|
+
private readonly _taskService;
|
|
30
|
+
private readonly _logService;
|
|
31
|
+
private _state;
|
|
32
|
+
get state(): OutputMonitorState;
|
|
33
|
+
private _formatLastLineForLog;
|
|
34
|
+
private _pollingResult;
|
|
35
|
+
get pollingResult(): IPollingResult & {
|
|
36
|
+
pollDurationMs: number;
|
|
37
|
+
} | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Flag to track if user has inputted since idle was detected.
|
|
40
|
+
* This is used to skip showing prompts if the user already provided input.
|
|
41
|
+
*/
|
|
42
|
+
private _userInputtedSinceIdleDetected;
|
|
43
|
+
private readonly _userInputListener;
|
|
44
|
+
private readonly _outputMonitorTelemetryCounters;
|
|
45
|
+
get outputMonitorTelemetryCounters(): Readonly<IOutputMonitorTelemetryCounters>;
|
|
46
|
+
private readonly _onDidFinishCommand;
|
|
47
|
+
readonly onDidFinishCommand: Event<void>;
|
|
48
|
+
private readonly _onDidDetectInputNeeded;
|
|
49
|
+
readonly onDidDetectInputNeeded: Event<void>;
|
|
50
|
+
private _asyncMode;
|
|
51
|
+
private _command;
|
|
52
|
+
private _invocationContext;
|
|
53
|
+
private _currentMonitoringCts;
|
|
54
|
+
constructor(_execution: IExecution, _pollFn: ((execution: IExecution, token: CancellationToken, taskService: ITaskService) => Promise<IPollingResult | undefined>) | undefined, invocationContext: IToolInvocationContext | undefined, token: CancellationToken, command: string, _taskService: ITaskService, _logService: ITerminalLogService);
|
|
55
|
+
private _startMonitoring;
|
|
56
|
+
/**
|
|
57
|
+
* Continues monitoring in background mode with a new cancellation token.
|
|
58
|
+
* In background mode, the monitor re-polls for idle and handles prompts
|
|
59
|
+
* whenever new terminal data arrives, rather than stopping after the first
|
|
60
|
+
* idle detection. Resource cost is bounded because the monitor only wakes
|
|
61
|
+
* on new terminal data (via {@link _waitForNewData}) and each idle cycle
|
|
62
|
+
* is capped by the standard polling timeouts.
|
|
63
|
+
*/
|
|
64
|
+
continueMonitoringAsync(token: CancellationToken): void;
|
|
65
|
+
/**
|
|
66
|
+
* Waits for new terminal data or cancellation. Used in background mode
|
|
67
|
+
* to avoid polling and LLM calls while the terminal is quiet.
|
|
68
|
+
*/
|
|
69
|
+
private _waitForNewData;
|
|
70
|
+
private _handleIdleState;
|
|
71
|
+
private _handleTimeoutState;
|
|
72
|
+
/**
|
|
73
|
+
* Single bounded polling pass that returns when:
|
|
74
|
+
* - terminal becomes inactive/idle, or
|
|
75
|
+
* - timeout window elapses.
|
|
76
|
+
*/
|
|
77
|
+
private _waitForIdle;
|
|
78
|
+
/**
|
|
79
|
+
* Sets up a listener for user input that triggers immediately when idle is detected.
|
|
80
|
+
* This ensures we catch any input that happens between idle detection and prompt creation.
|
|
81
|
+
*/
|
|
82
|
+
private _setupIdleInputListener;
|
|
83
|
+
/**
|
|
84
|
+
* Cleans up the idle input listener and resets the flag.
|
|
85
|
+
*/
|
|
86
|
+
private _cleanupIdleInputListener;
|
|
87
|
+
private _isSensitivePrompt;
|
|
88
|
+
}
|
|
89
|
+
export declare function matchTerminalPromptOption(options: readonly string[], suggestedOption: string): {
|
|
90
|
+
option: string | undefined;
|
|
91
|
+
index: number;
|
|
92
|
+
};
|
|
93
|
+
export declare function detectsInputRequiredPattern(cursorLine: string): boolean;
|
|
94
|
+
export declare function detectsNonInteractiveHelpPattern(cursorLine: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Detects VS Code's specific task completion messages like:
|
|
97
|
+
* - "Press any key to close the terminal."
|
|
98
|
+
* - "Terminal will be reused by tasks, press any key to close it."
|
|
99
|
+
* These appear when a task finishes and should be ignored if the task is done.
|
|
100
|
+
* Note: These messages may be prefixed with " * " by VS Code and may have line wrapping
|
|
101
|
+
* that can split words across lines (e.g., "t\no" instead of "to").
|
|
102
|
+
*/
|
|
103
|
+
export declare function detectsVSCodeTaskFinishMessage(cursorLine: string): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Detects generic "press any key" prompts from scripts (not VS Code task messages).
|
|
106
|
+
* These should prompt the user to interact with the terminal.
|
|
107
|
+
*/
|
|
108
|
+
export declare function detectsGenericPressAnyKeyPattern(cursorLine: string): boolean;
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
|
+
import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
5
|
+
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
6
|
+
import { Disposable, MutableDisposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
8
|
+
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
9
|
+
import { OutputMonitorState, PollingConsts } from './types.js';
|
|
10
|
+
import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
|
|
11
|
+
|
|
12
|
+
let OutputMonitor = class OutputMonitor extends Disposable {
|
|
13
|
+
get state() {
|
|
14
|
+
return this._state;
|
|
15
|
+
}
|
|
16
|
+
_formatLastLineForLog(output) {
|
|
17
|
+
if (!output) {
|
|
18
|
+
return "<empty>";
|
|
19
|
+
}
|
|
20
|
+
const lastLine = output.trimEnd().split(/\r?\n/).pop() ?? "";
|
|
21
|
+
if (!lastLine) {
|
|
22
|
+
return "<empty>";
|
|
23
|
+
}
|
|
24
|
+
if (this._isSensitivePrompt(lastLine)) {
|
|
25
|
+
return "<redacted>";
|
|
26
|
+
}
|
|
27
|
+
return lastLine.length > 200 ? lastLine.slice(0, 200) + "…" : lastLine;
|
|
28
|
+
}
|
|
29
|
+
get pollingResult() {
|
|
30
|
+
return this._pollingResult;
|
|
31
|
+
}
|
|
32
|
+
get outputMonitorTelemetryCounters() {
|
|
33
|
+
return this._outputMonitorTelemetryCounters;
|
|
34
|
+
}
|
|
35
|
+
constructor(
|
|
36
|
+
_execution,
|
|
37
|
+
_pollFn,
|
|
38
|
+
invocationContext,
|
|
39
|
+
token,
|
|
40
|
+
command,
|
|
41
|
+
_taskService,
|
|
42
|
+
_logService
|
|
43
|
+
) {
|
|
44
|
+
super();
|
|
45
|
+
this._execution = _execution;
|
|
46
|
+
this._pollFn = _pollFn;
|
|
47
|
+
this._taskService = _taskService;
|
|
48
|
+
this._logService = _logService;
|
|
49
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
50
|
+
this._userInputtedSinceIdleDetected = false;
|
|
51
|
+
this._userInputListener = this._register(( new MutableDisposable()));
|
|
52
|
+
this._outputMonitorTelemetryCounters = {
|
|
53
|
+
inputToolManualAcceptCount: 0,
|
|
54
|
+
inputToolManualRejectCount: 0,
|
|
55
|
+
inputToolManualChars: 0,
|
|
56
|
+
inputToolAutoAcceptCount: 0,
|
|
57
|
+
inputToolAutoChars: 0,
|
|
58
|
+
inputToolManualShownCount: 0,
|
|
59
|
+
inputToolFreeFormInputShownCount: 0,
|
|
60
|
+
inputToolFreeFormInputCount: 0
|
|
61
|
+
};
|
|
62
|
+
this._onDidFinishCommand = this._register(( new Emitter()));
|
|
63
|
+
this.onDidFinishCommand = this._onDidFinishCommand.event;
|
|
64
|
+
this._onDidDetectInputNeeded = this._register(( new Emitter()));
|
|
65
|
+
this.onDidDetectInputNeeded = this._onDidDetectInputNeeded.event;
|
|
66
|
+
this._asyncMode = false;
|
|
67
|
+
this._command = "";
|
|
68
|
+
this._command = command;
|
|
69
|
+
this._invocationContext = invocationContext;
|
|
70
|
+
this._register(toDisposable(() => this._currentMonitoringCts?.dispose()));
|
|
71
|
+
timeout(0).then(() => {
|
|
72
|
+
this._currentMonitoringCts = ( new CancellationTokenSource(token));
|
|
73
|
+
this._startMonitoring(command, invocationContext, this._currentMonitoringCts.token);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async _startMonitoring(command, invocationContext, token) {
|
|
77
|
+
const pollStartTime = Date.now();
|
|
78
|
+
let resources;
|
|
79
|
+
let output;
|
|
80
|
+
let extended = false;
|
|
81
|
+
try {
|
|
82
|
+
while (!token.isCancellationRequested) {
|
|
83
|
+
switch (this._state) {
|
|
84
|
+
case OutputMonitorState.PollingForIdle:
|
|
85
|
+
{
|
|
86
|
+
this._logService.trace(`OutputMonitor: Entering PollingForIdle (extended=${extended})`);
|
|
87
|
+
this._state = await this._waitForIdle(this._execution, extended, token);
|
|
88
|
+
this._logService.trace(
|
|
89
|
+
`OutputMonitor: PollingForIdle completed -> state=${OutputMonitorState[this._state]}`
|
|
90
|
+
);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
case OutputMonitorState.Timeout:
|
|
94
|
+
{
|
|
95
|
+
this._logService.trace(`OutputMonitor: Entering Timeout state (extended=${extended})`);
|
|
96
|
+
const shouldContinuePolling = await this._handleTimeoutState(command, invocationContext, extended, token);
|
|
97
|
+
if (shouldContinuePolling) {
|
|
98
|
+
extended = true;
|
|
99
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
100
|
+
continue;
|
|
101
|
+
} else if (this._asyncMode) {
|
|
102
|
+
this._logService.trace(
|
|
103
|
+
"OutputMonitor: Async mode - timeout reached, waiting for new terminal data"
|
|
104
|
+
);
|
|
105
|
+
extended = false;
|
|
106
|
+
await this._waitForNewData(token);
|
|
107
|
+
if (token.isCancellationRequested) {
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
111
|
+
continue;
|
|
112
|
+
} else {
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
case OutputMonitorState.Cancelled:
|
|
117
|
+
break;
|
|
118
|
+
case OutputMonitorState.Idle:
|
|
119
|
+
{
|
|
120
|
+
this._logService.trace("OutputMonitor: Entering Idle handler");
|
|
121
|
+
const idleResult = await this._handleIdleState(token);
|
|
122
|
+
if (idleResult.shouldContinuePolling) {
|
|
123
|
+
this._logService.trace("OutputMonitor: Idle handler -> continue polling");
|
|
124
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
125
|
+
continue;
|
|
126
|
+
} else if (this._asyncMode) {
|
|
127
|
+
this._logService.trace(
|
|
128
|
+
"OutputMonitor: Async mode - waiting for new terminal data before next monitoring cycle"
|
|
129
|
+
);
|
|
130
|
+
await this._waitForNewData(token);
|
|
131
|
+
if (token.isCancellationRequested) {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
135
|
+
continue;
|
|
136
|
+
} else {
|
|
137
|
+
this._logService.trace(
|
|
138
|
+
`OutputMonitor: Idle handler -> stop polling (hasResources=${!!idleResult.resources}, outputLen=${idleResult.output?.length ?? 0})`
|
|
139
|
+
);
|
|
140
|
+
resources = idleResult.resources;
|
|
141
|
+
output = idleResult.output;
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (this._state === OutputMonitorState.Idle || this._state === OutputMonitorState.Cancelled || this._state === OutputMonitorState.Timeout) {
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (token.isCancellationRequested) {
|
|
151
|
+
this._state = OutputMonitorState.Cancelled;
|
|
152
|
+
}
|
|
153
|
+
} finally {
|
|
154
|
+
this._logService.trace(
|
|
155
|
+
`OutputMonitor: Monitoring finished (state=${OutputMonitorState[this._state]}, duration=${Date.now() - pollStartTime}ms)`
|
|
156
|
+
);
|
|
157
|
+
this._pollingResult = {
|
|
158
|
+
state: this._state,
|
|
159
|
+
output: output ?? this._execution.getOutput(),
|
|
160
|
+
pollDurationMs: Date.now() - pollStartTime,
|
|
161
|
+
resources
|
|
162
|
+
};
|
|
163
|
+
this._userInputListener.clear();
|
|
164
|
+
this._onDidFinishCommand.fire();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
continueMonitoringAsync(token) {
|
|
168
|
+
this._asyncMode = true;
|
|
169
|
+
const currentMonitoringCts = this._currentMonitoringCts;
|
|
170
|
+
currentMonitoringCts?.cancel();
|
|
171
|
+
currentMonitoringCts?.dispose();
|
|
172
|
+
this._currentMonitoringCts = ( new CancellationTokenSource(token));
|
|
173
|
+
this._state = OutputMonitorState.PollingForIdle;
|
|
174
|
+
this._startMonitoring(this._command, this._invocationContext, this._currentMonitoringCts.token);
|
|
175
|
+
}
|
|
176
|
+
_waitForNewData(token) {
|
|
177
|
+
return ( new Promise(resolve => {
|
|
178
|
+
if (token.isCancellationRequested) {
|
|
179
|
+
resolve();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const cleanup = () => {
|
|
183
|
+
dataListener.dispose();
|
|
184
|
+
tokenListener.dispose();
|
|
185
|
+
disposedListener.dispose();
|
|
186
|
+
};
|
|
187
|
+
const dataListener = this._execution.instance.onData(() => {
|
|
188
|
+
cleanup();
|
|
189
|
+
resolve();
|
|
190
|
+
});
|
|
191
|
+
const tokenListener = token.onCancellationRequested(() => {
|
|
192
|
+
cleanup();
|
|
193
|
+
resolve();
|
|
194
|
+
});
|
|
195
|
+
const disposedListener = this._execution.instance.onDisposed(() => {
|
|
196
|
+
cleanup();
|
|
197
|
+
resolve();
|
|
198
|
+
});
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
async _handleIdleState(token) {
|
|
202
|
+
const output = this._execution.getOutput();
|
|
203
|
+
const outputTail = output.slice(-1e3);
|
|
204
|
+
this._logService.trace(
|
|
205
|
+
`OutputMonitor: Idle output summary: len=${output.length}, lastLine=${this._formatLastLineForLog(outputTail)}`
|
|
206
|
+
);
|
|
207
|
+
if (detectsNonInteractiveHelpPattern(outputTail)) {
|
|
208
|
+
this._logService.trace("OutputMonitor: Idle -> non-interactive help pattern detected, stopping");
|
|
209
|
+
return {
|
|
210
|
+
shouldContinuePolling: false,
|
|
211
|
+
output
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const isTask = this._execution.task !== undefined;
|
|
215
|
+
if (isTask && detectsVSCodeTaskFinishMessage(outputTail)) {
|
|
216
|
+
this._logService.trace("OutputMonitor: Idle -> VS Code task finish message detected, stopping");
|
|
217
|
+
return {
|
|
218
|
+
shouldContinuePolling: false,
|
|
219
|
+
output
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
if (!isTask && detectsGenericPressAnyKeyPattern(outputTail)) {
|
|
223
|
+
this._logService.trace(
|
|
224
|
+
"OutputMonitor: Idle -> generic \"press any key\" detected, signaling agent"
|
|
225
|
+
);
|
|
226
|
+
this._onDidDetectInputNeeded.fire();
|
|
227
|
+
this._cleanupIdleInputListener();
|
|
228
|
+
return {
|
|
229
|
+
shouldContinuePolling: false,
|
|
230
|
+
output
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (this._userInputtedSinceIdleDetected) {
|
|
234
|
+
this._logService.trace(
|
|
235
|
+
"OutputMonitor: User input detected since idle; skipping prompt and continuing polling"
|
|
236
|
+
);
|
|
237
|
+
this._cleanupIdleInputListener();
|
|
238
|
+
return {
|
|
239
|
+
shouldContinuePolling: true
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
if (this._asyncMode) {
|
|
243
|
+
if (detectsInputRequiredPattern(outputTail)) {
|
|
244
|
+
this._logService.trace(
|
|
245
|
+
"OutputMonitor: Async mode - input-required pattern detected, signaling agent"
|
|
246
|
+
);
|
|
247
|
+
this._onDidDetectInputNeeded.fire();
|
|
248
|
+
}
|
|
249
|
+
this._cleanupIdleInputListener();
|
|
250
|
+
return {
|
|
251
|
+
shouldContinuePolling: false,
|
|
252
|
+
output
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
if (detectsInputRequiredPattern(outputTail)) {
|
|
256
|
+
this._logService.trace("OutputMonitor: Input-required pattern detected, signaling agent");
|
|
257
|
+
this._onDidDetectInputNeeded.fire();
|
|
258
|
+
this._cleanupIdleInputListener();
|
|
259
|
+
return {
|
|
260
|
+
shouldContinuePolling: false,
|
|
261
|
+
output
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
this._cleanupIdleInputListener();
|
|
265
|
+
const custom = await this._pollFn?.(this._execution, token, this._taskService);
|
|
266
|
+
this._logService.trace(`OutputMonitor: Custom poller result: ${custom ? "provided" : "none"}`);
|
|
267
|
+
const resources = custom?.resources;
|
|
268
|
+
return {
|
|
269
|
+
resources,
|
|
270
|
+
shouldContinuePolling: false,
|
|
271
|
+
output: custom?.output ?? output
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
async _handleTimeoutState(_command, _invocationContext, _extended, _token) {
|
|
275
|
+
if (_extended) {
|
|
276
|
+
this._logService.info("OutputMonitor: Extended polling timeout reached after 2 minutes");
|
|
277
|
+
this._state = OutputMonitorState.Cancelled;
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
async _waitForIdle(execution, extendedPolling, token) {
|
|
283
|
+
const maxWaitMs = extendedPolling ? PollingConsts.ExtendedPollingMaxDuration : PollingConsts.FirstPollingMaxDuration;
|
|
284
|
+
const maxInterval = PollingConsts.MaxPollingIntervalDuration;
|
|
285
|
+
let currentInterval = PollingConsts.MinPollingDuration;
|
|
286
|
+
let waited = 0;
|
|
287
|
+
let consecutiveIdleEvents = 0;
|
|
288
|
+
let hasReceivedData = false;
|
|
289
|
+
const onDataDisposable = execution.instance.onData(_data => {
|
|
290
|
+
hasReceivedData = true;
|
|
291
|
+
});
|
|
292
|
+
try {
|
|
293
|
+
while (!token.isCancellationRequested && waited < maxWaitMs) {
|
|
294
|
+
const waitTime = Math.min(currentInterval, maxWaitMs - waited);
|
|
295
|
+
try {
|
|
296
|
+
await timeout(waitTime, token);
|
|
297
|
+
} catch (err) {
|
|
298
|
+
if (token.isCancellationRequested) {
|
|
299
|
+
return OutputMonitorState.Cancelled;
|
|
300
|
+
}
|
|
301
|
+
throw err;
|
|
302
|
+
}
|
|
303
|
+
waited += waitTime;
|
|
304
|
+
currentInterval = Math.min(currentInterval * 2, maxInterval);
|
|
305
|
+
const currentOutput = execution.getOutput();
|
|
306
|
+
const currentTail = currentOutput.slice(-1000);
|
|
307
|
+
if (detectsNonInteractiveHelpPattern(currentTail)) {
|
|
308
|
+
this._logService.trace(
|
|
309
|
+
`OutputMonitor: waitForIdle -> non-interactive help detected (waited=${waited}ms)`
|
|
310
|
+
);
|
|
311
|
+
this._state = OutputMonitorState.Idle;
|
|
312
|
+
this._setupIdleInputListener();
|
|
313
|
+
return this._state;
|
|
314
|
+
}
|
|
315
|
+
const promptResult = detectsInputRequiredPattern(currentTail);
|
|
316
|
+
if (promptResult) {
|
|
317
|
+
this._logService.trace(
|
|
318
|
+
`OutputMonitor: waitForIdle -> input-required pattern detected (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentTail)})`
|
|
319
|
+
);
|
|
320
|
+
this._state = OutputMonitorState.Idle;
|
|
321
|
+
this._setupIdleInputListener();
|
|
322
|
+
return this._state;
|
|
323
|
+
}
|
|
324
|
+
if (hasReceivedData) {
|
|
325
|
+
consecutiveIdleEvents = 0;
|
|
326
|
+
hasReceivedData = false;
|
|
327
|
+
} else {
|
|
328
|
+
consecutiveIdleEvents++;
|
|
329
|
+
}
|
|
330
|
+
const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
|
|
331
|
+
const isActive = execution.isActive ? await execution.isActive() : undefined;
|
|
332
|
+
this._logService.trace(
|
|
333
|
+
`OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`
|
|
334
|
+
);
|
|
335
|
+
if (recentlyIdle && isActive !== true) {
|
|
336
|
+
this._logService.trace(
|
|
337
|
+
`OutputMonitor: waitForIdle -> recentlyIdle && !active (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentTail)})`
|
|
338
|
+
);
|
|
339
|
+
this._state = OutputMonitorState.Idle;
|
|
340
|
+
this._setupIdleInputListener();
|
|
341
|
+
return this._state;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
} finally {
|
|
345
|
+
onDataDisposable.dispose();
|
|
346
|
+
}
|
|
347
|
+
if (token.isCancellationRequested) {
|
|
348
|
+
return OutputMonitorState.Cancelled;
|
|
349
|
+
}
|
|
350
|
+
return OutputMonitorState.Timeout;
|
|
351
|
+
}
|
|
352
|
+
_setupIdleInputListener() {
|
|
353
|
+
this._userInputtedSinceIdleDetected = false;
|
|
354
|
+
this._logService.trace("OutputMonitor: Setting up idle input listener");
|
|
355
|
+
this._userInputListener.value = this._execution.instance.onDidInputData(() => {
|
|
356
|
+
this._userInputtedSinceIdleDetected = true;
|
|
357
|
+
this._logService.trace("OutputMonitor: Detected user terminal input while idle");
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
_cleanupIdleInputListener() {
|
|
361
|
+
this._userInputtedSinceIdleDetected = false;
|
|
362
|
+
this._userInputListener.clear();
|
|
363
|
+
}
|
|
364
|
+
_isSensitivePrompt(prompt) {
|
|
365
|
+
return /(password|passphrase|token|api\s*key|secret)/i.test(prompt);
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
OutputMonitor = ( __decorate([( __param(5, ITaskService)), ( __param(6, ITerminalLogService))], OutputMonitor));
|
|
369
|
+
function detectsInputRequiredPattern(cursorLine) {
|
|
370
|
+
return ([
|
|
371
|
+
/\s*(?:\[[^\]]\][^\[]*)+(?:\(default is\s+"[^"]+"\):)?\s+$/,
|
|
372
|
+
/(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i,
|
|
373
|
+
/[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i,
|
|
374
|
+
/\(y\)\s*$/i,
|
|
375
|
+
/:\s*$/,
|
|
376
|
+
/:\s*\([^)]*\)\s*$/,
|
|
377
|
+
/\(END\)$/,
|
|
378
|
+
/password[:]?$/i,
|
|
379
|
+
/\?\s*(?:\([a-z\s]+\))?$/i,
|
|
380
|
+
/press a(?:ny)? key/i
|
|
381
|
+
].some(e => e.test(cursorLine)));
|
|
382
|
+
}
|
|
383
|
+
function detectsNonInteractiveHelpPattern(cursorLine) {
|
|
384
|
+
return ([
|
|
385
|
+
/press [h?]\s*(?:\+\s*enter)?\s*to (?:show|open|display|get|see)\s*(?:available )?(?:help|commands|options)/i,
|
|
386
|
+
/press h\s*(?:or\s*\?)?\s*(?:\+\s*enter)?\s*for (?:help|commands|options)/i,
|
|
387
|
+
/press \?\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:help|commands|options|list)/i,
|
|
388
|
+
/type\s*[h?]\s*(?:\+\s*enter)?\s*(?:for|to see|to show)\s*(?:help|commands|options)/i,
|
|
389
|
+
/hit\s*[h?]\s*(?:\+\s*enter)?\s*(?:for|to see|to show)\s*(?:help|commands|options)/i,
|
|
390
|
+
/press o\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:open|launch)(?:\s*(?:the )?(?:app|application|browser)|\s+in\s+(?:the\s+)?browser)?/i,
|
|
391
|
+
/press r\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:restart|reload|refresh)(?:\s*(?:the )?(?:server|dev server|service))?/i,
|
|
392
|
+
/press q\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:quit|exit|stop)(?:\s*(?:the )?(?:server|app|process))?/i,
|
|
393
|
+
/press u\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:show|print|display)\s*(?:the )?(?:server )?urls?/i
|
|
394
|
+
].some(e => e.test(cursorLine)));
|
|
395
|
+
}
|
|
396
|
+
const taskFinishMessages = [(
|
|
397
|
+
localize(14031, "Terminal will be reused by tasks, press any key to close it.")), ( localize(14032, "Terminal will be reused by tasks, press any key to close it.")), (
|
|
398
|
+
localize(14033, "Press any key to close the terminal.")), ( localize(14034, "Press any key to close the terminal.")), (
|
|
399
|
+
localize(14035, "The terminal will be reused by tasks. Press any key to close."))];
|
|
400
|
+
const normalizedTaskFinishMessages = ( taskFinishMessages.map(msg => msg.replace(/[\s.,:;!?"'`()[\]{}<>\-_/\\]+/g, "").toLowerCase()));
|
|
401
|
+
function detectsVSCodeTaskFinishMessage(cursorLine) {
|
|
402
|
+
const compact = cursorLine.replace(/[\s.,:;!?"'`()[\]{}<>\-_/\\]+/g, "").toLowerCase();
|
|
403
|
+
return ( normalizedTaskFinishMessages.some(msg => compact.includes(msg)));
|
|
404
|
+
}
|
|
405
|
+
function detectsGenericPressAnyKeyPattern(cursorLine) {
|
|
406
|
+
if (detectsVSCodeTaskFinishMessage(cursorLine)) {
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
return /press a(?:ny)? key/i.test(cursorLine);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Task } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService";
|
|
2
|
+
import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
3
|
+
import type { ILinkLocation } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers";
|
|
4
|
+
import type { IMarker as XtermMarker } from "@xterm/xterm";
|
|
5
|
+
import type { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
6
|
+
export interface IConfirmationPrompt {
|
|
7
|
+
prompt: string;
|
|
8
|
+
options: string[];
|
|
9
|
+
descriptions?: string[];
|
|
10
|
+
detectedRequestForFreeFormInput: boolean;
|
|
11
|
+
suggestedInput?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IExecution {
|
|
14
|
+
getOutput: (marker?: XtermMarker) => string;
|
|
15
|
+
isActive?: () => Promise<boolean>;
|
|
16
|
+
task?: Task | Pick<Task, "configurationProperties">;
|
|
17
|
+
dependencyTasks?: Task[];
|
|
18
|
+
instance: Pick<ITerminalInstance, "sendText" | "instanceId" | "onDidInputData" | "onDisposed" | "onData" | "focus" | "registerMarker">;
|
|
19
|
+
sessionResource: URI | undefined;
|
|
20
|
+
}
|
|
21
|
+
export interface IPollingResult {
|
|
22
|
+
output: string;
|
|
23
|
+
resources?: ILinkLocation[];
|
|
24
|
+
state: OutputMonitorState;
|
|
25
|
+
}
|
|
26
|
+
export declare enum OutputMonitorState {
|
|
27
|
+
Initial = "Initial",
|
|
28
|
+
Idle = "Idle",
|
|
29
|
+
PollingForIdle = "PollingForIdle",
|
|
30
|
+
Prompting = "Prompting",
|
|
31
|
+
Timeout = "Timeout",
|
|
32
|
+
Active = "Active",
|
|
33
|
+
Cancelled = "Cancelled"
|
|
34
|
+
}
|
|
35
|
+
export declare enum PollingConsts {
|
|
36
|
+
MinIdleEvents = 2,// Minimum number of idle checks before considering the terminal idle
|
|
37
|
+
MinPollingDuration = 500,
|
|
38
|
+
FirstPollingMaxDuration = 20000,// 20 seconds
|
|
39
|
+
ExtendedPollingMaxDuration = 120000,// 2 minutes
|
|
40
|
+
MaxPollingIntervalDuration = 10000,// 10 seconds - grows via exponential backoff
|
|
41
|
+
MaxRecursionCount = 5
|
|
42
|
+
}
|