@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
|
@@ -16,12 +16,11 @@ import { getToolApprovalMessage } from './toolInvocationParts/chatToolPartUtilit
|
|
|
16
16
|
import { IChatMarkdownAnchorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service';
|
|
17
17
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
18
18
|
import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
19
|
-
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
20
19
|
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
21
20
|
import { HoverStyle } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hover';
|
|
22
21
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
23
22
|
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
24
|
-
import { buildPhrasePool, defaultThinkingMessages } from './chatThinkingContentPart.js';
|
|
23
|
+
import { maybePickFunWorkingMessage, buildPhrasePool, defaultThinkingMessages } from './chatThinkingContentPart.js';
|
|
25
24
|
|
|
26
25
|
let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
|
|
27
26
|
constructor(
|
|
@@ -137,6 +136,31 @@ let ChatProgressSubPart = class ChatProgressSubPart extends Disposable {
|
|
|
137
136
|
}
|
|
138
137
|
};
|
|
139
138
|
ChatProgressSubPart = ( __decorate([( __param(3, IHoverService))], ChatProgressSubPart));
|
|
139
|
+
const WORKING_LABEL_MIN_DWELL_MS = 1200;
|
|
140
|
+
const lastPickedWorkingLabelByElement = ( new Map());
|
|
141
|
+
function pickWorkingLabel(elementId, configurationService) {
|
|
142
|
+
const now = Date.now();
|
|
143
|
+
for (const [id, entry] of lastPickedWorkingLabelByElement) {
|
|
144
|
+
if (now - entry.pickedAt >= WORKING_LABEL_MIN_DWELL_MS) {
|
|
145
|
+
lastPickedWorkingLabelByElement.delete(id);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const existing = lastPickedWorkingLabelByElement.get(elementId);
|
|
149
|
+
if (existing && now - existing.pickedAt < WORKING_LABEL_MIN_DWELL_MS) {
|
|
150
|
+
existing.pickedAt = now;
|
|
151
|
+
return existing.label;
|
|
152
|
+
}
|
|
153
|
+
const fun = maybePickFunWorkingMessage();
|
|
154
|
+
const label = fun ?? (() => {
|
|
155
|
+
const pool = buildPhrasePool(defaultThinkingMessages, configurationService);
|
|
156
|
+
return pool[Math.floor(Math.random() * pool.length)];
|
|
157
|
+
})();
|
|
158
|
+
lastPickedWorkingLabelByElement.set(elementId, {
|
|
159
|
+
label,
|
|
160
|
+
pickedAt: now
|
|
161
|
+
});
|
|
162
|
+
return label;
|
|
163
|
+
}
|
|
140
164
|
let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extends Disposable {
|
|
141
165
|
constructor(
|
|
142
166
|
workingProgress,
|
|
@@ -149,13 +173,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
|
|
|
149
173
|
) {
|
|
150
174
|
super();
|
|
151
175
|
this.explicitContent = workingProgress.content;
|
|
152
|
-
|
|
153
|
-
if (persistentProgressEnabled) {
|
|
154
|
-
const pool = buildPhrasePool(defaultThinkingMessages, configurationService);
|
|
155
|
-
this.label = pool[Math.floor(Math.random() * pool.length)];
|
|
156
|
-
} else {
|
|
157
|
-
this.label = ( localize(6871, "Working"));
|
|
158
|
-
}
|
|
176
|
+
this.label = pickWorkingLabel(context.element.id, configurationService);
|
|
159
177
|
this.domNode = $(".progress-container");
|
|
160
178
|
const iconElement = $("div");
|
|
161
179
|
const state = workingProgress.state;
|
|
@@ -184,7 +202,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
|
|
|
184
202
|
}
|
|
185
203
|
this._register(languageModelToolsService.onDidPrepareToolCallBecomeUnresponsive(e => {
|
|
186
204
|
if (isEqual(context.element.sessionResource, e.sessionResource)) {
|
|
187
|
-
this.updateWorkingContent(( new MarkdownString(( localize(
|
|
205
|
+
this.updateWorkingContent(( new MarkdownString(( localize(7134, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
|
|
188
206
|
}
|
|
189
207
|
}));
|
|
190
208
|
}
|
|
@@ -10,6 +10,7 @@ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/h
|
|
|
10
10
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
11
11
|
import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
|
|
12
12
|
import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
|
|
13
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
13
14
|
export interface IChatQuestionCarouselOptions {
|
|
14
15
|
onSubmit: (answers: Map<string, IChatQuestionAnswerValue> | undefined) => void;
|
|
15
16
|
shouldAutoFocus?: boolean;
|
|
@@ -23,6 +24,7 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
|
|
|
23
24
|
private readonly _contextKeyService;
|
|
24
25
|
private readonly _keybindingService;
|
|
25
26
|
private readonly _commandService;
|
|
27
|
+
private readonly _configurationService;
|
|
26
28
|
readonly domNode: HTMLElement;
|
|
27
29
|
private readonly _onDidChangeHeight;
|
|
28
30
|
readonly onDidChangeHeight: Event<void>;
|
|
@@ -54,10 +56,11 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
|
|
|
54
56
|
*/
|
|
55
57
|
private readonly _interactiveUIStore;
|
|
56
58
|
private readonly _inChatQuestionCarouselContextKey;
|
|
59
|
+
private readonly _chatQuestionCarouselHasTerminalContextKey;
|
|
57
60
|
private _validationMessageElement;
|
|
58
61
|
private _currentValidationError;
|
|
59
62
|
private _focusTerminalButtonContainer;
|
|
60
|
-
constructor(carousel: IChatQuestionCarousel, context: IChatContentPartRenderContext, _options: IChatQuestionCarouselOptions, _markdownRendererService: IMarkdownRendererService, _hoverService: IHoverService, _accessibilityService: IAccessibilityService, _contextKeyService: IContextKeyService, _keybindingService: IKeybindingService, _commandService: ICommandService);
|
|
63
|
+
constructor(carousel: IChatQuestionCarousel, context: IChatContentPartRenderContext, _options: IChatQuestionCarouselOptions, _markdownRendererService: IMarkdownRendererService, _hoverService: IHoverService, _accessibilityService: IAccessibilityService, _contextKeyService: IContextKeyService, _keybindingService: IKeybindingService, _commandService: ICommandService, _configurationService: IConfigurationService);
|
|
61
64
|
/**
|
|
62
65
|
* Saves the current question's answer to the answers map.
|
|
63
66
|
*/
|
|
@@ -131,6 +134,7 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
|
|
|
131
134
|
hasFocus(): boolean;
|
|
132
135
|
navigateToPreviousQuestion(): boolean;
|
|
133
136
|
navigateToNextQuestion(): boolean;
|
|
137
|
+
focusTerminal(): boolean;
|
|
134
138
|
private renderCurrentQuestion;
|
|
135
139
|
/**
|
|
136
140
|
* Renders or updates the persistent footer with nav arrows, step indicator, and submit button.
|
|
@@ -27,8 +27,10 @@ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/h
|
|
|
27
27
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
28
28
|
import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
29
29
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
30
|
+
import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
30
31
|
import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
|
|
31
32
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
33
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
32
34
|
import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat';
|
|
33
35
|
import { RunInTerminalTool } from '../../../../terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js';
|
|
34
36
|
import * as chatQuestionCarousel from './media/chatQuestionCarousel.css';
|
|
@@ -46,7 +48,8 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
46
48
|
_accessibilityService,
|
|
47
49
|
_contextKeyService,
|
|
48
50
|
_keybindingService,
|
|
49
|
-
_commandService
|
|
51
|
+
_commandService,
|
|
52
|
+
_configurationService
|
|
50
53
|
) {
|
|
51
54
|
super();
|
|
52
55
|
this.carousel = carousel;
|
|
@@ -57,6 +60,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
57
60
|
this._contextKeyService = _contextKeyService;
|
|
58
61
|
this._keybindingService = _keybindingService;
|
|
59
62
|
this._commandService = _commandService;
|
|
63
|
+
this._configurationService = _configurationService;
|
|
60
64
|
this._onDidChangeHeight = this._register(( new Emitter()));
|
|
61
65
|
this.onDidChangeHeight = this._onDidChangeHeight.event;
|
|
62
66
|
this._currentIndex = 0;
|
|
@@ -73,19 +77,25 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
73
77
|
this.domNode = $(".chat-question-carousel-container");
|
|
74
78
|
this.domNode.id = generateUuid();
|
|
75
79
|
this._inChatQuestionCarouselContextKey = ChatContextKeys.inChatQuestionCarousel.bindTo(this._contextKeyService);
|
|
80
|
+
this._chatQuestionCarouselHasTerminalContextKey = ChatContextKeys.chatQuestionCarouselHasTerminal.bindTo(this._contextKeyService);
|
|
76
81
|
const focusTracker = this._register(trackFocus(this.domNode));
|
|
77
|
-
this._register(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
this._register(focusTracker.onDidFocus(() => {
|
|
83
|
+
this._inChatQuestionCarouselContextKey.set(true);
|
|
84
|
+
this._chatQuestionCarouselHasTerminalContextKey.set(!!this.carousel.terminalId);
|
|
85
|
+
}));
|
|
86
|
+
this._register(focusTracker.onDidBlur(() => {
|
|
87
|
+
this._inChatQuestionCarouselContextKey.set(false);
|
|
88
|
+
this._chatQuestionCarouselHasTerminalContextKey.reset();
|
|
89
|
+
}));
|
|
83
90
|
this._register({
|
|
84
|
-
dispose: () =>
|
|
91
|
+
dispose: () => {
|
|
92
|
+
this._inChatQuestionCarouselContextKey.reset();
|
|
93
|
+
this._chatQuestionCarouselHasTerminalContextKey.reset();
|
|
94
|
+
}
|
|
85
95
|
});
|
|
86
96
|
this.domNode.tabIndex = 0;
|
|
87
97
|
this.domNode.setAttribute("role", "region");
|
|
88
|
-
this.domNode.setAttribute("aria-roledescription", ( localize(
|
|
98
|
+
this.domNode.setAttribute("aria-roledescription", ( localize(7135, "chat question")));
|
|
89
99
|
this._updateAriaLabel();
|
|
90
100
|
if (carousel instanceof ChatQuestionCarouselData) {
|
|
91
101
|
if (typeof carousel.draftCurrentIndex === "number") {
|
|
@@ -117,7 +127,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
117
127
|
this._questionContainer = $(".chat-question-carousel-content");
|
|
118
128
|
this.domNode.append(this._questionContainer);
|
|
119
129
|
this._headerActionsContainer = $(".chat-question-header-actions");
|
|
120
|
-
const collapseToggleTitle = ( localize(
|
|
130
|
+
const collapseToggleTitle = ( localize(7136, "Collapse Questions"));
|
|
121
131
|
const collapseButton = interactiveStore.add(( new Button(this._headerActionsContainer, {
|
|
122
132
|
...defaultButtonStyles,
|
|
123
133
|
secondary: true,
|
|
@@ -128,7 +138,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
128
138
|
this._collapseButton = collapseButton;
|
|
129
139
|
if (carousel.allowSkip) {
|
|
130
140
|
this._closeButtonContainer = $(".chat-question-close-container");
|
|
131
|
-
const skipAllTitle = ( localize(
|
|
141
|
+
const skipAllTitle = ( localize(7137, "Skip all questions"));
|
|
132
142
|
const skipAllButton = interactiveStore.add(( new Button(this._closeButtonContainer, {
|
|
133
143
|
...defaultButtonStyles,
|
|
134
144
|
secondary: true,
|
|
@@ -144,7 +154,9 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
144
154
|
}
|
|
145
155
|
if (carousel.terminalId) {
|
|
146
156
|
this._focusTerminalButtonContainer = $(".chat-question-focus-terminal-container");
|
|
147
|
-
const focusTerminalTitle = ( localize(
|
|
157
|
+
const focusTerminalTitle = ( localize(7138, "Focus Terminal"));
|
|
158
|
+
const kbLabel = this._keybindingService.lookupKeybinding("workbench.action.chat.focusQuestionCarouselTerminal")?.getLabel();
|
|
159
|
+
const focusTerminalAriaLabel = kbLabel ? ( localize(7139, "Focus Terminal ({0})", kbLabel)) : focusTerminalTitle;
|
|
148
160
|
const focusTerminalButton = interactiveStore.add(( new Button(this._focusTerminalButtonContainer, {
|
|
149
161
|
...defaultButtonStyles,
|
|
150
162
|
secondary: true,
|
|
@@ -152,7 +164,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
152
164
|
})));
|
|
153
165
|
focusTerminalButton.label = `$(${Codicon.terminal.id})`;
|
|
154
166
|
focusTerminalButton.element.classList.add("chat-question-focus-terminal");
|
|
155
|
-
focusTerminalButton.element.setAttribute("aria-label",
|
|
167
|
+
focusTerminalButton.element.setAttribute("aria-label", focusTerminalAriaLabel);
|
|
156
168
|
interactiveStore.add(this._hoverService.setupDelayedHover(focusTerminalButton.element, {
|
|
157
169
|
content: focusTerminalTitle
|
|
158
170
|
}));
|
|
@@ -244,7 +256,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
244
256
|
this.domNode.classList.toggle("chat-question-carousel-collapsed", this._isCollapsed);
|
|
245
257
|
if (this._collapseButton) {
|
|
246
258
|
const collapsed = this._isCollapsed;
|
|
247
|
-
const buttonTitle = collapsed ? ( localize(
|
|
259
|
+
const buttonTitle = collapsed ? ( localize(7140, "Expand Questions")) : ( localize(7136, "Collapse Questions"));
|
|
248
260
|
const contentId = this.domNode.id;
|
|
249
261
|
this._collapseButton.label = collapsed ? `$(${Codicon.chevronUp.id})` : `$(${Codicon.chevronDown.id})`;
|
|
250
262
|
this._collapseButton.element.setAttribute("aria-label", buttonTitle);
|
|
@@ -299,7 +311,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
299
311
|
const messageContent = this.getQuestionText(questionText);
|
|
300
312
|
const questionCount = this.carousel.questions.length;
|
|
301
313
|
const alertMessage = questionCount === 1 ? messageContent : ( localize(
|
|
302
|
-
|
|
314
|
+
7141,
|
|
303
315
|
"Question {0} of {1}: {2}",
|
|
304
316
|
this._currentIndex + 1,
|
|
305
317
|
questionCount,
|
|
@@ -447,23 +459,38 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
447
459
|
_updateAriaLabel() {
|
|
448
460
|
const question = this.carousel.questions[this._currentIndex];
|
|
449
461
|
if (!question) {
|
|
450
|
-
this.domNode.setAttribute("aria-label", ( localize(
|
|
462
|
+
this.domNode.setAttribute("aria-label", ( localize(7142, "Chat question")));
|
|
451
463
|
return;
|
|
452
464
|
}
|
|
453
465
|
const questionText = question.message ?? question.title;
|
|
454
466
|
const messageContent = this.getQuestionText(questionText);
|
|
455
467
|
const questionCount = this.carousel.questions.length;
|
|
468
|
+
let label;
|
|
456
469
|
if (questionCount === 1) {
|
|
457
|
-
|
|
470
|
+
label = ( localize(7143, "Chat question: {0}", messageContent));
|
|
458
471
|
} else {
|
|
459
|
-
|
|
460
|
-
|
|
472
|
+
label = ( localize(
|
|
473
|
+
7144,
|
|
461
474
|
"Chat question {0} of {1}: {2}",
|
|
462
475
|
this._currentIndex + 1,
|
|
463
476
|
questionCount,
|
|
464
477
|
messageContent
|
|
465
|
-
))
|
|
478
|
+
));
|
|
466
479
|
}
|
|
480
|
+
const verbose = this._configurationService.getValue(AccessibilityVerbositySettingId.ChatQuestionCarousel);
|
|
481
|
+
if (verbose && this.carousel.terminalId) {
|
|
482
|
+
const kbLabel = this._keybindingService.lookupKeybinding("workbench.action.chat.focusQuestionCarouselTerminal")?.getLabel();
|
|
483
|
+
if (kbLabel) {
|
|
484
|
+
label = ( localize(7145, "{0} Use {1} to focus the terminal.", label, kbLabel));
|
|
485
|
+
} else {
|
|
486
|
+
label = ( localize(
|
|
487
|
+
7146,
|
|
488
|
+
"{0} Use the Focus Terminal from Question Carousel command to focus the terminal.",
|
|
489
|
+
label
|
|
490
|
+
));
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
this.domNode.setAttribute("aria-label", label);
|
|
467
494
|
}
|
|
468
495
|
focus() {
|
|
469
496
|
this.domNode.focus();
|
|
@@ -485,6 +512,13 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
485
512
|
this.navigate(1);
|
|
486
513
|
return true;
|
|
487
514
|
}
|
|
515
|
+
focusTerminal() {
|
|
516
|
+
if (!this.carousel.terminalId) {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
this._focusTerminal();
|
|
520
|
+
return true;
|
|
521
|
+
}
|
|
488
522
|
renderCurrentQuestion(focusContainerForScreenReader = false) {
|
|
489
523
|
if (!this._questionContainer) {
|
|
490
524
|
return;
|
|
@@ -585,7 +619,10 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
585
619
|
this.layoutInputScrollable(inputScrollable);
|
|
586
620
|
});
|
|
587
621
|
};
|
|
588
|
-
const inputResizeObserver = questionRenderStore.add(new DisposableResizeObserver(
|
|
622
|
+
const inputResizeObserver = questionRenderStore.add(new DisposableResizeObserver(
|
|
623
|
+
"ChatQuestionCarouselPart.inputScrollable",
|
|
624
|
+
() => scheduleLayoutInputScrollable()
|
|
625
|
+
));
|
|
589
626
|
questionRenderStore.add(inputResizeObserver.observe(inputScrollableNode));
|
|
590
627
|
questionRenderStore.add(inputResizeObserver.observe(inputContainer));
|
|
591
628
|
questionRenderStore.add(addDisposableListener(
|
|
@@ -621,9 +658,9 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
621
658
|
this._footerRow = $(".chat-question-footer-row");
|
|
622
659
|
const leftControls = $(".chat-question-footer-left.chat-question-carousel-nav");
|
|
623
660
|
leftControls.setAttribute("role", "navigation");
|
|
624
|
-
leftControls.setAttribute("aria-label", ( localize(
|
|
661
|
+
leftControls.setAttribute("aria-label", ( localize(7147, "Question navigation")));
|
|
625
662
|
const arrowsContainer = $(".chat-question-nav-arrows");
|
|
626
|
-
const previousLabel = this.getLabelWithKeybinding(( localize(
|
|
663
|
+
const previousLabel = this.getLabelWithKeybinding(( localize(7148, "Previous")), PREVIOUS_QUESTION_ACTION_ID);
|
|
627
664
|
const prevButton = interactiveStore.add(( new Button(arrowsContainer, {
|
|
628
665
|
...defaultButtonStyles,
|
|
629
666
|
secondary: true,
|
|
@@ -637,7 +674,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
637
674
|
}));
|
|
638
675
|
interactiveStore.add(prevButton.onDidClick(() => this.navigate(-1)));
|
|
639
676
|
this._prevButton = prevButton;
|
|
640
|
-
const nextLabel = this.getLabelWithKeybinding(( localize(
|
|
677
|
+
const nextLabel = this.getLabelWithKeybinding(( localize(7149, "Next")), NEXT_QUESTION_ACTION_ID);
|
|
641
678
|
const nextButton = interactiveStore.add(( new Button(arrowsContainer, {
|
|
642
679
|
...defaultButtonStyles,
|
|
643
680
|
secondary: true,
|
|
@@ -657,14 +694,14 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
657
694
|
this._footerRow.appendChild(leftControls);
|
|
658
695
|
const rightControls = $(".chat-question-footer-right");
|
|
659
696
|
const hint = $("span.chat-question-submit-hint");
|
|
660
|
-
hint.textContent = isMacintosh ? ( localize(
|
|
697
|
+
hint.textContent = isMacintosh ? ( localize(7150, "⌘⏎ to submit")) : ( localize(7151, "Ctrl+Enter to submit"));
|
|
661
698
|
rightControls.appendChild(hint);
|
|
662
699
|
this._submitHint = hint;
|
|
663
700
|
const submitButton = interactiveStore.add(( new Button(rightControls, {
|
|
664
701
|
...defaultButtonStyles
|
|
665
702
|
})));
|
|
666
703
|
submitButton.element.classList.add("chat-question-submit-button");
|
|
667
|
-
submitButton.label = ( localize(
|
|
704
|
+
submitButton.label = ( localize(7152, "Submit"));
|
|
668
705
|
interactiveStore.add(submitButton.onDidClick(() => this.submit()));
|
|
669
706
|
this._submitButton = submitButton;
|
|
670
707
|
this._footerRow.appendChild(rightControls);
|
|
@@ -685,7 +722,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
685
722
|
this._nextButton.enabled = canAdvance && (!question?.required || hasAnswer) && !hasValidationError;
|
|
686
723
|
}
|
|
687
724
|
if (this._stepIndicator) {
|
|
688
|
-
this._stepIndicator.textContent = ( localize(
|
|
725
|
+
this._stepIndicator.textContent = ( localize(7153, "{0}/{1}", this._currentIndex + 1, this.carousel.questions.length));
|
|
689
726
|
}
|
|
690
727
|
if (this._submitButton) {
|
|
691
728
|
const isLastQuestion = this._currentIndex === this.carousel.questions.length - 1;
|
|
@@ -704,18 +741,18 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
704
741
|
this._footerRow = $(".chat-question-footer-row");
|
|
705
742
|
const leftControls = $(".chat-question-footer-left.chat-question-carousel-nav");
|
|
706
743
|
leftControls.setAttribute("role", "navigation");
|
|
707
|
-
leftControls.setAttribute("aria-label", ( localize(
|
|
744
|
+
leftControls.setAttribute("aria-label", ( localize(7147, "Question navigation")));
|
|
708
745
|
this._footerRow.appendChild(leftControls);
|
|
709
746
|
const rightControls = $(".chat-question-footer-right");
|
|
710
747
|
const hint = $("span.chat-question-submit-hint");
|
|
711
|
-
hint.textContent = isMacintosh ? ( localize(
|
|
748
|
+
hint.textContent = isMacintosh ? ( localize(7150, "⌘⏎ to submit")) : ( localize(7151, "Ctrl+Enter to submit"));
|
|
712
749
|
rightControls.appendChild(hint);
|
|
713
750
|
this._submitHint = hint;
|
|
714
751
|
const submitButton = interactiveStore.add(( new Button(rightControls, {
|
|
715
752
|
...defaultButtonStyles
|
|
716
753
|
})));
|
|
717
754
|
submitButton.element.classList.add("chat-question-submit-button");
|
|
718
|
-
submitButton.label = ( localize(
|
|
755
|
+
submitButton.label = ( localize(7152, "Submit"));
|
|
719
756
|
interactiveStore.add(submitButton.onDidClick(() => this.submit()));
|
|
720
757
|
this._submitButton = submitButton;
|
|
721
758
|
this._footerRow.appendChild(rightControls);
|
|
@@ -724,7 +761,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
724
761
|
}
|
|
725
762
|
getLabelWithKeybinding(label, actionId) {
|
|
726
763
|
const keybindingLabel = this._keybindingService.lookupKeybinding(actionId, this._contextKeyService)?.getLabel();
|
|
727
|
-
return keybindingLabel ? ( localize(
|
|
764
|
+
return keybindingLabel ? ( localize(7154, "{0} ({1})", label, keybindingLabel)) : label;
|
|
728
765
|
}
|
|
729
766
|
renderInput(container, question) {
|
|
730
767
|
switch (question.type) {
|
|
@@ -753,7 +790,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
753
790
|
}
|
|
754
791
|
renderTextInput(container, question) {
|
|
755
792
|
const inputBox = this._inputBoxes.add(( new InputBox(container, undefined, {
|
|
756
|
-
placeholder: ( localize(
|
|
793
|
+
placeholder: ( localize(7155, "Enter your answer")),
|
|
757
794
|
inputBoxStyles: defaultInputBoxStyles,
|
|
758
795
|
validationOptions: question.validation ? {
|
|
759
796
|
validation: value => {
|
|
@@ -844,7 +881,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
844
881
|
const listItem = $(".chat-question-list-item");
|
|
845
882
|
listItem.setAttribute("role", "option");
|
|
846
883
|
listItem.setAttribute("aria-selected", String(isSelected));
|
|
847
|
-
listItem.setAttribute("aria-label", ( localize(
|
|
884
|
+
listItem.setAttribute("aria-label", ( localize(7156, "Option {0}: {1}", index + 1, option.label)));
|
|
848
885
|
listItem.id = `option-${question.id}-${index}`;
|
|
849
886
|
listItem.tabIndex = -1;
|
|
850
887
|
const number = $(".chat-question-list-number");
|
|
@@ -910,7 +947,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
910
947
|
freeformNumber.textContent = `${orderedOptions.length + 1}`;
|
|
911
948
|
freeformContainer.appendChild(freeformNumber);
|
|
912
949
|
freeformTextarea = $("textarea.chat-question-freeform-textarea");
|
|
913
|
-
freeformTextarea.placeholder = ( localize(
|
|
950
|
+
freeformTextarea.placeholder = ( localize(7157, "Enter custom answer"));
|
|
914
951
|
freeformTextarea.rows = 1;
|
|
915
952
|
if (previousFreeform !== undefined) {
|
|
916
953
|
freeformTextarea.value = previousFreeform;
|
|
@@ -1022,7 +1059,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1022
1059
|
const listItem = $(".chat-question-list-item.multi-select");
|
|
1023
1060
|
listItem.setAttribute("role", "option");
|
|
1024
1061
|
listItem.setAttribute("aria-selected", String(isChecked));
|
|
1025
|
-
listItem.setAttribute("aria-label", ( localize(
|
|
1062
|
+
listItem.setAttribute("aria-label", ( localize(7156, "Option {0}: {1}", index + 1, option.label)));
|
|
1026
1063
|
listItem.id = `option-${question.id}-${index}`;
|
|
1027
1064
|
listItem.tabIndex = -1;
|
|
1028
1065
|
const number = $(".chat-question-list-number");
|
|
@@ -1087,7 +1124,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1087
1124
|
freeformNumber.textContent = `${orderedOptions.length + 1}`;
|
|
1088
1125
|
freeformContainer.appendChild(freeformNumber);
|
|
1089
1126
|
freeformTextarea = $("textarea.chat-question-freeform-textarea");
|
|
1090
|
-
freeformTextarea.placeholder = ( localize(
|
|
1127
|
+
freeformTextarea.placeholder = ( localize(7157, "Enter custom answer"));
|
|
1091
1128
|
freeformTextarea.rows = 1;
|
|
1092
1129
|
if (previousFreeform !== undefined) {
|
|
1093
1130
|
freeformTextarea.value = previousFreeform;
|
|
@@ -1255,7 +1292,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1255
1292
|
const skippedContainer = $(".chat-question-carousel-summary");
|
|
1256
1293
|
const skippedMessage = $(".chat-question-summary-skipped");
|
|
1257
1294
|
const isDismissedByTerminal = this.carousel instanceof ChatQuestionCarouselData && this.carousel.dismissedByTerminalInput;
|
|
1258
|
-
skippedMessage.textContent = isDismissedByTerminal ? ( localize(
|
|
1295
|
+
skippedMessage.textContent = isDismissedByTerminal ? ( localize(7158, "Deferring to user's input in the terminal")) : ( localize(7159, "Skipped"));
|
|
1259
1296
|
skippedContainer.appendChild(skippedMessage);
|
|
1260
1297
|
this.domNode.appendChild(skippedContainer);
|
|
1261
1298
|
}
|
|
@@ -1274,16 +1311,16 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1274
1311
|
const questionText = question.message ?? question.title;
|
|
1275
1312
|
let labelText = typeof questionText === "string" ? questionText : questionText.value;
|
|
1276
1313
|
labelText = labelText.replace(/[:\s]+$/, "");
|
|
1277
|
-
questionRow.textContent = ( localize(
|
|
1314
|
+
questionRow.textContent = ( localize(7160, "Q: {0}", labelText));
|
|
1278
1315
|
summaryItem.appendChild(questionRow);
|
|
1279
1316
|
if (answer !== undefined) {
|
|
1280
1317
|
const formattedAnswer = this.formatAnswerForSummary(question, answer);
|
|
1281
1318
|
const answerRow = $("div.chat-question-summary-answer-title");
|
|
1282
|
-
answerRow.textContent = ( localize(
|
|
1319
|
+
answerRow.textContent = ( localize(7161, "A: {0}", formattedAnswer));
|
|
1283
1320
|
summaryItem.appendChild(answerRow);
|
|
1284
1321
|
} else {
|
|
1285
1322
|
const unanswered = $("div.chat-question-summary-unanswered");
|
|
1286
|
-
unanswered.textContent = ( localize(
|
|
1323
|
+
unanswered.textContent = ( localize(7162, "Not answered yet"));
|
|
1287
1324
|
summaryItem.appendChild(unanswered);
|
|
1288
1325
|
}
|
|
1289
1326
|
summaryContainer.appendChild(summaryItem);
|
|
@@ -1323,7 +1360,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1323
1360
|
if (freeformValue) {
|
|
1324
1361
|
labels.push(freeformValue);
|
|
1325
1362
|
}
|
|
1326
|
-
return labels.join(( localize(
|
|
1363
|
+
return labels.join(( localize(7163, ", ")));
|
|
1327
1364
|
}
|
|
1328
1365
|
return String(answer);
|
|
1329
1366
|
}
|
|
@@ -1342,7 +1379,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1342
1379
|
}
|
|
1343
1380
|
const answer = this._answers.get(question.id);
|
|
1344
1381
|
if (question.required && (answer === undefined || answer === "")) {
|
|
1345
|
-
this.showValidationError(( localize(
|
|
1382
|
+
this.showValidationError(( localize(7164, "This field is required")));
|
|
1346
1383
|
return false;
|
|
1347
1384
|
}
|
|
1348
1385
|
if (question.type === "text" && question.validation && typeof answer === "string" && answer !== "") {
|
|
@@ -1367,7 +1404,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1367
1404
|
this._currentIndex = i;
|
|
1368
1405
|
this.persistDraftState();
|
|
1369
1406
|
this.renderCurrentQuestion(true);
|
|
1370
|
-
this.showValidationError(( localize(
|
|
1407
|
+
this.showValidationError(( localize(7164, "This field is required")));
|
|
1371
1408
|
return false;
|
|
1372
1409
|
}
|
|
1373
1410
|
}
|
|
@@ -1375,34 +1412,34 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1375
1412
|
}
|
|
1376
1413
|
getValidationError(value, validation) {
|
|
1377
1414
|
if (validation.minLength !== undefined && value.length < validation.minLength) {
|
|
1378
|
-
return localize(
|
|
1415
|
+
return localize(7165, "Minimum length is {0}", validation.minLength);
|
|
1379
1416
|
}
|
|
1380
1417
|
if (validation.maxLength !== undefined && value.length > validation.maxLength) {
|
|
1381
|
-
return localize(
|
|
1418
|
+
return localize(7166, "Maximum length is {0}", validation.maxLength);
|
|
1382
1419
|
}
|
|
1383
1420
|
if (validation.format) {
|
|
1384
1421
|
switch (validation.format) {
|
|
1385
1422
|
case "email":
|
|
1386
1423
|
if (!value.includes("@")) {
|
|
1387
|
-
return localize(
|
|
1424
|
+
return localize(7167, "Please enter a valid email address");
|
|
1388
1425
|
}
|
|
1389
1426
|
break;
|
|
1390
1427
|
case "uri":
|
|
1391
1428
|
if (!URL.canParse(value)) {
|
|
1392
|
-
return localize(
|
|
1429
|
+
return localize(7168, "Please enter a valid URI");
|
|
1393
1430
|
}
|
|
1394
1431
|
break;
|
|
1395
1432
|
case "date":
|
|
1396
1433
|
{
|
|
1397
1434
|
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
1398
1435
|
if (!dateRegex.test(value) || isNaN(( new Date(value)).getTime())) {
|
|
1399
|
-
return localize(
|
|
1436
|
+
return localize(7169, "Please enter a valid date (YYYY-MM-DD)");
|
|
1400
1437
|
}
|
|
1401
1438
|
break;
|
|
1402
1439
|
}
|
|
1403
1440
|
case "date-time":
|
|
1404
1441
|
if (isNaN(( new Date(value)).getTime())) {
|
|
1405
|
-
return localize(
|
|
1442
|
+
return localize(7170, "Please enter a valid date-time");
|
|
1406
1443
|
}
|
|
1407
1444
|
break;
|
|
1408
1445
|
}
|
|
@@ -1410,16 +1447,16 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1410
1447
|
if (validation.isInteger !== undefined || validation.minimum !== undefined || validation.maximum !== undefined) {
|
|
1411
1448
|
const num = Number(value);
|
|
1412
1449
|
if (isNaN(num)) {
|
|
1413
|
-
return localize(
|
|
1450
|
+
return localize(7171, "Please enter a valid number");
|
|
1414
1451
|
}
|
|
1415
1452
|
if (validation.isInteger && !Number.isInteger(num)) {
|
|
1416
|
-
return localize(
|
|
1453
|
+
return localize(7172, "Please enter a valid integer");
|
|
1417
1454
|
}
|
|
1418
1455
|
if (validation.minimum !== undefined && num < validation.minimum) {
|
|
1419
|
-
return localize(
|
|
1456
|
+
return localize(7173, "Minimum value is {0}", validation.minimum);
|
|
1420
1457
|
}
|
|
1421
1458
|
if (validation.maximum !== undefined && num > validation.maximum) {
|
|
1422
|
-
return localize(
|
|
1459
|
+
return localize(7174, "Maximum value is {0}", validation.maximum);
|
|
1423
1460
|
}
|
|
1424
1461
|
}
|
|
1425
1462
|
return undefined;
|
|
@@ -1454,6 +1491,6 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
|
|
|
1454
1491
|
super.dispose();
|
|
1455
1492
|
}
|
|
1456
1493
|
};
|
|
1457
|
-
ChatQuestionCarouselPart = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IHoverService)), ( __param(5, IAccessibilityService)), ( __param(6, IContextKeyService)), ( __param(7, IKeybindingService)), ( __param(8, ICommandService))], ChatQuestionCarouselPart));
|
|
1494
|
+
ChatQuestionCarouselPart = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IHoverService)), ( __param(5, IAccessibilityService)), ( __param(6, IContextKeyService)), ( __param(7, IKeybindingService)), ( __param(8, ICommandService)), ( __param(9, IConfigurationService))], ChatQuestionCarouselPart));
|
|
1458
1495
|
|
|
1459
1496
|
export { ChatQuestionCarouselPart };
|
|
@@ -50,14 +50,16 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
|
|
|
50
50
|
const markdownContent = this._register(renderer.render(( new MarkdownString(errorDetails.message))));
|
|
51
51
|
append(messageContainer, markdownContent.element);
|
|
52
52
|
let primaryButtonLabel;
|
|
53
|
+
const isUsageBasedBilling = chatEntitlementService.quotas.usageBasedBilling === true;
|
|
53
54
|
switch (chatEntitlementService.entitlement) {
|
|
54
55
|
case ChatEntitlement.EDU:
|
|
55
56
|
case ChatEntitlement.Pro:
|
|
56
57
|
case ChatEntitlement.ProPlus:
|
|
57
|
-
|
|
58
|
+
case ChatEntitlement.Max:
|
|
59
|
+
primaryButtonLabel = isUsageBasedBilling ? ( localize(7175, "Configure Additional Spend")) : ( localize(7176, "Configure Budget"));
|
|
58
60
|
break;
|
|
59
61
|
case ChatEntitlement.Free:
|
|
60
|
-
primaryButtonLabel = ( localize(
|
|
62
|
+
primaryButtonLabel = ( localize(7177, "Upgrade to GitHub Copilot Pro"));
|
|
61
63
|
break;
|
|
62
64
|
}
|
|
63
65
|
let hasAddedWaitWarning = false;
|
|
@@ -66,7 +68,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
|
|
|
66
68
|
return;
|
|
67
69
|
}
|
|
68
70
|
hasAddedWaitWarning = true;
|
|
69
|
-
append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(
|
|
71
|
+
append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(7178, "Changes may take a few minutes to take effect."))));
|
|
70
72
|
};
|
|
71
73
|
let hasAddedRetryButton = false;
|
|
72
74
|
const addRetryButtonIfNeeded = () => {
|
|
@@ -79,7 +81,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
|
|
|
79
81
|
buttonForeground: asCssVariable(textLinkForeground)
|
|
80
82
|
})));
|
|
81
83
|
retryButton.element.classList.add("chat-quota-error-secondary-button");
|
|
82
|
-
retryButton.label = ( localize(
|
|
84
|
+
retryButton.label = ( localize(7179, "Click to Retry"));
|
|
83
85
|
this._register(retryButton.onDidClick(() => {
|
|
84
86
|
const widget = chatWidgetService.getWidgetBySessionResource(element.sessionResource);
|
|
85
87
|
if (!widget) {
|
|
@@ -98,7 +100,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
|
|
|
98
100
|
primaryButton.label = primaryButtonLabel;
|
|
99
101
|
primaryButton.element.classList.add("chat-quota-error-button");
|
|
100
102
|
this._register(primaryButton.onDidClick(async () => {
|
|
101
|
-
const commandId = chatEntitlementService.entitlement === ChatEntitlement.Free ? "workbench.action.chat.upgradePlan" : "workbench.action.chat.
|
|
103
|
+
const commandId = chatEntitlementService.entitlement === ChatEntitlement.Free ? "workbench.action.chat.upgradePlan" : "workbench.action.chat.manageAdditionalSpend";
|
|
102
104
|
telemetryService.publicLog2("workbenchActionExecuted", {
|
|
103
105
|
id: commandId,
|
|
104
106
|
from: "chat-response"
|