@codingame/monaco-vscode-katex-common 34.1.2 → 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
@@ -0,0 +1,211 @@
1
+ import { IMarkdownString, MarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
2
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
+ import { type ActiveTurn, type ICompletedToolCall, type Message, type ToolCallState, type Turn, FileEditKind, type ToolResultContent, type UsageInfo } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionState";
4
+ import { IChatErrorContext } from "../../../common/chatErrorMessages.js";
5
+ import { type MessageAttachment, type StringOrMarkdown } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/state";
6
+ import { type IChatProgress, type IChatToolInvocationSerialized, type IChatUsage } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
7
+ import { type IChatSessionHistoryItem } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService";
8
+ import { type IQuotaSnapshot } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService";
9
+ import { ChatToolInvocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation";
10
+ import { type IChatRequestVariableData } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel";
11
+ /**
12
+ * Constructs a terminal tool session ID from a terminal URI and backend session.
13
+ * The ID is a JSON string containing both so consumers can parse out either.
14
+ */
15
+ export declare function makeAhpTerminalToolSessionId(terminalUri: string, session: URI): string;
16
+ /**
17
+ * Parses a terminal tool session ID back into its terminal and session URIs.
18
+ */
19
+ export declare function parseAhpTerminalToolSessionId(id: string): {
20
+ terminal: string;
21
+ session: string;
22
+ } | undefined;
23
+ export declare function isSubagentToolName(toolName: string): boolean;
24
+ export declare function systemNotificationToChatPart(content: StringOrMarkdown | undefined, connectionAuthority: string): IChatProgress | undefined;
25
+ /**
26
+ * Returns true if this tool call spawns a subagent session, either because
27
+ * the server reported `_meta.toolKind === 'subagent'` or because the tool
28
+ * name is in the known fallback set (older snapshots without `_meta`).
29
+ */
30
+ export declare function isSubagentTool(tc: ToolCallState): boolean;
31
+ /**
32
+ * Finds a terminal content block in a tool call's content array.
33
+ * Returns the terminal URI if found.
34
+ */
35
+ export declare function getTerminalContentUri(content: ToolResultContent[] | undefined): string | undefined;
36
+ /**
37
+ * Resolves a raw per-turn model id (as it appears on `UsageInfo.model`) into
38
+ * the chat layer's namespaced language-model id and a human-readable display
39
+ * details. Both halves are independent: the id flows onto request history
40
+ * items (so the input picker shows the model that ran), while the details
41
+ * flow onto response history items (so the response footer shows the model
42
+ * and any usage metadata).
43
+ */
44
+ export interface TurnModelLookup {
45
+ /** Returns the chat-layer namespaced model id for a raw AHP model id. */
46
+ toLanguageModelId(rawModelId: string | undefined): string | undefined;
47
+ /** Returns the human-readable response details, or undefined if unknown. */
48
+ toResponseDetails(rawModelId: string | undefined, usage: UsageInfo | undefined): string | undefined;
49
+ }
50
+ /** Minimal model metadata needed to render a turn's response footer (kept small for unit testing). */
51
+ export interface ITurnResponseModel {
52
+ readonly name: string;
53
+ readonly pricing?: string;
54
+ }
55
+ /**
56
+ * Formats a turn's response footer: the model display name plus usage metadata (credits or pricing).
57
+ * `model` is the resolved model; `billedModelId` is the turn's `usage.model` when it didn't resolve to a
58
+ * registered model (e.g. an "Auto" pick billed as `raptor-mini`), shown inline as `Auto (raptor-mini)`.
59
+ * Returns `undefined` when the model is unknown.
60
+ */
61
+ export declare function formatTurnResponseDetails(model: ITurnResponseModel | undefined, billedModelId: string | undefined, usage: UsageInfo | undefined): string | undefined;
62
+ export declare function usageInfoToChatUsage(usage: UsageInfo | undefined): IChatUsage | undefined;
63
+ /**
64
+ * A partial quota update derived from a usage report's `_meta.quotaSnapshots`. Structurally a
65
+ * subset of the entitlement service's quota state, so callers merge it onto the existing quotas.
66
+ */
67
+ export interface IAgentHostQuotaUpdate {
68
+ readonly chat?: IQuotaSnapshot;
69
+ readonly completions?: IQuotaSnapshot;
70
+ readonly premiumChat?: IQuotaSnapshot;
71
+ readonly additionalUsageEnabled?: boolean;
72
+ readonly additionalUsageCount?: number;
73
+ readonly resetDate?: string;
74
+ }
75
+ /**
76
+ * Maps the per-category quota snapshots carried on a usage report's `_meta.quotaSnapshots`
77
+ * (reported by the model-call usage event) into a partial quota update for the entitlement
78
+ * service. Returns `undefined` when no usable snapshot is present.
79
+ */
80
+ export declare function usageInfoToQuotas(usage: UsageInfo | undefined): IAgentHostQuotaUpdate | undefined;
81
+ /**
82
+ * Converts completed turns from the protocol state into session history items.
83
+ *
84
+ * Per turn, prefers `turn.usage?.model` so each request/response pair shows
85
+ * the model that actually ran, even if the user changed models mid-session.
86
+ * The `lookup` callback is responsible for any session-level fallback (e.g.
87
+ * `summary.model?.id` when usage hasn't reported a model yet).
88
+ */
89
+ export declare function turnsToHistory(backendSession: URI, turns: readonly Turn[], participantId: string, connectionAuthority: string, lookup?: TurnModelLookup, errorContext?: IChatErrorContext): IChatSessionHistoryItem[];
90
+ /**
91
+ * Converts a turn's persisted {@link Message} into the chat-layer
92
+ * {@link IChatRequestVariableData} shape so attachments survive a
93
+ * history replay (and pending/server-initiated turn synthesis). Returns
94
+ * `undefined` when the message has no convertible attachments.
95
+ */
96
+ export declare function messageToVariableData(message: Message, connectionAuthority: string): IChatRequestVariableData | undefined;
97
+ export declare function messageAttachmentsToVariableData(attachments: readonly MessageAttachment[] | undefined, connectionAuthority: string): IChatRequestVariableData | undefined;
98
+ /**
99
+ * Converts an active (in-progress) turn's accumulated state into progress
100
+ * items suitable for replaying into the chat UI when reconnecting to a
101
+ * session that is mid-turn.
102
+ *
103
+ * Returns serialized progress items for content already received (text,
104
+ * reasoning, completed tool calls) and live {@link ChatToolInvocation}
105
+ * objects for running tool calls and pending confirmations.
106
+ */
107
+ export declare function activeTurnToProgress(sessionResource: URI, activeTurn: ActiveTurn, connectionAuthority: string): IChatProgress[];
108
+ /**
109
+ * Converts a completed tool call from the protocol state into a serialized
110
+ * tool invocation suitable for history replay.
111
+ */
112
+ export declare function completedToolCallToSerialized(tc: ICompletedToolCall, subAgentInvocationId: string | undefined, sessionResource: URI, connectionAuthority: string): IChatToolInvocationSerialized;
113
+ /**
114
+ * Builds {@link IChatExternalEdit} progress parts for a completed tool call
115
+ * that produced file edits. Returns an empty array if the tool call has no
116
+ * edits. Each emitted part carries the URI, edit kind, before/after content
117
+ * URIs, and the diff stats already known from the agent host protocol —
118
+ * downstream rendering can produce a static "edit pill" without re-deriving
119
+ * any of this from an editing session.
120
+ *
121
+ * `connectionAuthority` is required so all emitted URIs are wrapped via
122
+ * {@link toAgentHostUri}; otherwise the chat session would receive raw
123
+ * remote URIs that its file system providers cannot resolve.
124
+ */
125
+ export declare function completedToolCallToEditParts(tc: ICompletedToolCall, connectionAuthority: string): IChatProgress[];
126
+ /**
127
+ * Rewrites inline markdown link URIs so that non-external schemes are wrapped
128
+ * in the `vscode-agent-host://` scheme, mirroring {@link toAgentHostUri}.
129
+ * This allows links in markdown content streamed from a remote agent host
130
+ * (e.g. `file:///...` or `agenthost-content:///...`) to resolve correctly on
131
+ * the client through the agent host filesystem provider.
132
+ *
133
+ * Links with external schemes (http, https, mailto, command, etc.) and
134
+ * relative/anchor-only links without a scheme are preserved as-is. The
135
+ * markdown is parsed with marked and each `link` / `image` token is
136
+ * rewritten individually, so link-looking text inside code spans or fenced
137
+ * code blocks is untouched (marked emits those as `code`/`codespan` tokens
138
+ * with no nested link tokens).
139
+ */
140
+ export declare function rewriteMarkdownLinks(markdown: string, connectionAuthority: string): string;
141
+ /**
142
+ * Wraps a raw markdown string into an {@link IMarkdownString}, rewriting
143
+ * link URIs through {@link rewriteMarkdownLinks} when a connection authority
144
+ * is provided.
145
+ */
146
+ export declare function rawMarkdownToString(content: string, connectionAuthority: string): MarkdownString;
147
+ /** Wraps an absolute path or internal URI target for the owning Agent Host connection. */
148
+ export declare function rewriteAgentHostLinkTarget(href: string, connectionAuthority: string): string;
149
+ /**
150
+ * Converts a protocol `StringOrMarkdown` value to a chat-layer `IMarkdownString`.
151
+ *
152
+ * When `connectionAuthority` is provided, markdown link URIs are rewritten
153
+ * through {@link rewriteMarkdownLinks} so that remote resources resolve
154
+ * through the agent host filesystem provider.
155
+ */
156
+ export declare function stringOrMarkdownToString(value: StringOrMarkdown, connectionAuthority: string): string | IMarkdownString;
157
+ export declare function stringOrMarkdownToString(value: StringOrMarkdown | undefined, connectionAuthority: string): string | IMarkdownString | undefined;
158
+ /**
159
+ * Creates a live {@link ChatToolInvocation} from the protocol's tool-call
160
+ * state. Used during active turns to represent running tool calls in the UI.
161
+ *
162
+ * @param connectionAuthority Sanitized connection identifier used when
163
+ * wrapping remote file URIs into `vscode-agent-host:` URIs. Omit to skip
164
+ * URI wrapping (e.g. in tests that don't exercise the confirmation UI).
165
+ */
166
+ export declare function toolCallStateToInvocation(tc: ToolCallState, subAgentInvocationId: string | undefined, sessionResource: URI, connectionAuthority: string): ChatToolInvocation;
167
+ /**
168
+ * Updates a running tool invocation's `toolSpecificData` based on the
169
+ * protocol tool call state. Handles terminal and subagent content detection.
170
+ *
171
+ * Called from the session handler when a tool transitions to Running state
172
+ * to set the initial `toolSpecificData`, or when content changes arrive.
173
+ */
174
+ export declare function updateRunningToolSpecificData(existing: ChatToolInvocation, tc: ToolCallState, sessionResource: URI, connectionAuthority: string): void;
175
+ /**
176
+ * Data returned by {@link finalizeToolInvocation} describing file edits
177
+ * that should be routed through the editing session's external edits pipeline.
178
+ */
179
+ export interface IToolCallFileEdit {
180
+ /** The kind of file operation. */
181
+ readonly kind: FileEditKind;
182
+ /** The primary file URI (after-URI for edits/creates/renames, before-URI for deletes). */
183
+ readonly resource: URI;
184
+ /** For renames, the original file URI before the move. */
185
+ readonly originalResource?: URI;
186
+ /** URI to read the before-snapshot content from. Absent for creates. */
187
+ readonly beforeContentUri?: URI;
188
+ /** URI to read the after-content from. Absent for deletes. */
189
+ readonly afterContentUri?: URI;
190
+ /** Undo stop ID for grouping edits. */
191
+ readonly undoStopId: string;
192
+ /** Optional diff display metadata. */
193
+ readonly diff?: {
194
+ added?: number;
195
+ removed?: number;
196
+ };
197
+ }
198
+ /**
199
+ * Updates a live {@link ChatToolInvocation} with completion data from the
200
+ * protocol's tool-call state, transitioning it to the completed state.
201
+ *
202
+ * Returns file edits that the caller should route through the editing
203
+ * session's external edits pipeline.
204
+ */
205
+ export declare function finalizeToolInvocation(invocation: ChatToolInvocation, tc: ToolCallState, backendSession: URI, connectionAuthority: string): IToolCallFileEdit[];
206
+ /**
207
+ * Extracts file edit content entries from a completed tool call and
208
+ * converts them to {@link IToolCallFileEdit} data for routing through
209
+ * the editing session's external edits pipeline.
210
+ */
211
+ export declare function fileEditsToExternalEdits(tc: ToolCallState): IToolCallFileEdit[];
@@ -0,0 +1,64 @@
1
+
2
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
3
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
4
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
6
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
7
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
8
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
9
+ import 'marked';
10
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
11
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
12
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/charCode';
13
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/marshallingIds';
14
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
15
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
16
+ import { getToolFileEdits, FileEditKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionState';
17
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/common/actions';
18
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-session/state';
19
+ import { ToolCallStatus } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-chat/state';
20
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-changeset/state';
21
+ import '../../../common/chatErrorMessages.js';
22
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-root/state';
23
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-terminal/state';
24
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-resource-watch/state';
25
+ import { normalizeFileEdit } from '../../../../../../platform/agentHost/common/fileEditDiff.js';
26
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
27
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
28
+ import '@codingame/monaco-vscode-api/vscode/vs/nls';
29
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
30
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
31
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
32
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
33
+
34
+ function fileEditsToExternalEdits(tc) {
35
+ if (tc.status !== ToolCallStatus.Completed) {
36
+ return [];
37
+ }
38
+ const edits = getToolFileEdits(tc);
39
+ if (edits.length === 0) {
40
+ return [];
41
+ }
42
+ return mapFileEdits(edits, tc.toolCallId);
43
+ }
44
+ function mapFileEdits(items, undoStopId) {
45
+ const result = [];
46
+ for (const edit of items) {
47
+ const normalized = normalizeFileEdit(edit);
48
+ if (!normalized) {
49
+ continue;
50
+ }
51
+ result.push({
52
+ kind: normalized.kind,
53
+ resource: normalized.resource,
54
+ originalResource: normalized.kind === FileEditKind.Rename ? normalized.beforeUri : undefined,
55
+ beforeContentUri: normalized.beforeContentUri,
56
+ afterContentUri: normalized.afterContentUri,
57
+ undoStopId,
58
+ diff: edit.diff
59
+ });
60
+ }
61
+ return result;
62
+ }
63
+
64
+ export { fileEditsToExternalEdits };
@@ -3,12 +3,30 @@ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
3
3
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
4
  import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
5
5
  import { ILanguageService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service";
6
+ /**
7
+ * The kind of attention a pending approval needs. Lets consumers tailor UI
8
+ * (e.g. a summary message) to what the user is actually being asked to do.
9
+ */
10
+ export declare enum AgentSessionApprovalKind {
11
+ /** A terminal command is waiting to be run. */
12
+ Terminal = "terminal",
13
+ /** The agent is asking the user a question / needs a free-form response. */
14
+ Question = "question",
15
+ /** Some other tool invocation is waiting for confirmation. */
16
+ Other = "other"
17
+ }
6
18
  export interface IAgentSessionApprovalInfo {
19
+ readonly kind: AgentSessionApprovalKind;
7
20
  readonly label: string;
8
21
  readonly languageId: string | undefined;
9
22
  readonly since: Date;
10
23
  confirm(): void;
11
24
  }
25
+ /**
26
+ * A stable identity for a specific pending approval, distinguishing it from a
27
+ * later, distinct approval on the same session (a fresh `since` yields a new id).
28
+ */
29
+ export declare function agentSessionApprovalId(info: IAgentSessionApprovalInfo): string;
12
30
  /**
13
31
  * Tracks approval state for all live chat sessions. For each session,
14
32
  * exposes an observable that emits {@link IAgentSessionApprovalInfo}
@@ -10,6 +10,12 @@ import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/
10
10
  import { autorunIterableDelta, autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
11
11
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
12
12
 
13
+ var AgentSessionApprovalKind;
14
+ (function(AgentSessionApprovalKind) {
15
+ AgentSessionApprovalKind["Terminal"] = "terminal";
16
+ AgentSessionApprovalKind["Question"] = "question";
17
+ AgentSessionApprovalKind["Other"] = "other";
18
+ })(AgentSessionApprovalKind || (AgentSessionApprovalKind = {}));
13
19
  let AgentSessionApprovalModel = class AgentSessionApprovalModel extends Disposable {
14
20
  constructor(_chatService, _languageService) {
15
21
  super();
@@ -52,7 +58,7 @@ let AgentSessionApprovalModel = class AgentSessionApprovalModel extends Disposab
52
58
  if (current === value) {
53
59
  return;
54
60
  }
55
- if (current !== undefined && value !== undefined && current.label === value.label && current.languageId === value.languageId) {
61
+ if (current !== undefined && value !== undefined && current.kind === value.kind && current.label === value.label && current.languageId === value.languageId) {
56
62
  return;
57
63
  }
58
64
  settable.set(value, undefined);
@@ -76,18 +82,23 @@ let AgentSessionApprovalModel = class AgentSessionApprovalModel extends Disposab
76
82
  if (state.type === IChatToolInvocation.StateKind.WaitingForConfirmation || state.type === IChatToolInvocation.StateKind.WaitingForPostApproval) {
77
83
  let label;
78
84
  let languageId;
85
+ let kind;
79
86
  if (part.toolSpecificData?.kind === "terminal") {
80
87
  const terminalData = migrateLegacyTerminalToolSpecificData(part.toolSpecificData);
81
88
  label = terminalData.presentationOverrides?.commandLine ?? terminalData.commandLine.forDisplay ?? terminalData.commandLine.userEdited ?? terminalData.commandLine.toolEdited ?? terminalData.commandLine.original;
82
89
  languageId = this._languageService.getLanguageIdByLanguageName(terminalData.presentationOverrides?.language ?? terminalData.language) ?? undefined;
90
+ kind = AgentSessionApprovalKind.Terminal;
83
91
  } else if (needsInput.detail) {
84
92
  label = needsInput.detail;
93
+ kind = AgentSessionApprovalKind.Question;
85
94
  } else {
86
95
  const msg = part.invocationMessage;
87
96
  label = typeof msg === "string" ? msg : renderAsPlaintext(msg);
97
+ kind = AgentSessionApprovalKind.Other;
88
98
  }
89
99
  const confirmState = state;
90
100
  setIfChanged({
101
+ kind,
91
102
  label,
92
103
  languageId,
93
104
  since: ( new Date()),
@@ -104,4 +115,4 @@ let AgentSessionApprovalModel = class AgentSessionApprovalModel extends Disposab
104
115
  };
105
116
  AgentSessionApprovalModel = ( __decorate([( __param(0, IChatService)), ( __param(1, ILanguageService))], AgentSessionApprovalModel));
106
117
 
107
- export { AgentSessionApprovalModel };
118
+ export { AgentSessionApprovalKind, AgentSessionApprovalModel };
@@ -16,10 +16,10 @@ export declare class AgentSessionHoverWidget extends Disposable {
16
16
  private readonly contentElement;
17
17
  private readonly loadingElement;
18
18
  private readonly renderScheduler;
19
- private hasRendered;
20
19
  private readonly cts;
21
20
  constructor(session: IAgentSession, chatService: IChatService, instantiationService: IInstantiationService, chatWidgetService: IChatWidgetService, agentSessionsService: IAgentSessionsService);
22
21
  onRendered(): void;
22
+ onHidden(): void;
23
23
  private loadModel;
24
24
  private render;
25
25
  private buildHeader;
@@ -43,7 +43,6 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
43
43
  this.instantiationService = instantiationService;
44
44
  this.chatWidgetService = chatWidgetService;
45
45
  this.agentSessionsService = agentSessionsService;
46
- this.hasRendered = false;
47
46
  this.domNode = $(".agent-session-hover.interactive-session");
48
47
  this.domNode.style.width = `${CHAT_HOVER_WIDTH}px`;
49
48
  this.domNode.style.height = `${HEADER_HEIGHT + CHAT_LIST_HEIGHT}px`;
@@ -58,12 +57,15 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
58
57
  }
59
58
  onRendered() {
60
59
  this.modelRef ??= this.loadModel();
61
- if (!this.hasRendered) {
62
- this.hasRendered = true;
63
- this.renderScheduler.schedule();
64
- } else {
65
- this.listWidget?.layout(CHAT_LIST_HEIGHT, CHAT_HOVER_WIDTH);
60
+ if (this.listWidget) {
61
+ this.listWidget.layout(CHAT_LIST_HEIGHT, CHAT_HOVER_WIDTH);
62
+ this.listWidget.refresh();
63
+ return;
66
64
  }
65
+ this.renderScheduler.schedule();
66
+ }
67
+ onHidden() {
68
+ this.renderScheduler.cancel();
67
69
  }
68
70
  async loadModel() {
69
71
  const modelRef = await this.chatService.acquireOrLoadSession(
@@ -88,7 +90,12 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
88
90
  async render() {
89
91
  this.modelRef ??= this.loadModel();
90
92
  const model = await this.modelRef;
91
- if (!model || this._store.isDisposed) {
93
+ if (!model || this._store.isDisposed || !this.domNode.isConnected) {
94
+ return;
95
+ }
96
+ if (this.listWidget) {
97
+ this.listWidget.layout(CHAT_LIST_HEIGHT, CHAT_HOVER_WIDTH);
98
+ this.listWidget.refresh();
92
99
  return;
93
100
  }
94
101
  this.loadingElement.remove();
@@ -104,14 +111,19 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
104
111
  },
105
112
  currentChatMode: () => ChatModeKind.Ask
106
113
  }));
114
+ this.listWidget = listWidget;
107
115
  listWidget.layout(CHAT_LIST_HEIGHT, CHAT_HOVER_WIDTH);
108
116
  listWidget.setScrollLock(true);
109
117
  listWidget.setViewModel(viewModel);
110
118
  listWidget.refresh();
111
- const viewModelScheudler = this._register(( new RunOnceScheduler(() => listWidget.refresh(), 500)));
119
+ const viewModelScheduler = this._register(( new RunOnceScheduler(() => {
120
+ if (this.domNode.isConnected) {
121
+ listWidget.refresh();
122
+ }
123
+ }, 500)));
112
124
  this._register(viewModel.onDidChange(() => {
113
- if (!viewModelScheudler.isScheduled()) {
114
- viewModelScheudler.schedule();
125
+ if (this.domNode.isConnected && !viewModelScheduler.isScheduled()) {
126
+ viewModelScheduler.schedule();
115
127
  }
116
128
  }));
117
129
  this._register(listWidget.onDidClickFollowup(async followup => {
@@ -158,7 +170,7 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
158
170
  diffSeparator.style.display = "";
159
171
  diffContainer.style.display = "";
160
172
  if (diff.files > 0) {
161
- append(diffContainer, $("span", undefined, diff.files === 1 ? ( localize(5286, "1 file")) : ( localize(5287, "{0} files", diff.files))));
173
+ append(diffContainer, $("span", undefined, diff.files === 1 ? ( localize(5514, "1 file")) : ( localize(5515, "{0} files", diff.files))));
162
174
  }
163
175
  if (diff.insertions > 0) {
164
176
  append(diffContainer, $("span.insertions", undefined, `+${diff.insertions}`));
@@ -178,7 +190,7 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
178
190
  if (session.isArchived()) {
179
191
  append(detailsRow, $("span.separator", undefined, "•"));
180
192
  append(detailsRow, renderIcon(Codicon.archive));
181
- append(detailsRow, $("span", undefined, ( localize(5288, "Archived"))));
193
+ append(detailsRow, $("span", undefined, ( localize(5516, "Archived"))));
182
194
  }
183
195
  }
184
196
  buildFallbackTooltip(session) {
@@ -215,7 +227,7 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
215
227
  if (diff && hasValidDiff(session.changes)) {
216
228
  const diffParts = [];
217
229
  if (diff.files > 0) {
218
- diffParts.push(diff.files === 1 ? ( localize(5286, "1 file")) : ( localize(5287, "{0} files", diff.files)));
230
+ diffParts.push(diff.files === 1 ? ( localize(5514, "1 file")) : ( localize(5515, "{0} files", diff.files)));
219
231
  }
220
232
  if (diff.insertions > 0) {
221
233
  diffParts.push(`+${diff.insertions}`);
@@ -232,7 +244,7 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
232
244
  }
233
245
  lines.push(details.join(" • "));
234
246
  if (session.isArchived()) {
235
- lines.push(`$(archive) ${( localize(5288, "Archived"))}`);
247
+ lines.push(`$(archive) ${( localize(5516, "Archived"))}`);
236
248
  }
237
249
  return ( new MarkdownString(lines.join("\n\n"), {
238
250
  supportThemeIcons: true
@@ -249,16 +261,16 @@ let AgentSessionHoverWidget = class AgentSessionHoverWidget extends Disposable {
249
261
  let statusLabel;
250
262
  switch (status) {
251
263
  case ChatSessionStatus.NeedsInput:
252
- statusLabel = ( localize(5289, "Needs Input"));
264
+ statusLabel = ( localize(5517, "Needs Input"));
253
265
  break;
254
266
  case ChatSessionStatus.InProgress:
255
- statusLabel = ( localize(5290, "In Progress"));
267
+ statusLabel = ( localize(5518, "In Progress"));
256
268
  break;
257
269
  case ChatSessionStatus.Failed:
258
- statusLabel = ( localize(5291, "Failed"));
270
+ statusLabel = ( localize(5519, "Failed"));
259
271
  break;
260
272
  default:
261
- statusLabel = ( localize(5292, "Completed"));
273
+ statusLabel = ( localize(5520, "Completed"));
262
274
  }
263
275
  return statusLabel;
264
276
  }
@@ -93,7 +93,10 @@ export declare class AgentSessionsControl extends Disposable implements IAgentSe
93
93
  private _updateSectionCollapseStatesCore;
94
94
  refresh(): Promise<void>;
95
95
  collapseAllSections(): void;
96
- update(): Promise<void>;
96
+ update(): Promise<boolean>;
97
+ private updatePauseOwner;
98
+ private hasPendingUpdate;
99
+ private pauseUpdates;
97
100
  setVisible(visible: boolean): void;
98
101
  layout(height: number, width: number): void;
99
102
  focus(): void;
@@ -19,7 +19,7 @@ import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/wor
19
19
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
20
20
  import { ACTION_ID_NEW_CHAT } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
21
21
  import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
22
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
22
+ import { Disposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
23
23
  import { Throttler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
24
24
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
25
25
  import { MarshalledId } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshallingIds';
@@ -82,6 +82,7 @@ let AgentSessionsControl = class AgentSessionsControl extends Disposable {
82
82
  this._onDidUpdate = this._register(( new Emitter()));
83
83
  this.onDidUpdate = this._onDidUpdate.event;
84
84
  this.visible = true;
85
+ this.hasPendingUpdate = false;
85
86
  this.focusedAgentSessionArchivedContextKey = ChatContextKeys.isArchivedAgentSession.bindTo(this.contextKeyService);
86
87
  this.focusedAgentSessionPinnedContextKey = ChatContextKeys.isPinnedAgentSession.bindTo(this.contextKeyService);
87
88
  this.focusedAgentSessionReadContextKey = ChatContextKeys.isReadAgentSession.bindTo(this.contextKeyService);
@@ -122,9 +123,9 @@ let AgentSessionsControl = class AgentSessionsControl extends Disposable {
122
123
  this.emptyFilterMessage = append(container, $(".agent-sessions-empty-filter-message"));
123
124
  hide(this.emptyFilterMessage);
124
125
  const span = append(this.emptyFilterMessage, $("span"));
125
- span.textContent = `${( localize(5362, "No matching sessions"))} - `;
126
+ span.textContent = `${( localize(5592, "No matching sessions"))} - `;
126
127
  const link = append(this.emptyFilterMessage, $("span.reset-filter-link"));
127
- link.textContent = ( localize(5363, "Reset Filter"));
128
+ link.textContent = ( localize(5593, "Reset Filter"));
128
129
  link.tabIndex = 0;
129
130
  link.setAttribute("role", "button");
130
131
  this._register(
@@ -213,7 +214,8 @@ let AgentSessionsControl = class AgentSessionsControl extends Disposable {
213
214
  const sessionRenderer = this._register(this.instantiationService.createInstance(AgentSessionRenderer, {
214
215
  ...this.options,
215
216
  isGroupedByRepository: () => this.options.filter.groupResults?.() === AgentSessionsGrouping.Repository,
216
- isSortedByUpdated: () => this.options.filter.sortResults?.() === AgentSessionsSorting.Updated
217
+ isSortedByUpdated: () => this.options.filter.sortResults?.() === AgentSessionsSorting.Updated,
218
+ pauseSessionUpdates: () => this.pauseUpdates()
217
219
  }, approvalModel, activeSessionResource));
218
220
  const compact = this.options.compactShowMore;
219
221
  const sessionDataSource = this.sessionsDataSource = this._register(( new AgentSessionsDataSource(this.options.filter, sorter, this.options.repositoryGroupLimit)));
@@ -661,10 +663,33 @@ let AgentSessionsControl = class AgentSessionsControl extends Disposable {
661
663
  }
662
664
  }
663
665
  async update() {
666
+ if (this.updatePauseOwner) {
667
+ this.hasPendingUpdate = true;
668
+ return false;
669
+ }
664
670
  return this.updateSessionsListThrottler.queue(async () => {
671
+ if (this.updatePauseOwner) {
672
+ this.hasPendingUpdate = true;
673
+ return false;
674
+ }
675
+ this.hasPendingUpdate = false;
665
676
  this.computeRecentRepositoryLabels();
666
677
  await this.sessionsList?.updateChildren();
667
678
  this._onDidUpdate.fire();
679
+ return true;
680
+ });
681
+ }
682
+ pauseUpdates() {
683
+ const owner = {};
684
+ this.updatePauseOwner = owner;
685
+ return toDisposable(() => {
686
+ if (this.updatePauseOwner !== owner) {
687
+ return;
688
+ }
689
+ this.updatePauseOwner = undefined;
690
+ if (this.hasPendingUpdate && this.visible) {
691
+ this.update();
692
+ }
668
693
  });
669
694
  }
670
695
  setVisible(visible) {
@@ -142,7 +142,7 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
142
142
  constructor() {
143
143
  super({
144
144
  id: `agentSessions.filter.sortByCreated.${menuId.id.toLowerCase()}`,
145
- title: ( localize(5364, "Sort by Created")),
145
+ title: ( localize(5594, "Sort by Created")),
146
146
  menu: {
147
147
  id: menuId,
148
148
  group: "0_sort",
@@ -159,7 +159,7 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
159
159
  constructor() {
160
160
  super({
161
161
  id: `agentSessions.filter.sortByUpdated.${menuId.id.toLowerCase()}`,
162
- title: ( localize(5365, "Sort by Updated")),
162
+ title: ( localize(5595, "Sort by Updated")),
163
163
  menu: {
164
164
  id: menuId,
165
165
  group: "0_sort",
@@ -235,16 +235,16 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
235
235
  registerStateActions(disposables, menuId) {
236
236
  const states = [{
237
237
  id: ChatSessionStatus.Completed,
238
- label: ( localize(5366, "Completed"))
238
+ label: ( localize(5596, "Completed"))
239
239
  }, {
240
240
  id: ChatSessionStatus.InProgress,
241
- label: ( localize(5367, "In Progress"))
241
+ label: ( localize(5597, "In Progress"))
242
242
  }, {
243
243
  id: ChatSessionStatus.NeedsInput,
244
- label: ( localize(5368, "Input Needed"))
244
+ label: ( localize(5598, "Input Needed"))
245
245
  }, {
246
246
  id: ChatSessionStatus.Failed,
247
- label: ( localize(5369, "Failed"))
247
+ label: ( localize(5599, "Failed"))
248
248
  }];
249
249
  const that = this;
250
250
  let counter = 0;
@@ -281,7 +281,7 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
281
281
  constructor() {
282
282
  super({
283
283
  id: `agentSessions.filter.toggleExcludeArchived.${menuId.id.toLowerCase()}`,
284
- title: ( localize(5370, "Archived")),
284
+ title: ( localize(5600, "Archived")),
285
285
  menu: {
286
286
  id: menuId,
287
287
  group: "3_props",
@@ -304,7 +304,7 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
304
304
  constructor() {
305
305
  super({
306
306
  id: `agentSessions.filter.toggleExcludeRead.${menuId.id.toLowerCase()}`,
307
- title: ( localize(5371, "Read")),
307
+ title: ( localize(5601, "Read")),
308
308
  menu: {
309
309
  id: menuId,
310
310
  group: "3_props",
@@ -335,7 +335,7 @@ let AgentSessionsFilter = class AgentSessionsFilter extends Disposable {
335
335
  constructor() {
336
336
  super({
337
337
  id: `agentSessions.filter.resetExcludes.${menuId.id.toLowerCase()}`,
338
- title: ( localize(5372, "Reset")),
338
+ title: ( localize(5602, "Reset")),
339
339
  menu: {
340
340
  id: menuId,
341
341
  group: "4_reset",