@codingame/monaco-vscode-katex-common 28.4.0 → 29.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/actions/browser/buttonbar.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +17 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
- 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 +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +158 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +22 -17
- 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 +16 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +121 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +15 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +29 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +349 -109
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +47 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +104 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +21 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +13 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +29 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +261 -282
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +184 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +4 -2
- 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/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 +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +4 -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/chatInlineAnchorWidget.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +42 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +14 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +11 -9
- 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.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +25 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +332 -114
- 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 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +10 -5
- 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 +11 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +66 -7
- 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 +28 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +272 -107
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.js +70 -0
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +6 -3
- 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.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +151 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +96 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +86 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +5 -2
- 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/chatInputOutputMarkdownProgressPart.js +8 -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/chatModifiedFilesConfirmationSubPart.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +273 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +28 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +22 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +81 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +20 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +11 -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.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +21 -7
- 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.js +2 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +112 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +137 -52
- 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 +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +108 -38
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +9 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +385 -247
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +23 -23
- 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 +124 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +24 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +30 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +84 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +170 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +4 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +4 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +38 -6
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +31 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +12 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +130 -23
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +41 -0
- 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/inlineChatOverlayWidget.css +55 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +50 -39
- 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/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +0 -440
|
@@ -13,7 +13,9 @@ import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workb
|
|
|
13
13
|
import { ChatQueryTitlePart } from '../chatConfirmationWidget.js';
|
|
14
14
|
import { ChatMarkdownContentPart } from '../chatMarkdownContentPart.js';
|
|
15
15
|
import { ChatProgressSubPart } from '../chatProgressContentPart.js';
|
|
16
|
+
import { ChatResourceGroupWidget } from '../chatResourceGroupWidget.js';
|
|
16
17
|
import { BaseChatToolInvocationSubPart } from './chatToolInvocationSubPart.js';
|
|
18
|
+
import { extractImagesFromToolInvocationOutputDetails } from '../../../../common/chatImageExtraction.js';
|
|
17
19
|
import { TerminalToolAutoExpand } from './terminalToolAutoExpand.js';
|
|
18
20
|
import { ChatCollapsibleContentPart } from '../chatCollapsibleContentPart.js';
|
|
19
21
|
import * as chatTerminalToolProgressPart from '../media/chatTerminalToolProgressPart.css';
|
|
@@ -34,7 +36,7 @@ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
|
34
36
|
import { stripIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iconLabels';
|
|
35
37
|
import { IAccessibleViewService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/browser/accessibleView.service';
|
|
36
38
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
37
|
-
import {
|
|
39
|
+
import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
38
40
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
39
41
|
import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
40
42
|
import { DetachedTerminalCommandMirror, DetachedTerminalSnapshotMirror } from '../../../../../terminal/browser/chatTerminalCommandMirror.js';
|
|
@@ -281,7 +283,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
281
283
|
const markdownOptions = {
|
|
282
284
|
codeBlockRenderOptions,
|
|
283
285
|
accessibilityOptions: pastTenseMessage ? {
|
|
284
|
-
statusMessage: ( localize(
|
|
286
|
+
statusMessage: ( localize(6881, "{0}", stripIcons(pastTenseMessage)))
|
|
285
287
|
} : undefined
|
|
286
288
|
};
|
|
287
289
|
this.markdownPart = this._register(_instantiationService.createInstance(
|
|
@@ -314,23 +316,57 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
314
316
|
this.domNode = this._createCollapsibleWrapper(progressPart.domNode, displayCommand, toolInvocation, context);
|
|
315
317
|
} else {
|
|
316
318
|
this.domNode = progressPart.domNode;
|
|
317
|
-
const updateCheckmarks = () => this.domNode.classList.toggle(
|
|
318
|
-
"show-checkmarks",
|
|
319
|
-
!!this._configurationService.getValue(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)
|
|
320
|
-
);
|
|
321
|
-
updateCheckmarks();
|
|
322
|
-
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
|
323
|
-
if (e.affectsConfiguration(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)) {
|
|
324
|
-
updateCheckmarks();
|
|
325
|
-
}
|
|
326
|
-
}));
|
|
327
319
|
}
|
|
320
|
+
this._renderImagePills(toolInvocation, context, elements.container);
|
|
328
321
|
const hasStoredOutput = !!terminalData.terminalCommandOutput;
|
|
329
322
|
if (expandedStateByInvocation.get(toolInvocation) || (this._isInThinkingContainer && IChatToolInvocation.isComplete(toolInvocation) && hasStoredOutput)) {
|
|
330
323
|
void this._toggleOutput(true);
|
|
331
324
|
}
|
|
332
325
|
this._register(this._terminalChatService.registerProgressPart(this));
|
|
333
326
|
}
|
|
327
|
+
_renderImagePills(toolInvocation, context, innerContainer) {
|
|
328
|
+
const renderImages = () => {
|
|
329
|
+
const extracted = extractImagesFromToolInvocationOutputDetails(toolInvocation, context.element.sessionResource);
|
|
330
|
+
const imageParts = ( extracted.map(img => ({
|
|
331
|
+
kind: "data",
|
|
332
|
+
value: img.data.buffer,
|
|
333
|
+
mimeType: img.mimeType,
|
|
334
|
+
uri: img.uri
|
|
335
|
+
})));
|
|
336
|
+
if (imageParts.length === 0) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const widget = this._register(
|
|
340
|
+
this._instantiationService.createInstance(ChatResourceGroupWidget, imageParts)
|
|
341
|
+
);
|
|
342
|
+
if (this._thinkingCollapsibleWrapper) {
|
|
343
|
+
const wrapper = this._thinkingCollapsibleWrapper;
|
|
344
|
+
const placeWidget = expanded => {
|
|
345
|
+
if (expanded) {
|
|
346
|
+
innerContainer.appendChild(widget.domNode);
|
|
347
|
+
} else {
|
|
348
|
+
wrapper.domNode.appendChild(widget.domNode);
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
placeWidget(wrapper.expanded.get());
|
|
352
|
+
this._register(autorun(reader => {
|
|
353
|
+
placeWidget(wrapper.expanded.read(reader));
|
|
354
|
+
}));
|
|
355
|
+
} else {
|
|
356
|
+
innerContainer.appendChild(widget.domNode);
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
if (toolInvocation.kind === "toolInvocationSerialized") {
|
|
360
|
+
renderImages();
|
|
361
|
+
} else {
|
|
362
|
+
this._register(autorun(reader => {
|
|
363
|
+
const state = toolInvocation.state.read(reader);
|
|
364
|
+
if (state.type === IChatToolInvocation.StateKind.Completed) {
|
|
365
|
+
renderImages();
|
|
366
|
+
}
|
|
367
|
+
}));
|
|
368
|
+
}
|
|
369
|
+
}
|
|
334
370
|
_createCollapsibleWrapper(contentElement, commandText, toolInvocation, context) {
|
|
335
371
|
const truncatedCommand = commandText.length > MAX_COMMAND_TITLE_LENGTH ? commandText.substring(0, MAX_COMMAND_TITLE_LENGTH) + "..." : commandText;
|
|
336
372
|
const isComplete = IChatToolInvocation.isComplete(toolInvocation);
|
|
@@ -340,6 +376,7 @@ let ChatTerminalToolProgressPart = class ChatTerminalToolProgressPart extends Ba
|
|
|
340
376
|
const wrapper = this._register(this._instantiationService.createInstance(
|
|
341
377
|
ChatTerminalThinkingCollapsibleWrapper,
|
|
342
378
|
truncatedCommand,
|
|
379
|
+
this._terminalData.commandLine.isSandboxWrapped === true,
|
|
343
380
|
contentElement,
|
|
344
381
|
context,
|
|
345
382
|
initialExpanded,
|
|
@@ -861,7 +898,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
861
898
|
if (!commandText) {
|
|
862
899
|
return;
|
|
863
900
|
}
|
|
864
|
-
const ariaLabel = ( localize(
|
|
901
|
+
const ariaLabel = ( localize(6882, "Terminal output for {0}", commandText));
|
|
865
902
|
const scrollableDomNode = this._scrollableContainer.getDomNode();
|
|
866
903
|
scrollableDomNode.setAttribute("role", "region");
|
|
867
904
|
const accessibleViewHint = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.TerminalChatOutput);
|
|
@@ -874,26 +911,26 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
874
911
|
if (!commandText) {
|
|
875
912
|
return undefined;
|
|
876
913
|
}
|
|
877
|
-
const commandHeader = ( localize(
|
|
914
|
+
const commandHeader = ( localize(6883, "Command: {0}", commandText));
|
|
878
915
|
if (command) {
|
|
879
916
|
const rawOutput = command.getOutput();
|
|
880
917
|
if (!rawOutput || rawOutput.trim().length === 0) {
|
|
881
|
-
return `${commandHeader}\n${( localize(
|
|
918
|
+
return `${commandHeader}\n${( localize(6884, "No output was produced by the command."))}`;
|
|
882
919
|
}
|
|
883
920
|
const lines = rawOutput.split("\n");
|
|
884
921
|
return `${commandHeader}\n${lines.join("\n").trimEnd()}`;
|
|
885
922
|
}
|
|
886
923
|
const snapshot = this._getTerminalCommandOutput();
|
|
887
924
|
if (!snapshot) {
|
|
888
|
-
return `${commandHeader}\n${( localize(
|
|
925
|
+
return `${commandHeader}\n${( localize(6885, "Command output is no longer available."))}`;
|
|
889
926
|
}
|
|
890
927
|
const plain = removeAnsiEscapeCodes((snapshot.text ?? ""));
|
|
891
928
|
if (!plain.trim().length) {
|
|
892
|
-
return `${commandHeader}\n${( localize(
|
|
929
|
+
return `${commandHeader}\n${( localize(6884, "No output was produced by the command."))}`;
|
|
893
930
|
}
|
|
894
931
|
let outputText = plain.trimEnd();
|
|
895
932
|
if (snapshot.truncated) {
|
|
896
|
-
outputText += `\n${( localize(
|
|
933
|
+
outputText += `\n${( localize(6886, "Output truncated."))}`;
|
|
897
934
|
}
|
|
898
935
|
return `${commandHeader}\n${outputText}`;
|
|
899
936
|
}
|
|
@@ -1002,7 +1039,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1002
1039
|
}
|
|
1003
1040
|
if (!hasOutput) {
|
|
1004
1041
|
if (commandFinished) {
|
|
1005
|
-
this._showEmptyMessage(( localize(
|
|
1042
|
+
this._showEmptyMessage(( localize(6884, "No output was produced by the command.")));
|
|
1006
1043
|
}
|
|
1007
1044
|
} else {
|
|
1008
1045
|
this._hideEmptyMessage();
|
|
@@ -1029,7 +1066,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1029
1066
|
if (hasText) {
|
|
1030
1067
|
this._hideEmptyMessage();
|
|
1031
1068
|
} else {
|
|
1032
|
-
this._showEmptyMessage(( localize(
|
|
1069
|
+
this._showEmptyMessage(( localize(6884, "No output was produced by the command.")));
|
|
1033
1070
|
}
|
|
1034
1071
|
const lineCount = result?.lineCount ?? snapshot.lineCount ?? 0;
|
|
1035
1072
|
this._layoutOutput(lineCount);
|
|
@@ -1038,9 +1075,9 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1038
1075
|
clearNode(this._terminalContainer);
|
|
1039
1076
|
this._lastRenderedLineCount = undefined;
|
|
1040
1077
|
if (!liveTerminalInstance) {
|
|
1041
|
-
this._showEmptyMessage(( localize(
|
|
1078
|
+
this._showEmptyMessage(( localize(6887, "Terminal is no longer available.")));
|
|
1042
1079
|
} else {
|
|
1043
|
-
this._showEmptyMessage(( localize(
|
|
1080
|
+
this._showEmptyMessage(( localize(6888, "Command information is not available.")));
|
|
1044
1081
|
}
|
|
1045
1082
|
}
|
|
1046
1083
|
async _resolveLiveTerminal() {
|
|
@@ -1159,7 +1196,7 @@ let ChatTerminalToolOutputSection = class ChatTerminalToolOutputSection extends
|
|
|
1159
1196
|
ChatTerminalToolOutputSection = ( __decorate([( __param(5, IAccessibleViewService)), ( __param(6, IInstantiationService)), ( __param(7, ITerminalConfigurationService)), ( __param(8, IThemeService)), ( __param(9, IContextKeyService))], ChatTerminalToolOutputSection));
|
|
1160
1197
|
let ToggleChatTerminalOutputAction = class ToggleChatTerminalOutputAction extends Action {
|
|
1161
1198
|
constructor(_toggle, _keybindingService, _telemetryService) {
|
|
1162
|
-
super(TerminalContribCommandId.ToggleChatTerminalOutput, ( localize(
|
|
1199
|
+
super(TerminalContribCommandId.ToggleChatTerminalOutput, ( localize(6889, "Show Output")), ThemeIcon.asClassName(Codicon.chevronRight), true);
|
|
1163
1200
|
this._toggle = _toggle;
|
|
1164
1201
|
this._keybindingService = _keybindingService;
|
|
1165
1202
|
this._telemetryService = _telemetryService;
|
|
@@ -1182,10 +1219,10 @@ let ToggleChatTerminalOutputAction = class ToggleChatTerminalOutputAction extend
|
|
|
1182
1219
|
}
|
|
1183
1220
|
_updatePresentation() {
|
|
1184
1221
|
if (this._expanded) {
|
|
1185
|
-
this.label = ( localize(
|
|
1222
|
+
this.label = ( localize(6890, "Hide Output"));
|
|
1186
1223
|
this.class = ThemeIcon.asClassName(Codicon.chevronDown);
|
|
1187
1224
|
} else {
|
|
1188
|
-
this.label = ( localize(
|
|
1225
|
+
this.label = ( localize(6889, "Show Output"));
|
|
1189
1226
|
this.class = ThemeIcon.asClassName(Codicon.chevronRight);
|
|
1190
1227
|
}
|
|
1191
1228
|
}
|
|
@@ -1209,7 +1246,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1209
1246
|
) {
|
|
1210
1247
|
super(
|
|
1211
1248
|
TerminalContribCommandId.FocusChatInstanceAction,
|
|
1212
|
-
isTerminalHidden ? ( localize(
|
|
1249
|
+
isTerminalHidden ? ( localize(6891, "Show and Focus Terminal")) : ( localize(6892, "Focus Terminal")),
|
|
1213
1250
|
ThemeIcon.asClassName(Codicon.openInProduct),
|
|
1214
1251
|
true
|
|
1215
1252
|
);
|
|
@@ -1225,7 +1262,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1225
1262
|
this._updateTooltip();
|
|
1226
1263
|
}
|
|
1227
1264
|
async run() {
|
|
1228
|
-
this.label = this._instance?.shellLaunchConfig.hideFromUser ? ( localize(
|
|
1265
|
+
this.label = this._instance?.shellLaunchConfig.hideFromUser ? ( localize(6893, "Show and Focus Terminal")) : ( localize(6892, "Focus Terminal"));
|
|
1229
1266
|
this._updateTooltip();
|
|
1230
1267
|
let target = "none";
|
|
1231
1268
|
let location = "panel";
|
|
@@ -1282,7 +1319,7 @@ let FocusChatInstanceAction = class FocusChatInstanceAction extends Action {
|
|
|
1282
1319
|
FocusChatInstanceAction = ( __decorate([( __param(5, ITerminalService)), ( __param(6, ITerminalEditorService)), ( __param(7, ITerminalGroupService)), ( __param(8, IKeybindingService)), ( __param(9, ITelemetryService))], FocusChatInstanceAction));
|
|
1283
1320
|
let ContinueInBackgroundAction = class ContinueInBackgroundAction extends Action {
|
|
1284
1321
|
constructor(_terminalToolSessionId, _terminalChatService) {
|
|
1285
|
-
super(TerminalContribCommandId.ContinueInBackground, ( localize(
|
|
1322
|
+
super(TerminalContribCommandId.ContinueInBackground, ( localize(6894, "Continue in Background")), ThemeIcon.asClassName(Codicon.debugContinue), true);
|
|
1286
1323
|
this._terminalToolSessionId = _terminalToolSessionId;
|
|
1287
1324
|
this._terminalChatService = _terminalChatService;
|
|
1288
1325
|
}
|
|
@@ -1294,6 +1331,7 @@ ContinueInBackgroundAction = ( __decorate([( __param(1, ITerminalChatService))],
|
|
|
1294
1331
|
let ChatTerminalThinkingCollapsibleWrapper = class ChatTerminalThinkingCollapsibleWrapper extends ChatCollapsibleContentPart {
|
|
1295
1332
|
constructor(
|
|
1296
1333
|
commandText,
|
|
1334
|
+
isSandboxWrapped,
|
|
1297
1335
|
contentElement,
|
|
1298
1336
|
context,
|
|
1299
1337
|
initialExpanded,
|
|
@@ -1301,10 +1339,11 @@ let ChatTerminalThinkingCollapsibleWrapper = class ChatTerminalThinkingCollapsib
|
|
|
1301
1339
|
hoverService,
|
|
1302
1340
|
configurationService
|
|
1303
1341
|
) {
|
|
1304
|
-
const title = isComplete ?
|
|
1342
|
+
const title = isComplete ? ( localize(6895, "Ran {0}", commandText)) : ( localize(6896, "Running {0}", commandText));
|
|
1305
1343
|
super(title, context, undefined, hoverService, configurationService);
|
|
1306
1344
|
this._terminalContentElement = contentElement;
|
|
1307
1345
|
this._commandText = commandText;
|
|
1346
|
+
this._isSandboxWrapped = isSandboxWrapped;
|
|
1308
1347
|
this._isComplete = isComplete;
|
|
1309
1348
|
this.domNode.classList.add("chat-terminal-thinking-collapsible");
|
|
1310
1349
|
if (isComplete) {
|
|
@@ -1319,7 +1358,17 @@ let ChatTerminalThinkingCollapsibleWrapper = class ChatTerminalThinkingCollapsib
|
|
|
1319
1358
|
}
|
|
1320
1359
|
const labelElement = this._collapseButton.labelElement;
|
|
1321
1360
|
labelElement.textContent = "";
|
|
1322
|
-
|
|
1361
|
+
if (this._isSandboxWrapped) {
|
|
1362
|
+
const prefixText = this._isComplete ? ( localize(6897, "Ran ")) : ( localize(6898, "Running "));
|
|
1363
|
+
const suffixText = ( localize(6899, " in sandbox"));
|
|
1364
|
+
labelElement.appendChild(createTextNode(prefixText));
|
|
1365
|
+
const codeElement = createElement("code");
|
|
1366
|
+
codeElement.textContent = this._commandText;
|
|
1367
|
+
labelElement.appendChild(codeElement);
|
|
1368
|
+
labelElement.appendChild(createTextNode(suffixText));
|
|
1369
|
+
return;
|
|
1370
|
+
}
|
|
1371
|
+
const prefixText = this._isComplete ? ( localize(6900, "Ran ")) : ( localize(6901, "Running "));
|
|
1323
1372
|
const ranText = createTextNode(prefixText);
|
|
1324
1373
|
const codeElement = createElement("code");
|
|
1325
1374
|
codeElement.textContent = this._commandText;
|
|
@@ -1346,6 +1395,6 @@ let ChatTerminalThinkingCollapsibleWrapper = class ChatTerminalThinkingCollapsib
|
|
|
1346
1395
|
return false;
|
|
1347
1396
|
}
|
|
1348
1397
|
};
|
|
1349
|
-
ChatTerminalThinkingCollapsibleWrapper = ( __decorate([( __param(
|
|
1398
|
+
ChatTerminalThinkingCollapsibleWrapper = ( __decorate([( __param(6, IHoverService)), ( __param(7, IConfigurationService))], ChatTerminalThinkingCollapsibleWrapper));
|
|
1350
1399
|
|
|
1351
|
-
export { ChatTerminalToolProgressPart, ContinueInBackgroundAction, FocusChatInstanceAction, ToggleChatTerminalOutputAction };
|
|
1400
|
+
export { ChatTerminalThinkingCollapsibleWrapper, ChatTerminalToolProgressPart, ContinueInBackgroundAction, FocusChatInstanceAction, ToggleChatTerminalOutputAction };
|
|
@@ -31,6 +31,7 @@ export declare class ToolConfirmationSubPart extends AbstractToolConfirmationSub
|
|
|
31
31
|
get codeblocks(): IChatCodeBlockInfo[];
|
|
32
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);
|
|
33
33
|
protected additionalPrimaryActions(): (Separator | import("./abstractToolConfirmationSubPart.js").IAbstractToolPrimaryAction)[];
|
|
34
|
+
protected useAllowOnceAsPrimary(): boolean;
|
|
34
35
|
protected createContentElement(): HTMLElement | string;
|
|
35
36
|
protected getTitle(): string;
|
|
36
37
|
private _makeMarkdownPart;
|
|
@@ -79,8 +79,8 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
79
79
|
this.render({
|
|
80
80
|
allowActionId: AcceptToolConfirmationActionId,
|
|
81
81
|
skipActionId: SkipToolConfirmationActionId,
|
|
82
|
-
allowLabel: state.confirmationMessages.confirmResults ? ( localize(
|
|
83
|
-
skipLabel: ( localize(
|
|
82
|
+
allowLabel: state.confirmationMessages.confirmResults ? ( localize(6902, "Allow and Review Once")) : ( localize(6903, "Allow Once")),
|
|
83
|
+
skipLabel: ( localize(6904, "Proceed without running this tool")),
|
|
84
84
|
partType: "chatToolConfirmation",
|
|
85
85
|
subtitle: typeof toolInvocation.originMessage === "string" ? toolInvocation.originMessage : toolInvocation.originMessage?.value
|
|
86
86
|
});
|
|
@@ -92,11 +92,17 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
92
92
|
return actions;
|
|
93
93
|
}
|
|
94
94
|
if (state.confirmationMessages?.allowAutoConfirm !== false) {
|
|
95
|
+
const approveCombination = state.confirmationMessages?.approveCombination;
|
|
96
|
+
const combination = approveCombination ? {
|
|
97
|
+
label: typeof approveCombination.label === "string" ? approveCombination.label : approveCombination.label.value,
|
|
98
|
+
key: approveCombination.key
|
|
99
|
+
} : undefined;
|
|
95
100
|
const confirmActions = this.confirmationService.getPreConfirmActions({
|
|
96
101
|
toolId: this.toolInvocation.toolId,
|
|
97
102
|
source: this.toolInvocation.source,
|
|
98
103
|
parameters: state.parameters,
|
|
99
|
-
chatSessionResource: this.context.element.sessionResource
|
|
104
|
+
chatSessionResource: this.context.element.sessionResource,
|
|
105
|
+
combination
|
|
100
106
|
});
|
|
101
107
|
for (const action of confirmActions) {
|
|
102
108
|
if (action.divider) {
|
|
@@ -119,7 +125,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
119
125
|
}
|
|
120
126
|
if (state.confirmationMessages?.confirmResults) {
|
|
121
127
|
actions.unshift({
|
|
122
|
-
label: ( localize(
|
|
128
|
+
label: ( localize(6905, "Allow and Skip Reviewing Result")),
|
|
123
129
|
data: () => {
|
|
124
130
|
state.confirmationMessages.confirmResults = undefined;
|
|
125
131
|
this.confirmWith(this.toolInvocation, {
|
|
@@ -130,6 +136,13 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
130
136
|
}
|
|
131
137
|
return actions;
|
|
132
138
|
}
|
|
139
|
+
useAllowOnceAsPrimary() {
|
|
140
|
+
const state = this.toolInvocation.state.get();
|
|
141
|
+
if (state.type === IChatToolInvocation.StateKind.WaitingForConfirmation) {
|
|
142
|
+
return !!state.confirmationMessages?.approveCombination;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
133
146
|
createContentElement() {
|
|
134
147
|
const state = this.toolInvocation.state.get();
|
|
135
148
|
if (state.type !== IChatToolInvocation.StateKind.WaitingForConfirmation) {
|
|
@@ -154,11 +167,11 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
154
167
|
};
|
|
155
168
|
const elements = h("div", [h(".message@messageContainer", [
|
|
156
169
|
h(".message-wrapper@message"),
|
|
157
|
-
h(".see-more@showMore", [h("a", [( localize(
|
|
170
|
+
h(".see-more@showMore", [h("a", [( localize(6906, "Show More"))])])
|
|
158
171
|
]), h(".editor@editor"), h(".disclaimer@disclaimer")]);
|
|
159
172
|
if (toolInvocation.toolSpecificData?.kind === "input" && toolInvocation.toolSpecificData.rawInput && !isEmptyObject(toolInvocation.toolSpecificData.rawInput)) {
|
|
160
173
|
const titleEl = createElement("h3");
|
|
161
|
-
titleEl.textContent = ( localize(
|
|
174
|
+
titleEl.textContent = ( localize(6907, "Input"));
|
|
162
175
|
elements.editor.appendChild(titleEl);
|
|
163
176
|
const inputData = toolInvocation.toolSpecificData;
|
|
164
177
|
const codeBlockRenderOptions = {
|
|
@@ -234,7 +247,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
|
|
|
234
247
|
elements.editor.append(editor.object.element);
|
|
235
248
|
if (canSeeMore) {
|
|
236
249
|
const seeMore = h("div.see-more", [h("a@link")]);
|
|
237
|
-
seeMore.link.textContent = ( localize(
|
|
250
|
+
seeMore.link.textContent = ( localize(6908, "See more"));
|
|
238
251
|
this._register(addDisposableGenericMouseDownListener(seeMore.link, () => {
|
|
239
252
|
try {
|
|
240
253
|
const parsed = JSON.parse(model.getValue());
|
|
@@ -13,6 +13,7 @@ import { ChatInputOutputMarkdownProgressPart } from './chatInputOutputMarkdownPr
|
|
|
13
13
|
import { ChatMcpAppSubPart } from './chatMcpAppSubPart.js';
|
|
14
14
|
import { ChatResultListSubPart } from './chatResultListSubPart.js';
|
|
15
15
|
import { ChatSimpleToolProgressPart } from './chatSimpleToolProgressPart.js';
|
|
16
|
+
import { ChatModifiedFilesConfirmationSubPart } from './chatModifiedFilesConfirmationSubPart.js';
|
|
16
17
|
import { ChatTerminalToolConfirmationSubPart } from './chatTerminalToolConfirmationSubPart.js';
|
|
17
18
|
import { ChatTerminalToolProgressPart } from './chatTerminalToolProgressPart.js';
|
|
18
19
|
import { ToolConfirmationSubPart } from './chatToolConfirmationSubPart.js';
|
|
@@ -98,7 +99,7 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
|
|
|
98
99
|
this.subPart = partStore.add(this.createToolInvocationSubPart());
|
|
99
100
|
subPartDomNode.replaceWith(this.subPart.domNode);
|
|
100
101
|
subPartDomNode = this.subPart.domNode;
|
|
101
|
-
const isConfirmation = this.subPart instanceof ToolConfirmationSubPart || this.subPart instanceof ChatTerminalToolConfirmationSubPart || this.subPart instanceof ExtensionsInstallConfirmationWidgetSubPart || this.subPart instanceof ChatToolPostExecuteConfirmationPart;
|
|
102
|
+
const isConfirmation = this.subPart instanceof ToolConfirmationSubPart || this.subPart instanceof ChatTerminalToolConfirmationSubPart || this.subPart instanceof ChatModifiedFilesConfirmationSubPart || this.subPart instanceof ExtensionsInstallConfirmationWidgetSubPart || this.subPart instanceof ChatToolPostExecuteConfirmationPart;
|
|
102
103
|
this.domNode.classList.toggle("has-confirmation", isConfirmation);
|
|
103
104
|
partStore.add(this.subPart.onNeedsRerender(render));
|
|
104
105
|
};
|
|
@@ -155,6 +156,13 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
|
|
|
155
156
|
this.codeBlockModelCollection,
|
|
156
157
|
this.codeBlockStartIndex
|
|
157
158
|
);
|
|
159
|
+
} else if (this.toolInvocation.toolSpecificData?.kind === "modifiedFilesConfirmation") {
|
|
160
|
+
return this.instantiationService.createInstance(
|
|
161
|
+
ChatModifiedFilesConfirmationSubPart,
|
|
162
|
+
this.toolInvocation,
|
|
163
|
+
this.context,
|
|
164
|
+
this.listPool
|
|
165
|
+
);
|
|
158
166
|
} else {
|
|
159
167
|
return this.instantiationService.createInstance(
|
|
160
168
|
ToolConfirmationSubPart,
|
|
@@ -235,6 +243,7 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
|
|
|
235
243
|
this.toolInvocation.pastTenseMessage ?? this.toolInvocation.invocationMessage,
|
|
236
244
|
this.toolInvocation.originMessage,
|
|
237
245
|
resultDetails.input,
|
|
246
|
+
resultDetails.inputLanguage,
|
|
238
247
|
resultDetails.output,
|
|
239
248
|
!!resultDetails.isError
|
|
240
249
|
);
|
|
@@ -249,6 +258,7 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
|
|
|
249
258
|
this.toolInvocation.originMessage,
|
|
250
259
|
typeof this.toolInvocation.toolSpecificData.rawInput === "string" ? this.toolInvocation.toolSpecificData.rawInput : JSON.stringify(this.toolInvocation.toolSpecificData.rawInput, null, 2),
|
|
251
260
|
undefined,
|
|
261
|
+
undefined,
|
|
252
262
|
false
|
|
253
263
|
);
|
|
254
264
|
}
|
|
@@ -75,7 +75,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
|
|
|
75
75
|
partState.webviewOrigin = partState.webviewOrigin;
|
|
76
76
|
}
|
|
77
77
|
const progressMessage = $("span");
|
|
78
|
-
progressMessage.textContent = ( localize(
|
|
78
|
+
progressMessage.textContent = ( localize(6909, "Rendering tool output..."));
|
|
79
79
|
const progressPart = this._register(this.instantiationService.createInstance(
|
|
80
80
|
ChatProgressSubPart,
|
|
81
81
|
progressMessage,
|
|
@@ -125,7 +125,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
|
|
|
125
125
|
iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.error));
|
|
126
126
|
errorHeaderNode.append(iconElement);
|
|
127
127
|
const errorTitleNode = $(".output-error-title");
|
|
128
|
-
errorTitleNode.textContent = ( localize(
|
|
128
|
+
errorTitleNode.textContent = ( localize(6910, "Error rendering the tool output"));
|
|
129
129
|
errorHeaderNode.append(errorTitleNode);
|
|
130
130
|
const errorMessageNode = $(".output-error-details");
|
|
131
131
|
errorMessageNode.textContent = error?.message || String(error);
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
|
|
2
2
|
import { ConfirmedReason, IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
|
|
3
|
+
export declare function isMcpToolInvocation(toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Determines whether a tool invocation's progress text should shimmer.
|
|
6
|
+
* MCP tools shimmer; askQuestions defers to the caller's default; all others opt out.
|
|
7
|
+
*/
|
|
8
|
+
export declare function shouldShimmerForTool(toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized): boolean;
|
|
3
9
|
/**
|
|
4
10
|
* Creates a markdown message explaining why a tool was auto-approved.
|
|
5
11
|
* @param toolInvocation The tool invocation to get the approval message for
|
|
@@ -3,6 +3,18 @@ import { MarkdownString, createMarkdownCommandLink } from '@codingame/monaco-vsc
|
|
|
3
3
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
4
4
|
import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
5
5
|
|
|
6
|
+
function isMcpToolInvocation(toolInvocation) {
|
|
7
|
+
return toolInvocation.source?.type === "mcp" || toolInvocation.toolId.toLowerCase().includes("mcp");
|
|
8
|
+
}
|
|
9
|
+
function shouldShimmerForTool(toolInvocation) {
|
|
10
|
+
if (isMcpToolInvocation(toolInvocation)) {
|
|
11
|
+
return !IChatToolInvocation.isComplete(toolInvocation);
|
|
12
|
+
}
|
|
13
|
+
if (toolInvocation.toolId === "copilot_askQuestions" || toolInvocation.toolId === "vscode_askQuestions") {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
6
18
|
function getToolApprovalMessage(toolInvocation) {
|
|
7
19
|
const reason = IChatToolInvocation.executionConfirmedOrDenied(toolInvocation);
|
|
8
20
|
if (!reason || typeof reason === "boolean") {
|
|
@@ -14,18 +26,20 @@ function getApprovalMessageFromReason(reason) {
|
|
|
14
26
|
let md;
|
|
15
27
|
switch (reason.type) {
|
|
16
28
|
case ToolConfirmKind.Setting:
|
|
17
|
-
md = ( localize(
|
|
18
|
-
|
|
29
|
+
md = ( localize(6911, "Auto approved by {0}", createMarkdownCommandLink({
|
|
30
|
+
text: "`" + reason.id + "`",
|
|
19
31
|
id: "workbench.action.openSettings",
|
|
20
|
-
arguments: [reason.id]
|
|
32
|
+
arguments: [reason.id],
|
|
33
|
+
tooltip: ( localize(6912, "Open settings"))
|
|
21
34
|
}, false)));
|
|
22
35
|
break;
|
|
23
36
|
case ToolConfirmKind.LmServicePerTool:
|
|
24
|
-
md = reason.scope === "session" ? ( localize(
|
|
37
|
+
md = reason.scope === "session" ? ( localize(6913, "Auto approved for this session")) : reason.scope === "workspace" ? ( localize(6914, "Auto approved for this workspace")) : ( localize(6915, "Auto approved for this profile"));
|
|
25
38
|
md += " (" + createMarkdownCommandLink({
|
|
26
|
-
|
|
39
|
+
text: ( localize(6916, "Edit")),
|
|
27
40
|
id: "workbench.action.chat.editToolApproval",
|
|
28
|
-
arguments: [reason.scope]
|
|
41
|
+
arguments: [reason.scope],
|
|
42
|
+
tooltip: ( localize(6917, "Edit tool approval settings"))
|
|
29
43
|
}) + ")";
|
|
30
44
|
break;
|
|
31
45
|
case ToolConfirmKind.ConfirmationNotNeeded:
|
|
@@ -45,4 +59,4 @@ function getApprovalMessageFromReason(reason) {
|
|
|
45
59
|
}));
|
|
46
60
|
}
|
|
47
61
|
|
|
48
|
-
export { getApprovalMessageFromReason, getToolApprovalMessage };
|
|
62
|
+
export { getApprovalMessageFromReason, getToolApprovalMessage, isMcpToolInvocation, shouldShimmerForTool };
|
|
@@ -46,8 +46,8 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
46
46
|
this.render({
|
|
47
47
|
allowActionId: AcceptToolPostConfirmationActionId,
|
|
48
48
|
skipActionId: SkipToolPostConfirmationActionId,
|
|
49
|
-
allowLabel: ( localize(
|
|
50
|
-
skipLabel: ( localize(
|
|
49
|
+
allowLabel: ( localize(6918, "Allow Once")),
|
|
50
|
+
skipLabel: ( localize(6919, "Skip Results")),
|
|
51
51
|
partType: "chatToolPostConfirmation",
|
|
52
52
|
subtitle: typeof subtitle === "string" ? subtitle : subtitle?.value
|
|
53
53
|
});
|
|
@@ -63,7 +63,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
63
63
|
return this.createResultsDisplay(this.toolInvocation, state.contentForModel);
|
|
64
64
|
}
|
|
65
65
|
getTitle() {
|
|
66
|
-
return localize(
|
|
66
|
+
return localize(6920, "Approve Tool Result");
|
|
67
67
|
}
|
|
68
68
|
additionalPrimaryActions() {
|
|
69
69
|
const actions = super.additionalPrimaryActions();
|
|
@@ -99,7 +99,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
99
99
|
createResultsDisplay(toolInvocation, contentForModel) {
|
|
100
100
|
const container = $(".tool-postconfirm-display");
|
|
101
101
|
if (!contentForModel || contentForModel.length === 0) {
|
|
102
|
-
container.textContent = ( localize(
|
|
102
|
+
container.textContent = ( localize(6921, "No results to display"));
|
|
103
103
|
return container;
|
|
104
104
|
}
|
|
105
105
|
const parts = [];
|
|
@@ -214,7 +214,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
|
|
|
214
214
|
outputSubPart.domNode.classList.add("tool-postconfirm-display");
|
|
215
215
|
return outputSubPart.domNode;
|
|
216
216
|
}
|
|
217
|
-
container.textContent = ( localize(
|
|
217
|
+
container.textContent = ( localize(6922, "No displayable results"));
|
|
218
218
|
return container;
|
|
219
219
|
}
|
|
220
220
|
};
|
|
@@ -12,6 +12,7 @@ import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-a
|
|
|
12
12
|
import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
13
13
|
import { ChatProgressContentPart } from '../chatProgressContentPart.js';
|
|
14
14
|
import { BaseChatToolInvocationSubPart } from './chatToolInvocationSubPart.js';
|
|
15
|
+
import { shouldShimmerForTool } from './chatToolPartUtilities.js';
|
|
15
16
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
16
17
|
|
|
17
18
|
let ChatToolProgressSubPart = class ChatToolProgressSubPart extends BaseChatToolInvocationSubPart {
|
|
@@ -31,16 +32,6 @@ let ChatToolProgressSubPart = class ChatToolProgressSubPart extends BaseChatTool
|
|
|
31
32
|
this.configurationService = configurationService;
|
|
32
33
|
this.codeblocks = [];
|
|
33
34
|
this.domNode = this.createProgressPart();
|
|
34
|
-
const updateCheckmarks = () => this.domNode.classList.toggle(
|
|
35
|
-
"show-checkmarks",
|
|
36
|
-
!!this.configurationService.getValue(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)
|
|
37
|
-
);
|
|
38
|
-
updateCheckmarks();
|
|
39
|
-
this._register(this.configurationService.onDidChangeConfiguration(e => {
|
|
40
|
-
if (e.affectsConfiguration(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)) {
|
|
41
|
-
updateCheckmarks();
|
|
42
|
-
}
|
|
43
|
-
}));
|
|
44
35
|
}
|
|
45
36
|
createProgressPart() {
|
|
46
37
|
const isComplete = IChatToolInvocation.isComplete(this.toolInvocation);
|
|
@@ -98,7 +89,6 @@ let ChatToolProgressSubPart = class ChatToolProgressSubPart extends BaseChatTool
|
|
|
98
89
|
if (shouldAnnounce) {
|
|
99
90
|
this.provideScreenReaderStatus(content);
|
|
100
91
|
}
|
|
101
|
-
const isAskQuestionsTool = this.toolInvocation.toolId === "copilot_askQuestions" || this.toolInvocation.toolId === "vscode_askQuestions";
|
|
102
92
|
return this.instantiationService.createInstance(
|
|
103
93
|
ChatProgressContentPart,
|
|
104
94
|
progressMessage,
|
|
@@ -108,7 +98,7 @@ let ChatToolProgressSubPart = class ChatToolProgressSubPart extends BaseChatTool
|
|
|
108
98
|
true,
|
|
109
99
|
this.getIcon(),
|
|
110
100
|
this.toolInvocation,
|
|
111
|
-
|
|
101
|
+
shouldShimmerForTool(this.toolInvocation)
|
|
112
102
|
);
|
|
113
103
|
}
|
|
114
104
|
getAnnouncementKey(kind) {
|
|
@@ -180,7 +180,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
180
180
|
} else if (containsDragType(e, CodeDataTransfers.SCM_HISTORY_ITEM)) {
|
|
181
181
|
return ChatDragAndDropType.SCM_HISTORY_ITEM;
|
|
182
182
|
} else if (containsImageDragType(e)) {
|
|
183
|
-
return ( this.extensionService.extensions.some(ext => isProposedApiEnabled(ext
|
|
183
|
+
return ( this.extensionService.extensions.some(ext => isProposedApiEnabled(ext))) ? ChatDragAndDropType.IMAGE : undefined;
|
|
184
184
|
} else if (containsDragType(e, "text/html")) {
|
|
185
185
|
return ChatDragAndDropType.HTML;
|
|
186
186
|
} else if (containsDragType(e, CodeDataTransfers.SYMBOLS)) {
|
|
@@ -209,23 +209,23 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
209
209
|
getDropTypeName(type) {
|
|
210
210
|
switch (type) {
|
|
211
211
|
case ChatDragAndDropType.FILE_INTERNAL:
|
|
212
|
-
return localize(
|
|
212
|
+
return localize(6923, "File");
|
|
213
213
|
case ChatDragAndDropType.FILE_EXTERNAL:
|
|
214
|
-
return localize(
|
|
214
|
+
return localize(6923, "File");
|
|
215
215
|
case ChatDragAndDropType.FOLDER:
|
|
216
|
-
return localize(
|
|
216
|
+
return localize(6924, "Folder");
|
|
217
217
|
case ChatDragAndDropType.IMAGE:
|
|
218
|
-
return localize(
|
|
218
|
+
return localize(6925, "Image");
|
|
219
219
|
case ChatDragAndDropType.SYMBOL:
|
|
220
|
-
return localize(
|
|
220
|
+
return localize(6926, "Symbol");
|
|
221
221
|
case ChatDragAndDropType.MARKER:
|
|
222
|
-
return localize(
|
|
222
|
+
return localize(6927, "Problem");
|
|
223
223
|
case ChatDragAndDropType.HTML:
|
|
224
|
-
return localize(
|
|
224
|
+
return localize(6928, "URL");
|
|
225
225
|
case ChatDragAndDropType.NOTEBOOK_CELL_OUTPUT:
|
|
226
|
-
return localize(
|
|
226
|
+
return localize(6929, "Output");
|
|
227
227
|
case ChatDragAndDropType.SCM_HISTORY_ITEM:
|
|
228
|
-
return localize(
|
|
228
|
+
return localize(6930, "Change");
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
async resolveAttachmentsFromDragEvent(e) {
|
|
@@ -297,7 +297,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
297
297
|
async resolveHTMLAttachContext(e) {
|
|
298
298
|
const existingAttachmentNames = ( new Set(( this.attachmentModel.attachments.map(attachment => attachment.name))));
|
|
299
299
|
const createDisplayName = () => {
|
|
300
|
-
const baseName = ( localize(
|
|
300
|
+
const baseName = ( localize(6931, "Image from URL"));
|
|
301
301
|
let uniqueName = baseName;
|
|
302
302
|
let baseNameInstance = 1;
|
|
303
303
|
while (( existingAttachmentNames.has(uniqueName))) {
|
|
@@ -375,7 +375,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
375
375
|
}
|
|
376
376
|
getOverlayText(type) {
|
|
377
377
|
const typeName = this.getDropTypeName(type);
|
|
378
|
-
return localize(
|
|
378
|
+
return localize(6932, "Attach {0} as Context", typeName);
|
|
379
379
|
}
|
|
380
380
|
updateOverlayStyles(overlay) {
|
|
381
381
|
overlay.style.backgroundColor = this.getColor(this.styles.overlayBackground) || "";
|