@codingame/monaco-vscode-katex-common 31.0.1 → 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
|
-
import { h,
|
|
3
|
+
import { h, AnimationFrameScheduler, DisposableResizeObserver, hide, addDisposableListener, isHTMLElement, setVisibility, show, clearNode, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
4
|
import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
|
|
5
5
|
import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
|
|
6
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
@@ -8,6 +8,7 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
|
|
|
8
8
|
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
9
9
|
import { Disposable, DisposableStore, toDisposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
10
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
11
|
+
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
11
12
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
13
|
import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
13
14
|
import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
@@ -16,7 +17,10 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
|
|
|
16
17
|
|
|
17
18
|
registerCss(chatToolConfirmationCarousel);
|
|
18
19
|
const COLLAPSED_CAROUSEL_MAX_HEIGHT = 300;
|
|
20
|
+
const COLLAPSED_MESSAGE_MAX_HEIGHT = 200;
|
|
21
|
+
const COLLAPSED_CODE_BLOCK_MAX_HEIGHT = 150;
|
|
19
22
|
const MIN_CAROUSEL_MAX_HEIGHT = 80;
|
|
23
|
+
const EXPANDABLE_CONTENT_SELECTOR = ".interactive-result-editor, .chat-markdown-part.rendered-markdown";
|
|
20
24
|
class ChatToolConfirmationCarouselPart extends Disposable {
|
|
21
25
|
constructor(
|
|
22
26
|
toolPartFactory,
|
|
@@ -35,6 +39,8 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
35
39
|
this.items = [];
|
|
36
40
|
this.toolCallIds = ( new Set());
|
|
37
41
|
this.activeIndex = 0;
|
|
42
|
+
this._isContentExpanded = false;
|
|
43
|
+
this.canExpandContent = false;
|
|
38
44
|
const elements = h(".chat-tool-confirmation-carousel@root", [h(
|
|
39
45
|
".chat-tool-carousel-overlay@overlay",
|
|
40
46
|
[h(".chat-tool-carousel-title-group@titleGroup", [
|
|
@@ -48,19 +54,41 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
48
54
|
this.domNode = elements.root;
|
|
49
55
|
this.domNode.tabIndex = -1;
|
|
50
56
|
this.domNode.setAttribute("role", "group");
|
|
51
|
-
this.domNode.setAttribute("aria-label", ( localize(
|
|
57
|
+
this.domNode.setAttribute("aria-label", ( localize(7353, "Tool confirmation carousel")));
|
|
52
58
|
this.collapsedTitle = elements.collapsedTitle;
|
|
53
59
|
this.agentLabel = elements.agentLabel;
|
|
54
60
|
this.contentContainer = elements.content;
|
|
61
|
+
this.contentContainer.id = generateUuid();
|
|
55
62
|
this.stepIndicator = elements.stepIndicator;
|
|
56
63
|
this.activeContentDisposables = this._register(( new DisposableStore()));
|
|
64
|
+
this.updateContentExpansionStateScheduler = this._register(
|
|
65
|
+
new AnimationFrameScheduler(this.domNode, () => this.updateContentExpansionState())
|
|
66
|
+
);
|
|
67
|
+
this.contentResizeObserver = this._register(new DisposableResizeObserver(
|
|
68
|
+
"ChatToolConfirmationCarouselPart.contentExpansion",
|
|
69
|
+
() => this.updateContentExpansionStateScheduler.schedule()
|
|
70
|
+
));
|
|
71
|
+
this._register(this.contentResizeObserver.observe(this.contentContainer));
|
|
57
72
|
this.allowAllButton = this._register(( new Button(elements.overlayActions, {
|
|
58
73
|
...defaultButtonStyles,
|
|
59
74
|
small: true
|
|
60
75
|
})));
|
|
61
76
|
this.allowAllButton.element.classList.add("chat-tool-carousel-allow-all-button");
|
|
62
|
-
this.allowAllButton.label = ( localize(
|
|
77
|
+
this.allowAllButton.label = ( localize(7354, "Allow All"));
|
|
63
78
|
this._register(this.allowAllButton.onDidClick(() => this.allowAll()));
|
|
79
|
+
this.expandContentButton = this._register(( new Button(elements.overlayActions, {
|
|
80
|
+
...defaultButtonStyles,
|
|
81
|
+
secondary: true,
|
|
82
|
+
supportIcons: true
|
|
83
|
+
})));
|
|
84
|
+
this.expandContentButton.element.classList.add(
|
|
85
|
+
"chat-tool-carousel-header-button",
|
|
86
|
+
"chat-tool-carousel-expand-content-button"
|
|
87
|
+
);
|
|
88
|
+
this.expandContentButton.element.setAttribute("aria-controls", this.contentContainer.id);
|
|
89
|
+
this.updateExpandContentButton();
|
|
90
|
+
hide(this.expandContentButton.element);
|
|
91
|
+
this._register(this.expandContentButton.onDidClick(() => this.toggleContentExpanded()));
|
|
64
92
|
this.dismissButton = this._register(( new Button(elements.overlayActions, {
|
|
65
93
|
...defaultButtonStyles,
|
|
66
94
|
secondary: true,
|
|
@@ -68,7 +96,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
68
96
|
})));
|
|
69
97
|
this.dismissButton.element.classList.add("chat-tool-carousel-dismiss-button");
|
|
70
98
|
this.dismissButton.label = `$(${Codicon.close.id})`;
|
|
71
|
-
const dismissButtonLabel = this.items.length === 1 ? ( localize(
|
|
99
|
+
const dismissButtonLabel = this.items.length === 1 ? ( localize(7355, "Skip")) : ( localize(7356, "Skip All"));
|
|
72
100
|
this.dismissButton.element.setAttribute("aria-label", dismissButtonLabel);
|
|
73
101
|
this.dismissButton.element.title = dismissButtonLabel;
|
|
74
102
|
this._register(this.dismissButton.onDidClick(() => this.skipAll()));
|
|
@@ -79,7 +107,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
79
107
|
})));
|
|
80
108
|
this.prevButton.element.classList.add("chat-tool-carousel-nav-arrow");
|
|
81
109
|
this.prevButton.label = `$(${Codicon.chevronLeft.id})`;
|
|
82
|
-
this.prevButton.element.setAttribute("aria-label", ( localize(
|
|
110
|
+
this.prevButton.element.setAttribute("aria-label", ( localize(7357, "Previous")));
|
|
83
111
|
this._register(this.prevButton.onDidClick(() => this.navigateRelative(-1)));
|
|
84
112
|
this.nextButton = this._register(( new Button(elements.navArrows, {
|
|
85
113
|
...defaultButtonStyles,
|
|
@@ -88,7 +116,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
88
116
|
})));
|
|
89
117
|
this.nextButton.element.classList.add("chat-tool-carousel-nav-arrow");
|
|
90
118
|
this.nextButton.label = `$(${Codicon.chevronRight.id})`;
|
|
91
|
-
this.nextButton.element.setAttribute("aria-label", ( localize(
|
|
119
|
+
this.nextButton.element.setAttribute("aria-label", ( localize(7358, "Next")));
|
|
92
120
|
this._register(this.nextButton.onDidClick(() => this.navigateRelative(1)));
|
|
93
121
|
this._register(addDisposableListener(this.agentLabel, "click", e => {
|
|
94
122
|
e.preventDefault();
|
|
@@ -109,7 +137,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
109
137
|
}
|
|
110
138
|
setMaxHeight(maxHeight) {
|
|
111
139
|
this.maxHeight = maxHeight;
|
|
112
|
-
this.
|
|
140
|
+
this.updateContentExpansionState();
|
|
113
141
|
}
|
|
114
142
|
hasToolInvocation(toolCallId) {
|
|
115
143
|
return ( this.toolCallIds.has(toolCallId));
|
|
@@ -280,7 +308,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
280
308
|
if (item?.agentName) {
|
|
281
309
|
this.agentLabel.textContent = `\u2014 ${item.agentName}`;
|
|
282
310
|
this.agentLabel.disabled = !item.subAgentInvocationId || !item.scrollToSubagent;
|
|
283
|
-
this.agentLabel.title = ( localize(
|
|
311
|
+
this.agentLabel.title = ( localize(7359, "Scroll to {0}", item.agentName));
|
|
284
312
|
this.agentLabel.setAttribute("aria-label", this.agentLabel.title);
|
|
285
313
|
show(this.agentLabel);
|
|
286
314
|
} else {
|
|
@@ -297,13 +325,18 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
297
325
|
setVisibility(multi, this.prevButton.element);
|
|
298
326
|
setVisibility(multi, this.nextButton.element);
|
|
299
327
|
setVisibility(multi, this.allowAllButton.element);
|
|
300
|
-
this.
|
|
328
|
+
setVisibility(this.canExpandContent, this.expandContentButton.element);
|
|
329
|
+
this.allowAllButton.label = multi ? ( localize(7354, "Allow All")) : ( localize(7360, "Allow"));
|
|
330
|
+
this.updateExpandContentButton();
|
|
301
331
|
}
|
|
302
332
|
renderActiveContent() {
|
|
303
333
|
clearNode(this.contentContainer);
|
|
304
334
|
this.activeContentDisposables.clear();
|
|
335
|
+
this._isContentExpanded = false;
|
|
336
|
+
this.canExpandContent = false;
|
|
305
337
|
const item = this.items[this.activeIndex];
|
|
306
338
|
if (!item) {
|
|
339
|
+
this.updateContentExpansionState();
|
|
307
340
|
return;
|
|
308
341
|
}
|
|
309
342
|
if (!item.toolPart) {
|
|
@@ -313,15 +346,91 @@ class ChatToolConfirmationCarouselPart extends Disposable {
|
|
|
313
346
|
}
|
|
314
347
|
}
|
|
315
348
|
this.contentContainer.appendChild(item.toolPart.domNode);
|
|
349
|
+
this.activeContentDisposables.add(this.contentResizeObserver.observe(item.toolPart.domNode));
|
|
350
|
+
this.observeExpandableContentElements(item.toolPart.domNode);
|
|
351
|
+
this.updateContentExpansionStateScheduler.schedule();
|
|
352
|
+
}
|
|
353
|
+
toggleContentExpanded() {
|
|
354
|
+
if (!this.canExpandContent) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
this._isContentExpanded = !this._isContentExpanded;
|
|
358
|
+
this.updateContentExpansionState();
|
|
359
|
+
}
|
|
360
|
+
updateContentExpansionState() {
|
|
361
|
+
this.canExpandContent = this.items.length > 0 && this.isActiveContentLargerThanCollapsedLimit();
|
|
362
|
+
if (!this.canExpandContent) {
|
|
363
|
+
this._isContentExpanded = false;
|
|
364
|
+
}
|
|
365
|
+
this.domNode.classList.toggle(
|
|
366
|
+
"chat-tool-carousel-content-expanded",
|
|
367
|
+
this.canExpandContent && this._isContentExpanded
|
|
368
|
+
);
|
|
369
|
+
this.updateMaxHeightStyle();
|
|
370
|
+
setVisibility(this.canExpandContent, this.expandContentButton.element);
|
|
371
|
+
this.updateExpandContentButton();
|
|
316
372
|
}
|
|
317
373
|
updateMaxHeightStyle() {
|
|
318
374
|
if (this.maxHeight === undefined) {
|
|
319
375
|
this.domNode.style.removeProperty("max-height");
|
|
320
376
|
return;
|
|
321
377
|
}
|
|
322
|
-
const
|
|
378
|
+
const expanded = this.canExpandContent && this._isContentExpanded;
|
|
379
|
+
const maxHeight = expanded ? Math.max(MIN_CAROUSEL_MAX_HEIGHT, this.maxHeight) : this.getCollapsedMaxHeight();
|
|
323
380
|
this.domNode.style.maxHeight = `${Math.floor(maxHeight)}px`;
|
|
324
381
|
}
|
|
382
|
+
updateExpandContentButton() {
|
|
383
|
+
const expanded = this.canExpandContent && this._isContentExpanded;
|
|
384
|
+
const label = expanded ? ( localize(7361, "Restore Confirmation Size")) : ( localize(7362, "Expand Confirmation Up"));
|
|
385
|
+
this.expandContentButton.label = expanded ? `$(${Codicon.screenNormal.id})` : `$(${Codicon.screenFull.id})`;
|
|
386
|
+
this.expandContentButton.element.setAttribute("aria-label", label);
|
|
387
|
+
this.expandContentButton.element.setAttribute("aria-expanded", String(expanded));
|
|
388
|
+
this.expandContentButton.setTitle(label);
|
|
389
|
+
}
|
|
390
|
+
isActiveContentLargerThanCollapsedLimit() {
|
|
391
|
+
const activeContent = this.contentContainer.firstElementChild;
|
|
392
|
+
if (!isHTMLElement(activeContent)) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
return this.hasInnerContentLargerThanCollapsedLimit(activeContent);
|
|
396
|
+
}
|
|
397
|
+
hasInnerContentLargerThanCollapsedLimit(element) {
|
|
398
|
+
if (this.isExpandableContentElement(element) && this.getElementHeight(element) > this.getExpandableContentHeightLimit(element) + 1) {
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
401
|
+
for (const child of element.children) {
|
|
402
|
+
if (!isHTMLElement(child)) {
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
if (this.hasInnerContentLargerThanCollapsedLimit(child)) {
|
|
406
|
+
return true;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return false;
|
|
410
|
+
}
|
|
411
|
+
isExpandableContentElement(element) {
|
|
412
|
+
return element.matches(EXPANDABLE_CONTENT_SELECTOR);
|
|
413
|
+
}
|
|
414
|
+
observeExpandableContentElements(element) {
|
|
415
|
+
if (this.isExpandableContentElement(element)) {
|
|
416
|
+
this.activeContentDisposables.add(this.contentResizeObserver.observe(element));
|
|
417
|
+
}
|
|
418
|
+
for (const child of element.children) {
|
|
419
|
+
if (isHTMLElement(child)) {
|
|
420
|
+
this.observeExpandableContentElements(child);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
getElementHeight(element) {
|
|
425
|
+
return Math.max(element.offsetHeight, element.scrollHeight);
|
|
426
|
+
}
|
|
427
|
+
getExpandableContentHeightLimit(element) {
|
|
428
|
+
const window = getWindow(this.domNode);
|
|
429
|
+
if (element.classList.contains("interactive-result-editor")) {
|
|
430
|
+
return Math.min(COLLAPSED_CODE_BLOCK_MAX_HEIGHT, window.innerHeight * 0.25);
|
|
431
|
+
}
|
|
432
|
+
return Math.min(COLLAPSED_MESSAGE_MAX_HEIGHT, window.innerHeight * 0.3);
|
|
433
|
+
}
|
|
325
434
|
getCollapsedMaxHeight() {
|
|
326
435
|
const configuredMaxHeight = this.maxHeight === undefined ? Number.POSITIVE_INFINITY : Math.max(MIN_CAROUSEL_MAX_HEIGHT, this.maxHeight);
|
|
327
436
|
return Math.min(
|
|
@@ -78,8 +78,8 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
78
78
|
this.render({
|
|
79
79
|
allowActionId: AcceptToolConfirmationActionId,
|
|
80
80
|
skipActionId: SkipToolConfirmationActionId,
|
|
81
|
-
allowLabel: state.confirmationMessages.confirmResults ? ( localize(
|
|
82
|
-
skipLabel: ( localize(
|
|
81
|
+
allowLabel: state.confirmationMessages.confirmResults ? ( localize(7363, "Allow and Review Once")) : ( localize(7364, "Allow Once")),
|
|
82
|
+
skipLabel: ( localize(7365, "Proceed without running this tool")),
|
|
83
83
|
partType: "chatToolConfirmation",
|
|
84
84
|
subtitle: typeof toolInvocation.originMessage === "string" ? toolInvocation.originMessage : toolInvocation.originMessage?.value
|
|
85
85
|
});
|
|
@@ -125,7 +125,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
125
125
|
}
|
|
126
126
|
if (state.confirmationMessages?.confirmResults) {
|
|
127
127
|
actions.unshift({
|
|
128
|
-
label: ( localize(
|
|
128
|
+
label: ( localize(7366, "Allow and Skip Reviewing Result")),
|
|
129
129
|
data: () => {
|
|
130
130
|
state.confirmationMessages.confirmResults = undefined;
|
|
131
131
|
this.confirmWith(this.toolInvocation, {
|
|
@@ -167,11 +167,11 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
167
167
|
};
|
|
168
168
|
const elements = h("div", [h(".message@messageContainer", [
|
|
169
169
|
h(".message-wrapper@message"),
|
|
170
|
-
h(".see-more@showMore", [h("a", [( localize(
|
|
170
|
+
h(".see-more@showMore", [h("a", [( localize(7367, "Show More"))])])
|
|
171
171
|
]), h(".editor@editor"), h(".disclaimer@disclaimer")]);
|
|
172
172
|
if (toolInvocation.toolSpecificData?.kind === "input" && toolInvocation.toolSpecificData.rawInput && !isEmptyObject(toolInvocation.toolSpecificData.rawInput)) {
|
|
173
173
|
const titleEl = createElement("h3");
|
|
174
|
-
titleEl.textContent = ( localize(
|
|
174
|
+
titleEl.textContent = ( localize(7368, "Input"));
|
|
175
175
|
elements.editor.appendChild(titleEl);
|
|
176
176
|
const inputData = toolInvocation.toolSpecificData;
|
|
177
177
|
const codeBlockRenderOptions = {
|
|
@@ -241,7 +241,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
241
241
|
elements.editor.append(editor.object.element);
|
|
242
242
|
if (canSeeMore) {
|
|
243
243
|
const seeMore = h("div.see-more", [h("a@link")]);
|
|
244
|
-
seeMore.link.textContent = ( localize(
|
|
244
|
+
seeMore.link.textContent = ( localize(7369, "See more"));
|
|
245
245
|
this._register(addDisposableGenericMouseDownListener(seeMore.link, () => {
|
|
246
246
|
try {
|
|
247
247
|
const parsed = JSON.parse(model.getValue());
|
|
@@ -96,7 +96,7 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
|
|
|
96
96
|
this.domNode.appendChild(subPartDomNode);
|
|
97
97
|
const render = () => {
|
|
98
98
|
partStore.clear();
|
|
99
|
-
if (toolInvocation.presentation === ToolInvocationPresentation.HiddenAfterComplete && IChatToolInvocation.isComplete(toolInvocation)) {
|
|
99
|
+
if (toolInvocation.presentation === ToolInvocationPresentation.Hidden || (toolInvocation.presentation === ToolInvocationPresentation.HiddenAfterComplete && IChatToolInvocation.isComplete(toolInvocation))) {
|
|
100
100
|
hide(this.domNode);
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
@@ -75,7 +75,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
|
|
|
75
75
|
partState.webviewOrigin = partState.webviewOrigin;
|
|
76
76
|
}
|
|
77
77
|
const progressMessage = $("span");
|
|
78
|
-
progressMessage.textContent = ( localize(
|
|
78
|
+
progressMessage.textContent = ( localize(7370, "Rendering tool output..."));
|
|
79
79
|
const progressPart = this._register(this.instantiationService.createInstance(
|
|
80
80
|
ChatProgressSubPart,
|
|
81
81
|
progressMessage,
|
|
@@ -125,7 +125,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
|
|
|
125
125
|
iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.error));
|
|
126
126
|
errorHeaderNode.append(iconElement);
|
|
127
127
|
const errorTitleNode = $(".output-error-title");
|
|
128
|
-
errorTitleNode.textContent = ( localize(
|
|
128
|
+
errorTitleNode.textContent = ( localize(7371, "Error rendering the tool output"));
|
|
129
129
|
errorHeaderNode.append(errorTitleNode);
|
|
130
130
|
const errorMessageNode = $(".output-error-details");
|
|
131
131
|
errorMessageNode.textContent = error?.message || String(error);
|
|
@@ -26,20 +26,20 @@ function getApprovalMessageFromReason(reason) {
|
|
|
26
26
|
let md;
|
|
27
27
|
switch (reason.type) {
|
|
28
28
|
case ToolConfirmKind.Setting:
|
|
29
|
-
md = ( localize(
|
|
29
|
+
md = ( localize(7372, "Auto approved by {0}", createMarkdownCommandLink({
|
|
30
30
|
text: "`" + reason.id + "`",
|
|
31
31
|
id: "workbench.action.openSettings",
|
|
32
32
|
arguments: [reason.id],
|
|
33
|
-
tooltip: ( localize(
|
|
33
|
+
tooltip: ( localize(7373, "Open settings"))
|
|
34
34
|
}, false)));
|
|
35
35
|
break;
|
|
36
36
|
case ToolConfirmKind.LmServicePerTool:
|
|
37
|
-
md = reason.scope === "session" ? ( localize(
|
|
37
|
+
md = reason.scope === "session" ? ( localize(7374, "Auto approved for this session")) : reason.scope === "workspace" ? ( localize(7375, "Auto approved for this workspace")) : ( localize(7376, "Auto approved for this profile"));
|
|
38
38
|
md += " (" + createMarkdownCommandLink({
|
|
39
|
-
text: ( localize(
|
|
39
|
+
text: ( localize(7377, "Edit")),
|
|
40
40
|
id: "workbench.action.chat.editToolApproval",
|
|
41
41
|
arguments: [reason.scope],
|
|
42
|
-
tooltip: ( localize(
|
|
42
|
+
tooltip: ( localize(7378, "Edit tool approval settings"))
|
|
43
43
|
}) + ")";
|
|
44
44
|
break;
|
|
45
45
|
case ToolConfirmKind.ConfirmationNotNeeded:
|
|
@@ -46,8 +46,8 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
46
46
|
this.render({
|
|
47
47
|
allowActionId: AcceptToolPostConfirmationActionId,
|
|
48
48
|
skipActionId: SkipToolPostConfirmationActionId,
|
|
49
|
-
allowLabel: ( localize(
|
|
50
|
-
skipLabel: ( localize(
|
|
49
|
+
allowLabel: ( localize(7379, "Allow Once")),
|
|
50
|
+
skipLabel: ( localize(7380, "Skip Results")),
|
|
51
51
|
partType: "chatToolPostConfirmation",
|
|
52
52
|
subtitle: typeof subtitle === "string" ? subtitle : subtitle?.value
|
|
53
53
|
});
|
|
@@ -63,7 +63,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
63
63
|
return this.createResultsDisplay(this.toolInvocation, state.contentForModel);
|
|
64
64
|
}
|
|
65
65
|
getTitle() {
|
|
66
|
-
return localize(
|
|
66
|
+
return localize(7381, "Approve Tool Result");
|
|
67
67
|
}
|
|
68
68
|
additionalPrimaryActions() {
|
|
69
69
|
const actions = super.additionalPrimaryActions();
|
|
@@ -99,7 +99,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
99
99
|
createResultsDisplay(toolInvocation, contentForModel) {
|
|
100
100
|
const container = $(".tool-postconfirm-display");
|
|
101
101
|
if (!contentForModel || contentForModel.length === 0) {
|
|
102
|
-
container.textContent = ( localize(
|
|
102
|
+
container.textContent = ( localize(7382, "No results to display"));
|
|
103
103
|
return container;
|
|
104
104
|
}
|
|
105
105
|
const parts = [];
|
|
@@ -214,7 +214,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
214
214
|
outputSubPart.domNode.classList.add("tool-postconfirm-display");
|
|
215
215
|
return outputSubPart.domNode;
|
|
216
216
|
}
|
|
217
|
-
container.textContent = ( localize(
|
|
217
|
+
container.textContent = ( localize(7383, "No displayable results"));
|
|
218
218
|
return container;
|
|
219
219
|
}
|
|
220
220
|
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
|
|
6
|
+
/* Risk subtitle: a slim row that sits below the main content (e.g. the
|
|
7
|
+
* terminal command box or elicitation message), above the action buttons.
|
|
8
|
+
* Renders an icon at the risk level's accent color followed by the
|
|
9
|
+
* LLM-generated explanation in the regular foreground color. */
|
|
10
|
+
|
|
11
|
+
.chat-confirmation-widget2 > .tool-risk-badge {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
gap: 4px;
|
|
15
|
+
padding: 6px 8px;
|
|
16
|
+
line-height: 1.5;
|
|
17
|
+
color: var(--vscode-foreground);
|
|
18
|
+
border-top: 1px solid var(--vscode-chat-requestBorder);
|
|
19
|
+
background: transparent;
|
|
20
|
+
user-select: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.chat-confirmation-widget2 > .tool-risk-badge .tool-risk-icon {
|
|
24
|
+
flex: 0 0 auto;
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
min-width: 13px;
|
|
29
|
+
font-size: 13px;
|
|
30
|
+
line-height: 1;
|
|
31
|
+
color: var(--tool-risk-accent, var(--vscode-descriptionForeground));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.chat-confirmation-widget2 > .tool-risk-badge.red .tool-risk-icon {
|
|
35
|
+
font-weight: 900;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.chat-confirmation-widget2 > .tool-risk-badge .tool-risk-text {
|
|
39
|
+
min-width: 0;
|
|
40
|
+
flex: 1 1 auto;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
text-overflow: ellipsis;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.chat-confirmation-widget2 > .tool-risk-badge .tool-risk-details-icon {
|
|
47
|
+
flex: 0 0 auto;
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
font-size: 13px;
|
|
52
|
+
line-height: 1;
|
|
53
|
+
color: var(--vscode-descriptionForeground);
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
border-radius: 3px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.chat-confirmation-widget2 > .tool-risk-badge .tool-risk-details-icon:focus {
|
|
59
|
+
outline: 1px solid var(--vscode-focusBorder);
|
|
60
|
+
outline-offset: 1px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.chat-confirmation-widget2 > .tool-risk-badge.loading {
|
|
64
|
+
opacity: 0.7;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.chat-confirmation-widget2 > .tool-risk-badge.green {
|
|
68
|
+
--tool-risk-accent: var(--vscode-charts-green, #388a34);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.chat-confirmation-widget2 > .tool-risk-badge.orange {
|
|
72
|
+
--tool-risk-accent: var(--vscode-editorWarning-foreground, #cca700);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.chat-confirmation-widget2 > .tool-risk-badge.red {
|
|
76
|
+
--tool-risk-accent: var(--vscode-editorError-foreground, #f14c4c);
|
|
77
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
2
|
+
import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
|
|
3
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
|
+
import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
|
|
5
|
+
import { IToolRiskAssessment } from "../../../tools/chatToolRiskAssessmentService.js";
|
|
6
|
+
export declare class ToolRiskBadgeWidget extends Disposable {
|
|
7
|
+
private readonly _hoverService;
|
|
8
|
+
readonly domNode: HTMLElement;
|
|
9
|
+
private readonly _iconEl;
|
|
10
|
+
private readonly _textEl;
|
|
11
|
+
private readonly _detailsIconEl;
|
|
12
|
+
private readonly _hoverStore;
|
|
13
|
+
private readonly _detailsHoverStore;
|
|
14
|
+
private _details;
|
|
15
|
+
private readonly _onDidHide;
|
|
16
|
+
readonly onDidHide: Event<void>;
|
|
17
|
+
constructor(_hoverService: IHoverService);
|
|
18
|
+
setLoading(): void;
|
|
19
|
+
setHidden(): void;
|
|
20
|
+
setAssessment(assessment: IToolRiskAssessment): void;
|
|
21
|
+
/**
|
|
22
|
+
* Provide additional context to surface in the trailing info icon's hover.
|
|
23
|
+
* The hover always notes that the assessment is AI-generated; any details
|
|
24
|
+
* passed here are appended below that note.
|
|
25
|
+
*/
|
|
26
|
+
setDetails(details: IMarkdownString | string | undefined): void;
|
|
27
|
+
/**
|
|
28
|
+
* The markdown content currently shown in the trailing info icon's hover.
|
|
29
|
+
* Exposed so component fixtures can render a preview of the hover content.
|
|
30
|
+
*/
|
|
31
|
+
getDetailsMarkdown(): IMarkdownString;
|
|
32
|
+
private _setVariant;
|
|
33
|
+
private _setIcon;
|
|
34
|
+
private _setText;
|
|
35
|
+
private _setHover;
|
|
36
|
+
private _refreshDetailsHover;
|
|
37
|
+
private _buildDetailsMarkdown;
|
|
38
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
|
|
2
|
+
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
4
|
+
import { $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
5
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
6
|
+
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
7
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
8
|
+
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
10
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
11
|
+
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
12
|
+
import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
|
|
13
|
+
import { ToolRiskLevel } from '../../../tools/chatToolRiskAssessmentService.js';
|
|
14
|
+
import * as toolRiskBadge from './media/toolRiskBadge.css';
|
|
15
|
+
|
|
16
|
+
registerCss(toolRiskBadge);
|
|
17
|
+
const RISK_BADGE_CLASS = "tool-risk-badge";
|
|
18
|
+
let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
|
|
19
|
+
constructor(_hoverService) {
|
|
20
|
+
super();
|
|
21
|
+
this._hoverService = _hoverService;
|
|
22
|
+
this._hoverStore = this._register(( new DisposableStore()));
|
|
23
|
+
this._detailsHoverStore = this._register(( new DisposableStore()));
|
|
24
|
+
this._onDidHide = this._register(( new Emitter()));
|
|
25
|
+
this.onDidHide = this._onDidHide.event;
|
|
26
|
+
this.domNode = $(`span.${RISK_BADGE_CLASS}`);
|
|
27
|
+
this._iconEl = $("span.tool-risk-icon");
|
|
28
|
+
this._textEl = $("span.tool-risk-text");
|
|
29
|
+
this._detailsIconEl = $("span.tool-risk-details-icon");
|
|
30
|
+
this._detailsIconEl.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
|
|
31
|
+
this._detailsIconEl.tabIndex = 0;
|
|
32
|
+
this._detailsIconEl.setAttribute("role", "button");
|
|
33
|
+
this._detailsIconEl.setAttribute("aria-label", ( localize(7384, "Risk assessment details")));
|
|
34
|
+
this.domNode.append(this._iconEl, this._textEl, this._detailsIconEl);
|
|
35
|
+
this._refreshDetailsHover();
|
|
36
|
+
this.setLoading();
|
|
37
|
+
}
|
|
38
|
+
setLoading() {
|
|
39
|
+
this._setVariant("loading");
|
|
40
|
+
this._setIcon(ThemeIcon.modify(Codicon.loading, "spin"));
|
|
41
|
+
const text = ( localize(7385, "Assessing risk…"));
|
|
42
|
+
this._textEl.textContent = text;
|
|
43
|
+
this._setHover(( localize(7386, "Generating a risk assessment for this tool call.")));
|
|
44
|
+
}
|
|
45
|
+
setHidden() {
|
|
46
|
+
this.domNode.style.display = "none";
|
|
47
|
+
this._onDidHide.fire();
|
|
48
|
+
}
|
|
49
|
+
setAssessment(assessment) {
|
|
50
|
+
switch (assessment.risk) {
|
|
51
|
+
case ToolRiskLevel.Green:
|
|
52
|
+
this._setVariant("green");
|
|
53
|
+
this._setIcon(Codicon.pass);
|
|
54
|
+
break;
|
|
55
|
+
case ToolRiskLevel.Orange:
|
|
56
|
+
this._setVariant("orange");
|
|
57
|
+
this._setIcon(Codicon.warning);
|
|
58
|
+
break;
|
|
59
|
+
case ToolRiskLevel.Red:
|
|
60
|
+
this._setVariant("red");
|
|
61
|
+
this._setText("!");
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
this.domNode.style.display = "";
|
|
65
|
+
this._textEl.textContent = assessment.explanation;
|
|
66
|
+
this._setHover(assessment.explanation);
|
|
67
|
+
}
|
|
68
|
+
setDetails(details) {
|
|
69
|
+
this._details = details;
|
|
70
|
+
this._refreshDetailsHover();
|
|
71
|
+
}
|
|
72
|
+
getDetailsMarkdown() {
|
|
73
|
+
return this._buildDetailsMarkdown();
|
|
74
|
+
}
|
|
75
|
+
_setVariant(variant) {
|
|
76
|
+
this.domNode.classList.remove("green", "orange", "red", "loading");
|
|
77
|
+
this.domNode.classList.add(variant);
|
|
78
|
+
}
|
|
79
|
+
_setIcon(icon) {
|
|
80
|
+
this._iconEl.textContent = "";
|
|
81
|
+
this._iconEl.className = "tool-risk-icon " + ThemeIcon.asClassName(icon);
|
|
82
|
+
}
|
|
83
|
+
_setText(text) {
|
|
84
|
+
this._iconEl.className = "tool-risk-icon";
|
|
85
|
+
this._iconEl.textContent = text;
|
|
86
|
+
}
|
|
87
|
+
_setHover(content) {
|
|
88
|
+
this._hoverStore.clear();
|
|
89
|
+
this._hoverStore.add(
|
|
90
|
+
this._hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.domNode, content)
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
_refreshDetailsHover() {
|
|
94
|
+
this._detailsHoverStore.clear();
|
|
95
|
+
const md = this._buildDetailsMarkdown();
|
|
96
|
+
const fallback = md.value.replace(/\$\([^)]+\)\s?/g, "");
|
|
97
|
+
this._detailsHoverStore.add(
|
|
98
|
+
this._hoverService.setupManagedHover(getDefaultHoverDelegate("element"), this._detailsIconEl, {
|
|
99
|
+
markdown: md,
|
|
100
|
+
markdownNotSupportedFallback: fallback
|
|
101
|
+
})
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
_buildDetailsMarkdown() {
|
|
105
|
+
const aiNote = ( localize(7387, "Risk assessments are AI-generated and may be inaccurate."));
|
|
106
|
+
const details = this._details;
|
|
107
|
+
const md = ( new MarkdownString(undefined, {
|
|
108
|
+
supportThemeIcons: true,
|
|
109
|
+
isTrusted: typeof details === "object" && details ? details.isTrusted : undefined
|
|
110
|
+
}));
|
|
111
|
+
md.appendText(aiNote);
|
|
112
|
+
if (details) {
|
|
113
|
+
md.appendMarkdown("\n\n");
|
|
114
|
+
if (typeof details === "string") {
|
|
115
|
+
md.appendText(details);
|
|
116
|
+
} else {
|
|
117
|
+
md.appendMarkdown(details.value);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return md;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
ToolRiskBadgeWidget = ( __decorate([( __param(0, IHoverService))], ToolRiskBadgeWidget));
|
|
124
|
+
|
|
125
|
+
export { ToolRiskBadgeWidget };
|