@codingame/monaco-vscode-katex-common 34.1.3 → 35.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 (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
@@ -131,6 +131,7 @@ export declare class ChatListWidget extends Disposable {
131
131
  */
132
132
  get onDidFocusOutside(): Event<void>;
133
133
  private readonly _tree;
134
+ private readonly _delegate;
134
135
  private readonly _renderer;
135
136
  private _viewModel;
136
137
  private _visible;
@@ -140,7 +140,7 @@ let ChatListWidget = class ChatListWidget extends Disposable {
140
140
  options.inputEditorBackground ?? "chat.requestEditor.background",
141
141
  options.resultEditorBackground ?? "chat.responseEditor.background"
142
142
  ));
143
- const delegate = scopedInstantiationService.createInstance(ChatListDelegate, options.defaultElementHeight ?? 200);
143
+ this._delegate = scopedInstantiationService.createInstance(ChatListDelegate, options.defaultElementHeight ?? 200);
144
144
  const rendererDelegate = {
145
145
  getListLength: () => this._tree.getNode(null).visibleChildrenCount,
146
146
  onDidScroll: this.onDidScroll,
@@ -188,7 +188,7 @@ let ChatListWidget = class ChatListWidget extends Disposable {
188
188
  WorkbenchObjectTree,
189
189
  "ChatList",
190
190
  this._container,
191
- delegate,
191
+ this._delegate,
192
192
  [this._renderer],
193
193
  {
194
194
  identityProvider: {
@@ -312,6 +312,8 @@ let ChatListWidget = class ChatListWidget extends Disposable {
312
312
  const items = this._viewModel.getItems();
313
313
  this._lastItem = items.at(-1);
314
314
  this._lastItemIdContextKey.set(this._lastItem ? [this._lastItem.id] : []);
315
+ const previousItem = items.at(-2);
316
+ const needsInitialPreviousItemHeight = (isRequestVM(previousItem) || isResponseVM(previousItem)) && previousItem.currentRenderedHeight === undefined;
315
317
  const treeItems = ( items.map(item => ({
316
318
  element: item,
317
319
  collapsed: false,
@@ -337,6 +339,9 @@ let ChatListWidget = class ChatListWidget extends Disposable {
337
339
  }
338
340
  });
339
341
  });
342
+ if (needsInitialPreviousItemHeight) {
343
+ this.updateLastItemMinHeight();
344
+ }
340
345
  }
341
346
  setScrollLock(value) {
342
347
  this._scrollLock = value;
@@ -511,7 +516,7 @@ let ChatListWidget = class ChatListWidget extends Disposable {
511
516
  const secondToLastItem = this._viewModel?.getItems().at(-2);
512
517
  const maxRequestShownHeight = 200;
513
518
  const secondToLastItemHeight = Math.min(
514
- (isRequestVM(secondToLastItem) || isResponseVM(secondToLastItem)) ? secondToLastItem.currentRenderedHeight ?? 150 : 150,
519
+ (isRequestVM(secondToLastItem) || isResponseVM(secondToLastItem)) ? secondToLastItem.currentRenderedHeight ?? this._delegate.getMeasuredHeight(secondToLastItem) ?? 150 : 150,
515
520
  maxRequestShownHeight
516
521
  );
517
522
  const lastItemMinHeight = Math.max(contentHeight - (secondToLastItemHeight + 10), 0);
@@ -0,0 +1,32 @@
1
+ import { IMenuEntryActionViewItemOptions, MenuEntryActionViewItem } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem";
2
+ import { MenuItemAction } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
3
+ import { IAccessibilityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service";
4
+ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
5
+ import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
6
+ import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
7
+ import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service";
8
+ import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
9
+ /**
10
+ * Action view item for the "Restore Checkpoint" action that adds an inline
11
+ * confirmation affordance: when the current request (and the requests after it)
12
+ * have edits that would be discarded, the first click does not restore but
13
+ * instead turns the button into a "Confirm" button with an adjacent "Cancel"
14
+ * button. A second click on "Confirm" runs the restore, while "Cancel" (or
15
+ * losing focus / pressing Escape) reverts the button to its default state.
16
+ *
17
+ * This gives a lightweight, in-place warning for sessions (such as agent host
18
+ * sessions) where the modal removal-confirmation dialog does not apply.
19
+ */
20
+ export declare class ChatRestoreCheckpointActionViewItem extends MenuEntryActionViewItem {
21
+ private readonly _needsConfirmation;
22
+ private _confirming;
23
+ private _cancelButton;
24
+ private readonly _confirmDisposables;
25
+ constructor(action: MenuItemAction, options: IMenuEntryActionViewItemOptions | undefined, _needsConfirmation: (context: unknown) => boolean, keybindingService: IKeybindingService, notificationService: INotificationService, contextKeyService: IContextKeyService, themeService: IThemeService, contextMenuService: IContextMenuService, accessibilityService: IAccessibilityService);
26
+ render(container: HTMLElement): void;
27
+ onClick(event: MouseEvent): Promise<void>;
28
+ private _setConfirming;
29
+ private _updateConfirmUI;
30
+ protected updateLabel(): void;
31
+ protected getTooltip(): string;
32
+ }
@@ -0,0 +1,135 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { append, $, reset, addDisposableListener, EventType, EventHelper } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
5
+ import { renderLabelWithIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
6
+ import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
7
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
+ import { MenuEntryActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
10
+ import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
11
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
12
+ import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
13
+ import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
14
+ import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
15
+ import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
16
+
17
+ let ChatRestoreCheckpointActionViewItem = class ChatRestoreCheckpointActionViewItem extends MenuEntryActionViewItem {
18
+ constructor(
19
+ action,
20
+ options,
21
+ _needsConfirmation,
22
+ keybindingService,
23
+ notificationService,
24
+ contextKeyService,
25
+ themeService,
26
+ contextMenuService,
27
+ accessibilityService
28
+ ) {
29
+ super(
30
+ action,
31
+ options,
32
+ keybindingService,
33
+ notificationService,
34
+ contextKeyService,
35
+ themeService,
36
+ contextMenuService,
37
+ accessibilityService
38
+ );
39
+ this._needsConfirmation = _needsConfirmation;
40
+ this._confirming = false;
41
+ this._confirmDisposables = this._register(( new DisposableStore()));
42
+ }
43
+ render(container) {
44
+ super.render(container);
45
+ container.classList.add("chat-restore-checkpoint-item");
46
+ const cancelButton = this._cancelButton = append(container, $("a.action-label.chat-restore-checkpoint-cancel"));
47
+ cancelButton.setAttribute("role", "button");
48
+ cancelButton.tabIndex = -1;
49
+ reset(cancelButton, ...renderLabelWithIcons(`$(close)`));
50
+ const cancelLabel = ( localize(8211, "Cancel restoring this checkpoint"));
51
+ cancelButton.title = cancelLabel;
52
+ cancelButton.setAttribute("aria-label", cancelLabel);
53
+ this._register(addDisposableListener(cancelButton, EventType.CLICK, e => {
54
+ EventHelper.stop(e, true);
55
+ this._setConfirming(false);
56
+ this.label?.focus();
57
+ }));
58
+ this._register(addDisposableListener(container, EventType.KEY_DOWN, e => {
59
+ const event = ( new StandardKeyboardEvent(e));
60
+ if (!event.equals(KeyCode.Enter) && !event.equals(KeyCode.Space)) {
61
+ return;
62
+ }
63
+ if (this._confirming) {
64
+ EventHelper.stop(e, true);
65
+ this._setConfirming(false);
66
+ void super.onClick(( new MouseEvent("click")));
67
+ return;
68
+ }
69
+ if (this._needsConfirmation(this._context)) {
70
+ EventHelper.stop(e, true);
71
+ this._setConfirming(true);
72
+ }
73
+ }));
74
+ this._updateConfirmUI();
75
+ }
76
+ async onClick(event) {
77
+ if (this._confirming) {
78
+ this._setConfirming(false);
79
+ return super.onClick(event);
80
+ }
81
+ if (this._needsConfirmation(this._context)) {
82
+ event.preventDefault();
83
+ event.stopPropagation();
84
+ this._setConfirming(true);
85
+ return;
86
+ }
87
+ return super.onClick(event);
88
+ }
89
+ _setConfirming(value) {
90
+ if (this._confirming === value) {
91
+ return;
92
+ }
93
+ this._confirming = value;
94
+ this._confirmDisposables.clear();
95
+ if (value && this.element) {
96
+ this._confirmDisposables.add(addDisposableListener(this.element, EventType.FOCUS_OUT, e => {
97
+ const next = e.relatedTarget;
98
+ if (!next || !this.element?.contains(next)) {
99
+ this._setConfirming(false);
100
+ }
101
+ }));
102
+ this._confirmDisposables.add(addDisposableListener(this.element, EventType.KEY_DOWN, e => {
103
+ const event = ( new StandardKeyboardEvent(e));
104
+ if (event.equals(KeyCode.Escape)) {
105
+ EventHelper.stop(e, true);
106
+ this._setConfirming(false);
107
+ this.label?.focus();
108
+ }
109
+ }));
110
+ }
111
+ this._updateConfirmUI();
112
+ }
113
+ _updateConfirmUI() {
114
+ this.element?.classList.toggle("confirming", this._confirming);
115
+ this._cancelButton?.classList.toggle("hidden", !this._confirming);
116
+ this.updateLabel();
117
+ this.updateTooltip();
118
+ }
119
+ updateLabel() {
120
+ if (this._confirming && this.label) {
121
+ reset(this.label, ...renderLabelWithIcons(`${( localize(8212, "Discard Edits"))}`));
122
+ return;
123
+ }
124
+ super.updateLabel();
125
+ }
126
+ getTooltip() {
127
+ if (this._confirming) {
128
+ return localize(8213, "Confirm restoring this checkpoint and discarding later edits");
129
+ }
130
+ return super.getTooltip();
131
+ }
132
+ };
133
+ ChatRestoreCheckpointActionViewItem = ( __decorate([( __param(3, IKeybindingService)), ( __param(4, INotificationService)), ( __param(5, IContextKeyService)), ( __param(6, IThemeService)), ( __param(7, IContextMenuService)), ( __param(8, IAccessibilityService))], ChatRestoreCheckpointActionViewItem));
134
+
135
+ export { ChatRestoreCheckpointActionViewItem };
@@ -0,0 +1,85 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
+ import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
5
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
6
+ import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
7
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
8
+ import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
9
+ import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
10
+ /** Aggregate diff counts shown in the changes pill (scoped to a single turn). */
11
+ export interface IDiffStats {
12
+ readonly files: number;
13
+ readonly insertions: number;
14
+ readonly deletions: number;
15
+ }
16
+ export declare const EMPTY_DIFF_STATS: IDiffStats;
17
+ /** A markdown/HTML file the preview pill can open. */
18
+ export interface IPreviewFile {
19
+ readonly uri: URI;
20
+ readonly kind: "markdown" | "html";
21
+ /** Whether the file was created (vs. edited) during the turn. */
22
+ readonly created: boolean;
23
+ }
24
+ /** Classify a resource as a previewable markdown or HTML file, if applicable. */
25
+ export declare function previewKind(uri: URI): "markdown" | "html" | undefined;
26
+ export declare function diffStatsEqual(a: IDiffStats, b: IDiffStats): boolean;
27
+ export declare function previewFilesEqual(a: readonly IPreviewFile[], b: readonly IPreviewFile[]): boolean;
28
+ /**
29
+ * Open a previewable file: markdown files open as a markdown preview, HTML files
30
+ * open in the integrated browser (desktop only), falling back to the default
31
+ * opener when neither is available (e.g. web).
32
+ */
33
+ export declare function openChatPreviewFile(file: IPreviewFile, commandService: ICommandService, openerService: IOpenerService, logService: ILogService): Promise<void>;
34
+ /** The data and interactions a {@link ChatTurnPillsWidget} reflects. */
35
+ export interface IChatTurnPillsModel {
36
+ readonly stats: IObservable<IDiffStats>;
37
+ readonly previewFiles: IObservable<readonly IPreviewFile[]>;
38
+ /** When `false` the changes pill stays hidden regardless of the data. */
39
+ readonly changesEnabled: IObservable<boolean>;
40
+ /** When `false` the preview pill stays hidden regardless of the data. */
41
+ readonly previewEnabled: IObservable<boolean>;
42
+ openChanges(): void;
43
+ openPreviewFile(file: IPreviewFile): void;
44
+ }
45
+ /** Per-pill visibility for the agent turn status pills ({@link ChatConfiguration.TurnStatusPills}). */
46
+ export interface IChatTurnStatusPillsConfig {
47
+ readonly changes: boolean;
48
+ readonly preview: boolean;
49
+ }
50
+ /** Observe the per-pill turn status pills visibility setting. */
51
+ export declare function observeTurnStatusPillsConfig(configurationService: IConfigurationService): IObservable<IChatTurnStatusPillsConfig>;
52
+ /**
53
+ * A toolbar of clickable pills reflecting a single turn's status. Used both as a
54
+ * floating widget above the chat input (live, active turn) and inside a completed
55
+ * chat response. The pills are actions inside a {@link ToolBar}:
56
+ *
57
+ * - **Changes** — `<n> Files +ins -del` for the turn. Activating it opens the
58
+ * changes.
59
+ * - **Preview** — shown when the turn created or edited a markdown or HTML file.
60
+ * Rendered as a resource label (file icon + name) with a "preview" description
61
+ * for the primary file. Activating it opens that file as a markdown preview or
62
+ * in the integrated browser; when several exist, a dropdown lists them all.
63
+ *
64
+ * The data and the open actions are supplied by the {@link IChatTurnPillsModel}
65
+ * so the same widget serves surfaces with different data sources.
66
+ */
67
+ export declare class ChatTurnPillsWidget extends Disposable {
68
+ private readonly _model;
69
+ private readonly _contextMenuService;
70
+ readonly element: HTMLElement;
71
+ /** Whether the widget currently has any pill to show. */
72
+ readonly isVisible: IObservable<boolean>;
73
+ private readonly _toolbar;
74
+ private readonly _changesAction;
75
+ private readonly _previewAction;
76
+ private readonly _resourceLabels;
77
+ /** Ids of the currently mounted pills, so we only rebuild the toolbar when the set changes. */
78
+ private _visibleSignature;
79
+ constructor(_model: IChatTurnPillsModel, _contextMenuService: IContextMenuService, instantiationService: IInstantiationService);
80
+ private _showChanges;
81
+ private _showPreview;
82
+ private _updateVisibleActions;
83
+ private _openPrimaryPreview;
84
+ private _showAllPreviews;
85
+ }
@@ -0,0 +1,275 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import { reset, $, append } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { ActionsOrientation } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
6
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
7
+ import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
8
+ import { ToolBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toolbar/toolbar';
9
+ import { Action, toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
10
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
11
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
12
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
13
+ import { isEqual, basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
14
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
15
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
16
+ import { BrowserViewCommandId } from '@codingame/monaco-vscode-api/vscode/vs/platform/browserView/common/browserView';
17
+ import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
18
+ import { FileKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
19
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
20
+ import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
21
+ import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
22
+ import { ResourceLabels, DEFAULT_LABELS_CONTAINER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/labels';
23
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
24
+ import * as chatTurnPills from '../media/chatTurnPills.css';
25
+ import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
26
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
27
+
28
+ registerCss(chatTurnPills);
29
+ const CHANGES_PILL_ACTION_ID = "chat.turnPills.changes";
30
+ const PREVIEW_PILL_ACTION_ID = "chat.turnPills.preview";
31
+ const TRANSPARENT_BUTTON_STYLES = {
32
+ buttonBackground: undefined,
33
+ buttonHoverBackground: undefined,
34
+ buttonForeground: undefined,
35
+ buttonSeparator: undefined,
36
+ buttonSecondaryBackground: undefined,
37
+ buttonSecondaryHoverBackground: undefined,
38
+ buttonSecondaryForeground: undefined,
39
+ buttonSecondaryBorder: undefined,
40
+ buttonBorder: undefined
41
+ };
42
+ const EMPTY_DIFF_STATS = {
43
+ files: 0,
44
+ insertions: 0,
45
+ deletions: 0
46
+ };
47
+ function previewKind(uri) {
48
+ const path = uri.path.toLowerCase();
49
+ if (path.endsWith(".md") || path.endsWith(".markdown")) {
50
+ return "markdown";
51
+ }
52
+ if (path.endsWith(".html") || path.endsWith(".htm")) {
53
+ return "html";
54
+ }
55
+ return undefined;
56
+ }
57
+ function diffStatsEqual(a, b) {
58
+ return a.files === b.files && a.insertions === b.insertions && a.deletions === b.deletions;
59
+ }
60
+ function previewFilesEqual(a, b) {
61
+ if (a.length !== b.length) {
62
+ return false;
63
+ }
64
+ for (let i = 0; i < a.length; i++) {
65
+ if (a[i].kind !== b[i].kind || a[i].created !== b[i].created || !isEqual(a[i].uri, b[i].uri)) {
66
+ return false;
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ async function openChatPreviewFile(file, commandService, openerService, logService) {
72
+ try {
73
+ if (file.kind === "markdown") {
74
+ await commandService.executeCommand("markdown.showPreview", file.uri);
75
+ } else {
76
+ await commandService.executeCommand(BrowserViewCommandId.Open, ( file.uri.toString()));
77
+ }
78
+ } catch (err) {
79
+ logService.trace("[ChatTurnPills] Falling back to default opener for preview", err);
80
+ await openerService.open(file.uri);
81
+ }
82
+ }
83
+ const TURN_STATUS_PILLS_DEFAULT = {
84
+ changes: false,
85
+ preview: false
86
+ };
87
+ function observeTurnStatusPillsConfig(configurationService) {
88
+ return observableConfigValue(
89
+ ChatConfiguration.TurnStatusPills,
90
+ TURN_STATUS_PILLS_DEFAULT,
91
+ configurationService
92
+ );
93
+ }
94
+ class ChangesPillActionViewItem extends BaseActionViewItem {
95
+ constructor(action, options, _statsObs) {
96
+ super(undefined, action, options);
97
+ this._statsObs = _statsObs;
98
+ }
99
+ render(container) {
100
+ this.element = container;
101
+ container.classList.add("chat-turn-pill-changes");
102
+ const button = this._button = this._register(( new Button(container, {
103
+ secondary: true,
104
+ small: true,
105
+ ...defaultButtonStyles
106
+ })));
107
+ button.element.classList.add("monaco-text-button", "chat-turn-pill-changes-button");
108
+ this._register(button.onDidClick(() => {
109
+ if (this._action.enabled) {
110
+ this.actionRunner.run(this._action, this._context);
111
+ }
112
+ }));
113
+ this._register(autorun(reader => {
114
+ this._statsObs.read(reader);
115
+ this._updateLabel();
116
+ }));
117
+ }
118
+ _updateLabel() {
119
+ if (!this._button) {
120
+ return;
121
+ }
122
+ const {
123
+ files,
124
+ insertions,
125
+ deletions
126
+ } = this._statsObs.get();
127
+ const filesLabel = files === 1 ? ( localize(8214, "{0} File", files)) : ( localize(8215, "{0} Files", files));
128
+ reset(this._button.element, $(
129
+ `span.chat-turn-pill-meta-icon${ThemeIcon.asCSSSelector(Codicon.diffMultiple)}`
130
+ ), $("span.chat-turn-pill-meta-label", undefined, filesLabel), $("span.chat-turn-pill-meta-added", undefined, `+${insertions}`), $("span.chat-turn-pill-meta-removed", undefined, `-${deletions}`));
131
+ this._button.setTitle(( localize(8216, "View Changes")));
132
+ this._button.element.setAttribute("aria-label", ( localize(8217, "View Changes: {0}, +{1}, -{2}", filesLabel, insertions, deletions)));
133
+ }
134
+ focus() {
135
+ this._button?.focus();
136
+ }
137
+ }
138
+ class PreviewPillActionViewItem extends BaseActionViewItem {
139
+ constructor(action, options, _previewFilesObs, _resourceLabels, _openFile, _showAll) {
140
+ super(undefined, action, options);
141
+ this._previewFilesObs = _previewFilesObs;
142
+ this._resourceLabels = _resourceLabels;
143
+ this._openFile = _openFile;
144
+ this._showAll = _showAll;
145
+ }
146
+ render(container) {
147
+ this.element = container;
148
+ container.classList.add("chat-turn-pill-preview");
149
+ const primary = this._primary = this._register(( new Button(container, {
150
+ ...TRANSPARENT_BUTTON_STYLES
151
+ })));
152
+ primary.element.classList.add("chat-turn-pill-preview-primary");
153
+ const label = this._register(this._resourceLabels.create(primary.element));
154
+ this._register(primary.onDidClick(() => {
155
+ const primaryFile = this._previewFilesObs.get().at(0);
156
+ if (primaryFile) {
157
+ this._openFile(primaryFile);
158
+ }
159
+ }));
160
+ const separator = append(container, $(".chat-turn-pill-preview-separator"));
161
+ const chevron = this._register(( new Button(container, {
162
+ ...TRANSPARENT_BUTTON_STYLES
163
+ })));
164
+ chevron.element.classList.add("chat-turn-pill-preview-chevron");
165
+ append(chevron.element, $(`span${ThemeIcon.asCSSSelector(Codicon.chevronDown)}`));
166
+ const moreLabel = ( localize(8218, "Show All Previewable Files"));
167
+ chevron.setTitle(moreLabel);
168
+ chevron.setAriaLabel(moreLabel);
169
+ this._register(chevron.onDidClick(() => this._showAll(chevron.element)));
170
+ this._register(autorun(reader => {
171
+ const files = this._previewFilesObs.read(reader);
172
+ const primaryFile = files.at(0);
173
+ if (primaryFile) {
174
+ label.setResource({
175
+ resource: primaryFile.uri,
176
+ name: basename(primaryFile.uri),
177
+ description: ( localize(8219, "preview"))
178
+ }, {
179
+ fileKind: FileKind.FILE
180
+ });
181
+ const tooltip = ( localize(8220, "Open Preview: {0}", basename(primaryFile.uri)));
182
+ primary.setTitle(tooltip);
183
+ primary.setAriaLabel(tooltip);
184
+ }
185
+ const hasMultiple = files.length > 1;
186
+ separator.classList.toggle("hidden", !hasMultiple);
187
+ chevron.element.classList.toggle("hidden", !hasMultiple);
188
+ }));
189
+ }
190
+ focus() {
191
+ this._primary?.focus();
192
+ }
193
+ }
194
+ let ChatTurnPillsWidget = class ChatTurnPillsWidget extends Disposable {
195
+ constructor(_model, _contextMenuService, instantiationService) {
196
+ super();
197
+ this._model = _model;
198
+ this._contextMenuService = _contextMenuService;
199
+ this.element = $(".chat-turn-pills.show-file-icons.hidden");
200
+ this._resourceLabels = this._register(
201
+ instantiationService.createInstance(ResourceLabels, DEFAULT_LABELS_CONTAINER)
202
+ );
203
+ this._changesAction = this._register(( new Action(CHANGES_PILL_ACTION_ID, ( localize(8216, "View Changes")), undefined, true, async () => this._model.openChanges())));
204
+ this._previewAction = this._register(( new Action(PREVIEW_PILL_ACTION_ID, ( localize(8221, "Open Preview")), undefined, true, async () => this._openPrimaryPreview())));
205
+ this._toolbar = this._register(( new ToolBar(this.element, this._contextMenuService, {
206
+ orientation: ActionsOrientation.HORIZONTAL,
207
+ ariaLabel: ( localize(8222, "Turn status")),
208
+ actionViewItemProvider: (action, options) => {
209
+ if (action.id === CHANGES_PILL_ACTION_ID) {
210
+ return ( new ChangesPillActionViewItem(action, options, this._model.stats));
211
+ }
212
+ if (action.id === PREVIEW_PILL_ACTION_ID) {
213
+ return ( new PreviewPillActionViewItem(
214
+ action,
215
+ options,
216
+ this._model.previewFiles,
217
+ this._resourceLabels,
218
+ file => this._model.openPreviewFile(file),
219
+ anchor => this._showAllPreviews(anchor)
220
+ ));
221
+ }
222
+ return undefined;
223
+ }
224
+ })));
225
+ this.isVisible = derived(this, reader => this._showChanges(reader) || this._showPreview(reader));
226
+ this._register(autorun(reader => {
227
+ this._updateVisibleActions(this._showChanges(reader), this._showPreview(reader));
228
+ }));
229
+ }
230
+ _showChanges(reader) {
231
+ return this._model.changesEnabled.read(reader) && this._model.stats.read(reader).files > 0;
232
+ }
233
+ _showPreview(reader) {
234
+ return this._model.previewEnabled.read(reader) && this._model.previewFiles.read(reader).length > 0;
235
+ }
236
+ _updateVisibleActions(showChanges, showPreview) {
237
+ const actions = [];
238
+ if (showChanges) {
239
+ actions.push(this._changesAction);
240
+ }
241
+ if (showPreview) {
242
+ actions.push(this._previewAction);
243
+ }
244
+ const signature = ( actions.map(a => a.id)).join(",");
245
+ if (signature !== this._visibleSignature) {
246
+ this._visibleSignature = signature;
247
+ this._toolbar.setActions(actions);
248
+ }
249
+ this.element.classList.toggle("hidden", actions.length === 0);
250
+ }
251
+ _openPrimaryPreview() {
252
+ const primaryFile = this._model.previewFiles.get().at(0);
253
+ if (primaryFile) {
254
+ this._model.openPreviewFile(primaryFile);
255
+ }
256
+ }
257
+ _showAllPreviews(anchor) {
258
+ const files = this._model.previewFiles.get();
259
+ if (files.length === 0) {
260
+ return;
261
+ }
262
+ this._contextMenuService.showContextMenu({
263
+ getAnchor: () => anchor,
264
+ getActions: () => ( files.map(file => toAction({
265
+ id: `${PREVIEW_PILL_ACTION_ID}.${( file.uri.toString())}`,
266
+ label: basename(file.uri),
267
+ class: ThemeIcon.asClassName(file.kind === "html" ? Codicon.globe : Codicon.openPreview),
268
+ run: () => this._model.openPreviewFile(file)
269
+ })))
270
+ });
271
+ }
272
+ };
273
+ ChatTurnPillsWidget = ( __decorate([( __param(1, IContextMenuService)), ( __param(2, IInstantiationService))], ChatTurnPillsWidget));
274
+
275
+ export { ChatTurnPillsWidget, EMPTY_DIFF_STATS, diffStatsEqual, observeTurnStatusPillsConfig, openChatPreviewFile, previewFilesEqual, previewKind };
@@ -158,12 +158,16 @@ export declare class ChatWidget extends Disposable implements IChatWidget {
158
158
  private agentInInput;
159
159
  private _visible;
160
160
  get visible(): boolean;
161
+ private _inputVisible;
161
162
  private _instructionFilesCheckPromise;
162
163
  private _instructionFilesExist;
163
164
  private _isRenderingWelcome;
164
165
  private _lockedAgent?;
165
166
  private readonly _lockedToCodingAgentContextKey;
166
167
  private readonly _lockedCodingAgentIdContextKey;
168
+ private readonly _readOnlyContextKey;
169
+ private readonly _chatIsAgentHostSessionContextKey;
170
+ private readonly _chatAgentHostProviderIdContextKey;
167
171
  private readonly _chatSessionSupportsForkContextKey;
168
172
  private readonly _agentSupportsAttachmentsContextKey;
169
173
  private readonly _sessionIsEmptyContextKey;
@@ -257,6 +261,19 @@ export declare class ChatWidget extends Disposable implements IChatWidget {
257
261
  */
258
262
  private _handleDelegationExit;
259
263
  private archiveLocalParentSession;
264
+ /**
265
+ * Mark the chat shown in this widget as read-only (non-interactive) or not.
266
+ * Read-only chats hide the composer and expose a context key so mutating
267
+ * actions (e.g. Start Over, Restore Checkpoint) are not offered.
268
+ */
269
+ setReadOnly(readOnly: boolean): void;
270
+ /**
271
+ * Show or hide the input part. Hidden inputs are removed from the DOM flow
272
+ * and not reserved during layout so the message list takes the full height.
273
+ * Used to render read-only (non-interactive) chats without a composer.
274
+ */
275
+ setInputVisible(visible: boolean): void;
276
+ private _applyInputVisibility;
260
277
  setVisible(visible: boolean): void;
261
278
  private createList;
262
279
  startEditing(requestId: string): void;
@@ -282,7 +299,7 @@ export declare class ChatWidget extends Disposable implements IChatWidget {
282
299
  setInput(value?: string): void;
283
300
  getInput(): string;
284
301
  getContrib<T extends IChatWidgetContrib>(id: string): T | undefined;
285
- lockToCodingAgent(name: string, displayName: string, agentId: string): void;
302
+ lockToCodingAgent(name: string, displayName: string, agentId: string, agentHostProviderId?: string): void;
286
303
  unlockFromCodingAgent(): void;
287
304
  get isLockedToCodingAgent(): boolean;
288
305
  get lockedAgentId(): string | undefined;