@codingame/monaco-vscode-katex-common 31.0.1 → 32.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 (220) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +15 -3
  3. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +6 -5
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +5 -1
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +45 -14
  6. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +15 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +15 -10
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +51 -54
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +3 -1
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +45 -23
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +13 -7
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +5 -3
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +4 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +46 -32
  21. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +8 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +155 -46
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  25. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +20 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.d.ts +4 -1
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +37 -14
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/media/chatSessionPickerActionItem.css +1 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +28 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +250 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +14 -11
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +7 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +7 -3
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +12 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +51 -20
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +6 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +56 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +3 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +4 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +68 -10
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.d.ts +58 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +653 -75
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +28 -10
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +91 -54
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +7 -5
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +53 -51
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -11
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +4 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +42 -22
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +6 -2
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +93 -35
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +5 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +169 -27
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +13 -4
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +29 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +60 -15
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +13 -6
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +15 -8
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +6 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +125 -26
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +29 -23
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +14 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +119 -10
  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/chatToolInvocationPart.js +1 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  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/media/toolRiskBadge.css +77 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +38 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +125 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +1 -0
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +132 -59
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +16 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +156 -67
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +55 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +93 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +21 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +133 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +53 -8
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +288 -125
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +23 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +699 -145
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +12 -8
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +12 -11
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.d.ts +62 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +120 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +191 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css +22 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +9 -25
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +4 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +20 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +89 -108
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +521 -9
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +19 -19
  136. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  137. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.d.ts +2 -0
  138. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.js +6 -0
  139. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +27 -0
  140. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +82 -0
  141. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +3 -0
  142. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +44 -17
  143. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -3
  144. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +3 -46
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.d.ts → inlineChatAffordanceWidget.d.ts} +1 -1
  146. package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.js → inlineChatAffordanceWidget.js} +6 -6
  147. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -18
  148. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +19 -400
  149. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -9
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +1 -1
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +5 -19
  152. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +47 -133
  153. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +3 -1
  154. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +103 -25
  155. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +29 -0
  156. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +3 -32
  157. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -92
  158. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  164. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  165. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  166. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  167. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  169. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +7 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +99 -32
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +13 -1
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +76 -14
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -3
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +9 -1
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +89 -28
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +1 -1
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -1
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +11 -7
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +3 -1
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +7 -3
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +1 -1
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +8 -0
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +11 -2
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +20 -0
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +59 -4
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -1
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +24 -3
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +47 -0
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +111 -30
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +60 -3
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +455 -171
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +33 -0
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +31 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +49 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +18 -0
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +302 -0
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +118 -0
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +34 -4
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +233 -48
  206. package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +0 -16
  207. package/vscode/src/vs/platform/actions/browser/actionbar.js +0 -22
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -539
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -29
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -386
  212. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +0 -101
  213. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +0 -509
  214. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -130
  215. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +0 -276
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.d.ts +0 -45
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.js +0 -93
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +0 -39
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +0 -617
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +0 -231
@@ -52,9 +52,6 @@
52
52
  max-height: min(720px, 75vh);
53
53
  }
54
54
 
55
- .interactive-session .chat-plan-review-container.chat-plan-review-expanded .chat-confirmation-widget-message.chat-plan-review-body {
56
- max-height: min(600px, 65vh);
57
- }
58
55
  /* ---------- Title bar ---------- */
59
56
  .interactive-session .chat-plan-review-container .chat-plan-review-title {
60
57
  display: flex;
@@ -101,18 +98,13 @@
101
98
  background: var(--vscode-toolbar-hoverBackground) !important;
102
99
  }
103
100
 
104
- /* Icon-only square buttons (restore, chevron). Exactly 22x22 with no padding,
105
- * matching `.monaco-button.chat-question-collapse-toggle`. */
101
+ /* Icon-only square buttons (restore, chevron, edit). Exactly 22x22 with no
102
+ * padding, matching `.monaco-button.chat-question-collapse-toggle`. */
106
103
  .interactive-session .chat-plan-review-container .monaco-button.chat-plan-review-title-icon-button {
107
104
  width: 22px;
108
105
  padding: 0;
109
106
  }
110
107
 
111
- .interactive-session .chat-plan-review-container .monaco-button.chat-plan-review-edit {
112
- font-size: var(--vscode-chat-font-size-body-s);
113
- color: var(--vscode-foreground) !important;
114
- }
115
-
116
108
  /* Inline slot in the title bar. The action buttons (Approve + Reject) get
117
109
  * re-rendered here when the widget is collapsed so the user can act on the
118
110
  * plan without expanding it. */
@@ -129,15 +121,44 @@
129
121
  display: flex;
130
122
  }
131
123
 
132
- .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button {
124
+ /* Action button row sizing — shared between the inline (collapsed) action
125
+ * slot in the title bar and the footer. Keep these two rule sets together so
126
+ * any tweaks stay in sync. */
127
+ .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button,
128
+ .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button {
133
129
  width: auto;
134
130
  min-width: auto;
135
131
  padding: 0 10px;
136
132
  height: 22px;
137
133
  }
138
134
 
139
- .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button-dropdown {
135
+ .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button-dropdown,
136
+ .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button-dropdown {
140
137
  width: auto;
138
+ height: 22px;
139
+ align-items: center;
140
+ }
141
+
142
+ .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button-dropdown > .monaco-button,
143
+ .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button-dropdown > .monaco-button {
144
+ height: 22px;
145
+ box-sizing: border-box;
146
+ }
147
+
148
+ .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button-dropdown > .monaco-button.monaco-dropdown-button,
149
+ .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button-dropdown > .monaco-button.monaco-dropdown-button {
150
+ padding: 0 4px;
151
+ }
152
+
153
+ /* The default-colors separator has `padding: 4px 0` plus 1px top/bottom
154
+ * borders; with content-box sizing it would visually overflow the 22px
155
+ * dropdown wrapper and make the chevron half look taller than the primary
156
+ * button. Force border-box and a fixed height so it matches. */
157
+ .interactive-session .chat-plan-review-container .chat-plan-review-inline-actions .monaco-button-dropdown > .monaco-button-dropdown-separator,
158
+ .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button-dropdown > .monaco-button-dropdown-separator {
159
+ box-sizing: border-box;
160
+ height: 22px;
161
+ padding: 3px 0;
141
162
  }
142
163
 
143
164
  /* ---------- Scrollable markdown body ----------
@@ -146,17 +167,19 @@
146
167
  * to clip and display its scrollbar against. DomScrollableElement sets the
147
168
  * inner element's `overflow: hidden` inline, so we don't set overflow here. */
148
169
  .interactive-session .chat-plan-review-container .chat-confirmation-widget-message-scrollable.chat-plan-review-body-scrollable {
149
- flex: 1;
170
+ flex: 1 1 auto;
150
171
  min-height: 0;
151
172
  }
152
173
 
174
+ /* The inner element must fill the wrapper exactly — `DomScrollableElement`
175
+ * measures `clientHeight` against it, so a taller layout height would break
176
+ * scrollbar geometry once the feedback section claims part of the widget. */
153
177
  .interactive-session .chat-plan-review-container .chat-confirmation-widget-message.chat-plan-review-body {
154
- flex: 1;
155
- min-height: 0;
156
- max-height: min(300px, 40vh);
157
178
  padding: 6px 12px;
158
179
  background: transparent;
159
180
  border-bottom: none;
181
+ height: 100%;
182
+ box-sizing: border-box;
160
183
  }
161
184
 
162
185
  .interactive-session .chat-plan-review-container .chat-confirmation-widget-message.chat-plan-review-body .rendered-markdown p:first-child {
@@ -165,6 +188,20 @@
165
188
 
166
189
  .interactive-session .chat-plan-review-container .chat-confirmation-widget-message.chat-plan-review-body .rendered-markdown > :last-child {
167
190
  margin-bottom: 0;
191
+ margin-top: 0;
192
+ padding-inline-start: 20px;
193
+ }
194
+
195
+ .interactive-session .chat-plan-review-container .chat-confirmation-widget-message.chat-plan-review-body.chat-plan-review-body-editor {
196
+ min-height: min(280px, 35vh);
197
+ }
198
+
199
+ .interactive-session .chat-plan-review-container.chat-plan-review-expanded .chat-confirmation-widget-message.chat-plan-review-body.chat-plan-review-body-editor {
200
+ min-height: min(520px, 60vh);
201
+ }
202
+
203
+ .interactive-session .chat-plan-review-container .chat-plan-review-body-editor > .monaco-editor {
204
+ height: 100%;
168
205
  }
169
206
 
170
207
  /* ---------- Feedback section (fixed; outside scroll) ---------- */
@@ -177,7 +214,17 @@
177
214
  flex-shrink: 0;
178
215
  }
179
216
 
217
+ .interactive-session .chat-plan-review-container .chat-plan-review-feedback-header {
218
+ display: flex;
219
+ align-items: center;
220
+ justify-content: space-between;
221
+ gap: 6px;
222
+ min-width: 0;
223
+ }
224
+
180
225
  .interactive-session .chat-plan-review-container .chat-plan-review-feedback-label {
226
+ flex: 1;
227
+ min-width: 0;
181
228
  font-size: var(--vscode-chat-font-size-body-s);
182
229
  color: var(--vscode-descriptionForeground);
183
230
  }
@@ -209,29 +256,124 @@
209
256
  color: var(--vscode-input-placeholderForeground);
210
257
  }
211
258
 
212
- /* ---------- Footer buttons ---------- */
213
- .interactive-session .chat-plan-review-container > .chat-confirmation-widget2.chat-plan-review > .chat-confirmation-widget-buttons.chat-plan-review-footer {
214
- justify-content: flex-start;
215
- border-top: 1px solid var(--vscode-chat-requestBorder);
216
- padding: 6px 8px;
259
+ /* ---------- Inline comments list (anchored feedback captured from editor) ---------- */
260
+ .interactive-session .chat-plan-review-container .chat-plan-review-comments-list-scrollable {
261
+ margin-bottom: 2px;
262
+ }
263
+
264
+ .interactive-session .chat-plan-review-container .chat-plan-review-comments-list {
265
+ display: flex;
266
+ flex-direction: column;
267
+ gap: 2px;
268
+ max-height: 100px;
269
+ }
270
+
271
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-row {
272
+ display: flex;
273
+ align-items: stretch;
274
+ min-width: 0;
275
+ border: 1px solid transparent;
276
+ border-radius: 4px;
277
+ }
278
+
279
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-row:hover {
280
+ background: var(--vscode-list-hoverBackground);
281
+ }
282
+
283
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-row:focus-within {
284
+ outline: 1px solid var(--vscode-focusBorder);
285
+ outline-offset: -1px;
286
+ }
287
+
288
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-reveal {
289
+ flex: 1;
290
+ min-width: 0;
291
+ display: flex;
292
+ align-items: baseline;
293
+ gap: 8px;
294
+ padding: 3px 6px;
295
+ background: transparent;
296
+ border: none;
297
+ color: var(--vscode-foreground);
298
+ font: inherit;
299
+ font-size: var(--vscode-chat-font-size-body-s);
300
+ text-align: left;
301
+ cursor: pointer;
302
+ }
303
+
304
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-reveal:focus {
305
+ outline: none;
306
+ }
307
+
308
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-remove {
217
309
  flex-shrink: 0;
310
+ display: inline-flex;
311
+ align-items: center;
312
+ justify-content: center;
313
+ width: 22px;
314
+ padding: 0;
315
+ background: transparent;
316
+ border: none;
317
+ color: var(--vscode-icon-foreground);
318
+ cursor: pointer;
319
+ opacity: 0;
320
+ transition: opacity 0.1s ease-in-out;
218
321
  }
219
322
 
220
- .interactive-session .chat-plan-review-container > .chat-confirmation-widget2.chat-plan-review > .chat-confirmation-widget-buttons.chat-plan-review-footer .chat-buttons {
323
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-row:hover .chat-plan-review-comment-remove,
324
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-row:focus-within .chat-plan-review-comment-remove,
325
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-remove:focus {
326
+ opacity: 1;
327
+ }
328
+
329
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-remove:hover {
330
+ background: var(--vscode-toolbar-hoverBackground);
331
+ border-radius: 4px;
332
+ }
333
+
334
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-line {
335
+ flex-shrink: 0;
336
+ color: var(--vscode-descriptionForeground);
337
+ font-variant-numeric: tabular-nums;
338
+ }
339
+
340
+ .interactive-session .chat-plan-review-container .chat-plan-review-comment-text {
341
+ flex: 1;
342
+ min-width: 0;
343
+ white-space: nowrap;
344
+ overflow: hidden;
345
+ text-overflow: ellipsis;
346
+ }
347
+
348
+ /* ---------- Feedback header actions (Back, Clear All) ---------- */
349
+ .interactive-session .chat-plan-review-container .chat-plan-review-feedback-header-actions {
221
350
  display: flex;
222
- column-gap: 6px;
223
351
  align-items: center;
352
+ gap: 4px;
353
+ flex-shrink: 0;
224
354
  }
225
355
 
226
- .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button {
356
+ .interactive-session .chat-plan-review-container .monaco-button.chat-plan-review-feedback-close,
357
+ .interactive-session .chat-plan-review-container .monaco-button.chat-plan-review-feedback-clear-all,
358
+ .interactive-session .chat-plan-review-container .monaco-button.chat-plan-review-review-button:not(.chat-plan-review-title-icon-button) {
227
359
  width: auto;
228
360
  min-width: auto;
229
- padding: 0 10px;
361
+ padding: 0 8px;
230
362
  height: 22px;
231
363
  }
232
364
 
233
- .interactive-session .chat-plan-review-container .chat-plan-review-footer .monaco-button-dropdown {
234
- width: auto;
365
+ /* ---------- Footer buttons ---------- */
366
+ .interactive-session .chat-plan-review-container > .chat-confirmation-widget2.chat-plan-review > .chat-confirmation-widget-buttons.chat-plan-review-footer {
367
+ justify-content: flex-start;
368
+ border-top: 1px solid var(--vscode-chat-requestBorder);
369
+ padding: 6px 8px;
370
+ flex-shrink: 0;
371
+ }
372
+
373
+ .interactive-session .chat-plan-review-container > .chat-confirmation-widget2.chat-plan-review > .chat-confirmation-widget-buttons.chat-plan-review-footer .chat-buttons {
374
+ display: flex;
375
+ column-gap: 6px;
376
+ align-items: center;
235
377
  }
236
378
 
237
379
  /* ---------- Hidden helper ---------- */
@@ -62,12 +62,11 @@
62
62
  display: flex;
63
63
  flex-direction: column;
64
64
  flex-shrink: 0;
65
- overflow: hidden;
66
65
 
67
66
  .chat-question-title-row {
68
67
  display: flex;
69
68
  justify-content: space-between;
70
- align-items: center;
69
+ align-items: flex-start;
71
70
  gap: 8px;
72
71
  min-width: 0;
73
72
  padding: 8px 8px 8px 16px;
@@ -77,8 +76,9 @@
77
76
  .chat-question-title {
78
77
  flex: 1;
79
78
  min-width: 0;
80
- word-wrap: break-word;
81
- overflow-wrap: break-word;
79
+ word-break: break-word;
80
+ overflow-wrap: anywhere;
81
+ white-space: normal;
82
82
  font-weight: 500;
83
83
  font-size: var(--vscode-chat-font-size-body-s);
84
84
  margin: 0;
@@ -462,6 +462,13 @@
462
462
  }
463
463
  }
464
464
 
465
+ /* user-select: text for elicitation dialog text areas */
466
+ .interactive-session .chat-question-carousel-container .chat-question-detailed-message,
467
+ .interactive-session .chat-question-carousel-container .chat-question-description {
468
+ user-select: text;
469
+ -webkit-user-select: text;
470
+ }
471
+
465
472
  /* carousel-level message (e.g. from MCP elicitation) */
466
473
  .interactive-session .chat-question-carousel-container .chat-question-carousel-message {
467
474
  padding: 8px 16px 0;
@@ -470,6 +477,8 @@
470
477
  max-height: min(220px, 25vh);
471
478
  overflow-y: auto;
472
479
  overscroll-behavior: contain;
480
+ user-select: text;
481
+ -webkit-user-select: text;
473
482
 
474
483
  .rendered-markdown p {
475
484
  margin: 0;
@@ -376,7 +376,7 @@
376
376
  }
377
377
 
378
378
  &.chat-thinking-persistent-streaming {
379
- margin-bottom: 0;
379
+ margin-bottom: 3px;
380
380
  }
381
381
 
382
382
  > .monaco-scrollable-element > .shadow {
@@ -151,6 +151,29 @@
151
151
  opacity: 0.4;
152
152
  }
153
153
 
154
+ .monaco-button.chat-tool-carousel-header-button {
155
+ min-width: 22px;
156
+ width: 22px;
157
+ height: 22px;
158
+ padding: 0;
159
+ border: none !important;
160
+ box-shadow: none !important;
161
+ background: transparent !important;
162
+ color: var(--vscode-icon-foreground) !important;
163
+ cursor: pointer;
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ }
168
+
169
+ .monaco-button.chat-tool-carousel-header-button:hover:not(.disabled) {
170
+ background: var(--vscode-toolbar-hoverBackground) !important;
171
+ }
172
+
173
+ &.chat-tool-carousel-content-expanded {
174
+ max-height: min(650px, 70vh);
175
+ }
176
+
154
177
  .monaco-list:focus {
155
178
  outline: none !important;
156
179
  }
@@ -211,6 +234,12 @@
211
234
  max-height: min(200px, 30vh);
212
235
  }
213
236
 
237
+ .chat-tool-carousel-content-expanded & {
238
+ .chat-confirmation-widget-message {
239
+ max-height: min(500px, 55vh);
240
+ }
241
+ }
242
+
214
243
  .chat-confirmation-message-terminal-editor .interactive-result-code-block {
215
244
  background-color: var(--vscode-sideBar-background);
216
245
  }
@@ -37,6 +37,7 @@ export declare abstract class AbstractToolConfirmationSubPart extends BaseChatTo
37
37
  constructor(toolInvocation: IChatToolInvocation, context: IChatContentPartRenderContext, instantiationService: IInstantiationService, keybindingService: IKeybindingService, contextKeyService: IContextKeyService, chatWidgetService: IChatWidgetService, languageModelToolsService: ILanguageModelToolsService);
38
38
  protected render(config: IToolConfirmationConfig): void;
39
39
  protected confirmWith(toolInvocation: IChatToolInvocation, reason: ConfirmedReason): void;
40
+ private buildCustomOptionButtons;
40
41
  protected additionalPrimaryActions(): AbstractToolPrimaryAction[];
41
42
  /**
42
43
  * When true, "Allow Once" stays the primary button even when a
@@ -1,11 +1,13 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
3
4
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
5
  import { toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
6
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
6
7
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
7
8
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
8
9
  import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
10
+ import { ConfirmationOptionKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/state';
9
11
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
10
12
  import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
11
13
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
@@ -42,19 +44,10 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
42
44
  toolInvocation
43
45
  } = this;
44
46
  const state = toolInvocation.state.get();
45
- const customButtons = state.type === IChatToolInvocation.StateKind.WaitingForConfirmation ? state.confirmationMessages?.customButtons : undefined;
47
+ const customOptions = state.type === IChatToolInvocation.StateKind.WaitingForConfirmation ? state.confirmationMessages?.customOptions : undefined;
46
48
  let buttons;
47
- if (customButtons && customButtons.length > 0) {
48
- buttons = ( customButtons.map((label, index) => ({
49
- label,
50
- data: () => {
51
- this.confirmWith(toolInvocation, {
52
- type: ToolConfirmKind.UserAction,
53
- selectedButton: label
54
- });
55
- },
56
- isSecondary: index > 0
57
- })));
49
+ if (customOptions && customOptions.length > 0) {
50
+ buttons = this.buildCustomOptionButtons(toolInvocation, customOptions);
58
51
  } else {
59
52
  const allowTooltip = keybindingService.appendKeybinding(config.allowLabel, config.allowActionId);
60
53
  const skipTooltip = keybindingService.appendKeybinding(config.skipLabel, config.skipActionId);
@@ -77,7 +70,7 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
77
70
  data: primaryAction.data,
78
71
  moreActions: moreActions.length > 0 ? moreActions : undefined
79
72
  }, {
80
- label: ( localize(7022, "Skip")),
73
+ label: ( localize(7304, "Skip")),
81
74
  tooltip: skipTooltip,
82
75
  data: () => {
83
76
  this.confirmWith(toolInvocation, {
@@ -105,9 +98,16 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
105
98
  );
106
99
  const hasToolConfirmation = ChatContextKeys.Editing.hasToolConfirmation.bindTo(this.contextKeyService);
107
100
  hasToolConfirmation.set(true);
108
- this._register(confirmWidget.onDidClick(button => {
101
+ this._register(confirmWidget.onDidClick((
102
+ {
103
+ button,
104
+ isTouchClick
105
+ }
106
+ ) => {
109
107
  button.data();
110
- this.chatWidgetService.getWidgetBySessionResource(this.context.element.sessionResource)?.focusInput();
108
+ if (!isTouchClick) {
109
+ this.chatWidgetService.getWidgetBySessionResource(this.context.element.sessionResource)?.focusInput();
110
+ }
111
111
  }));
112
112
  this._register(toDisposable(() => hasToolConfirmation.reset()));
113
113
  this.domNode = confirmWidget.domNode;
@@ -115,6 +115,51 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
115
115
  confirmWith(toolInvocation, reason) {
116
116
  IChatToolInvocation.confirmWith(toolInvocation, reason);
117
117
  }
118
+ buildCustomOptionButtons(toolInvocation, options) {
119
+ const approve = [];
120
+ const deny = [];
121
+ for (const option of options) {
122
+ (option.kind === ConfirmationOptionKind.Deny ? deny : approve).push(option);
123
+ }
124
+ const makeAction = option => ({
125
+ label: option.label,
126
+ data: () => {
127
+ this.confirmWith(toolInvocation, {
128
+ type: ToolConfirmKind.UserAction,
129
+ selectedButton: option.id,
130
+ selectedButtonKind: option.kind
131
+ });
132
+ }
133
+ });
134
+ const makeGroupButton = (group, isSecondary) => {
135
+ const [primary, ...rest] = group;
136
+ const button = {
137
+ ...makeAction(primary),
138
+ isSecondary
139
+ };
140
+ if (rest.length > 0) {
141
+ const moreActions = [];
142
+ let prevGroup = primary.group;
143
+ for (const option of rest) {
144
+ if (option.group !== prevGroup) {
145
+ moreActions.push(( new Separator()));
146
+ }
147
+ moreActions.push(makeAction(option));
148
+ prevGroup = option.group;
149
+ }
150
+ button.moreActions = moreActions;
151
+ }
152
+ return button;
153
+ };
154
+ const buttons = [];
155
+ if (approve.length > 0) {
156
+ buttons.push(makeGroupButton(approve, false));
157
+ }
158
+ if (deny.length > 0) {
159
+ buttons.push(makeGroupButton(deny, approve.length > 0));
160
+ }
161
+ return buttons;
162
+ }
118
163
  additionalPrimaryActions() {
119
164
  return [];
120
165
  }
@@ -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(7023, "Allow"));
49
+ const allowLabel = ( localize(7305, "Allow"));
50
50
  const allowTooltip = keybindingService.appendKeybinding(allowLabel, AcceptToolConfirmationActionId);
51
- const cancelLabel = ( localize(7024, "Cancel"));
51
+ const cancelLabel = ( localize(7306, "Cancel"));
52
52
  const cancelTooltip = keybindingService.appendKeybinding(cancelLabel, CancelChatActionId);
53
53
  const enableAllowButtonEvent = this._register(( new Emitter()));
54
54
  const buttons = [{
@@ -68,18 +68,25 @@ 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(7025, "Install Extensions")),
71
+ title: state.confirmationMessages?.title ?? ( localize(7307, "Install Extensions")),
72
72
  message: state.confirmationMessages?.message ?? ( localize(
73
- 7026,
73
+ 7308,
74
74
  "Click the Install button on the extension and then press Allow when finished."
75
75
  )),
76
76
  buttons
77
77
  }));
78
78
  this._confirmWidget = confirmWidget;
79
79
  append(this.domNode, confirmWidget.domNode);
80
- this._register(confirmWidget.onDidClick(button => {
80
+ this._register(confirmWidget.onDidClick((
81
+ {
82
+ button,
83
+ isTouchClick
84
+ }
85
+ ) => {
81
86
  IChatToolInvocation.confirmWith(toolInvocation, button.data);
82
- chatWidgetService.getWidgetBySessionResource(context.element.sessionResource)?.focusInput();
87
+ if (!isTouchClick) {
88
+ chatWidgetService.getWidgetBySessionResource(context.element.sessionResource)?.focusInput();
89
+ }
83
90
  }));
84
91
  const hasToolConfirmationKey = ChatContextKeys.Editing.hasToolConfirmation.bindTo(contextKeyService);
85
92
  hasToolConfirmationKey.set(true);
@@ -84,7 +84,7 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
84
84
  this._height = ChatMcpAppModel_1.heightCache.get(this.toolInvocation) ?? 300;
85
85
  this._webview = this._register(this._webviewService.createWebviewElement({
86
86
  origin: this._webviewOrigin,
87
- title: ( localize(7027, "MCP App")),
87
+ title: ( localize(7309, "MCP App")),
88
88
  options: {
89
89
  purpose: WebviewContentPurpose.ChatOutputItem,
90
90
  enableFindWidget: false,
@@ -100,7 +100,7 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
100
100
  {
101
101
  container.style.display = "none";
102
102
  const progressMessage = $("span");
103
- progressMessage.textContent = ( localize(7028, "Loading MCP App..."));
103
+ progressMessage.textContent = ( localize(7310, "Loading MCP App..."));
104
104
  const progressPart = this._instantiationService.createInstance(
105
105
  ChatProgressSubPart,
106
106
  progressMessage,
@@ -130,12 +130,12 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
130
130
  _showError(container, error) {
131
131
  const errorNode = $(".mcp-app-error");
132
132
  const errorMessage = ( new MarkdownString());
133
- errorMessage.appendText(( localize(7029, "Error loading MCP App: {0}", error.message || String(error))));
133
+ errorMessage.appendText(( localize(7311, "Error loading MCP App: {0}", error.message || String(error))));
134
134
  const errorWidget = this._register(( new ChatErrorWidget(ChatErrorLevel.Error, errorMessage, this._markdownRendererService)));
135
135
  errorNode.appendChild(errorWidget.domNode);
136
136
  const buttonContainer = append(errorNode, $(".chat-buttons-container"));
137
137
  const retryButton = this._register(( new Button(buttonContainer, defaultButtonStyles)));
138
- retryButton.label = ( localize(7030, "Retry"));
138
+ retryButton.label = ( localize(7312, "Retry"));
139
139
  this._register(retryButton.onDidClick(() => {
140
140
  this._model.retry();
141
141
  }));
@@ -38,8 +38,8 @@ let ChatMissingSandboxDepsConfirmationSubPart = class ChatMissingSandboxDepsConf
38
38
  this.render({
39
39
  allowActionId: AcceptToolConfirmationActionId,
40
40
  skipActionId: SkipToolConfirmationActionId,
41
- allowLabel: ( localize(7031, "Install")),
42
- skipLabel: ( localize(7032, "Cancel")),
41
+ allowLabel: ( localize(7313, "Install")),
42
+ skipLabel: ( localize(7314, "Cancel")),
43
43
  partType: "chatMissingSandboxDepsConfirmation"
44
44
  });
45
45
  }
@@ -73,9 +73,16 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
73
73
  );
74
74
  const hasToolConfirmation = ChatContextKeys.Editing.hasToolConfirmation.bindTo(this.contextKeyService);
75
75
  hasToolConfirmation.set(true);
76
- this._register(confirmWidget.onDidClick(button => {
76
+ this._register(confirmWidget.onDidClick((
77
+ {
78
+ button,
79
+ isTouchClick
80
+ }
81
+ ) => {
77
82
  button.data();
78
- this.chatWidgetService.getWidgetBySessionResource(this.context.element.sessionResource)?.focusInput();
83
+ if (!isTouchClick) {
84
+ this.chatWidgetService.getWidgetBySessionResource(this.context.element.sessionResource)?.focusInput();
85
+ }
79
86
  }));
80
87
  this._register(toDisposable(() => hasToolConfirmation.reset()));
81
88
  this.domNode = confirmWidget.domNode;
@@ -130,7 +137,7 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
130
137
  const addedSpan = append(countsContainer, $(".working-set-lines-added"));
131
138
  const removedSpan = append(countsContainer, $(".working-set-lines-removed"));
132
139
  titleButton.element.appendChild(countsContainer);
133
- const filesLabel = data.modifiedFiles.length === 1 ? ( localize(7033, "1 file changed")) : ( localize(7034, "{0} files changed", data.modifiedFiles.length));
140
+ const filesLabel = data.modifiedFiles.length === 1 ? ( localize(7315, "1 file changed")) : ( localize(7316, "{0} files changed", data.modifiedFiles.length));
134
141
  titleButton.label = filesLabel;
135
142
  let added = 0;
136
143
  let removed = 0;
@@ -146,13 +153,13 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
146
153
  addedSpan.textContent = `+${added}`;
147
154
  removedSpan.textContent = `-${removed}`;
148
155
  titleButton.element.setAttribute("aria-label", ( localize(
149
- 7035,
156
+ 7317,
150
157
  "{0}, {1} lines added, {2} lines removed",
151
158
  filesLabel,
152
159
  added,
153
160
  removed
154
161
  )));
155
- countsContainer.setAttribute("aria-label", ( localize(7036, "{0} lines added, {1} lines removed", added, removed)));
162
+ countsContainer.setAttribute("aria-label", ( localize(7318, "{0} lines added, {1} lines removed", added, removed)));
156
163
  } else {
157
164
  countsContainer.remove();
158
165
  titleButton.element.setAttribute("aria-label", filesLabel);
@@ -162,8 +169,8 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
162
169
  secondary: true,
163
170
  small: true,
164
171
  supportIcons: true,
165
- ariaLabel: ( localize(7037, "View All Changes")),
166
- title: ( localize(7037, "View All Changes"))
172
+ ariaLabel: ( localize(7319, "View All Changes")),
173
+ title: ( localize(7319, "View All Changes"))
167
174
  })));
168
175
  viewAllChangesButton.element.classList.add("default-colors");
169
176
  viewAllChangesButton.icon = Codicon.diffMultiple;
@@ -253,7 +260,7 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
253
260
  }
254
261
  async openAllChanges(data) {
255
262
  await this.commandService.executeCommand("_workbench.openMultiDiffEditor", {
256
- title: ( localize(7038, "All Changes")),
263
+ title: ( localize(7320, "All Changes")),
257
264
  resources: ( data.modifiedFiles.map(file => ({
258
265
  originalUri: file.originalContentUri ? URI.revive(file.originalContentUri) : file.originalUri ? URI.revive(file.originalUri) : undefined,
259
266
  modifiedUri: file.modifiedContentUri ? URI.revive(file.modifiedContentUri) : URI.revive(file.uri)