@codingame/monaco-vscode-katex-common 26.2.2 → 28.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 (230) 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 +37 -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 +576 -0
  7. package/vscode/src/vs/{workbench/contrib → platform}/mcp/common/modelContextProtocolApps.js +1 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +5 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +176 -17
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +127 -64
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.d.ts +1 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -11
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +9 -9
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +14 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +105 -29
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +13 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +69 -43
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +35 -7
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +187 -78
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +138 -32
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -6
  28. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +394 -87
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +28 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +38 -19
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +113 -116
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -15
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -2
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +2 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +30 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +250 -132
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
  44. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +3 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +9 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +2 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +7 -10
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +4 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +22 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +3 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.js +11 -3
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.d.ts +0 -2
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +0 -6
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +4 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.js +6 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +3 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +7 -6
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +0 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -27
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +4 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +53 -20
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +3 -2
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +24 -10
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +4 -4
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.js +11 -6
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +62 -7
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +414 -129
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +4 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +19 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +14 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +98 -26
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.js +1 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +11 -2
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +252 -80
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.d.ts +29 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +246 -8
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +4 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +39 -18
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +6 -4
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +36 -23
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +5 -7
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +42 -37
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +12 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +65 -18
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +9 -6
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +356 -415
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +14 -7
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +102 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +68 -19
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/codeBlockPart.css +48 -15
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +5 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +47 -23
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +0 -5
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +57 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +24 -8
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +18 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +103 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -18
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +44 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +85 -89
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +3 -5
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +15 -17
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +4 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +41 -2
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +6 -5
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +13 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.js +2 -1
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +21 -5
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +341 -88
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +13 -4
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +35 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +440 -0
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +24 -10
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +437 -241
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +77 -17
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +521 -284
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +71 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +664 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +12 -1
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +57 -16
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +4 -7
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +89 -49
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +1 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +28 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +87 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +15 -17
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +7 -4
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +563 -140
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +35 -26
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +2 -2
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +26 -23
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +26 -6
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +145 -79
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +35 -15
  202. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.d.ts +7 -0
  203. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +127 -30
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +1 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +20 -14
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +6 -6
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +96 -34
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +11 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +68 -27
  210. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +5 -0
  211. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +125 -13
  212. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +8 -11
  213. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +54 -45
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +11 -10
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +172 -112
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -44
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +28 -4
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +84 -3
  221. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +9 -2
  222. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +58 -41
  223. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  224. package/vscode/src/vs/workbench/contrib/mcp/common/modelContextProtocolApps.d.ts +1 -548
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  227. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  229. package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
  230. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +0 -187
@@ -6,13 +6,15 @@ import { alert } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/ar
6
6
  import { DomScrollableElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
7
7
  import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
8
8
  import { IChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
9
- import { ThinkingDisplayMode, ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
9
+ import { ChatConfiguration, ThinkingDisplayMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
10
10
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
11
11
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
12
+ import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
12
13
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
13
14
  import { extractCodeblockUrisFromText } from '../../../common/widget/annotations.js';
14
15
  import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
15
16
  import { ChatCollapsibleContentPart } from './chatCollapsibleContentPart.js';
17
+ import { renderFileWidgets } from './chatInlineAnchorWidget.js';
16
18
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
17
19
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
18
20
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
@@ -24,7 +26,6 @@ import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/
24
26
  import { IChatMarkdownAnchorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service';
25
27
  import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
26
28
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
27
- import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
28
29
  import * as chatThinkingContent from './media/chatThinkingContent.css';
29
30
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
30
31
  import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
@@ -43,7 +44,7 @@ function getToolInvocationIcon(toolId) {
43
44
  if (lowerToolId.includes("read") || lowerToolId.includes("get_file") || lowerToolId.includes("problems")) {
44
45
  return Codicon.book;
45
46
  }
46
- if (lowerToolId.includes("edit") || lowerToolId.includes("create")) {
47
+ if (lowerToolId.includes("edit") || lowerToolId.includes("create") || lowerToolId.includes("replace")) {
47
48
  return Codicon.pencil;
48
49
  }
49
50
  if (lowerToolId.includes("terminal")) {
@@ -67,25 +68,38 @@ var WorkingMessageCategory;
67
68
  WorkingMessageCategory["Terminal"] = "terminal";
68
69
  WorkingMessageCategory["Tool"] = "tool";
69
70
  })(WorkingMessageCategory || (WorkingMessageCategory = {}));
70
- const thinkingMessages = [( localize(5980, "Thinking...")), ( localize(5981, "Reasoning...")), ( localize(5982, "Considering...")), ( localize(5983, "Analyzing...")), ( localize(5984, "Evaluating..."))];
71
- const terminalMessages = [( localize(5985, "Executing...")), ( localize(5986, "Running...")), ( localize(5987, "Processing..."))];
72
- const toolMessages = [( localize(5988, "Processing...")), ( localize(5989, "Preparing...")), ( localize(5990, "Loading...")), ( localize(5991, "Analyzing...")), ( localize(5992, "Evaluating..."))];
71
+ const defaultThinkingMessages = [( localize(6595, "Thinking")), ( localize(6596, "Reasoning")), ( localize(6597, "Considering")), ( localize(6598, "Analyzing")), ( localize(6599, "Evaluating"))];
72
+ const terminalMessages = [( localize(6600, "Executing")), ( localize(6601, "Running")), ( localize(6602, "Processing"))];
73
+ const toolMessages = [( localize(6603, "Processing")), ( localize(6604, "Preparing")), ( localize(6605, "Loading")), ( localize(6606, "Analyzing")), ( localize(6607, "Evaluating"))];
73
74
  let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsibleContentPart {
74
75
  getRandomWorkingMessage(category = WorkingMessageCategory.Tool) {
75
76
  let pool = this.availableMessagesByCategory.get(category);
76
77
  if (!pool || pool.length === 0) {
78
+ let defaults;
77
79
  switch (category) {
78
80
  case WorkingMessageCategory.Thinking:
79
- pool = [...thinkingMessages];
81
+ defaults = [...defaultThinkingMessages];
80
82
  break;
81
83
  case WorkingMessageCategory.Terminal:
82
- pool = [...terminalMessages];
84
+ defaults = [...terminalMessages];
83
85
  break;
84
86
  case WorkingMessageCategory.Tool:
85
87
  default:
86
- pool = [...toolMessages];
88
+ defaults = [...toolMessages];
87
89
  break;
88
90
  }
91
+ const config = this.configurationService.getValue(ChatConfiguration.ThinkingPhrases);
92
+ const customPhrases = Array.isArray(config?.phrases) ? ( config.phrases.filter(phrase => typeof phrase === "string").map(phrase => phrase.trim())).filter(phrase => phrase.length > 0) : [];
93
+ const mode = config?.mode === "replace" ? "replace" : "append";
94
+ if (customPhrases.length > 0) {
95
+ if (mode === "replace") {
96
+ pool = [...customPhrases];
97
+ } else {
98
+ pool = [...defaults, ...customPhrases];
99
+ }
100
+ } else {
101
+ pool = defaults;
102
+ }
89
103
  this.availableMessagesByCategory.set(category, pool);
90
104
  }
91
105
  const index = Math.floor(Math.random() * pool.length);
@@ -103,8 +117,8 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
103
117
  hoverService
104
118
  ) {
105
119
  const initialText = extractTextFromPart(content);
106
- const extractedTitle = extractTitleFromThinkingContent(initialText) ?? "Working...";
107
- super(extractedTitle, context, undefined, hoverService);
120
+ const extractedTitle = extractTitleFromThinkingContent(initialText) ?? "Working";
121
+ super(extractedTitle, context, undefined, hoverService, configurationService);
108
122
  this.chatContentMarkdownRenderer = chatContentMarkdownRenderer;
109
123
  this.streamingCompleted = streamingCompleted;
110
124
  this.instantiationService = instantiationService;
@@ -112,7 +126,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
112
126
  this.chatMarkdownAnchorService = chatMarkdownAnchorService;
113
127
  this.languageModelsService = languageModelsService;
114
128
  this._onDidChangeHeight = this._register(( new Emitter()));
115
- this.defaultTitle = ( localize(5993, "Working..."));
129
+ this.defaultTitle = ( localize(6608, "Working"));
116
130
  this.fixedScrollingMode = false;
117
131
  this.autoScrollEnabled = true;
118
132
  this.extractedTitles = [];
@@ -120,6 +134,8 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
120
134
  this.appendedItemCount = 0;
121
135
  this.isActive = true;
122
136
  this.toolInvocations = [];
137
+ this.allThinkingParts = [];
138
+ this.hookCount = 0;
123
139
  this.lazyItems = [];
124
140
  this.hasExpandedOnce = false;
125
141
  this.availableMessagesByCategory = ( new Map());
@@ -129,6 +145,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
129
145
  this.isUpdatingDimensions = false;
130
146
  this.id = content.id;
131
147
  this.content = content;
148
+ this.allThinkingParts.push(content);
132
149
  const configuredMode = this.configurationService.getValue("chat.agent.thinkingStyle") ?? ThinkingDisplayMode.Collapsed;
133
150
  this.fixedScrollingMode = configuredMode === ThinkingDisplayMode.FixedScrolling;
134
151
  this.currentTitle = extractedTitle;
@@ -139,7 +156,9 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
139
156
  if (initialText.trim()) {
140
157
  this.appendedItemCount++;
141
158
  }
142
- alert(( localize(5994, "Thinking")));
159
+ if (this.configurationService.getValue(AccessibilityWorkbenchSettingId.VerboseChatProgressUpdates)) {
160
+ alert(( localize(6609, "Thinking")));
161
+ }
143
162
  if (configuredMode === ThinkingDisplayMode.Collapsed) {
144
163
  this.setExpanded(false);
145
164
  } else if (configuredMode === ThinkingDisplayMode.CollapsedPreview) {
@@ -149,6 +168,18 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
149
168
  }
150
169
  const node = this.domNode;
151
170
  node.classList.add("chat-thinking-box");
171
+ if (!this.streamingCompleted && !this.element.isComplete) {
172
+ if (!this.fixedScrollingMode) {
173
+ node.classList.add("chat-thinking-active");
174
+ }
175
+ }
176
+ if (!this.fixedScrollingMode && !this.streamingCompleted && !this.element.isComplete && this._collapseButton) {
177
+ const labelElement = this._collapseButton.labelElement;
178
+ labelElement.textContent = "";
179
+ this.titleShimmerSpan = $("span.chat-thinking-title-shimmer");
180
+ this.titleShimmerSpan.textContent = extractedTitle;
181
+ labelElement.appendChild(this.titleShimmerSpan);
182
+ }
152
183
  if (this.fixedScrollingMode) {
153
184
  node.classList.add("chat-thinking-fixed-mode");
154
185
  this.currentTitle = this.defaultTitle;
@@ -162,18 +193,23 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
162
193
  if (isExpanded) {
163
194
  this._collapseButton.icon = Codicon.chevronDown;
164
195
  } else {
165
- this._collapseButton.icon = ThemeIcon.modify(Codicon.loading, "spin");
196
+ this._collapseButton.icon = Codicon.circleFilled;
166
197
  }
167
198
  }
168
199
  }
169
200
  }));
170
201
  this._register(autorun(r => {
171
- if (this._isExpanded.read(r) && !this.hasExpandedOnce && this.lazyItems.length > 0) {
202
+ const isExpanded = this._isExpanded.read(r);
203
+ if (isExpanded && !this.hasExpandedOnce && this.lazyItems.length > 0) {
172
204
  this.hasExpandedOnce = true;
173
205
  for (const item of this.lazyItems) {
174
206
  this.materializeLazyItem(item);
175
207
  }
176
208
  }
209
+ if (isExpanded && !this.shouldAllowExpansion()) {
210
+ this.setExpanded(false);
211
+ return;
212
+ }
177
213
  this._onDidChangeHeight.fire();
178
214
  }));
179
215
  const label = this.lastExtractedTitle ?? "";
@@ -189,10 +225,13 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
189
225
  if (expanded) {
190
226
  this.setTitle(this.defaultTitle, true);
191
227
  this.currentTitle = this.defaultTitle;
192
- } else if (this.lastExtractedTitle) {
193
- const collapsedLabel = this.lastExtractedTitle ?? "";
194
- this.setTitle(collapsedLabel);
195
- this.currentTitle = collapsedLabel;
228
+ } else {
229
+ if (this.lastExtractedTitle) {
230
+ this.setTitle(this.lastExtractedTitle);
231
+ } else {
232
+ this.setTitle(this.defaultTitle, true);
233
+ this.currentTitle = this.defaultTitle;
234
+ }
196
235
  }
197
236
  }));
198
237
  }
@@ -213,7 +252,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
213
252
  }
214
253
  if (!this.streamingCompleted && !this.element.isComplete) {
215
254
  this.workingSpinnerElement = $(".chat-thinking-item.chat-thinking-spinner-item");
216
- const spinnerIcon = createThinkingIcon(ThemeIcon.modify(Codicon.loading, "spin"));
255
+ const spinnerIcon = createThinkingIcon(Codicon.circleFilled);
217
256
  this.workingSpinnerElement.appendChild(spinnerIcon);
218
257
  this.workingSpinnerLabel = $("span.chat-thinking-spinner-label");
219
258
  this.workingSpinnerLabel.textContent = this.getRandomWorkingMessage(WorkingMessageCategory.Thinking);
@@ -308,6 +347,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
308
347
  height: viewportHeight,
309
348
  scrollHeight: contentHeight
310
349
  });
350
+ this.updateDropdownClickability(contentHeight);
311
351
  }
312
352
  scrollToBottom() {
313
353
  if (!this.scrollableElement) {
@@ -381,21 +421,44 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
381
421
  }
382
422
  }
383
423
  }
424
+ setFinalizedTitle(title) {
425
+ if (!this._collapseButton) {
426
+ return;
427
+ }
428
+ const labelElement = this._collapseButton.labelElement;
429
+ labelElement.textContent = "";
430
+ const firstSpaceIndex = title.indexOf(" ");
431
+ if (firstSpaceIndex === -1) {
432
+ labelElement.textContent = title;
433
+ } else {
434
+ const verb = title.substring(0, firstSpaceIndex);
435
+ const rest = title.substring(firstSpaceIndex);
436
+ const verbSpan = $("span");
437
+ verbSpan.textContent = verb;
438
+ labelElement.appendChild(verbSpan);
439
+ const restSpan = $("span.chat-thinking-title-detail-text");
440
+ restSpan.textContent = rest;
441
+ labelElement.appendChild(restSpan);
442
+ }
443
+ this._collapseButton.element.ariaLabel = title;
444
+ }
384
445
  setDropdownClickable(clickable) {
385
446
  if (this._collapseButton) {
386
447
  this._collapseButton.element.style.pointerEvents = clickable ? "auto" : "none";
387
448
  }
388
449
  if (!clickable && this.streamingCompleted) {
389
- super.setTitle(this.lastExtractedTitle ?? this.currentTitle);
450
+ this.setFinalizedTitle(this.lastExtractedTitle ?? this.currentTitle);
390
451
  }
391
452
  }
392
- updateDropdownClickability() {
393
- if (!this.wrapper) {
394
- return;
453
+ shouldAllowExpansion() {
454
+ if (this.toolInvocationCount > 0 || this.lazyItems.length > 0) {
455
+ return true;
395
456
  }
396
- if (this.wrapper.children.length > 1 || this.toolInvocationCount > 0 || this.lazyItems.length > 0) {
397
- this.setDropdownClickable(true);
398
- return;
457
+ if (this.wrapper) {
458
+ const meaningfulChildren = Array.from(this.wrapper.children).filter(child => child !== this.workingSpinnerElement).length;
459
+ if (meaningfulChildren > 1) {
460
+ return true;
461
+ }
399
462
  }
400
463
  const contentWithoutTitle = this.currentThinkingValue.trim();
401
464
  const titleToCompare = this.lastExtractedTitle ?? this.currentTitle;
@@ -403,8 +466,20 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
403
466
  return text.replace(/\*\*(.+?)\*\*/g, "$1").replace(/\*(.+?)\*/g, "$1").replace(/`(.+?)`/g, "$1").trim();
404
467
  };
405
468
  const strippedContent = stripMarkdown(contentWithoutTitle);
406
- const shouldDisable = !strippedContent || strippedContent === titleToCompare;
407
- this.setDropdownClickable(!shouldDisable);
469
+ return !(!strippedContent || strippedContent === titleToCompare);
470
+ }
471
+ updateDropdownClickability(knownContentHeight) {
472
+ let allowExpansion = this.shouldAllowExpansion();
473
+ if (allowExpansion && this.fixedScrollingMode && !this.streamingCompleted && !this.element.isComplete && this.wrapper) {
474
+ const contentHeight = knownContentHeight ?? this.wrapper.scrollHeight;
475
+ if (contentHeight <= THINKING_SCROLL_MAX_HEIGHT) {
476
+ allowExpansion = false;
477
+ }
478
+ }
479
+ if (!allowExpansion && this.isExpanded()) {
480
+ this.setExpanded(false);
481
+ }
482
+ this.setDropdownClickable(allowExpansion);
408
483
  }
409
484
  appendToWrapper(element) {
410
485
  if (!this.wrapper) {
@@ -466,6 +541,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
466
541
  }
467
542
  markAsInactive() {
468
543
  this.isActive = false;
544
+ this.domNode.classList.remove("chat-thinking-active");
469
545
  this.processPendingRemovals();
470
546
  if (this.workingSpinnerElement) {
471
547
  this.workingSpinnerElement.remove();
@@ -478,6 +554,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
478
554
  if (this.wrapper) {
479
555
  this.wrapper.classList.remove("chat-thinking-streaming");
480
556
  }
557
+ this.domNode.classList.remove("chat-thinking-active");
481
558
  this.streamingCompleted = true;
482
559
  if (this.mutationObserverDisposable) {
483
560
  this.mutationObserverDisposable.dispose();
@@ -495,25 +572,42 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
495
572
  this.updateDropdownClickability();
496
573
  if (this.content.generatedTitle) {
497
574
  this.currentTitle = this.content.generatedTitle;
498
- super.setTitle(this.content.generatedTitle);
575
+ this.setFinalizedTitle(this.content.generatedTitle);
499
576
  return;
500
577
  }
501
- const existingToolTitle = this.toolInvocations.find(t => t.generatedTitle)?.generatedTitle;
502
- if (existingToolTitle) {
503
- this.currentTitle = existingToolTitle;
504
- this.content.generatedTitle = existingToolTitle;
505
- super.setTitle(existingToolTitle);
578
+ const existingTitle = this.toolInvocations.find(t => t.generatedTitle)?.generatedTitle ?? this.allThinkingParts.find(t => t.generatedTitle)?.generatedTitle;
579
+ if (existingTitle) {
580
+ this.currentTitle = existingTitle;
581
+ this.content.generatedTitle = existingTitle;
582
+ this.setGeneratedTitleOnAllParts(existingTitle);
583
+ this.setFinalizedTitle(existingTitle);
506
584
  return;
507
585
  }
508
- if (this.appendedItemCount === 1 && this.currentThinkingValue.trim() === "" && this.singleItemInfo) {
509
- this.restoreSingleItemToOriginalPosition();
510
- return;
586
+ if (this.appendedItemCount === 1 && this.currentThinkingValue.trim() === "") {
587
+ if (!this.singleItemInfo) {
588
+ const lazyItem = this.lazyItems.find(item => item.kind === "tool" && item.originalParent);
589
+ if (lazyItem && lazyItem.kind === "tool") {
590
+ const result = lazyItem.lazy.value;
591
+ this.singleItemInfo = {
592
+ element: result.domNode,
593
+ originalParent: lazyItem.originalParent,
594
+ originalNextSibling: this.domNode
595
+ };
596
+ if (result.disposable) {
597
+ this._register(result.disposable);
598
+ }
599
+ }
600
+ }
601
+ if (this.singleItemInfo && this.restoreSingleItemToOriginalPosition()) {
602
+ return;
603
+ }
511
604
  }
512
605
  if (this.extractedTitles.length === 1 && this.toolInvocationCount === 0) {
513
606
  const title = this.extractedTitles[0];
514
607
  this.currentTitle = title;
515
608
  this.content.generatedTitle = title;
516
- super.setTitle(title);
609
+ this.setGeneratedTitleOnAllParts(title);
610
+ this.setFinalizedTitle(title);
517
611
  return;
518
612
  }
519
613
  const generateTitles = this.configurationService.getValue(ChatConfiguration.ThinkingGenerateTitles) ?? true;
@@ -523,25 +617,22 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
523
617
  }
524
618
  this.generateTitleViaLLM();
525
619
  }
526
- setGeneratedTitleOnToolInvocations(title) {
620
+ setGeneratedTitleOnAllParts(title) {
527
621
  for (const toolInvocation of this.toolInvocations) {
528
622
  toolInvocation.generatedTitle = title;
529
623
  }
624
+ for (const thinkingPart of this.allThinkingParts) {
625
+ thinkingPart.generatedTitle = title;
626
+ }
530
627
  }
531
628
  async generateTitleViaLLM() {
532
629
  const cts = ( new CancellationTokenSource());
533
630
  const timeout = setTimeout(() => cts.cancel(), 5000);
534
631
  try {
535
- let models = await this.languageModelsService.selectLanguageModels({
632
+ const models = await this.languageModelsService.selectLanguageModels({
536
633
  vendor: "copilot",
537
634
  id: "copilot-fast"
538
635
  });
539
- if (!models.length) {
540
- models = await this.languageModelsService.selectLanguageModels({
541
- vendor: "copilot",
542
- family: "gpt-4o-mini"
543
- });
544
- }
545
636
  if (!models.length) {
546
637
  this.setFallbackTitle();
547
638
  return;
@@ -561,6 +652,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
561
652
  OUTPUT FORMAT:
562
653
  - MUST be a single sentence
563
654
  - MUST be under 10 words
655
+ - The FIRST word MUST be a past tense verb (e.g. "Updated", "Reviewed", "Created", "Searched", "Analyzed")
564
656
  - No quotes, no trailing punctuation
565
657
 
566
658
  GENERAL:
@@ -582,13 +674,13 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
582
674
  - For reasoning/thinking: "Considered", "Planned", "Analyzed", "Reviewed", "Evaluated"
583
675
  - Choose the synonym that best fits the context
584
676
 
585
- PRIORITY RULE - BLOCKED/DENIED CONTENT:
586
- - If any item mentions being "blocked" (e.g. "Tried to use X, but was blocked"), it MUST be reflected in the title
587
- - Blocked content takes priority over all other tool calls
588
- - Use natural phrasing like "Tried to <action>, but was blocked" or "Attempted <tool> but was denied"
589
- - If there are both blocked items AND normal tool calls, mention both: e.g. "Tried to run terminal but was blocked, edited file.ts"
677
+ ${this.hookCount > 0 ? `BLOCKED/DENIED CONTENT (hooks detected):
678
+ - Only mention "blocked" if the content explicitly includes hook results that blocked or warned about a tool (e.g. "Blocked terminal" or "Warning for read_file")
679
+ - If blocked items are present alongside normal tool calls, briefly note the block but do NOT let it dominate the summary: e.g. "Updated file.ts, blocked terminal"
680
+
681
+ ` : `IMPORTANT: Do NOT use words like "blocked", "denied", or "tried" in the summary - there are no hooks or blocked items in this content. Just summarize normally.
590
682
 
591
- RULES FOR TOOL CALLS:
683
+ `}RULES FOR TOOL CALLS:
592
684
  1. If the SAME file was both edited AND read: Use a combined phrase like "Reviewed and updated <filename>"
593
685
  2. If exactly ONE file was edited: Start with an edit synonym + "<filename>" (include actual filename)
594
686
  3. If exactly ONE file was read: Start with a read synonym + "<filename>" (include actual filename)
@@ -627,13 +719,12 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
627
719
  - "Edited Button.tsx, Edited Button.css, Edited index.ts" → "Modified 3 files"
628
720
  - "Searched codebase for error handling" → "Looked up error handling"
629
721
 
630
- EXAMPLES WITH BLOCKED CONTENT:
631
- - "Tried to use Run in Terminal, but was blocked" → "Tried to run command, but was blocked"
632
- - "Tried to use Run in Terminal, but was blocked, Edited config.ts" → "Tried to run command but was blocked, edited config.ts"
633
- - "Tried to use Edit File, but was blocked, Tried to use Run in Terminal, but was blocked" → "Tried to use 2 tools, but was blocked"
634
- - "Used Read File, but received a warning, Edited utils.ts" → "Read file with a warning, edited utils.ts"
722
+ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
723
+ - "Blocked terminal, Edited config.ts" → "Edited config.ts, terminal was blocked"
724
+ - "Blocked terminal, Blocked read_file" → "Two tools were blocked by hooks"
725
+ - "Warning for read_file, Edited utils.ts" → "Edited utils.ts with a hook warning"
635
726
 
636
- EXAMPLES WITH REASONING HEADERS (no tools):
727
+ ` : ""}EXAMPLES WITH REASONING HEADERS (no tools):
637
728
  - "Analyzing component architecture" → "Considered component architecture"
638
729
  - "Planning refactor strategy" → "Planned refactor strategy"
639
730
  - "Reviewing error handling approach, Considering edge cases" → "Analyzed error handling approach"
@@ -647,7 +738,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
647
738
  - "Looking at the UserService class, I see it handles..." → "Reviewed UserService implementation"
648
739
 
649
740
  Content: ${context}`;
650
- const response = await this.languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier("core")), [{
741
+ const response = await this.languageModelsService.sendChatRequest(models[0], undefined, [{
651
742
  role: ChatMessageRole.User,
652
743
  content: [{
653
744
  type: "text",
@@ -681,11 +772,9 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
681
772
  }
682
773
  if (generatedTitle && !this._store.isDisposed) {
683
774
  this.currentTitle = generatedTitle;
684
- if (this._collapseButton) {
685
- this._collapseButton.label = generatedTitle;
686
- }
775
+ this.setFinalizedTitle(generatedTitle);
687
776
  this.content.generatedTitle = generatedTitle;
688
- this.setGeneratedTitleOnToolInvocations(generatedTitle);
777
+ this.setGeneratedTitleOnAllParts(generatedTitle);
689
778
  return;
690
779
  }
691
780
  } catch (error) {} finally {
@@ -696,7 +785,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
696
785
  }
697
786
  restoreSingleItemToOriginalPosition() {
698
787
  if (!this.singleItemInfo) {
699
- return;
788
+ return false;
700
789
  }
701
790
  const {
702
791
  element,
@@ -705,7 +794,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
705
794
  } = this.singleItemInfo;
706
795
  if (element.childElementCount > 1) {
707
796
  this.singleItemInfo = undefined;
708
- return;
797
+ return false;
709
798
  }
710
799
  if (originalNextSibling && originalNextSibling.parentNode === originalParent) {
711
800
  originalParent.insertBefore(element, originalNextSibling);
@@ -714,22 +803,24 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
714
803
  }
715
804
  hide(this.domNode);
716
805
  this.singleItemInfo = undefined;
806
+ return true;
717
807
  }
718
808
  setFallbackTitle() {
719
809
  const finalLabel = this.appendedItemCount > 0 ? ( localize(
720
- 5995,
810
+ 6610,
721
811
  "Finished with {0} step{1}",
722
812
  this.appendedItemCount,
723
813
  this.appendedItemCount === 1 ? "" : "s"
724
- )) : ( localize(5996, "Finished Working"));
814
+ )) : ( localize(6611, "Finished Working"));
725
815
  this.currentTitle = finalLabel;
726
816
  if (this.wrapper) {
727
817
  this.wrapper.classList.remove("chat-thinking-streaming");
728
818
  }
819
+ this.domNode.classList.remove("chat-thinking-active");
729
820
  this.streamingCompleted = true;
730
821
  if (this._collapseButton) {
731
822
  this._collapseButton.icon = Codicon.check;
732
- this._collapseButton.label = finalLabel;
823
+ this.setFinalizedTitle(finalLabel);
733
824
  }
734
825
  this.updateDropdownClickability();
735
826
  }
@@ -759,7 +850,8 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
759
850
  lazy: ( new Lazy(factory)),
760
851
  toolInvocationId,
761
852
  toolInvocationOrMarkdown,
762
- originalParent
853
+ originalParent,
854
+ isHook: !toolInvocationOrMarkdown && !!toolInvocationId
763
855
  };
764
856
  this.lazyItems.push(item);
765
857
  }
@@ -770,9 +862,14 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
770
862
  if (index === -1) {
771
863
  return false;
772
864
  }
865
+ const removedItem = this.lazyItems[index];
773
866
  this.lazyItems.splice(index, 1);
774
867
  this.appendedItemCount--;
775
- this.toolInvocationCount--;
868
+ if (removedItem.kind === "tool" && removedItem.isHook) {
869
+ this.hookCount = Math.max(0, this.hookCount - 1);
870
+ } else {
871
+ this.toolInvocationCount--;
872
+ }
776
873
  const toolInvocationsIndex = this.toolInvocations.findIndex(
777
874
  t => (t.kind === "toolInvocation" || t.kind === "toolInvocationSerialized") && t.toolId === toolInvocationId
778
875
  );
@@ -783,10 +880,28 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
783
880
  return true;
784
881
  }
785
882
  processPendingRemovals() {
786
- for (const pending of this.pendingRemovals) {
787
- this.removeStreamingToolEntry(pending.toolCallId, pending.toolLabel);
883
+ this.pendingRemovalFlushDisposable?.dispose();
884
+ this.pendingRemovalFlushDisposable = undefined;
885
+ if (this.pendingRemovals.length === 0) {
886
+ return;
788
887
  }
888
+ const pendingRemovals = this.pendingRemovals;
789
889
  this.pendingRemovals = [];
890
+ for (const pending of pendingRemovals) {
891
+ this.removeStreamingToolEntry(pending.toolCallId, pending.toolLabel);
892
+ }
893
+ }
894
+ schedulePendingRemovalsFlush() {
895
+ if (this.pendingRemovalFlushDisposable) {
896
+ return;
897
+ }
898
+ this.pendingRemovalFlushDisposable = scheduleAtNextAnimationFrame(getWindow(this.domNode), () => {
899
+ this.pendingRemovalFlushDisposable = undefined;
900
+ if (this._store.isDisposed) {
901
+ return;
902
+ }
903
+ this.processPendingRemovals();
904
+ });
790
905
  }
791
906
  removeStreamingToolEntry(toolCallId, toolLabel) {
792
907
  this.toolDisposables.deleteAndDispose(toolCallId);
@@ -820,7 +935,12 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
820
935
  if (!toolInvocationId) {
821
936
  return;
822
937
  }
823
- this.toolInvocationCount++;
938
+ const isHook = !toolInvocationOrMarkdown;
939
+ if (isHook) {
940
+ this.hookCount++;
941
+ } else {
942
+ this.toolInvocationCount++;
943
+ }
824
944
  let toolCallLabel;
825
945
  const isToolInvocation = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized");
826
946
  if (isToolInvocation && toolInvocationOrMarkdown.invocationMessage) {
@@ -865,6 +985,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
865
985
  toolCallId: toolInvocationOrMarkdown.toolCallId,
866
986
  toolLabel: currentToolLabel
867
987
  });
988
+ this.schedulePendingRemovalsFlush();
868
989
  isComplete = true;
869
990
  return;
870
991
  }
@@ -908,9 +1029,9 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
908
1029
  const codeblockInfo = extractCodeblockUrisFromText(toolInvocationOrMarkdown.content.value);
909
1030
  if (codeblockInfo?.uri) {
910
1031
  const filename = basename(codeblockInfo.uri);
911
- toolCallLabel = ( localize(5997, "Edited {0}", filename));
1032
+ toolCallLabel = ( localize(6612, "Edited {0}", filename));
912
1033
  } else {
913
- toolCallLabel = ( localize(5998, "Edited file"));
1034
+ toolCallLabel = ( localize(6613, "Edited file"));
914
1035
  }
915
1036
  } else {
916
1037
  toolCallLabel = toolInvocationId;
@@ -1002,6 +1123,7 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
1002
1123
  return;
1003
1124
  }
1004
1125
  this.appendedItemCount++;
1126
+ this.allThinkingParts.push(content);
1005
1127
  this.textContainer = $(".chat-thinking-item.markdown-content");
1006
1128
  if (content.value) {
1007
1129
  if (this.isExpanded() || this.hasExpandedOnce || (this.fixedScrollingMode && !this.streamingCompleted)) {
@@ -1029,17 +1151,60 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
1029
1151
  return;
1030
1152
  }
1031
1153
  if (omitPrefix) {
1032
- this.setTitleWithWidgets(( new MarkdownString(title)), this.instantiationService, this.chatMarkdownAnchorService, this.chatContentMarkdownRenderer);
1154
+ if (this._collapseButton) {
1155
+ const labelElement = this._collapseButton.labelElement;
1156
+ labelElement.textContent = "";
1157
+ const plainSpan = $("span");
1158
+ plainSpan.textContent = title;
1159
+ labelElement.appendChild(plainSpan);
1160
+ this._collapseButton.element.ariaLabel = title;
1161
+ }
1162
+ this.titleShimmerSpan = undefined;
1163
+ this.titleDetailContainer = undefined;
1164
+ if (this.titleDetailRendered) {
1165
+ this.titleDetailRendered.dispose();
1166
+ this.titleDetailRendered = undefined;
1167
+ }
1033
1168
  this.currentTitle = title;
1034
1169
  return;
1035
1170
  }
1036
- const thinkingLabel = `Working: ${title}`;
1037
1171
  this.lastExtractedTitle = title;
1172
+ const thinkingLabel = `Working: ${title}`;
1038
1173
  this.currentTitle = thinkingLabel;
1039
- this.setTitleWithWidgets(( new MarkdownString(thinkingLabel)), this.instantiationService, this.chatMarkdownAnchorService, this.chatContentMarkdownRenderer);
1174
+ if (!this._collapseButton) {
1175
+ return;
1176
+ }
1177
+ const labelElement = this._collapseButton.labelElement;
1178
+ if (!this.titleShimmerSpan || !this.titleShimmerSpan.parentElement) {
1179
+ labelElement.textContent = "";
1180
+ this.titleShimmerSpan = $("span.chat-thinking-title-shimmer");
1181
+ labelElement.appendChild(this.titleShimmerSpan);
1182
+ }
1183
+ this.titleShimmerSpan.textContent = "Working: ";
1184
+ if (this.titleDetailRendered) {
1185
+ this.titleDetailRendered.dispose();
1186
+ this.titleDetailRendered = undefined;
1187
+ }
1188
+ const result = this.chatContentMarkdownRenderer.render(( new MarkdownString(title)));
1189
+ result.element.classList.add("collapsible-title-content", "chat-thinking-title-detail");
1190
+ renderFileWidgets(
1191
+ result.element,
1192
+ this.instantiationService,
1193
+ this.chatMarkdownAnchorService,
1194
+ this._store
1195
+ );
1196
+ this.titleDetailRendered = result;
1197
+ if (this.titleDetailContainer) {
1198
+ this.titleDetailContainer.replaceWith(result.element);
1199
+ } else {
1200
+ labelElement.appendChild(result.element);
1201
+ }
1202
+ this.titleDetailContainer = result.element;
1203
+ this._collapseButton.element.ariaLabel = thinkingLabel;
1204
+ this._collapseButton.element.ariaExpanded = String(this.isExpanded());
1040
1205
  }
1041
1206
  hasSameContent(other, _followingContent, _element) {
1042
- if (other.kind === "toolInvocation" || other.kind === "toolInvocationSerialized" || other.kind === "markdownContent") {
1207
+ if (other.kind === "toolInvocation" || other.kind === "toolInvocationSerialized" || other.kind === "markdownContent" || other.kind === "hook") {
1043
1208
  return true;
1044
1209
  }
1045
1210
  if (other.kind !== "thinking") {
@@ -1048,15 +1213,22 @@ let ChatThinkingContentPart = class ChatThinkingContentPart extends ChatCollapsi
1048
1213
  return other?.id !== this.id;
1049
1214
  }
1050
1215
  dispose() {
1216
+ this.isActive = false;
1051
1217
  if (this.markdownResult) {
1052
1218
  this.markdownResult.dispose();
1053
1219
  this.markdownResult = undefined;
1054
1220
  }
1221
+ if (this.titleDetailRendered) {
1222
+ this.titleDetailRendered.dispose();
1223
+ this.titleDetailRendered = undefined;
1224
+ }
1055
1225
  if (this.workingSpinnerElement) {
1056
1226
  this.workingSpinnerElement.remove();
1057
1227
  this.workingSpinnerElement = undefined;
1058
1228
  this.workingSpinnerLabel = undefined;
1059
1229
  }
1230
+ this.pendingRemovalFlushDisposable?.dispose();
1231
+ this.pendingRemovalFlushDisposable = undefined;
1060
1232
  this.pendingScrollDisposable?.dispose();
1061
1233
  super.dispose();
1062
1234
  }