@codingame/monaco-vscode-katex-common 33.0.9 → 34.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 (255) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.css +169 -0
  3. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.d.ts +28 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +61 -0
  5. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.d.ts +1 -1
  6. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.js +1 -1
  7. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +18 -17
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  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 +40 -38
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +14 -14
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +1 -16
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +4 -48
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +16 -18
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +81 -69
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +1 -3
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +5 -22
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.d.ts +2 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.js +21 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +18 -28
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +13 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +177 -80
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +15 -15
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +7 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +69 -5
  35. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +3 -3
  36. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +25 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +2 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +4 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +93 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +140 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +46 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +134 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +2 -15
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +49 -117
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +2 -0
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +47 -4
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +3 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +52 -51
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +18 -14
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +23 -13
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +13 -11
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +15 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +87 -11
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +21 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +102 -35
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +22 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +22 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +6 -2
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +21 -2
  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/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +35 -18
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +1 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +62 -35
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +15 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +10 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.d.ts +2 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.js +13 -15
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +19 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +154 -59
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +21 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.d.ts +4 -3
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.js +6 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +17 -2
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +113 -23
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.d.ts +21 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +64 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +10 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +7 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +11 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +18 -7
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +26 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +361 -66
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +2 -2
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +30 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +147 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +11 -5
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +133 -87
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -4
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -2
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +13 -7
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +81 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +32 -18
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +2 -2
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -40
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +23 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +66 -11
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -6
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +373 -32
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -3
  144. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +18 -0
  145. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +7 -7
  146. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
  147. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  148. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.d.ts +12 -2
  149. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.js +54 -11
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  152. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  154. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  164. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  165. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  166. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +0 -76
  167. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +0 -191
  168. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +0 -50
  169. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +0 -138
  170. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +0 -12
  171. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -14
  172. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +0 -18
  173. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +0 -13
  174. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +0 -87
  175. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +0 -10
  176. package/vscode/src/vs/workbench/contrib/terminal/terminalContribChatExports.d.ts +0 -2
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +0 -2
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +0 -41
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +0 -26
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +0 -142
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +0 -52
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +0 -232
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -65
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +0 -225
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +0 -27
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +0 -143
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +0 -37
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +0 -205
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +0 -40
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +0 -174
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +0 -7
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +0 -43
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +0 -52
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +0 -260
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +0 -44
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +0 -98
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +0 -42
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +0 -225
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +0 -31
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +0 -392
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +0 -45
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +0 -243
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +0 -53
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +0 -10
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +0 -20
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +0 -310
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +0 -27
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +0 -177
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +0 -11
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +0 -33
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +0 -41
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +0 -19
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +0 -37
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +0 -19
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +0 -37
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +0 -19
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +0 -44
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +0 -13
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +0 -22
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +0 -42
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +0 -102
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +0 -5
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +0 -27
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +0 -14
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +0 -29
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +0 -8
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +0 -33
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +0 -24
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +0 -15
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +0 -53
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +0 -177
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +0 -512
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +0 -42
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +0 -23
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +0 -9
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +0 -258
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +0 -2623
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +0 -22
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +0 -43
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +0 -17
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +0 -118
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +0 -22
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +0 -44
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +0 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +0 -58
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +0 -223
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +0 -31
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +0 -49
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +0 -18
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +0 -302
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +0 -7
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +0 -118
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +0 -114
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +0 -788
@@ -35,7 +35,7 @@ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
35
35
  this._detailsIconEl.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
36
36
  this._detailsIconEl.tabIndex = 0;
37
37
  this._detailsIconEl.setAttribute("role", "button");
38
- this._detailsIconEl.setAttribute("aria-label", ( localize(7474, "Risk assessment details")));
38
+ this._detailsIconEl.setAttribute("aria-label", ( localize(7613, "Risk assessment details")));
39
39
  this.domNode.append(this._iconEl, this._textEl, this._detailsIconEl);
40
40
  this._refreshDetailsHover();
41
41
  this.setLoading();
@@ -58,9 +58,9 @@ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
58
58
  setLoading() {
59
59
  this._setVariant("loading");
60
60
  this._setIcon(ThemeIcon.modify(Codicon.loading, "spin"));
61
- const text = ( localize(7475, "Assessing risk…"));
61
+ const text = ( localize(7614, "Assessing risk…"));
62
62
  this._textEl.textContent = text;
63
- this._setHover(( localize(7476, "Generating a risk assessment for this tool call.")));
63
+ this._setHover(( localize(7615, "Generating a risk assessment for this tool call.")));
64
64
  }
65
65
  setHidden() {
66
66
  this.domNode.style.display = "none";
@@ -122,7 +122,7 @@ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
122
122
  );
123
123
  }
124
124
  _buildDetailsMarkdown() {
125
- const aiNote = ( localize(7477, "Risk assessments are AI-generated and may be inaccurate."));
125
+ const aiNote = ( localize(7616, "Risk assessments are AI-generated and may be inaccurate."));
126
126
  const details = this._details;
127
127
  const md = ( new MarkdownString(undefined, {
128
128
  supportThemeIcons: true,
@@ -209,23 +209,23 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
209
209
  getDropTypeName(type) {
210
210
  switch (type) {
211
211
  case ChatDragAndDropType.FILE_INTERNAL:
212
- return localize(7478, "File");
212
+ return localize(7617, "File");
213
213
  case ChatDragAndDropType.FILE_EXTERNAL:
214
- return localize(7478, "File");
214
+ return localize(7617, "File");
215
215
  case ChatDragAndDropType.FOLDER:
216
- return localize(7479, "Folder");
216
+ return localize(7618, "Folder");
217
217
  case ChatDragAndDropType.IMAGE:
218
- return localize(7480, "Image");
218
+ return localize(7619, "Image");
219
219
  case ChatDragAndDropType.SYMBOL:
220
- return localize(7481, "Symbol");
220
+ return localize(7620, "Symbol");
221
221
  case ChatDragAndDropType.MARKER:
222
- return localize(7482, "Problem");
222
+ return localize(7621, "Problem");
223
223
  case ChatDragAndDropType.HTML:
224
- return localize(7483, "URL");
224
+ return localize(7622, "URL");
225
225
  case ChatDragAndDropType.NOTEBOOK_CELL_OUTPUT:
226
- return localize(7484, "Output");
226
+ return localize(7623, "Output");
227
227
  case ChatDragAndDropType.SCM_HISTORY_ITEM:
228
- return localize(7485, "Change");
228
+ return localize(7624, "Change");
229
229
  }
230
230
  }
231
231
  async resolveAttachmentsFromDragEvent(e) {
@@ -297,7 +297,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
297
297
  async resolveHTMLAttachContext(e) {
298
298
  const existingAttachmentNames = ( new Set(( this.attachmentModel.attachments.map(attachment => attachment.name))));
299
299
  const createDisplayName = () => {
300
- const baseName = ( localize(7486, "Image from URL"));
300
+ const baseName = ( localize(7625, "Image from URL"));
301
301
  let uniqueName = baseName;
302
302
  let baseNameInstance = 1;
303
303
  while (( existingAttachmentNames.has(uniqueName))) {
@@ -375,7 +375,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
375
375
  }
376
376
  getOverlayText(type) {
377
377
  const typeName = this.getDropTypeName(type);
378
- return localize(7487, "Attach {0} as Context", typeName);
378
+ return localize(7626, "Attach {0} as Context", typeName);
379
379
  }
380
380
  updateOverlayStyles(overlay) {
381
381
  overlay.style.backgroundColor = this.getColor(this.styles.overlayBackground) || "";
@@ -50,6 +50,8 @@ export interface IChatListItemTemplate {
50
50
  /** Drag handle element for reordering pending requests, if currently rendered. */
51
51
  dragHandle?: HTMLElement;
52
52
  readonly rowContainer: HTMLElement;
53
+ /** Height allocated by the list for the currently rendered row. */
54
+ allocatedHeight?: number;
53
55
  readonly titleToolbar?: MenuWorkbenchToolBar;
54
56
  readonly header?: HTMLElement;
55
57
  readonly footerToolbar: MenuWorkbenchToolBar;
@@ -74,6 +76,7 @@ interface IItemHeightChangeParams {
74
76
  element: ChatTreeItem;
75
77
  height: number;
76
78
  }
79
+ export declare function shouldScheduleInitialHeightChange(normalizedHeight: number, allocatedHeight: number | undefined): boolean;
77
80
  export interface IChatRendererDelegate {
78
81
  container: HTMLElement;
79
82
  getListLength(): number;
@@ -167,7 +170,7 @@ export declare class ChatListItemRenderer extends Disposable implements ITreeRen
167
170
  setVisible(visible: boolean): void;
168
171
  layout(width: number): void;
169
172
  renderTemplate(container: HTMLElement): IChatListItemTemplate;
170
- renderElement(node: ITreeNode<ChatTreeItem, FuzzyScore>, index: number, templateData: IChatListItemTemplate): void;
173
+ renderElement(node: ITreeNode<ChatTreeItem, FuzzyScore>, index: number, templateData: IChatListItemTemplate, details?: IListElementRenderDetails): void;
171
174
  /**
172
175
  * Dispose the rendered parts in the template, which aren't done in disposeElement
173
176
  * so they can be reused when a new render is started.
@@ -190,6 +193,20 @@ export declare class ChatListItemRenderer extends Disposable implements ITreeRen
190
193
  private getWorkingProgressContentPart;
191
194
  private createUpdateWorkingProgressOnConfirmationEnd;
192
195
  private hasBeenCaughtUpLongEnough;
196
+ /**
197
+ * Returns the last part that visually contributes to the response, skipping
198
+ * empty markdown placeholders.
199
+ */
200
+ private findLastMeaningfulPart;
201
+ /**
202
+ * True while we have caught up to streamed markdown but are still within the
203
+ * {@link WORKING_CAUGHT_UP_DEBOUNCE_MS} window before the working indicator
204
+ * should appear. The progressive render loop keeps polling in this state so
205
+ * the indicator can still surface after a genuine pause, instead of being
206
+ * dropped when the loop would otherwise stop (the debounce itself avoids
207
+ * flicker during normal token streaming).
208
+ */
209
+ private isWorkingProgressDebouncePending;
193
210
  private getChatFileChangesSummaryPart;
194
211
  private renderChatRequest;
195
212
  private renderSystemInitiatedRequest;
@@ -270,6 +287,7 @@ export declare class ChatListItemRenderer extends Disposable implements ITreeRen
270
287
  private renderChangesSummary;
271
288
  private renderAttachments;
272
289
  private renderTextEdit;
290
+ private renderExternalEdit;
273
291
  private renderMarkdown;
274
292
  renderThinkingPart(content: IChatThinkingPart, context: IChatContentPartRenderContext, templateData: IChatListItemTemplate): IChatContentPart;
275
293
  disposeElement(node: ITreeNode<ChatTreeItem, FuzzyScore>, index: number, templateData: IChatListItemTemplate, details?: IListElementRenderDetails): void;
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { $ as $$1, append, addDisposableListener, EventType, createElement, DisposableResizeObserver, clearNode, addStandardDisposableListener, WindowIntervalTimer, getWindow, reset, findParentWithClass, hide, show } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
+ import { $ as $$1, scheduleAtNextAnimationFrame, getWindow, append, addDisposableListener, EventType, createElement, DisposableResizeObserver, clearNode, addStandardDisposableListener, WindowIntervalTimer, reset, findParentWithClass, hide, show } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { renderFormattedText } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/formattedTextRenderer';
5
5
  import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
6
6
  import { alert } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
@@ -47,6 +47,7 @@ import { ChatPlanReviewData } from '@codingame/monaco-vscode-api/vscode/vs/workb
47
47
  import { ChatQuestionCarouselData } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatQuestionCarouselData';
48
48
  import { localChatSessionType, isAgentHostTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
49
49
  import { getChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
50
+ import { isExplicitFileOrImageVariableEntry, getExplicitFileOrImageAttachmentSummary } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
50
51
  import { isResponseVM, isPendingDividerVM, isRequestVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
51
52
  import { getNWords } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatWordCounter';
52
53
  import { ChatConfiguration, ChatAgentLocation, CollapsedToolsDisplayMode, ThinkingDisplayMode, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
@@ -80,10 +81,11 @@ import { ChatQuotaExceededPart } from './chatContentParts/chatQuotaExceededPart.
80
81
  import { CollapsibleListPool, ChatUsedReferencesListContentPart } from './chatContentParts/chatReferencesContentPart.js';
81
82
  import { ChatTaskContentPart } from './chatContentParts/chatTaskContentPart.js';
82
83
  import { ChatTextEditContentPart } from './chatContentParts/chatTextEditContentPart.js';
83
- import { ChatThinkingContentPart } from './chatContentParts/chatThinkingContentPart.js';
84
+ import { ChatThinkingContentPart, getEffectiveThinkingDisplayMode } from './chatContentParts/chatThinkingContentPart.js';
84
85
  import { ChatSubagentContentPart } from './chatContentParts/chatSubagentContentPart.js';
85
86
  import { TreePool, ChatTreeContentPart } from './chatContentParts/chatTreeContentPart.js';
86
87
  import { ChatWorkspaceEditContentPart } from './chatContentParts/chatWorkspaceEditContentPart.js';
88
+ import { ChatExternalEditContentPart } from './chatContentParts/chatExternalEditContentPart.js';
87
89
  import { ChatToolInvocationPart } from './chatContentParts/toolInvocationParts/chatToolInvocationPart.js';
88
90
  import { ChatMarkdownDecorationsRenderer } from './chatContentParts/chatMarkdownDecorationsRenderer.js';
89
91
  import { ChatCodeBlockContentProvider } from './chatContentParts/codeBlockPart.js';
@@ -103,7 +105,10 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
103
105
  var ChatListItemRenderer_1;
104
106
  const $ = $$1;
105
107
  const COPILOT_USERNAME = "GitHub Copilot";
106
- const WORKING_CAUGHT_UP_DEBOUNCE_MS = 50;
108
+ const WORKING_CAUGHT_UP_DEBOUNCE_MS = 750;
109
+ function shouldScheduleInitialHeightChange(normalizedHeight, allocatedHeight) {
110
+ return typeof allocatedHeight !== "number" || normalizedHeight > allocatedHeight;
111
+ }
107
112
  const mostRecentResponseClassName = "chat-most-recent-response";
108
113
  function upvoteAnimationSettingToEnum(value) {
109
114
  switch (value) {
@@ -270,11 +275,29 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
270
275
  }
271
276
  const originalStoredHeight = template.currentElement.currentRenderedHeight;
272
277
  template.currentElement.currentRenderedHeight = normalizedHeight;
273
- if (template.currentElement !== this._elementBeingRendered && typeof originalStoredHeight === "number") {
278
+ if (template.currentElement === this._elementBeingRendered) {
279
+ return;
280
+ }
281
+ if (typeof originalStoredHeight === "number") {
274
282
  this._onDidChangeItemHeight.fire({
275
283
  element: template.currentElement,
276
284
  height: normalizedHeight
277
285
  });
286
+ } else {
287
+ if (!shouldScheduleInitialHeightChange(normalizedHeight, template.allocatedHeight)) {
288
+ return;
289
+ }
290
+ const element = template.currentElement;
291
+ const scheduledHeight = normalizedHeight;
292
+ scheduleAtNextAnimationFrame(getWindow(template.rowContainer), () => {
293
+ if (template.currentElement !== element || element.currentRenderedHeight !== scheduledHeight) {
294
+ return;
295
+ }
296
+ this._onDidChangeItemHeight.fire({
297
+ element,
298
+ height: scheduledHeight
299
+ });
300
+ });
278
301
  }
279
302
  }
280
303
  getProgressiveRenderRate(element) {
@@ -465,7 +488,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
465
488
  const checkpointRestoreContainer = append(rowContainer, $(".checkpoint-restore-container"));
466
489
  append(checkpointRestoreContainer, $(".checkpoint-line-left"));
467
490
  const label = append(checkpointRestoreContainer, $("span.checkpoint-label-text"));
468
- label.textContent = ( localize(7488, "Checkpoint Restored"));
491
+ label.textContent = ( localize(7627, "Checkpoint Restored"));
469
492
  const dot = append(checkpointRestoreContainer, $("span.checkpoint-dot-separator"));
470
493
  dot.textContent = "·";
471
494
  dot.setAttribute("aria-hidden", "true");
@@ -580,7 +603,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
580
603
  templateDisposables.add(resizeObserver.observe(rowContainer));
581
604
  return template;
582
605
  }
583
- renderElement(node, index, templateData) {
606
+ renderElement(node, index, templateData, details) {
607
+ templateData.allocatedHeight = details?.height;
584
608
  this._elementBeingRendered = node.element;
585
609
  try {
586
610
  this.renderChatTreeItem(node.element, index, templateData);
@@ -842,15 +866,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
842
866
  const label = append(dividerContent, $$1("span.pending-divider-label"));
843
867
  if (element.dividerKind === ChatRequestQueueKind.Steering) {
844
868
  if (element.isSystemInitiated) {
845
- label.textContent = ( localize(7489, "System Notification"));
846
- label.title = ( localize(7490, "System notification will be sent after the next tool call happens"));
869
+ label.textContent = ( localize(7628, "System Notification"));
870
+ label.title = ( localize(7629, "System notification will be sent after the next tool call happens"));
847
871
  } else {
848
- label.textContent = ( localize(7491, "Steering"));
849
- label.title = ( localize(7492, "Steering message will be sent after the next tool call happens"));
872
+ label.textContent = ( localize(7630, "Steering"));
873
+ label.title = ( localize(7631, "Steering message will be sent after the next tool call happens"));
850
874
  }
851
875
  } else {
852
- label.textContent = ( localize(7493, "Queued"));
853
- label.title = ( localize(7494, "Queued messages will be sent after the current request completes"));
876
+ label.textContent = ( localize(7632, "Queued"));
877
+ label.title = ( localize(7633, "Queued messages will be sent after the current request completes"));
854
878
  }
855
879
  templateData.value.appendChild(dividerContent);
856
880
  }
@@ -858,10 +882,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
858
882
  clearNode(templateData.detail);
859
883
  if (element.agentOrSlashCommandDetected) {
860
884
  const msg = element.slashCommand ? ( localize(
861
- 7495,
885
+ 7634,
862
886
  "used {0} [[(rerun without)]]",
863
887
  `${chatSubcommandLeader}${element.slashCommand.name}`
864
- )) : ( localize(7496, "[[(rerun without)]]"));
888
+ )) : ( localize(7635, "[[(rerun without)]]"));
865
889
  reset(templateData.detail, renderFormattedText(msg, {
866
890
  actionHandler: {
867
891
  disposables: templateData.elementDisposables,
@@ -874,7 +898,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
874
898
  this.delegate.currentChatMode(),
875
899
  this.rendererOptions.progressMessageAtBottomOfResponse
876
900
  )) {
877
- templateData.detail.textContent = ( localize(7497, "Working"));
901
+ templateData.detail.textContent = ( localize(7636, "Working"));
878
902
  }
879
903
  }
880
904
  renderConfirmationAction(element, templateData) {
@@ -883,7 +907,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
883
907
  append(templateData.detail, $("span.codicon.codicon-check", {
884
908
  "aria-hidden": "true"
885
909
  }));
886
- append(templateData.detail, $("span.confirmation-text", undefined, ( localize(7498, "Selected \"{0}\"", element.confirmation))));
910
+ append(templateData.detail, $("span.confirmation-text", undefined, ( localize(7637, "Selected \"{0}\"", element.confirmation))));
887
911
  templateData.header?.classList.remove("header-disabled");
888
912
  templateData.header?.classList.add("partially-disabled");
889
913
  }
@@ -1011,14 +1035,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1011
1035
  };
1012
1036
  }
1013
1037
  }
1014
- let lastPart;
1015
- for (let i = partsToRender.length - 1; i >= 0; i--) {
1016
- const part = partsToRender[i];
1017
- if (part.kind !== "markdownContent" || part.content.value.trim().length > 0) {
1018
- lastPart = part;
1019
- break;
1020
- }
1021
- }
1038
+ const lastPart = this.findLastMeaningfulPart(partsToRender);
1022
1039
  if (showProgressDetails) {
1023
1040
  const lastThinking = this.getLastThinkingPart(templateData.renderedParts);
1024
1041
  if (lastThinking?.getIsActive() && !lastThinking.isFixedScrollingMode) {
@@ -1066,6 +1083,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1066
1083
  }
1067
1084
  if (!lastPart || lastPart.kind === "references" || (lastPart.kind === "markdownContent" && !moreContentAvailable && this.hasBeenCaughtUpLongEnough(element)) || ((lastPart.kind === "toolInvocation" || lastPart.kind === "toolInvocationSerialized") && (IChatToolInvocation.isComplete(lastPart) || IChatToolInvocation.isEffectivelyHidden(lastPart))) || ((lastPart.kind === "textEditGroup" || lastPart.kind === "notebookEditGroup") && lastPart.done && !( partsToRender.some(
1068
1085
  part => part.kind === "toolInvocation" && !IChatToolInvocation.isComplete(part)
1086
+ ))) || (lastPart.kind === "externalEdit" && !( partsToRender.some(
1087
+ part => part.kind === "toolInvocation" && !IChatToolInvocation.isComplete(part)
1069
1088
  ))) || (lastPart.kind === "progressTask" && lastPart.deferred.isSettled) || lastPart.kind === "mcpServersStarting" || lastPart.kind === "disabledClaudeHooks" || lastPart.kind === "hook") {
1070
1089
  return {
1071
1090
  kind: "working"
@@ -1083,7 +1102,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1083
1102
  }).length;
1084
1103
  }
1085
1104
  getConfirmationPendingLabel(count) {
1086
- return count === 1 ? ( localize(7499, "1 confirmation pending")) : ( localize(7500, "{0} confirmations pending", count));
1105
+ return count === 1 ? ( localize(7638, "1 confirmation pending")) : ( localize(7639, "{0} confirmations pending", count));
1087
1106
  }
1088
1107
  removeWorkingProgressContentPart(templateData) {
1089
1108
  const renderedParts = templateData.renderedParts;
@@ -1169,6 +1188,24 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1169
1188
  }
1170
1189
  return (Date.now() - lastRenderTime) >= WORKING_CAUGHT_UP_DEBOUNCE_MS;
1171
1190
  }
1191
+ findLastMeaningfulPart(partsToRender) {
1192
+ for (let i = partsToRender.length - 1; i >= 0; i--) {
1193
+ const part = partsToRender[i];
1194
+ if (part.kind !== "markdownContent" || part.content.value.trim().length > 0) {
1195
+ return part;
1196
+ }
1197
+ }
1198
+ return undefined;
1199
+ }
1200
+ isWorkingProgressDebouncePending(element, partsToRender) {
1201
+ if (element.isComplete) {
1202
+ return false;
1203
+ }
1204
+ if (( partsToRender.some(part => part.kind === "working"))) {
1205
+ return false;
1206
+ }
1207
+ return this.findLastMeaningfulPart(partsToRender)?.kind === "markdownContent" && !this.hasBeenCaughtUpLongEnough(element);
1208
+ }
1172
1209
  getChatFileChangesSummaryPart(element) {
1173
1210
  if (!this.shouldShowFileChangesSummary(element)) {
1174
1211
  return undefined;
@@ -1224,12 +1261,20 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1224
1261
  );
1225
1262
  }
1226
1263
  let content = [];
1264
+ const explicitFileOrImageVariables = element.variables.filter(isExplicitFileOrImageVariableEntry);
1265
+ const explicitImageVariables = explicitFileOrImageVariables.filter(variable => variable.kind === "image");
1266
+ const explicitFileOrDirectoryVariables = explicitFileOrImageVariables.filter(variable => variable.kind === "file" || variable.kind === "directory");
1267
+ const otherVariables = element.variables.filter(variable => !isExplicitFileOrImageVariableEntry(variable));
1227
1268
  if (!element.confirmation) {
1228
1269
  const markdown = isChatFollowup(element.message) ? element.message.message : this.markdownDecorationsRenderer.convertParsedRequestToMarkdown(element.sessionResource, element.message);
1229
- content = [{
1230
- content: ( new MarkdownString(markdown)),
1231
- kind: "markdownContent"
1232
- }];
1270
+ const attachmentSummary = !element.messageText.trim() && !explicitFileOrImageVariables.length ? getExplicitFileOrImageAttachmentSummary(element.variables) : undefined;
1271
+ const requestMarkdown = markdown.trim() ? markdown : attachmentSummary;
1272
+ if (requestMarkdown) {
1273
+ content = [{
1274
+ content: ( new MarkdownString(requestMarkdown)),
1275
+ kind: "markdownContent"
1276
+ }];
1277
+ }
1233
1278
  if (this.rendererOptions.renderStyle === "minimal" && !element.isComplete) {
1234
1279
  templateData.value.classList.add("inline-progress");
1235
1280
  templateData.elementDisposables.add(toDisposable(() => templateData.value.classList.remove("inline-progress")));
@@ -1245,6 +1290,33 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1245
1290
  }
1246
1291
  clearNode(templateData.value);
1247
1292
  const parts = [];
1293
+ const explicitImageAttachmentsPart = explicitImageVariables.length ? this.renderAttachments(
1294
+ explicitImageVariables,
1295
+ element.contentReferences,
1296
+ element.modelId,
1297
+ templateData
1298
+ ) : undefined;
1299
+ if (explicitImageAttachmentsPart?.domNode) {
1300
+ explicitImageAttachmentsPart.domNode.classList.add("chat-request-attachment-cards", "chat-request-image-attachments");
1301
+ templateData.value.appendChild(explicitImageAttachmentsPart.domNode);
1302
+ templateData.elementDisposables.add(explicitImageAttachmentsPart);
1303
+ }
1304
+ const explicitFileAttachmentsPart = explicitFileOrDirectoryVariables.length ? this.renderAttachments(
1305
+ explicitFileOrDirectoryVariables,
1306
+ element.contentReferences,
1307
+ element.modelId,
1308
+ templateData
1309
+ ) : undefined;
1310
+ if (explicitFileAttachmentsPart?.domNode) {
1311
+ explicitFileAttachmentsPart.domNode.classList.add("chat-request-attachment-cards", "chat-request-file-attachments");
1312
+ explicitFileAttachmentsPart.domNode.style.display = "flex";
1313
+ explicitFileAttachmentsPart.domNode.style.flexDirection = "column";
1314
+ explicitFileAttachmentsPart.domNode.style.alignItems = "flex-end";
1315
+ explicitFileAttachmentsPart.domNode.style.flexWrap = "nowrap";
1316
+ templateData.value.appendChild(explicitFileAttachmentsPart.domNode);
1317
+ templateData.elementDisposables.add(explicitFileAttachmentsPart);
1318
+ }
1319
+ const contentContainer = templateData.value;
1248
1320
  let inlineSlashCommandRendered = false;
1249
1321
  let codeBlockStartIndex = 0;
1250
1322
  content.forEach((data, contentIndex) => {
@@ -1277,12 +1349,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1277
1349
  requestId: element.id
1278
1350
  })
1279
1351
  );
1280
- templateData.value.appendChild(cmdPart.domNode);
1352
+ contentContainer.appendChild(cmdPart.domNode);
1281
1353
  parts.push(cmdPart);
1282
1354
  inlineSlashCommandRendered = true;
1283
1355
  }
1284
1356
  if (newPart.domNode && !newPart.domNode.parentElement) {
1285
- templateData.value.appendChild(newPart.domNode);
1357
+ contentContainer.appendChild(newPart.domNode);
1286
1358
  }
1287
1359
  parts.push(newPart);
1288
1360
  codeBlockStartIndex += newPart.codeblocks?.length ?? 0;
@@ -1292,13 +1364,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1292
1364
  dispose(templateData.renderedParts);
1293
1365
  }
1294
1366
  templateData.renderedParts = parts;
1295
- if (element.variables.length) {
1296
- const newPart = this.renderAttachments(
1297
- element.variables,
1298
- element.contentReferences,
1299
- element.modelId,
1300
- templateData
1301
- );
1367
+ if (otherVariables.length) {
1368
+ const newPart = this.renderAttachments(otherVariables, element.contentReferences, element.modelId, templateData);
1302
1369
  if (newPart.domNode) {
1303
1370
  templateData.value.appendChild(newPart.domNode);
1304
1371
  }
@@ -1390,11 +1457,9 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1390
1457
  element.renderData = undefined;
1391
1458
  this.renderChatResponseBasic(element, index, templateData);
1392
1459
  return true;
1460
+ } else if (this.isWorkingProgressDebouncePending(element, contentForThisTurn.content)) {
1461
+ return false;
1393
1462
  } else {
1394
- this.traceLayout(
1395
- "doNextProgressiveRender",
1396
- "caught up with the stream- no new content to render"
1397
- );
1398
1463
  return true;
1399
1464
  }
1400
1465
  }
@@ -1467,7 +1532,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1467
1532
  treeStartIndex
1468
1533
  };
1469
1534
  const lastThinking = this.getLastThinkingPart(renderedParts);
1470
- if (lastThinking && (partToRender.kind === "toolInvocation" || partToRender.kind === "toolInvocationSerialized" || partToRender.kind === "markdownContent" || partToRender.kind === "textEditGroup" || partToRender.kind === "hook") && this.shouldPinPart(partToRender, element)) {
1535
+ if (lastThinking && (partToRender.kind === "toolInvocation" || partToRender.kind === "toolInvocationSerialized" || partToRender.kind === "markdownContent" || partToRender.kind === "textEditGroup" || partToRender.kind === "externalEdit" || partToRender.kind === "hook") && this.shouldPinPart(partToRender, element)) {
1471
1536
  if (alreadyRenderedPart instanceof ChatMarkdownContentPart) {
1472
1537
  lastThinking.removeEditPillByPartId(alreadyRenderedPart.codeblocksPartId);
1473
1538
  }
@@ -1655,7 +1720,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1655
1720
  if (collapsedToolsMode === CollapsedToolsDisplayMode.Off) {
1656
1721
  return false;
1657
1722
  }
1658
- if (this.hasEditCodeblockUri(part) || part.kind === "textEditGroup") {
1723
+ if (this.hasEditCodeblockUri(part) || part.kind === "textEditGroup" || part.kind === "externalEdit") {
1659
1724
  return true;
1660
1725
  }
1661
1726
  const isMcpTool = (part.kind === "toolInvocation" || part.kind === "toolInvocationSerialized") && isMcpToolInvocation(part);
@@ -1836,7 +1901,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1836
1901
  if (!lastThinking) {
1837
1902
  return;
1838
1903
  }
1839
- const style = this.configService.getValue("chat.agent.thinkingStyle");
1904
+ const style = getEffectiveThinkingDisplayMode(this.configService, this.contextKeyService);
1840
1905
  if (style === ThinkingDisplayMode.CollapsedPreview) {
1841
1906
  lastThinking.collapseContent();
1842
1907
  }
@@ -1958,6 +2023,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1958
2023
  context,
1959
2024
  this.chatContentMarkdownRenderer
1960
2025
  );
2026
+ } else if (content.kind === "externalEdit") {
2027
+ return this.renderExternalEdit(content, context, templateData);
1961
2028
  }
1962
2029
  return this.renderNoContent(other => content.kind === other.kind);
1963
2030
  } catch (err) {
@@ -1966,7 +2033,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1966
2033
  "ChatListItemRenderer#renderChatContentPart: error rendering content",
1967
2034
  toErrorMessage(err, true)
1968
2035
  );
1969
- const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(7501, "Failed to render content")) + `: ${toErrorMessage(err, false)}`)), content, this.chatContentMarkdownRenderer);
2036
+ const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(7640, "Failed to render content")) + `: ${toErrorMessage(err, false)}`)), content, this.chatContentMarkdownRenderer);
1970
2037
  return {
1971
2038
  dispose: () => errorPart.dispose(),
1972
2039
  domNode: errorPart.domNode,
@@ -2345,7 +2412,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2345
2412
  }
2346
2413
  const shouldPinToThinking = hookPart.hookType === HookType.PreToolUse || hookPart.hookType === HookType.PostToolUse;
2347
2414
  if (shouldPinToThinking) {
2348
- const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(7502, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(7503, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(7504, "Used {0}, but received a warning", hookPart.toolDisplayName)) : ( localize(7505, "Tool call received a warning")));
2415
+ const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(7641, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(7642, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(7643, "Used {0}, but received a warning", hookPart.toolDisplayName)) : ( localize(7644, "Tool call received a warning")));
2349
2416
  let thinkingPart = this.getLastThinkingPart(templateData.renderedParts);
2350
2417
  if (!thinkingPart) {
2351
2418
  const newThinking = this.renderThinkingPart({
@@ -2522,10 +2589,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2522
2589
  return;
2523
2590
  }
2524
2591
  const questionCount = carousel.questions.length;
2525
- const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(7506, "Chat input required."));
2592
+ const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(7645, "Chat input required."));
2526
2593
  const stringQuestion = typeof question === "string" ? question : question.value;
2527
- const alertMessage = questionCount === 1 ? ( localize(7507, "Chat input required (1 question): {0}", stringQuestion)) : ( localize(
2528
- 7508,
2594
+ const alertMessage = questionCount === 1 ? ( localize(7646, "Chat input required (1 question): {0}", stringQuestion)) : ( localize(
2595
+ 7647,
2529
2596
  "Chat input required ({0} questions): {1}",
2530
2597
  questionCount,
2531
2598
  stringQuestion
@@ -2534,7 +2601,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2534
2601
  if (stableKey) {
2535
2602
  this._notifiedQuestionCarousels.add(stableKey);
2536
2603
  }
2537
- const signalMessage = questionCount === 1 ? ( localize(7509, "Chat needs your input (1 question).")) : ( localize(7510, "Chat needs your input ({0} questions).", questionCount));
2604
+ const signalMessage = questionCount === 1 ? ( localize(7648, "Chat needs your input (1 question).")) : ( localize(7649, "Chat needs your input ({0} questions).", questionCount));
2538
2605
  this.accessibilitySignalService.playSignal(AccessibilitySignal.chatUserActionRequired, {
2539
2606
  allowManyInParallel: true,
2540
2607
  customAlertMessage: signalMessage
@@ -2580,7 +2647,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2580
2647
  supportThemeIcons: true
2581
2648
  }));
2582
2649
  if (overall) {
2583
- content.appendText(( localize(7511, "{0}: {1}", message, overall.replace(/\s+/g, " "))));
2650
+ content.appendText(( localize(7650, "{0}: {1}", message, overall.replace(/\s+/g, " "))));
2584
2651
  } else {
2585
2652
  content.appendText(message);
2586
2653
  }
@@ -2625,23 +2692,23 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2625
2692
  }
2626
2693
  getPlanReviewProgressMessage(review) {
2627
2694
  if (!review.isUsed) {
2628
- return localize(7512, "Plan review required");
2695
+ return localize(7651, "Plan review required");
2629
2696
  }
2630
2697
  const result = review.data;
2631
2698
  if (!result) {
2632
2699
  return undefined;
2633
2700
  }
2634
2701
  if (result.rejected) {
2635
- return localize(7513, "Rejected plan");
2702
+ return localize(7652, "Rejected plan");
2636
2703
  }
2637
2704
  if (result.feedback) {
2638
- return localize(7514, "Provided feedback");
2705
+ return localize(7653, "Provided feedback");
2639
2706
  }
2640
2707
  const action = review.actions.find(a => a.label === result.action);
2641
2708
  if (action?.permissionLevel === "autopilot") {
2642
- return localize(7515, "Started implementation with Autopilot");
2709
+ return localize(7654, "Started implementation with Autopilot");
2643
2710
  }
2644
- return localize(7516, "Approved plan");
2711
+ return localize(7655, "Approved plan");
2645
2712
  }
2646
2713
  removeCarouselFromTracking(context, part) {
2647
2714
  if (isResponseVM(context.element)) {
@@ -2674,6 +2741,34 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2674
2741
  );
2675
2742
  return textEditPart;
2676
2743
  }
2744
+ renderExternalEdit(content, context, templateData) {
2745
+ const editPart = this.instantiationService.createInstance(ChatExternalEditContentPart, content, context);
2746
+ const collapsedToolsMode = this.configService.getValue("chat.agent.thinking.collapsedTools");
2747
+ if (isResponseVM(context.element) && collapsedToolsMode !== CollapsedToolsDisplayMode.Off && this.shouldPinPart(content, context.element)) {
2748
+ const partId = `externalEdit-${( content.uri.toString())}-${content.undoStopId ?? ""}`;
2749
+ const lastThinking = this.getLastThinkingPart(templateData.renderedParts);
2750
+ if (!lastThinking && collapsedToolsMode === CollapsedToolsDisplayMode.Always) {
2751
+ const thinkingPart = this.renderThinkingPart({
2752
+ kind: "thinking"
2753
+ }, context, templateData);
2754
+ if (thinkingPart instanceof ChatThinkingContentPart) {
2755
+ thinkingPart.appendItem(() => ({
2756
+ domNode: editPart.domNode,
2757
+ disposable: editPart
2758
+ }), partId, content, templateData.value, editPart.onDidChangeDiff, editPart);
2759
+ }
2760
+ return thinkingPart;
2761
+ }
2762
+ if (lastThinking) {
2763
+ lastThinking.appendItem(() => ({
2764
+ domNode: editPart.domNode,
2765
+ disposable: editPart
2766
+ }), partId, content, templateData.value, editPart.onDidChangeDiff, editPart);
2767
+ return this.renderNoContent(other => other.kind === content.kind);
2768
+ }
2769
+ }
2770
+ return editPart;
2771
+ }
2677
2772
  renderMarkdown(markdown, templateData, context) {
2678
2773
  const element = context.element;
2679
2774
  const isBlankMarkdown = !markdown.content.value.trim();
@@ -2728,7 +2823,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2728
2823
  })
2729
2824
  );
2730
2825
  markdownPart.addDisposable(
2731
- this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(7517, "Click to Edit")), {
2826
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(7656, "Click to Edit")), {
2732
2827
  trapFocus: true
2733
2828
  })
2734
2829
  );
@@ -2913,4 +3008,4 @@ function isSubagentToolInvocation(invocation) {
2913
3008
  return !!getSubagentId(invocation);
2914
3009
  }
2915
3010
 
2916
- export { ChatListDelegate, ChatListItemRenderer };
3011
+ export { ChatListDelegate, ChatListItemRenderer, shouldScheduleInitialHeightChange };
@@ -276,6 +276,12 @@ export declare class ChatListWidget extends Disposable {
276
276
  * Update renderer options.
277
277
  */
278
278
  updateRendererOptions(options: IChatListItemRendererOptions): void;
279
+ /**
280
+ * Update the list/tree color overrides. Re-applies the same fan-out from
281
+ * `listBackground`/`listForeground` to all interaction states that was
282
+ * originally configured at construction time.
283
+ */
284
+ setStyles(styles: IChatListWidgetStyles): void;
279
285
  /**
280
286
  * Set the visibility of the list.
281
287
  */
@@ -469,6 +469,27 @@ let ChatListWidget = class ChatListWidget extends Disposable {
469
469
  updateRendererOptions(options) {
470
470
  this._renderer.updateOptions(options);
471
471
  }
472
+ setStyles(styles) {
473
+ this._tree.updateOptions({
474
+ overrideStyles: {
475
+ listFocusBackground: styles.listBackground,
476
+ listInactiveFocusBackground: styles.listBackground,
477
+ listActiveSelectionBackground: styles.listBackground,
478
+ listFocusAndSelectionBackground: styles.listBackground,
479
+ listInactiveSelectionBackground: styles.listBackground,
480
+ listHoverBackground: styles.listBackground,
481
+ listBackground: styles.listBackground,
482
+ listFocusForeground: styles.listForeground,
483
+ listHoverForeground: styles.listForeground,
484
+ listInactiveFocusForeground: styles.listForeground,
485
+ listInactiveSelectionForeground: styles.listForeground,
486
+ listActiveSelectionForeground: styles.listForeground,
487
+ listFocusAndSelectionForeground: styles.listForeground,
488
+ listActiveSelectionIconForeground: undefined,
489
+ listInactiveSelectionIconForeground: undefined
490
+ }
491
+ });
492
+ }
472
493
  setVisible(visible) {
473
494
  this._visible = visible;
474
495
  this._renderer.setVisible(visible);