@codingame/monaco-vscode-katex-common 29.1.0 → 30.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 (180) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +14 -13
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +34 -34
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -20
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +14 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +208 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +22 -0
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +637 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +1 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +9 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +202 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +4 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +17 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +53 -5
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +296 -63
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +59 -23
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -42
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +110 -59
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +5 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +384 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +12 -7
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +220 -61
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +1 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +6 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +14 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +5 -4
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +5 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +14 -14
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +11 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -12
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +97 -54
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +5 -4
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +8 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +15 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +155 -22
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +3 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +36 -19
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +13 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.d.ts +17 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +68 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +16 -16
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +33 -25
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +12 -3
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -13
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +37 -113
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +10 -3
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +66 -39
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +13 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +103 -61
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +2 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +35 -23
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +6 -6
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +1 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +2 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -24
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +6 -5
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +44 -18
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +60 -10
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  114. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  115. package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +4 -0
  116. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  117. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -1
  119. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +5 -2
  120. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +6 -11
  121. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -39
  123. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  124. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  125. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  126. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.d.ts +26 -0
  127. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +746 -0
  128. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.d.ts +13 -0
  129. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +300 -0
  130. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.d.ts +8 -0
  131. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +55 -0
  132. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.d.ts +273 -0
  133. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1963 -0
  134. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.d.ts +50 -0
  135. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +314 -0
  136. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.d.ts +258 -0
  137. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +886 -0
  138. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.d.ts +41 -0
  139. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +118 -0
  140. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.d.ts +17 -0
  141. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.js +71 -0
  142. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.d.ts +27 -0
  143. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +40 -0
  144. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.d.ts +23 -0
  145. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.js +313 -0
  146. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.d.ts +51 -0
  147. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.js +265 -0
  148. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.d.ts +24 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.js +185 -0
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.d.ts +28 -0
  151. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.js +104 -0
  152. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.d.ts +10 -0
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.js +43 -0
  154. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.d.ts +21 -0
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.js +41 -0
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.d.ts +25 -0
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.js +69 -0
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css +469 -0
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.d.ts +149 -0
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +933 -0
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.d.ts +180 -0
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +32 -0
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.d.ts +102 -0
  164. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +643 -0
  165. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.d.ts +30 -0
  166. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +197 -0
  167. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.d.ts +75 -0
  168. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.js +539 -0
  169. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.d.ts +13 -0
  170. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.js +39 -0
  171. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.d.ts +19 -0
  172. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.js +90 -0
  173. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.d.ts +26 -0
  174. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.js +92 -0
  175. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  176. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -152
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -1317
  179. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +0 -47
  180. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +0 -95
@@ -53,8 +53,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
53
53
  return;
54
54
  }
55
55
  this._currentMode = mode;
56
- const modeName = mode.name.get() || mode.label.get() || ( localize(6775, "current mode"));
57
- this.titleElement.textContent = ( localize(6776, "Proceed from {0}", modeName));
56
+ const modeName = mode.name.get() || mode.label.get() || ( localize(6830, "current mode"));
57
+ this.titleElement.textContent = ( localize(6831, "Proceed from {0}", modeName));
58
58
  const childrenToRemove = [];
59
59
  for (let i = 1; i < this.promptsContainer.children.length; i++) {
60
60
  childrenToRemove.push(this.promptsContainer.children[i]);
@@ -68,7 +68,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
68
68
  this.promptsContainer.removeChild(child);
69
69
  }
70
70
  const isAutopilotEnabled = this.configurationService.getValue(ChatConfiguration.AutopilotEnabled) !== false;
71
- const firstAutoSendHandoff = isAutopilotEnabled ? handoffs.find(h => h.send) : undefined;
71
+ const isAutopilotPolicyRestricted = this.configurationService.inspect(ChatConfiguration.GlobalAutoApprove).policyValue === false;
72
+ const firstAutoSendHandoff = isAutopilotEnabled && !isAutopilotPolicyRestricted ? handoffs.find(h => h.send) : undefined;
72
73
  for (const handoff of handoffs) {
73
74
  const promptButton = this.createPromptButton(handoff);
74
75
  this.promptsContainer.appendChild(promptButton);
@@ -90,7 +91,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
90
91
  const button = $(".chat-welcome-view-suggested-prompt");
91
92
  button.setAttribute("tabindex", "0");
92
93
  button.setAttribute("role", "button");
93
- button.setAttribute("aria-label", ( localize(6777, "{0}", handoff.label)));
94
+ button.setAttribute("aria-label", ( localize(6832, "{0}", handoff.label)));
94
95
  const titleElement = append(button, $(".chat-welcome-view-suggested-prompt-title"));
95
96
  titleElement.textContent = handoff.label;
96
97
  const showContinueOn = handoff.showContinueOn ?? true;
@@ -111,7 +112,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
111
112
  const dropdownContainer = append(button, $(".chat-suggest-next-dropdown"));
112
113
  dropdownContainer.setAttribute("tabindex", "0");
113
114
  dropdownContainer.setAttribute("role", "button");
114
- dropdownContainer.setAttribute("aria-label", ( localize(6778, "More options for {0}", handoff.label)));
115
+ dropdownContainer.setAttribute("aria-label", ( localize(6833, "More options for {0}", handoff.label)));
115
116
  dropdownContainer.setAttribute("aria-haspopup", "true");
116
117
  const separator = append(dropdownContainer, $(".chat-suggest-next-separator"));
117
118
  separator.setAttribute("aria-hidden", "true");
@@ -126,7 +127,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
126
127
  const name = getAgentSessionProviderName(provider);
127
128
  return (new Action(
128
129
  contrib.type,
129
- localize(6779, "Continue in {0}", name),
130
+ localize(6834, "Continue in {0}", name),
130
131
  ThemeIcon.isThemeIcon(icon) ? ThemeIcon.asClassName(icon) : undefined,
131
132
  true,
132
133
  () => {
@@ -196,7 +197,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
196
197
  const currentHandoffs = this._currentMode?.handOffs?.get();
197
198
  return currentHandoffs?.find(h => h.label === handoffLabel) ?? handoff;
198
199
  };
199
- const label = ( localize(6780, "Start with Autopilot"));
200
+ const label = ( localize(6835, "Start with Autopilot"));
200
201
  const button = $(".chat-welcome-view-suggested-prompt");
201
202
  button.setAttribute("tabindex", "0");
202
203
  button.setAttribute("role", "button");
@@ -39,7 +39,7 @@ let ChatTextEditContentPart = class ChatTextEditContentPart extends Disposable {
39
39
  this.domNode = $(
40
40
  ".interactive-edits-summary",
41
41
  undefined,
42
- !element.isComplete ? "" : element.isCanceled ? ( localize(6781, "Making changes was aborted.")) : ( localize(6782, "Made changes."))
42
+ !element.isComplete ? "" : element.isCanceled ? ( localize(6836, "Making changes was aborted.")) : ( localize(6837, "Made changes."))
43
43
  );
44
44
  } else {
45
45
  this.domNode = $("div");
@@ -7,10 +7,13 @@ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
7
7
  import { IMarkdownRenderer } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer";
8
8
  import { ChatCollapsibleContentPart } from "./chatCollapsibleContentPart.js";
9
9
  import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
10
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
10
11
  import { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
11
12
  import { IChatMarkdownAnchorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service";
12
13
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
13
14
  import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
15
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
16
+ import { IEditSessionDiffStats } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService";
14
17
  export declare function getToolInvocationIcon(toolId: string, registeredIcon?: ThemeIcon): ThemeIcon;
15
18
  export declare function createThinkingIcon(icon: ThemeIcon): HTMLElement;
16
19
  /**
@@ -26,6 +29,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
26
29
  private readonly configurationService;
27
30
  private readonly chatMarkdownAnchorService;
28
31
  private readonly languageModelsService;
32
+ private readonly storageService;
29
33
  private static _codeBlockRendererSync;
30
34
  readonly codeblocks: undefined;
31
35
  readonly codeblocksPartId: undefined;
@@ -73,8 +77,11 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
73
77
  private titleDetailContainer;
74
78
  private readonly _externalResourceWidget;
75
79
  private readonly _titleDetailRendered;
80
+ private readonly diffStatsByPartId;
81
+ private _aggregatedDiff;
82
+ get aggregatedDiff(): IEditSessionDiffStats;
76
83
  private getRandomWorkingMessage;
77
- constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService);
84
+ constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService, storageService: IStorageService);
78
85
  protected shouldInitEarly(): boolean;
79
86
  protected initContent(): HTMLElement;
80
87
  private handleScroll;
@@ -106,8 +113,14 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
106
113
  markAsInactive(): void;
107
114
  finalizeTitleIfDefault(): void;
108
115
  private setGeneratedTitleOnAllParts;
116
+ private loadTitleCache;
117
+ private saveTitleCache;
118
+ private getTitleCacheKey;
119
+ private getCachedTitle;
120
+ private setCachedTitle;
109
121
  private generateTitleViaLLM;
110
122
  private restoreSingleItemToOriginalPosition;
123
+ private updateAggregatedDiff;
111
124
  private setFallbackTitle;
112
125
  /**
113
126
  * Appends a tool invocation or content item to the thinking group.
@@ -117,7 +130,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
117
130
  appendItem(factory: () => {
118
131
  domNode: HTMLElement;
119
132
  disposable?: IDisposable;
120
- }, toolInvocationId?: string, toolInvocationOrMarkdown?: IChatToolInvocation | IChatToolInvocationSerialized | IChatMarkdownContent, originalParent?: HTMLElement): void;
133
+ }, toolInvocationId?: string, toolInvocationOrMarkdown?: IChatToolInvocation | IChatToolInvocationSerialized | IChatMarkdownContent, originalParent?: HTMLElement, onDidChangeDiff?: Event<IEditSessionDiffStats>): void;
121
134
  removeMaterializedItem(toolCallId: string): void;
122
135
  /**
123
136
  * removes/re-establishes a lazy item from the thinking container
@@ -28,8 +28,11 @@ import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
28
28
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
29
29
  import * as chatThinkingContent from './media/chatThinkingContent.css';
30
30
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
31
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
32
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
31
33
  import { extractImagesFromToolInvocationOutputDetails } from '../../../common/chatImageExtraction.js';
32
34
  import { ChatThinkingExternalResourceWidget } from './chatThinkingExternalResourcesWidget.js';
35
+ import { LocalChatSessionUri, chatSessionResourceToId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
33
36
  import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
34
37
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
35
38
 
@@ -79,15 +82,18 @@ function extractTitleFromThinkingContent(content) {
79
82
  return headerMatch ? headerMatch[1] : undefined;
80
83
  }
81
84
  const THINKING_SCROLL_MAX_HEIGHT = 200;
85
+ const TITLE_CACHE_STORAGE_KEY = "chat.thinkingTitleCache";
86
+ const TITLE_CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000;
87
+ const TITLE_CACHE_MAX_ENTRIES = 1000;
82
88
  var WorkingMessageCategory;
83
89
  (function(WorkingMessageCategory) {
84
90
  WorkingMessageCategory["Thinking"] = "thinking";
85
91
  WorkingMessageCategory["Terminal"] = "terminal";
86
92
  WorkingMessageCategory["Tool"] = "tool";
87
93
  })(WorkingMessageCategory || (WorkingMessageCategory = {}));
88
- const defaultThinkingMessages = [( localize(6783, "Thinking")), ( localize(6784, "Reasoning")), ( localize(6785, "Considering")), ( localize(6786, "Analyzing")), ( localize(6787, "Evaluating"))];
89
- const terminalMessages = [( localize(6788, "Executing")), ( localize(6789, "Running")), ( localize(6790, "Processing"))];
90
- const toolMessages = [( localize(6791, "Processing")), ( localize(6792, "Preparing")), ( localize(6793, "Loading")), ( localize(6794, "Analyzing")), ( localize(6795, "Evaluating"))];
94
+ const defaultThinkingMessages = [( localize(6838, "Thinking")), ( localize(6839, "Reasoning")), ( localize(6840, "Considering")), ( localize(6841, "Analyzing")), ( localize(6842, "Evaluating"))];
95
+ const terminalMessages = [( localize(6843, "Executing")), ( localize(6844, "Running")), ( localize(6845, "Processing"))];
96
+ const toolMessages = [( localize(6846, "Processing")), ( localize(6847, "Preparing")), ( localize(6848, "Loading")), ( localize(6849, "Analyzing")), ( localize(6850, "Evaluating"))];
91
97
  function buildPhrasePool(defaults, configurationService) {
92
98
  const config = configurationService.getValue(ChatConfiguration.ThinkingPhrases);
93
99
  const customPhrases = Array.isArray(config?.phrases) ? ( config.phrases.filter(phrase => typeof phrase === "string").map(phrase => phrase.trim())).filter(phrase => phrase.length > 0) : [];
@@ -102,6 +108,9 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
102
108
  codeElement.textContent = text;
103
109
  return codeElement;
104
110
  }
111
+ get aggregatedDiff() {
112
+ return this._aggregatedDiff;
113
+ }
105
114
  getRandomWorkingMessage(category = WorkingMessageCategory.Tool) {
106
115
  let pool = this.availableMessagesByCategory.get(category);
107
116
  if (!pool || pool.length === 0) {
@@ -133,10 +142,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
133
142
  configurationService,
134
143
  chatMarkdownAnchorService,
135
144
  languageModelsService,
136
- hoverService
145
+ hoverService,
146
+ storageService
137
147
  ) {
138
148
  const initialText = extractTextFromPart(content);
139
- const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(6796, "Thinking"));
149
+ const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(6851, "Thinking"));
140
150
  super(extractedTitle, context, undefined, hoverService, configurationService);
141
151
  this.chatContentMarkdownRenderer = chatContentMarkdownRenderer;
142
152
  this.streamingCompleted = streamingCompleted;
@@ -144,10 +154,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
144
154
  this.configurationService = configurationService;
145
155
  this.chatMarkdownAnchorService = chatMarkdownAnchorService;
146
156
  this.languageModelsService = languageModelsService;
157
+ this.storageService = storageService;
147
158
  this._onDidChangeHeight = this._register(( new Emitter()));
148
159
  this._asyncRenderCallback = () => this._onDidChangeHeight.fire();
149
- this.defaultTitle = ( localize(6797, "Thinking"));
150
- this.workingTitle = ( localize(6798, "Working"));
160
+ this.defaultTitle = ( localize(6852, "Thinking"));
161
+ this.workingTitle = ( localize(6853, "Working"));
151
162
  this._markdownResult = this._register(( new MutableDisposable()));
152
163
  this.fixedScrollingMode = false;
153
164
  this.autoScrollEnabled = true;
@@ -171,6 +182,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
171
182
  this.lastKnownContentHeight = 0;
172
183
  this.lastKnownScrollTop = 0;
173
184
  this._titleDetailRendered = this._register(( new MutableDisposable()));
185
+ this.diffStatsByPartId = ( new Map());
186
+ this._aggregatedDiff = {
187
+ added: 0,
188
+ removed: 0
189
+ };
174
190
  this.id = content.id;
175
191
  this.content = content;
176
192
  this.allThinkingParts.push(content);
@@ -185,7 +201,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
185
201
  this.appendedItemCount++;
186
202
  }
187
203
  if (this.configurationService.getValue(AccessibilityWorkbenchSettingId.VerboseChatProgressUpdates)) {
188
- alert(( localize(6799, "Thinking")));
204
+ alert(( localize(6854, "Thinking")));
189
205
  }
190
206
  if (configuredMode === ThinkingDisplayMode.Collapsed) {
191
207
  this.setExpanded(false);
@@ -483,7 +499,25 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
483
499
  restSpan.textContent = rest;
484
500
  labelElement.appendChild(restSpan);
485
501
  }
486
- this._collapseButton.element.ariaLabel = title;
502
+ if (this.diffStatsByPartId.size > 0) {
503
+ const {
504
+ added,
505
+ removed
506
+ } = this._aggregatedDiff;
507
+ if (added > 0 || removed > 0) {
508
+ const diffContainer = $("span.chat-thinking-title-diff");
509
+ diffContainer.appendChild($("span.label-added", {}, `+${added}`));
510
+ diffContainer.appendChild($("span.label-removed", {}, `-${removed}`));
511
+ labelElement.appendChild(diffContainer);
512
+ const insertionsFragment = added === 1 ? ( localize(6855, "1 insertion")) : ( localize(6856, "{0} insertions", added));
513
+ const deletionsFragment = removed === 1 ? ( localize(6857, "1 deletion")) : ( localize(6858, "{0} deletions", removed));
514
+ this._collapseButton.element.ariaLabel = ( localize(6859, "{0}, {1}, {2}", title, insertionsFragment, deletionsFragment));
515
+ } else {
516
+ this._collapseButton.element.ariaLabel = title;
517
+ }
518
+ } else {
519
+ this._collapseButton.element.ariaLabel = title;
520
+ }
487
521
  }
488
522
  setDropdownClickable(clickable) {
489
523
  if (this._collapseButton) {
@@ -640,6 +674,22 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
640
674
  this.setFinalizedTitle(existingTitle);
641
675
  return;
642
676
  }
677
+ const allSerialized = this.toolInvocations.length > 0 && this.toolInvocations.every(t => t.kind === "toolInvocationSerialized");
678
+ if (allSerialized) {
679
+ if (!LocalChatSessionUri.isLocalSession(this.element.sessionResource)) {
680
+ const lastToolInvocation = this.toolInvocations[this.toolInvocations.length - 1];
681
+ if (lastToolInvocation) {
682
+ const cachedTitle = this.getCachedTitle(lastToolInvocation.toolCallId);
683
+ if (cachedTitle) {
684
+ this.currentTitle = cachedTitle;
685
+ this.content.generatedTitle = cachedTitle;
686
+ this.setGeneratedTitleOnAllParts(cachedTitle);
687
+ this.setFinalizedTitle(cachedTitle);
688
+ return;
689
+ }
690
+ }
691
+ }
692
+ }
643
693
  if (this.toolInvocationCount === 1 && this.hookCount === 0 && this.currentThinkingValue.trim() === "") {
644
694
  if (!this.singleItemInfo) {
645
695
  const lazyItem = this.lazyItems.find(item => item.kind === "tool" && item.originalParent);
@@ -690,6 +740,52 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
690
740
  thinkingPart.generatedTitle = title;
691
741
  }
692
742
  }
743
+ loadTitleCache() {
744
+ return this.storageService.getObject(TITLE_CACHE_STORAGE_KEY, StorageScope.PROFILE) ?? {};
745
+ }
746
+ saveTitleCache(cache) {
747
+ if (( Object.keys(cache)).length === 0) {
748
+ this.storageService.remove(TITLE_CACHE_STORAGE_KEY, StorageScope.PROFILE);
749
+ } else {
750
+ this.storageService.store(
751
+ TITLE_CACHE_STORAGE_KEY,
752
+ JSON.stringify(cache),
753
+ StorageScope.PROFILE,
754
+ StorageTarget.MACHINE
755
+ );
756
+ }
757
+ }
758
+ getTitleCacheKey(toolCallId) {
759
+ return `${chatSessionResourceToId(this.element.sessionResource)}:${toolCallId}`;
760
+ }
761
+ getCachedTitle(toolCallId) {
762
+ const entry = this.loadTitleCache()[this.getTitleCacheKey(toolCallId)];
763
+ if (!entry || (Date.now() - entry.storedAt) > TITLE_CACHE_TTL_MS) {
764
+ return undefined;
765
+ }
766
+ return entry.title;
767
+ }
768
+ setCachedTitle(toolCallId, title) {
769
+ const cache = this.loadTitleCache();
770
+ const now = Date.now();
771
+ for (const key of ( Object.keys(cache))) {
772
+ if ((now - cache[key].storedAt) > TITLE_CACHE_TTL_MS) {
773
+ delete cache[key];
774
+ }
775
+ }
776
+ cache[this.getTitleCacheKey(toolCallId)] = {
777
+ title,
778
+ storedAt: now
779
+ };
780
+ const keys = ( Object.keys(cache));
781
+ if (keys.length > TITLE_CACHE_MAX_ENTRIES) {
782
+ const sorted = keys.sort((a, b) => cache[a].storedAt - cache[b].storedAt);
783
+ for (let i = 0; i < sorted.length - TITLE_CACHE_MAX_ENTRIES; i++) {
784
+ delete cache[sorted[i]];
785
+ }
786
+ }
787
+ this.saveTitleCache(cache);
788
+ }
693
789
  async generateTitleViaLLM() {
694
790
  const cts = ( new CancellationTokenSource());
695
791
  const timeout = setTimeout(() => cts.cancel(), 5000);
@@ -840,6 +936,12 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
840
936
  this.setFinalizedTitle(generatedTitle);
841
937
  this.content.generatedTitle = generatedTitle;
842
938
  this.setGeneratedTitleOnAllParts(generatedTitle);
939
+ if (!LocalChatSessionUri.isLocalSession(this.element.sessionResource)) {
940
+ const lastTool = this.toolInvocations[this.toolInvocations.length - 1];
941
+ if (lastTool) {
942
+ this.setCachedTitle(lastTool.toolCallId, generatedTitle);
943
+ }
944
+ }
843
945
  return;
844
946
  }
845
947
  } catch (error) {} finally {
@@ -874,13 +976,23 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
874
976
  this.singleItemInfo = undefined;
875
977
  return true;
876
978
  }
979
+ updateAggregatedDiff() {
980
+ let totalAdded = 0;
981
+ let totalRemoved = 0;
982
+ for (const stats of ( this.diffStatsByPartId.values())) {
983
+ totalAdded += stats.added;
984
+ totalRemoved += stats.removed;
985
+ }
986
+ this._aggregatedDiff = {
987
+ added: totalAdded,
988
+ removed: totalRemoved
989
+ };
990
+ if (this.streamingCompleted || this.element.isComplete) {
991
+ this.setFinalizedTitle(this.currentTitle);
992
+ }
993
+ }
877
994
  setFallbackTitle() {
878
- const finalLabel = this.appendedItemCount > 0 ? ( localize(
879
- 6800,
880
- "Finished with {0} step{1}",
881
- this.appendedItemCount,
882
- this.appendedItemCount === 1 ? "" : "s"
883
- )) : ( localize(6801, "Finished Working"));
995
+ const finalLabel = this.appendedItemCount > 0 ? this.appendedItemCount === 1 ? ( localize(6860, "Finished with 1 step")) : ( localize(6861, "Finished with {0} steps", this.appendedItemCount)) : ( localize(6862, "Finished Working"));
884
996
  this.currentTitle = finalLabel;
885
997
  if (this.wrapper) {
886
998
  this.wrapper.classList.remove("chat-thinking-streaming");
@@ -893,10 +1005,22 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
893
1005
  }
894
1006
  this.updateDropdownClickability();
895
1007
  }
896
- appendItem(factory, toolInvocationId, toolInvocationOrMarkdown, originalParent) {
1008
+ appendItem(
1009
+ factory,
1010
+ toolInvocationId,
1011
+ toolInvocationOrMarkdown,
1012
+ originalParent,
1013
+ onDidChangeDiff
1014
+ ) {
897
1015
  this.processPendingRemovals();
898
1016
  this.trackToolMetadata(toolInvocationId, toolInvocationOrMarkdown);
899
1017
  this.appendedItemCount++;
1018
+ if (onDidChangeDiff && toolInvocationId) {
1019
+ this._register(onDidChangeDiff(stats => {
1020
+ this.diffStatsByPartId.set(toolInvocationId, stats);
1021
+ this.updateAggregatedDiff();
1022
+ }));
1023
+ }
900
1024
  if (this.workingSpinnerLabel) {
901
1025
  const isTerminalTool = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized") && toolInvocationOrMarkdown.toolSpecificData?.kind === "terminal";
902
1026
  const category = isTerminalTool ? WorkingMessageCategory.Terminal : WorkingMessageCategory.Tool;
@@ -1069,7 +1193,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1069
1193
  const message = typeof toolInvocationOrMarkdown.invocationMessage === "string" ? toolInvocationOrMarkdown.invocationMessage : toolInvocationOrMarkdown.invocationMessage.value;
1070
1194
  const isStreamingEditTool = toolInvocationOrMarkdown.kind === "toolInvocation" && IChatToolInvocation.isStreaming(toolInvocationOrMarkdown) && isGenericEditToolId(toolInvocationOrMarkdown.toolId);
1071
1195
  if (isStreamingEditTool) {
1072
- toolCallLabel = ( localize(6802, "Editing files"));
1196
+ toolCallLabel = ( localize(6863, "Editing files"));
1073
1197
  } else {
1074
1198
  toolCallLabel = message;
1075
1199
  }
@@ -1181,9 +1305,9 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1181
1305
  const codeblockInfo = extractCodeblockUrisFromText(toolInvocationOrMarkdown.content.value);
1182
1306
  if (codeblockInfo?.uri) {
1183
1307
  const filename = basename(codeblockInfo.uri);
1184
- toolCallLabel = ( localize(6803, "Edited {0}", filename));
1308
+ toolCallLabel = ( localize(6864, "Edited {0}", filename));
1185
1309
  } else {
1186
- toolCallLabel = ( localize(6804, "Edited file"));
1310
+ toolCallLabel = ( localize(6865, "Edited file"));
1187
1311
  }
1188
1312
  } else {
1189
1313
  toolCallLabel = toolInvocationId;
@@ -1276,6 +1400,15 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1276
1400
  this.workingSpinnerLabel.textContent = this.getRandomWorkingMessage(category);
1277
1401
  }
1278
1402
  if (item.lazy.hasValue) {
1403
+ const result = item.lazy.value;
1404
+ if (!result.domNode.parentElement) {
1405
+ this.appendItemToDOM(
1406
+ result.domNode,
1407
+ item.toolInvocationId,
1408
+ item.toolInvocationOrMarkdown,
1409
+ item.originalParent
1410
+ );
1411
+ }
1279
1412
  return;
1280
1413
  }
1281
1414
  const result = item.lazy.value;
@@ -1342,7 +1475,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1342
1475
  return;
1343
1476
  }
1344
1477
  this.lastExtractedTitle = title;
1345
- const thinkingLabel = ( localize(6805, "{0}: {1}", this.defaultTitle, title));
1478
+ const thinkingLabel = ( localize(6866, "{0}: {1}", this.defaultTitle, title));
1346
1479
  this.currentTitle = thinkingLabel;
1347
1480
  if (!this._collapseButton) {
1348
1481
  return;
@@ -1353,7 +1486,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1353
1486
  this.titleShimmerSpan = $("span.chat-thinking-title-shimmer");
1354
1487
  labelElement.appendChild(this.titleShimmerSpan);
1355
1488
  }
1356
- this.titleShimmerSpan.textContent = ( localize(6806, "{0}: ", this.defaultTitle));
1489
+ this.titleShimmerSpan.textContent = ( localize(6867, "{0}: ", this.defaultTitle));
1357
1490
  this._titleDetailRendered.clear();
1358
1491
  const result = this.chatContentMarkdownRenderer.render(( new MarkdownString(title)));
1359
1492
  result.element.classList.add("collapsible-title-content", "chat-thinking-title-detail");
@@ -1398,6 +1531,6 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1398
1531
  super.dispose();
1399
1532
  }
1400
1533
  };
1401
- ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService))], ChatThinkingContentPart));
1534
+ ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService)), ( __param(9, IStorageService))], ChatThinkingContentPart));
1402
1535
 
1403
1536
  export { ChatThinkingContentPart, buildPhrasePool, createThinkingIcon, getToolInvocationIcon };
@@ -57,7 +57,7 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
57
57
  this.domNode = $(".chat-tip-widget");
58
58
  this.domNode.tabIndex = 0;
59
59
  this.domNode.setAttribute("role", "region");
60
- this.domNode.setAttribute("aria-roledescription", ( localize(6807, "tip")));
60
+ this.domNode.setAttribute("aria-roledescription", ( localize(6868, "tip")));
61
61
  this._inChatTipContextKey = ChatContextKeys.inChatTip.bindTo(this._contextKeyService);
62
62
  this._multipleChatTipsContextKey = ChatContextKeys.multipleChatTips.bindTo(this._contextKeyService);
63
63
  const focusTracker = this._register(trackFocus(this.domNode));
@@ -119,9 +119,9 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
119
119
  }
120
120
  });
121
121
  this.domNode.appendChild(toolbarContainer);
122
- const textContent = markdownContent.element.textContent ?? ( localize(6808, "Chat tip"));
122
+ const textContent = markdownContent.element.textContent ?? ( localize(6869, "Chat tip"));
123
123
  const hasLink = /\[.*?\]\(.*?\)/.test(tip.content.value);
124
- const ariaLabel = hasLink ? ( localize(6809, "{0} Tab to reach the action.", textContent)) : textContent;
124
+ const ariaLabel = hasLink ? ( localize(6870, "{0} Tab to reach the action.", textContent)) : textContent;
125
125
  this.domNode.setAttribute("aria-label", ariaLabel);
126
126
  }
127
127
  async _handleTipAction(link, mdStr) {
@@ -146,7 +146,7 @@ registerAction2(class PreviousTipAction extends Action2 {
146
146
  constructor() {
147
147
  super({
148
148
  id: "workbench.action.chat.previousTip",
149
- title: ( localize2(6810, "Previous tip")),
149
+ title: ( localize2(6871, "Previous tip")),
150
150
  icon: Codicon.chevronLeft,
151
151
  precondition: ChatContextKeys.multipleChatTips,
152
152
  f1: false,
@@ -166,7 +166,7 @@ registerAction2(class NextTipAction extends Action2 {
166
166
  constructor() {
167
167
  super({
168
168
  id: "workbench.action.chat.nextTip",
169
- title: ( localize2(6811, "Next tip")),
169
+ title: ( localize2(6872, "Next tip")),
170
170
  icon: Codicon.chevronRight,
171
171
  precondition: ChatContextKeys.multipleChatTips,
172
172
  f1: false,
@@ -186,7 +186,7 @@ registerAction2(class DismissTipToolbarAction extends Action2 {
186
186
  constructor() {
187
187
  super({
188
188
  id: "workbench.action.chat.dismissTipToolbar",
189
- title: ( localize2(6812, "Dismiss tip")),
189
+ title: ( localize2(6873, "Dismiss tip")),
190
190
  icon: Codicon.check,
191
191
  f1: false,
192
192
  menu: [{
@@ -204,7 +204,7 @@ registerAction2(class DismissTipAction extends Action2 {
204
204
  constructor() {
205
205
  super({
206
206
  id: "workbench.action.chat.dismissTip",
207
- title: ( localize2(6813, "Dismiss this tip")),
207
+ title: ( localize2(6874, "Dismiss this tip")),
208
208
  f1: false,
209
209
  menu: [{
210
210
  id: MenuId.ChatTipContext,
@@ -221,7 +221,7 @@ registerAction2(class DisableTipsAction extends Action2 {
221
221
  constructor() {
222
222
  super({
223
223
  id: "workbench.action.chat.disableTips",
224
- title: ( localize2(6814, "Disable tips")),
224
+ title: ( localize2(6875, "Disable tips")),
225
225
  icon: Codicon.bellSlash,
226
226
  f1: false,
227
227
  menu: [{
@@ -246,7 +246,7 @@ registerAction2(class ResetDismissedTipsAction extends Action2 {
246
246
  constructor() {
247
247
  super({
248
248
  id: "workbench.action.chat.resetDismissedTips",
249
- title: ( localize2(6815, "Reset Dismissed Tips")),
249
+ title: ( localize2(6876, "Reset Dismissed Tips")),
250
250
  f1: true,
251
251
  precondition: ChatContextKeys.enabled
252
252
  });
@@ -2,11 +2,13 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
2
2
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
3
  import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
4
4
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
5
6
  import { IChatTodoListService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/chatTodoListService.service";
6
7
  export declare class ChatTodoListWidget extends Disposable {
7
8
  private readonly chatTodoListService;
8
9
  private readonly instantiationService;
9
10
  private readonly contextKeyService;
11
+ private readonly telemetryService;
10
12
  readonly domNode: HTMLElement;
11
13
  private _isExpanded;
12
14
  private _userManuallyExpanded;
@@ -19,7 +21,7 @@ export declare class ChatTodoListWidget extends Disposable {
19
21
  private _currentSessionResource;
20
22
  private _todoList;
21
23
  private readonly _inChatTodoListContextKey;
22
- constructor(chatTodoListService: IChatTodoListService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService);
24
+ constructor(chatTodoListService: IChatTodoListService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService, telemetryService: ITelemetryService);
23
25
  get height(): number;
24
26
  private hideWidget;
25
27
  private createChatTodoWidget;