@codingame/monaco-vscode-katex-common 28.4.1 → 29.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +17 -15
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +2 -2
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +3 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +158 -47
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +22 -17
  10. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  11. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -4
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +121 -14
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +8 -1
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +15 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +29 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +349 -109
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +47 -23
  19. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +6 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +104 -62
  21. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +1 -3
  22. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -11
  23. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -40
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +21 -16
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +8 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +13 -4
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +29 -50
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +261 -282
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +2 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +7 -5
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +31 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +184 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +4 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +4 -3
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +3 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +42 -34
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +14 -18
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +11 -9
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +25 -2
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +332 -114
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +7 -7
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +2 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +10 -5
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -16
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +7 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +66 -7
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +28 -3
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +272 -107
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.d.ts +18 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.js +70 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +6 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +151 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +96 -10
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +6 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +86 -10
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +7 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +5 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +8 -6
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +28 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +273 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +3 -2
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +28 -16
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +22 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +81 -32
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +20 -7
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +11 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +6 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +21 -7
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +2 -12
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +12 -12
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +0 -6
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +112 -163
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +11 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +9 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +137 -52
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +12 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +108 -38
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +9 -3
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +385 -247
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +5 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -7
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +4 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +23 -23
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +124 -17
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +4 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +24 -7
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +30 -11
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +84 -0
  127. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +31 -0
  128. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +170 -0
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +47 -0
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +95 -0
  131. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +4 -1
  132. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  133. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -1
  134. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +4 -3
  135. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -0
  136. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +38 -6
  137. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +1 -0
  138. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +31 -0
  139. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +12 -3
  140. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +130 -23
  141. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +23 -0
  142. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +41 -0
  143. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  144. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +55 -3
  146. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +50 -39
  148. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  152. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +0 -35
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +0 -440
@@ -53,10 +53,10 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
53
53
  switch (chatEntitlementService.entitlement) {
54
54
  case ChatEntitlement.Pro:
55
55
  case ChatEntitlement.ProPlus:
56
- primaryButtonLabel = ( localize(6564, "Manage Paid Premium Requests"));
56
+ primaryButtonLabel = ( localize(6751, "Manage Paid Premium Requests"));
57
57
  break;
58
58
  case ChatEntitlement.Free:
59
- primaryButtonLabel = ( localize(6565, "Upgrade to GitHub Copilot Pro"));
59
+ primaryButtonLabel = ( localize(6752, "Upgrade to GitHub Copilot Pro"));
60
60
  break;
61
61
  }
62
62
  let hasAddedWaitWarning = false;
@@ -65,7 +65,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
65
65
  return;
66
66
  }
67
67
  hasAddedWaitWarning = true;
68
- append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(6566, "Changes may take a few minutes to take effect."))));
68
+ append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(6753, "Changes may take a few minutes to take effect."))));
69
69
  };
70
70
  let hasAddedRetryButton = false;
71
71
  const addRetryButtonIfNeeded = () => {
@@ -78,7 +78,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
78
78
  buttonForeground: asCssVariable(textLinkForeground)
79
79
  })));
80
80
  retryButton.element.classList.add("chat-quota-error-secondary-button");
81
- retryButton.label = ( localize(6567, "Click to Retry"));
81
+ retryButton.label = ( localize(6754, "Click to Retry"));
82
82
  this._register(retryButton.onDidClick(() => {
83
83
  const widget = chatWidgetService.getWidgetBySessionResource(element.sessionResource);
84
84
  if (!widget) {
@@ -24,6 +24,7 @@ export interface IChatReferenceListItem extends IChatContentReference {
24
24
  description?: string;
25
25
  state?: ModifiedFileEntryState;
26
26
  excluded?: boolean;
27
+ showModifiedState?: boolean;
27
28
  }
28
29
  export type IChatCollapsibleListItem = IChatReferenceListItem | IChatWarningMessage;
29
30
  export declare class ChatCollapsibleListContentPart extends ChatCollapsibleContentPart {
@@ -57,7 +57,7 @@ let ChatCollapsibleListContentPart = class ChatCollapsibleListContentPart extend
57
57
  hoverService,
58
58
  configurationService
59
59
  ) {
60
- super(labelOverride ?? (data.length > 1 ? ( localize(6568, "Used {0} references", data.length)) : ( localize(6569, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
60
+ super(labelOverride ?? (data.length > 1 ? ( localize(6755, "Used {0} references", data.length)) : ( localize(6756, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
61
61
  this.data = data;
62
62
  this.contentReferencesListPool = contentReferencesListPool;
63
63
  this.openerService = openerService;
@@ -214,7 +214,7 @@ let CollapsibleListPool = class CollapsibleListPool extends Disposable {
214
214
  return basename(reference.uri.path);
215
215
  }
216
216
  },
217
- getWidgetAriaLabel: () => ( localize(6570, "Collapsible Chat References List"))
217
+ getWidgetAriaLabel: () => ( localize(6757, "Collapsible Chat References List"))
218
218
  },
219
219
  dnd: {
220
220
  getDragURI: element => getResourceForElement(element)?.toString() ?? null,
@@ -402,7 +402,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
402
402
  name: settingId
403
403
  }, {
404
404
  icon: Codicon.settingsGear,
405
- title: ( localize(6571, "Open setting '{0}'", settingId)),
405
+ title: ( localize(6758, "Open setting '{0}'", settingId)),
406
406
  strikethrough: data.excluded,
407
407
  extraClasses
408
408
  });
@@ -438,7 +438,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
438
438
  }
439
439
  }
440
440
  if (data.state !== undefined) {
441
- if (templateData.actionBarContainer) {
441
+ if (templateData.actionBarContainer || data.showModifiedState) {
442
442
  const diffMeta = data?.options?.diffMeta;
443
443
  if (diffMeta) {
444
444
  if (!templateData.fileDiffsContainer || !templateData.addedSpan || !templateData.removedSpan) {
@@ -447,7 +447,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
447
447
  templateData.addedSpan.textContent = `+${diffMeta.added}`;
448
448
  templateData.removedSpan.textContent = `-${diffMeta.removed}`;
449
449
  templateData.fileDiffsContainer.setAttribute("aria-label", ( localize(
450
- 6572,
450
+ 6759,
451
451
  "{0} lines added, {1} lines removed",
452
452
  diffMeta.added,
453
453
  diffMeta.removed
@@ -528,7 +528,7 @@ registerAction2(class AddToChatAction extends Action2 {
528
528
  super({
529
529
  id: AddToChatAction.id,
530
530
  title: {
531
- ...( localize2(6573, "Add File to Chat"))
531
+ ...( localize2(6760, "Add File to Chat"))
532
532
  },
533
533
  f1: false,
534
534
  menu: [{
@@ -558,7 +558,7 @@ registerAction2(class OpenChatReferenceLinkAction extends Action2 {
558
558
  super({
559
559
  id: OpenChatReferenceLinkAction.id,
560
560
  title: {
561
- ...( localize2(6574, "Copy Link"))
561
+ ...( localize2(6761, "Copy Link"))
562
562
  },
563
563
  f1: false,
564
564
  menu: [{
@@ -17,6 +17,8 @@ export declare class ChatResourceGroupWidget extends Disposable {
17
17
  private readonly _contextMenuService;
18
18
  private readonly _fileService;
19
19
  readonly domNode: HTMLElement;
20
+ private readonly _onDidChangeHeight;
21
+ readonly onDidChangeHeight: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
20
22
  constructor(parts: IChatCollapsibleIODataPart[], _instantiationService: IInstantiationService, _contextMenuService: IContextMenuService, _fileService: IFileService);
21
23
  private _fillInResourceGroup;
22
24
  }
@@ -4,6 +4,7 @@ import { h } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { disposableTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
5
5
  import { decodeBase64 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
6
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
7
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
7
8
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
9
  import { basename, joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
9
10
  import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
@@ -31,6 +32,8 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
31
32
  this._instantiationService = _instantiationService;
32
33
  this._contextMenuService = _contextMenuService;
33
34
  this._fileService = _fileService;
35
+ this._onDidChangeHeight = this._register(( new Emitter()));
36
+ this.onDidChangeHeight = this._onDidChangeHeight.event;
34
37
  const el = h(".chat-collapsible-io-resource-group", [
35
38
  h(".chat-collapsible-io-resource-items@items"),
36
39
  h(".chat-collapsible-io-resource-actions@actions")
@@ -135,6 +138,7 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
135
138
  }
136
139
  };
137
140
  itemsContainer.appendChild(attachments.domNode);
141
+ this._onDidChangeHeight.fire();
138
142
  const toolbar = this._register(this._instantiationService.createInstance(
139
143
  MenuWorkbenchToolBar,
140
144
  actionsContainer,
@@ -171,6 +175,7 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
171
175
  } catch {}
172
176
  }
173
177
  attachments.updateVariables(entries);
178
+ this._onDidChangeHeight.fire();
174
179
  }, IMAGE_DECODE_DELAY_MS));
175
180
  }
176
181
  }
@@ -183,7 +188,7 @@ class SaveResourcesAction extends Action2 {
183
188
  constructor() {
184
189
  super({
185
190
  id: SaveResourcesAction.ID,
186
- title: ( localize2(6575, "Save...")),
191
+ title: ( localize2(6762, "Save...")),
187
192
  icon: Codicon.cloudDownload,
188
193
  menu: [{
189
194
  id: MenuId.ChatToolOutputResourceToolbar,
@@ -213,14 +218,14 @@ class SaveResourcesAction extends Action2 {
213
218
  await fileService.writeFile(target, contents.value);
214
219
  }
215
220
  } catch (e) {
216
- notificationService.error(( localize(6576, "Failed to save {0}: {1}", basename(part.uri), e)));
221
+ notificationService.error(( localize(6763, "Failed to save {0}: {1}", basename(part.uri), e)));
217
222
  }
218
223
  };
219
224
  const withProgress = async (thenReveal, todo) => {
220
225
  await progressService.withProgress({
221
226
  location: ProgressLocation.Notification,
222
227
  delay: 5_000,
223
- title: ( localize(6577, "Saving resources..."))
228
+ title: ( localize(6764, "Saving resources..."))
224
229
  }, async report => {
225
230
  for (const task of todo) {
226
231
  await task();
@@ -233,7 +238,7 @@ class SaveResourcesAction extends Action2 {
233
238
  if (workspaceContextService.isInsideWorkspace(thenReveal)) {
234
239
  commandService.executeCommand(REVEAL_IN_EXPLORER_COMMAND_ID, thenReveal);
235
240
  } else {
236
- notificationService.info(( localize(6578, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
241
+ notificationService.info(( localize(6765, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
237
242
  }
238
243
  };
239
244
  if (context.parts.length === 1) {
@@ -245,7 +250,7 @@ class SaveResourcesAction extends Action2 {
245
250
  await withProgress(uri, [() => savePart(part, false, uri)]);
246
251
  } else {
247
252
  const uris = await fileDialog.showOpenDialog({
248
- title: ( localize(6579, "Pick folder to save resources")),
253
+ title: ( localize(6766, "Pick folder to save resources")),
249
254
  canSelectFiles: false,
250
255
  canSelectFolders: true,
251
256
  canSelectMany: false,
@@ -50,7 +50,7 @@ export declare class ChatSubagentContentPart extends ChatCollapsibleContentPart
50
50
  private autoExpandedForConfirmation;
51
51
  private titleShimmerSpan;
52
52
  private titleDetailContainer;
53
- private titleDetailRendered;
53
+ private readonly _titleDetailRendered;
54
54
  /**
55
55
  * Check if a tool invocation is the parent subagent tool (the tool that spawns a subagent).
56
56
  * A parent subagent tool has subagent toolSpecificData but no subAgentInvocationId.
@@ -30,7 +30,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
30
30
  return toolInvocation.toolSpecificData?.kind === "subagent" && !toolInvocation.subAgentInvocationId;
31
31
  }
32
32
  static extractSubagentInfo(toolInvocation) {
33
- const defaultDescription = ( localize(6580, "Running subagent..."));
33
+ const defaultDescription = ( localize(6767, "Running subagent..."));
34
34
  if (!ChatSubagentContentPart_1.isParentSubagentTool(toolInvocation)) {
35
35
  return {
36
36
  description: defaultDescription,
@@ -85,7 +85,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
85
85
  prompt,
86
86
  modelName
87
87
  } = ChatSubagentContentPart_1.extractSubagentInfo(toolInvocation);
88
- const prefix = agentName || ( localize(6581, "Subagent"));
88
+ const prefix = agentName || ( localize(6768, "Subagent"));
89
89
  const initialTitle = `${prefix}: ${description}`;
90
90
  super(initialTitle, context, undefined, hoverService, configurationService);
91
91
  this.subAgentInvocationId = subAgentInvocationId;
@@ -107,6 +107,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
107
107
  this.toolsWaitingForConfirmation = 0;
108
108
  this.userManuallyExpanded = false;
109
109
  this.autoExpandedForConfirmation = false;
110
+ this._titleDetailRendered = this._register(( new MutableDisposable()));
110
111
  this.description = description;
111
112
  this.agentName = agentName;
112
113
  this.prompt = prompt;
@@ -190,7 +191,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
190
191
  return;
191
192
  }
192
193
  const lines = this.prompt.split("\n");
193
- const rawFirstLine = lines[0] || ( localize(6582, "Prompt"));
194
+ const rawFirstLine = lines[0] || ( localize(6769, "Prompt"));
194
195
  const restOfLines = lines.slice(1).join("\n").trim();
195
196
  const titleContent = rcut(rawFirstLine, MAX_TITLE_LENGTH);
196
197
  const wasTruncated = rawFirstLine.length > MAX_TITLE_LENGTH;
@@ -238,7 +239,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
238
239
  }
239
240
  }
240
241
  updateTitle() {
241
- const prefix = this.agentName || ( localize(6581, "Subagent"));
242
+ const prefix = this.agentName || ( localize(6768, "Subagent"));
242
243
  const shimmerText = `${prefix}: ${this.description}`;
243
244
  const toolCallText = this.currentRunningToolMessage && this.isActive ? ` \u2014 ${this.currentRunningToolMessage}` : ``;
244
245
  if (!this._collapseButton) {
@@ -248,10 +249,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
248
249
  if (!this.isActive) {
249
250
  labelElement.textContent = "";
250
251
  this.titleShimmerSpan = undefined;
251
- if (this.titleDetailRendered) {
252
- this.titleDetailRendered.dispose();
253
- this.titleDetailRendered = undefined;
254
- }
252
+ this._titleDetailRendered.clear();
255
253
  this.titleDetailContainer = undefined;
256
254
  const prefixSpan = $("span");
257
255
  prefixSpan.textContent = `${prefix}:`;
@@ -269,10 +267,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
269
267
  labelElement.appendChild(this.titleShimmerSpan);
270
268
  }
271
269
  this.titleShimmerSpan.textContent = shimmerText;
272
- if (this.titleDetailRendered) {
273
- this.titleDetailRendered.dispose();
274
- this.titleDetailRendered = undefined;
275
- }
270
+ this._titleDetailRendered.clear();
276
271
  if (!toolCallText) {
277
272
  if (this.titleDetailContainer) {
278
273
  this.titleDetailContainer.remove();
@@ -287,7 +282,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
287
282
  this.chatMarkdownAnchorService,
288
283
  this._store
289
284
  );
290
- this.titleDetailRendered = result;
285
+ this._titleDetailRendered.value = result;
291
286
  if (this.titleDetailContainer) {
292
287
  this.titleDetailContainer.replaceWith(result.element);
293
288
  } else {
@@ -304,7 +299,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
304
299
  return;
305
300
  }
306
301
  this._hoverDisposable.value = this.hoverService.setupDelayedHover(this._collapseButton.element, {
307
- content: ( localize(6583, "Model: {0}", this.modelName))
302
+ content: ( localize(6770, "Model: {0}", this.modelName))
308
303
  });
309
304
  }
310
305
  trackToolState(toolInvocation) {
@@ -456,7 +451,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
456
451
  }
457
452
  }
458
453
  appendHookItem(factory, hookPart) {
459
- const hookMessage = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(6584, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(6585, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(6586, "Warning for {0}", hookPart.toolDisplayName)) : ( localize(6587, "Hook warning")));
454
+ const hookMessage = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(6771, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(6772, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(6773, "Warning for {0}", hookPart.toolDisplayName)) : ( localize(6774, "Hook warning")));
460
455
  this.currentRunningToolMessage = hookMessage;
461
456
  this.updateTitle();
462
457
  if (this.isExpanded() || this.hasExpandedOnce) {
@@ -539,7 +534,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
539
534
  return;
540
535
  }
541
536
  const itemWrapper = $(".chat-thinking-tool-wrapper");
542
- const icon = getToolInvocationIcon(toolInvocation.toolId);
537
+ const icon = getToolInvocationIcon(toolInvocation.toolId, toolInvocation.icon);
543
538
  const iconElement = createThinkingIcon(icon);
544
539
  itemWrapper.appendChild(content);
545
540
  if (toolInvocation.kind === "toolInvocation") {
@@ -1,5 +1,7 @@
1
1
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
2
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
4
+ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
3
5
  import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
4
6
  import { IChatMode } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes";
5
7
  import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service";
@@ -7,10 +9,13 @@ import { IHandOff } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contr
7
9
  export interface INextPromptSelection {
8
10
  readonly handoff: IHandOff;
9
11
  readonly agentId?: string;
12
+ readonly withAutopilot?: boolean;
10
13
  }
11
14
  export declare class ChatSuggestNextWidget extends Disposable {
15
+ private readonly configurationService;
12
16
  private readonly contextMenuService;
13
17
  private readonly chatSessionsService;
18
+ private readonly contextKeyService;
14
19
  readonly domNode: HTMLElement;
15
20
  private readonly _onDidChangeHeight;
16
21
  readonly onDidChangeHeight: Event<void>;
@@ -20,12 +25,13 @@ export declare class ChatSuggestNextWidget extends Disposable {
20
25
  private titleElement;
21
26
  private _currentMode;
22
27
  private buttonDisposables;
23
- constructor(contextMenuService: IContextMenuService, chatSessionsService: IChatSessionsService);
28
+ constructor(configurationService: IConfigurationService, contextMenuService: IContextMenuService, chatSessionsService: IChatSessionsService, contextKeyService: IContextKeyService);
24
29
  get height(): number;
25
30
  getCurrentMode(): IChatMode | undefined;
26
31
  private createSuggestNextWidget;
27
32
  render(mode: IChatMode): void;
28
33
  private createPromptButton;
34
+ private createAutopilotButton;
29
35
  hide(): void;
30
36
  dispose(): void;
31
37
  }
@@ -6,15 +6,26 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
6
6
  import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
7
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
8
8
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
10
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
9
11
  import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
12
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
13
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
10
14
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
11
15
  import { getAgentSessionProvider, getAgentCanContinueIn, getAgentSessionProviderIcon, getAgentSessionProviderName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessions';
12
16
 
13
17
  let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
14
- constructor(contextMenuService, chatSessionsService) {
18
+ constructor(
19
+ configurationService,
20
+ contextMenuService,
21
+ chatSessionsService,
22
+ contextKeyService
23
+ ) {
15
24
  super();
25
+ this.configurationService = configurationService;
16
26
  this.contextMenuService = contextMenuService;
17
27
  this.chatSessionsService = chatSessionsService;
28
+ this.contextKeyService = contextKeyService;
18
29
  this._onDidChangeHeight = this._register(( new Emitter()));
19
30
  this.onDidChangeHeight = this._onDidChangeHeight.event;
20
31
  this._onDidSelectPrompt = this._register(( new Emitter()));
@@ -42,8 +53,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
42
53
  return;
43
54
  }
44
55
  this._currentMode = mode;
45
- const modeName = mode.name.get() || mode.label.get() || ( localize(6588, "current mode"));
46
- this.titleElement.textContent = ( localize(6589, "Proceed from {0}", modeName));
56
+ const modeName = mode.name.get() || mode.label.get() || ( localize(6775, "current mode"));
57
+ this.titleElement.textContent = ( localize(6776, "Proceed from {0}", modeName));
47
58
  const childrenToRemove = [];
48
59
  for (let i = 1; i < this.promptsContainer.children.length; i++) {
49
60
  childrenToRemove.push(this.promptsContainer.children[i]);
@@ -56,9 +67,15 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
56
67
  }
57
68
  this.promptsContainer.removeChild(child);
58
69
  }
70
+ const isAutopilotEnabled = this.configurationService.getValue(ChatConfiguration.AutopilotEnabled) !== false;
71
+ const firstAutoSendHandoff = isAutopilotEnabled ? handoffs.find(h => h.send) : undefined;
59
72
  for (const handoff of handoffs) {
60
73
  const promptButton = this.createPromptButton(handoff);
61
74
  this.promptsContainer.appendChild(promptButton);
75
+ if (handoff === firstAutoSendHandoff) {
76
+ const autopilotButton = this.createAutopilotButton(handoff);
77
+ this.promptsContainer.appendChild(autopilotButton);
78
+ }
62
79
  }
63
80
  this.domNode.style.display = "flex";
64
81
  this._onDidChangeHeight.fire();
@@ -73,15 +90,19 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
73
90
  const button = $(".chat-welcome-view-suggested-prompt");
74
91
  button.setAttribute("tabindex", "0");
75
92
  button.setAttribute("role", "button");
76
- button.setAttribute("aria-label", ( localize(6590, "{0}", handoff.label)));
93
+ button.setAttribute("aria-label", ( localize(6777, "{0}", handoff.label)));
77
94
  const titleElement = append(button, $(".chat-welcome-view-suggested-prompt-title"));
78
95
  titleElement.textContent = handoff.label;
79
96
  const showContinueOn = handoff.showContinueOn ?? true;
97
+ const currentSessionType = this.contextKeyService.getContextKeyValue(ChatContextKeys.chatSessionType.key);
80
98
  const contributions = this.chatSessionsService.getAllChatSessionContributions();
81
99
  const availableContributions = contributions.filter(c => {
82
100
  if (!c.canDelegate) {
83
101
  return false;
84
102
  }
103
+ if (c.type === currentSessionType) {
104
+ return false;
105
+ }
85
106
  const provider = getAgentSessionProvider(c.type);
86
107
  return provider !== undefined && getAgentCanContinueIn(provider);
87
108
  });
@@ -90,7 +111,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
90
111
  const dropdownContainer = append(button, $(".chat-suggest-next-dropdown"));
91
112
  dropdownContainer.setAttribute("tabindex", "0");
92
113
  dropdownContainer.setAttribute("role", "button");
93
- dropdownContainer.setAttribute("aria-label", ( localize(6591, "More options for {0}", handoff.label)));
114
+ dropdownContainer.setAttribute("aria-label", ( localize(6778, "More options for {0}", handoff.label)));
94
115
  dropdownContainer.setAttribute("aria-haspopup", "true");
95
116
  const separator = append(dropdownContainer, $(".chat-suggest-next-separator"));
96
117
  separator.setAttribute("aria-hidden", "true");
@@ -105,7 +126,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
105
126
  const name = getAgentSessionProviderName(provider);
106
127
  return (new Action(
107
128
  contrib.type,
108
- localize(6592, "Continue in {0}", name),
129
+ localize(6779, "Continue in {0}", name),
109
130
  ThemeIcon.isThemeIcon(icon) ? ThemeIcon.asClassName(icon) : undefined,
110
131
  true,
111
132
  () => {
@@ -168,6 +189,44 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
168
189
  this.buttonDisposables.set(button, disposables);
169
190
  return button;
170
191
  }
192
+ createAutopilotButton(handoff) {
193
+ const disposables = ( new DisposableStore());
194
+ const handoffLabel = handoff.label;
195
+ const getCurrentHandoff = () => {
196
+ const currentHandoffs = this._currentMode?.handOffs?.get();
197
+ return currentHandoffs?.find(h => h.label === handoffLabel) ?? handoff;
198
+ };
199
+ const label = ( localize(6780, "Start with Autopilot"));
200
+ const button = $(".chat-welcome-view-suggested-prompt");
201
+ button.setAttribute("tabindex", "0");
202
+ button.setAttribute("role", "button");
203
+ button.setAttribute("aria-label", label);
204
+ const titleElement = append(button, $(".chat-welcome-view-suggested-prompt-title"));
205
+ titleElement.textContent = label;
206
+ disposables.add(addDisposableListener(button, "click", () => {
207
+ const currentHandoff = getCurrentHandoff();
208
+ if (currentHandoff) {
209
+ this._onDidSelectPrompt.fire({
210
+ handoff: currentHandoff,
211
+ withAutopilot: true
212
+ });
213
+ }
214
+ }));
215
+ disposables.add(addDisposableListener(button, "keydown", e => {
216
+ if (e.key === "Enter" || e.key === " ") {
217
+ e.preventDefault();
218
+ const currentHandoff = getCurrentHandoff();
219
+ if (currentHandoff) {
220
+ this._onDidSelectPrompt.fire({
221
+ handoff: currentHandoff,
222
+ withAutopilot: true
223
+ });
224
+ }
225
+ }
226
+ }));
227
+ this.buttonDisposables.set(button, disposables);
228
+ return button;
229
+ }
171
230
  hide() {
172
231
  if (this.domNode.style.display !== "none") {
173
232
  this._currentMode = undefined;
@@ -183,6 +242,6 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
183
242
  super.dispose();
184
243
  }
185
244
  };
186
- ChatSuggestNextWidget = ( __decorate([( __param(0, IContextMenuService)), ( __param(1, IChatSessionsService))], ChatSuggestNextWidget));
245
+ ChatSuggestNextWidget = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IContextMenuService)), ( __param(2, IChatSessionsService)), ( __param(3, IContextKeyService))], ChatSuggestNextWidget));
187
246
 
188
247
  export { ChatSuggestNextWidget };
@@ -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(6593, "Making changes was aborted.")) : ( localize(6594, "Made changes."))
42
+ !element.isComplete ? "" : element.isCanceled ? ( localize(6781, "Making changes was aborted.")) : ( localize(6782, "Made changes."))
43
43
  );
44
44
  } else {
45
45
  this.domNode = $("div");
@@ -11,8 +11,14 @@ import { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
11
11
  import { IChatMarkdownAnchorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service";
12
12
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
13
13
  import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
14
- export declare function getToolInvocationIcon(toolId: string): ThemeIcon;
14
+ export declare function getToolInvocationIcon(toolId: string, registeredIcon?: ThemeIcon): ThemeIcon;
15
15
  export declare function createThinkingIcon(icon: ThemeIcon): HTMLElement;
16
+ /**
17
+ * Builds a phrase pool from defaults and user-configured custom phrases.
18
+ * In 'replace' mode, only custom phrases are used; in 'append' mode (default),
19
+ * custom phrases are added to the defaults.
20
+ */
21
+ export declare function buildPhrasePool(defaults: string[], configurationService: IConfigurationService): string[];
16
22
  export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart implements IChatContentPart {
17
23
  private readonly chatContentMarkdownRenderer;
18
24
  private streamingCompleted;
@@ -20,16 +26,19 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
20
26
  private readonly configurationService;
21
27
  private readonly chatMarkdownAnchorService;
22
28
  private readonly languageModelsService;
29
+ private static _codeBlockRendererSync;
23
30
  readonly codeblocks: undefined;
24
31
  readonly codeblocksPartId: undefined;
25
32
  private readonly _onDidChangeHeight;
33
+ private readonly _asyncRenderCallback;
26
34
  private id;
27
35
  private content;
28
36
  private currentThinkingValue;
29
37
  private currentTitle;
30
38
  private defaultTitle;
39
+ private readonly workingTitle;
31
40
  private textContainer;
32
- private markdownResult;
41
+ private readonly _markdownResult;
33
42
  private wrapper;
34
43
  private fixedScrollingMode;
35
44
  private autoScrollEnabled;
@@ -49,20 +58,27 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
49
58
  private workingSpinnerLabel;
50
59
  private availableMessagesByCategory;
51
60
  private readonly toolWrappersByCallId;
61
+ private readonly toolIconsByCallId;
62
+ private readonly toolLabelsByCallId;
52
63
  private readonly toolDisposables;
64
+ private readonly ownedToolParts;
53
65
  private pendingRemovals;
54
66
  private pendingRemovalFlushDisposable;
55
67
  private pendingScrollDisposable;
56
68
  private mutationObserverDisposable;
57
69
  private isUpdatingDimensions;
70
+ private lastKnownContentHeight;
71
+ private lastKnownScrollTop;
58
72
  private titleShimmerSpan;
59
73
  private titleDetailContainer;
60
- private titleDetailRendered;
74
+ private readonly _externalResourceWidget;
75
+ private readonly _titleDetailRendered;
61
76
  private getRandomWorkingMessage;
62
77
  constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService);
63
78
  protected shouldInitEarly(): boolean;
64
79
  protected initContent(): HTMLElement;
65
80
  private handleScroll;
81
+ private updateFadeClasses;
66
82
  private syncDimensionsAndScheduleScroll;
67
83
  private updateScrollDimensions;
68
84
  private scrollToBottom;
@@ -80,6 +96,13 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
80
96
  collapseContent(): void;
81
97
  updateThinking(content: IChatThinkingPart): void;
82
98
  getIsActive(): boolean;
99
+ /**
100
+ * Returns true when this thinking part has no meaningful content to display:
101
+ * no tool invocations, no lazy items, no hooks, and no thinking text.
102
+ * This happens when a tool is removed from thinking (e.g. due to confirmation)
103
+ * and the thinking part was only created to hold that tool.
104
+ */
105
+ isEffectivelyEmpty(): boolean;
83
106
  markAsInactive(): void;
84
107
  finalizeTitleIfDefault(): void;
85
108
  private setGeneratedTitleOnAllParts;
@@ -95,6 +118,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
95
118
  domNode: HTMLElement;
96
119
  disposable?: IDisposable;
97
120
  }, toolInvocationId?: string, toolInvocationOrMarkdown?: IChatToolInvocation | IChatToolInvocationSerialized | IChatMarkdownContent, originalParent?: HTMLElement): void;
121
+ removeMaterializedItem(toolCallId: string): void;
98
122
  /**
99
123
  * removes/re-establishes a lazy item from the thinking container
100
124
  * this is needed so we can check if there are confirmations still needed
@@ -104,6 +128,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
104
128
  private schedulePendingRemovalsFlush;
105
129
  private removeStreamingToolEntry;
106
130
  private trackToolMetadata;
131
+ private updateExternalResourceParts;
107
132
  private appendItemToDOM;
108
133
  private materializeLazyItem;
109
134
  setupThinkingContainer(content: IChatThinkingPart): void;