@codingame/monaco-vscode-katex-common 31.0.0 → 32.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 +2 -2
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +15 -3
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +6 -5
- package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +5 -1
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +45 -14
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +15 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +15 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +51 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +45 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +46 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +155 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +20 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +37 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/media/chatSessionPickerActionItem.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +250 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +14 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
- 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.js +7 -2
- 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/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +51 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +56 -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/buffers/paragraphBuffer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +68 -10
- 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 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +653 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +28 -10
- 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 +91 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +53 -51
- 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.js +11 -11
- 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 +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +42 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- 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 +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +93 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +169 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +13 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +60 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +13 -6
- 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 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +125 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +29 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +119 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +1 -1
- 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/media/toolRiskBadge.css +77 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +125 -0
- 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 +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +132 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +16 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +156 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +93 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +133 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +53 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +288 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +23 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +699 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +12 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +191 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +9 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +20 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +89 -108
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
- 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 +521 -9
- 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/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +19 -19
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +82 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +44 -17
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +3 -46
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.d.ts → inlineChatAffordanceWidget.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.js → inlineChatAffordanceWidget.js} +6 -6
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -18
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +19 -400
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -9
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +5 -19
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +47 -133
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +103 -25
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +29 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +3 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -92
- 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/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +99 -32
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +13 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +76 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +89 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +11 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +7 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +11 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +59 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +24 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +111 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +60 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +455 -171
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +49 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +302 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +118 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +34 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +233 -48
- package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +0 -16
- package/vscode/src/vs/platform/actions/browser/actionbar.js +0 -22
- 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 -539
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -386
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +0 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +0 -509
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -130
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +0 -276
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.d.ts +0 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.js +0 -93
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +0 -617
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +0 -231
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
|
|
2
|
+
import { OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
3
|
+
import { gitGlobalOptionsWithValue, matchesTerminalSandboxCommandRule } from './terminalSandboxCommandRules.js';
|
|
4
|
+
|
|
5
|
+
var TerminalSandboxRuntimeConfigurationOperation;
|
|
6
|
+
(function(TerminalSandboxRuntimeConfigurationOperation) {
|
|
7
|
+
TerminalSandboxRuntimeConfigurationOperation["GnuPG"] = "gnupg";
|
|
8
|
+
TerminalSandboxRuntimeConfigurationOperation["Node"] = "node";
|
|
9
|
+
})(
|
|
10
|
+
TerminalSandboxRuntimeConfigurationOperation || (TerminalSandboxRuntimeConfigurationOperation = {})
|
|
11
|
+
);
|
|
12
|
+
const terminalSandboxRuntimeConfigurationCommandRules = [{
|
|
13
|
+
keywords: [
|
|
14
|
+
"node",
|
|
15
|
+
"npm",
|
|
16
|
+
"npx",
|
|
17
|
+
"pnpm",
|
|
18
|
+
"yarn",
|
|
19
|
+
"corepack",
|
|
20
|
+
"bun",
|
|
21
|
+
"deno",
|
|
22
|
+
"nvm",
|
|
23
|
+
"volta",
|
|
24
|
+
"fnm",
|
|
25
|
+
"asdf",
|
|
26
|
+
"mise"
|
|
27
|
+
],
|
|
28
|
+
value: TerminalSandboxRuntimeConfigurationOperation.Node
|
|
29
|
+
}, {
|
|
30
|
+
keywords: ["git"],
|
|
31
|
+
value: TerminalSandboxRuntimeConfigurationOperation.GnuPG,
|
|
32
|
+
subcommands: ["commit"],
|
|
33
|
+
optionsWithValue: gitGlobalOptionsWithValue,
|
|
34
|
+
condition: (
|
|
35
|
+
{
|
|
36
|
+
os
|
|
37
|
+
}
|
|
38
|
+
) => os !== OperatingSystem.Windows,
|
|
39
|
+
when: isGpgSignedGitCommit
|
|
40
|
+
}];
|
|
41
|
+
function getTerminalSandboxRuntimeConfigurationForOperation(operation, os) {
|
|
42
|
+
switch (operation) {
|
|
43
|
+
case TerminalSandboxRuntimeConfigurationOperation.GnuPG:
|
|
44
|
+
switch (os) {
|
|
45
|
+
case OperatingSystem.Windows:
|
|
46
|
+
return {};
|
|
47
|
+
case OperatingSystem.Macintosh:
|
|
48
|
+
case OperatingSystem.Linux:
|
|
49
|
+
default:
|
|
50
|
+
return {
|
|
51
|
+
network: {
|
|
52
|
+
allowAllUnixSockets: true
|
|
53
|
+
},
|
|
54
|
+
filesystem: {
|
|
55
|
+
allowRead: ["~/.gnupg"],
|
|
56
|
+
allowWrite: ["~/.gnupg"]
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
case TerminalSandboxRuntimeConfigurationOperation.Node:
|
|
61
|
+
switch (os) {
|
|
62
|
+
case OperatingSystem.Macintosh:
|
|
63
|
+
case OperatingSystem.Linux:
|
|
64
|
+
default:
|
|
65
|
+
return {
|
|
66
|
+
filesystem: {
|
|
67
|
+
allowWrite: ["~/.volta/"]
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function getTerminalSandboxRuntimeConfigurationForCommands(os, commandDetails) {
|
|
74
|
+
const operations = ( new Set());
|
|
75
|
+
for (const command of commandDetails) {
|
|
76
|
+
for (const rule of terminalSandboxRuntimeConfigurationCommandRules) {
|
|
77
|
+
if (matchesTerminalSandboxCommandRule(command, rule, {
|
|
78
|
+
os
|
|
79
|
+
})) {
|
|
80
|
+
operations.add(rule.value);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const configuration = {};
|
|
85
|
+
for (const operation of operations) {
|
|
86
|
+
mergeAdditionalSandboxConfigProperties(
|
|
87
|
+
configuration,
|
|
88
|
+
getTerminalSandboxRuntimeConfigurationForOperation(operation, os)
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
return configuration;
|
|
92
|
+
}
|
|
93
|
+
function isGpgSignedGitCommit(command) {
|
|
94
|
+
return ( command.args.some(
|
|
95
|
+
arg => arg === "-S" || arg.startsWith("-S") || arg === "--gpg-sign" || arg.startsWith("--gpg-sign=")
|
|
96
|
+
));
|
|
97
|
+
}
|
|
98
|
+
function mergeAdditionalSandboxConfigProperties(target, additional) {
|
|
99
|
+
for (const [key, value] of Object.entries(additional)) {
|
|
100
|
+
if (!Object.prototype.hasOwnProperty.call(target, key)) {
|
|
101
|
+
target[key] = value;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const existingValue = target[key];
|
|
105
|
+
if (Array.isArray(existingValue) && Array.isArray(value)) {
|
|
106
|
+
target[key] = [...( new Set([...existingValue, ...value]))];
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (isObjectForSandboxConfigMerge(existingValue) && isObjectForSandboxConfigMerge(value)) {
|
|
110
|
+
mergeAdditionalSandboxConfigProperties(existingValue, value);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function isObjectForSandboxConfigMerge(value) {
|
|
115
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export { TerminalSandboxRuntimeConfigurationOperation, getTerminalSandboxRuntimeConfigurationForCommands };
|
|
@@ -12,10 +12,10 @@ import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform
|
|
|
12
12
|
import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
|
|
13
13
|
import { ISandboxHelperService } from "@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/sandboxHelperService.service";
|
|
14
14
|
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
|
|
15
|
-
import { TerminalSandboxPrerequisiteCheck, type ISandboxDependencyInstallOptions, type ISandboxDependencyInstallResult, type ITerminalSandboxPrerequisiteCheckResult, type ITerminalSandboxResolvedNetworkDomains, type ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
|
|
15
|
+
import { TerminalSandboxPrerequisiteCheck, type ISandboxDependencyInstallOptions, type ISandboxDependencyInstallResult, type ITerminalSandboxCommand, type ITerminalSandboxPrerequisiteCheckResult, type ITerminalSandboxResolvedNetworkDomains, type ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
|
|
16
16
|
import { ITerminalSandboxService } from "@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/terminalSandboxService.service";
|
|
17
17
|
export { ITerminalSandboxService, TerminalSandboxPrerequisiteCheck };
|
|
18
|
-
export type { ISandboxDependencyInstallOptions, ISandboxDependencyInstallResult, ISandboxDependencyInstallTerminal, ITerminalSandboxPrerequisiteCheckResult, ITerminalSandboxResolvedNetworkDomains, ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
|
|
18
|
+
export type { ISandboxDependencyInstallOptions, ISandboxDependencyInstallResult, ISandboxDependencyInstallTerminal, ITerminalSandboxCommand, ITerminalSandboxPrerequisiteCheckResult, ITerminalSandboxResolvedNetworkDomains, ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
|
|
19
19
|
export declare class TerminalSandboxService extends Disposable implements ITerminalSandboxService {
|
|
20
20
|
private readonly _configurationService;
|
|
21
21
|
private readonly _fileService;
|
|
@@ -40,6 +40,9 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
|
|
|
40
40
|
private _remoteEnvDetailsPromise;
|
|
41
41
|
private _remoteEnvDetails;
|
|
42
42
|
private _appRoot;
|
|
43
|
+
private _commandAllowListKeywords;
|
|
44
|
+
private _commandAllowListCommandDetails;
|
|
45
|
+
private _commandCwd;
|
|
43
46
|
private _os;
|
|
44
47
|
private _defaultWritePaths;
|
|
45
48
|
private static readonly _sandboxTempDirName;
|
|
@@ -48,8 +51,9 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
|
|
|
48
51
|
private static readonly _hostRegex;
|
|
49
52
|
constructor(_configurationService: IConfigurationService, _fileService: IFileService, _environmentService: IEnvironmentService, _logService: ILogService, _remoteAgentService: IRemoteAgentService, _workspaceContextService: IWorkspaceContextService, _productService: IProductService, _lifecycleService: ILifecycleService, _sandboxHelperService: ISandboxHelperService, _chatService: IChatService);
|
|
50
53
|
isEnabled(): Promise<boolean>;
|
|
54
|
+
isSandboxAllowNetworkEnabled(): Promise<boolean>;
|
|
51
55
|
getOS(): Promise<OperatingSystem>;
|
|
52
|
-
wrapCommand(command: string, requestUnsandboxedExecution?: boolean, shell?: string): ITerminalSandboxWrapResult
|
|
56
|
+
wrapCommand(command: string, requestUnsandboxedExecution?: boolean, shell?: string, cwd?: URI, commandDetails?: readonly ITerminalSandboxCommand[]): Promise<ITerminalSandboxWrapResult>;
|
|
53
57
|
getTempDir(): URI | undefined;
|
|
54
58
|
setNeedsForceUpdateConfigFile(): void;
|
|
55
59
|
checkForSandboxingPrereqs(forceRefresh?: boolean): Promise<ITerminalSandboxPrerequisiteCheckResult>;
|
|
@@ -63,13 +67,29 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
|
|
|
63
67
|
*/
|
|
64
68
|
private _createMissingDependencyPasswordPrompt;
|
|
65
69
|
private _quoteShellArgument;
|
|
70
|
+
private _getSandboxCommandWithPreservedCwd;
|
|
71
|
+
private _wrapSandboxRuntimeCommandForLaunch;
|
|
66
72
|
private _wrapUnsandboxedCommand;
|
|
67
73
|
private _getBlockedDomains;
|
|
68
74
|
private _extractDomains;
|
|
69
75
|
private _extractDomainFromUrl;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a stable, case-insensitive keyword set for config refresh checks and
|
|
78
|
+
* coarse command allow-list rules.
|
|
79
|
+
*/
|
|
80
|
+
private _normalizeCommandKeywords;
|
|
81
|
+
/**
|
|
82
|
+
* Normalizes command details for deterministic comparisons while preserving
|
|
83
|
+
* argument order within each command for argument-sensitive allow-list rules.
|
|
84
|
+
*/
|
|
85
|
+
private _normalizeCommandDetails;
|
|
86
|
+
private _areStringArraysEqual;
|
|
87
|
+
private _areObjectsEqual;
|
|
70
88
|
private _isSandboxConfiguredEnabled;
|
|
71
89
|
private _resolveSrtPath;
|
|
72
90
|
private _createSandboxConfig;
|
|
91
|
+
private _getCommandRuntimeFileSystemPaths;
|
|
92
|
+
private _withoutNetworkRuntimeSetting;
|
|
73
93
|
private _mergeAdditionalSandboxConfigProperties;
|
|
74
94
|
private _isObjectForSandboxConfigMerge;
|
|
75
95
|
private _pathJoin;
|
|
@@ -79,7 +99,17 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
|
|
|
79
99
|
private _getSandboxWindowTempDirName;
|
|
80
100
|
getResolvedNetworkDomains(): ITerminalSandboxResolvedNetworkDomains;
|
|
81
101
|
private _updateAllowWritePathsWithWorkspaceFolders;
|
|
102
|
+
private _updateDenyReadPathsWithHome;
|
|
103
|
+
private _updateAllowReadPathsWithAllowWrite;
|
|
104
|
+
private _resolveLinuxFileSystemPaths;
|
|
105
|
+
private _expandHomePath;
|
|
106
|
+
private _getSandboxRuntimeReadPaths;
|
|
107
|
+
private _isPathUnderAppRoot;
|
|
108
|
+
private _getWorkspaceStorageReadPaths;
|
|
109
|
+
private _getUserHomePath;
|
|
82
110
|
private _resolveSandboxDependencyStatus;
|
|
83
|
-
private
|
|
111
|
+
private _getSandboxConfiguredEnabledValue;
|
|
112
|
+
private _isSandboxAllowNetworkConfigured;
|
|
113
|
+
private _areUnsandboxedCommandsAllowed;
|
|
84
114
|
private _getSettingValue;
|
|
85
115
|
}
|
|
@@ -33,6 +33,8 @@ import { SANDBOX_HELPER_CHANNEL_NAME, SandboxHelperChannelClient } from '../../.
|
|
|
33
33
|
import { AgentSandboxSettingId, AgentSandboxEnabledValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/settings';
|
|
34
34
|
import { TerminalSandboxPrerequisiteCheck } from '../../../../../platform/sandbox/common/terminalSandboxService.js';
|
|
35
35
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
36
|
+
import { getTerminalSandboxReadAllowListForCommands } from './terminalSandboxReadAllowList.js';
|
|
37
|
+
import { getTerminalSandboxRuntimeConfigurationForCommands } from './terminalSandboxRuntimeConfigurationPerOperation.js';
|
|
36
38
|
|
|
37
39
|
var TerminalSandboxService_1;
|
|
38
40
|
let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
@@ -77,8 +79,10 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
77
79
|
this._srtPathResolved = false;
|
|
78
80
|
this._needsForceUpdateConfigFile = true;
|
|
79
81
|
this._remoteEnvDetails = null;
|
|
82
|
+
this._commandAllowListKeywords = [];
|
|
83
|
+
this._commandAllowListCommandDetails = [];
|
|
80
84
|
this._os = OS;
|
|
81
|
-
this._defaultWritePaths = [
|
|
85
|
+
this._defaultWritePaths = [];
|
|
82
86
|
this._pathJoin = (...segments) => {
|
|
83
87
|
const path = this._os === OperatingSystem.Windows ? win32 : posix;
|
|
84
88
|
return path.join(...segments);
|
|
@@ -104,7 +108,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
104
108
|
}
|
|
105
109
|
e.join(this._cleanupSandboxTempDir(), {
|
|
106
110
|
id: "join.deleteFilesInSandboxTempDir",
|
|
107
|
-
label: ( localize(
|
|
111
|
+
label: ( localize(14495, "Delete Files in Sandbox Temp Dir")),
|
|
108
112
|
order: WillShutdownJoinerOrder.Default
|
|
109
113
|
});
|
|
110
114
|
}));
|
|
@@ -112,20 +116,44 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
112
116
|
async isEnabled() {
|
|
113
117
|
return await this._isSandboxConfiguredEnabled();
|
|
114
118
|
}
|
|
119
|
+
async isSandboxAllowNetworkEnabled() {
|
|
120
|
+
if (!(await this._isSandboxConfiguredEnabled())) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return this._isSandboxAllowNetworkConfigured();
|
|
124
|
+
}
|
|
115
125
|
async getOS() {
|
|
116
126
|
this._remoteEnvDetails = await this._remoteEnvDetailsPromise;
|
|
117
127
|
this._os = this._remoteEnvDetails ? this._remoteEnvDetails.os : OS;
|
|
118
128
|
return this._os;
|
|
119
129
|
}
|
|
120
|
-
wrapCommand(command, requestUnsandboxedExecution, shell) {
|
|
130
|
+
async wrapCommand(command, requestUnsandboxedExecution, shell, cwd, commandDetails) {
|
|
131
|
+
const normalizedCommandDetails = this._normalizeCommandDetails(commandDetails ?? []);
|
|
132
|
+
const normalizedCommandKeywords = this._normalizeCommandKeywords(( normalizedCommandDetails.map(command => command.keyword)));
|
|
133
|
+
const currentReadAllowListPaths = getTerminalSandboxReadAllowListForCommands(
|
|
134
|
+
this._os,
|
|
135
|
+
this._commandAllowListKeywords,
|
|
136
|
+
this._commandAllowListCommandDetails
|
|
137
|
+
);
|
|
138
|
+
const nextReadAllowListPaths = getTerminalSandboxReadAllowListForCommands(this._os, normalizedCommandKeywords, normalizedCommandDetails);
|
|
139
|
+
const currentRuntimeConfiguration = getTerminalSandboxRuntimeConfigurationForCommands(this._os, this._commandAllowListCommandDetails);
|
|
140
|
+
const nextRuntimeConfiguration = getTerminalSandboxRuntimeConfigurationForCommands(this._os, normalizedCommandDetails);
|
|
141
|
+
const shouldRefreshConfig = this._commandAllowListKeywords.length === 0 || this._needsForceUpdateConfigFile || !this._areStringArraysEqual(this._commandAllowListKeywords, normalizedCommandKeywords) || !this._areStringArraysEqual(currentReadAllowListPaths, nextReadAllowListPaths) || !this._areObjectsEqual(currentRuntimeConfiguration, nextRuntimeConfiguration) || this._commandCwd?.toString() !== cwd?.toString();
|
|
142
|
+
if (shouldRefreshConfig) {
|
|
143
|
+
this._commandAllowListKeywords = normalizedCommandKeywords;
|
|
144
|
+
this._commandAllowListCommandDetails = normalizedCommandDetails;
|
|
145
|
+
this._commandCwd = cwd;
|
|
146
|
+
await this.getSandboxConfigPath(true);
|
|
147
|
+
}
|
|
121
148
|
if (!this._sandboxConfigPath || !this._tempDir) {
|
|
122
149
|
throw ( new Error("Sandbox config path or temp dir not initialized"));
|
|
123
150
|
}
|
|
124
|
-
const
|
|
151
|
+
const allowUnsandboxedCommands = this._areUnsandboxedCommandsAllowed();
|
|
152
|
+
const blockedDomainResult = requestUnsandboxedExecution || !allowUnsandboxedCommands ? {
|
|
125
153
|
blockedDomains: [],
|
|
126
154
|
deniedDomains: []
|
|
127
155
|
} : this._getBlockedDomains(command);
|
|
128
|
-
if (!requestUnsandboxedExecution && blockedDomainResult.blockedDomains.length > 0) {
|
|
156
|
+
if (!requestUnsandboxedExecution && allowUnsandboxedCommands && blockedDomainResult.blockedDomains.length > 0) {
|
|
129
157
|
return {
|
|
130
158
|
command: this._wrapUnsandboxedCommand(command, shell),
|
|
131
159
|
isSandboxWrapped: false,
|
|
@@ -134,7 +162,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
134
162
|
requiresUnsandboxConfirmation: true
|
|
135
163
|
};
|
|
136
164
|
}
|
|
137
|
-
if (requestUnsandboxedExecution) {
|
|
165
|
+
if (requestUnsandboxedExecution && allowUnsandboxedCommands) {
|
|
138
166
|
return {
|
|
139
167
|
command: this._wrapUnsandboxedCommand(command, shell),
|
|
140
168
|
isSandboxWrapped: false
|
|
@@ -149,15 +177,18 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
149
177
|
if (!this._rgPath) {
|
|
150
178
|
throw ( new Error("Ripgrep path not resolved"));
|
|
151
179
|
}
|
|
152
|
-
const
|
|
180
|
+
const commandToRunInSandbox = this._getSandboxCommandWithPreservedCwd(command, cwd);
|
|
181
|
+
const sandboxRuntimeCommand = `PATH="$PATH:${dirname(this._rgPath)}" TMPDIR="${this._tempDir.path}" CLAUDE_TMPDIR="${this._tempDir.path}" "${this._execPath}" "${this._srtPath}" --settings "${this._sandboxConfigPath}" -c ${this._quoteShellArgument(commandToRunInSandbox)}`;
|
|
182
|
+
const nodeSandboxRuntimeCommand = `ELECTRON_RUN_AS_NODE=1 ${sandboxRuntimeCommand}`;
|
|
183
|
+
const wrappedCommand = this._wrapSandboxRuntimeCommandForLaunch(nodeSandboxRuntimeCommand, cwd);
|
|
153
184
|
if (this._remoteEnvDetails) {
|
|
154
185
|
return {
|
|
155
|
-
command:
|
|
186
|
+
command: this._wrapSandboxRuntimeCommandForLaunch(sandboxRuntimeCommand, cwd),
|
|
156
187
|
isSandboxWrapped: true
|
|
157
188
|
};
|
|
158
189
|
}
|
|
159
190
|
return {
|
|
160
|
-
command:
|
|
191
|
+
command: wrappedCommand,
|
|
161
192
|
isSandboxWrapped: true
|
|
162
193
|
};
|
|
163
194
|
}
|
|
@@ -298,10 +329,10 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
298
329
|
if (!request) {
|
|
299
330
|
return ( new DisposableStore());
|
|
300
331
|
}
|
|
301
|
-
const part = ( new ChatElicitationRequestPart(( localize(
|
|
302
|
-
|
|
332
|
+
const part = ( new ChatElicitationRequestPart(( localize(14496, "The terminal is awaiting input.")), ( new MarkdownString(( localize(
|
|
333
|
+
14497,
|
|
303
334
|
"Installing missing sandbox dependencies may prompt for your sudo password. Select Focus Terminal to type it in the terminal."
|
|
304
|
-
)))), "", ( localize(
|
|
335
|
+
)))), "", ( localize(14498, "Focus Terminal")), undefined, async () => {
|
|
305
336
|
await promptContext.focusTerminal();
|
|
306
337
|
return ElicitationState.Pending;
|
|
307
338
|
}));
|
|
@@ -323,6 +354,16 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
323
354
|
_quoteShellArgument(value) {
|
|
324
355
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
325
356
|
}
|
|
357
|
+
_getSandboxCommandWithPreservedCwd(command, cwd) {
|
|
358
|
+
if (this._os !== OperatingSystem.Linux || !cwd?.path || cwd.path === this._tempDir?.path) {
|
|
359
|
+
return command;
|
|
360
|
+
}
|
|
361
|
+
return `cd ${this._quoteShellArgument(cwd.path)} && ${command}`;
|
|
362
|
+
}
|
|
363
|
+
_wrapSandboxRuntimeCommandForLaunch(sandboxRuntimeCommand, cwd) {
|
|
364
|
+
const tempDirPath = this._tempDir?.path;
|
|
365
|
+
return this._os === OperatingSystem.Linux && cwd?.path && tempDirPath && cwd.path !== tempDirPath ? `cd ${this._quoteShellArgument(tempDirPath)}; ${sandboxRuntimeCommand}` : sandboxRuntimeCommand;
|
|
366
|
+
}
|
|
326
367
|
_wrapUnsandboxedCommand(command, shell) {
|
|
327
368
|
if (!this._tempDir?.path) {
|
|
328
369
|
return command;
|
|
@@ -333,6 +374,12 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
333
374
|
return `env TMPDIR="${this._tempDir.path}" ${this._quoteShellArgument(shell)} -c ${this._quoteShellArgument(command)}`;
|
|
334
375
|
}
|
|
335
376
|
_getBlockedDomains(command) {
|
|
377
|
+
if (this._isSandboxAllowNetworkConfigured()) {
|
|
378
|
+
return {
|
|
379
|
+
blockedDomains: [],
|
|
380
|
+
deniedDomains: []
|
|
381
|
+
};
|
|
382
|
+
}
|
|
336
383
|
const domains = this._extractDomains(command);
|
|
337
384
|
if (domains.length === 0) {
|
|
338
385
|
return {
|
|
@@ -395,15 +442,40 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
395
442
|
return undefined;
|
|
396
443
|
}
|
|
397
444
|
}
|
|
445
|
+
_normalizeCommandKeywords(commandKeywords) {
|
|
446
|
+
return [...( new Set(( commandKeywords.map(keyword => keyword.toLowerCase()))))].sort();
|
|
447
|
+
}
|
|
448
|
+
_normalizeCommandDetails(commandDetails) {
|
|
449
|
+
const seen = ( new Set());
|
|
450
|
+
const result = [];
|
|
451
|
+
for (const command of commandDetails) {
|
|
452
|
+
const normalizedCommand = {
|
|
453
|
+
keyword: command.keyword.toLowerCase(),
|
|
454
|
+
args: [...command.args]
|
|
455
|
+
};
|
|
456
|
+
const key = JSON.stringify(normalizedCommand);
|
|
457
|
+
if (!( seen.has(key))) {
|
|
458
|
+
seen.add(key);
|
|
459
|
+
result.push(normalizedCommand);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return result.sort(
|
|
463
|
+
(a, b) => a.keyword.localeCompare(b.keyword) || a.args.join("\u0000").localeCompare(b.args.join("\u0000"))
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
_areStringArraysEqual(a, b) {
|
|
467
|
+
return a.length === b.length && a.every((keyword, index) => keyword === b[index]);
|
|
468
|
+
}
|
|
469
|
+
_areObjectsEqual(a, b) {
|
|
470
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
471
|
+
}
|
|
398
472
|
async _isSandboxConfiguredEnabled() {
|
|
399
473
|
const os = await this.getOS();
|
|
400
474
|
if (os === OperatingSystem.Windows) {
|
|
401
475
|
return false;
|
|
402
476
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
AgentSandboxSettingId.DeprecatedAgentSandboxEnabled
|
|
406
|
-
) ?? AgentSandboxEnabledValue.Off);
|
|
477
|
+
const value = this._getSandboxConfiguredEnabledValue();
|
|
478
|
+
return value === true || value === AgentSandboxEnabledValue.On || value === AgentSandboxEnabledValue.AllowNetwork;
|
|
407
479
|
}
|
|
408
480
|
async _resolveSrtPath() {
|
|
409
481
|
if (this._srtPathResolved) {
|
|
@@ -418,7 +490,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
418
490
|
this._srtPath = this._pathJoin(
|
|
419
491
|
this._appRoot,
|
|
420
492
|
"node_modules",
|
|
421
|
-
"@
|
|
493
|
+
"@vscode",
|
|
422
494
|
"sandbox-runtime",
|
|
423
495
|
"dist",
|
|
424
496
|
"cli.js"
|
|
@@ -430,16 +502,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
430
502
|
await this._initTempDir();
|
|
431
503
|
}
|
|
432
504
|
if (this._tempDir) {
|
|
433
|
-
const
|
|
434
|
-
AgentNetworkDomainSettingId.AllowedNetworkDomains,
|
|
435
|
-
AgentNetworkDomainSettingId.DeprecatedSandboxAllowedNetworkDomains,
|
|
436
|
-
AgentNetworkDomainSettingId.DeprecatedOldAllowedNetworkDomains
|
|
437
|
-
) ?? [];
|
|
438
|
-
const deniedDomainsSetting = this._getSettingValue(
|
|
439
|
-
AgentNetworkDomainSettingId.DeniedNetworkDomains,
|
|
440
|
-
AgentNetworkDomainSettingId.DeprecatedSandboxDeniedNetworkDomains,
|
|
441
|
-
AgentNetworkDomainSettingId.DeprecatedOldDeniedNetworkDomains
|
|
442
|
-
) ?? [];
|
|
505
|
+
const allowNetwork = await this.isSandboxAllowNetworkEnabled();
|
|
443
506
|
const linuxFileSystemSetting = this._os === OperatingSystem.Linux ? this._getSettingValue(
|
|
444
507
|
TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem,
|
|
445
508
|
TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxLinuxFileSystem
|
|
@@ -449,21 +512,53 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
449
512
|
TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxMacFileSystem
|
|
450
513
|
) ?? {} : {};
|
|
451
514
|
const runtimeSetting = this._getSettingValue(TerminalChatAgentToolsSettingId.AgentSandboxAdvancedRuntime) ?? {};
|
|
515
|
+
const commandRuntimeSetting = getTerminalSandboxRuntimeConfigurationForCommands(this._os, this._commandAllowListCommandDetails);
|
|
516
|
+
const commandRuntimeAllowReadPaths = this._getCommandRuntimeFileSystemPaths(commandRuntimeSetting, "allowRead");
|
|
517
|
+
const commandRuntimeAllowWritePaths = this._getCommandRuntimeFileSystemPaths(commandRuntimeSetting, "allowWrite");
|
|
452
518
|
const configFileUri = URI.joinPath(this._tempDir, `vscode-sandbox-settings-${this._sandboxSettingsId}.json`);
|
|
453
|
-
|
|
454
|
-
|
|
519
|
+
let allowWritePaths = [];
|
|
520
|
+
let allowReadPaths = [];
|
|
521
|
+
let denyReadPaths = [];
|
|
522
|
+
let denyWritePaths;
|
|
523
|
+
if (this._os === OperatingSystem.Macintosh) {
|
|
524
|
+
allowWritePaths = this._updateAllowWritePathsWithWorkspaceFolders(macFileSystemSetting.allowWrite, commandRuntimeAllowWritePaths);
|
|
525
|
+
allowReadPaths = this._updateAllowReadPathsWithAllowWrite(
|
|
526
|
+
macFileSystemSetting.allowRead,
|
|
527
|
+
allowWritePaths,
|
|
528
|
+
commandRuntimeAllowReadPaths
|
|
529
|
+
);
|
|
530
|
+
denyReadPaths = this._updateDenyReadPathsWithHome(macFileSystemSetting.denyRead);
|
|
531
|
+
denyWritePaths = macFileSystemSetting.denyWrite;
|
|
532
|
+
} else if (this._os === OperatingSystem.Linux) {
|
|
533
|
+
allowWritePaths = this._resolveLinuxFileSystemPaths(
|
|
534
|
+
this._updateAllowWritePathsWithWorkspaceFolders(linuxFileSystemSetting.allowWrite, commandRuntimeAllowWritePaths)
|
|
535
|
+
);
|
|
536
|
+
allowReadPaths = this._resolveLinuxFileSystemPaths(this._updateAllowReadPathsWithAllowWrite(
|
|
537
|
+
linuxFileSystemSetting.allowRead,
|
|
538
|
+
allowWritePaths,
|
|
539
|
+
commandRuntimeAllowReadPaths
|
|
540
|
+
));
|
|
541
|
+
denyReadPaths = this._resolveLinuxFileSystemPaths(this._updateDenyReadPathsWithHome(linuxFileSystemSetting.denyRead));
|
|
542
|
+
denyWritePaths = this._resolveLinuxFileSystemPaths(linuxFileSystemSetting.denyWrite);
|
|
543
|
+
}
|
|
455
544
|
const sandboxSettings = {
|
|
456
|
-
network: {
|
|
457
|
-
allowedDomains:
|
|
458
|
-
deniedDomains:
|
|
459
|
-
|
|
545
|
+
network: allowNetwork ? {
|
|
546
|
+
allowedDomains: [],
|
|
547
|
+
deniedDomains: [],
|
|
548
|
+
enabled: false
|
|
549
|
+
} : this.getResolvedNetworkDomains(),
|
|
460
550
|
filesystem: {
|
|
461
|
-
denyRead:
|
|
462
|
-
|
|
463
|
-
|
|
551
|
+
denyRead: denyReadPaths,
|
|
552
|
+
allowRead: allowReadPaths,
|
|
553
|
+
allowWrite: allowWritePaths,
|
|
554
|
+
denyWrite: denyWritePaths
|
|
464
555
|
}
|
|
465
556
|
};
|
|
466
|
-
this._mergeAdditionalSandboxConfigProperties(
|
|
557
|
+
this._mergeAdditionalSandboxConfigProperties(
|
|
558
|
+
sandboxSettings,
|
|
559
|
+
allowNetwork ? this._withoutNetworkRuntimeSetting(runtimeSetting) : runtimeSetting
|
|
560
|
+
);
|
|
561
|
+
this._mergeAdditionalSandboxConfigProperties(sandboxSettings, commandRuntimeSetting);
|
|
467
562
|
this._sandboxConfigPath = configFileUri.path;
|
|
468
563
|
await this._fileService.createFile(
|
|
469
564
|
configFileUri,
|
|
@@ -476,6 +571,24 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
476
571
|
}
|
|
477
572
|
return undefined;
|
|
478
573
|
}
|
|
574
|
+
_getCommandRuntimeFileSystemPaths(runtimeSetting, key) {
|
|
575
|
+
const filesystem = runtimeSetting.filesystem;
|
|
576
|
+
if (!this._isObjectForSandboxConfigMerge(filesystem)) {
|
|
577
|
+
return [];
|
|
578
|
+
}
|
|
579
|
+
const paths = filesystem[key];
|
|
580
|
+
if (!Array.isArray(paths)) {
|
|
581
|
+
return [];
|
|
582
|
+
}
|
|
583
|
+
return paths.filter(path => typeof path === "string");
|
|
584
|
+
}
|
|
585
|
+
_withoutNetworkRuntimeSetting(runtimeSetting) {
|
|
586
|
+
const sanitizedRuntimeSetting = {
|
|
587
|
+
...runtimeSetting
|
|
588
|
+
};
|
|
589
|
+
delete sanitizedRuntimeSetting.network;
|
|
590
|
+
return sanitizedRuntimeSetting;
|
|
591
|
+
}
|
|
479
592
|
_mergeAdditionalSandboxConfigProperties(target, additional) {
|
|
480
593
|
for (const [key, value] of Object.entries(additional)) {
|
|
481
594
|
if (!Object.prototype.hasOwnProperty.call(target, key)) {
|
|
@@ -562,14 +675,74 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
562
675
|
deniedDomains
|
|
563
676
|
};
|
|
564
677
|
}
|
|
565
|
-
_updateAllowWritePathsWithWorkspaceFolders(configuredAllowWrite) {
|
|
678
|
+
_updateAllowWritePathsWithWorkspaceFolders(configuredAllowWrite, commandRuntimeAllowWrite = []) {
|
|
566
679
|
const workspaceFolderPaths = ( this._workspaceContextService.getWorkspace().folders.map(folder => folder.uri.path));
|
|
567
680
|
return [...( new Set([
|
|
568
681
|
...workspaceFolderPaths,
|
|
569
682
|
...this._defaultWritePaths,
|
|
570
|
-
...(configuredAllowWrite ?? [])
|
|
683
|
+
...(configuredAllowWrite ?? []),
|
|
684
|
+
...commandRuntimeAllowWrite
|
|
571
685
|
]))];
|
|
572
686
|
}
|
|
687
|
+
_updateDenyReadPathsWithHome(configuredDenyRead) {
|
|
688
|
+
const userHome = this._getUserHomePath();
|
|
689
|
+
return [...( new Set([...(configuredDenyRead ?? []), ...(userHome ? [userHome] : [])]))];
|
|
690
|
+
}
|
|
691
|
+
_updateAllowReadPathsWithAllowWrite(configuredAllowRead, allowWrite, commandRuntimeAllowRead = []) {
|
|
692
|
+
return [...( new Set([
|
|
693
|
+
...(configuredAllowRead ?? []),
|
|
694
|
+
...getTerminalSandboxReadAllowListForCommands(
|
|
695
|
+
this._os,
|
|
696
|
+
this._commandAllowListKeywords,
|
|
697
|
+
this._commandAllowListCommandDetails
|
|
698
|
+
),
|
|
699
|
+
...commandRuntimeAllowRead,
|
|
700
|
+
...this._getSandboxRuntimeReadPaths(),
|
|
701
|
+
...this._getWorkspaceStorageReadPaths(),
|
|
702
|
+
...allowWrite
|
|
703
|
+
]))];
|
|
704
|
+
}
|
|
705
|
+
_resolveLinuxFileSystemPaths(paths) {
|
|
706
|
+
return ( (paths ?? []).map(path => this._expandHomePath(path)));
|
|
707
|
+
}
|
|
708
|
+
_expandHomePath(path) {
|
|
709
|
+
const userHome = this._getUserHomePath();
|
|
710
|
+
if (!userHome) {
|
|
711
|
+
return path;
|
|
712
|
+
}
|
|
713
|
+
if (path === "~") {
|
|
714
|
+
return userHome;
|
|
715
|
+
}
|
|
716
|
+
if (path.startsWith("~/")) {
|
|
717
|
+
return this._pathJoin(userHome, path.slice(2));
|
|
718
|
+
}
|
|
719
|
+
return path;
|
|
720
|
+
}
|
|
721
|
+
_getSandboxRuntimeReadPaths() {
|
|
722
|
+
const paths = [this._appRoot];
|
|
723
|
+
if (this._execPath) {
|
|
724
|
+
for (const path of [this._execPath, dirname(this._execPath)]) {
|
|
725
|
+
if (!this._isPathUnderAppRoot(path)) {
|
|
726
|
+
paths.push(path);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
return paths;
|
|
731
|
+
}
|
|
732
|
+
_isPathUnderAppRoot(path) {
|
|
733
|
+
return path === this._appRoot || path.startsWith(
|
|
734
|
+
`${this._appRoot}${this._os === OperatingSystem.Windows ? win32.sep : posix.sep}`
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
_getWorkspaceStorageReadPaths() {
|
|
738
|
+
const workspaceStorageHome = this._remoteEnvDetails?.workspaceStorageHome ?? this._environmentService.workspaceStorageHome;
|
|
739
|
+
const workspaceId = this._workspaceContextService.getWorkspace().id;
|
|
740
|
+
return [URI.joinPath(workspaceStorageHome, workspaceId).path];
|
|
741
|
+
}
|
|
742
|
+
_getUserHomePath() {
|
|
743
|
+
const nativeEnv = this._environmentService;
|
|
744
|
+
return this._remoteEnvDetails?.userHome?.path ?? nativeEnv.userHome?.path;
|
|
745
|
+
}
|
|
573
746
|
async _resolveSandboxDependencyStatus(forceRefresh = false) {
|
|
574
747
|
if (!forceRefresh && this._sandboxDependencyStatus) {
|
|
575
748
|
return this._sandboxDependencyStatus;
|
|
@@ -583,21 +756,33 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
|
|
|
583
756
|
}
|
|
584
757
|
return this._sandboxHelperService.checkSandboxDependencies();
|
|
585
758
|
}
|
|
586
|
-
|
|
587
|
-
return
|
|
759
|
+
_getSandboxConfiguredEnabledValue() {
|
|
760
|
+
return this._getSettingValue(
|
|
761
|
+
AgentSandboxSettingId.AgentSandboxEnabled,
|
|
762
|
+
AgentSandboxSettingId.DeprecatedAgentSandboxEnabled
|
|
763
|
+
) ?? AgentSandboxEnabledValue.Off;
|
|
764
|
+
}
|
|
765
|
+
_isSandboxAllowNetworkConfigured() {
|
|
766
|
+
return this._getSandboxConfiguredEnabledValue() === AgentSandboxEnabledValue.AllowNetwork;
|
|
767
|
+
}
|
|
768
|
+
_areUnsandboxedCommandsAllowed() {
|
|
769
|
+
return this._getSettingValue(AgentSandboxSettingId.AgentSandboxAllowUnsandboxedCommands) === true;
|
|
588
770
|
}
|
|
589
771
|
_getSettingValue(settingId, ...deprecatedSettingIds) {
|
|
590
772
|
const setting = this._configurationService.inspect(settingId);
|
|
591
773
|
if (setting.userValue !== undefined) {
|
|
592
774
|
return setting.value;
|
|
593
775
|
}
|
|
594
|
-
|
|
595
|
-
const
|
|
596
|
-
|
|
597
|
-
this.
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
776
|
+
if (deprecatedSettingIds.length > 0) {
|
|
777
|
+
const userConfiguredKeys = ( this._configurationService.keys()).user;
|
|
778
|
+
for (const deprecatedId of deprecatedSettingIds) {
|
|
779
|
+
const deprecated = this._configurationService.inspect(deprecatedId);
|
|
780
|
+
if (deprecated.userValue !== undefined && userConfiguredKeys.includes(deprecatedId)) {
|
|
781
|
+
this._logService.warn(
|
|
782
|
+
`TerminalSandboxService: Using deprecated setting ${deprecatedId} because ${settingId} is not set. Please update your settings to use ${settingId} instead.`
|
|
783
|
+
);
|
|
784
|
+
return deprecated.value;
|
|
785
|
+
}
|
|
601
786
|
}
|
|
602
787
|
}
|
|
603
788
|
return setting.value;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ActionBar, IActionBarOptions } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar";
|
|
2
|
-
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
3
|
-
export interface IWorkbenchActionBarOptions extends IActionBarOptions {
|
|
4
|
-
/**
|
|
5
|
-
* When set the `workbenchActionExecuted` is automatically sent for each invoked action. The `from` property
|
|
6
|
-
* of the event will be the passed `telemetrySource`-value.
|
|
7
|
-
*/
|
|
8
|
-
telemetrySource?: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A {@link ActionBar action bar} that automatically sends `workbenchActionExecuted` telemetry
|
|
12
|
-
* events for each invoked action, like {@link import('./toolbar.js').WorkbenchToolBar WorkbenchToolBar} does.
|
|
13
|
-
*/
|
|
14
|
-
export declare class WorkbenchActionBar extends ActionBar {
|
|
15
|
-
constructor(container: HTMLElement, options: IWorkbenchActionBarOptions, telemetryService: ITelemetryService);
|
|
16
|
-
}
|