@codingame/monaco-vscode-katex-common 33.0.9 → 34.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.css +169 -0
  3. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.d.ts +28 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +61 -0
  5. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.d.ts +1 -1
  6. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.js +1 -1
  7. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +18 -17
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +40 -38
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +14 -14
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +1 -16
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +4 -48
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +16 -18
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +81 -69
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +1 -3
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +5 -22
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.d.ts +2 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.js +21 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +18 -28
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +13 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +177 -80
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +15 -15
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +7 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +69 -5
  35. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +3 -3
  36. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +25 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +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.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +2 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +4 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +93 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +140 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +46 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +134 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +2 -15
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +49 -117
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +2 -0
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +47 -4
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +3 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +52 -51
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +18 -14
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +23 -13
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +13 -11
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +15 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +87 -11
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +21 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +102 -35
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +22 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +22 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +6 -2
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +21 -2
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +35 -18
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +1 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +62 -35
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +15 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +10 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.d.ts +2 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.js +13 -15
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +19 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +154 -59
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +21 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.d.ts +4 -3
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.js +6 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +17 -2
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +113 -23
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.d.ts +21 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +64 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +10 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +7 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +11 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +18 -7
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +26 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +361 -66
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +2 -2
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +30 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +147 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +11 -5
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +133 -87
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -4
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -2
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +13 -7
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +81 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +32 -18
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +2 -2
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -40
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +23 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +66 -11
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -6
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +373 -32
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -3
  144. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +18 -0
  145. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +7 -7
  146. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
  147. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  148. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.d.ts +12 -2
  149. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.js +54 -11
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  152. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  154. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  164. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  165. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  166. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +0 -76
  167. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +0 -191
  168. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +0 -50
  169. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +0 -138
  170. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +0 -12
  171. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -14
  172. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +0 -18
  173. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +0 -13
  174. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +0 -87
  175. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +0 -10
  176. package/vscode/src/vs/workbench/contrib/terminal/terminalContribChatExports.d.ts +0 -2
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +0 -2
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +0 -41
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +0 -26
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +0 -142
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +0 -52
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +0 -232
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -65
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +0 -225
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +0 -27
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +0 -143
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +0 -37
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +0 -205
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +0 -40
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +0 -174
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +0 -7
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +0 -43
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +0 -52
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +0 -260
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +0 -44
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +0 -98
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +0 -42
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +0 -225
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +0 -31
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +0 -392
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +0 -45
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +0 -243
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +0 -53
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +0 -10
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +0 -20
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +0 -310
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +0 -27
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +0 -177
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +0 -11
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +0 -33
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +0 -41
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +0 -19
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +0 -37
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +0 -19
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +0 -37
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +0 -19
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +0 -44
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +0 -13
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +0 -22
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +0 -42
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +0 -102
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +0 -5
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +0 -27
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +0 -14
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +0 -29
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +0 -8
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +0 -33
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +0 -24
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +0 -15
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +0 -53
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +0 -177
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +0 -512
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +0 -42
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +0 -23
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +0 -9
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +0 -258
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +0 -2623
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +0 -22
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +0 -43
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +0 -17
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +0 -118
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +0 -22
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +0 -44
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +0 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +0 -58
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +0 -223
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +0 -31
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +0 -49
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +0 -18
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +0 -302
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +0 -7
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +0 -118
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +0 -114
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +0 -788
@@ -31,8 +31,7 @@ import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vs
31
31
  import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
32
32
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
33
33
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
34
- import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat';
35
- import { RunInTerminalTool } from '../../../../terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js';
34
+ import { ITerminalChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
36
35
  import * as chatQuestionCarousel from './media/chatQuestionCarousel.css';
37
36
 
38
37
  registerCss(chatQuestionCarousel);
@@ -49,7 +48,8 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
49
48
  _contextKeyService,
50
49
  _keybindingService,
51
50
  _commandService,
52
- _configurationService
51
+ _configurationService,
52
+ _terminalChatService
53
53
  ) {
54
54
  super();
55
55
  this.carousel = carousel;
@@ -61,6 +61,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
61
61
  this._keybindingService = _keybindingService;
62
62
  this._commandService = _commandService;
63
63
  this._configurationService = _configurationService;
64
+ this._terminalChatService = _terminalChatService;
64
65
  this._onDidChangeHeight = this._register(( new Emitter()));
65
66
  this.onDidChangeHeight = this._onDidChangeHeight.event;
66
67
  this._currentIndex = 0;
@@ -95,7 +96,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
95
96
  });
96
97
  this.domNode.tabIndex = 0;
97
98
  this.domNode.setAttribute("role", "region");
98
- this.domNode.setAttribute("aria-roledescription", ( localize(7221, "chat question")));
99
+ this.domNode.setAttribute("aria-roledescription", ( localize(7350, "chat question")));
99
100
  this._updateAriaLabel();
100
101
  if (carousel instanceof ChatQuestionCarouselData) {
101
102
  if (typeof carousel.draftCurrentIndex === "number") {
@@ -127,7 +128,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
127
128
  this._questionContainer = $(".chat-question-carousel-content");
128
129
  this.domNode.append(this._questionContainer);
129
130
  this._headerActionsContainer = $(".chat-question-header-actions");
130
- const collapseToggleTitle = ( localize(7222, "Collapse Questions"));
131
+ const collapseToggleTitle = ( localize(7351, "Collapse Questions"));
131
132
  const collapseButton = interactiveStore.add(( new Button(this._headerActionsContainer, {
132
133
  ...defaultButtonStyles,
133
134
  secondary: true,
@@ -138,7 +139,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
138
139
  this._collapseButton = collapseButton;
139
140
  if (carousel.allowSkip) {
140
141
  this._closeButtonContainer = $(".chat-question-close-container");
141
- const skipAllTitle = ( localize(7223, "Skip all questions"));
142
+ const skipAllTitle = ( localize(7352, "Skip all questions"));
142
143
  const skipAllButton = interactiveStore.add(( new Button(this._closeButtonContainer, {
143
144
  ...defaultButtonStyles,
144
145
  secondary: true,
@@ -154,9 +155,9 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
154
155
  }
155
156
  if (carousel.terminalId) {
156
157
  this._focusTerminalButtonContainer = $(".chat-question-focus-terminal-container");
157
- const focusTerminalTitle = ( localize(7224, "Focus Terminal"));
158
+ const focusTerminalTitle = ( localize(7353, "Focus Terminal"));
158
159
  const kbLabel = this._keybindingService.lookupKeybinding("workbench.action.chat.focusQuestionCarouselTerminal")?.getLabel();
159
- const focusTerminalAriaLabel = kbLabel ? ( localize(7225, "Focus Terminal ({0})", kbLabel)) : focusTerminalTitle;
160
+ const focusTerminalAriaLabel = kbLabel ? ( localize(7354, "Focus Terminal ({0})", kbLabel)) : focusTerminalTitle;
160
161
  const focusTerminalButton = interactiveStore.add(( new Button(this._focusTerminalButtonContainer, {
161
162
  ...defaultButtonStyles,
162
163
  secondary: true,
@@ -169,9 +170,9 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
169
170
  content: focusTerminalTitle
170
171
  }));
171
172
  interactiveStore.add(focusTerminalButton.onDidClick(() => this._focusTerminal()));
172
- const execution = RunInTerminalTool.getExecution(carousel.terminalId);
173
- if (execution) {
174
- interactiveStore.add(execution.instance.onDidInputData(() => {
173
+ const terminalInstance = this._terminalChatService.getTerminalInstanceByExecutionId(carousel.terminalId);
174
+ if (terminalInstance) {
175
+ interactiveStore.add(terminalInstance.onDidInputData(() => {
175
176
  if (!this._isSkipped) {
176
177
  if (carousel instanceof ChatQuestionCarouselData) {
177
178
  carousel.dismissedByTerminalInput = true;
@@ -256,7 +257,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
256
257
  this.domNode.classList.toggle("chat-question-carousel-collapsed", this._isCollapsed);
257
258
  if (this._collapseButton) {
258
259
  const collapsed = this._isCollapsed;
259
- const buttonTitle = collapsed ? ( localize(7226, "Expand Questions")) : ( localize(7222, "Collapse Questions"));
260
+ const buttonTitle = collapsed ? ( localize(7355, "Expand Questions")) : ( localize(7351, "Collapse Questions"));
260
261
  const contentId = this.domNode.id;
261
262
  this._collapseButton.label = collapsed ? `$(${Codicon.chevronUp.id})` : `$(${Codicon.chevronDown.id})`;
262
263
  this._collapseButton.element.setAttribute("aria-label", buttonTitle);
@@ -311,7 +312,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
311
312
  const messageContent = this.getQuestionText(questionText);
312
313
  const questionCount = this.carousel.questions.length;
313
314
  const alertMessage = questionCount === 1 ? messageContent : ( localize(
314
- 7227,
315
+ 7356,
315
316
  "Question {0} of {1}: {2}",
316
317
  this._currentIndex + 1,
317
318
  questionCount,
@@ -459,7 +460,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
459
460
  _updateAriaLabel() {
460
461
  const question = this.carousel.questions[this._currentIndex];
461
462
  if (!question) {
462
- this.domNode.setAttribute("aria-label", ( localize(7228, "Chat question")));
463
+ this.domNode.setAttribute("aria-label", ( localize(7357, "Chat question")));
463
464
  return;
464
465
  }
465
466
  const questionText = question.message ?? question.title;
@@ -467,10 +468,10 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
467
468
  const questionCount = this.carousel.questions.length;
468
469
  let label;
469
470
  if (questionCount === 1) {
470
- label = ( localize(7229, "Chat question: {0}", messageContent));
471
+ label = ( localize(7358, "Chat question: {0}", messageContent));
471
472
  } else {
472
473
  label = ( localize(
473
- 7230,
474
+ 7359,
474
475
  "Chat question {0} of {1}: {2}",
475
476
  this._currentIndex + 1,
476
477
  questionCount,
@@ -481,10 +482,10 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
481
482
  if (verbose && this.carousel.terminalId) {
482
483
  const kbLabel = this._keybindingService.lookupKeybinding("workbench.action.chat.focusQuestionCarouselTerminal")?.getLabel();
483
484
  if (kbLabel) {
484
- label = ( localize(7231, "{0} Use {1} to focus the terminal.", label, kbLabel));
485
+ label = ( localize(7360, "{0} Use {1} to focus the terminal.", label, kbLabel));
485
486
  } else {
486
487
  label = ( localize(
487
- 7232,
488
+ 7361,
488
489
  "{0} Use the Focus Terminal from Question Carousel command to focus the terminal.",
489
490
  label
490
491
  ));
@@ -658,9 +659,9 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
658
659
  this._footerRow = $(".chat-question-footer-row");
659
660
  const leftControls = $(".chat-question-footer-left.chat-question-carousel-nav");
660
661
  leftControls.setAttribute("role", "navigation");
661
- leftControls.setAttribute("aria-label", ( localize(7233, "Question navigation")));
662
+ leftControls.setAttribute("aria-label", ( localize(7362, "Question navigation")));
662
663
  const arrowsContainer = $(".chat-question-nav-arrows");
663
- const previousLabel = this.getLabelWithKeybinding(( localize(7234, "Previous")), PREVIOUS_QUESTION_ACTION_ID);
664
+ const previousLabel = this.getLabelWithKeybinding(( localize(7363, "Previous")), PREVIOUS_QUESTION_ACTION_ID);
664
665
  const prevButton = interactiveStore.add(( new Button(arrowsContainer, {
665
666
  ...defaultButtonStyles,
666
667
  secondary: true,
@@ -674,7 +675,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
674
675
  }));
675
676
  interactiveStore.add(prevButton.onDidClick(() => this.navigate(-1)));
676
677
  this._prevButton = prevButton;
677
- const nextLabel = this.getLabelWithKeybinding(( localize(7235, "Next")), NEXT_QUESTION_ACTION_ID);
678
+ const nextLabel = this.getLabelWithKeybinding(( localize(7364, "Next")), NEXT_QUESTION_ACTION_ID);
678
679
  const nextButton = interactiveStore.add(( new Button(arrowsContainer, {
679
680
  ...defaultButtonStyles,
680
681
  secondary: true,
@@ -694,14 +695,14 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
694
695
  this._footerRow.appendChild(leftControls);
695
696
  const rightControls = $(".chat-question-footer-right");
696
697
  const hint = $("span.chat-question-submit-hint");
697
- hint.textContent = isMacintosh ? ( localize(7236, "⌘⏎ to submit")) : ( localize(7237, "Ctrl+Enter to submit"));
698
+ hint.textContent = isMacintosh ? ( localize(7365, "⌘⏎ to submit")) : ( localize(7366, "Ctrl+Enter to submit"));
698
699
  rightControls.appendChild(hint);
699
700
  this._submitHint = hint;
700
701
  const submitButton = interactiveStore.add(( new Button(rightControls, {
701
702
  ...defaultButtonStyles
702
703
  })));
703
704
  submitButton.element.classList.add("chat-question-submit-button");
704
- submitButton.label = ( localize(7238, "Submit"));
705
+ submitButton.label = ( localize(7367, "Submit"));
705
706
  interactiveStore.add(submitButton.onDidClick(() => this.submit()));
706
707
  this._submitButton = submitButton;
707
708
  this._footerRow.appendChild(rightControls);
@@ -722,7 +723,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
722
723
  this._nextButton.enabled = canAdvance && (!question?.required || hasAnswer) && !hasValidationError;
723
724
  }
724
725
  if (this._stepIndicator) {
725
- this._stepIndicator.textContent = ( localize(7239, "{0}/{1}", this._currentIndex + 1, this.carousel.questions.length));
726
+ this._stepIndicator.textContent = ( localize(7368, "{0}/{1}", this._currentIndex + 1, this.carousel.questions.length));
726
727
  }
727
728
  if (this._submitButton) {
728
729
  const isLastQuestion = this._currentIndex === this.carousel.questions.length - 1;
@@ -741,18 +742,18 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
741
742
  this._footerRow = $(".chat-question-footer-row");
742
743
  const leftControls = $(".chat-question-footer-left.chat-question-carousel-nav");
743
744
  leftControls.setAttribute("role", "navigation");
744
- leftControls.setAttribute("aria-label", ( localize(7233, "Question navigation")));
745
+ leftControls.setAttribute("aria-label", ( localize(7362, "Question navigation")));
745
746
  this._footerRow.appendChild(leftControls);
746
747
  const rightControls = $(".chat-question-footer-right");
747
748
  const hint = $("span.chat-question-submit-hint");
748
- hint.textContent = isMacintosh ? ( localize(7236, "⌘⏎ to submit")) : ( localize(7237, "Ctrl+Enter to submit"));
749
+ hint.textContent = isMacintosh ? ( localize(7365, "⌘⏎ to submit")) : ( localize(7366, "Ctrl+Enter to submit"));
749
750
  rightControls.appendChild(hint);
750
751
  this._submitHint = hint;
751
752
  const submitButton = interactiveStore.add(( new Button(rightControls, {
752
753
  ...defaultButtonStyles
753
754
  })));
754
755
  submitButton.element.classList.add("chat-question-submit-button");
755
- submitButton.label = ( localize(7238, "Submit"));
756
+ submitButton.label = ( localize(7367, "Submit"));
756
757
  interactiveStore.add(submitButton.onDidClick(() => this.submit()));
757
758
  this._submitButton = submitButton;
758
759
  this._footerRow.appendChild(rightControls);
@@ -761,7 +762,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
761
762
  }
762
763
  getLabelWithKeybinding(label, actionId) {
763
764
  const keybindingLabel = this._keybindingService.lookupKeybinding(actionId, this._contextKeyService)?.getLabel();
764
- return keybindingLabel ? ( localize(7240, "{0} ({1})", label, keybindingLabel)) : label;
765
+ return keybindingLabel ? ( localize(7369, "{0} ({1})", label, keybindingLabel)) : label;
765
766
  }
766
767
  renderInput(container, question) {
767
768
  switch (question.type) {
@@ -790,7 +791,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
790
791
  }
791
792
  renderTextInput(container, question) {
792
793
  const inputBox = this._inputBoxes.add(( new InputBox(container, undefined, {
793
- placeholder: ( localize(7241, "Enter your answer")),
794
+ placeholder: ( localize(7370, "Enter your answer")),
794
795
  inputBoxStyles: defaultInputBoxStyles,
795
796
  validationOptions: question.validation ? {
796
797
  validation: value => {
@@ -881,7 +882,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
881
882
  const listItem = $(".chat-question-list-item");
882
883
  listItem.setAttribute("role", "option");
883
884
  listItem.setAttribute("aria-selected", String(isSelected));
884
- listItem.setAttribute("aria-label", ( localize(7242, "Option {0}: {1}", index + 1, option.label)));
885
+ listItem.setAttribute("aria-label", ( localize(7371, "Option {0}: {1}", index + 1, option.label)));
885
886
  listItem.id = `option-${question.id}-${index}`;
886
887
  listItem.tabIndex = -1;
887
888
  const number = $(".chat-question-list-number");
@@ -947,7 +948,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
947
948
  freeformNumber.textContent = `${orderedOptions.length + 1}`;
948
949
  freeformContainer.appendChild(freeformNumber);
949
950
  freeformTextarea = $("textarea.chat-question-freeform-textarea");
950
- freeformTextarea.placeholder = ( localize(7243, "Enter custom answer"));
951
+ freeformTextarea.placeholder = ( localize(7372, "Enter custom answer"));
951
952
  freeformTextarea.rows = 1;
952
953
  if (previousFreeform !== undefined) {
953
954
  freeformTextarea.value = previousFreeform;
@@ -1059,7 +1060,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1059
1060
  const listItem = $(".chat-question-list-item.multi-select");
1060
1061
  listItem.setAttribute("role", "option");
1061
1062
  listItem.setAttribute("aria-selected", String(isChecked));
1062
- listItem.setAttribute("aria-label", ( localize(7242, "Option {0}: {1}", index + 1, option.label)));
1063
+ listItem.setAttribute("aria-label", ( localize(7371, "Option {0}: {1}", index + 1, option.label)));
1063
1064
  listItem.id = `option-${question.id}-${index}`;
1064
1065
  listItem.tabIndex = -1;
1065
1066
  const number = $(".chat-question-list-number");
@@ -1124,7 +1125,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1124
1125
  freeformNumber.textContent = `${orderedOptions.length + 1}`;
1125
1126
  freeformContainer.appendChild(freeformNumber);
1126
1127
  freeformTextarea = $("textarea.chat-question-freeform-textarea");
1127
- freeformTextarea.placeholder = ( localize(7243, "Enter custom answer"));
1128
+ freeformTextarea.placeholder = ( localize(7372, "Enter custom answer"));
1128
1129
  freeformTextarea.rows = 1;
1129
1130
  if (previousFreeform !== undefined) {
1130
1131
  freeformTextarea.value = previousFreeform;
@@ -1292,7 +1293,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1292
1293
  const skippedContainer = $(".chat-question-carousel-summary");
1293
1294
  const skippedMessage = $(".chat-question-summary-skipped");
1294
1295
  const isDismissedByTerminal = this.carousel instanceof ChatQuestionCarouselData && this.carousel.dismissedByTerminalInput;
1295
- skippedMessage.textContent = isDismissedByTerminal ? ( localize(7244, "Deferring to user's input in the terminal")) : ( localize(7245, "Skipped"));
1296
+ skippedMessage.textContent = isDismissedByTerminal ? ( localize(7373, "Deferring to user's input in the terminal")) : ( localize(7374, "Skipped"));
1296
1297
  skippedContainer.appendChild(skippedMessage);
1297
1298
  this.domNode.appendChild(skippedContainer);
1298
1299
  }
@@ -1311,16 +1312,16 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1311
1312
  const questionText = question.message ?? question.title;
1312
1313
  let labelText = typeof questionText === "string" ? questionText : questionText.value;
1313
1314
  labelText = labelText.replace(/[:\s]+$/, "");
1314
- questionRow.textContent = ( localize(7246, "Q: {0}", labelText));
1315
+ questionRow.textContent = ( localize(7375, "Q: {0}", labelText));
1315
1316
  summaryItem.appendChild(questionRow);
1316
1317
  if (answer !== undefined) {
1317
1318
  const formattedAnswer = this.formatAnswerForSummary(question, answer);
1318
1319
  const answerRow = $("div.chat-question-summary-answer-title");
1319
- answerRow.textContent = ( localize(7247, "A: {0}", formattedAnswer));
1320
+ answerRow.textContent = ( localize(7376, "A: {0}", formattedAnswer));
1320
1321
  summaryItem.appendChild(answerRow);
1321
1322
  } else {
1322
1323
  const unanswered = $("div.chat-question-summary-unanswered");
1323
- unanswered.textContent = ( localize(7248, "Not answered yet"));
1324
+ unanswered.textContent = ( localize(7377, "Not answered yet"));
1324
1325
  summaryItem.appendChild(unanswered);
1325
1326
  }
1326
1327
  summaryContainer.appendChild(summaryItem);
@@ -1360,7 +1361,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1360
1361
  if (freeformValue) {
1361
1362
  labels.push(freeformValue);
1362
1363
  }
1363
- return labels.join(( localize(7249, ", ")));
1364
+ return labels.join(( localize(7378, ", ")));
1364
1365
  }
1365
1366
  return String(answer);
1366
1367
  }
@@ -1379,7 +1380,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1379
1380
  }
1380
1381
  const answer = this._answers.get(question.id);
1381
1382
  if (question.required && (answer === undefined || answer === "")) {
1382
- this.showValidationError(( localize(7250, "This field is required")));
1383
+ this.showValidationError(( localize(7379, "This field is required")));
1383
1384
  return false;
1384
1385
  }
1385
1386
  if (question.type === "text" && question.validation && typeof answer === "string" && answer !== "") {
@@ -1404,7 +1405,7 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1404
1405
  this._currentIndex = i;
1405
1406
  this.persistDraftState();
1406
1407
  this.renderCurrentQuestion(true);
1407
- this.showValidationError(( localize(7250, "This field is required")));
1408
+ this.showValidationError(( localize(7379, "This field is required")));
1408
1409
  return false;
1409
1410
  }
1410
1411
  }
@@ -1412,34 +1413,34 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1412
1413
  }
1413
1414
  getValidationError(value, validation) {
1414
1415
  if (validation.minLength !== undefined && value.length < validation.minLength) {
1415
- return localize(7251, "Minimum length is {0}", validation.minLength);
1416
+ return localize(7380, "Minimum length is {0}", validation.minLength);
1416
1417
  }
1417
1418
  if (validation.maxLength !== undefined && value.length > validation.maxLength) {
1418
- return localize(7252, "Maximum length is {0}", validation.maxLength);
1419
+ return localize(7381, "Maximum length is {0}", validation.maxLength);
1419
1420
  }
1420
1421
  if (validation.format) {
1421
1422
  switch (validation.format) {
1422
1423
  case "email":
1423
1424
  if (!value.includes("@")) {
1424
- return localize(7253, "Please enter a valid email address");
1425
+ return localize(7382, "Please enter a valid email address");
1425
1426
  }
1426
1427
  break;
1427
1428
  case "uri":
1428
1429
  if (!URL.canParse(value)) {
1429
- return localize(7254, "Please enter a valid URI");
1430
+ return localize(7383, "Please enter a valid URI");
1430
1431
  }
1431
1432
  break;
1432
1433
  case "date":
1433
1434
  {
1434
1435
  const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
1435
1436
  if (!dateRegex.test(value) || isNaN(( new Date(value)).getTime())) {
1436
- return localize(7255, "Please enter a valid date (YYYY-MM-DD)");
1437
+ return localize(7384, "Please enter a valid date (YYYY-MM-DD)");
1437
1438
  }
1438
1439
  break;
1439
1440
  }
1440
1441
  case "date-time":
1441
1442
  if (isNaN(( new Date(value)).getTime())) {
1442
- return localize(7256, "Please enter a valid date-time");
1443
+ return localize(7385, "Please enter a valid date-time");
1443
1444
  }
1444
1445
  break;
1445
1446
  }
@@ -1447,16 +1448,16 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1447
1448
  if (validation.isInteger !== undefined || validation.minimum !== undefined || validation.maximum !== undefined) {
1448
1449
  const num = Number(value);
1449
1450
  if (isNaN(num)) {
1450
- return localize(7257, "Please enter a valid number");
1451
+ return localize(7386, "Please enter a valid number");
1451
1452
  }
1452
1453
  if (validation.isInteger && !Number.isInteger(num)) {
1453
- return localize(7258, "Please enter a valid integer");
1454
+ return localize(7387, "Please enter a valid integer");
1454
1455
  }
1455
1456
  if (validation.minimum !== undefined && num < validation.minimum) {
1456
- return localize(7259, "Minimum value is {0}", validation.minimum);
1457
+ return localize(7388, "Minimum value is {0}", validation.minimum);
1457
1458
  }
1458
1459
  if (validation.maximum !== undefined && num > validation.maximum) {
1459
- return localize(7260, "Maximum value is {0}", validation.maximum);
1460
+ return localize(7389, "Maximum value is {0}", validation.maximum);
1460
1461
  }
1461
1462
  }
1462
1463
  return undefined;
@@ -1491,6 +1492,6 @@ let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable
1491
1492
  super.dispose();
1492
1493
  }
1493
1494
  };
1494
- ChatQuestionCarouselPart = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IHoverService)), ( __param(5, IAccessibilityService)), ( __param(6, IContextKeyService)), ( __param(7, IKeybindingService)), ( __param(8, ICommandService)), ( __param(9, IConfigurationService))], ChatQuestionCarouselPart));
1495
+ ChatQuestionCarouselPart = ( __decorate([( __param(3, IMarkdownRendererService)), ( __param(4, IHoverService)), ( __param(5, IAccessibilityService)), ( __param(6, IContextKeyService)), ( __param(7, IKeybindingService)), ( __param(8, ICommandService)), ( __param(9, IConfigurationService)), ( __param(10, ITerminalChatService))], ChatQuestionCarouselPart));
1495
1496
 
1496
1497
  export { ChatQuestionCarouselPart };
@@ -49,18 +49,22 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
49
49
  const messageContainer = append(this.domNode, $(".chat-quota-error-message"));
50
50
  const markdownContent = this._register(renderer.render(( new MarkdownString(errorDetails.message))));
51
51
  append(messageContainer, markdownContent.element);
52
+ const isAdditionalSpendLimitReached = errorDetails.code === "additional_spend_limit_reached";
52
53
  let primaryButtonLabel;
53
- const isUsageBasedBilling = chatEntitlementService.quotas.usageBasedBilling === true;
54
- switch (chatEntitlementService.entitlement) {
55
- case ChatEntitlement.EDU:
56
- case ChatEntitlement.Pro:
57
- case ChatEntitlement.ProPlus:
58
- case ChatEntitlement.Max:
59
- primaryButtonLabel = isUsageBasedBilling ? ( localize(7261, "Configure Budget")) : ( localize(7262, "Configure Budget"));
60
- break;
61
- case ChatEntitlement.Free:
62
- primaryButtonLabel = ( localize(7263, "Upgrade to GitHub Copilot Pro"));
63
- break;
54
+ if (isAdditionalSpendLimitReached) {
55
+ primaryButtonLabel = ( localize(7390, "Upgrade"));
56
+ } else {
57
+ switch (chatEntitlementService.entitlement) {
58
+ case ChatEntitlement.EDU:
59
+ case ChatEntitlement.Pro:
60
+ case ChatEntitlement.ProPlus:
61
+ case ChatEntitlement.Max:
62
+ primaryButtonLabel = ( localize(7391, "Manage Budget"));
63
+ break;
64
+ case ChatEntitlement.Free:
65
+ primaryButtonLabel = ( localize(7392, "Upgrade to GitHub Copilot Pro"));
66
+ break;
67
+ }
64
68
  }
65
69
  let hasAddedWaitWarning = false;
66
70
  const addWaitWarningIfNeeded = () => {
@@ -68,7 +72,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
68
72
  return;
69
73
  }
70
74
  hasAddedWaitWarning = true;
71
- append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(7264, "Changes may take a few minutes to take effect."))));
75
+ append(messageContainer, $(".chat-quota-wait-warning", undefined, ( localize(7393, "Changes may take a few minutes to take effect."))));
72
76
  };
73
77
  let hasAddedRetryButton = false;
74
78
  const addRetryButtonIfNeeded = () => {
@@ -81,7 +85,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
81
85
  buttonForeground: asCssVariable(textLinkForeground)
82
86
  })));
83
87
  retryButton.element.classList.add("chat-quota-error-secondary-button");
84
- retryButton.label = ( localize(7265, "Click to Retry"));
88
+ retryButton.label = ( localize(7394, "Click to Retry"));
85
89
  this._register(retryButton.onDidClick(() => {
86
90
  const widget = chatWidgetService.getWidgetBySessionResource(element.sessionResource);
87
91
  if (!widget) {
@@ -100,7 +104,7 @@ let ChatQuotaExceededPart = class ChatQuotaExceededPart extends Disposable {
100
104
  primaryButton.label = primaryButtonLabel;
101
105
  primaryButton.element.classList.add("chat-quota-error-button");
102
106
  this._register(primaryButton.onDidClick(async () => {
103
- const commandId = chatEntitlementService.entitlement === ChatEntitlement.Free ? "workbench.action.chat.upgradePlan" : "workbench.action.chat.manageAdditionalSpend";
107
+ const commandId = chatEntitlementService.entitlement === ChatEntitlement.Free || isAdditionalSpendLimitReached ? "workbench.action.chat.upgradePlan" : "workbench.action.chat.manageAdditionalSpend";
104
108
  telemetryService.publicLog2("workbenchActionExecuted", {
105
109
  id: commandId,
106
110
  from: "chat-response"
@@ -57,7 +57,7 @@ let ChatCollapsibleListContentPart = class ChatCollapsibleListContentPart extend
57
57
  hoverService,
58
58
  configurationService
59
59
  ) {
60
- super(labelOverride ?? (data.length > 1 ? ( localize(7266, "Used {0} references", data.length)) : ( localize(7267, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
60
+ super(labelOverride ?? (data.length > 1 ? ( localize(7395, "Used {0} references", data.length)) : ( localize(7396, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
61
61
  this.data = data;
62
62
  this.contentReferencesListPool = contentReferencesListPool;
63
63
  this.openerService = openerService;
@@ -215,7 +215,7 @@ let CollapsibleListPool = class CollapsibleListPool extends Disposable {
215
215
  return basename(reference.uri.path);
216
216
  }
217
217
  },
218
- getWidgetAriaLabel: () => ( localize(7268, "Collapsible Chat References List"))
218
+ getWidgetAriaLabel: () => ( localize(7397, "Collapsible Chat References List"))
219
219
  },
220
220
  dnd: {
221
221
  getDragURI: element => getResourceForElement(element)?.toString() ?? null,
@@ -404,7 +404,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
404
404
  name: settingId
405
405
  }, {
406
406
  icon: Codicon.settingsGear,
407
- title: ( localize(7269, "Open setting '{0}'", settingId)),
407
+ title: ( localize(7398, "Open setting '{0}'", settingId)),
408
408
  strikethrough: data.excluded,
409
409
  extraClasses
410
410
  });
@@ -449,7 +449,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
449
449
  templateData.addedSpan.textContent = `+${diffMeta.added}`;
450
450
  templateData.removedSpan.textContent = `-${diffMeta.removed}`;
451
451
  templateData.fileDiffsContainer.setAttribute("aria-label", ( localize(
452
- 7270,
452
+ 7399,
453
453
  "{0} lines added, {1} lines removed",
454
454
  diffMeta.added,
455
455
  diffMeta.removed
@@ -530,7 +530,7 @@ registerAction2(class AddToChatAction extends Action2 {
530
530
  super({
531
531
  id: AddToChatAction.id,
532
532
  title: {
533
- ...( localize2(7271, "Add File to Chat"))
533
+ ...( localize2(7400, "Add File to Chat"))
534
534
  },
535
535
  f1: false,
536
536
  menu: [{
@@ -560,7 +560,7 @@ registerAction2(class OpenChatReferenceLinkAction extends Action2 {
560
560
  super({
561
561
  id: OpenChatReferenceLinkAction.id,
562
562
  title: {
563
- ...( localize2(7272, "Copy Link"))
563
+ ...( localize2(7401, "Copy Link"))
564
564
  },
565
565
  f1: false,
566
566
  menu: [{
@@ -6,7 +6,7 @@ import { decodeBase64 } from '@codingame/monaco-vscode-api/vscode/vs/base/common
6
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
7
7
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
8
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
- import { basename, joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
9
+ import { basename, extname, joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
10
10
  import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
11
11
  import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
12
  import { MenuWorkbenchToolBar } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/toolbar';
@@ -22,7 +22,7 @@ import { ProgressLocation } from '@codingame/monaco-vscode-api/vscode/vs/platfor
22
22
  import { IProgressService } from '@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress.service';
23
23
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
24
24
  import { REVEAL_IN_EXPLORER_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/browser/fileConstants';
25
- import { getAttachableImageExtension } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
25
+ import { getAttachableImageExtension, CHAT_ATTACHABLE_IMAGE_MIME_TYPES } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
26
26
  import { ChatAttachmentsContentPart } from './chatAttachmentsContentPart.js';
27
27
 
28
28
  const IMAGE_DECODE_DELAY_MS = 100;
@@ -46,7 +46,8 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
46
46
  const deferredImageParts = [];
47
47
  for (let i = 0; i < parts.length; i++) {
48
48
  const part = parts[i];
49
- if (part.mimeType && getAttachableImageExtension(part.mimeType)) {
49
+ const imageMimeType = getResourceImageMimeType(part);
50
+ if (imageMimeType) {
50
51
  if (part.base64Value) {
51
52
  entries.push({
52
53
  kind: "file",
@@ -57,7 +58,8 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
57
58
  });
58
59
  deferredImageParts.push({
59
60
  index: i,
60
- part
61
+ part,
62
+ mimeType: imageMimeType
61
63
  });
62
64
  } else if (part.value) {
63
65
  entries.push({
@@ -65,7 +67,7 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
65
67
  id: generateUuid(),
66
68
  name: basename(part.uri),
67
69
  value: part.value,
68
- mimeType: part.mimeType,
70
+ mimeType: imageMimeType,
69
71
  isURL: false,
70
72
  references: [{
71
73
  kind: "reference",
@@ -88,7 +90,7 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
88
90
  id: generateUuid(),
89
91
  name: basename(part.uri),
90
92
  value,
91
- mimeType: part.mimeType,
93
+ mimeType: imageMimeType,
92
94
  isURL: false,
93
95
  references: [{
94
96
  kind: "reference",
@@ -156,7 +158,8 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
156
158
  this._register(disposableTimeout(() => {
157
159
  for (const {
158
160
  index,
159
- part
161
+ part,
162
+ mimeType
160
163
  } of deferredImageParts) {
161
164
  try {
162
165
  const value = decodeBase64(part.base64Value).buffer;
@@ -165,7 +168,7 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
165
168
  id: generateUuid(),
166
169
  name: basename(part.uri),
167
170
  value,
168
- mimeType: part.mimeType,
171
+ mimeType,
169
172
  isURL: false,
170
173
  references: [{
171
174
  kind: "reference",
@@ -181,6 +184,13 @@ let ChatResourceGroupWidget = class ChatResourceGroupWidget extends Disposable {
181
184
  }
182
185
  };
183
186
  ChatResourceGroupWidget = ( __decorate([( __param(1, IInstantiationService)), ( __param(2, IContextMenuService)), ( __param(3, IFileService))], ChatResourceGroupWidget));
187
+ function getResourceImageMimeType(part) {
188
+ if (part.mimeType && getAttachableImageExtension(part.mimeType)) {
189
+ return part.mimeType;
190
+ }
191
+ const extension = extname(part.uri).slice(1).toLowerCase();
192
+ return CHAT_ATTACHABLE_IMAGE_MIME_TYPES[extension];
193
+ }
184
194
  class SaveResourcesAction extends Action2 {
185
195
  static {
186
196
  this.ID = "chat.toolOutput.save";
@@ -188,7 +198,7 @@ class SaveResourcesAction extends Action2 {
188
198
  constructor() {
189
199
  super({
190
200
  id: SaveResourcesAction.ID,
191
- title: ( localize2(7273, "Save...")),
201
+ title: ( localize2(7402, "Save...")),
192
202
  icon: Codicon.cloudDownload,
193
203
  menu: [{
194
204
  id: MenuId.ChatToolOutputResourceToolbar,
@@ -218,14 +228,14 @@ class SaveResourcesAction extends Action2 {
218
228
  await fileService.writeFile(target, contents.value);
219
229
  }
220
230
  } catch (e) {
221
- notificationService.error(( localize(7274, "Failed to save {0}: {1}", basename(part.uri), e)));
231
+ notificationService.error(( localize(7403, "Failed to save {0}: {1}", basename(part.uri), e)));
222
232
  }
223
233
  };
224
234
  const withProgress = async (thenReveal, todo) => {
225
235
  await progressService.withProgress({
226
236
  location: ProgressLocation.Notification,
227
237
  delay: 5_000,
228
- title: ( localize(7275, "Saving resources..."))
238
+ title: ( localize(7404, "Saving resources..."))
229
239
  }, async report => {
230
240
  for (const task of todo) {
231
241
  await task();
@@ -238,7 +248,7 @@ class SaveResourcesAction extends Action2 {
238
248
  if (workspaceContextService.isInsideWorkspace(thenReveal)) {
239
249
  commandService.executeCommand(REVEAL_IN_EXPLORER_COMMAND_ID, thenReveal);
240
250
  } else {
241
- notificationService.info(( localize(7276, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
251
+ notificationService.info(( localize(7405, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
242
252
  }
243
253
  };
244
254
  if (context.parts.length === 1) {
@@ -250,7 +260,7 @@ class SaveResourcesAction extends Action2 {
250
260
  await withProgress(uri, [() => savePart(part, false, uri)]);
251
261
  } else {
252
262
  const uris = await fileDialog.showOpenDialog({
253
- title: ( localize(7277, "Pick folder to save resources")),
263
+ title: ( localize(7406, "Pick folder to save resources")),
254
264
  canSelectFiles: false,
255
265
  canSelectFolders: true,
256
266
  canSelectMany: false,