@codingame/monaco-vscode-katex-common 27.0.0 → 28.0.1
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.js +2 -0
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
- package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +30 -2
- package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +17 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +90 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +63 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +13 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +28 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +133 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +38 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +72 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
- 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.d.ts +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/chatChangesSummaryPart.d.ts +1 -1
- 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.d.ts +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/chatCollapsibleContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +3 -3
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +8 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +26 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +290 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +22 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -18
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
- 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.d.ts +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.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +129 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +56 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +20 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +43 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +42 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +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 +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +1 -1
- 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/chatToolProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
- 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 +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +61 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +7 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +81 -191
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +31 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +334 -181
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +51 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -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/modePickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +16 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +10 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +174 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +2 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +12 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +19 -4
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +22 -6
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +24 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +38 -46
- 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/replNotebook/browser/replEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
|
@@ -4,7 +4,7 @@ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
4
4
|
import { IMarkdownRendererService } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service";
|
|
5
5
|
import { IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
|
|
6
6
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
7
|
-
import { IChatContentPartRenderContext } from "
|
|
7
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
8
8
|
import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
|
|
9
9
|
/**
|
|
10
10
|
* Data needed to render an MCP App, available before tool completion.
|
|
@@ -39,6 +39,10 @@ export declare class ChatMcpAppSubPart extends BaseChatToolInvocationSubPart {
|
|
|
39
39
|
private readonly _progressPart;
|
|
40
40
|
/** Current error node */
|
|
41
41
|
private _errorNode;
|
|
42
|
+
/** Container for download resource pills */
|
|
43
|
+
private readonly _downloadContainer;
|
|
44
|
+
/** Current resource group widget for downloads */
|
|
45
|
+
private readonly _downloadWidget;
|
|
42
46
|
constructor(toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized, onDidRemount: Event<void>, context: IChatContentPartRenderContext, _renderData: IMcpAppRenderData, _instantiationService: IInstantiationService, _markdownRendererService: IMarkdownRendererService);
|
|
43
47
|
private _handleLoadStateChange;
|
|
44
48
|
private _updateContainerHeight;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
-
import { $, getWindow, addDisposableListener, append } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
3
|
+
import { $, getWindow, addDisposableListener, clearNode, append } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
4
|
import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
|
|
5
5
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
6
6
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
@@ -14,6 +14,7 @@ import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/plat
|
|
|
14
14
|
import { ChatErrorLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
15
15
|
import { ChatErrorWidget } from '../chatErrorContentPart.js';
|
|
16
16
|
import { ChatProgressSubPart } from '../chatProgressContentPart.js';
|
|
17
|
+
import { ChatResourceGroupWidget } from '../chatResourceGroupWidget.js';
|
|
17
18
|
import { ChatMcpAppModel } from './chatMcpAppModel.js';
|
|
18
19
|
import { BaseChatToolInvocationSubPart } from './chatToolInvocationSubPart.js';
|
|
19
20
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
@@ -35,12 +36,15 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
|
|
|
35
36
|
this._markdownRendererService = _markdownRendererService;
|
|
36
37
|
this.codeblocks = [];
|
|
37
38
|
this._progressPart = this._register(( new MutableDisposable()));
|
|
39
|
+
this._downloadWidget = this._register(( new MutableDisposable()));
|
|
38
40
|
this.domNode = $("div.mcp-app-part");
|
|
39
41
|
this._webviewContainer = $("div.mcp-app-webview");
|
|
40
42
|
this._webviewContainer.style.maxHeight = `${maxWebviewHeightPct * 100}vh`;
|
|
41
43
|
this._webviewContainer.style.minHeight = "100px";
|
|
42
44
|
this._webviewContainer.style.height = "300px";
|
|
43
45
|
this.domNode.appendChild(this._webviewContainer);
|
|
46
|
+
this._downloadContainer = $("div.mcp-app-downloads");
|
|
47
|
+
this.domNode.appendChild(this._downloadContainer);
|
|
44
48
|
const targetWindow = getWindow(this.domNode);
|
|
45
49
|
const getMaxHeight = () => maxWebviewHeightPct * targetWindow.innerHeight;
|
|
46
50
|
const maxHeight = observableValue("mcpAppMaxHeight", getMaxHeight());
|
|
@@ -61,6 +65,18 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
|
|
|
61
65
|
this._register(this._model.onDidChangeHeight(() => {
|
|
62
66
|
this._updateContainerHeight();
|
|
63
67
|
}));
|
|
68
|
+
this._register(autorun(reader => {
|
|
69
|
+
const parts = this._model.downloadParts.read(reader);
|
|
70
|
+
if (parts.length === 0) {
|
|
71
|
+
this._downloadWidget.clear();
|
|
72
|
+
clearNode(this._downloadContainer);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
clearNode(this._downloadContainer);
|
|
76
|
+
const widget = this._instantiationService.createInstance(ChatResourceGroupWidget, parts);
|
|
77
|
+
this._downloadWidget.value = widget;
|
|
78
|
+
this._downloadContainer.appendChild(widget.domNode);
|
|
79
|
+
}));
|
|
64
80
|
this._register(onDidRemount(() => {
|
|
65
81
|
this._model.remount();
|
|
66
82
|
}));
|
|
@@ -84,7 +100,7 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
|
|
|
84
100
|
{
|
|
85
101
|
container.style.display = "none";
|
|
86
102
|
const progressMessage = $("span");
|
|
87
|
-
progressMessage.textContent = ( localize(
|
|
103
|
+
progressMessage.textContent = ( localize(6661, "Loading MCP App..."));
|
|
88
104
|
const progressPart = this._instantiationService.createInstance(
|
|
89
105
|
ChatProgressSubPart,
|
|
90
106
|
progressMessage,
|
|
@@ -114,12 +130,12 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
|
|
|
114
130
|
_showError(container, error) {
|
|
115
131
|
const errorNode = $(".mcp-app-error");
|
|
116
132
|
const errorMessage = ( new MarkdownString());
|
|
117
|
-
errorMessage.appendText(( localize(
|
|
133
|
+
errorMessage.appendText(( localize(6662, "Error loading MCP App: {0}", error.message || String(error))));
|
|
118
134
|
const errorWidget = this._register(( new ChatErrorWidget(ChatErrorLevel.Error, errorMessage, this._markdownRendererService)));
|
|
119
135
|
errorNode.appendChild(errorWidget.domNode);
|
|
120
136
|
const buttonContainer = append(errorNode, $(".chat-buttons-container"));
|
|
121
137
|
const retryButton = this._register(( new Button(buttonContainer, defaultButtonStyles)));
|
|
122
|
-
retryButton.label = ( localize(
|
|
138
|
+
retryButton.label = ( localize(6663, "Retry"));
|
|
123
139
|
this._register(retryButton.onDidClick(() => {
|
|
124
140
|
this._model.retry();
|
|
125
141
|
}));
|
|
@@ -4,7 +4,7 @@ import { Location } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/l
|
|
|
4
4
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
5
5
|
import { IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
|
|
6
6
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
7
|
-
import { IChatContentPartRenderContext } from "
|
|
7
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
8
8
|
import { CollapsibleListPool } from "../chatReferencesContentPart.js";
|
|
9
9
|
import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
|
|
10
10
|
export declare class ChatResultListSubPart extends BaseChatToolInvocationSubPart {
|
|
@@ -5,7 +5,7 @@ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
5
5
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
6
6
|
import { IChatSimpleToolInvocationData, IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
|
|
7
7
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
8
|
-
import { IChatContentPartRenderContext } from "
|
|
8
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
9
9
|
import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
|
|
10
10
|
export declare class ChatSimpleToolProgressPart extends BaseChatToolInvocationSubPart {
|
|
11
11
|
/** Remembers expanded tool parts on re-render */
|
|
@@ -16,7 +16,7 @@ import type { CodeBlockModelCollection } from "../../../../common/widget/codeBlo
|
|
|
16
16
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
17
17
|
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
18
18
|
import { EditorPool } from "../chatContentCodePools.js";
|
|
19
|
-
import { IChatContentPartRenderContext } from "
|
|
19
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
20
20
|
import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
|
|
21
21
|
export declare enum TerminalToolConfirmationStorageKeys {
|
|
22
22
|
TerminalAutoApproveWarningAccepted = "chat.tools.terminal.autoApprove.warningAccepted"
|
|
@@ -113,7 +113,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
113
113
|
moreActions = [];
|
|
114
114
|
if (!autoApproveWarningAccepted) {
|
|
115
115
|
moreActions.push({
|
|
116
|
-
label: ( localize(
|
|
116
|
+
label: ( localize(6664, "Enable Auto Approve...")),
|
|
117
117
|
data: {
|
|
118
118
|
type: "enable"
|
|
119
119
|
}
|
|
@@ -319,7 +319,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
319
319
|
}
|
|
320
320
|
const target = scope === "workspace" ? ConfigurationTarget.WORKSPACE : ConfigurationTarget.USER;
|
|
321
321
|
const settingsUri = createCommandUri(TerminalContribCommandId.OpenTerminalSettingsLink, target);
|
|
322
|
-
return `[\`${e.key}\`](${( settingsUri.toString())} "${( localize(
|
|
322
|
+
return `[\`${e.key}\`](${( settingsUri.toString())} "${( localize(6665, "View rule in settings"))}")`;
|
|
323
323
|
})).join(", ");
|
|
324
324
|
}
|
|
325
325
|
const mdTrustSettings = {
|
|
@@ -330,33 +330,33 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
330
330
|
const parts = [];
|
|
331
331
|
if (sessionRules.length > 0) {
|
|
332
332
|
parts.push(sessionRules.length === 1 ? ( localize(
|
|
333
|
-
|
|
333
|
+
6666,
|
|
334
334
|
"Session auto approve rule {0} added",
|
|
335
335
|
formatRuleLinks(sessionRules, "session")
|
|
336
336
|
)) : ( localize(
|
|
337
|
-
|
|
337
|
+
6667,
|
|
338
338
|
"Session auto approve rules {0} added",
|
|
339
339
|
formatRuleLinks(sessionRules, "session")
|
|
340
340
|
)));
|
|
341
341
|
}
|
|
342
342
|
if (workspaceRules.length > 0) {
|
|
343
343
|
parts.push(workspaceRules.length === 1 ? ( localize(
|
|
344
|
-
|
|
344
|
+
6668,
|
|
345
345
|
"Workspace auto approve rule {0} added",
|
|
346
346
|
formatRuleLinks(workspaceRules, "workspace")
|
|
347
347
|
)) : ( localize(
|
|
348
|
-
|
|
348
|
+
6669,
|
|
349
349
|
"Workspace auto approve rules {0} added",
|
|
350
350
|
formatRuleLinks(workspaceRules, "workspace")
|
|
351
351
|
)));
|
|
352
352
|
}
|
|
353
353
|
if (userRules.length > 0) {
|
|
354
354
|
parts.push(userRules.length === 1 ? ( localize(
|
|
355
|
-
|
|
355
|
+
6670,
|
|
356
356
|
"User auto approve rule {0} added",
|
|
357
357
|
formatRuleLinks(userRules, "user")
|
|
358
358
|
)) : ( localize(
|
|
359
|
-
|
|
359
|
+
6671,
|
|
360
360
|
"User auto approve rules {0} added",
|
|
361
361
|
formatRuleLinks(userRules, "user")
|
|
362
362
|
)));
|
|
@@ -386,7 +386,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
386
386
|
enabledCommands: [TerminalContribCommandId.DisableSessionAutoApproval]
|
|
387
387
|
}
|
|
388
388
|
};
|
|
389
|
-
terminalData.autoApproveInfo = ( new MarkdownString(`${( localize(
|
|
389
|
+
terminalData.autoApproveInfo = ( new MarkdownString(`${( localize(6672, "All commands will be auto approved for this session"))} ([${( localize(6673, "Disable"))}](${( disableUri.toString())}))`, mdTrustSettings));
|
|
390
390
|
toolConfirmKind = ToolConfirmKind.UserAction;
|
|
391
391
|
break;
|
|
392
392
|
}
|
|
@@ -410,11 +410,11 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
410
410
|
};
|
|
411
411
|
};
|
|
412
412
|
return [{
|
|
413
|
-
...getLabelAndTooltip(( localize(
|
|
413
|
+
...getLabelAndTooltip(( localize(6674, "Allow")), AcceptToolConfirmationActionId),
|
|
414
414
|
data: true,
|
|
415
415
|
moreActions
|
|
416
416
|
}, {
|
|
417
|
-
...getLabelAndTooltip(( localize(
|
|
417
|
+
...getLabelAndTooltip(( localize(6675, "Skip")), SkipToolConfirmationActionId, ( localize(6676, "Proceed without executing this command"))),
|
|
418
418
|
data: {
|
|
419
419
|
type: "skip"
|
|
420
420
|
},
|
|
@@ -424,9 +424,9 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
424
424
|
async _showAutoApproveWarning() {
|
|
425
425
|
const promptResult = await this.dialogService.prompt({
|
|
426
426
|
type: Severity.Info,
|
|
427
|
-
message: ( localize(
|
|
427
|
+
message: ( localize(6677, "Enable terminal auto approve?")),
|
|
428
428
|
buttons: [{
|
|
429
|
-
label: ( localize(
|
|
429
|
+
label: ( localize(6678, "Enable")),
|
|
430
430
|
run: () => true
|
|
431
431
|
}],
|
|
432
432
|
cancelButton: true,
|
|
@@ -434,11 +434,11 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
|
|
|
434
434
|
icon: Codicon.shield,
|
|
435
435
|
markdownDetails: [{
|
|
436
436
|
markdown: ( new MarkdownString(( localize(
|
|
437
|
-
|
|
437
|
+
6679,
|
|
438
438
|
"This will enable a configurable subset of commands to run in the terminal autonomously. It provides *best effort protections* and assumes the agent is not acting maliciously."
|
|
439
439
|
))))
|
|
440
440
|
}, {
|
|
441
|
-
markdown: ( new MarkdownString(`[${( localize(
|
|
441
|
+
markdown: ( new MarkdownString(`[${( localize(6680, "Learn more about the potential risks and how to avoid them."))}](https://code.visualstudio.com/docs/copilot/security#_security-considerations)`))
|
|
442
442
|
}]
|
|
443
443
|
}
|
|
444
444
|
});
|
|
@@ -4,7 +4,7 @@ import { IChatToolInvocation, IChatToolInvocationSerialized, type IChatTerminalT
|
|
|
4
4
|
import { CodeBlockModelCollection } from "../../../../common/widget/codeBlockModelCollection.js";
|
|
5
5
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
6
6
|
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
7
|
-
import { IChatContentPartRenderContext } from "
|
|
7
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
8
8
|
import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
|
|
9
9
|
import { Action, IAction } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
|
|
10
10
|
import { IChatTerminalToolProgressPart, ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
|
|
@@ -19,6 +19,25 @@ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platf
|
|
|
19
19
|
import { EditorPool } from "../chatContentCodePools.js";
|
|
20
20
|
import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
|
|
21
21
|
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
22
|
+
/**
|
|
23
|
+
* A chat content part that displays terminal tool invocation progress.
|
|
24
|
+
*
|
|
25
|
+
* This component shows:
|
|
26
|
+
* - The command being executed with syntax highlighting
|
|
27
|
+
* - A status decoration indicating success/failure/running state
|
|
28
|
+
* - Expandable terminal output with live streaming support
|
|
29
|
+
* - Actions to focus the terminal, show/hide output, and continue in background
|
|
30
|
+
*
|
|
31
|
+
* The component supports two rendering modes:
|
|
32
|
+
* - Standard mode: Shows full progress with status indicators
|
|
33
|
+
* - Collapsible wrapper mode: For thinking containers with simplified UI
|
|
34
|
+
*
|
|
35
|
+
* Output auto-expansion behavior:
|
|
36
|
+
* - Long-running commands with output auto-expand after a short delay
|
|
37
|
+
* - Fast commands that complete quickly don't auto-expand (prevents flickering)
|
|
38
|
+
* - Failed commands can be configured to auto-expand via settings
|
|
39
|
+
* - Successful commands auto-collapse if output was auto-expanded
|
|
40
|
+
*/
|
|
22
41
|
export declare class ChatTerminalToolProgressPart extends BaseChatToolInvocationSubPart implements IChatTerminalToolProgressPart {
|
|
23
42
|
private readonly _instantiationService;
|
|
24
43
|
private readonly _terminalChatService;
|
|
@@ -64,9 +83,32 @@ export declare class ChatTerminalToolProgressPart extends BaseChatToolInvocation
|
|
|
64
83
|
private _getResolvedCommand;
|
|
65
84
|
private _ensureShowOutputAction;
|
|
66
85
|
private _clearCommandAssociation;
|
|
86
|
+
/**
|
|
87
|
+
* Determines whether the terminal output should auto-expand.
|
|
88
|
+
* Returns false if already expanded, user has manually toggled, component is disposed,
|
|
89
|
+
* or if the invocation was previously expanded (to preserve state across re-renders).
|
|
90
|
+
*/
|
|
91
|
+
private _shouldAutoExpand;
|
|
92
|
+
/**
|
|
93
|
+
* Registers event listeners on the terminal instance to track command execution,
|
|
94
|
+
* manage auto-expansion of output, and handle command completion.
|
|
95
|
+
*
|
|
96
|
+
* This method sets up:
|
|
97
|
+
* - Command detection listeners for tracking command lifecycle
|
|
98
|
+
* - Auto-expand logic based on command output and duration
|
|
99
|
+
* - Instance disposal handling to clean up actions and state
|
|
100
|
+
*/
|
|
67
101
|
private _registerInstanceListener;
|
|
68
102
|
private _removeFocusAction;
|
|
69
103
|
private _removeContinueInBackgroundAction;
|
|
104
|
+
/**
|
|
105
|
+
* Handles the completion of a terminal command by updating the UI state.
|
|
106
|
+
* This includes marking the collapsible wrapper as complete, auto-collapsing
|
|
107
|
+
* successful commands, and keeping failed commands expanded.
|
|
108
|
+
*
|
|
109
|
+
* @param resolvedCommand The completed terminal command with exit code information.
|
|
110
|
+
*/
|
|
111
|
+
private _handleCommandCompletion;
|
|
70
112
|
private _toggleOutput;
|
|
71
113
|
private _ensureTerminalInstance;
|
|
72
114
|
private _handleOutputFocus;
|
|
@@ -62,6 +62,10 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
|
|
|
62
62
|
registerCss(chatTerminalToolProgressPart);
|
|
63
63
|
const MIN_OUTPUT_ROWS = 1;
|
|
64
64
|
const MAX_OUTPUT_ROWS = 10;
|
|
65
|
+
const MAX_COMMAND_TITLE_LENGTH = 50;
|
|
66
|
+
const MAX_OUTPUT_POLL_RETRIES = 10;
|
|
67
|
+
const OUTPUT_POLL_DELAY_MS = 100;
|
|
68
|
+
const MIN_DATA_EVENTS_FOR_REAL_OUTPUT = 2;
|
|
65
69
|
const expandedStateByInvocation = ( new WeakMap());
|
|
66
70
|
let TerminalCommandDecoration = class TerminalCommandDecoration extends Disposable {
|
|
67
71
|
constructor(_options, _hoverService) {
|
|
@@ -277,7 +281,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
277
281
|
const markdownOptions = {
|
|
278
282
|
codeBlockRenderOptions,
|
|
279
283
|
accessibilityOptions: pastTenseMessage ? {
|
|
280
|
-
statusMessage: ( localize(
|
|
284
|
+
statusMessage: ( localize(6681, "{0}", stripIcons(pastTenseMessage)))
|
|
281
285
|
} : undefined
|
|
282
286
|
};
|
|
283
287
|
this.markdownPart = this._register(_instantiationService.createInstance(
|
|
@@ -328,8 +332,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
328
332
|
this._register(this._terminalChatService.registerProgressPart(this));
|
|
329
333
|
}
|
|
330
334
|
_createCollapsibleWrapper(contentElement, commandText, toolInvocation, context) {
|
|
331
|
-
const
|
|
332
|
-
const truncatedCommand = commandText.length > maxCommandLength ? commandText.substring(0, maxCommandLength) + "..." : commandText;
|
|
335
|
+
const truncatedCommand = commandText.length > MAX_COMMAND_TITLE_LENGTH ? commandText.substring(0, MAX_COMMAND_TITLE_LENGTH) + "..." : commandText;
|
|
333
336
|
const isComplete = IChatToolInvocation.isComplete(toolInvocation);
|
|
334
337
|
const autoExpandFailures = this._configurationService.getValue(ChatConfiguration.AutoExpandToolFailures);
|
|
335
338
|
const hasError = autoExpandFailures && this._terminalData.terminalCommandState?.exitCode !== undefined && this._terminalData.terminalCommandState.exitCode !== 0;
|
|
@@ -516,6 +519,9 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
516
519
|
}
|
|
517
520
|
this._decoration.update();
|
|
518
521
|
}
|
|
522
|
+
_shouldAutoExpand() {
|
|
523
|
+
return !this._outputView.isExpanded && !this._userToggledOutput && !this._store.isDisposed && !expandedStateByInvocation.get(this.toolInvocation);
|
|
524
|
+
}
|
|
519
525
|
_registerInstanceListener(terminalInstance) {
|
|
520
526
|
const commandDetectionListener = this._register(( new MutableDisposable()));
|
|
521
527
|
const tryResolveCommand = async () => {
|
|
@@ -547,12 +553,12 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
547
553
|
if (cursorLine > command.executedMarker.line) {
|
|
548
554
|
return true;
|
|
549
555
|
}
|
|
550
|
-
return receivedDataCount >
|
|
556
|
+
return receivedDataCount > MIN_DATA_EVENTS_FOR_REAL_OUTPUT;
|
|
551
557
|
};
|
|
552
558
|
const autoExpand = store.add(( new TerminalToolAutoExpand({
|
|
553
559
|
commandDetection,
|
|
554
560
|
onWillData: terminalInstance.onWillData,
|
|
555
|
-
shouldAutoExpand: () =>
|
|
561
|
+
shouldAutoExpand: () => this._shouldAutoExpand(),
|
|
556
562
|
hasRealOutput
|
|
557
563
|
})));
|
|
558
564
|
store.add(autoExpand.onDidRequestExpand(() => {
|
|
@@ -570,14 +576,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
570
576
|
store.add(commandDetection.onCommandFinished(() => {
|
|
571
577
|
this._addActions(terminalInstance, this._terminalData.terminalToolSessionId);
|
|
572
578
|
const resolvedCommand = this._getResolvedCommand(terminalInstance);
|
|
573
|
-
this.
|
|
574
|
-
if (resolvedCommand?.exitCode === 0 && this._outputView.isExpanded && !this._userToggledOutput) {
|
|
575
|
-
this._toggleOutput(false);
|
|
576
|
-
}
|
|
577
|
-
const autoExpandFailures = this._configurationService.getValue(ChatConfiguration.AutoExpandToolFailures);
|
|
578
|
-
if (autoExpandFailures && resolvedCommand?.exitCode !== undefined && resolvedCommand.exitCode !== 0 && this._thinkingCollapsibleWrapper) {
|
|
579
|
-
this.expandCollapsibleWrapper();
|
|
580
|
-
}
|
|
579
|
+
this._handleCommandCompletion(resolvedCommand);
|
|
581
580
|
if (resolvedCommand?.endMarker) {
|
|
582
581
|
commandDetectionListener.clear();
|
|
583
582
|
}
|
|
@@ -586,14 +585,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
586
585
|
const resolvedImmediately = await tryResolveCommand();
|
|
587
586
|
if (resolvedImmediately?.endMarker) {
|
|
588
587
|
commandDetectionListener.clear();
|
|
589
|
-
this.
|
|
590
|
-
if (resolvedImmediately.exitCode === 0 && this._outputView.isExpanded && !this._userToggledOutput) {
|
|
591
|
-
this._toggleOutput(false);
|
|
592
|
-
}
|
|
593
|
-
const autoExpandFailures = this._configurationService.getValue(ChatConfiguration.AutoExpandToolFailures);
|
|
594
|
-
if (autoExpandFailures && resolvedImmediately.exitCode !== undefined && resolvedImmediately.exitCode !== 0 && this._thinkingCollapsibleWrapper) {
|
|
595
|
-
this.expandCollapsibleWrapper();
|
|
596
|
-
}
|
|
588
|
+
this._handleCommandCompletion(resolvedImmediately);
|
|
597
589
|
return;
|
|
598
590
|
}
|
|
599
591
|
};
|
|
@@ -647,6 +639,16 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
647
639
|
}
|
|
648
640
|
this._continueInBackgroundAction.clear();
|
|
649
641
|
}
|
|
642
|
+
_handleCommandCompletion(resolvedCommand) {
|
|
643
|
+
this.markCollapsibleWrapperComplete();
|
|
644
|
+
if (resolvedCommand?.exitCode === 0 && this._outputView.isExpanded && !this._userToggledOutput) {
|
|
645
|
+
this._toggleOutput(false);
|
|
646
|
+
}
|
|
647
|
+
const autoExpandFailures = this._configurationService.getValue(ChatConfiguration.AutoExpandToolFailures);
|
|
648
|
+
if (autoExpandFailures && resolvedCommand?.exitCode !== undefined && resolvedCommand.exitCode !== 0 && this._thinkingCollapsibleWrapper) {
|
|
649
|
+
this.expandCollapsibleWrapper();
|
|
650
|
+
}
|
|
651
|
+
}
|
|
650
652
|
async _toggleOutput(expanded) {
|
|
651
653
|
const didChange = await this._outputView.toggle(expanded);
|
|
652
654
|
const isExpanded = this._outputView.isExpanded;
|
|
@@ -859,7 +861,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
859
861
|
if (!commandText) {
|
|
860
862
|
return;
|
|
861
863
|
}
|
|
862
|
-
const ariaLabel = ( localize(
|
|
864
|
+
const ariaLabel = ( localize(6682, "Terminal output for {0}", commandText));
|
|
863
865
|
const scrollableDomNode = this._scrollableContainer.getDomNode();
|
|
864
866
|
scrollableDomNode.setAttribute("role", "region");
|
|
865
867
|
const accessibleViewHint = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.TerminalChatOutput);
|
|
@@ -872,26 +874,26 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
872
874
|
if (!commandText) {
|
|
873
875
|
return undefined;
|
|
874
876
|
}
|
|
875
|
-
const commandHeader = ( localize(
|
|
877
|
+
const commandHeader = ( localize(6683, "Command: {0}", commandText));
|
|
876
878
|
if (command) {
|
|
877
879
|
const rawOutput = command.getOutput();
|
|
878
880
|
if (!rawOutput || rawOutput.trim().length === 0) {
|
|
879
|
-
return `${commandHeader}\n${( localize(
|
|
881
|
+
return `${commandHeader}\n${( localize(6684, "No output was produced by the command."))}`;
|
|
880
882
|
}
|
|
881
883
|
const lines = rawOutput.split("\n");
|
|
882
884
|
return `${commandHeader}\n${lines.join("\n").trimEnd()}`;
|
|
883
885
|
}
|
|
884
886
|
const snapshot = this._getTerminalCommandOutput();
|
|
885
887
|
if (!snapshot) {
|
|
886
|
-
return `${commandHeader}\n${( localize(
|
|
888
|
+
return `${commandHeader}\n${( localize(6685, "Command output is no longer available."))}`;
|
|
887
889
|
}
|
|
888
890
|
const plain = removeAnsiEscapeCodes((snapshot.text ?? ""));
|
|
889
891
|
if (!plain.trim().length) {
|
|
890
|
-
return `${commandHeader}\n${( localize(
|
|
892
|
+
return `${commandHeader}\n${( localize(6684, "No output was produced by the command."))}`;
|
|
891
893
|
}
|
|
892
894
|
let outputText = plain.trimEnd();
|
|
893
895
|
if (snapshot.truncated) {
|
|
894
|
-
outputText += `\n${( localize(
|
|
896
|
+
outputText += `\n${( localize(6686, "Output truncated."))}`;
|
|
895
897
|
}
|
|
896
898
|
return `${commandHeader}\n${outputText}`;
|
|
897
899
|
}
|
|
@@ -985,9 +987,8 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
985
987
|
let commandFinished = !!command.endMarker;
|
|
986
988
|
let hasOutput = result && result.lineCount && result.lineCount > 0;
|
|
987
989
|
if (!hasOutput) {
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
await timeout(100);
|
|
990
|
+
for (let retry = 0; retry < MAX_OUTPUT_POLL_RETRIES && !hasOutput; retry++) {
|
|
991
|
+
await timeout(OUTPUT_POLL_DELAY_MS);
|
|
991
992
|
if (this._store.isDisposed) {
|
|
992
993
|
return true;
|
|
993
994
|
}
|
|
@@ -1001,7 +1002,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1001
1002
|
}
|
|
1002
1003
|
if (!hasOutput) {
|
|
1003
1004
|
if (commandFinished) {
|
|
1004
|
-
this._showEmptyMessage(( localize(
|
|
1005
|
+
this._showEmptyMessage(( localize(6684, "No output was produced by the command.")));
|
|
1005
1006
|
}
|
|
1006
1007
|
} else {
|
|
1007
1008
|
this._hideEmptyMessage();
|
|
@@ -1028,7 +1029,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1028
1029
|
if (hasText) {
|
|
1029
1030
|
this._hideEmptyMessage();
|
|
1030
1031
|
} else {
|
|
1031
|
-
this._showEmptyMessage(( localize(
|
|
1032
|
+
this._showEmptyMessage(( localize(6684, "No output was produced by the command.")));
|
|
1032
1033
|
}
|
|
1033
1034
|
const lineCount = result?.lineCount ?? snapshot.lineCount ?? 0;
|
|
1034
1035
|
this._layoutOutput(lineCount);
|
|
@@ -1037,9 +1038,9 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1037
1038
|
clearNode(this._terminalContainer);
|
|
1038
1039
|
this._lastRenderedLineCount = undefined;
|
|
1039
1040
|
if (!liveTerminalInstance) {
|
|
1040
|
-
this._showEmptyMessage(( localize(
|
|
1041
|
+
this._showEmptyMessage(( localize(6687, "Terminal is no longer available.")));
|
|
1041
1042
|
} else {
|
|
1042
|
-
this._showEmptyMessage(( localize(
|
|
1043
|
+
this._showEmptyMessage(( localize(6688, "Command information is not available.")));
|
|
1043
1044
|
}
|
|
1044
1045
|
}
|
|
1045
1046
|
async _resolveLiveTerminal() {
|
|
@@ -1158,7 +1159,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1158
1159
|
ChatTerminalToolOutputSection = ( __decorate([( __param(5, IAccessibleViewService)), ( __param(6, IInstantiationService)), ( __param(7, ITerminalConfigurationService)), ( __param(8, IThemeService)), ( __param(9, IContextKeyService))], ChatTerminalToolOutputSection));
|
|
1159
1160
|
let ToggleChatTerminalOutputAction = class ToggleChatTerminalOutputAction extends Action {
|
|
1160
1161
|
constructor(_toggle, _keybindingService, _telemetryService) {
|
|
1161
|
-
super(TerminalContribCommandId.ToggleChatTerminalOutput, ( localize(
|
|
1162
|
+
super(TerminalContribCommandId.ToggleChatTerminalOutput, ( localize(6689, "Show Output")), ThemeIcon.asClassName(Codicon.chevronRight), true);
|
|
1162
1163
|
this._toggle = _toggle;
|
|
1163
1164
|
this._keybindingService = _keybindingService;
|
|
1164
1165
|
this._telemetryService = _telemetryService;
|
|
@@ -1181,10 +1182,10 @@ let ToggleChatTerminalOutputAction = class ToggleChatTerminalOutputAction extend
|
|
|
1181
1182
|
}
|
|
1182
1183
|
_updatePresentation() {
|
|
1183
1184
|
if (this._expanded) {
|
|
1184
|
-
this.label = ( localize(
|
|
1185
|
+
this.label = ( localize(6690, "Hide Output"));
|
|
1185
1186
|
this.class = ThemeIcon.asClassName(Codicon.chevronDown);
|
|
1186
1187
|
} else {
|
|
1187
|
-
this.label = ( localize(
|
|
1188
|
+
this.label = ( localize(6689, "Show Output"));
|
|
1188
1189
|
this.class = ThemeIcon.asClassName(Codicon.chevronRight);
|
|
1189
1190
|
}
|
|
1190
1191
|
}
|
|
@@ -1208,7 +1209,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1208
1209
|
) {
|
|
1209
1210
|
super(
|
|
1210
1211
|
TerminalContribCommandId.FocusChatInstanceAction,
|
|
1211
|
-
isTerminalHidden ? ( localize(
|
|
1212
|
+
isTerminalHidden ? ( localize(6691, "Show and Focus Terminal")) : ( localize(6692, "Focus Terminal")),
|
|
1212
1213
|
ThemeIcon.asClassName(Codicon.openInProduct),
|
|
1213
1214
|
true
|
|
1214
1215
|
);
|
|
@@ -1224,7 +1225,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1224
1225
|
this._updateTooltip();
|
|
1225
1226
|
}
|
|
1226
1227
|
async run() {
|
|
1227
|
-
this.label = this._instance?.shellLaunchConfig.hideFromUser ? ( localize(
|
|
1228
|
+
this.label = this._instance?.shellLaunchConfig.hideFromUser ? ( localize(6693, "Show and Focus Terminal")) : ( localize(6692, "Focus Terminal"));
|
|
1228
1229
|
this._updateTooltip();
|
|
1229
1230
|
let target = "none";
|
|
1230
1231
|
let location = "panel";
|
|
@@ -1281,7 +1282,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1281
1282
|
FocusChatInstanceAction = ( __decorate([( __param(5, ITerminalService)), ( __param(6, ITerminalEditorService)), ( __param(7, ITerminalGroupService)), ( __param(8, IKeybindingService)), ( __param(9, ITelemetryService))], FocusChatInstanceAction));
|
|
1282
1283
|
let ContinueInBackgroundAction = class ContinueInBackgroundAction extends Action {
|
|
1283
1284
|
constructor(_terminalToolSessionId, _terminalChatService) {
|
|
1284
|
-
super(TerminalContribCommandId.ContinueInBackground, ( localize(
|
|
1285
|
+
super(TerminalContribCommandId.ContinueInBackground, ( localize(6694, "Continue in Background")), ThemeIcon.asClassName(Codicon.debugContinue), true);
|
|
1285
1286
|
this._terminalToolSessionId = _terminalToolSessionId;
|
|
1286
1287
|
this._terminalChatService = _terminalChatService;
|
|
1287
1288
|
}
|
|
@@ -1318,7 +1319,7 @@ let ChatTerminalThinkingCollapsibleWrapper = class ChatTerminalThinkingCollapsib
|
|
|
1318
1319
|
}
|
|
1319
1320
|
const labelElement = this._collapseButton.labelElement;
|
|
1320
1321
|
labelElement.textContent = "";
|
|
1321
|
-
const prefixText = this._isComplete ? ( localize(
|
|
1322
|
+
const prefixText = this._isComplete ? ( localize(6695, "Ran ")) : ( localize(6696, "Running "));
|
|
1322
1323
|
const ranText = createTextNode(prefixText);
|
|
1323
1324
|
const codeElement = createElement("code");
|
|
1324
1325
|
codeElement.textContent = this._commandText;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Separator } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
|
|
2
2
|
import { ILanguageService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service";
|
|
3
|
-
import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
|
|
4
3
|
import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
|
|
5
4
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
6
5
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
@@ -13,7 +12,7 @@ import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/
|
|
|
13
12
|
import { ILanguageModelToolsConfirmationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsConfirmationService.service";
|
|
14
13
|
import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
15
14
|
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
16
|
-
import { IChatContentPartRenderContext } from "
|
|
15
|
+
import { IChatContentPartRenderContext } from "../chatContentParts.js";
|
|
17
16
|
import { IChatMarkdownAnchorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service";
|
|
18
17
|
import { AbstractToolConfirmationSubPart } from "./abstractToolConfirmationSubPart.js";
|
|
19
18
|
import { EditorPool } from "../chatContentCodePools.js";
|
|
@@ -23,7 +22,6 @@ export declare class ToolConfirmationSubPart extends AbstractToolConfirmationSub
|
|
|
23
22
|
private readonly currentWidthDelegate;
|
|
24
23
|
private readonly codeBlockModelCollection;
|
|
25
24
|
private readonly codeBlockStartIndex;
|
|
26
|
-
private readonly modelService;
|
|
27
25
|
private readonly languageService;
|
|
28
26
|
private readonly commandService;
|
|
29
27
|
private readonly markerService;
|
|
@@ -31,7 +29,7 @@ export declare class ToolConfirmationSubPart extends AbstractToolConfirmationSub
|
|
|
31
29
|
private readonly confirmationService;
|
|
32
30
|
private markdownParts;
|
|
33
31
|
get codeblocks(): IChatCodeBlockInfo[];
|
|
34
|
-
constructor(toolInvocation: IChatToolInvocation, context: IChatContentPartRenderContext, renderer: IMarkdownRenderer, editorPool: EditorPool, currentWidthDelegate: () => number, codeBlockModelCollection: CodeBlockModelCollection, codeBlockStartIndex: number, instantiationService: IInstantiationService, keybindingService: IKeybindingService,
|
|
32
|
+
constructor(toolInvocation: IChatToolInvocation, context: IChatContentPartRenderContext, renderer: IMarkdownRenderer, editorPool: EditorPool, currentWidthDelegate: () => number, codeBlockModelCollection: CodeBlockModelCollection, codeBlockStartIndex: number, instantiationService: IInstantiationService, keybindingService: IKeybindingService, languageService: ILanguageService, contextKeyService: IContextKeyService, chatWidgetService: IChatWidgetService, commandService: ICommandService, markerService: IMarkerService, languageModelToolsService: ILanguageModelToolsService, chatMarkdownAnchorService: IChatMarkdownAnchorService, confirmationService: ILanguageModelToolsConfirmationService);
|
|
35
33
|
protected additionalPrimaryActions(): (Separator | import("./abstractToolConfirmationSubPart.js").IAbstractToolPrimaryAction)[];
|
|
36
34
|
protected createContentElement(): HTMLElement | string;
|
|
37
35
|
protected getTitle(): string;
|