@codingame/monaco-vscode-katex-common 27.0.0 → 28.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 (181) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +2 -0
  3. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  4. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +30 -2
  5. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.js +1 -0
  6. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +17 -11
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +90 -43
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +6 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +63 -10
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +1 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +13 -10
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +28 -2
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +133 -28
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -46
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +38 -37
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +72 -57
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  35. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
  36. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +1 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +3 -3
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -1
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +8 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -4
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +26 -6
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +290 -126
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +9 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +22 -13
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -18
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +17 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +129 -117
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +0 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +56 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +20 -4
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +43 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +42 -41
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -4
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +14 -14
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +1 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -2
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +61 -39
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +7 -8
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -10
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +81 -191
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +31 -17
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +334 -181
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +3 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +51 -55
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -1
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +16 -9
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +2 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +10 -16
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +6 -4
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +174 -10
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +2 -12
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +12 -16
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +1 -0
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +19 -4
  163. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +22 -6
  164. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  165. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +3 -1
  166. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +24 -4
  167. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  168. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  169. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  170. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
  172. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +1 -1
  173. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +3 -3
  174. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +1 -1
  175. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +38 -46
  176. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  177. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  178. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  179. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  180. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  181. package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
@@ -4,55 +4,75 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
 
6
6
  /* question carousel - this is above edits and todos */
7
- .interactive-session .interactive-input-part > .chat-question-carousel-widget-container:empty {
7
+ .interactive-session .interactive-input-part > .chat-question-carousel-widget-container:empty,
8
+ .interactive-session .interactive-input-part .interactive-input-and-edit-session > .chat-question-carousel-widget-container:empty {
8
9
  display: none;
9
10
  }
10
11
 
11
12
  /* input specific styling */
12
- .interactive-session .interactive-input-part > .chat-question-carousel-widget-container .chat-question-carousel-container {
13
+ .interactive-session .interactive-input-part > .chat-question-carousel-widget-container .chat-question-carousel-container,
14
+ .interactive-session .interactive-input-part .interactive-input-and-edit-session > .chat-question-carousel-widget-container .chat-question-carousel-container {
13
15
  margin: 0;
14
16
  border: 1px solid var(--vscode-input-border, transparent);
15
- background-color: var(--vscode-editor-background);
16
- border-radius: 4px;
17
+ background-color: var(--vscode-panel-background);
18
+ border-radius: var(--vscode-cornerRadius-large);
17
19
  }
18
20
 
19
21
  /* general questions styling */
20
22
  .interactive-session .chat-question-carousel-container {
21
23
  margin: 8px 0;
22
24
  border: 1px solid var(--vscode-chat-requestBorder);
23
- border-radius: 4px;
25
+ border-radius: var(--vscode-cornerRadius-large);
24
26
  display: flex;
25
27
  flex-direction: column;
26
28
  overflow: hidden;
27
29
  container-type: inline-size;
30
+ max-height: min(420px, 45vh);
31
+ position: relative;
28
32
  }
29
33
 
30
34
  /* input part wrapper */
31
- .interactive-session .interactive-input-part > .chat-question-carousel-widget-container {
35
+ .interactive-session .interactive-input-part > .chat-question-carousel-widget-container,
36
+ .interactive-session .interactive-input-part .interactive-input-and-edit-session > .chat-question-carousel-widget-container {
32
37
  width: 100%;
33
38
  position: relative;
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 8px;
42
+ }
43
+
44
+ .interactive-session .interactive-input-part > .chat-question-carousel-widget-container:not(:empty),
45
+ .interactive-session .interactive-input-part .interactive-input-and-edit-session > .chat-question-carousel-widget-container:not(:empty) {
46
+ margin-top: 8px;
47
+ }
48
+
49
+ .interactive-session .interactive-input-part > .chat-question-carousel-widget-container .chat-question-carousel-content,
50
+ .interactive-session .interactive-input-part .interactive-input-and-edit-session > .chat-question-carousel-widget-container .chat-question-carousel-content {
51
+ min-height: 0;
34
52
  }
35
53
 
36
54
  /* container and header */
37
55
  .interactive-session .chat-question-carousel-container .chat-question-carousel-content {
38
56
  display: flex;
39
57
  flex-direction: column;
40
- background: var(--vscode-chat-requestBackground);
41
- padding: 8px 16px 10px 16px;
58
+ min-height: 0;
42
59
  overflow: hidden;
43
60
 
44
61
  .chat-question-header-row {
45
62
  display: flex;
46
- justify-content: space-between;
47
- align-items: center;
48
- gap: 8px;
49
- min-width: 0;
50
- padding-bottom: 5px;
51
- margin-left: -16px;
52
- margin-right: -16px;
53
- padding-left: 16px;
54
- padding-right: 16px;
55
- border-bottom: 1px solid var(--vscode-chat-requestBorder);
63
+ flex-direction: column;
64
+ flex-shrink: 0;
65
+ overflow: hidden;
66
+
67
+ .chat-question-title-row {
68
+ display: flex;
69
+ justify-content: space-between;
70
+ align-items: center;
71
+ gap: 8px;
72
+ min-width: 0;
73
+ padding: 8px 8px 8px 16px;
74
+ border-bottom: 1px solid var(--vscode-chat-requestBorder);
75
+ }
56
76
 
57
77
  .chat-question-title {
58
78
  flex: 1;
@@ -77,15 +97,6 @@
77
97
  margin: 0;
78
98
  }
79
99
  }
80
-
81
- .chat-question-title-main {
82
- font-weight: 500;
83
- }
84
-
85
- .chat-question-title-subtitle {
86
- font-weight: normal;
87
- color: var(--vscode-descriptionForeground);
88
- }
89
100
  }
90
101
 
91
102
  .chat-question-close-container {
@@ -96,9 +107,10 @@
96
107
  width: 22px;
97
108
  height: 22px;
98
109
  padding: 0;
99
- border: none;
110
+ border: none !important;
111
+ box-shadow: none !important;
100
112
  background: transparent !important;
101
- color: var(--vscode-foreground) !important;
113
+ color: var(--vscode-icon-foreground) !important;
102
114
  }
103
115
 
104
116
  .monaco-button.chat-question-close:hover:not(.disabled) {
@@ -112,41 +124,35 @@
112
124
  .interactive-session .chat-question-carousel-container .chat-question-input-container {
113
125
  display: flex;
114
126
  flex-direction: column;
115
- margin-top: 4px;
127
+ padding: 8px;
116
128
  min-width: 0;
117
129
 
130
+ &::after {
131
+ content: '';
132
+ display: block;
133
+ height: 8px;
134
+ flex-shrink: 0;
135
+ }
136
+
118
137
  /* some hackiness to get the focus looking right */
119
- .chat-question-list-item:focus:not(.selected),
138
+ .chat-question-list-item:focus,
120
139
  .chat-question-list:focus {
121
140
  outline: none;
122
141
  }
123
142
 
124
- .chat-question-list:focus-visible {
125
- outline: 1px solid var(--vscode-focusBorder);
126
- outline-offset: -1px;
127
- }
128
-
129
- .chat-question-list:focus-within .chat-question-list-item.selected {
130
- outline-width: 1px;
131
- outline-style: solid;
132
- outline-offset: -1px;
133
- outline-color: var(--vscode-focusBorder);
134
- }
135
-
136
143
  .chat-question-list {
137
144
  display: flex;
138
145
  flex-direction: column;
139
- gap: 3px;
140
146
  outline: none;
141
- padding: 4px 0;
147
+ padding: 0;
142
148
 
143
149
  .chat-question-list-item {
144
150
  display: flex;
145
151
  align-items: center;
146
- gap: 8px;
147
- padding: 3px 8px;
152
+ gap: 12px;
153
+ padding: 6px 8px;
148
154
  cursor: pointer;
149
- border-radius: 3px;
155
+ border-radius: var(--vscode-cornerRadius-medium);
150
156
  user-select: none;
151
157
 
152
158
  .chat-question-list-indicator {
@@ -157,6 +163,8 @@
157
163
  justify-content: center;
158
164
  flex-shrink: 0;
159
165
  margin-left: auto;
166
+ align-self: flex-start;
167
+ margin-top: 2px;
160
168
  }
161
169
 
162
170
  .chat-question-list-indicator.codicon-check {
@@ -167,13 +175,15 @@
167
175
  .chat-question-list-label {
168
176
  font-size: var(--vscode-chat-font-size-body-s);
169
177
  flex: 1;
170
- overflow: hidden;
171
- text-overflow: ellipsis;
172
- white-space: nowrap;
178
+ word-wrap: break-word;
179
+ overflow-wrap: break-word;
180
+ display: flex;
181
+ flex-direction: column;
173
182
  }
174
183
 
175
184
  .chat-question-list-label-title {
176
- font-weight: 600;
185
+ font-weight: 500;
186
+ line-height: 1.4;
177
187
  }
178
188
 
179
189
  .chat-question-list-label-desc {
@@ -182,13 +192,28 @@
182
192
  }
183
193
  }
184
194
 
195
+ .chat-question-list-item.has-description {
196
+ align-items: flex-start;
197
+
198
+ .chat-question-list-number {
199
+ line-height: 1.4;
200
+ font-size: var(--vscode-chat-font-size-body-s);
201
+ font-weight: 500;
202
+ }
203
+
204
+ .chat-question-list-checkbox {
205
+ /* Title line-height is ~17px (1.4 * body-s), checkbox is 16px: 1px offset */
206
+ margin-top: 1px;
207
+ }
208
+ }
209
+
185
210
  .chat-question-list-item:hover {
186
211
  background-color: var(--vscode-list-hoverBackground);
187
212
  }
188
213
 
189
214
  /* Single-select: highlight entire row when selected */
190
215
  .chat-question-list-item.selected {
191
- background-color: var(--vscode-list-activeSelectionBackground);
216
+ background-color: var(--vscode-list-hoverBackground);
192
217
  color: var(--vscode-list-activeSelectionForeground);
193
218
 
194
219
  .chat-question-label {
@@ -205,16 +230,12 @@
205
230
  }
206
231
 
207
232
  .chat-question-list-number {
208
- background-color: transparent;
209
233
  color: var(--vscode-list-activeSelectionForeground);
210
- border-color: var(--vscode-list-activeSelectionForeground);
211
- border-bottom-color: var(--vscode-list-activeSelectionForeground);
212
- box-shadow: none;
213
234
  }
214
235
  }
215
236
 
216
237
  .chat-question-list-item.selected:hover {
217
- background-color: var(--vscode-list-activeSelectionBackground);
238
+ background-color: var(--vscode-list-hoverBackground);
218
239
  }
219
240
 
220
241
  /* Checkbox for multi-select */
@@ -228,11 +249,12 @@
228
249
  }
229
250
 
230
251
  .chat-question-freeform {
231
- margin-left: 8px;
252
+ margin: 0;
232
253
  display: flex;
233
254
  flex-direction: row;
234
255
  align-items: center;
235
- gap: 8px;
256
+ padding: 4px 8px;
257
+ gap: 12px;
236
258
 
237
259
  .chat-question-freeform-number {
238
260
  height: fit-content;
@@ -275,45 +297,43 @@
275
297
  /* todo: change to use keybinding service so we don't have to recreate this */
276
298
  .chat-question-list-number,
277
299
  .chat-question-freeform-number {
278
- display: inline-flex;
279
- align-items: center;
280
- justify-content: center;
281
- min-width: 14px;
282
- padding: 0px 4px;
283
- border-style: solid;
284
- border-width: 1px;
285
- border-radius: 3px;
286
- font-size: 11px;
287
- font-weight: normal;
288
- background-color: var(--vscode-keybindingLabel-background);
289
- color: var(--vscode-keybindingLabel-foreground);
290
- border-color: var(--vscode-keybindingLabel-border);
291
- border-bottom-color: var(--vscode-keybindingLabel-bottomBorder);
292
- box-shadow: inset 0 -1px 0 var(--vscode-widget-shadow);
300
+ font-size: var(--vscode-chat-font-size-body-s);
301
+ color: var(--vscode-descriptionForeground);
293
302
  flex-shrink: 0;
303
+ min-width: 1ch;
304
+ text-align: right;
294
305
  }
295
306
  }
296
307
 
297
- /* footer with step indicator and nav buttons */
308
+ .interactive-session .chat-question-carousel-container .chat-question-input-container > * {
309
+ flex-shrink: 0;
310
+ }
311
+
312
+ .interactive-session .chat-question-carousel-container .chat-question-input-scrollable {
313
+ flex: 0 1 auto;
314
+ min-height: 0;
315
+ overscroll-behavior: contain;
316
+ }
317
+
318
+ /* footer with nav arrows, step indicator, and submit */
298
319
  .interactive-session .chat-question-carousel-container .chat-question-footer-row {
299
320
  display: flex;
300
321
  justify-content: space-between;
301
322
  align-items: center;
302
- padding: 4px 16px;
323
+ padding: 4px 8px;
303
324
  border-top: 1px solid var(--vscode-chat-requestBorder);
304
- background: var(--vscode-chat-requestBackground);
325
+ flex-shrink: 0;
305
326
 
306
- .chat-question-step-indicator {
307
- font-size: var(--vscode-chat-font-size-body-s);
308
- color: var(--vscode-descriptionForeground);
327
+ .chat-question-footer-left {
328
+ display: flex;
329
+ align-items: center;
330
+ gap: 8px;
309
331
  }
310
332
 
311
- .chat-question-carousel-nav {
333
+ .chat-question-footer-right {
312
334
  display: flex;
313
335
  align-items: center;
314
- gap: 4px;
315
- flex-shrink: 0;
316
- margin-left: auto;
336
+ gap: 8px;
317
337
  }
318
338
 
319
339
  .chat-question-nav-arrows {
@@ -322,49 +342,48 @@
322
342
  gap: 4px;
323
343
  }
324
344
 
325
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow {
345
+ .monaco-button.chat-question-nav-arrow {
326
346
  min-width: 22px;
327
347
  width: 22px;
328
348
  height: 22px;
329
349
  padding: 0;
330
- border: none;
350
+ border: none !important;
351
+ box-shadow: none !important;
352
+ background: transparent !important;
353
+ color: var(--vscode-foreground) !important;
331
354
  }
332
355
 
333
- /* Secondary buttons (prev, next) use gray secondary background */
334
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-prev,
335
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-next {
336
- background: var(--vscode-button-secondaryBackground) !important;
337
- color: var(--vscode-button-secondaryForeground) !important;
356
+ .monaco-button.chat-question-nav-arrow:hover:not(.disabled) {
357
+ background: var(--vscode-toolbar-hoverBackground) !important;
358
+ }
359
+
360
+ .monaco-button.chat-question-nav-arrow.disabled {
361
+ opacity: 0.4;
362
+ }
363
+
364
+ .chat-question-step-indicator {
365
+ font-size: var(--vscode-chat-font-size-body-s);
366
+ color: var(--vscode-descriptionForeground);
338
367
  }
339
368
 
340
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-prev:hover:not(.disabled),
341
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-next:hover:not(.disabled) {
342
- background: var(--vscode-button-secondaryHoverBackground) !important;
369
+ .chat-question-submit-hint {
370
+ font-size: 11px;
371
+ color: var(--vscode-descriptionForeground);
343
372
  }
344
373
 
345
- /* Submit button (next on last question) uses primary background */
346
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-submit {
374
+ .monaco-button.chat-question-submit-button {
347
375
  background: var(--vscode-button-background) !important;
348
376
  color: var(--vscode-button-foreground) !important;
377
+ height: 22px;
349
378
  width: auto;
379
+ flex: 0 0 auto;
350
380
  min-width: auto;
351
381
  padding: 0 8px;
352
382
  }
353
383
 
354
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-nav-submit:hover:not(.disabled) {
384
+ .monaco-button.chat-question-submit-button:hover:not(.disabled) {
355
385
  background: var(--vscode-button-hoverBackground) !important;
356
386
  }
357
-
358
- /* Close button uses transparent background */
359
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-close {
360
- background: transparent !important;
361
- color: var(--vscode-foreground) !important;
362
- }
363
-
364
- .chat-question-carousel-nav .monaco-button.chat-question-nav-arrow.chat-question-close:hover:not(.disabled) {
365
- background: var(--vscode-toolbar-hoverBackground) !important;
366
- }
367
-
368
387
  }
369
388
 
370
389
  /* summary (after finished) */
@@ -376,9 +395,7 @@
376
395
 
377
396
  .chat-question-summary-item {
378
397
  display: flex;
379
- flex-direction: row;
380
- flex-wrap: wrap;
381
- align-items: baseline;
398
+ flex-direction: column;
382
399
  gap: 0;
383
400
  font-size: var(--vscode-chat-font-size-body-s);
384
401
  }
@@ -389,11 +406,6 @@
389
406
  overflow-wrap: break-word;
390
407
  }
391
408
 
392
- .chat-question-summary-label::after {
393
- content: ': ';
394
- white-space: pre;
395
- }
396
-
397
409
  .chat-question-summary-answer-title {
398
410
  color: var(--vscode-foreground);
399
411
  font-weight: 600;
@@ -17,7 +17,6 @@
17
17
  background-color: var(--vscode-editorWidget-background);
18
18
  border: 1px solid var(--vscode-chat-requestBorder);
19
19
  border-radius: var(--vscode-cornerRadius-medium);
20
- z-index: 100;
21
20
  transition: opacity 0.1s ease-in-out;
22
21
  }
23
22
 
@@ -6,7 +6,7 @@ import { ConfirmedReason, IChatToolInvocation } from "@codingame/monaco-vscode-a
6
6
  import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
7
7
  import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
8
8
  import { IChatConfirmationButton } from "../chatConfirmationWidget.js";
9
- import { IChatContentPartRenderContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts";
9
+ import { IChatContentPartRenderContext } from "../chatContentParts.js";
10
10
  import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
11
11
  export interface IToolConfirmationConfig {
12
12
  allowActionId: string;
@@ -77,7 +77,7 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
77
77
  data: primaryAction.data,
78
78
  moreActions: moreActions.length > 0 ? moreActions : undefined
79
79
  }, {
80
- label: ( localize(6559, "Skip")),
80
+ label: ( localize(6655, "Skip")),
81
81
  tooltip: skipTooltip,
82
82
  data: () => {
83
83
  this.confirmWith(toolInvocation, {
@@ -4,7 +4,7 @@ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
4
4
  import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
5
5
  import { IChatToolInvocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
6
6
  import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
7
- import { IChatContentPartRenderContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts";
7
+ import { IChatContentPartRenderContext } from "../chatContentParts.js";
8
8
  import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
9
9
  export declare class ExtensionsInstallConfirmationWidgetSubPart extends BaseChatToolInvocationSubPart {
10
10
  readonly domNode: HTMLElement;
@@ -46,9 +46,9 @@ let ExtensionsInstallConfirmationWidgetSubPart = class ExtensionsInstallConfirma
46
46
  append(this.domNode, chatExtensionsContentPart.domNode);
47
47
  const state = toolInvocation.state.get();
48
48
  if (state.type === IChatToolInvocation.StateKind.WaitingForConfirmation) {
49
- const allowLabel = ( localize(6560, "Allow"));
49
+ const allowLabel = ( localize(6656, "Allow"));
50
50
  const allowTooltip = keybindingService.appendKeybinding(allowLabel, AcceptToolConfirmationActionId);
51
- const cancelLabel = ( localize(6561, "Cancel"));
51
+ const cancelLabel = ( localize(6657, "Cancel"));
52
52
  const cancelTooltip = keybindingService.appendKeybinding(cancelLabel, CancelChatActionId);
53
53
  const enableAllowButtonEvent = this._register(( new Emitter()));
54
54
  const buttons = [{
@@ -68,9 +68,9 @@ let ExtensionsInstallConfirmationWidgetSubPart = class ExtensionsInstallConfirma
68
68
  tooltip: cancelTooltip
69
69
  }];
70
70
  const confirmWidget = this._register(instantiationService.createInstance(ChatConfirmationWidget, context, {
71
- title: state.confirmationMessages?.title ?? ( localize(6562, "Install Extensions")),
71
+ title: state.confirmationMessages?.title ?? ( localize(6658, "Install Extensions")),
72
72
  message: state.confirmationMessages?.message ?? ( localize(
73
- 6563,
73
+ 6659,
74
74
  "Click the Install button on the extension and then press Allow when finished."
75
75
  )),
76
76
  buttons
@@ -6,7 +6,7 @@ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
6
6
  import { IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
7
7
  import { IToolResultInputOutputDetails } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
8
8
  import { IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
9
- import { IChatContentPartRenderContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts";
9
+ import { IChatContentPartRenderContext } from "../chatContentParts.js";
10
10
  import { BaseChatToolInvocationSubPart } from "./chatToolInvocationSubPart.js";
11
11
  export declare class ChatInputOutputMarkdownProgressPart extends BaseChatToolInvocationSubPart {
12
12
  /** Remembers expanded tool parts on re-render */
@@ -1,6 +1,7 @@
1
1
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
2
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
3
  import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
4
+ import { IChatResponseResourceFileSystemProvider } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.service";
4
5
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
6
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
6
7
  import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
@@ -10,6 +11,7 @@ import { McpApps } from "../../../../../mcp/common/modelContextProtocolApps.js";
10
11
  import { IWebviewService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service";
11
12
  import { IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
12
13
  import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
14
+ import { IChatCollapsibleIODataPart } from "../chatToolInputOutputContentPart.js";
13
15
  import { IMcpAppRenderData } from "./chatMcpAppSubPart.js";
14
16
  /**
15
17
  * Load state for the MCP App model.
@@ -33,6 +35,7 @@ export declare class ChatMcpAppModel extends Disposable {
33
35
  private readonly _instantiationService;
34
36
  private readonly _chatWidgetService;
35
37
  private readonly _webviewService;
38
+ private readonly _chatResponseResourceFsProvider;
36
39
  private readonly _logService;
37
40
  private readonly _productService;
38
41
  private readonly _openerService;
@@ -59,9 +62,12 @@ export declare class ChatMcpAppModel extends Disposable {
59
62
  /** Event fired when height changes */
60
63
  private readonly _onDidChangeHeight;
61
64
  readonly onDidChangeHeight: Event<void>;
65
+ /** Accumulated download resource parts from ui/download-file calls */
66
+ private readonly _downloadParts;
67
+ readonly downloadParts: IObservable<IChatCollapsibleIODataPart[]>;
62
68
  /** Full host context for the MCP App */
63
69
  readonly hostContext: IObservable<McpApps.McpUiHostContext>;
64
- constructor(toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized, renderData: IMcpAppRenderData, _container: HTMLElement, maxHeight: IObservable<number>, currentWidth: IObservable<number>, _instantiationService: IInstantiationService, _chatWidgetService: IChatWidgetService, _webviewService: IWebviewService, storageService: IStorageService, _logService: ILogService, _productService: IProductService, _openerService: IOpenerService);
70
+ constructor(toolInvocation: IChatToolInvocation | IChatToolInvocationSerialized, renderData: IMcpAppRenderData, _container: HTMLElement, maxHeight: IObservable<number>, currentWidth: IObservable<number>, _instantiationService: IInstantiationService, _chatWidgetService: IChatWidgetService, _webviewService: IWebviewService, storageService: IStorageService, _chatResponseResourceFsProvider: IChatResponseResourceFileSystemProvider, _logService: ILogService, _productService: IProductService, _openerService: IOpenerService);
65
71
  /**
66
72
  * Gets the current height of the webview.
67
73
  */
@@ -96,6 +102,7 @@ export declare class ChatMcpAppModel extends Disposable {
96
102
  private _handleUpdateModelContext;
97
103
  private _handleSizeChanged;
98
104
  private _handleSandboxWheel;
105
+ private _handleDownloadFile;
99
106
  private _handleOpenLink;
100
107
  /**
101
108
  * Handles tools/call requests from the MCP App.
@@ -13,7 +13,9 @@ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/in
13
13
  import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
14
14
  import { isFalsyOrWhitespace } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
15
15
  import { hasKey, isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
16
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
16
17
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
18
+ import { IChatResponseResourceFileSystemProvider } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.service';
17
19
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
18
20
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
19
21
  import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
@@ -49,6 +51,7 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
49
51
  _chatWidgetService,
50
52
  _webviewService,
51
53
  storageService,
54
+ _chatResponseResourceFsProvider,
52
55
  _logService,
53
56
  _productService,
54
57
  _openerService
@@ -60,6 +63,7 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
60
63
  this._instantiationService = _instantiationService;
61
64
  this._chatWidgetService = _chatWidgetService;
62
65
  this._webviewService = _webviewService;
66
+ this._chatResponseResourceFsProvider = _chatResponseResourceFsProvider;
63
67
  this._logService = _logService;
64
68
  this._productService = _productService;
65
69
  this._openerService = _openerService;
@@ -72,13 +76,15 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
72
76
  this.loadState = this._loadState;
73
77
  this._onDidChangeHeight = this._register(( new Emitter()));
74
78
  this.onDidChangeHeight = this._onDidChangeHeight.event;
79
+ this._downloadParts = observableValue(this, []);
80
+ this.downloadParts = this._downloadParts;
75
81
  this._originStore = ( new WebviewOriginStore(ORIGIN_STORE_KEY, storageService));
76
82
  this._webviewOrigin = this._originStore.getOrigin("mcpApp", renderData.serverDefinitionId);
77
83
  this._mcpToolCallUI = this._register(this._instantiationService.createInstance(McpToolCallUI, renderData));
78
84
  this._height = ChatMcpAppModel_1.heightCache.get(this.toolInvocation) ?? 300;
79
85
  this._webview = this._register(this._webviewService.createWebviewElement({
80
86
  origin: this._webviewOrigin,
81
- title: ( localize(6564, "MCP App")),
87
+ title: ( localize(6660, "MCP App")),
82
88
  options: {
83
89
  purpose: WebviewContentPurpose.ChatOutputItem,
84
90
  enableFindWidget: false,
@@ -341,6 +347,9 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
341
347
  case "ui/open-link":
342
348
  result = await this._handleOpenLink(request.params);
343
349
  break;
350
+ case "ui/download-file":
351
+ result = await this._handleDownloadFile(request.params);
352
+ break;
344
353
  case "ui/request-display-mode":
345
354
  result = {
346
355
  mode: "inline"
@@ -441,7 +450,8 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
441
450
  resourceLink: {},
442
451
  resource: {},
443
452
  structuredContent: {}
444
- }
453
+ },
454
+ downloadFile: {}
445
455
  },
446
456
  hostContext: this.hostContext.get()
447
457
  };
@@ -583,6 +593,49 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
583
593
  const widget = this._chatWidgetService.getWidgetBySessionResource(this.renderData.sessionResource);
584
594
  widget?.delegateScrollFromMouseWheelEvent(evt);
585
595
  }
596
+ async _handleDownloadFile(params) {
597
+ const newParts = [];
598
+ let hadError = false;
599
+ for (const content of params.contents) {
600
+ try {
601
+ if (content.type === "resource") {
602
+ const resource = content.resource;
603
+ const parsed = ( URI.parse(resource.uri));
604
+ const data = hasKey(resource, {
605
+ text: true
606
+ }) ? ( new TextEncoder()).encode(resource.text) : {
607
+ base64: resource.blob
608
+ };
609
+ const uri = this._chatResponseResourceFsProvider.associate(this.renderData.sessionResource, data, basename(parsed));
610
+ newParts.push({
611
+ kind: "data",
612
+ mimeType: resource.mimeType,
613
+ uri
614
+ });
615
+ } else if (content.type === "resource_link") {
616
+ const mcpUri = McpResourceURI.fromServer({
617
+ id: this.renderData.serverDefinitionId,
618
+ label: ""
619
+ }, content.uri);
620
+ newParts.push({
621
+ kind: "data",
622
+ mimeType: content.mimeType,
623
+ uri: mcpUri
624
+ });
625
+ }
626
+ } catch (error) {
627
+ hadError = true;
628
+ this._logService.warn("[MCP App] Failed to process ui/download-file content", error);
629
+ }
630
+ }
631
+ if (newParts.length > 0) {
632
+ const existing = this._downloadParts.get();
633
+ this._downloadParts.set([...existing, ...newParts], undefined);
634
+ }
635
+ return hadError ? {
636
+ isError: true
637
+ } : {};
638
+ }
586
639
  async _handleOpenLink(params) {
587
640
  const ok = await this._openerService.open(params.url);
588
641
  return {
@@ -629,6 +682,6 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
629
682
  super.dispose();
630
683
  }
631
684
  };
632
- ChatMcpAppModel = ChatMcpAppModel_1 = ( __decorate([( __param(5, IInstantiationService)), ( __param(6, IChatWidgetService)), ( __param(7, IWebviewService)), ( __param(8, IStorageService)), ( __param(9, ILogService)), ( __param(10, IProductService)), ( __param(11, IOpenerService))], ChatMcpAppModel));
685
+ ChatMcpAppModel = ChatMcpAppModel_1 = ( __decorate([( __param(5, IInstantiationService)), ( __param(6, IChatWidgetService)), ( __param(7, IWebviewService)), ( __param(8, IStorageService)), ( __param(9, IChatResponseResourceFileSystemProvider)), ( __param(10, ILogService)), ( __param(11, IProductService)), ( __param(12, IOpenerService))], ChatMcpAppModel));
633
686
 
634
687
  export { ChatMcpAppModel };