@codingame/monaco-vscode-katex-common 31.0.0 → 32.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +15 -3
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +6 -5
- package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +5 -1
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +45 -14
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +15 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +15 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +51 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +45 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +46 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +155 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +20 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +37 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/media/chatSessionPickerActionItem.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +250 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +14 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +51 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +56 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +68 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.d.ts +58 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +653 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +28 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +91 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +53 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +42 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +93 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +169 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +13 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +60 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +13 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +15 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +125 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +29 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +119 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/media/toolRiskBadge.css +77 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +125 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +132 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +16 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +156 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +93 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +133 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +53 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +288 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +23 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +699 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +12 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +191 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +9 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +20 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +89 -108
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +521 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +19 -19
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +82 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +44 -17
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +3 -46
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.d.ts → inlineChatAffordanceWidget.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.js → inlineChatAffordanceWidget.js} +6 -6
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -18
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +19 -400
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -9
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +5 -19
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +47 -133
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +103 -25
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +29 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +3 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -92
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +99 -32
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +13 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +76 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +89 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +11 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +7 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +11 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +59 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +24 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +111 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +60 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +455 -171
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +49 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +302 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +118 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +34 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +233 -48
- package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +0 -16
- package/vscode/src/vs/platform/actions/browser/actionbar.js +0 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -539
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -386
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +0 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +0 -509
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -130
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +0 -276
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.d.ts +0 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.js +0 -93
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +0 -617
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +0 -231
|
@@ -29,6 +29,7 @@ import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/edito
|
|
|
29
29
|
import { OffsetRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/offsetRange';
|
|
30
30
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
31
31
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
32
|
+
import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
|
|
32
33
|
import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
33
34
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
34
35
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
@@ -49,18 +50,18 @@ import { decidedChatEditingResourceContextKey, ModifiedFileEntryState, hasUndeci
|
|
|
49
50
|
import { IChatEditingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService.service';
|
|
50
51
|
import { IChatLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/widget/chatLayoutService.service';
|
|
51
52
|
import { getModeNameForTelemetry, ChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes';
|
|
52
|
-
import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
|
|
53
53
|
import { ChatRequestToolPart, ChatRequestToolSetPart, ChatRequestDynamicVariablePart, IParsedChatRequest, chatAgentLeader, chatSubcommandLeader, ChatRequestSlashPromptPart, formatChatQuestion, ChatRequestAgentPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatParserTypes';
|
|
54
54
|
import { ChatRequestParser } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatRequestParser';
|
|
55
55
|
import { getDynamicVariablesForWidget, getSelectedToolAndToolSetsForWidget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/attachments/chatVariables';
|
|
56
56
|
import { ChatRequestQueueKind, ChatSendResult } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
57
57
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
|
|
58
|
+
import { localChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
|
|
58
59
|
import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
|
|
59
60
|
import { IChatSlashCommandService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatSlashCommands.service';
|
|
60
61
|
import { IChatTodoListService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/chatTodoListService.service';
|
|
61
62
|
import { isWorkspaceVariableEntry, isPromptFileVariableEntry, isPromptTextVariableEntry, toPromptFileVariableEntry, PromptFileVariableKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
|
|
62
63
|
import { isResponseVM, isRequestVM, ChatViewModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
|
|
63
|
-
import { ChatModeKind, ChatPermissionLevel,
|
|
64
|
+
import { ChatConfiguration, ChatModeKind, ChatPermissionLevel, ThinkingDisplayMode, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
64
65
|
import { isToolSet } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
65
66
|
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
66
67
|
import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
|
|
@@ -79,6 +80,8 @@ import { ChatTipContentPart } from './chatContentParts/chatTipContentPart.js';
|
|
|
79
80
|
import { ChatContentMarkdownRenderer } from './chatContentMarkdownRenderer.js';
|
|
80
81
|
import { IAgentSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.service';
|
|
81
82
|
import { IChatDebugService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatDebugService.service';
|
|
83
|
+
import { getChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
|
|
84
|
+
import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
|
|
82
85
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
83
86
|
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
84
87
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
@@ -110,7 +113,7 @@ const supportsAllAttachments = {
|
|
|
110
113
|
supportsHandOffs: true,
|
|
111
114
|
supportsCheckpoints: true
|
|
112
115
|
};
|
|
113
|
-
const DISCLAIMER = ( localize(
|
|
116
|
+
const DISCLAIMER = ( localize(7428, "AI responses may be inaccurate"));
|
|
114
117
|
let ChatWidget = class ChatWidget extends Disposable {
|
|
115
118
|
static {
|
|
116
119
|
ChatWidget_1 = this;
|
|
@@ -165,7 +168,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
165
168
|
selectedAgent: this._lastSelectedAgent,
|
|
166
169
|
mode: this.input.currentModeKind,
|
|
167
170
|
attachmentCapabilities: this.attachmentCapabilities,
|
|
168
|
-
forcedAgent: this._lockedAgent?.id ? this.chatAgentService.getAgent(this._lockedAgent.id) : undefined
|
|
171
|
+
forcedAgent: this._lockedAgent?.id ? this.chatAgentService.getAgent(this._lockedAgent.id) : undefined,
|
|
172
|
+
sessionType: getChatSessionType(this.viewModel.model.sessionResource)
|
|
169
173
|
}
|
|
170
174
|
);
|
|
171
175
|
this._onDidChangeParsedInput.fire();
|
|
@@ -204,8 +208,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
204
208
|
chatEditingService,
|
|
205
209
|
telemetryService,
|
|
206
210
|
promptsService,
|
|
211
|
+
customizationHarnessService,
|
|
207
212
|
toolsService,
|
|
208
|
-
chatModeService,
|
|
209
213
|
chatLayoutService,
|
|
210
214
|
chatEntitlementService,
|
|
211
215
|
chatSessionsService,
|
|
@@ -214,7 +218,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
214
218
|
lifecycleService,
|
|
215
219
|
chatAttachmentResolveService,
|
|
216
220
|
chatTipService,
|
|
217
|
-
chatDebugService
|
|
221
|
+
chatDebugService,
|
|
222
|
+
accessibilityService
|
|
218
223
|
) {
|
|
219
224
|
super();
|
|
220
225
|
this.viewOptions = viewOptions;
|
|
@@ -233,8 +238,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
233
238
|
this.chatSlashCommandService = chatSlashCommandService;
|
|
234
239
|
this.telemetryService = telemetryService;
|
|
235
240
|
this.promptsService = promptsService;
|
|
241
|
+
this.customizationHarnessService = customizationHarnessService;
|
|
236
242
|
this.toolsService = toolsService;
|
|
237
|
-
this.chatModeService = chatModeService;
|
|
238
243
|
this.chatLayoutService = chatLayoutService;
|
|
239
244
|
this.chatEntitlementService = chatEntitlementService;
|
|
240
245
|
this.chatSessionsService = chatSessionsService;
|
|
@@ -244,6 +249,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
244
249
|
this.chatAttachmentResolveService = chatAttachmentResolveService;
|
|
245
250
|
this.chatTipService = chatTipService;
|
|
246
251
|
this.chatDebugService = chatDebugService;
|
|
252
|
+
this.accessibilityService = accessibilityService;
|
|
247
253
|
this._onDidSubmitAgent = this._register(( new Emitter()));
|
|
248
254
|
this.onDidSubmitAgent = this._onDidSubmitAgent.event;
|
|
249
255
|
this._onDidChangeAgent = this._register(( new Emitter()));
|
|
@@ -332,6 +338,15 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
332
338
|
this.updateChatViewVisibility();
|
|
333
339
|
}
|
|
334
340
|
}
|
|
341
|
+
if (e.affectsConfiguration(ChatConfiguration.ProgressBorder)) {
|
|
342
|
+
this.updateWorkingProgressBorder();
|
|
343
|
+
}
|
|
344
|
+
}));
|
|
345
|
+
this._register(this.accessibilityService.onDidChangeReducedMotion(() => {
|
|
346
|
+
this.updateWorkingProgressBorder();
|
|
347
|
+
if (this.visible) {
|
|
348
|
+
this.listWidget.rerender();
|
|
349
|
+
}
|
|
335
350
|
}));
|
|
336
351
|
this._register(
|
|
337
352
|
bindContextKey(decidedChatEditingResourceContextKey, contextKeyService, reader => {
|
|
@@ -505,6 +520,19 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
505
520
|
get inlineInputPart() {
|
|
506
521
|
return this.inlineInputPartDisposable.value;
|
|
507
522
|
}
|
|
523
|
+
updateWorkingProgressBorder() {
|
|
524
|
+
const inputPart = this.inputPartDisposable.value;
|
|
525
|
+
if (!inputPart) {
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
const inputContainer = inputPart.inputContainerElement;
|
|
529
|
+
if (!inputContainer) {
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
const enabled = this.configurationService.getValue(ChatConfiguration.ProgressBorder) === true && !this.accessibilityService.isMotionReduced() && !isInlineChat(this);
|
|
533
|
+
const inProgress = !!this.viewModel?.model.requestInProgress.get();
|
|
534
|
+
inputContainer.classList.toggle("working", enabled && inProgress);
|
|
535
|
+
}
|
|
508
536
|
get inputEditor() {
|
|
509
537
|
return this.input.inputEditor;
|
|
510
538
|
}
|
|
@@ -576,11 +604,20 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
576
604
|
...this.viewOptions.rendererOptions,
|
|
577
605
|
renderStyle
|
|
578
606
|
});
|
|
607
|
+
this._register(
|
|
608
|
+
addDisposableListener(this.container, EventType.MOUSE_WHEEL, e => {
|
|
609
|
+
if (e.defaultPrevented || e.target !== this.container) {
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
this.listWidget.delegateScrollFromMouseWheelEvent(e);
|
|
613
|
+
})
|
|
614
|
+
);
|
|
579
615
|
this._register(addDisposableListener(parent, EventType.MOUSE_WHEEL, e => {
|
|
580
616
|
if (e.defaultPrevented) {
|
|
581
617
|
return;
|
|
582
618
|
}
|
|
583
|
-
|
|
619
|
+
const target = e.target;
|
|
620
|
+
if (target && isAncestor(target, this.container)) {
|
|
584
621
|
return;
|
|
585
622
|
}
|
|
586
623
|
this.listWidget.delegateScrollFromMouseWheelEvent(e);
|
|
@@ -681,6 +718,9 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
681
718
|
}
|
|
682
719
|
return this.input.navigateToNextQuestion();
|
|
683
720
|
}
|
|
721
|
+
focusQuestionCarouselTerminal() {
|
|
722
|
+
return this.input.focusQuestionCarouselTerminal();
|
|
723
|
+
}
|
|
684
724
|
toggleTipFocus() {
|
|
685
725
|
if (this._gettingStartedTipPartRef?.hasFocus()) {
|
|
686
726
|
this.focusInput();
|
|
@@ -700,16 +740,19 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
700
740
|
return;
|
|
701
741
|
}
|
|
702
742
|
const previous = this.parsedChatRequest;
|
|
743
|
+
const context = {
|
|
744
|
+
selectedAgent: this._lastSelectedAgent,
|
|
745
|
+
mode: this.input.currentModeKind,
|
|
746
|
+
attachmentCapabilities: this.attachmentCapabilities,
|
|
747
|
+
sessionType: getChatSessionType(this.viewModel.model.sessionResource),
|
|
748
|
+
forcedAgent: this._lockedAgent?.id ? this.chatAgentService.getAgent(this._lockedAgent.id) : undefined
|
|
749
|
+
};
|
|
703
750
|
this.parsedChatRequest = this.instantiationService.createInstance(ChatRequestParser).parseChatRequestWithReferences(
|
|
704
751
|
getDynamicVariablesForWidget(this),
|
|
705
752
|
getSelectedToolAndToolSetsForWidget(this),
|
|
706
753
|
this.getInput(),
|
|
707
754
|
this.location,
|
|
708
|
-
|
|
709
|
-
selectedAgent: this._lastSelectedAgent,
|
|
710
|
-
mode: this.input.currentModeKind,
|
|
711
|
-
attachmentCapabilities: this.attachmentCapabilities
|
|
712
|
-
}
|
|
755
|
+
context
|
|
713
756
|
);
|
|
714
757
|
if (!previous || !IParsedChatRequest.equals(previous, this.parsedChatRequest)) {
|
|
715
758
|
this._onDidChangeParsedInput.fire();
|
|
@@ -822,7 +865,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
822
865
|
if (this.chatEntitlementService.anonymous && !this.chatEntitlementService.sentiment.completed) {
|
|
823
866
|
const providers = product.defaultChatAgent.provider;
|
|
824
867
|
additionalMessage = ( new MarkdownString(( localize(
|
|
825
|
-
|
|
868
|
+
7429,
|
|
826
869
|
"By continuing with {0} Copilot, you agree to {1}'s [Terms]({2}) and [Privacy Statement]({3}).",
|
|
827
870
|
providers.default.name,
|
|
828
871
|
providers.default.name,
|
|
@@ -904,7 +947,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
904
947
|
return ( new MarkdownString(""));
|
|
905
948
|
} else if (this._instructionFilesExist === false) {
|
|
906
949
|
return (new MarkdownString(localize(
|
|
907
|
-
|
|
950
|
+
7430,
|
|
908
951
|
"[Generate Agent Instructions]({0}) to onboard AI onto your codebase.",
|
|
909
952
|
`command:${GENERATE_AGENT_INSTRUCTIONS_COMMAND_ID}`
|
|
910
953
|
), {
|
|
@@ -930,19 +973,19 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
930
973
|
const providerTitle = contribution?.welcomeTitle;
|
|
931
974
|
const providerMessage = contribution?.welcomeMessage;
|
|
932
975
|
const message = providerMessage ? ( new MarkdownString(providerMessage)) : (this._lockedAgent?.prefix === "@copilot " ? ( new MarkdownString(( localize(
|
|
933
|
-
|
|
976
|
+
7431,
|
|
934
977
|
"This chat session will be forwarded to the {0} [coding agent]({1}) where work is completed in the background. ",
|
|
935
978
|
this._lockedAgent.prefix,
|
|
936
979
|
"https://aka.ms/coding-agent-docs"
|
|
937
980
|
)) + DISCLAIMER, {
|
|
938
981
|
isTrusted: true
|
|
939
982
|
})) : ( new MarkdownString(( localize(
|
|
940
|
-
|
|
983
|
+
7432,
|
|
941
984
|
"This chat session will be forwarded to the {0} coding agent where work is completed in the background. ",
|
|
942
985
|
this._lockedAgent?.prefix
|
|
943
986
|
)) + DISCLAIMER)));
|
|
944
987
|
return {
|
|
945
|
-
title: providerTitle ?? ( localize(
|
|
988
|
+
title: providerTitle ?? ( localize(7433, "Delegate to {0}", this._lockedAgent?.prefix)),
|
|
946
989
|
message,
|
|
947
990
|
icon: providerIcon ?? Codicon.sendToRemoteAgent,
|
|
948
991
|
additionalMessage,
|
|
@@ -951,11 +994,11 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
951
994
|
}
|
|
952
995
|
let title;
|
|
953
996
|
if (this.input.currentModeKind === ChatModeKind.Ask) {
|
|
954
|
-
title = ( localize(
|
|
997
|
+
title = ( localize(7434, "Ask about your code"));
|
|
955
998
|
} else if (this.input.currentModeKind === ChatModeKind.Edit) {
|
|
956
|
-
title = ( localize(
|
|
999
|
+
title = ( localize(7435, "Edit in context"));
|
|
957
1000
|
} else {
|
|
958
|
-
title = ( localize(
|
|
1001
|
+
title = ( localize(7436, "Build with Agent"));
|
|
959
1002
|
}
|
|
960
1003
|
return {
|
|
961
1004
|
title,
|
|
@@ -998,10 +1041,11 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
998
1041
|
}
|
|
999
1042
|
const modeInfo = lastItem.model.request?.modeInfo;
|
|
1000
1043
|
let responseMode;
|
|
1044
|
+
const modes = this.input.currentChatModesObs.get();
|
|
1001
1045
|
if (modeInfo?.modeInstructions?.name) {
|
|
1002
|
-
responseMode =
|
|
1046
|
+
responseMode = modes.findModeByName(modeInfo.modeInstructions.name);
|
|
1003
1047
|
} else if (modeInfo?.modeId) {
|
|
1004
|
-
responseMode =
|
|
1048
|
+
responseMode = modes.findModeById(modeInfo.modeId);
|
|
1005
1049
|
} else {
|
|
1006
1050
|
responseMode = this.input.currentModeObs.get();
|
|
1007
1051
|
}
|
|
@@ -1037,7 +1081,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1037
1081
|
}
|
|
1038
1082
|
const promptToUse = handoff.prompt;
|
|
1039
1083
|
const currentMode = this.input.currentModeObs.get();
|
|
1040
|
-
const toMode = handoff.agent ? this.
|
|
1084
|
+
const toMode = handoff.agent ? this.input.currentChatModesObs.get().findModeByName(handoff.agent) : undefined;
|
|
1041
1085
|
this.telemetryService.publicLog2("chat.handoffClicked", {
|
|
1042
1086
|
fromAgent: getModeNameForTelemetry(currentMode),
|
|
1043
1087
|
toAgent: agentId || (toMode ? getModeNameForTelemetry(toMode) : ""),
|
|
@@ -1059,14 +1103,22 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1059
1103
|
e => this.logService.error(`[Handoff] Failed to submit delegated handoff to '@${agentId}'`, e)
|
|
1060
1104
|
);
|
|
1061
1105
|
} else if (handoff.agent) {
|
|
1062
|
-
this._switchToAgentByName(handoff.agent);
|
|
1106
|
+
const switched = await this._switchToAgentByName(handoff.agent);
|
|
1107
|
+
if (!switched) {
|
|
1108
|
+
this.logService.warn(
|
|
1109
|
+
`[Handoff] Did not execute handoff '${handoff.label}' to '${handoff.agent}' because switching agents was unsuccessful`
|
|
1110
|
+
);
|
|
1111
|
+
return;
|
|
1112
|
+
}
|
|
1063
1113
|
if (handoff.model) {
|
|
1064
1114
|
this.input.switchModelByQualifiedName([handoff.model]);
|
|
1065
1115
|
}
|
|
1066
1116
|
this.input.setValue(promptToUse, false);
|
|
1067
1117
|
this.input.focus();
|
|
1068
1118
|
if (handoff.send) {
|
|
1069
|
-
this.acceptInput()
|
|
1119
|
+
this.acceptInput().catch(
|
|
1120
|
+
e => this.logService.error(`[Handoff] Failed to submit handoff to '${handoff.agent}'`, e)
|
|
1121
|
+
);
|
|
1070
1122
|
}
|
|
1071
1123
|
}
|
|
1072
1124
|
}
|
|
@@ -1175,7 +1227,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1175
1227
|
}
|
|
1176
1228
|
}
|
|
1177
1229
|
async archiveLocalParentSession(sessionResource) {
|
|
1178
|
-
if (sessionResource
|
|
1230
|
+
if (getChatSessionType(sessionResource) !== localChatSessionType && !IsSessionsWindowContext.getValue(this.contextKeyService)) {
|
|
1179
1231
|
return;
|
|
1180
1232
|
}
|
|
1181
1233
|
this.logService.debug(
|
|
@@ -1500,7 +1552,10 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1500
1552
|
if (e.followup.subCommand) {
|
|
1501
1553
|
msg += `${chatSubcommandLeader}${e.followup.subCommand} `;
|
|
1502
1554
|
}
|
|
1503
|
-
} else if (!e.followup.agentId && e.followup.subCommand && this.chatSlashCommandService.hasCommand(
|
|
1555
|
+
} else if (!e.followup.agentId && e.followup.subCommand && this.chatSlashCommandService.hasCommand(
|
|
1556
|
+
e.followup.subCommand,
|
|
1557
|
+
getChatSessionType(this.viewModel.model.sessionResource)
|
|
1558
|
+
)) {
|
|
1504
1559
|
msg = `${chatSubcommandLeader}${e.followup.subCommand} `;
|
|
1505
1560
|
}
|
|
1506
1561
|
msg += e.followup.message;
|
|
@@ -1592,10 +1647,12 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1592
1647
|
throw ( new Error("Call render() before setModel()"));
|
|
1593
1648
|
}
|
|
1594
1649
|
if (!model) {
|
|
1650
|
+
this.inputPart.flushInputStateToModel();
|
|
1595
1651
|
if (this.viewModel?.editing) {
|
|
1596
1652
|
this.finishedEditing();
|
|
1597
1653
|
}
|
|
1598
1654
|
this.viewModel = undefined;
|
|
1655
|
+
this.updateWorkingProgressBorder();
|
|
1599
1656
|
this.onDidChangeItems();
|
|
1600
1657
|
this._hasPendingRequestsContextKey.set(false);
|
|
1601
1658
|
return;
|
|
@@ -1615,14 +1672,14 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1615
1672
|
const tipContainer = this.inputPart.gettingStartedTipContainerElement;
|
|
1616
1673
|
clearNode(tipContainer);
|
|
1617
1674
|
setVisibility(false, tipContainer);
|
|
1618
|
-
this.inputPart.setInputModel(model.inputModel, model.getRequests().length === 0);
|
|
1675
|
+
this.inputPart.setInputModel(model.inputModel, model.getRequests().length === 0, model.sessionResource);
|
|
1619
1676
|
this.viewModel = this.instantiationService.createInstance(ChatViewModel, model, undefined);
|
|
1620
1677
|
this.listWidget.setViewModel(this.viewModel);
|
|
1621
1678
|
if (this._lockedAgent) {
|
|
1622
1679
|
let placeholder = this.chatSessionsService.getChatSessionContribution(this._lockedAgent.id)?.inputPlaceholder;
|
|
1623
1680
|
if (!placeholder) {
|
|
1624
1681
|
placeholder = ( localize(
|
|
1625
|
-
|
|
1682
|
+
7437,
|
|
1626
1683
|
"Chat with {0}",
|
|
1627
1684
|
this._lockedAgent.displayName || this._lockedAgent.name
|
|
1628
1685
|
));
|
|
@@ -1645,6 +1702,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1645
1702
|
}
|
|
1646
1703
|
this.requestInProgress.set(this.viewModel.model.requestInProgress.get());
|
|
1647
1704
|
this.hasActiveRequest.set(this.viewModel.model.hasActiveRequest.get());
|
|
1705
|
+
this.updateWorkingProgressBorder();
|
|
1648
1706
|
if (events?.some(e => e?.kind === "changePlaceholder")) {
|
|
1649
1707
|
this.inputEditor.updateOptions({
|
|
1650
1708
|
placeholder: this.viewModel.inputPlaceholder
|
|
@@ -1661,14 +1719,21 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1661
1719
|
this.finishedEditing();
|
|
1662
1720
|
}
|
|
1663
1721
|
this.viewModel = undefined;
|
|
1722
|
+
this.updateWorkingProgressBorder();
|
|
1664
1723
|
this.onDidChangeItems();
|
|
1665
1724
|
}));
|
|
1666
1725
|
this._sessionIsEmptyContextKey.set(model.getRequests().length === 0);
|
|
1667
|
-
const
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1726
|
+
const updateSupportsFork = () => {
|
|
1727
|
+
const supportsFork = this.chatSessionsService.sessionSupportsFork(model.sessionResource);
|
|
1728
|
+
this._chatSessionSupportsForkContextKey.set(supportsFork);
|
|
1729
|
+
this.listWidget?.updateRendererOptions({
|
|
1730
|
+
supportsFork
|
|
1731
|
+
});
|
|
1732
|
+
};
|
|
1733
|
+
updateSupportsFork();
|
|
1734
|
+
this.viewModelDisposables.add(
|
|
1735
|
+
this.chatSessionsService.onDidChangeAvailability(() => updateSupportsFork())
|
|
1736
|
+
);
|
|
1672
1737
|
this._sessionHasDebugDataContextKey.set(this.chatDebugService.getEvents(model.sessionResource).length > 0);
|
|
1673
1738
|
let lastSteeringCount = 0;
|
|
1674
1739
|
const updatePendingRequestKeys = announceSteering => {
|
|
@@ -1677,7 +1742,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1677
1742
|
this._hasPendingRequestsContextKey.set(pendingCount > 0);
|
|
1678
1743
|
const steeringCount = pendingRequests.filter(pending => pending.kind === ChatRequestQueueKind.Steering).length;
|
|
1679
1744
|
if (announceSteering && steeringCount > 0 && lastSteeringCount === 0) {
|
|
1680
|
-
status(( localize(
|
|
1745
|
+
status(( localize(7438, "Steering")));
|
|
1681
1746
|
}
|
|
1682
1747
|
lastSteeringCount = steeringCount;
|
|
1683
1748
|
};
|
|
@@ -1752,6 +1817,9 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1752
1817
|
return this.contribs.find(c => c.id === id);
|
|
1753
1818
|
}
|
|
1754
1819
|
lockToCodingAgent(name, displayName, agentId) {
|
|
1820
|
+
if (this._lockedAgent?.id === agentId && this._lockedAgent.name === name && this._lockedAgent.displayName === displayName) {
|
|
1821
|
+
return;
|
|
1822
|
+
}
|
|
1755
1823
|
this._lockedAgent = {
|
|
1756
1824
|
id: agentId,
|
|
1757
1825
|
name,
|
|
@@ -1775,6 +1843,9 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1775
1843
|
}
|
|
1776
1844
|
}
|
|
1777
1845
|
unlockFromCodingAgent() {
|
|
1846
|
+
if (!this._lockedAgent) {
|
|
1847
|
+
return;
|
|
1848
|
+
}
|
|
1778
1849
|
this._lockedAgent = undefined;
|
|
1779
1850
|
this._lockedToCodingAgentContextKey.set(false);
|
|
1780
1851
|
this._lockedCodingAgentIdContextKey.set("");
|
|
@@ -1850,15 +1921,16 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1850
1921
|
requestKind
|
|
1851
1922
|
});
|
|
1852
1923
|
}
|
|
1853
|
-
async _applyPromptFileIfSet(requestInput) {
|
|
1924
|
+
async _applyPromptFileIfSet(requestInput, sessionResource) {
|
|
1854
1925
|
const agentSlashPromptPart = this.parsedInput.parts.find(r => r instanceof ChatRequestSlashPromptPart);
|
|
1855
1926
|
if (!agentSlashPromptPart) {
|
|
1856
|
-
return;
|
|
1927
|
+
return true;
|
|
1857
1928
|
}
|
|
1858
1929
|
this.chatTipService.recordSlashCommandUsage(agentSlashPromptPart.name);
|
|
1859
|
-
const
|
|
1930
|
+
const sessionType = getChatSessionType(sessionResource);
|
|
1931
|
+
const slashCommand = await this.customizationHarnessService.resolvePromptSlashCommand(agentSlashPromptPart.name, sessionType, CancellationToken.None);
|
|
1860
1932
|
if (!slashCommand) {
|
|
1861
|
-
return;
|
|
1933
|
+
return true;
|
|
1862
1934
|
}
|
|
1863
1935
|
const parseResult = slashCommand.parsedPromptFile;
|
|
1864
1936
|
const refs = parseResult.body?.variableReferences.map((
|
|
@@ -1890,8 +1962,12 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1890
1962
|
}
|
|
1891
1963
|
this.telemetryService.publicLog2("chat.promptRun", promptRunEvent);
|
|
1892
1964
|
if (parseResult.header) {
|
|
1893
|
-
await this._applyPromptMetadata(parseResult.header, requestInput);
|
|
1965
|
+
const applied = await this._applyPromptMetadata(parseResult.header, requestInput);
|
|
1966
|
+
if (!applied) {
|
|
1967
|
+
return false;
|
|
1968
|
+
}
|
|
1894
1969
|
}
|
|
1970
|
+
return true;
|
|
1895
1971
|
}
|
|
1896
1972
|
async _acceptInput(query, options = {}) {
|
|
1897
1973
|
if (!query && this.input.generating) {
|
|
@@ -1958,7 +2034,10 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1958
2034
|
if (!requestInProgress && !isEditing && !(await this.confirmPendingRequestsBeforeSend(model, options))) {
|
|
1959
2035
|
return;
|
|
1960
2036
|
}
|
|
1961
|
-
await this._applyPromptFileIfSet(requestInputs);
|
|
2037
|
+
const promptApplied = await this._applyPromptFileIfSet(requestInputs, this.viewModel.sessionResource);
|
|
2038
|
+
if (!promptApplied) {
|
|
2039
|
+
return;
|
|
2040
|
+
}
|
|
1962
2041
|
if (this.viewOptions.enableWorkingSet !== undefined && this.input.currentModeKind === ChatModeKind.Edit) {
|
|
1963
2042
|
const uniqueWorkingSetEntries = ( new ResourceSet());
|
|
1964
2043
|
const editingSessionAttachedContext = requestInputs.attachedContext;
|
|
@@ -2090,16 +2169,16 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2090
2169
|
}
|
|
2091
2170
|
const promptResult = await this.dialogService.prompt({
|
|
2092
2171
|
type: "question",
|
|
2093
|
-
message: ( localize(
|
|
2172
|
+
message: ( localize(7439, "You already have pending requests.")),
|
|
2094
2173
|
detail: ( localize(
|
|
2095
|
-
|
|
2174
|
+
7440,
|
|
2096
2175
|
"Do you want to keep them in the queue or remove them before sending this message?"
|
|
2097
2176
|
)),
|
|
2098
2177
|
buttons: [{
|
|
2099
|
-
label: ( localize(
|
|
2178
|
+
label: ( localize(7441, "Keep Pending Requests")),
|
|
2100
2179
|
run: () => "keep"
|
|
2101
2180
|
}, {
|
|
2102
|
-
label: ( localize(
|
|
2181
|
+
label: ( localize(7442, "Remove Pending Requests")),
|
|
2103
2182
|
run: () => "remove"
|
|
2104
2183
|
}],
|
|
2105
2184
|
cancelButton: true
|
|
@@ -2115,6 +2194,9 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2115
2194
|
return true;
|
|
2116
2195
|
}
|
|
2117
2196
|
getModeRequestOptions() {
|
|
2197
|
+
if (!this.inputPartDisposable.value) {
|
|
2198
|
+
return {};
|
|
2199
|
+
}
|
|
2118
2200
|
const sessionResource = this.viewModel?.sessionResource;
|
|
2119
2201
|
const capturedModeId = this.input.currentModeObs.get().id;
|
|
2120
2202
|
const userSelectedTools = this.input.selectedToolsModel.userSelectedTools;
|
|
@@ -2289,27 +2371,30 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2289
2371
|
}
|
|
2290
2372
|
async _switchToAgentByName(agentName) {
|
|
2291
2373
|
const currentAgent = this.input.currentModeObs.get();
|
|
2292
|
-
if (agentName
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2374
|
+
if (agentName === currentAgent.name.get()) {
|
|
2375
|
+
return true;
|
|
2376
|
+
}
|
|
2377
|
+
const agent = this.input.currentChatModesObs.get().findModeByName(agentName);
|
|
2378
|
+
if (!agent) {
|
|
2379
|
+
return false;
|
|
2380
|
+
}
|
|
2381
|
+
if (currentAgent.kind !== agent.kind) {
|
|
2382
|
+
const chatModeCheck = await this.instantiationService.invokeFunction(
|
|
2383
|
+
handleModeSwitch,
|
|
2384
|
+
currentAgent.kind,
|
|
2385
|
+
agent.kind,
|
|
2386
|
+
this.viewModel?.model.getRequests().length ?? 0,
|
|
2387
|
+
this.viewModel?.model
|
|
2388
|
+
);
|
|
2389
|
+
if (!chatModeCheck) {
|
|
2390
|
+
return false;
|
|
2391
|
+
}
|
|
2392
|
+
if (chatModeCheck.needToClearSession) {
|
|
2393
|
+
await this.clear();
|
|
2311
2394
|
}
|
|
2312
2395
|
}
|
|
2396
|
+
this.input.setChatMode(agent.id);
|
|
2397
|
+
return true;
|
|
2313
2398
|
}
|
|
2314
2399
|
async _applyPromptMetadata(
|
|
2315
2400
|
{
|
|
@@ -2323,7 +2408,10 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2323
2408
|
agent = ChatMode.Agent.name.get();
|
|
2324
2409
|
}
|
|
2325
2410
|
if (agent) {
|
|
2326
|
-
this._switchToAgentByName(agent);
|
|
2411
|
+
const switched = await this._switchToAgentByName(agent);
|
|
2412
|
+
if (!switched) {
|
|
2413
|
+
return false;
|
|
2414
|
+
}
|
|
2327
2415
|
}
|
|
2328
2416
|
if (tools !== undefined && this.input.currentModeKind === ChatModeKind.Agent) {
|
|
2329
2417
|
const enablementMap = this.toolsService.toToolAndToolSetEnablementMap(tools, this.input.selectedLanguageModel.get()?.metadata);
|
|
@@ -2332,12 +2420,13 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2332
2420
|
if (model !== undefined) {
|
|
2333
2421
|
this.input.switchModelByQualifiedName(model);
|
|
2334
2422
|
}
|
|
2423
|
+
return true;
|
|
2335
2424
|
}
|
|
2336
2425
|
delegateScrollFromMouseWheelEvent(browserEvent) {
|
|
2337
2426
|
this.listWidget.delegateScrollFromMouseWheelEvent(browserEvent);
|
|
2338
2427
|
}
|
|
2339
2428
|
};
|
|
2340
|
-
ChatWidget = ChatWidget_1 = ( __decorate([( __param(4, ICodeEditorService)), ( __param(5, IConfigurationService)), ( __param(6, IDialogService)), ( __param(7, IContextKeyService)), ( __param(8, IInstantiationService)), ( __param(9, IChatService)), ( __param(10, IChatAgentService)), ( __param(11, IChatWidgetService)), ( __param(12, IChatAccessibilityService)), ( __param(13, ILogService)), ( __param(14, IThemeService)), ( __param(15, IChatSlashCommandService)), ( __param(16, IChatEditingService)), ( __param(17, ITelemetryService)), ( __param(18, IPromptsService)), ( __param(19,
|
|
2429
|
+
ChatWidget = ChatWidget_1 = ( __decorate([( __param(4, ICodeEditorService)), ( __param(5, IConfigurationService)), ( __param(6, IDialogService)), ( __param(7, IContextKeyService)), ( __param(8, IInstantiationService)), ( __param(9, IChatService)), ( __param(10, IChatAgentService)), ( __param(11, IChatWidgetService)), ( __param(12, IChatAccessibilityService)), ( __param(13, ILogService)), ( __param(14, IThemeService)), ( __param(15, IChatSlashCommandService)), ( __param(16, IChatEditingService)), ( __param(17, ITelemetryService)), ( __param(18, IPromptsService)), ( __param(19, ICustomizationHarnessService)), ( __param(20, ILanguageModelToolsService)), ( __param(21, IChatLayoutService)), ( __param(22, IChatEntitlementService)), ( __param(23, IChatSessionsService)), ( __param(24, IAgentSessionsService)), ( __param(25, IChatTodoListService)), ( __param(26, ILifecycleService)), ( __param(27, IChatAttachmentResolveService)), ( __param(28, IChatTipService)), ( __param(29, IChatDebugService)), ( __param(30, IAccessibilityService))], ChatWidget));
|
|
2341
2430
|
const MIN_LIST_HEIGHT = 50;
|
|
2342
2431
|
|
|
2343
2432
|
export { ChatWidget, isQuickChat };
|
|
@@ -45,7 +45,7 @@ let ChatFollowups = class ChatFollowups extends Disposable {
|
|
|
45
45
|
} else if (followup.kind === "command") {
|
|
46
46
|
button.element.classList.add("interactive-followup-command");
|
|
47
47
|
}
|
|
48
|
-
button.element.ariaLabel = ( localize(
|
|
48
|
+
button.element.ariaLabel = ( localize(7443, "Follow up question: {0}", baseTitle));
|
|
49
49
|
button.label = ( new MarkdownString(baseTitle));
|
|
50
50
|
this._register(button.onDidClick(() => this.clickHandler(followup)));
|
|
51
51
|
}
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
|
|
2
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { IChatInputNotificationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.service";
|
|
4
|
+
export declare enum ChatInputNotificationSeverity {
|
|
5
|
+
Info = 0,
|
|
6
|
+
Warning = 1,
|
|
7
|
+
Error = 2
|
|
8
|
+
}
|
|
9
|
+
export interface IChatInputNotificationAction {
|
|
10
|
+
readonly label: string;
|
|
11
|
+
readonly commandId: string;
|
|
12
|
+
readonly commandArgs?: unknown[];
|
|
13
|
+
}
|
|
14
|
+
export interface IChatInputNotification {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly severity: ChatInputNotificationSeverity;
|
|
17
|
+
readonly message: string | IMarkdownString;
|
|
18
|
+
readonly description: string | undefined;
|
|
19
|
+
readonly actions: readonly IChatInputNotificationAction[];
|
|
20
|
+
readonly dismissible: boolean;
|
|
21
|
+
readonly autoDismissOnMessage: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare class ChatInputNotificationService extends Disposable implements IChatInputNotificationService {
|
|
24
|
+
readonly _serviceBrand: undefined;
|
|
25
|
+
private readonly _notifications;
|
|
26
|
+
private readonly _dismissed;
|
|
27
|
+
/** Insertion order tracking — higher index = more recently set. */
|
|
28
|
+
private readonly _insertionOrder;
|
|
29
|
+
private _insertionCounter;
|
|
30
|
+
private readonly _onDidChange;
|
|
31
|
+
readonly onDidChange: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Signature of the last active notification we announced via ARIA, so we
|
|
34
|
+
* don't re-announce the same content when the model fires `onDidChange`
|
|
35
|
+
* for unrelated reasons or when the same notification is re-pushed.
|
|
36
|
+
*/
|
|
37
|
+
private _lastAnnouncedSignature;
|
|
38
|
+
setNotification(notification: IChatInputNotification): void;
|
|
39
|
+
deleteNotification(id: string): void;
|
|
40
|
+
dismissNotification(id: string): void;
|
|
41
|
+
getActiveNotification(): IChatInputNotification | undefined;
|
|
42
|
+
handleMessageSent(): void;
|
|
43
|
+
private _fireDidChange;
|
|
44
|
+
/**
|
|
45
|
+
* Announce the currently active notification to screen readers, but only
|
|
46
|
+
* when its content differs from the last announced one. This prevents
|
|
47
|
+
* the same notification from being announced repeatedly when:
|
|
48
|
+
* - the same notification is re-pushed by an extension (e.g. on every
|
|
49
|
+
* quota change tick),
|
|
50
|
+
* - multiple chat widgets are mounted (panel, side bar, etc.) — the
|
|
51
|
+
* announcement happens once at the singleton level instead of once
|
|
52
|
+
* per widget.
|
|
53
|
+
*/
|
|
54
|
+
private _announceActiveIfChanged;
|
|
55
|
+
}
|