@codingame/monaco-vscode-katex-common 34.1.3 → 35.0.1

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 (244) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/browser/animationSync.d.ts +36 -0
  3. package/vscode/src/vs/base/browser/animationSync.js +23 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +23 -2
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +3 -2
  6. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +5 -5
  7. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.d.ts +32 -0
  8. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.js +33 -0
  9. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAnnotations.d.ts +90 -0
  10. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAttachments.d.ts +30 -0
  11. package/vscode/src/vs/platform/agentHost/common/meta/agentToolCallMeta.d.ts +65 -0
  12. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +16 -5
  13. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +3 -2
  14. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-resource-watch/reducer.d.ts +21 -0
  15. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +8 -0
  16. package/vscode/src/vs/platform/agentHost/common/state/sessionReducers.d.ts +9 -0
  17. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +2 -2
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +29 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +105 -28
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +15 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +74 -44
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +2 -2
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +98 -24
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +8 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +31 -4
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +45 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +163 -37
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.d.ts +47 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.js +172 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +3 -1
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +7 -4
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionReferenceAttachment.d.ts +12 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.d.ts +116 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.js +348 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.d.ts +211 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.js +64 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +18 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +13 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +30 -18
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +4 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +29 -4
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +24 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +119 -41
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +27 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.d.ts +63 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.js +97 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +5 -6
  56. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +105 -88
  57. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.d.ts +1 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +46 -48
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +28 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +98 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +3 -3
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +9 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatTurnPills.css +162 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +9 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +95 -24
  67. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +22 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +151 -20
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +20 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +5 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +61 -17
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.d.ts +20 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.js +55 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +6 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +81 -30
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +11 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +13 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +9 -33
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +6 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +21 -11
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +6 -2
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -19
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.d.ts +35 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.js +140 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.d.ts +24 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.js +58 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +3 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +29 -8
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +12 -66
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +39 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +167 -43
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +1 -15
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +9 -86
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.d.ts +12 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.js +23 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +9 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +141 -72
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +2 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +17 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.d.ts +29 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.js +110 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAgentFeedbackReviewConfirmation.css +133 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAutoModeResolution.css +30 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +4 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +18 -8
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +23 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +33 -18
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentContent.css +23 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +44 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +2 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +9 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +21 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.d.ts +48 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.js +279 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +43 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +53 -15
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +7 -9
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +24 -10
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.d.ts → chatSandboxPrerequisiteConfirmationSubPart.d.ts} +3 -2
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.js → chatSandboxPrerequisiteConfirmationSubPart.js} +14 -10
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +0 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +30 -59
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +41 -29
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +12 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +43 -35
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +11 -8
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.d.ts +18 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.js +51 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +18 -3
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +266 -98
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +1 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +8 -3
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.d.ts +32 -0
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.js +135 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.d.ts +85 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.js +275 -0
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +18 -1
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +84 -37
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +4 -4
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +14 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +52 -4
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +187 -13
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +435 -139
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.d.ts +6 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.js +21 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.d.ts +50 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.js +49 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.d.ts +79 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.js +127 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +84 -8
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +658 -430
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +72 -8
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +82 -7
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.d.ts +3 -3
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.js +6 -3
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +2 -1
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -9
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +2 -2
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +28 -12
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +15 -14
  203. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +60 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +18 -7
  205. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +49 -1
  206. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +141 -81
  207. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +7 -15
  208. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +30 -47
  209. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  210. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.d.ts +20 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.js +18 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +469 -148
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +11 -2
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +79 -28
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +71 -2
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +107 -45
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +20 -0
  218. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.d.ts +110 -0
  219. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.js +37 -0
  220. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +4 -1
  221. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +13 -11
  222. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +8 -1
  223. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +57 -21
  224. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  225. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  226. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  227. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  229. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.d.ts +39 -8
  231. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.js +168 -72
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  235. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  236. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  238. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  239. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  240. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  241. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  242. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +0 -30
  244. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +0 -147
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { $ as $$1, scheduleAtNextAnimationFrame, getWindow, append, addDisposableListener, EventType, createElement, DisposableResizeObserver, clearNode, addStandardDisposableListener, WindowIntervalTimer, reset, findParentWithClass, hide, show } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
+ import { $ as $$1, scheduleAtNextAnimationFrame, getWindow, append, addDisposableListener, EventType, createElement, DisposableResizeObserver, clearNode, addStandardDisposableListener, WindowIntervalTimer, reset, findParentWithClass, hide, show, isAncestorOfActiveElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { renderFormattedText } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/formattedTextRenderer';
5
5
  import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
6
6
  import { alert } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
@@ -35,6 +35,7 @@ import { isDark } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/co
35
35
  import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
36
36
  import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
37
37
  import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
38
+ import { parseRemoteAgentHostSessionTypeAuthority } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostSessionType';
38
39
  import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
39
40
  import { CodiconActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/browser/view/cellParts/cellActionView';
40
41
  import { annotateSpecialMarkdownContent, hasEditCodeblockUriTag, hasCodeblockUriTag, extractSubAgentInvocationIdFromText } from '../../common/widget/annotations.js';
@@ -45,21 +46,26 @@ import { ChatAgentVoteDirection, ChatRequestQueueKind, IChatToolInvocation, isCh
45
46
  import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
46
47
  import { ChatPlanReviewData } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatPlanReviewData';
47
48
  import { ChatQuestionCarouselData } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatQuestionCarouselData';
48
- import { localChatSessionType, isAgentHostTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
49
+ import { SessionType, isAgentHostTarget, localChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
49
50
  import { getChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
50
- import { isExplicitFileOrImageVariableEntry, getExplicitFileOrImageAttachmentSummary } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
51
- import { isResponseVM, isPendingDividerVM, isRequestVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
51
+ import { isExplicitFileOrImageVariableEntry, isPasteVariableEntry, getExplicitFileOrImageAttachmentSummary } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
52
+ import { isResponseVM, isRequestVM, isPendingDividerVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
52
53
  import { getNWords } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatWordCounter';
53
54
  import { ChatConfiguration, ChatAgentLocation, CollapsedToolsDisplayMode, ThinkingDisplayMode, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
54
55
  import { ClickAnimation } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/animations/animations';
55
56
  import { MarkHelpfulActionId } from '../actions/chatTitleActions.js';
56
57
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
58
+ import { AgentHostSnapshotController } from '../agentSessions/agentHost/agentHostSnapshotController.js';
59
+ import { RestoreCheckpointActionId } from '../chatEditing/chatEditingActions.js';
60
+ import { ChatRestoreCheckpointActionViewItem } from './chatRestoreCheckpointActionViewItem.js';
57
61
  import { ChatAgentHover, getChatAgentHoverOptions } from './chatAgentHover.js';
58
62
  import { ChatContentMarkdownRenderer } from './chatContentMarkdownRenderer.js';
59
63
  import { ChatAgentCommandContentPart } from './chatContentParts/chatAgentCommandContentPart.js';
60
64
  import { ChatAnonymousRateLimitedPart } from './chatContentParts/chatAnonymousRateLimitedPart.js';
61
65
  import { ChatAttachmentsContentPart } from './chatContentParts/chatAttachmentsContentPart.js';
66
+ import { ChatAutoModeResolutionContentPart } from './chatContentParts/chatAutoModeResolutionContentPart.js';
62
67
  import { ChatCheckpointFileChangesSummaryContentPart } from './chatContentParts/chatChangesSummaryPart.js';
68
+ import { ChatTurnPillsContentPart } from './chatContentParts/chatTurnPillsPart.js';
63
69
  import { ChatCodeCitationContentPart } from './chatContentParts/chatCodeCitationContentPart.js';
64
70
  import { ChatCommandButtonContentPart } from './chatContentParts/chatCommandContentPart.js';
65
71
  import { ChatConfirmationContentPart } from './chatContentParts/chatConfirmationContentPart.js';
@@ -73,13 +79,16 @@ import { ChatQuestionCarouselPart } from './chatContentParts/chatQuestionCarouse
73
79
  import { ChatExtensionsContentPart } from './chatContentParts/chatExtensionsContentPart.js';
74
80
  import { ChatMarkdownContentPart, codeblockHasClosingBackticks } from './chatContentParts/chatMarkdownContentPart.js';
75
81
  import { ChatMcpServersInteractionContentPart } from './chatContentParts/chatMcpServersInteractionContentPart.js';
82
+ import { ChatMcpAuthenticationContentPart } from './chatContentParts/chatMcpAuthenticationContentPart.js';
83
+ import { ChatMcpServersStartingContentPart } from './chatContentParts/chatMcpServersStartingContentPart.js';
76
84
  import { ChatDisabledClaudeHooksContentPart } from './chatContentParts/chatDisabledClaudeHooksContentPart.js';
77
85
  import { ChatMultiDiffContentPart } from './chatContentParts/chatMultiDiffContentPart.js';
78
- import { ChatWorkingProgressContentPart, ChatProgressSubPart, ChatProgressContentPart } from './chatContentParts/chatProgressContentPart.js';
86
+ import { ChatWorkingProgressContentPart, ChatProgressContentPart } from './chatContentParts/chatProgressContentPart.js';
79
87
  import { ChatPullRequestContentPart } from './chatContentParts/chatPullRequestContentPart.js';
80
88
  import { ChatQuotaExceededPart } from './chatContentParts/chatQuotaExceededPart.js';
81
89
  import { CollapsibleListPool, ChatUsedReferencesListContentPart } from './chatContentParts/chatReferencesContentPart.js';
82
90
  import { ChatTaskContentPart } from './chatContentParts/chatTaskContentPart.js';
91
+ import { ChatSystemNotificationContentPart } from './chatContentParts/chatSystemNotificationContentPart.js';
83
92
  import { ChatTextEditContentPart } from './chatContentParts/chatTextEditContentPart.js';
84
93
  import { ChatThinkingContentPart, getEffectiveThinkingDisplayMode } from './chatContentParts/chatThinkingContentPart.js';
85
94
  import { ChatSubagentContentPart } from './chatContentParts/chatSubagentContentPart.js';
@@ -90,7 +99,7 @@ import { ChatToolInvocationPart } from './chatContentParts/toolInvocationParts/c
90
99
  import { ChatMarkdownDecorationsRenderer } from './chatContentParts/chatMarkdownDecorationsRenderer.js';
91
100
  import { ChatCodeBlockContentProvider } from './chatContentParts/codeBlockPart.js';
92
101
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
93
- import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
102
+ import { basename, isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
94
103
  import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
95
104
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
96
105
  import { ChatHookContentPart } from './chatContentParts/chatHookContentPart.js';
@@ -98,7 +107,7 @@ import { HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contr
98
107
  import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
99
108
  import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
100
109
  import { isMcpToolInvocation } from './chatContentParts/toolInvocationParts/chatToolPartUtilities.js';
101
- import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessions';
110
+ import { AgentSessionProviders } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessions';
102
111
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
103
112
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
104
113
 
@@ -106,10 +115,73 @@ var ChatListItemRenderer_1;
106
115
  const $ = $$1;
107
116
  const COPILOT_USERNAME = "GitHub Copilot";
108
117
  const WORKING_CAUGHT_UP_DEBOUNCE_MS = 750;
118
+ const DEFAULT_CHAT_ITEM_HORIZONTAL_PADDING = 40;
119
+ function escapeMarkdownLinkLabel(label) {
120
+ return label.replace(/\\/g, "\\\\").replace(/\]/g, "\\]");
121
+ }
122
+ function buildPlanReviewProgressContent(review, message) {
123
+ const renderedAsUsed = !!review.isUsed;
124
+ const data = renderedAsUsed && !review.data?.rejected ? review.data : undefined;
125
+ let overall = data?.feedbackOverall?.trim();
126
+ const inlineMd = data?.feedbackInlineMarkdown?.trim();
127
+ if (!overall && !inlineMd && data?.feedback) {
128
+ overall = data.feedback.trim();
129
+ }
130
+ const content = ( new MarkdownString(undefined, {
131
+ supportThemeIcons: true
132
+ }));
133
+ if (overall) {
134
+ content.appendText(( localize(8179, "{0}: {1}", message, overall.replace(/\s+/g, " "))));
135
+ } else {
136
+ content.appendText(message);
137
+ }
138
+ if (renderedAsUsed) {
139
+ const reviewContent = review.content.trim();
140
+ const planUri = review.planUri ? URI.revive(review.planUri) : undefined;
141
+ if (reviewContent || planUri) {
142
+ content.appendMarkdown("\n\n");
143
+ if (reviewContent) {
144
+ content.appendMarkdown(reviewContent);
145
+ }
146
+ if (planUri) {
147
+ if (reviewContent) {
148
+ content.appendMarkdown("\n\n");
149
+ }
150
+ const planFileName = basename(planUri);
151
+ const label = planFileName ? ( localize(8180, "Open full plan file ({0})", planFileName)) : ( localize(8181, "Open full plan file"));
152
+ const planWidgetUri = planUri.with({
153
+ query: planUri.query ? `${planUri.query}&vscodeLinkType=file` : "vscodeLinkType=file"
154
+ });
155
+ content.appendMarkdown(`[${escapeMarkdownLinkLabel(label)}](${( planWidgetUri.toString(true))})`);
156
+ }
157
+ }
158
+ }
159
+ if (inlineMd) {
160
+ content.appendMarkdown("\n\n");
161
+ content.appendMarkdown(inlineMd);
162
+ }
163
+ return content;
164
+ }
109
165
  function shouldScheduleInitialHeightChange(normalizedHeight, allocatedHeight) {
110
166
  return typeof allocatedHeight !== "number" || normalizedHeight > allocatedHeight;
111
167
  }
168
+ function shouldRenderInitialProgressiveContentImmediately(isComplete, hasMarkdownParts, hasRenderData) {
169
+ return !isComplete && hasMarkdownParts && !hasRenderData;
170
+ }
112
171
  const mostRecentResponseClassName = "chat-most-recent-response";
172
+ function shouldHideChatUserIdentity(
173
+ username,
174
+ sessionResource,
175
+ isResponse,
176
+ isSessionsWindow,
177
+ isSystemInitiatedRequest
178
+ ) {
179
+ const sessionType = getChatSessionType(sessionResource);
180
+ return username === COPILOT_USERNAME || (isResponse && isAgentHostCopilotSessionType(sessionType)) || isSessionsWindow || isSystemInitiatedRequest;
181
+ }
182
+ function isAgentHostCopilotSessionType(sessionType) {
183
+ return sessionType === AgentSessionProviders.AgentHostCopilot || parseRemoteAgentHostSessionTypeAuthority(sessionType, SessionType.CopilotCLI) !== undefined;
184
+ }
113
185
  function upvoteAnimationSettingToEnum(value) {
114
186
  switch (value) {
115
187
  case "confetti":
@@ -374,7 +446,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
374
446
  this._onDidChangeVisibility.fire(visible);
375
447
  }
376
448
  layout(width) {
377
- const newWidth = width - 40;
449
+ const newWidth = width - (this.rendererOptions.contentHorizontalPadding ?? DEFAULT_CHAT_ITEM_HORIZONTAL_PADDING);
378
450
  if (newWidth !== this._currentLayoutWidth.get()) {
379
451
  this._currentLayoutWidth.set(newWidth, undefined);
380
452
  for (const editor of this._editorPool.inUse()) {
@@ -433,6 +505,11 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
433
505
  scopedInstantiationService.createInstance(MenuWorkbenchToolBar, checkpointContainer, MenuId.ChatMessageCheckpoint, {
434
506
  actionViewItemProvider: (action, options) => {
435
507
  if (action instanceof MenuItemAction) {
508
+ if (action.item.id === RestoreCheckpointActionId) {
509
+ return this.instantiationService.createInstance(ChatRestoreCheckpointActionViewItem, action, {
510
+ hoverDelegate: options.hoverDelegate
511
+ }, context => this.checkpointRestoreNeedsConfirmation(context));
512
+ }
436
513
  return this.instantiationService.createInstance(CodiconActionViewItem, action, {
437
514
  hoverDelegate: options.hoverDelegate
438
515
  });
@@ -488,7 +565,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
488
565
  const checkpointRestoreContainer = append(rowContainer, $(".checkpoint-restore-container"));
489
566
  append(checkpointRestoreContainer, $(".checkpoint-line-left"));
490
567
  const label = append(checkpointRestoreContainer, $("span.checkpoint-label-text"));
491
- label.textContent = ( localize(7627, "Checkpoint Restored"));
568
+ label.textContent = ( localize(8182, "Checkpoint Restored"));
492
569
  const dot = append(checkpointRestoreContainer, $("span.checkpoint-dot-separator"));
493
570
  dot.textContent = "·";
494
571
  dot.setAttribute("aria-hidden", "true");
@@ -603,6 +680,23 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
603
680
  templateDisposables.add(resizeObserver.observe(rowContainer));
604
681
  return template;
605
682
  }
683
+ checkpointRestoreNeedsConfirmation(context) {
684
+ if (!isRequestVM(context) && !isResponseVM(context)) {
685
+ return false;
686
+ }
687
+ const requestId = isRequestVM(context) ? context.id : context.requestId;
688
+ const model = this.chatService.getSession(context.sessionResource);
689
+ const session = model?.editingSession;
690
+ if (!model || !(session instanceof AgentHostSnapshotController)) {
691
+ return false;
692
+ }
693
+ const requests = model.getRequests();
694
+ const index = requests.findIndex(request => request.id === requestId);
695
+ if (index === -1) {
696
+ return false;
697
+ }
698
+ return ( requests.slice(index).some(request => session.hasEditsInRequest(request.id)));
699
+ }
606
700
  renderElement(node, index, templateData, details) {
607
701
  templateData.allocatedHeight = details?.height;
608
702
  this._elementBeingRendered = node.element;
@@ -720,14 +814,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
720
814
  }
721
815
  const isSystemInitiatedRequest = isRequestVM(element) && !!element.isSystemInitiated;
722
816
  templateData.username.textContent = element.username;
723
- templateData.username.classList.toggle(
724
- "hidden",
725
- element.username === COPILOT_USERNAME || this.environmentService.isSessionsWindow || isSystemInitiatedRequest
726
- );
727
- templateData.avatarContainer.classList.toggle(
728
- "hidden",
729
- element.username === COPILOT_USERNAME || this.environmentService.isSessionsWindow || isSystemInitiatedRequest
817
+ const hideChatUserIdentity = shouldHideChatUserIdentity(
818
+ element.username,
819
+ element.sessionResource,
820
+ isResponseVM(element),
821
+ this.environmentService.isSessionsWindow,
822
+ isSystemInitiatedRequest
730
823
  );
824
+ templateData.username.classList.toggle("hidden", hideChatUserIdentity);
825
+ templateData.avatarContainer.classList.toggle("hidden", hideChatUserIdentity);
731
826
  this.hoverHidden(templateData.requestHover);
732
827
  clearNode(templateData.detail);
733
828
  if (isResponseVM(element)) {
@@ -866,15 +961,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
866
961
  const label = append(dividerContent, $$1("span.pending-divider-label"));
867
962
  if (element.dividerKind === ChatRequestQueueKind.Steering) {
868
963
  if (element.isSystemInitiated) {
869
- label.textContent = ( localize(7628, "System Notification"));
870
- label.title = ( localize(7629, "System notification will be sent after the next tool call happens"));
964
+ label.textContent = ( localize(8183, "System Notification"));
965
+ label.title = ( localize(8184, "System notification will be sent after the next tool call happens"));
871
966
  } else {
872
- label.textContent = ( localize(7630, "Steering"));
873
- label.title = ( localize(7631, "Steering message will be sent after the next tool call happens"));
967
+ label.textContent = ( localize(8185, "Steering"));
968
+ label.title = ( localize(8186, "Steering message will be sent after the next tool call happens"));
874
969
  }
875
970
  } else {
876
- label.textContent = ( localize(7632, "Queued"));
877
- label.title = ( localize(7633, "Queued messages will be sent after the current request completes"));
971
+ label.textContent = ( localize(8187, "Queued"));
972
+ label.title = ( localize(8188, "Queued messages will be sent after the current request completes"));
878
973
  }
879
974
  templateData.value.appendChild(dividerContent);
880
975
  }
@@ -882,10 +977,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
882
977
  clearNode(templateData.detail);
883
978
  if (element.agentOrSlashCommandDetected) {
884
979
  const msg = element.slashCommand ? ( localize(
885
- 7634,
980
+ 8189,
886
981
  "used {0} [[(rerun without)]]",
887
982
  `${chatSubcommandLeader}${element.slashCommand.name}`
888
- )) : ( localize(7635, "[[(rerun without)]]"));
983
+ )) : ( localize(8190, "[[(rerun without)]]"));
889
984
  reset(templateData.detail, renderFormattedText(msg, {
890
985
  actionHandler: {
891
986
  disposables: templateData.elementDisposables,
@@ -898,7 +993,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
898
993
  this.delegate.currentChatMode(),
899
994
  this.rendererOptions.progressMessageAtBottomOfResponse
900
995
  )) {
901
- templateData.detail.textContent = ( localize(7636, "Working"));
996
+ templateData.detail.textContent = ( localize(8191, "Working"));
902
997
  }
903
998
  }
904
999
  renderConfirmationAction(element, templateData) {
@@ -907,7 +1002,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
907
1002
  append(templateData.detail, $("span.codicon.codicon-check", {
908
1003
  "aria-hidden": "true"
909
1004
  }));
910
- append(templateData.detail, $("span.confirmation-text", undefined, ( localize(7637, "Selected \"{0}\"", element.confirmation))));
1005
+ append(templateData.detail, $("span.confirmation-text", undefined, ( localize(8192, "Selected \"{0}\"", element.confirmation))));
911
1006
  templateData.header?.classList.remove("header-disabled");
912
1007
  templateData.header?.classList.add("partially-disabled");
913
1008
  }
@@ -962,7 +1057,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
962
1057
  });
963
1058
  }
964
1059
  }
965
- if (element.model.response === element.model.entireResponse && element.errorDetails?.message && element.errorDetails.message !== canceledName) {
1060
+ if (element.model.response === element.model.entireResponse && !element.isCanceled && element.errorDetails?.message && element.errorDetails.message !== canceledName) {
966
1061
  content.push({
967
1062
  kind: "errorDetails",
968
1063
  errorDetails: element.errorDetails,
@@ -973,6 +1068,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
973
1068
  if (fileChangesSummaryPart) {
974
1069
  content.push(fileChangesSummaryPart);
975
1070
  }
1071
+ const turnPillsPart = this.getChatTurnPillsPart(element);
1072
+ if (turnPillsPart) {
1073
+ content.push(turnPillsPart);
1074
+ }
976
1075
  const workingProgress = this.shouldShowWorkingProgress(element, content, false, templateData);
977
1076
  if (workingProgress) {
978
1077
  content.push(workingProgress);
@@ -1026,7 +1125,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1026
1125
  content: ( new MarkdownString()).appendText(this.getConfirmationPendingLabel(nonSubagentConfirmationCount))
1027
1126
  };
1028
1127
  }
1029
- if (this.getPendingToolConfirmationCount(partsToRender, true) > 0 || this.getSubagentPart(templateData.renderedParts)) {
1128
+ if (this.getPendingToolConfirmationCount(partsToRender, true) > 0) {
1030
1129
  return undefined;
1031
1130
  }
1032
1131
  return {
@@ -1035,7 +1134,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1035
1134
  };
1036
1135
  }
1037
1136
  }
1038
- const lastPart = this.findLastMeaningfulPart(partsToRender);
1137
+ const workingParts = getWorkingProgressRelevantParts(partsToRender);
1138
+ const lastPart = findLastMeaningfulPart(workingParts);
1039
1139
  if (showProgressDetails) {
1040
1140
  const lastThinking = this.getLastThinkingPart(templateData.renderedParts);
1041
1141
  if (lastThinking?.getIsActive() && !lastThinking.isFixedScrollingMode) {
@@ -1049,12 +1149,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1049
1149
  state: workingState
1050
1150
  };
1051
1151
  }
1052
- if (( partsToRender.some(
1152
+ if (( workingParts.some(
1053
1153
  part => part.kind === "toolInvocation" && IChatToolInvocation.isStreaming(part)
1054
1154
  ))) {
1055
1155
  return undefined;
1056
1156
  }
1057
- if (( partsToRender.some(
1157
+ if (( workingParts.some(
1058
1158
  part => part.kind === "toolInvocation" && !IChatToolInvocation.isComplete(part) && isMcpToolInvocation(part)
1059
1159
  ))) {
1060
1160
  return undefined;
@@ -1074,18 +1174,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1074
1174
  }
1075
1175
  }
1076
1176
  const hasRenderedThinkingPart = ( (templateData.renderedParts ?? []).some(part => part instanceof ChatThinkingContentPart));
1077
- const hasEditPillMarkdown = ( partsToRender.some(part => part.kind === "markdownContent" && this.hasEditCodeblockUri(part)));
1177
+ const hasEditPillMarkdown = ( workingParts.some(part => part.kind === "markdownContent" && this.hasEditCodeblockUri(part)));
1078
1178
  if (hasRenderedThinkingPart && hasEditPillMarkdown) {
1079
1179
  return undefined;
1080
1180
  }
1081
- if (this.getSubagentPart(templateData.renderedParts)) {
1082
- return undefined;
1083
- }
1084
- if (!lastPart || lastPart.kind === "references" || (lastPart.kind === "markdownContent" && !moreContentAvailable && this.hasBeenCaughtUpLongEnough(element)) || ((lastPart.kind === "toolInvocation" || lastPart.kind === "toolInvocationSerialized") && (IChatToolInvocation.isComplete(lastPart) || IChatToolInvocation.isEffectivelyHidden(lastPart))) || ((lastPart.kind === "textEditGroup" || lastPart.kind === "notebookEditGroup") && lastPart.done && !( partsToRender.some(
1181
+ if (!lastPart || lastPart.kind === "references" || (lastPart.kind === "markdownContent" && !moreContentAvailable && this.hasBeenCaughtUpLongEnough(element)) || ((lastPart.kind === "toolInvocation" || lastPart.kind === "toolInvocationSerialized") && (IChatToolInvocation.isComplete(lastPart) || IChatToolInvocation.isEffectivelyHidden(lastPart))) || ((lastPart.kind === "textEditGroup" || lastPart.kind === "notebookEditGroup") && lastPart.done && !( workingParts.some(
1085
1182
  part => part.kind === "toolInvocation" && !IChatToolInvocation.isComplete(part)
1086
- ))) || (lastPart.kind === "externalEdit" && !( partsToRender.some(
1183
+ ))) || (lastPart.kind === "externalEdit" && !( workingParts.some(
1087
1184
  part => part.kind === "toolInvocation" && !IChatToolInvocation.isComplete(part)
1088
- ))) || (lastPart.kind === "progressTask" && lastPart.deferred.isSettled) || lastPart.kind === "mcpServersStarting" || lastPart.kind === "disabledClaudeHooks" || lastPart.kind === "hook") {
1185
+ ))) || (lastPart.kind === "progressTask" && lastPart.deferred.isSettled) || lastPart.kind === "mcpServersStarting" || lastPart.kind === "mcpAuthenticationRequired" || lastPart.kind === "mcpServersStartingSlow" || lastPart.kind === "disabledClaudeHooks" || lastPart.kind === "hook") {
1089
1186
  return {
1090
1187
  kind: "working"
1091
1188
  };
@@ -1102,7 +1199,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1102
1199
  }).length;
1103
1200
  }
1104
1201
  getConfirmationPendingLabel(count) {
1105
- return count === 1 ? ( localize(7638, "1 confirmation pending")) : ( localize(7639, "{0} confirmations pending", count));
1202
+ return count === 1 ? ( localize(8193, "1 confirmation pending")) : ( localize(8194, "{0} confirmations pending", count));
1106
1203
  }
1107
1204
  removeWorkingProgressContentPart(templateData) {
1108
1205
  const renderedParts = templateData.renderedParts;
@@ -1188,15 +1285,6 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1188
1285
  }
1189
1286
  return (Date.now() - lastRenderTime) >= WORKING_CAUGHT_UP_DEBOUNCE_MS;
1190
1287
  }
1191
- findLastMeaningfulPart(partsToRender) {
1192
- for (let i = partsToRender.length - 1; i >= 0; i--) {
1193
- const part = partsToRender[i];
1194
- if (part.kind !== "markdownContent" || part.content.value.trim().length > 0) {
1195
- return part;
1196
- }
1197
- }
1198
- return undefined;
1199
- }
1200
1288
  isWorkingProgressDebouncePending(element, partsToRender) {
1201
1289
  if (element.isComplete) {
1202
1290
  return false;
@@ -1204,13 +1292,14 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1204
1292
  if (( partsToRender.some(part => part.kind === "working"))) {
1205
1293
  return false;
1206
1294
  }
1207
- return this.findLastMeaningfulPart(partsToRender)?.kind === "markdownContent" && !this.hasBeenCaughtUpLongEnough(element);
1295
+ return findLastMeaningfulPart(getWorkingProgressRelevantParts(partsToRender))?.kind === "markdownContent" && !this.hasBeenCaughtUpLongEnough(element);
1208
1296
  }
1209
1297
  getChatFileChangesSummaryPart(element) {
1210
1298
  if (!this.shouldShowFileChangesSummary(element)) {
1211
1299
  return undefined;
1212
1300
  }
1213
- if (!( element.model.entireResponse.value.some(part => part.kind === "textEditGroup" || part.kind === "notebookEditGroup"))) {
1301
+ const sessionType = getChatSessionType(element.sessionResource);
1302
+ if (!isAgentHostTarget(sessionType) && !( element.model.entireResponse.value.some(part => part.kind === "textEditGroup" || part.kind === "notebookEditGroup"))) {
1214
1303
  return undefined;
1215
1304
  }
1216
1305
  return {
@@ -1219,6 +1308,23 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1219
1308
  sessionResource: element.sessionResource
1220
1309
  };
1221
1310
  }
1311
+ getChatTurnPillsPart(element) {
1312
+ if (!element.isComplete) {
1313
+ return undefined;
1314
+ }
1315
+ const pillsConfig = this.configService.getValue(ChatConfiguration.TurnStatusPills);
1316
+ if (!pillsConfig?.changes && !pillsConfig?.preview) {
1317
+ return undefined;
1318
+ }
1319
+ if (!isAgentHostTarget(getChatSessionType(element.sessionResource))) {
1320
+ return undefined;
1321
+ }
1322
+ return {
1323
+ kind: "turnPills",
1324
+ requestId: element.requestId,
1325
+ sessionResource: element.sessionResource
1326
+ };
1327
+ }
1222
1328
  renderChatRequest(element, index, templateData) {
1223
1329
  templateData.rowContainer.classList.toggle("chat-response-loading", false);
1224
1330
  templateData.rowContainer.classList.toggle("pending-request", !!element.pendingKind);
@@ -1263,8 +1369,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1263
1369
  let content = [];
1264
1370
  const explicitFileOrImageVariables = element.variables.filter(isExplicitFileOrImageVariableEntry);
1265
1371
  const explicitImageVariables = explicitFileOrImageVariables.filter(variable => variable.kind === "image");
1266
- const explicitFileOrDirectoryVariables = explicitFileOrImageVariables.filter(variable => variable.kind === "file" || variable.kind === "directory");
1267
- const otherVariables = element.variables.filter(variable => !isExplicitFileOrImageVariableEntry(variable));
1372
+ const explicitFileOrDirectoryVariables = element.variables.filter(
1373
+ variable => variable.kind === "file" || variable.kind === "directory" || isPasteVariableEntry(variable)
1374
+ );
1375
+ const otherVariables = element.variables.filter(
1376
+ variable => !isExplicitFileOrImageVariableEntry(variable) && !isPasteVariableEntry(variable)
1377
+ );
1268
1378
  if (!element.confirmation) {
1269
1379
  const markdown = isChatFollowup(element.message) ? element.message.message : this.markdownDecorationsRenderer.convertParsedRequestToMarkdown(element.sessionResource, element.message);
1270
1380
  const attachmentSummary = !element.messageText.trim() && !explicitFileOrImageVariables.length ? getExplicitFileOrImageAttachmentSummary(element.variables) : undefined;
@@ -1294,7 +1404,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1294
1404
  explicitImageVariables,
1295
1405
  element.contentReferences,
1296
1406
  element.modelId,
1297
- templateData
1407
+ templateData,
1408
+ element.resolvedModelId
1298
1409
  ) : undefined;
1299
1410
  if (explicitImageAttachmentsPart?.domNode) {
1300
1411
  explicitImageAttachmentsPart.domNode.classList.add("chat-request-attachment-cards", "chat-request-image-attachments");
@@ -1379,12 +1490,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1379
1490
  }
1380
1491
  templateData.renderedParts = [];
1381
1492
  const label = element.systemInitiatedLabel ?? element.messageText;
1382
- const rendered = this.chatContentMarkdownRenderer.render(( new MarkdownString(label)));
1383
- templateData.elementDisposables.add(rendered);
1384
- rendered.element.classList.add("progress-step");
1385
- const progressPart = this.instantiationService.createInstance(ChatProgressSubPart, rendered.element, Codicon.check, undefined);
1386
- templateData.elementDisposables.add(progressPart);
1387
- templateData.value.appendChild(progressPart.domNode);
1493
+ const notificationPart = this.instantiationService.createInstance(ChatSystemNotificationContentPart, {
1494
+ kind: "systemNotification",
1495
+ content: ( new MarkdownString(label))
1496
+ }, this.chatContentMarkdownRenderer);
1497
+ templateData.elementDisposables.add(notificationPart);
1498
+ templateData.value.appendChild(notificationPart.domNode);
1388
1499
  }
1389
1500
  doIncrementalRender(element, index, templateData) {
1390
1501
  if (!this._isVisible) {
@@ -1475,6 +1586,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1475
1586
  templateData.renderedParts = renderedParts;
1476
1587
  let codeBlockStartIndex = 0;
1477
1588
  let treeStartIndex = 0;
1589
+ let displacedWorkingPart;
1478
1590
  partsToRender.forEach((partToRender, contentIndex) => {
1479
1591
  if (contentIndex > 0) {
1480
1592
  const prevPart = renderedParts[contentIndex - 1];
@@ -1492,6 +1604,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1492
1604
  }
1493
1605
  return;
1494
1606
  }
1607
+ if (partToRender.kind === "working" && displacedWorkingPart?.hasSameContent(partToRender, contentForThisTurn.slice(contentIndex + 1), element)) {
1608
+ renderedParts[contentIndex] = displacedWorkingPart;
1609
+ displacedWorkingPart = undefined;
1610
+ return;
1611
+ }
1612
+ const preserveWorkingPart = alreadyRenderedPart instanceof ChatWorkingProgressContentPart && partToRender.kind !== "working" && ( contentForThisTurn.slice(contentIndex + 1).some(part => part.kind === "working"));
1495
1613
  if (alreadyRenderedPart) {
1496
1614
  if (partToRender.kind === "thinking" && alreadyRenderedPart instanceof ChatThinkingContentPart) {
1497
1615
  if (!Array.isArray(partToRender.value)) {
@@ -1509,7 +1627,11 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1509
1627
  return;
1510
1628
  }
1511
1629
  }
1512
- alreadyRenderedPart.dispose();
1630
+ if (preserveWorkingPart) {
1631
+ displacedWorkingPart = alreadyRenderedPart;
1632
+ } else {
1633
+ alreadyRenderedPart.dispose();
1634
+ }
1513
1635
  if (alreadyRenderedPart.domNode) {
1514
1636
  const thinkingToolWrapper = findParentWithClass(alreadyRenderedPart.domNode, "chat-thinking-tool-wrapper");
1515
1637
  if (thinkingToolWrapper) {
@@ -1549,9 +1671,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1549
1671
  try {
1550
1672
  if (alreadyRenderedPart?.domNode) {
1551
1673
  if (newPart.domNode) {
1552
- alreadyRenderedPart.domNode.replaceWith(newPart.domNode);
1674
+ if (preserveWorkingPart) {
1675
+ alreadyRenderedPart.domNode.before(newPart.domNode);
1676
+ } else {
1677
+ alreadyRenderedPart.domNode.replaceWith(newPart.domNode);
1678
+ }
1553
1679
  } else {
1554
- alreadyRenderedPart.domNode.remove();
1680
+ if (!preserveWorkingPart) {
1681
+ alreadyRenderedPart.domNode.remove();
1682
+ }
1555
1683
  }
1556
1684
  } else if (newPart.domNode && !newPart.domNode.parentElement) {
1557
1685
  templateData.value.appendChild(newPart.domNode);
@@ -1563,6 +1691,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1563
1691
  alreadyRenderedPart?.domNode?.remove();
1564
1692
  }
1565
1693
  });
1694
+ displacedWorkingPart?.dispose();
1695
+ displacedWorkingPart?.domNode?.remove();
1566
1696
  for (let i = partsToRender.length; i < renderedParts.length; i++) {
1567
1697
  const part = renderedParts[i];
1568
1698
  if (part) {
@@ -1646,6 +1776,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1646
1776
  if (fileChangesSummaryPart) {
1647
1777
  partsToRender.push(fileChangesSummaryPart);
1648
1778
  }
1779
+ const turnPillsPart = this.getChatTurnPillsPart(element);
1780
+ if (turnPillsPart) {
1781
+ partsToRender.push(turnPillsPart);
1782
+ }
1649
1783
  return {
1650
1784
  content: partsToRender,
1651
1785
  moreContentAvailable
@@ -1660,7 +1794,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1660
1794
  const hasMarkdownParts = ( element.response.value.some(
1661
1795
  part => part.kind === "markdownContent" && part.content.value.trim().length > 0
1662
1796
  ));
1663
- if (!element.isComplete && hasMarkdownParts && (element.contentUpdateTimings ? element.contentUpdateTimings.lastWordCount : 0) === 0) {
1797
+ if (shouldRenderInitialProgressiveContentImmediately(element.isComplete, hasMarkdownParts, element.renderData !== undefined)) {
1664
1798
  return {
1665
1799
  numWordsToRender: Number.MAX_SAFE_INTEGER,
1666
1800
  rate: Number.MAX_SAFE_INTEGER
@@ -1809,7 +1943,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1809
1943
  return;
1810
1944
  }
1811
1945
  for (const part of templateData.renderedParts) {
1812
- if (part instanceof ChatSubagentContentPart && part.getIsActive() && !part.hasToolsWaitingForConfirmation) {
1946
+ if (part instanceof ChatSubagentContentPart && part.getIsActive() && !part.shouldRemainActive() && !part.hasToolsWaitingForConfirmation) {
1813
1947
  part.markAsInactive();
1814
1948
  }
1815
1949
  }
@@ -1821,6 +1955,9 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1821
1955
  this.maybeRouteSubagentToolToCarousel(toolInvocation, lastSubagent, context, templateData, codeBlockStartIndex);
1822
1956
  if (!isParentSubagentTool(toolInvocation)) {
1823
1957
  lastSubagent.appendToolInvocation(toolInvocation, codeBlockStartIndex);
1958
+ return this.renderNoContent(
1959
+ other => (other.kind === "toolInvocation" || other.kind === "toolInvocationSerialized") && other.toolCallId === toolInvocation.toolCallId
1960
+ );
1824
1961
  }
1825
1962
  return lastSubagent;
1826
1963
  }
@@ -1950,6 +2087,12 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
1950
2087
  undefined,
1951
2088
  content.shimmer
1952
2089
  );
2090
+ } else if (content.kind === "systemNotification") {
2091
+ return this.instantiationService.createInstance(
2092
+ ChatSystemNotificationContentPart,
2093
+ content,
2094
+ this.chatContentMarkdownRenderer
2095
+ );
1953
2096
  } else if (content.kind === "working") {
1954
2097
  return this.instantiationService.createInstance(
1955
2098
  ChatWorkingProgressContentPart,
@@ -2010,8 +2153,14 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2010
2153
  return this.renderPlanReview(context, content, templateData);
2011
2154
  } else if (content.kind === "changesSummary") {
2012
2155
  return this.renderChangesSummary(content, context, templateData);
2156
+ } else if (content.kind === "turnPills") {
2157
+ return this.renderTurnPills(content, context);
2013
2158
  } else if (content.kind === "mcpServersStarting") {
2014
2159
  return this.renderMcpServersInteractionRequired(content, context, templateData);
2160
+ } else if (content.kind === "mcpAuthenticationRequired") {
2161
+ return this.instantiationService.createInstance(ChatMcpAuthenticationContentPart, content);
2162
+ } else if (content.kind === "mcpServersStartingSlow") {
2163
+ return this.instantiationService.createInstance(ChatMcpServersStartingContentPart, content);
2015
2164
  } else if (content.kind === "disabledClaudeHooks") {
2016
2165
  return this.renderDisabledClaudeHooks(content, context);
2017
2166
  } else if (content.kind === "thinking") {
@@ -2025,6 +2174,13 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2025
2174
  );
2026
2175
  } else if (content.kind === "externalEdit") {
2027
2176
  return this.renderExternalEdit(content, context, templateData);
2177
+ } else if (content.kind === "autoModeResolution") {
2178
+ return this.instantiationService.createInstance(
2179
+ ChatAutoModeResolutionContentPart,
2180
+ content,
2181
+ context,
2182
+ this.chatContentMarkdownRenderer
2183
+ );
2028
2184
  }
2029
2185
  return this.renderNoContent(other => content.kind === other.kind);
2030
2186
  } catch (err) {
@@ -2033,7 +2189,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2033
2189
  "ChatListItemRenderer#renderChatContentPart: error rendering content",
2034
2190
  toErrorMessage(err, true)
2035
2191
  );
2036
- const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(7640, "Failed to render content")) + `: ${toErrorMessage(err, false)}`)), content, this.chatContentMarkdownRenderer);
2192
+ const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(8195, "Failed to render content")) + `: ${toErrorMessage(err, false)}`)), content, this.chatContentMarkdownRenderer);
2037
2193
  return {
2038
2194
  dispose: () => errorPart.dispose(),
2039
2195
  domNode: errorPart.domNode,
@@ -2412,7 +2568,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2412
2568
  }
2413
2569
  const shouldPinToThinking = hookPart.hookType === HookType.PreToolUse || hookPart.hookType === HookType.PostToolUse;
2414
2570
  if (shouldPinToThinking) {
2415
- const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(7641, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(7642, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(7643, "Used {0}, but received a warning", hookPart.toolDisplayName)) : ( localize(7644, "Tool call received a warning")));
2571
+ const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(8196, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(8197, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(8198, "Used {0}, but received a warning", hookPart.toolDisplayName)) : ( localize(8199, "Tool call received a warning")));
2416
2572
  let thinkingPart = this.getLastThinkingPart(templateData.renderedParts);
2417
2573
  if (!thinkingPart) {
2418
2574
  const newThinking = this.renderThinkingPart({
@@ -2485,7 +2641,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2485
2641
  }
2486
2642
  }
2487
2643
  const widget = isResponseVM(context.element) ? this.chatWidgetService.getWidgetBySessionResource(context.element.sessionResource) : undefined;
2488
- const shouldAutoFocus = widget ? widget.getInput() === "" : true;
2644
+ const shouldAutoFocus = !!widget && isAncestorOfActiveElement(widget.domNode) && widget.getInput() === "";
2489
2645
  const responseId = isResponseVM(context.element) ? context.element.requestId : undefined;
2490
2646
  const carouselKey = carousel.resolveId ?? `${responseId ?? ""}_${context.contentIndex}`;
2491
2647
  const handleSubmit = async (answers, part) => {
@@ -2589,10 +2745,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2589
2745
  return;
2590
2746
  }
2591
2747
  const questionCount = carousel.questions.length;
2592
- const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(7645, "Chat input required."));
2748
+ const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(8200, "Chat input required."));
2593
2749
  const stringQuestion = typeof question === "string" ? question : question.value;
2594
- const alertMessage = questionCount === 1 ? ( localize(7646, "Chat input required (1 question): {0}", stringQuestion)) : ( localize(
2595
- 7647,
2750
+ const alertMessage = questionCount === 1 ? ( localize(8201, "Chat input required (1 question): {0}", stringQuestion)) : ( localize(
2751
+ 8202,
2596
2752
  "Chat input required ({0} questions): {1}",
2597
2753
  questionCount,
2598
2754
  stringQuestion
@@ -2601,7 +2757,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2601
2757
  if (stableKey) {
2602
2758
  this._notifiedQuestionCarousels.add(stableKey);
2603
2759
  }
2604
- const signalMessage = questionCount === 1 ? ( localize(7648, "Chat needs your input (1 question).")) : ( localize(7649, "Chat needs your input ({0} questions).", questionCount));
2760
+ const signalMessage = questionCount === 1 ? ( localize(8203, "Chat needs your input (1 question).")) : ( localize(8204, "Chat needs your input ({0} questions).", questionCount));
2605
2761
  this.accessibilitySignalService.playSignal(AccessibilitySignal.chatUserActionRequired, {
2606
2762
  allowManyInParallel: true,
2607
2763
  customAlertMessage: signalMessage
@@ -2637,24 +2793,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2637
2793
  }
2638
2794
  const renderedAsUsed = !!review.isUsed;
2639
2795
  const isPending = !renderedAsUsed;
2640
- const data = renderedAsUsed && !review.data?.rejected ? review.data : undefined;
2641
- let overall = data?.feedbackOverall?.trim();
2642
- const inlineMd = data?.feedbackInlineMarkdown?.trim();
2643
- if (!overall && !inlineMd && data?.feedback) {
2644
- overall = data.feedback.trim();
2645
- }
2646
- const content = ( new MarkdownString(undefined, {
2647
- supportThemeIcons: true
2648
- }));
2649
- if (overall) {
2650
- content.appendText(( localize(7650, "{0}: {1}", message, overall.replace(/\s+/g, " "))));
2651
- } else {
2652
- content.appendText(message);
2653
- }
2654
- if (inlineMd) {
2655
- content.appendMarkdown("\n\n");
2656
- content.appendMarkdown(inlineMd);
2657
- }
2796
+ const content = buildPlanReviewProgressContent(review, message);
2658
2797
  const progressPart = this.instantiationService.createInstance(ChatProgressContentPart, {
2659
2798
  content
2660
2799
  }, this.chatContentMarkdownRenderer, context, isPending, true, isPending ? undefined : Codicon.check, undefined, isPending);
@@ -2692,23 +2831,23 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2692
2831
  }
2693
2832
  getPlanReviewProgressMessage(review) {
2694
2833
  if (!review.isUsed) {
2695
- return localize(7651, "Plan review required");
2834
+ return localize(8205, "Plan review required");
2696
2835
  }
2697
2836
  const result = review.data;
2698
2837
  if (!result) {
2699
2838
  return undefined;
2700
2839
  }
2701
2840
  if (result.rejected) {
2702
- return localize(7652, "Rejected plan");
2841
+ return localize(8206, "Rejected plan");
2703
2842
  }
2704
2843
  if (result.feedback) {
2705
- return localize(7653, "Provided feedback");
2844
+ return localize(8207, "Provided feedback");
2706
2845
  }
2707
2846
  const action = review.actions.find(a => a.label === result.action);
2708
2847
  if (action?.permissionLevel === "autopilot") {
2709
- return localize(7654, "Started implementation with Autopilot");
2848
+ return localize(8208, "Started implementation with Autopilot");
2710
2849
  }
2711
- return localize(7655, "Approved plan");
2850
+ return localize(8209, "Approved plan");
2712
2851
  }
2713
2852
  removeCarouselFromTracking(context, part) {
2714
2853
  if (isResponseVM(context.element)) {
@@ -2722,11 +2861,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2722
2861
  const part = this.instantiationService.createInstance(ChatCheckpointFileChangesSummaryContentPart, content, context);
2723
2862
  return part;
2724
2863
  }
2725
- renderAttachments(variables, contentReferences, modelId, templateData) {
2864
+ renderTurnPills(content, context) {
2865
+ return this.instantiationService.createInstance(ChatTurnPillsContentPart, content, context);
2866
+ }
2867
+ renderAttachments(variables, contentReferences, modelId, templateData, resolvedModelId) {
2726
2868
  return this.instantiationService.createInstance(ChatAttachmentsContentPart, {
2727
2869
  variables,
2728
2870
  contentReferences,
2729
2871
  modelId,
2872
+ resolvedModelId,
2730
2873
  domNode: undefined
2731
2874
  });
2732
2875
  }
@@ -2823,7 +2966,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2823
2966
  })
2824
2967
  );
2825
2968
  markdownPart.addDisposable(
2826
- this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(7656, "Click to Edit")), {
2969
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(8210, "Click to Edit")), {
2827
2970
  trapFocus: true
2828
2971
  })
2829
2972
  );
@@ -2851,7 +2994,9 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
2851
2994
  domNode: markdownPart.domNode,
2852
2995
  disposable: markdownPart
2853
2996
  }), markdownPart.codeblocksPartId, markdown, templateData.value, markdownPart);
2854
- return subagentPart;
2997
+ return this.renderNoContent(
2998
+ other => other.kind === "markdownContent" && other.content.value === markdown.content.value && extractSubAgentInvocationIdFromText(other.content.value) === subAgentInvocationId
2999
+ );
2855
3000
  }
2856
3001
  }
2857
3002
  const lastThinking = this.getLastThinkingPart(templateData.renderedParts);
@@ -2994,6 +3139,9 @@ class ChatListDelegate extends CachedListVirtualDelegate {
2994
3139
  hasDynamicHeight(element) {
2995
3140
  return true;
2996
3141
  }
3142
+ getMeasuredHeight(element) {
3143
+ return this.getCachedHeight(element);
3144
+ }
2997
3145
  }
2998
3146
  function isParentSubagentTool(invocation) {
2999
3147
  return invocation.toolSpecificData?.kind === "subagent" && !invocation.subAgentInvocationId;
@@ -3007,5 +3155,25 @@ function getSubagentId(invocation) {
3007
3155
  function isSubagentToolInvocation(invocation) {
3008
3156
  return !!getSubagentId(invocation);
3009
3157
  }
3158
+ function getWorkingProgressRelevantParts(parts) {
3159
+ return parts.filter(part => {
3160
+ if (part.kind === "toolInvocation" || part.kind === "toolInvocationSerialized") {
3161
+ return !isSubagentToolInvocation(part);
3162
+ }
3163
+ if (part.kind === "hook") {
3164
+ return !part.subAgentInvocationId;
3165
+ }
3166
+ return part.kind !== "markdownContent" || !extractSubAgentInvocationIdFromText(part.content.value);
3167
+ });
3168
+ }
3169
+ function findLastMeaningfulPart(parts) {
3170
+ for (let i = parts.length - 1; i >= 0; i--) {
3171
+ const part = parts[i];
3172
+ if (part.kind !== "markdownContent" || part.content.value.trim().length > 0) {
3173
+ return part;
3174
+ }
3175
+ }
3176
+ return undefined;
3177
+ }
3010
3178
 
3011
- export { ChatListDelegate, ChatListItemRenderer, shouldScheduleInitialHeightChange };
3179
+ export { ChatListDelegate, ChatListItemRenderer, buildPlanReviewProgressContent, getWorkingProgressRelevantParts, shouldHideChatUserIdentity, shouldRenderInitialProgressiveContentImmediately, shouldScheduleInitialHeightChange };