@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.
Files changed (154) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +17 -15
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +2 -2
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +3 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +158 -47
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +22 -17
  10. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  11. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -4
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +121 -14
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +8 -1
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +15 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +29 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +349 -109
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +47 -23
  19. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +6 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +104 -62
  21. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +1 -3
  22. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -11
  23. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -40
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +21 -16
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +8 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +13 -4
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +29 -50
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +261 -282
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +2 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +7 -5
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +31 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +184 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +4 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +4 -3
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +3 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +42 -34
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +14 -18
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +11 -9
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +25 -2
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +332 -114
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +7 -7
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +2 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +10 -5
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -16
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +7 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +66 -7
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +28 -3
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +272 -107
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.d.ts +18 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.js +70 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +6 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +151 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +96 -10
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +6 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +86 -10
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +7 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +5 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +8 -6
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +28 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +273 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +3 -2
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +28 -16
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +22 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +81 -32
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +20 -7
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +11 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +6 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +21 -7
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +2 -12
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +12 -12
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +0 -6
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +112 -163
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +11 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +9 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +137 -52
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +12 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +108 -38
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +9 -3
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +385 -247
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +5 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -7
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +4 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +23 -23
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +124 -17
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +4 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +24 -7
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +30 -11
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +84 -0
  127. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +31 -0
  128. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +170 -0
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +47 -0
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +95 -0
  131. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +4 -1
  132. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  133. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -1
  134. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +4 -3
  135. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -0
  136. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +38 -6
  137. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +1 -0
  138. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +31 -0
  139. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +12 -3
  140. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +130 -23
  141. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +23 -0
  142. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +41 -0
  143. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  144. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +55 -3
  146. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +50 -39
  148. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  152. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +0 -35
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +0 -440
@@ -0,0 +1,18 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
3
+ import { IChatCollapsibleIODataPart } from "./chatToolInputOutputContentPart.js";
4
+ export declare class ChatThinkingExternalResourceWidget extends Disposable {
5
+ private readonly instantiationService;
6
+ readonly domNode: HTMLElement;
7
+ private readonly _onDidChangeHeight;
8
+ readonly onDidChangeHeight: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
9
+ private readonly resourcePartsByToolCallId;
10
+ private readonly resourceGroupWidget;
11
+ private readonly resourceGroupWidgetHeightListener;
12
+ private isCollapsed;
13
+ constructor(instantiationService: IInstantiationService);
14
+ setToolInvocationParts(toolCallId: string, parts: IChatCollapsibleIODataPart[]): void;
15
+ removeToolInvocation(toolCallId: string): void;
16
+ setCollapsed(collapsed: boolean): void;
17
+ private rebuild;
18
+ }
@@ -0,0 +1,70 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { $, hide, show, clearNode } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
+ import { Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
7
+ import { ChatResourceGroupWidget } from './chatResourceGroupWidget.js';
8
+
9
+ let ChatThinkingExternalResourceWidget = class ChatThinkingExternalResourceWidget extends Disposable {
10
+ constructor(instantiationService) {
11
+ super();
12
+ this.instantiationService = instantiationService;
13
+ this._onDidChangeHeight = this._register(( new Emitter()));
14
+ this.onDidChangeHeight = this._onDidChangeHeight.event;
15
+ this.resourcePartsByToolCallId = ( new Map());
16
+ this.resourceGroupWidget = this._register(( new MutableDisposable()));
17
+ this.resourceGroupWidgetHeightListener = this._register(( new MutableDisposable()));
18
+ this.isCollapsed = true;
19
+ this.domNode = $(".chat-thinking-external-resources");
20
+ hide(this.domNode);
21
+ }
22
+ setToolInvocationParts(toolCallId, parts) {
23
+ if (parts.length === 0) {
24
+ return;
25
+ }
26
+ this.resourcePartsByToolCallId.set(toolCallId, parts);
27
+ this.rebuild();
28
+ }
29
+ removeToolInvocation(toolCallId) {
30
+ if (!this.resourcePartsByToolCallId.delete(toolCallId)) {
31
+ return;
32
+ }
33
+ this.rebuild();
34
+ }
35
+ setCollapsed(collapsed) {
36
+ this.isCollapsed = collapsed;
37
+ if (!this.resourceGroupWidget.value) {
38
+ hide(this.domNode);
39
+ return;
40
+ }
41
+ if (this.isCollapsed) {
42
+ show(this.domNode);
43
+ } else {
44
+ hide(this.domNode);
45
+ }
46
+ }
47
+ rebuild() {
48
+ const allParts = [];
49
+ for (const parts of ( this.resourcePartsByToolCallId.values())) {
50
+ allParts.push(...parts);
51
+ }
52
+ this.resourceGroupWidgetHeightListener.clear();
53
+ this.resourceGroupWidget.clear();
54
+ clearNode(this.domNode);
55
+ if (allParts.length === 0) {
56
+ hide(this.domNode);
57
+ this._onDidChangeHeight.fire();
58
+ return;
59
+ }
60
+ const widget = this.instantiationService.createInstance(ChatResourceGroupWidget, allParts);
61
+ this.resourceGroupWidgetHeightListener.value = widget.onDidChangeHeight(() => this._onDidChangeHeight.fire());
62
+ this.resourceGroupWidget.value = widget;
63
+ this.domNode.appendChild(widget.domNode);
64
+ this.setCollapsed(this.isCollapsed);
65
+ this._onDidChangeHeight.fire();
66
+ }
67
+ };
68
+ ChatThinkingExternalResourceWidget = ( __decorate([( __param(0, IInstantiationService))], ChatThinkingExternalResourceWidget));
69
+
70
+ export { ChatThinkingExternalResourceWidget };
@@ -57,7 +57,7 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
57
57
  this.domNode = $(".chat-tip-widget");
58
58
  this.domNode.tabIndex = 0;
59
59
  this.domNode.setAttribute("role", "region");
60
- this.domNode.setAttribute("aria-roledescription", ( localize(6614, "tip")));
60
+ this.domNode.setAttribute("aria-roledescription", ( localize(6807, "tip")));
61
61
  this._inChatTipContextKey = ChatContextKeys.inChatTip.bindTo(this._contextKeyService);
62
62
  this._multipleChatTipsContextKey = ChatContextKeys.multipleChatTips.bindTo(this._contextKeyService);
63
63
  const focusTracker = this._register(trackFocus(this.domNode));
@@ -119,9 +119,9 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
119
119
  }
120
120
  });
121
121
  this.domNode.appendChild(toolbarContainer);
122
- const textContent = markdownContent.element.textContent ?? ( localize(6615, "Chat tip"));
122
+ const textContent = markdownContent.element.textContent ?? ( localize(6808, "Chat tip"));
123
123
  const hasLink = /\[.*?\]\(.*?\)/.test(tip.content.value);
124
- const ariaLabel = hasLink ? ( localize(6616, "{0} Tab to reach the action.", textContent)) : textContent;
124
+ const ariaLabel = hasLink ? ( localize(6809, "{0} Tab to reach the action.", textContent)) : textContent;
125
125
  this.domNode.setAttribute("aria-label", ariaLabel);
126
126
  }
127
127
  async _handleTipAction(link, mdStr) {
@@ -146,7 +146,7 @@ registerAction2(class PreviousTipAction extends Action2 {
146
146
  constructor() {
147
147
  super({
148
148
  id: "workbench.action.chat.previousTip",
149
- title: ( localize2(6617, "Previous tip")),
149
+ title: ( localize2(6810, "Previous tip")),
150
150
  icon: Codicon.chevronLeft,
151
151
  precondition: ChatContextKeys.multipleChatTips,
152
152
  f1: false,
@@ -166,7 +166,7 @@ registerAction2(class NextTipAction extends Action2 {
166
166
  constructor() {
167
167
  super({
168
168
  id: "workbench.action.chat.nextTip",
169
- title: ( localize2(6618, "Next tip")),
169
+ title: ( localize2(6811, "Next tip")),
170
170
  icon: Codicon.chevronRight,
171
171
  precondition: ChatContextKeys.multipleChatTips,
172
172
  f1: false,
@@ -186,7 +186,7 @@ registerAction2(class DismissTipToolbarAction extends Action2 {
186
186
  constructor() {
187
187
  super({
188
188
  id: "workbench.action.chat.dismissTipToolbar",
189
- title: ( localize2(6619, "Dismiss tip")),
189
+ title: ( localize2(6812, "Dismiss tip")),
190
190
  icon: Codicon.check,
191
191
  f1: false,
192
192
  menu: [{
@@ -204,7 +204,7 @@ registerAction2(class DismissTipAction extends Action2 {
204
204
  constructor() {
205
205
  super({
206
206
  id: "workbench.action.chat.dismissTip",
207
- title: ( localize2(6620, "Dismiss this tip")),
207
+ title: ( localize2(6813, "Dismiss this tip")),
208
208
  f1: false,
209
209
  menu: [{
210
210
  id: MenuId.ChatTipContext,
@@ -221,7 +221,7 @@ registerAction2(class DisableTipsAction extends Action2 {
221
221
  constructor() {
222
222
  super({
223
223
  id: "workbench.action.chat.disableTips",
224
- title: ( localize2(6621, "Disable tips")),
224
+ title: ( localize2(6814, "Disable tips")),
225
225
  icon: Codicon.bellSlash,
226
226
  f1: false,
227
227
  menu: [{
@@ -246,7 +246,7 @@ registerAction2(class ResetDismissedTipsAction extends Action2 {
246
246
  constructor() {
247
247
  super({
248
248
  id: "workbench.action.chat.resetDismissedTips",
249
- title: ( localize2(6622, "Reset Dismissed Tips")),
249
+ title: ( localize2(6815, "Reset Dismissed Tips")),
250
250
  f1: true,
251
251
  precondition: ChatContextKeys.enabled
252
252
  });
@@ -55,7 +55,7 @@ class TodoListRenderer {
55
55
  statusIcon.style.color = this.getStatusIconColor(todo.status);
56
56
  iconLabel.setLabel(todo.title);
57
57
  const statusText = this.getStatusText(todo.status);
58
- const ariaLabel = ( localize(6623, "{0}, {1}", todo.title, statusText));
58
+ const ariaLabel = ( localize(6816, "{0}, {1}", todo.title, statusText));
59
59
  todoElement.setAttribute("aria-label", ariaLabel);
60
60
  }
61
61
  disposeTemplate(templateData) {
@@ -64,12 +64,12 @@ class TodoListRenderer {
64
64
  getStatusText(status) {
65
65
  switch (status) {
66
66
  case "completed":
67
- return localize(6624, "completed");
67
+ return localize(6817, "completed");
68
68
  case "in-progress":
69
- return localize(6625, "in progress");
69
+ return localize(6818, "in progress");
70
70
  case "not-started":
71
71
  default:
72
- return localize(6626, "not started");
72
+ return localize(6819, "not started");
73
73
  }
74
74
  }
75
75
  getStatusIconClass(status) {
@@ -135,7 +135,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
135
135
  this.expandIcon.setAttribute("aria-hidden", "true");
136
136
  this.titleElement = $(".todo-list-title");
137
137
  this.titleElement.id = "todo-list-title";
138
- this.titleElement.textContent = ( localize(6627, "Todos"));
138
+ this.titleElement.textContent = ( localize(6820, "Todos"));
139
139
  this.clearButtonContainer = $(".todo-clear-button-container");
140
140
  this.createClearButton();
141
141
  titleSection.appendChild(this.expandIcon);
@@ -157,7 +157,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
157
157
  createClearButton() {
158
158
  this.clearButton = ( new Button(this.clearButtonContainer, {
159
159
  supportIcons: true,
160
- ariaLabel: ( localize(6628, "Clear all todos"))
160
+ ariaLabel: ( localize(6821, "Clear all todos"))
161
161
  }));
162
162
  this.clearButton.element.tabIndex = 0;
163
163
  this.clearButton.icon = Codicon.clearAll;
@@ -236,9 +236,9 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
236
236
  accessibilityProvider: {
237
237
  getAriaLabel: todo => {
238
238
  const statusText = this.getStatusText(todo.status);
239
- return localize(6623, "{0}, {1}", todo.title, statusText);
239
+ return localize(6816, "{0}, {1}", todo.title, statusText);
240
240
  },
241
- getWidgetAriaLabel: () => ( localize(6629, "Chat Todo List"))
241
+ getWidgetAriaLabel: () => ( localize(6822, "Chat Todo List"))
242
242
  }
243
243
  }
244
244
  ));
@@ -289,9 +289,9 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
289
289
  const shouldDisable = isRequestInProgress && hasInProgressTask;
290
290
  this.clearButton.enabled = !shouldDisable;
291
291
  if (shouldDisable) {
292
- this.clearButton.setTitle(( localize(6630, "Cannot clear todos while a task is in progress")));
292
+ this.clearButton.setTitle(( localize(6823, "Cannot clear todos while a task is in progress")));
293
293
  } else {
294
- this.clearButton.setTitle(( localize(6628, "Clear all todos")));
294
+ this.clearButton.setTitle(( localize(6821, "Clear all todos")));
295
295
  }
296
296
  }
297
297
  updateTitleElement(titleElement, todoList) {
@@ -303,12 +303,12 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
303
303
  const notStartedTodos = todoList.filter(todo => todo.status === "not-started");
304
304
  const firstNotStartedTodo = notStartedTodos.length > 0 ? notStartedTodos[0] : undefined;
305
305
  const currentTaskNumber = inProgressTodos.length > 0 ? completedCount + 1 : Math.max(1, completedCount);
306
- const expandButtonLabel = this._isExpanded ? ( localize(6631, "Collapse Todos")) : ( localize(6632, "Expand Todos"));
306
+ const expandButtonLabel = this._isExpanded ? ( localize(6824, "Collapse Todos")) : ( localize(6825, "Expand Todos"));
307
307
  this.expandoButton.element.setAttribute("aria-label", expandButtonLabel);
308
308
  this.expandoButton.element.setAttribute("aria-expanded", this._isExpanded ? "true" : "false");
309
309
  if (this._isExpanded) {
310
310
  const titleText = $("span");
311
- titleText.textContent = totalCount > 0 ? ( localize(6633, "Todos ({0}/{1})", currentTaskNumber, totalCount)) : ( localize(6627, "Todos"));
311
+ titleText.textContent = totalCount > 0 ? ( localize(6826, "Todos ({0}/{1})", currentTaskNumber, totalCount)) : ( localize(6820, "Todos"));
312
312
  titleElement.appendChild(titleText);
313
313
  } else {
314
314
  const todoToShow = firstInProgressTodo || firstNotStartedTodo;
@@ -325,7 +325,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
325
325
  icon.style.verticalAlign = "middle";
326
326
  titleElement.appendChild(icon);
327
327
  const todoText = $("span");
328
- todoText.textContent = ( localize(6634, "{0} ({1}/{2})", todoToShow.title, currentTaskNumber, totalCount));
328
+ todoText.textContent = ( localize(6827, "{0} ({1}/{2})", todoToShow.title, currentTaskNumber, totalCount));
329
329
  todoText.style.verticalAlign = "middle";
330
330
  todoText.style.overflow = "hidden";
331
331
  todoText.style.textOverflow = "ellipsis";
@@ -335,7 +335,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
335
335
  }
336
336
  else if (completedCount > 0 && completedCount === totalCount) {
337
337
  const doneText = $("span");
338
- doneText.textContent = ( localize(6633, "Todos ({0}/{1})", totalCount, totalCount));
338
+ doneText.textContent = ( localize(6826, "Todos ({0}/{1})", totalCount, totalCount));
339
339
  doneText.style.verticalAlign = "middle";
340
340
  titleElement.appendChild(doneText);
341
341
  }
@@ -344,12 +344,12 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
344
344
  getStatusText(status) {
345
345
  switch (status) {
346
346
  case "completed":
347
- return localize(6624, "completed");
347
+ return localize(6817, "completed");
348
348
  case "in-progress":
349
- return localize(6625, "in progress");
349
+ return localize(6818, "in progress");
350
350
  case "not-started":
351
351
  default:
352
- return localize(6626, "not started");
352
+ return localize(6819, "not started");
353
353
  }
354
354
  }
355
355
  };
@@ -60,7 +60,7 @@ export declare class ChatCollapsibleInputOutputContentPart extends Disposable {
60
60
  get title(): string | IMarkdownString;
61
61
  private readonly _expanded;
62
62
  get expanded(): boolean;
63
- constructor(title: IMarkdownString | string, subtitle: string | IMarkdownString | undefined, progressTooltip: IMarkdownString | string | undefined, context: IChatContentPartRenderContext, input: IChatCollapsibleInputData, output: IChatCollapsibleOutputData | undefined, isError: boolean, initiallyExpanded: boolean, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService, hoverService: IHoverService, modelService: IModelService, languageService: ILanguageService, chatMarkdownAnchorService: IChatMarkdownAnchorService, configurationService: IConfigurationService);
63
+ constructor(title: IMarkdownString | string, subtitle: string | IMarkdownString | undefined, progressTooltip: IMarkdownString | string | undefined, context: IChatContentPartRenderContext, input: IChatCollapsibleInputData, output: IChatCollapsibleOutputData | undefined, isError: boolean, initiallyExpanded: boolean, shimmer: boolean, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService, hoverService: IHoverService, modelService: IModelService, languageService: ILanguageService, chatMarkdownAnchorService: IChatMarkdownAnchorService, configurationService: IConfigurationService);
64
64
  private createMessageContents;
65
65
  private addCodeBlock;
66
66
  hasSameContent(other: IChatRendererContent, followingContent: IChatRendererContent[], element: ChatTreeItem): boolean;
@@ -46,6 +46,7 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
46
46
  output,
47
47
  isError,
48
48
  initiallyExpanded,
49
+ shimmer,
49
50
  contextKeyService,
50
51
  _instantiationService,
51
52
  hoverService,
@@ -98,11 +99,13 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
98
99
  const value = expanded.read(r);
99
100
  const checkmarksEnabled = showCheckmarks.read(r);
100
101
  elements.root.classList.toggle("collapsed", !value);
102
+ const isInProgress = !output && !isError;
101
103
  if (isError) {
102
104
  btn.icon = Codicon.error;
103
105
  } else {
104
106
  btn.icon = output ? Codicon.check : ThemeIcon.modify(Codicon.loading, "spin");
105
107
  }
108
+ elements.root.classList.toggle("shimmer-progress", shimmer && isInProgress);
106
109
  container.root.classList.toggle("show-checkmarks", checkmarksEnabled);
107
110
  hoverChevron.classList.toggle("codicon-chevron-right", !value);
108
111
  hoverChevron.classList.toggle("codicon-chevron-down", value);
@@ -145,13 +148,13 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
145
148
  input,
146
149
  output
147
150
  } = this;
148
- contents.inputTitle.textContent = ( localize(6635, "Input"));
151
+ contents.inputTitle.textContent = ( localize(6828, "Input"));
149
152
  this.addCodeBlock(input, contents.input);
150
153
  if (!output) {
151
154
  contents.output.remove();
152
155
  contents.outputTitle.remove();
153
156
  } else {
154
- contents.outputTitle.textContent = ( localize(6636, "Output"));
157
+ contents.outputTitle.textContent = ( localize(6829, "Output"));
155
158
  const outputSubPart = this._register(
156
159
  this._instantiationService.createInstance(ChatToolOutputContentSubPart, this.context, output.parts)
157
160
  );
@@ -190,6 +193,6 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
190
193
  this._outputSubPart?.layout(width);
191
194
  }
192
195
  };
193
- ChatCollapsibleInputOutputContentPart = ( __decorate([( __param(8, IContextKeyService)), ( __param(9, IInstantiationService)), ( __param(10, IHoverService)), ( __param(11, IModelService)), ( __param(12, ILanguageService)), ( __param(13, IChatMarkdownAnchorService)), ( __param(14, IConfigurationService))], ChatCollapsibleInputOutputContentPart));
196
+ ChatCollapsibleInputOutputContentPart = ( __decorate([( __param(9, IContextKeyService)), ( __param(10, IInstantiationService)), ( __param(11, IHoverService)), ( __param(12, IModelService)), ( __param(13, ILanguageService)), ( __param(14, IChatMarkdownAnchorService)), ( __param(15, IConfigurationService))], ChatCollapsibleInputOutputContentPart));
194
197
 
195
198
  export { ChatCollapsibleInputOutputContentPart };
@@ -83,7 +83,7 @@ let TreePool = class TreePool extends Disposable {
83
83
  },
84
84
  accessibilityProvider: {
85
85
  getAriaLabel: element => element.label,
86
- getWidgetAriaLabel: () => ( localize(6637, "File Tree"))
86
+ getWidgetAriaLabel: () => ( localize(6830, "File Tree"))
87
87
  },
88
88
  alwaysConsumeMouseWheel: false
89
89
  }
@@ -45,15 +45,15 @@ let ChatWorkspaceEditContentPart = class ChatWorkspaceEditContentPart extends Di
45
45
  for (const edit of workspaceEdit.edits) {
46
46
  if (edit.oldResource && !edit.newResource) {
47
47
  renderEntry(( localize(
48
- 6638,
48
+ 6831,
49
49
  "Deleted `{0}`",
50
50
  this.labelService.getUriBasenameLabel(edit.oldResource)
51
51
  )), Codicon.trash);
52
52
  } else if (!edit.oldResource && edit.newResource) {
53
- renderEntry(( localize(6639, "Created []({0})", (edit.newResource.toString()))), Codicon.newFile);
53
+ renderEntry(( localize(6832, "Created []({0})", (edit.newResource.toString()))), Codicon.newFile);
54
54
  } else if (edit.oldResource && edit.newResource) {
55
55
  renderEntry(( localize(
56
- 6640,
56
+ 6833,
57
57
  "Renamed {0} to []({1})",
58
58
  this.labelService.getUriBasenameLabel(edit.oldResource),
59
59
  (edit.newResource.toString())
@@ -148,7 +148,7 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
148
148
  multipleDefinitions: "goto",
149
149
  multipleImplementations: "goto"
150
150
  },
151
- ariaLabel: ( localize(6641, "Code block")),
151
+ ariaLabel: ( localize(6834, "Code block")),
152
152
  overflowWidgetsDomNode,
153
153
  tabFocusMode: true,
154
154
  ...this.getEditorOptionsFromConfig()
@@ -339,11 +339,11 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
339
339
  });
340
340
  if (!this.editor.getOption(EditorOption.ariaLabel)) {
341
341
  this.editor.updateOptions({
342
- ariaLabel: ( localize(6642, "Code block {0}", data.codeBlockIndex + 1))
342
+ ariaLabel: ( localize(6835, "Code block {0}", data.codeBlockIndex + 1))
343
343
  });
344
344
  }
345
345
  this.layout(width);
346
- this.toolbar.setAriaLabel(( localize(6643, "Code block {0}", data.codeBlockIndex + 1)));
346
+ this.toolbar.setAriaLabel(( localize(6836, "Code block {0}", data.codeBlockIndex + 1)));
347
347
  if (data.renderOptions?.hideToolbar) {
348
348
  hide(this.toolbar.getElement());
349
349
  } else {
@@ -398,7 +398,7 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
398
398
  if (!this.currentCodeBlockData || !this.currentCodeBlockData.vulns) {
399
399
  return "";
400
400
  }
401
- const referencesLabel = this.currentCodeBlockData.vulns.length > 1 ? ( localize(6644, "{0} vulnerabilities", this.currentCodeBlockData.vulns.length)) : ( localize(6645, "{0} vulnerability", 1));
401
+ const referencesLabel = this.currentCodeBlockData.vulns.length > 1 ? ( localize(6837, "{0} vulnerabilities", this.currentCodeBlockData.vulns.length)) : ( localize(6838, "{0} vulnerability", 1));
402
402
  const icon = element => element.vulnerabilitiesListExpanded ? Codicon.chevronDown : Codicon.chevronRight;
403
403
  return `${referencesLabel} $(${icon(this.currentCodeBlockData.element).id})`;
404
404
  }
@@ -508,7 +508,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
508
508
  multipleDefinitions: "goto",
509
509
  multipleImplementations: "goto"
510
510
  },
511
- ariaLabel: ( localize(6641, "Code block")),
511
+ ariaLabel: ( localize(6834, "Code block")),
512
512
  overflowWidgetsDomNode,
513
513
  ...this.getEditorOptionsFromConfig()
514
514
  });
@@ -587,8 +587,8 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
587
587
  stickyScroll: {
588
588
  enabled: false
589
589
  },
590
- originalAriaLabel: ( localize(6646, "Original")),
591
- modifiedAriaLabel: ( localize(6647, "Modified")),
590
+ originalAriaLabel: ( localize(6839, "Original")),
591
+ modifiedAriaLabel: ( localize(6840, "Modified")),
592
592
  diffAlgorithm: "advanced",
593
593
  readOnly: false,
594
594
  isInEmbeddedEditor: true,
@@ -629,7 +629,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
629
629
  const toolbarElt = this.toolbar.getElement();
630
630
  toolbarElt.style.display = "block";
631
631
  if (this.accessibilityService.isScreenReaderOptimized()) {
632
- toolbarElt.ariaLabel = ( localize(6648, "Code block toolbar"));
632
+ toolbarElt.ariaLabel = ( localize(6841, "Code block toolbar"));
633
633
  }
634
634
  }
635
635
  getEditorOptionsFromConfig() {
@@ -670,7 +670,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
670
670
  await this.updateEditor(data, token);
671
671
  this.layout(width);
672
672
  this.diffEditor.updateOptions({
673
- ariaLabel: ( localize(6649, "Code Edits")),
673
+ ariaLabel: ( localize(6842, "Code Edits")),
674
674
  readOnly: !!data.isReadOnly
675
675
  });
676
676
  this.resourceLabel.element.setFile(data.edit.uri, {
@@ -705,12 +705,12 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
705
705
  });
706
706
  let template;
707
707
  if (data.edit.state.applied === 1) {
708
- template = ( localize(6650, "Applied 1 change in [[``{0}``]]", uriLabel));
708
+ template = ( localize(6843, "Applied 1 change in [[``{0}``]]", uriLabel));
709
709
  } else if (data.edit.state.applied < 0) {
710
- template = ( localize(6651, "Edits in [[``{0}``]] have been rejected", uriLabel));
710
+ template = ( localize(6844, "Edits in [[``{0}``]] have been rejected", uriLabel));
711
711
  } else {
712
712
  template = ( localize(
713
- 6652,
713
+ 6845,
714
714
  "Applied {0} changes in [[``{1}``]]",
715
715
  data.edit.state.applied,
716
716
  uriLabel
@@ -837,8 +837,8 @@ let DefaultChatTextEditor = class DefaultChatTextEditor {
837
837
  async _checkSha1(model, item) {
838
838
  if (item.state?.sha1 && this._sha1.computeSHA1(model) && this._sha1.computeSHA1(model) !== item.state.sha1) {
839
839
  const result = await this.dialogService.confirm({
840
- message: ( localize(6653, "The original file has been modified.")),
841
- detail: ( localize(6654, "Do you want to apply the changes anyway?"))
840
+ message: ( localize(6846, "The original file has been modified.")),
841
+ detail: ( localize(6847, "Do you want to apply the changes anyway?"))
842
842
  });
843
843
  if (!result.confirmed) {
844
844
  return false;
@@ -266,6 +266,138 @@
266
266
  }
267
267
  }
268
268
 
269
+ .chat-confirmation-widget2 .chat-modified-files-confirmation-list {
270
+ margin: 8px -9px 0;
271
+ border-top: 1px solid var(--vscode-chat-requestBorder);
272
+ border-left: none;
273
+ border-right: none;
274
+ border-bottom: none;
275
+ border-radius: 0;
276
+ padding: 3px 0 0;
277
+
278
+ .chat-editing-session-overview {
279
+ display: flex;
280
+ align-items: center;
281
+ justify-content: space-between;
282
+ gap: 6px;
283
+ min-height: 22px;
284
+ cursor: pointer;
285
+ }
286
+
287
+ .working-set-title {
288
+ flex: 1;
289
+ min-width: 0;
290
+ color: var(--vscode-descriptionForeground);
291
+ font-size: 12px;
292
+ white-space: nowrap;
293
+ overflow: hidden;
294
+ text-overflow: ellipsis;
295
+ align-content: center;
296
+
297
+ .monaco-button {
298
+ width: fit-content;
299
+ max-width: 100%;
300
+ padding: 4px 6px 4px 0;
301
+ border: none;
302
+ border-radius: 2px;
303
+ background-color: unset;
304
+ color: var(--vscode-descriptionForeground);
305
+ }
306
+
307
+ .monaco-button:focus {
308
+ outline: none !important;
309
+ box-shadow: none !important;
310
+ }
311
+
312
+ .monaco-button:hover {
313
+ background-color: transparent;
314
+ }
315
+
316
+ .monaco-button:focus-visible {
317
+ outline: none !important;
318
+ box-shadow: none !important;
319
+ }
320
+
321
+ .monaco-button-mdlabel {
322
+ display: flex;
323
+ align-items: center;
324
+ width: auto;
325
+ flex: 0 1 auto;
326
+ text-align: left;
327
+ }
328
+ }
329
+
330
+ .working-set-line-counts {
331
+ display: inline-flex;
332
+ gap: 4px;
333
+ margin-left: 6px;
334
+ font-size: 11px;
335
+ font-weight: 500;
336
+ flex-shrink: 0;
337
+ }
338
+
339
+ .working-set-lines-added {
340
+ color: var(--vscode-chat-linesAddedForeground);
341
+ }
342
+
343
+ .working-set-lines-removed {
344
+ color: var(--vscode-chat-linesRemovedForeground);
345
+ }
346
+
347
+ .chat-editing-session-actions {
348
+ display: flex;
349
+ align-items: center;
350
+ gap: 6px;
351
+ flex-shrink: 0;
352
+ padding-right: 8px;
353
+ }
354
+
355
+ .chat-editing-session-actions .monaco-button.secondary.monaco-text-button.codicon {
356
+ cursor: pointer;
357
+ padding: 2px;
358
+ border-radius: 4px;
359
+ display: inline-flex;
360
+ }
361
+
362
+ .chat-editing-session-list {
363
+ margin-top: 4px;
364
+ }
365
+
366
+ .chat-editing-session-list.collapsed {
367
+ display: none;
368
+ }
369
+
370
+ .chat-editing-session-list .monaco-scrollable-element {
371
+ border-radius: 0;
372
+ }
373
+
374
+ .chat-editing-session-list .monaco-list-row {
375
+ border-radius: 4px;
376
+ }
377
+
378
+ .chat-editing-session-list .monaco-list-row:hover {
379
+ background-color: var(--vscode-list-hoverBackground) !important;
380
+ }
381
+
382
+ .chat-editing-session-list .monaco-icon-label {
383
+ padding: 0 3px;
384
+ }
385
+
386
+ .chat-editing-session-list .working-set-line-counts {
387
+ margin: 0 6px;
388
+ }
389
+
390
+ .chat-collapsible-list-action-bar {
391
+ display: none;
392
+ }
393
+
394
+ .monaco-list-row:hover .chat-collapsible-list-action-bar:not(.has-no-actions),
395
+ .monaco-list-row.focused .chat-collapsible-list-action-bar:not(.has-no-actions),
396
+ .monaco-list-row.selected .chat-collapsible-list-action-bar:not(.has-no-actions) {
397
+ display: inherit;
398
+ }
399
+ }
400
+
269
401
  .chat-confirmation-widget2 .chat-confirmation-message-terminal .chat-confirmation-message-terminal-editor {
270
402
  border-bottom: 1px solid var(--vscode-chat-requestBorder);
271
403
  }
@@ -372,4 +504,23 @@
372
504
  padding-left: 2px;
373
505
  }
374
506
 
507
+ /* shimmer animation for collapsible tool widgets (e.g. MCP tools) */
508
+ .chat-confirmation-widget.shimmer-progress .chat-confirmation-widget-title > .codicon:first-child:not(.chat-collapsible-hover-chevron) {
509
+ display: none;
510
+ }
511
+
512
+ .chat-confirmation-widget.shimmer-progress .chat-confirmation-widget-title-inner > .rendered-markdown > p {
513
+ background: linear-gradient(90deg,
514
+ var(--vscode-descriptionForeground) 0%,
515
+ var(--vscode-descriptionForeground) 30%,
516
+ var(--vscode-chat-thinkingShimmer) 50%,
517
+ var(--vscode-descriptionForeground) 70%,
518
+ var(--vscode-descriptionForeground) 100%);
519
+ background-size: 400% 100%;
520
+ background-clip: text;
521
+ -webkit-background-clip: text;
522
+ -webkit-text-fill-color: transparent;
523
+ animation: chat-thinking-shimmer 2s linear infinite;
524
+ }
525
+
375
526
  }
@@ -60,9 +60,9 @@
60
60
  flex-shrink: 0;
61
61
  }
62
62
 
63
- /* Link-style appearance - no box, no icon */
64
- .chat-inline-anchor-widget.link-style,
65
- .interactive-item-container .value .rendered-markdown .chat-inline-anchor-widget.link-style {
63
+ /* Link-style appearance - no box, no icon (controlled by parent container class) */
64
+ .chat-inline-references-link-style .chat-inline-anchor-widget,
65
+ .chat-inline-references-link-style .interactive-item-container .value .rendered-markdown .chat-inline-anchor-widget {
66
66
  border: none;
67
67
  background-color: transparent;
68
68
  padding: 0;
@@ -70,15 +70,15 @@
70
70
  color: var(--vscode-textLink-foreground);
71
71
  }
72
72
 
73
- .chat-inline-anchor-widget.link-style:hover {
73
+ .chat-inline-references-link-style .chat-inline-anchor-widget:hover {
74
74
  background-color: transparent;
75
75
  text-decoration: underline;
76
76
  }
77
77
 
78
- .chat-inline-anchor-widget.link-style .icon {
78
+ .chat-inline-references-link-style .chat-inline-anchor-widget .icon {
79
79
  display: none;
80
80
  }
81
81
 
82
- .chat-inline-anchor-widget.link-style .icon-label {
82
+ .chat-inline-references-link-style .chat-inline-anchor-widget .icon-label {
83
83
  padding: 0;
84
84
  }