@codingame/monaco-vscode-katex-common 26.2.1 → 27.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 (183) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +10 -4
  3. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +35 -11
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +3 -0
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +15 -4
  6. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +548 -0
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +5 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +168 -15
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +67 -51
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.d.ts +1 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -11
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +9 -9
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +8 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +42 -19
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +12 -1
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +63 -40
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +7 -5
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +77 -73
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -32
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -6
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +381 -83
  25. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  26. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +28 -13
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +38 -19
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +109 -113
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -15
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -2
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +2 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +28 -9
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +226 -123
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  37. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -4
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +3 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +9 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +1 -3
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +7 -10
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +3 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +22 -4
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +2 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.js +11 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.d.ts +0 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +0 -6
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +3 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.js +6 -3
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +2 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +5 -4
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +0 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -27
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +3 -0
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +52 -22
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -7
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +2 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +20 -8
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +3 -3
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.js +11 -6
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +36 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +166 -45
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +3 -2
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +16 -11
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +14 -5
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +98 -26
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.js +1 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +10 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +244 -80
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.d.ts +29 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +252 -8
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +4 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +39 -18
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +5 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +36 -23
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +5 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +5 -7
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +42 -37
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +12 -3
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +48 -18
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +9 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +351 -422
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +14 -7
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +102 -7
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +69 -19
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/codeBlockPart.css +48 -15
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +4 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +47 -23
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +0 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +0 -5
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +2 -2
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +7 -7
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +18 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +103 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -18
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +1 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +63 -69
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -9
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +3 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +41 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +6 -5
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +13 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.js +2 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +17 -3
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +310 -79
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +13 -4
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +35 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +441 -0
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +24 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +392 -86
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +52 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +271 -187
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +68 -0
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +668 -0
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +12 -1
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +57 -16
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -6
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +78 -45
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +1 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +28 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +86 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +9 -5
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +4 -3
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +393 -134
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +36 -17
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +20 -13
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +25 -6
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +141 -79
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +18 -13
  155. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.d.ts +7 -0
  156. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +108 -27
  157. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +1 -0
  158. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +20 -14
  159. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +4 -6
  160. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +74 -32
  161. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +11 -2
  162. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +68 -27
  163. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +5 -0
  164. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +125 -13
  165. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +8 -11
  166. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +54 -45
  167. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +11 -10
  168. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +172 -112
  169. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  170. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +0 -42
  172. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +27 -3
  173. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +83 -2
  174. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +8 -1
  175. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +58 -33
  176. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  177. package/vscode/src/vs/workbench/contrib/mcp/common/modelContextProtocolApps.d.ts +1 -548
  178. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  179. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  180. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  181. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +0 -187
  183. /package/vscode/src/vs/{workbench/contrib → platform}/mcp/common/modelContextProtocolApps.js +0 -0
@@ -5,6 +5,7 @@ import { $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
5
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
6
6
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
7
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
8
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
8
9
  import { HOOK_TYPES, HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
9
10
  import { ChatCollapsibleContentPart } from './chatCollapsibleContentPart.js';
10
11
  import * as chatHookContentPart from './media/chatHookContentPart.css';
@@ -14,13 +15,13 @@ function getHookTypeLabel(hookType) {
14
15
  return HOOK_TYPES.find(hook => hook.id === hookType)?.label ?? hookType;
15
16
  }
16
17
  let ChatHookContentPart = class ChatHookContentPart extends ChatCollapsibleContentPart {
17
- constructor(hookPart, context, hoverService) {
18
+ constructor(hookPart, context, hoverService, configurationService) {
18
19
  const hookTypeLabel = getHookTypeLabel(hookPart.hookType);
19
20
  const isStopped = !!hookPart.stopReason;
20
21
  const isWarning = !!hookPart.systemMessage;
21
22
  const toolName = hookPart.toolDisplayName;
22
- const title = isStopped ? (toolName ? ( localize(5909, "Blocked {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(5910, "Blocked by {0} hook", hookTypeLabel))) : (toolName ? ( localize(5911, "Warning for {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(5912, "Warning from {0} hook", hookTypeLabel)));
23
- super(title, context, undefined, hoverService);
23
+ const title = isStopped ? (toolName ? ( localize(6413, "Blocked {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(6414, "Blocked by {0} hook", hookTypeLabel))) : (toolName ? ( localize(6415, "Warning for {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(6416, "Warning from {0} hook", hookTypeLabel)));
24
+ super(title, context, undefined, hoverService, configurationService);
24
25
  this.hookPart = hookPart;
25
26
  this.icon = isStopped ? Codicon.error : isWarning ? Codicon.warning : Codicon.check;
26
27
  if (isStopped) {
@@ -50,6 +51,6 @@ let ChatHookContentPart = class ChatHookContentPart extends ChatCollapsibleConte
50
51
  return other.hookType === this.hookPart.hookType && other.stopReason === this.hookPart.stopReason && other.systemMessage === this.hookPart.systemMessage && other.toolDisplayName === this.hookPart.toolDisplayName;
51
52
  }
52
53
  };
53
- ChatHookContentPart = ( __decorate([( __param(2, IHoverService))], ChatHookContentPart));
54
+ ChatHookContentPart = ( __decorate([( __param(2, IHoverService)), ( __param(3, IConfigurationService))], ChatHookContentPart));
54
55
 
55
56
  export { ChatHookContentPart };
@@ -39,7 +39,6 @@ export declare class InlineAnchorWidget extends Disposable {
39
39
  private readonly notebookDocumentService;
40
40
  private readonly openerService;
41
41
  static readonly className = "chat-inline-anchor-widget";
42
- private readonly _chatResourceContext;
43
42
  readonly data: ContentRefData;
44
43
  constructor(element: HTMLAnchorElement | HTMLElement, inlineReference: IChatContentInlineReference, metadata: InlineAnchorWidgetMetadata | undefined, configurationService: IConfigurationService, originalContextKeyService: IContextKeyService, contextMenuService: IContextMenuService, fileService: IFileService, hoverService: IHoverService, instantiationService: IInstantiationService, labelService: ILabelService, languageService: ILanguageService, menuService: IMenuService, modelService: IModelService, telemetryService: ITelemetryService, themeService: IThemeService, notebookDocumentService: INotebookDocumentService, openerService: IOpenerService);
45
44
  getHTMLElement(): HTMLElement;
@@ -41,7 +41,7 @@ import { globMatchesResource } from '@codingame/monaco-vscode-api/vscode/vs/work
41
41
  import { INotebookDocumentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/notebook/common/notebookDocumentService.service';
42
42
  import { ExplorerFolderContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/common/files';
43
43
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
44
- import { chatAttachmentResourceContextKey, hookUpSymbolAttachmentDragAndContextMenu } from '../../attachments/chatAttachmentWidgets.js';
44
+ import { hookUpSymbolAttachmentDragAndContextMenu, chatAttachmentResourceContextKey } from '../../attachments/chatAttachmentWidgets.js';
45
45
  import { IChatMarkdownAnchorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service';
46
46
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
47
47
  import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
@@ -133,13 +133,10 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
133
133
  } : {
134
134
  uri: inlineReference.inlineReference
135
135
  };
136
- const contextKeyService = this._register(originalContextKeyService.createScoped(element));
137
- this._chatResourceContext = chatAttachmentResourceContextKey.bindTo(contextKeyService);
138
136
  element.classList.add(InlineAnchorWidget_1.className, "show-file-icons");
139
137
  let iconText;
140
138
  let iconClasses;
141
139
  let location;
142
- let updateContextKeys;
143
140
  if (this.data.kind === "symbol") {
144
141
  const symbol = this.data.symbol;
145
142
  location = this.data.symbol.location;
@@ -152,7 +149,7 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
152
149
  SymbolKinds.toIcon(symbol.kind)
153
150
  )];
154
151
  this._store.add(instantiationService.invokeFunction(
155
- accessor => hookUpSymbolAttachmentDragAndContextMenu(accessor, element, contextKeyService, {
152
+ accessor => hookUpSymbolAttachmentDragAndContextMenu(accessor, element, originalContextKeyService, {
156
153
  value: symbol.location,
157
154
  name: symbol.name,
158
155
  kind: symbol.kind
@@ -186,23 +183,28 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
186
183
  this._register(themeService.onDidFileIconThemeChange(() => {
187
184
  refreshIconClasses();
188
185
  }));
189
- const isFolderContext = ExplorerFolderContext.bindTo(contextKeyService);
186
+ let isDirectory = false;
190
187
  fileService.stat(location.uri).then(stat => {
191
- isFolderContext.set(stat.isDirectory);
188
+ isDirectory = stat.isDirectory;
192
189
  if (stat.isDirectory) {
193
190
  fileKind = FileKind.FOLDER;
194
191
  refreshIconClasses();
195
192
  }
196
193
  }).catch(() => {});
194
+ const contextKeyService = this._register(originalContextKeyService.createScoped(element));
195
+ chatAttachmentResourceContextKey.bindTo(contextKeyService).set(( location.uri.toString()));
196
+ const isFolderContext = ExplorerFolderContext.bindTo(contextKeyService);
197
+ let contextMenuInitialized = false;
197
198
  this._register(
198
199
  addDisposableListener(element, EventType.CONTEXT_MENU, async domEvent => {
199
200
  const event = ( new StandardMouseEvent(getWindow(domEvent), domEvent));
200
201
  EventHelper.stop(domEvent, true);
201
- try {
202
- await updateContextKeys?.();
203
- } catch (e) {
204
- console.error(e);
202
+ if (!contextMenuInitialized) {
203
+ contextMenuInitialized = true;
204
+ const resourceContextKey = ( new StaticResourceContextKey(contextKeyService, fileService, languageService, modelService));
205
+ resourceContextKey.set(location.uri);
205
206
  }
207
+ isFolderContext.set(isDirectory);
206
208
  if (this._store.isDisposed) {
207
209
  return;
208
210
  }
@@ -220,10 +222,10 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
220
222
  );
221
223
  if (location.range) {
222
224
  if (location.range.startLineNumber === location.range.endLineNumber) {
223
- element.setAttribute("aria-label", ( localize(5913, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
225
+ element.setAttribute("aria-label", ( localize(6417, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
224
226
  } else {
225
227
  element.setAttribute("aria-label", ( localize(
226
- 5914,
228
+ 6418,
227
229
  "{0} lines {1} to {2}",
228
230
  filePathLabel,
229
231
  location.range.startLineNumber,
@@ -232,9 +234,6 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
232
234
  }
233
235
  }
234
236
  }
235
- const resourceContextKey = ( new StaticResourceContextKey(contextKeyService, fileService, languageService, modelService));
236
- resourceContextKey.set(location.uri);
237
- this._chatResourceContext.set(( location.uri.toString()));
238
237
  const iconEl = $("span.icon");
239
238
  iconEl.classList.add(...iconClasses);
240
239
  element.replaceChildren(iconEl, $("span.icon-label", {}, ...iconText));
@@ -302,7 +301,7 @@ registerAction2(class AddFileToChatAction extends Action2 {
302
301
  constructor() {
303
302
  super({
304
303
  id: AddFileToChatAction.id,
305
- title: ( localize2(5915, "Add File to Chat")),
304
+ title: ( localize2(6419, "Add File to Chat")),
306
305
  menu: [{
307
306
  id: MenuId.ChatInlineResourceAnchorContext,
308
307
  group: "chat",
@@ -326,7 +325,7 @@ registerAction2(class CopyResourceAction extends Action2 {
326
325
  constructor() {
327
326
  super({
328
327
  id: CopyResourceAction.id,
329
- title: ( localize2(5916, "Copy")),
328
+ title: ( localize2(6420, "Copy")),
330
329
  f1: false,
331
330
  precondition: chatAttachmentResourceContextKey,
332
331
  keybinding: {
@@ -353,7 +352,7 @@ registerAction2(class OpenToSideResourceAction extends Action2 {
353
352
  constructor() {
354
353
  super({
355
354
  id: OpenToSideResourceAction.id,
356
- title: ( localize2(5917, "Open to the Side")),
355
+ title: ( localize2(6421, "Open to the Side")),
357
356
  f1: false,
358
357
  precondition: chatAttachmentResourceContextKey,
359
358
  keybinding: {
@@ -419,8 +418,8 @@ registerAction2(class GoToDefinitionAction extends Action2 {
419
418
  super({
420
419
  id: GoToDefinitionAction.id,
421
420
  title: {
422
- ...( localize2(5918, "Go to Definition")),
423
- mnemonicTitle: ( localize(5919, "Go to &&Definition"))
421
+ ...( localize2(6422, "Go to Definition")),
422
+ mnemonicTitle: ( localize(6423, "Go to &&Definition"))
424
423
  },
425
424
  menu: ( [
426
425
  MenuId.ChatInlineSymbolAnchorContext,
@@ -477,8 +476,8 @@ registerAction2(class GoToTypeDefinitionsAction extends Action2 {
477
476
  super({
478
477
  id: GoToTypeDefinitionsAction.id,
479
478
  title: {
480
- ...( localize2(5920, "Go to Type Definitions")),
481
- mnemonicTitle: ( localize(5921, "Go to &&Type Definitions"))
479
+ ...( localize2(6424, "Go to Type Definitions")),
480
+ mnemonicTitle: ( localize(6425, "Go to &&Type Definitions"))
482
481
  },
483
482
  menu: ( [
484
483
  MenuId.ChatInlineSymbolAnchorContext,
@@ -503,8 +502,8 @@ registerAction2(class GoToImplementations extends Action2 {
503
502
  super({
504
503
  id: GoToImplementations.id,
505
504
  title: {
506
- ...( localize2(5922, "Go to Implementations")),
507
- mnemonicTitle: ( localize(5923, "Go to &&Implementations"))
505
+ ...( localize2(6426, "Go to Implementations")),
506
+ mnemonicTitle: ( localize(6427, "Go to &&Implementations"))
508
507
  },
509
508
  menu: ( [
510
509
  MenuId.ChatInlineSymbolAnchorContext,
@@ -529,8 +528,8 @@ registerAction2(class GoToReferencesAction extends Action2 {
529
528
  super({
530
529
  id: GoToReferencesAction.id,
531
530
  title: {
532
- ...( localize2(5924, "Go to References")),
533
- mnemonicTitle: ( localize(5925, "Go to &&References"))
531
+ ...( localize2(6428, "Go to References")),
532
+ mnemonicTitle: ( localize(6429, "Go to &&References"))
534
533
  },
535
534
  menu: ( [
536
535
  MenuId.ChatInlineSymbolAnchorContext,
@@ -1,5 +1,6 @@
1
1
  import { type MarkdownRenderOptions } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer";
2
2
  import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
3
4
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
5
  import { ILanguageService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service";
5
6
  import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
@@ -45,6 +46,8 @@ export declare class ChatMarkdownContentPart extends Disposable implements IChat
45
46
  private static ID_POOL;
46
47
  readonly codeblocksPartId: string;
47
48
  readonly domNode: HTMLElement;
49
+ private readonly _onDidChangeHeight;
50
+ readonly onDidChangeHeight: Event<void>;
48
51
  private readonly allRefs;
49
52
  private readonly _codeblocks;
50
53
  get codeblocks(): IChatCodeBlockInfo[];
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
- import { $ as $$1, getWindow, isHTMLElement, addDisposableListener, EventType, EventHelper } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { $ as $$1, clearNode, getWindow, DisposableResizeObserver, isHTMLElement, addDisposableListener, EventType, EventHelper } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
5
  import { allowedMarkdownHtmlAttributes } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
6
6
  import { StandardMouseEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/mouseEvent';
7
7
  import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
@@ -12,7 +12,8 @@ import { coalesce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arr
12
12
  import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
13
13
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
14
14
  import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
15
- import { Disposable, toDisposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
15
+ import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
16
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
16
17
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
17
18
  import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
18
19
  import { equalsIgnoreCase } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
@@ -94,12 +95,13 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
94
95
  this.instantiationService = instantiationService;
95
96
  this.aiEditTelemetryService = aiEditTelemetryService;
96
97
  this.codeblocksPartId = String(++ChatMarkdownContentPart_1.ID_POOL);
98
+ this._onDidChangeHeight = this._register(( new Emitter()));
99
+ this.onDidChangeHeight = this._onDidChangeHeight.event;
97
100
  this.allRefs = [];
98
101
  this._codeblocks = [];
99
102
  this.mathLayoutParticipants = ( new Set());
100
103
  const element = context.element;
101
104
  const inUndoStop = findLast(context.content, e => e.kind === "undoStop", context.contentIndex)?.id;
102
- const orderedDisposablesList = [];
103
105
  let globalCodeBlockIndexStart = codeBlockStartIndex;
104
106
  let thisPartCodeBlockIndexStart = 0;
105
107
  this.domNode = $("div.chat-markdown-part");
@@ -110,10 +112,20 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
110
112
  }
111
113
  }
112
114
  const enableMath = configurationService.getValue(ChatConfiguration.EnableMath);
115
+ const renderStore = this._register(( new MutableDisposable()));
113
116
  const doRenderMarkdown = () => {
114
117
  if (this._store.isDisposed) {
115
118
  return;
116
119
  }
120
+ const store = ( new DisposableStore());
121
+ renderStore.value = store;
122
+ clearNode(this.domNode);
123
+ this.allRefs.length = 0;
124
+ this._codeblocks.length = 0;
125
+ this.mathLayoutParticipants.clear();
126
+ globalCodeBlockIndexStart = codeBlockStartIndex;
127
+ thisPartCodeBlockIndexStart = 0;
128
+ const orderedDisposablesList = [];
117
129
  const markedExtensions = enableMath ? coalesce([MarkedKatexSupport.getExtension(getWindow(context.container), {
118
130
  throwOnError: false
119
131
  })]) : [];
@@ -121,7 +133,7 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
121
133
  gfm: true,
122
134
  breaks: true
123
135
  };
124
- const result = this._register(renderer.render(markdown.content, {
136
+ const result = store.add(renderer.render(markdown.content, {
125
137
  sanitizerConfig: MarkedKatexSupport.getSanitizerOptions({
126
138
  allowedTags: allowedChatMarkdownHtmlTags,
127
139
  allowedAttributes: allowedMarkdownHtmlAttributes
@@ -170,7 +182,7 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
170
182
  }
171
183
  }
172
184
  if (languageId === "vscode-extensions") {
173
- const chatExtensions = this._register(instantiationService.createInstance(ChatExtensionsContentPart, {
185
+ const chatExtensions = store.add(instantiationService.createInstance(ChatExtensionsContentPart, {
174
186
  kind: "extensions",
175
187
  extensions: text.split(",")
176
188
  }));
@@ -186,7 +198,13 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
186
198
  try {
187
199
  const parsedBody = parseLocalFileData(text);
188
200
  range = parsedBody.range && Range.lift(parsedBody.range);
189
- textModel = this.textModelService.createModelReference(parsedBody.uri).then(ref => ref.object.textEditorModel);
201
+ const modelRefPromise = this.textModelService.createModelReference(parsedBody.uri);
202
+ textModel = modelRefPromise.then(ref => {
203
+ if (!store.isDisposed) {
204
+ store.add(ref);
205
+ }
206
+ return ref.object.textEditorModel;
207
+ });
190
208
  } catch (e) {
191
209
  return $("div");
192
210
  }
@@ -320,13 +338,12 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
320
338
  })));
321
339
  }
322
340
  const markdownDecorationsRenderer = instantiationService.createInstance(ChatMarkdownDecorationsRenderer);
323
- this._register(
341
+ store.add(
324
342
  markdownDecorationsRenderer.walkTreeAndAnnotateReferenceLinks(markdown, result.element)
325
343
  );
326
344
  const layoutParticipants = ( new Lazy(() => {
327
- const observer = ( new ResizeObserver(() => this.mathLayoutParticipants.forEach(layout => layout())));
345
+ const observer = store.add(( new DisposableResizeObserver(() => this.mathLayoutParticipants.forEach(layout => layout()))));
328
346
  observer.observe(this.domNode);
329
- this._register(toDisposable(() => observer.disconnect()));
330
347
  return this.mathLayoutParticipants;
331
348
  }));
332
349
  for (const katexBlock of this.domNode.querySelectorAll(".katex-display")) {
@@ -344,16 +361,15 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
344
361
  });
345
362
  scrollable.scanDomNode();
346
363
  }
347
- orderedDisposablesList.reverse().forEach(d => this._register(d));
364
+ orderedDisposablesList.reverse().forEach(d => store.add(d));
348
365
  };
366
+ doRenderMarkdown();
349
367
  if (enableMath && !MarkedKatexSupport.getExtension(getWindow(context.container))) {
350
- MarkedKatexSupport.loadExtension(getWindow(context.container)).catch(e => {
351
- console.error("Failed to load MarkedKatexSupport extension:", e);
352
- }).finally(() => {
368
+ MarkedKatexSupport.loadExtension(getWindow(context.container)).then(() => {
353
369
  doRenderMarkdown();
370
+ }).catch(e => {
371
+ console.error("Failed to load MarkedKatexSupport extension:", e);
354
372
  });
355
- } else {
356
- doRenderMarkdown();
357
373
  }
358
374
  }
359
375
  renderCodeBlockPill(sessionResource, requestId, inUndoStop, codemapperUri) {
@@ -377,7 +393,11 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
377
393
  }).then(e => {
378
394
  this._codeblocks[data.codeBlockPartIndex].codemapperUri = e.codemapperUri;
379
395
  });
380
- editorInfo.render(data, currentWidth);
396
+ editorInfo.render(data, currentWidth).then(() => {
397
+ if (!this._store.isDisposed && isRequestVM(data.element)) {
398
+ this._onDidChangeHeight.fire();
399
+ }
400
+ });
381
401
  return ref;
382
402
  }
383
403
  hasSameContent(other) {
@@ -467,6 +487,16 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
467
487
  this.pillElement.role = "button";
468
488
  this.element.appendChild(this.statusIndicatorContainer);
469
489
  this.element.appendChild(this.pillElement);
490
+ const updateCheckmarks = () => this.element.classList.toggle(
491
+ "show-checkmarks",
492
+ !!this.configurationService.getValue(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)
493
+ );
494
+ updateCheckmarks();
495
+ this._register(this.configurationService.onDidChangeConfiguration(e => {
496
+ if (e.affectsConfiguration(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)) {
497
+ updateCheckmarks();
498
+ }
499
+ }));
470
500
  this.registerListeners();
471
501
  }
472
502
  registerListeners() {
@@ -560,7 +590,7 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
560
590
  statusIconEl.classList.add(...statusIconClasses);
561
591
  const entry = editSession.readEntry(uri, r);
562
592
  const rwRatio = Math.floor((entry?.rewriteRatio.read(r) || 0) * 100);
563
- statusLabelEl.textContent = ( localize(5926, "Applying edits"));
593
+ statusLabelEl.textContent = ( localize(6430, "Applying edits"));
564
594
  const showAnimation = this.configurationService.getValue(ChatConfiguration.ShowCodeBlockProgressAnimation);
565
595
  if (showAnimation) {
566
596
  progressFill.style.width = `${rwRatio}%`;
@@ -569,13 +599,13 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
569
599
  } else {
570
600
  progressFill.style.width = "0%";
571
601
  this.pillElement.classList.remove("progress-filling");
572
- labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(5927, "Generating edits...")) : ( localize(5928, "({0}%)...", rwRatio));
602
+ labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(6431, "Generating edits...")) : ( localize(6432, "({0}%)...", rwRatio));
573
603
  }
574
604
  } else {
575
605
  const statusCodeicon = Codicon.check;
576
606
  statusIconClasses = ThemeIcon.asClassNameArray(statusCodeicon);
577
607
  statusIconEl.classList.add(...statusIconClasses);
578
- statusLabelEl.textContent = ( localize(5929, "Edited"));
608
+ statusLabelEl.textContent = ( localize(6433, "Edited"));
579
609
  const fileKind = uri.path.endsWith("/") ? FileKind.FOLDER : FileKind.FILE;
580
610
  pillIconClasses = getIconClasses(this.modelService, this.languageService, uri, fileKind);
581
611
  iconEl.classList.add(...pillIconClasses);
@@ -595,10 +625,10 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
595
625
  this.currentDiff = changes;
596
626
  labelAdded.textContent = `+${changes.added}`;
597
627
  labelRemoved.textContent = `-${changes.removed}`;
598
- const insertionsFragment = changes.added === 1 ? ( localize(5930, "1 insertion")) : ( localize(5931, "{0} insertions", changes.added));
599
- const deletionsFragment = changes.removed === 1 ? ( localize(5932, "1 deletion")) : ( localize(5933, "{0} deletions", changes.removed));
628
+ const insertionsFragment = changes.added === 1 ? ( localize(6434, "1 insertion")) : ( localize(6435, "{0} insertions", changes.added));
629
+ const deletionsFragment = changes.removed === 1 ? ( localize(6436, "1 deletion")) : ( localize(6437, "{0} deletions", changes.removed));
600
630
  const summary = ( localize(
601
- 5934,
631
+ 6438,
602
632
  "Edited {0}, {1}, {2}",
603
633
  iconText,
604
634
  insertionsFragment,
@@ -96,19 +96,19 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
96
96
  }
97
97
  updateDetailedProgress(state) {
98
98
  const skipText = createMarkdownCommandLink({
99
- title: ( localize(5935, "Skip?")),
99
+ title: ( localize(6439, "Skip?")),
100
100
  id: McpCommandIds.SkipCurrentAutostart
101
101
  });
102
102
  let content;
103
103
  if (state.starting.length === 0) {
104
104
  content = ( new MarkdownString(undefined, {
105
105
  isTrusted: true
106
- })).appendText(( localize(5936, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
106
+ })).appendText(( localize(6440, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
107
107
  } else {
108
108
  const serverLinks = this.createServerCommandLinks(state.starting);
109
109
  content = ( new MarkdownString(undefined, {
110
110
  isTrusted: true
111
- })).appendMarkdown(( localize(5937, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
111
+ })).appendMarkdown(( localize(6441, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
112
112
  }
113
113
  if (this.workingProgressPart) {
114
114
  this.workingProgressPart.updateMessage(content);
@@ -119,7 +119,8 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
119
119
  }, this._markdownRendererService, this.context, true,
120
120
  true,
121
121
  undefined,
122
- undefined));
122
+ undefined,
123
+ false));
123
124
  this.domNode.appendChild(this.workingProgressPart.domNode);
124
125
  }
125
126
  }
@@ -146,12 +147,12 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
146
147
  const count = serversRequiringInteraction.length;
147
148
  const links = this.createServerCommandLinks(serversRequiringInteraction);
148
149
  const content = count === 1 ? ( localize(
149
- 5938,
150
+ 6442,
150
151
  "The MCP server {0} may have new tools and requires interaction to start. [Start it now?]({1})",
151
152
  links,
152
153
  "#start"
153
154
  )) : ( localize(
154
- 5939,
155
+ 6443,
155
156
  "The MCP servers {0} may have new tools and require interaction to start. [Start them now?]({1})",
156
157
  links,
157
158
  "#start"
@@ -193,7 +194,7 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
193
194
  const serversToStart = state.serversRequiringInteraction;
194
195
  for (let i = 0; i < serversToStart.length; i++) {
195
196
  const serverInfo = serversToStart[i];
196
- startLink.textContent = ( localize(5940, "Starting {0}...", serverInfo.label));
197
+ startLink.textContent = ( localize(6444, "Starting {0}...", serverInfo.label));
197
198
  const server = this.mcpService.servers.get().find(s => s.definition.id === serverInfo.id);
198
199
  if (server) {
199
200
  await startServerAndWaitForLiveTools(server, {
@@ -64,7 +64,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
64
64
  const viewListButton = ( new ButtonWithIcon(viewListButtonContainer, {}));
65
65
  this._register(autorun(reader => {
66
66
  const fileCount = this.diffData.read(reader).resources.length;
67
- viewListButton.label = fileCount === 1 ? ( localize(5941, "Changed 1 file")) : ( localize(5942, "Changed {0} files", fileCount));
67
+ viewListButton.label = fileCount === 1 ? ( localize(6445, "Changed 1 file")) : ( localize(6446, "Changed {0} files", fileCount));
68
68
  }));
69
69
  const setExpansionState = () => {
70
70
  viewListButton.icon = this.isCollapsed ? Codicon.chevronRight : Codicon.chevronDown;
@@ -86,7 +86,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
86
86
  renderViewAllFileChangesButton(container) {
87
87
  const button = container.appendChild($(".chat-view-changes-icon"));
88
88
  button.classList.add(...ThemeIcon.asClassNameArray(Codicon.diffMultiple));
89
- button.title = ( localize(5943, "Open Changes"));
89
+ button.title = ( localize(6447, "Open Changes"));
90
90
  return addDisposableListener(button, "click", e => {
91
91
  const source = ( URI.parse(`multi-diff-editor:${( ( new Date()).getMilliseconds().toString()) + ( Math.random().toString())}`));
92
92
  const {
@@ -143,7 +143,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
143
143
  alwaysConsumeMouseWheel: false,
144
144
  accessibilityProvider: {
145
145
  getAriaLabel: element => element.uri.path,
146
- getWidgetAriaLabel: () => ( localize(5944, "File Changes"))
146
+ getWidgetAriaLabel: () => ( localize(6448, "File Changes"))
147
147
  }
148
148
  })
149
149
  );
@@ -259,7 +259,7 @@ class ChatMultiDiffListRenderer {
259
259
  const removedElement = changesSummary.appendChild($(".deletions"));
260
260
  removedElement.textContent = `-${element.diff.removed}`;
261
261
  changesSummary.setAttribute("aria-label", ( localize(
262
- 5945,
262
+ 6449,
263
263
  "{0} lines added, {1} lines removed",
264
264
  element.diff.added,
265
265
  element.diff.removed
@@ -21,10 +21,11 @@ export declare class ChatProgressContentPart extends Disposable implements IChat
21
21
  private readonly showSpinner;
22
22
  private readonly isHidden;
23
23
  private readonly renderedMessage;
24
+ private readonly _fileWidgetStore;
24
25
  private currentContent;
25
26
  constructor(progress: IChatProgressMessage | IChatTask | IChatTaskSerialized | {
26
27
  content: IMarkdownString;
27
- }, chatContentMarkdownRenderer: IMarkdownRenderer, context: IChatContentPartRenderContext, forceShowSpinner: boolean | undefined, forceShowMessage: boolean | undefined, icon: ThemeIcon | undefined, toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized | undefined, instantiationService: IInstantiationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, configurationService: IConfigurationService);
28
+ }, chatContentMarkdownRenderer: IMarkdownRenderer, context: IChatContentPartRenderContext, forceShowSpinner: boolean | undefined, forceShowMessage: boolean | undefined, icon: ThemeIcon | undefined, toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized | undefined, shimmer: boolean | undefined, instantiationService: IInstantiationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, configurationService: IConfigurationService);
28
29
  updateMessage(content: MarkdownString): void;
29
30
  hasSameContent(other: IChatRendererContent, followingContent: IChatRendererContent[], element: ChatTreeItem): boolean;
30
31
  private createApprovalMessage;
@@ -4,7 +4,7 @@ import { $, append } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/d
4
4
  import { alert } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
5
5
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
6
6
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
7
- import { Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
+ import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
8
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
9
9
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
10
10
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
@@ -28,6 +28,7 @@ let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
28
28
  forceShowMessage,
29
29
  icon,
30
30
  toolInvocation,
31
+ shimmer,
31
32
  instantiationService,
32
33
  chatMarkdownAnchorService,
33
34
  configurationService
@@ -39,6 +40,7 @@ let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
39
40
  this.chatMarkdownAnchorService = chatMarkdownAnchorService;
40
41
  this.configurationService = configurationService;
41
42
  this.renderedMessage = this._register(( new MutableDisposable()));
43
+ this._fileWidgetStore = this._register(( new DisposableStore()));
42
44
  this.currentContent = progress.content;
43
45
  const followingContent = context.content.slice(context.contentIndex + 1);
44
46
  this.showSpinner = forceShowSpinner ?? shouldShowSpinner(followingContent, context.element);
@@ -50,20 +52,25 @@ let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
50
52
  if (this.showSpinner && !this.configurationService.getValue(AccessibilityWorkbenchSettingId.VerboseChatProgressUpdates)) {
51
53
  alert(progress.content.value);
52
54
  }
53
- const codicon = icon ? icon : this.showSpinner ? ThemeIcon.modify(Codicon.loading, "spin") : Codicon.check;
55
+ const isLoadingIcon = icon && ThemeIcon.isEqual(icon, ThemeIcon.modify(Codicon.loading, "spin"));
56
+ const useShimmer = (shimmer ?? (!icon || isLoadingIcon)) && this.showSpinner;
57
+ const codicon = useShimmer ? Codicon.check : (icon ?? (this.showSpinner ? ThemeIcon.modify(Codicon.loading, "spin") : Codicon.check));
54
58
  const result = this.chatContentMarkdownRenderer.render(progress.content);
55
59
  result.element.classList.add("progress-step");
56
60
  renderFileWidgets(
57
61
  result.element,
58
62
  this.instantiationService,
59
63
  this.chatMarkdownAnchorService,
60
- this._store
64
+ this._fileWidgetStore
61
65
  );
62
66
  const tooltip = this.createApprovalMessage();
63
67
  const progressPart = this._register(
64
68
  instantiationService.createInstance(ChatProgressSubPart, result.element, codicon, tooltip)
65
69
  );
66
70
  this.domNode = progressPart.domNode;
71
+ if (useShimmer) {
72
+ this.domNode.classList.add("shimmer-progress");
73
+ }
67
74
  this.renderedMessage.value = result;
68
75
  }
69
76
  updateMessage(content) {
@@ -72,11 +79,12 @@ let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
72
79
  }
73
80
  const result = this._register(this.chatContentMarkdownRenderer.render(content));
74
81
  result.element.classList.add("progress-step");
82
+ this._fileWidgetStore.clear();
75
83
  renderFileWidgets(
76
84
  result.element,
77
85
  this.instantiationService,
78
86
  this.chatMarkdownAnchorService,
79
- this._store
87
+ this._fileWidgetStore
80
88
  );
81
89
  if (this.renderedMessage.value) {
82
90
  this.renderedMessage.value.element.replaceWith(result.element);
@@ -99,7 +107,7 @@ let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
99
107
  return this.toolInvocation && getToolApprovalMessage(this.toolInvocation);
100
108
  }
101
109
  };
102
- ChatProgressContentPart = ( __decorate([( __param(7, IInstantiationService)), ( __param(8, IChatMarkdownAnchorService)), ( __param(9, IConfigurationService))], ChatProgressContentPart));
110
+ ChatProgressContentPart = ( __decorate([( __param(8, IInstantiationService)), ( __param(9, IChatMarkdownAnchorService)), ( __param(10, IConfigurationService))], ChatProgressContentPart));
103
111
  function shouldShowSpinner(followingContent, element) {
104
112
  return isResponseVM(element) && !element.isComplete && followingContent.length === 0;
105
113
  }
@@ -114,6 +122,10 @@ let ChatProgressSubPart = class ChatProgressSubPart extends Disposable {
114
122
  content: tooltip,
115
123
  style: HoverStyle.Pointer
116
124
  }));
125
+ this._register(hoverService.setupDelayedHover(messageElement, {
126
+ content: tooltip,
127
+ style: HoverStyle.Pointer
128
+ }));
117
129
  }
118
130
  append(this.domNode, iconElement);
119
131
  messageElement.classList.add("progress-step");
@@ -133,7 +145,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
133
145
  ) {
134
146
  const progressMessage = {
135
147
  kind: "progressMessage",
136
- content: ( new MarkdownString()).appendText(( localize(5946, "Working...")))
148
+ content: ( new MarkdownString()).appendText(( localize(6450, "Working")))
137
149
  };
138
150
  super(
139
151
  progressMessage,
@@ -143,14 +155,14 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
143
155
  undefined,
144
156
  undefined,
145
157
  undefined,
158
+ true,
146
159
  instantiationService,
147
160
  chatMarkdownAnchorService,
148
161
  configurationService
149
162
  );
150
- this.domNode.classList.add("working-progress");
151
163
  this._register(languageModelToolsService.onDidPrepareToolCallBecomeUnresponsive(e => {
152
164
  if (isEqual(context.element.sessionResource, e.sessionResource)) {
153
- this.updateMessage(( new MarkdownString(( localize(5947, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
165
+ this.updateMessage(( new MarkdownString(( localize(6451, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
154
166
  }
155
167
  }));
156
168
  }