@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
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { registerCss } from '@codingame/monaco-vscode-api/css';
3
- import { h, addDisposableListener, hide, isHTMLElement, setVisibility, show, clearNode, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
+ import { h, AnimationFrameScheduler, DisposableResizeObserver, hide, addDisposableListener, isHTMLElement, setVisibility, show, clearNode, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
5
5
  import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
6
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
@@ -8,6 +8,7 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
8
8
  import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
9
9
  import { Disposable, DisposableStore, toDisposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
10
10
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
11
+ import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
11
12
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
13
  import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
13
14
  import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
@@ -16,7 +17,10 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
16
17
 
17
18
  registerCss(chatToolConfirmationCarousel);
18
19
  const COLLAPSED_CAROUSEL_MAX_HEIGHT = 300;
20
+ const COLLAPSED_MESSAGE_MAX_HEIGHT = 200;
21
+ const COLLAPSED_CODE_BLOCK_MAX_HEIGHT = 150;
19
22
  const MIN_CAROUSEL_MAX_HEIGHT = 80;
23
+ const EXPANDABLE_CONTENT_SELECTOR = ".interactive-result-editor, .chat-markdown-part.rendered-markdown";
20
24
  class ChatToolConfirmationCarouselPart extends Disposable {
21
25
  constructor(
22
26
  toolPartFactory,
@@ -35,6 +39,8 @@ class ChatToolConfirmationCarouselPart extends Disposable {
35
39
  this.items = [];
36
40
  this.toolCallIds = ( new Set());
37
41
  this.activeIndex = 0;
42
+ this._isContentExpanded = false;
43
+ this.canExpandContent = false;
38
44
  const elements = h(".chat-tool-confirmation-carousel@root", [h(
39
45
  ".chat-tool-carousel-overlay@overlay",
40
46
  [h(".chat-tool-carousel-title-group@titleGroup", [
@@ -48,19 +54,41 @@ class ChatToolConfirmationCarouselPart extends Disposable {
48
54
  this.domNode = elements.root;
49
55
  this.domNode.tabIndex = -1;
50
56
  this.domNode.setAttribute("role", "group");
51
- this.domNode.setAttribute("aria-label", ( localize(7077, "Tool confirmation carousel")));
57
+ this.domNode.setAttribute("aria-label", ( localize(7364, "Tool confirmation carousel")));
52
58
  this.collapsedTitle = elements.collapsedTitle;
53
59
  this.agentLabel = elements.agentLabel;
54
60
  this.contentContainer = elements.content;
61
+ this.contentContainer.id = generateUuid();
55
62
  this.stepIndicator = elements.stepIndicator;
56
63
  this.activeContentDisposables = this._register(( new DisposableStore()));
64
+ this.updateContentExpansionStateScheduler = this._register(
65
+ new AnimationFrameScheduler(this.domNode, () => this.updateContentExpansionState())
66
+ );
67
+ this.contentResizeObserver = this._register(new DisposableResizeObserver(
68
+ "ChatToolConfirmationCarouselPart.contentExpansion",
69
+ () => this.updateContentExpansionStateScheduler.schedule()
70
+ ));
71
+ this._register(this.contentResizeObserver.observe(this.contentContainer));
57
72
  this.allowAllButton = this._register(( new Button(elements.overlayActions, {
58
73
  ...defaultButtonStyles,
59
74
  small: true
60
75
  })));
61
76
  this.allowAllButton.element.classList.add("chat-tool-carousel-allow-all-button");
62
- this.allowAllButton.label = ( localize(7078, "Allow All"));
77
+ this.allowAllButton.label = ( localize(7365, "Allow All"));
63
78
  this._register(this.allowAllButton.onDidClick(() => this.allowAll()));
79
+ this.expandContentButton = this._register(( new Button(elements.overlayActions, {
80
+ ...defaultButtonStyles,
81
+ secondary: true,
82
+ supportIcons: true
83
+ })));
84
+ this.expandContentButton.element.classList.add(
85
+ "chat-tool-carousel-header-button",
86
+ "chat-tool-carousel-expand-content-button"
87
+ );
88
+ this.expandContentButton.element.setAttribute("aria-controls", this.contentContainer.id);
89
+ this.updateExpandContentButton();
90
+ hide(this.expandContentButton.element);
91
+ this._register(this.expandContentButton.onDidClick(() => this.toggleContentExpanded()));
64
92
  this.dismissButton = this._register(( new Button(elements.overlayActions, {
65
93
  ...defaultButtonStyles,
66
94
  secondary: true,
@@ -68,7 +96,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
68
96
  })));
69
97
  this.dismissButton.element.classList.add("chat-tool-carousel-dismiss-button");
70
98
  this.dismissButton.label = `$(${Codicon.close.id})`;
71
- const dismissButtonLabel = this.items.length === 1 ? ( localize(7079, "Skip")) : ( localize(7080, "Skip All"));
99
+ const dismissButtonLabel = this.items.length === 1 ? ( localize(7366, "Skip")) : ( localize(7367, "Skip All"));
72
100
  this.dismissButton.element.setAttribute("aria-label", dismissButtonLabel);
73
101
  this.dismissButton.element.title = dismissButtonLabel;
74
102
  this._register(this.dismissButton.onDidClick(() => this.skipAll()));
@@ -79,7 +107,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
79
107
  })));
80
108
  this.prevButton.element.classList.add("chat-tool-carousel-nav-arrow");
81
109
  this.prevButton.label = `$(${Codicon.chevronLeft.id})`;
82
- this.prevButton.element.setAttribute("aria-label", ( localize(7081, "Previous")));
110
+ this.prevButton.element.setAttribute("aria-label", ( localize(7368, "Previous")));
83
111
  this._register(this.prevButton.onDidClick(() => this.navigateRelative(-1)));
84
112
  this.nextButton = this._register(( new Button(elements.navArrows, {
85
113
  ...defaultButtonStyles,
@@ -88,7 +116,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
88
116
  })));
89
117
  this.nextButton.element.classList.add("chat-tool-carousel-nav-arrow");
90
118
  this.nextButton.label = `$(${Codicon.chevronRight.id})`;
91
- this.nextButton.element.setAttribute("aria-label", ( localize(7082, "Next")));
119
+ this.nextButton.element.setAttribute("aria-label", ( localize(7369, "Next")));
92
120
  this._register(this.nextButton.onDidClick(() => this.navigateRelative(1)));
93
121
  this._register(addDisposableListener(this.agentLabel, "click", e => {
94
122
  e.preventDefault();
@@ -109,7 +137,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
109
137
  }
110
138
  setMaxHeight(maxHeight) {
111
139
  this.maxHeight = maxHeight;
112
- this.updateMaxHeightStyle();
140
+ this.updateContentExpansionState();
113
141
  }
114
142
  hasToolInvocation(toolCallId) {
115
143
  return ( this.toolCallIds.has(toolCallId));
@@ -280,7 +308,7 @@ class ChatToolConfirmationCarouselPart extends Disposable {
280
308
  if (item?.agentName) {
281
309
  this.agentLabel.textContent = `\u2014 ${item.agentName}`;
282
310
  this.agentLabel.disabled = !item.subAgentInvocationId || !item.scrollToSubagent;
283
- this.agentLabel.title = ( localize(7083, "Scroll to {0}", item.agentName));
311
+ this.agentLabel.title = ( localize(7370, "Scroll to {0}", item.agentName));
284
312
  this.agentLabel.setAttribute("aria-label", this.agentLabel.title);
285
313
  show(this.agentLabel);
286
314
  } else {
@@ -297,13 +325,18 @@ class ChatToolConfirmationCarouselPart extends Disposable {
297
325
  setVisibility(multi, this.prevButton.element);
298
326
  setVisibility(multi, this.nextButton.element);
299
327
  setVisibility(multi, this.allowAllButton.element);
300
- this.allowAllButton.label = multi ? ( localize(7078, "Allow All")) : ( localize(7084, "Allow"));
328
+ setVisibility(this.canExpandContent, this.expandContentButton.element);
329
+ this.allowAllButton.label = multi ? ( localize(7365, "Allow All")) : ( localize(7371, "Allow"));
330
+ this.updateExpandContentButton();
301
331
  }
302
332
  renderActiveContent() {
303
333
  clearNode(this.contentContainer);
304
334
  this.activeContentDisposables.clear();
335
+ this._isContentExpanded = false;
336
+ this.canExpandContent = false;
305
337
  const item = this.items[this.activeIndex];
306
338
  if (!item) {
339
+ this.updateContentExpansionState();
307
340
  return;
308
341
  }
309
342
  if (!item.toolPart) {
@@ -313,15 +346,91 @@ class ChatToolConfirmationCarouselPart extends Disposable {
313
346
  }
314
347
  }
315
348
  this.contentContainer.appendChild(item.toolPart.domNode);
349
+ this.activeContentDisposables.add(this.contentResizeObserver.observe(item.toolPart.domNode));
350
+ this.observeExpandableContentElements(item.toolPart.domNode);
351
+ this.updateContentExpansionStateScheduler.schedule();
352
+ }
353
+ toggleContentExpanded() {
354
+ if (!this.canExpandContent) {
355
+ return;
356
+ }
357
+ this._isContentExpanded = !this._isContentExpanded;
358
+ this.updateContentExpansionState();
359
+ }
360
+ updateContentExpansionState() {
361
+ this.canExpandContent = this.items.length > 0 && this.isActiveContentLargerThanCollapsedLimit();
362
+ if (!this.canExpandContent) {
363
+ this._isContentExpanded = false;
364
+ }
365
+ this.domNode.classList.toggle(
366
+ "chat-tool-carousel-content-expanded",
367
+ this.canExpandContent && this._isContentExpanded
368
+ );
369
+ this.updateMaxHeightStyle();
370
+ setVisibility(this.canExpandContent, this.expandContentButton.element);
371
+ this.updateExpandContentButton();
316
372
  }
317
373
  updateMaxHeightStyle() {
318
374
  if (this.maxHeight === undefined) {
319
375
  this.domNode.style.removeProperty("max-height");
320
376
  return;
321
377
  }
322
- const maxHeight = this.getCollapsedMaxHeight();
378
+ const expanded = this.canExpandContent && this._isContentExpanded;
379
+ const maxHeight = expanded ? Math.max(MIN_CAROUSEL_MAX_HEIGHT, this.maxHeight) : this.getCollapsedMaxHeight();
323
380
  this.domNode.style.maxHeight = `${Math.floor(maxHeight)}px`;
324
381
  }
382
+ updateExpandContentButton() {
383
+ const expanded = this.canExpandContent && this._isContentExpanded;
384
+ const label = expanded ? ( localize(7372, "Restore Confirmation Size")) : ( localize(7373, "Expand Confirmation Up"));
385
+ this.expandContentButton.label = expanded ? `$(${Codicon.screenNormal.id})` : `$(${Codicon.screenFull.id})`;
386
+ this.expandContentButton.element.setAttribute("aria-label", label);
387
+ this.expandContentButton.element.setAttribute("aria-expanded", String(expanded));
388
+ this.expandContentButton.setTitle(label);
389
+ }
390
+ isActiveContentLargerThanCollapsedLimit() {
391
+ const activeContent = this.contentContainer.firstElementChild;
392
+ if (!isHTMLElement(activeContent)) {
393
+ return false;
394
+ }
395
+ return this.hasInnerContentLargerThanCollapsedLimit(activeContent);
396
+ }
397
+ hasInnerContentLargerThanCollapsedLimit(element) {
398
+ if (this.isExpandableContentElement(element) && this.getElementHeight(element) > this.getExpandableContentHeightLimit(element) + 1) {
399
+ return true;
400
+ }
401
+ for (const child of element.children) {
402
+ if (!isHTMLElement(child)) {
403
+ continue;
404
+ }
405
+ if (this.hasInnerContentLargerThanCollapsedLimit(child)) {
406
+ return true;
407
+ }
408
+ }
409
+ return false;
410
+ }
411
+ isExpandableContentElement(element) {
412
+ return element.matches(EXPANDABLE_CONTENT_SELECTOR);
413
+ }
414
+ observeExpandableContentElements(element) {
415
+ if (this.isExpandableContentElement(element)) {
416
+ this.activeContentDisposables.add(this.contentResizeObserver.observe(element));
417
+ }
418
+ for (const child of element.children) {
419
+ if (isHTMLElement(child)) {
420
+ this.observeExpandableContentElements(child);
421
+ }
422
+ }
423
+ }
424
+ getElementHeight(element) {
425
+ return Math.max(element.offsetHeight, element.scrollHeight);
426
+ }
427
+ getExpandableContentHeightLimit(element) {
428
+ const window = getWindow(this.domNode);
429
+ if (element.classList.contains("interactive-result-editor")) {
430
+ return Math.min(COLLAPSED_CODE_BLOCK_MAX_HEIGHT, window.innerHeight * 0.25);
431
+ }
432
+ return Math.min(COLLAPSED_MESSAGE_MAX_HEIGHT, window.innerHeight * 0.3);
433
+ }
325
434
  getCollapsedMaxHeight() {
326
435
  const configuredMaxHeight = this.maxHeight === undefined ? Number.POSITIVE_INFINITY : Math.max(MIN_CAROUSEL_MAX_HEIGHT, this.maxHeight);
327
436
  return Math.min(
@@ -78,8 +78,8 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
78
78
  this.render({
79
79
  allowActionId: AcceptToolConfirmationActionId,
80
80
  skipActionId: SkipToolConfirmationActionId,
81
- allowLabel: state.confirmationMessages.confirmResults ? ( localize(7085, "Allow and Review Once")) : ( localize(7086, "Allow Once")),
82
- skipLabel: ( localize(7087, "Proceed without running this tool")),
81
+ allowLabel: state.confirmationMessages.confirmResults ? ( localize(7374, "Allow and Review Once")) : ( localize(7375, "Allow Once")),
82
+ skipLabel: ( localize(7376, "Proceed without running this tool")),
83
83
  partType: "chatToolConfirmation",
84
84
  subtitle: typeof toolInvocation.originMessage === "string" ? toolInvocation.originMessage : toolInvocation.originMessage?.value
85
85
  });
@@ -125,7 +125,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
125
125
  }
126
126
  if (state.confirmationMessages?.confirmResults) {
127
127
  actions.unshift({
128
- label: ( localize(7088, "Allow and Skip Reviewing Result")),
128
+ label: ( localize(7377, "Allow and Skip Reviewing Result")),
129
129
  data: () => {
130
130
  state.confirmationMessages.confirmResults = undefined;
131
131
  this.confirmWith(this.toolInvocation, {
@@ -167,11 +167,11 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
167
167
  };
168
168
  const elements = h("div", [h(".message@messageContainer", [
169
169
  h(".message-wrapper@message"),
170
- h(".see-more@showMore", [h("a", [( localize(7089, "Show More"))])])
170
+ h(".see-more@showMore", [h("a", [( localize(7378, "Show More"))])])
171
171
  ]), h(".editor@editor"), h(".disclaimer@disclaimer")]);
172
172
  if (toolInvocation.toolSpecificData?.kind === "input" && toolInvocation.toolSpecificData.rawInput && !isEmptyObject(toolInvocation.toolSpecificData.rawInput)) {
173
173
  const titleEl = createElement("h3");
174
- titleEl.textContent = ( localize(7090, "Input"));
174
+ titleEl.textContent = ( localize(7379, "Input"));
175
175
  elements.editor.appendChild(titleEl);
176
176
  const inputData = toolInvocation.toolSpecificData;
177
177
  const codeBlockRenderOptions = {
@@ -241,7 +241,7 @@ let ToolConfirmationSubPart = class ToolConfirmationSubPart extends AbstractTool
241
241
  elements.editor.append(editor.object.element);
242
242
  if (canSeeMore) {
243
243
  const seeMore = h("div.see-more", [h("a@link")]);
244
- seeMore.link.textContent = ( localize(7091, "See more"));
244
+ seeMore.link.textContent = ( localize(7380, "See more"));
245
245
  this._register(addDisposableGenericMouseDownListener(seeMore.link, () => {
246
246
  try {
247
247
  const parsed = JSON.parse(model.getValue());
@@ -96,7 +96,7 @@ let ChatToolInvocationPart = class ChatToolInvocationPart extends Disposable {
96
96
  this.domNode.appendChild(subPartDomNode);
97
97
  const render = () => {
98
98
  partStore.clear();
99
- if (toolInvocation.presentation === ToolInvocationPresentation.HiddenAfterComplete && IChatToolInvocation.isComplete(toolInvocation)) {
99
+ if (toolInvocation.presentation === ToolInvocationPresentation.Hidden || (toolInvocation.presentation === ToolInvocationPresentation.HiddenAfterComplete && IChatToolInvocation.isComplete(toolInvocation))) {
100
100
  hide(this.domNode);
101
101
  return;
102
102
  }
@@ -75,7 +75,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
75
75
  partState.webviewOrigin = partState.webviewOrigin;
76
76
  }
77
77
  const progressMessage = $("span");
78
- progressMessage.textContent = ( localize(7092, "Rendering tool output..."));
78
+ progressMessage.textContent = ( localize(7381, "Rendering tool output..."));
79
79
  const progressPart = this._register(this.instantiationService.createInstance(
80
80
  ChatProgressSubPart,
81
81
  progressMessage,
@@ -125,7 +125,7 @@ let ChatToolOutputSubPart = class ChatToolOutputSubPart extends BaseChatToolInvo
125
125
  iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.error));
126
126
  errorHeaderNode.append(iconElement);
127
127
  const errorTitleNode = $(".output-error-title");
128
- errorTitleNode.textContent = ( localize(7093, "Error rendering the tool output"));
128
+ errorTitleNode.textContent = ( localize(7382, "Error rendering the tool output"));
129
129
  errorHeaderNode.append(errorTitleNode);
130
130
  const errorMessageNode = $(".output-error-details");
131
131
  errorMessageNode.textContent = error?.message || String(error);
@@ -26,20 +26,20 @@ function getApprovalMessageFromReason(reason) {
26
26
  let md;
27
27
  switch (reason.type) {
28
28
  case ToolConfirmKind.Setting:
29
- md = ( localize(7094, "Auto approved by {0}", createMarkdownCommandLink({
29
+ md = ( localize(7383, "Auto approved by {0}", createMarkdownCommandLink({
30
30
  text: "`" + reason.id + "`",
31
31
  id: "workbench.action.openSettings",
32
32
  arguments: [reason.id],
33
- tooltip: ( localize(7095, "Open settings"))
33
+ tooltip: ( localize(7384, "Open settings"))
34
34
  }, false)));
35
35
  break;
36
36
  case ToolConfirmKind.LmServicePerTool:
37
- md = reason.scope === "session" ? ( localize(7096, "Auto approved for this session")) : reason.scope === "workspace" ? ( localize(7097, "Auto approved for this workspace")) : ( localize(7098, "Auto approved for this profile"));
37
+ md = reason.scope === "session" ? ( localize(7385, "Auto approved for this session")) : reason.scope === "workspace" ? ( localize(7386, "Auto approved for this workspace")) : ( localize(7387, "Auto approved for this profile"));
38
38
  md += " (" + createMarkdownCommandLink({
39
- text: ( localize(7099, "Edit")),
39
+ text: ( localize(7388, "Edit")),
40
40
  id: "workbench.action.chat.editToolApproval",
41
41
  arguments: [reason.scope],
42
- tooltip: ( localize(7100, "Edit tool approval settings"))
42
+ tooltip: ( localize(7389, "Edit tool approval settings"))
43
43
  }) + ")";
44
44
  break;
45
45
  case ToolConfirmKind.ConfirmationNotNeeded:
@@ -46,8 +46,8 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
46
46
  this.render({
47
47
  allowActionId: AcceptToolPostConfirmationActionId,
48
48
  skipActionId: SkipToolPostConfirmationActionId,
49
- allowLabel: ( localize(7101, "Allow Once")),
50
- skipLabel: ( localize(7102, "Skip Results")),
49
+ allowLabel: ( localize(7390, "Allow Once")),
50
+ skipLabel: ( localize(7391, "Skip Results")),
51
51
  partType: "chatToolPostConfirmation",
52
52
  subtitle: typeof subtitle === "string" ? subtitle : subtitle?.value
53
53
  });
@@ -63,7 +63,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
63
63
  return this.createResultsDisplay(this.toolInvocation, state.contentForModel);
64
64
  }
65
65
  getTitle() {
66
- return localize(7103, "Approve Tool Result");
66
+ return localize(7392, "Approve Tool Result");
67
67
  }
68
68
  additionalPrimaryActions() {
69
69
  const actions = super.additionalPrimaryActions();
@@ -99,7 +99,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
99
99
  createResultsDisplay(toolInvocation, contentForModel) {
100
100
  const container = $(".tool-postconfirm-display");
101
101
  if (!contentForModel || contentForModel.length === 0) {
102
- container.textContent = ( localize(7104, "No results to display"));
102
+ container.textContent = ( localize(7393, "No results to display"));
103
103
  return container;
104
104
  }
105
105
  const parts = [];
@@ -214,7 +214,7 @@ let ChatToolPostExecuteConfirmationPart = class ChatToolPostExecuteConfirmationP
214
214
  outputSubPart.domNode.classList.add("tool-postconfirm-display");
215
215
  return outputSubPart.domNode;
216
216
  }
217
- container.textContent = ( localize(7105, "No displayable results"));
217
+ container.textContent = ( localize(7394, "No displayable results"));
218
218
  return container;
219
219
  }
220
220
  };
@@ -0,0 +1,77 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* Risk subtitle: a slim row that sits below the main content (e.g. the
7
+ * terminal command box or elicitation message), above the action buttons.
8
+ * Renders an icon at the risk level's accent color followed by the
9
+ * LLM-generated explanation in the regular foreground color. */
10
+
11
+ .chat-confirmation-widget2 > .tool-risk-badge {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 4px;
15
+ padding: 6px 8px;
16
+ line-height: 1.5;
17
+ color: var(--vscode-foreground);
18
+ border-top: 1px solid var(--vscode-chat-requestBorder);
19
+ background: transparent;
20
+ user-select: none;
21
+ }
22
+
23
+ .chat-confirmation-widget2 > .tool-risk-badge .tool-risk-icon {
24
+ flex: 0 0 auto;
25
+ display: inline-flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ min-width: 13px;
29
+ font-size: 13px;
30
+ line-height: 1;
31
+ color: var(--tool-risk-accent, var(--vscode-descriptionForeground));
32
+ }
33
+
34
+ .chat-confirmation-widget2 > .tool-risk-badge.red .tool-risk-icon {
35
+ font-weight: 900;
36
+ }
37
+
38
+ .chat-confirmation-widget2 > .tool-risk-badge .tool-risk-text {
39
+ min-width: 0;
40
+ flex: 1 1 auto;
41
+ overflow: hidden;
42
+ text-overflow: ellipsis;
43
+ white-space: nowrap;
44
+ }
45
+
46
+ .chat-confirmation-widget2 > .tool-risk-badge .tool-risk-details-icon {
47
+ flex: 0 0 auto;
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ font-size: 13px;
52
+ line-height: 1;
53
+ color: var(--vscode-descriptionForeground);
54
+ cursor: pointer;
55
+ border-radius: 3px;
56
+ }
57
+
58
+ .chat-confirmation-widget2 > .tool-risk-badge .tool-risk-details-icon:focus {
59
+ outline: 1px solid var(--vscode-focusBorder);
60
+ outline-offset: 1px;
61
+ }
62
+
63
+ .chat-confirmation-widget2 > .tool-risk-badge.loading {
64
+ opacity: 0.7;
65
+ }
66
+
67
+ .chat-confirmation-widget2 > .tool-risk-badge.green {
68
+ --tool-risk-accent: var(--vscode-charts-green, #388a34);
69
+ }
70
+
71
+ .chat-confirmation-widget2 > .tool-risk-badge.orange {
72
+ --tool-risk-accent: var(--vscode-editorWarning-foreground, #cca700);
73
+ }
74
+
75
+ .chat-confirmation-widget2 > .tool-risk-badge.red {
76
+ --tool-risk-accent: var(--vscode-editorError-foreground, #f14c4c);
77
+ }
@@ -0,0 +1,38 @@
1
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
+ import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
3
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
5
+ import { IToolRiskAssessment } from "../../../tools/chatToolRiskAssessmentService.js";
6
+ export declare class ToolRiskBadgeWidget extends Disposable {
7
+ private readonly _hoverService;
8
+ readonly domNode: HTMLElement;
9
+ private readonly _iconEl;
10
+ private readonly _textEl;
11
+ private readonly _detailsIconEl;
12
+ private readonly _hoverStore;
13
+ private readonly _detailsHoverStore;
14
+ private _details;
15
+ private readonly _onDidHide;
16
+ readonly onDidHide: Event<void>;
17
+ constructor(_hoverService: IHoverService);
18
+ setLoading(): void;
19
+ setHidden(): void;
20
+ setAssessment(assessment: IToolRiskAssessment): void;
21
+ /**
22
+ * Provide additional context to surface in the trailing info icon's hover.
23
+ * The hover always notes that the assessment is AI-generated; any details
24
+ * passed here are appended below that note.
25
+ */
26
+ setDetails(details: IMarkdownString | string | undefined): void;
27
+ /**
28
+ * The markdown content currently shown in the trailing info icon's hover.
29
+ * Exposed so component fixtures can render a preview of the hover content.
30
+ */
31
+ getDetailsMarkdown(): IMarkdownString;
32
+ private _setVariant;
33
+ private _setIcon;
34
+ private _setText;
35
+ private _setHover;
36
+ private _refreshDetailsHover;
37
+ private _buildDetailsMarkdown;
38
+ }
@@ -0,0 +1,125 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import { $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
6
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
7
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
8
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
10
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
11
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
12
+ import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
13
+ import { ToolRiskLevel } from '../../../tools/chatToolRiskAssessmentService.js';
14
+ import * as toolRiskBadge from './media/toolRiskBadge.css';
15
+
16
+ registerCss(toolRiskBadge);
17
+ const RISK_BADGE_CLASS = "tool-risk-badge";
18
+ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
19
+ constructor(_hoverService) {
20
+ super();
21
+ this._hoverService = _hoverService;
22
+ this._hoverStore = this._register(( new DisposableStore()));
23
+ this._detailsHoverStore = this._register(( new DisposableStore()));
24
+ this._onDidHide = this._register(( new Emitter()));
25
+ this.onDidHide = this._onDidHide.event;
26
+ this.domNode = $(`span.${RISK_BADGE_CLASS}`);
27
+ this._iconEl = $("span.tool-risk-icon");
28
+ this._textEl = $("span.tool-risk-text");
29
+ this._detailsIconEl = $("span.tool-risk-details-icon");
30
+ this._detailsIconEl.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
31
+ this._detailsIconEl.tabIndex = 0;
32
+ this._detailsIconEl.setAttribute("role", "button");
33
+ this._detailsIconEl.setAttribute("aria-label", ( localize(7395, "Risk assessment details")));
34
+ this.domNode.append(this._iconEl, this._textEl, this._detailsIconEl);
35
+ this._refreshDetailsHover();
36
+ this.setLoading();
37
+ }
38
+ setLoading() {
39
+ this._setVariant("loading");
40
+ this._setIcon(ThemeIcon.modify(Codicon.loading, "spin"));
41
+ const text = ( localize(7396, "Assessing risk…"));
42
+ this._textEl.textContent = text;
43
+ this._setHover(( localize(7397, "Generating a risk assessment for this tool call.")));
44
+ }
45
+ setHidden() {
46
+ this.domNode.style.display = "none";
47
+ this._onDidHide.fire();
48
+ }
49
+ setAssessment(assessment) {
50
+ switch (assessment.risk) {
51
+ case ToolRiskLevel.Green:
52
+ this._setVariant("green");
53
+ this._setIcon(Codicon.pass);
54
+ break;
55
+ case ToolRiskLevel.Orange:
56
+ this._setVariant("orange");
57
+ this._setIcon(Codicon.warning);
58
+ break;
59
+ case ToolRiskLevel.Red:
60
+ this._setVariant("red");
61
+ this._setText("!");
62
+ break;
63
+ }
64
+ this.domNode.style.display = "";
65
+ this._textEl.textContent = assessment.explanation;
66
+ this._setHover(assessment.explanation);
67
+ }
68
+ setDetails(details) {
69
+ this._details = details;
70
+ this._refreshDetailsHover();
71
+ }
72
+ getDetailsMarkdown() {
73
+ return this._buildDetailsMarkdown();
74
+ }
75
+ _setVariant(variant) {
76
+ this.domNode.classList.remove("green", "orange", "red", "loading");
77
+ this.domNode.classList.add(variant);
78
+ }
79
+ _setIcon(icon) {
80
+ this._iconEl.textContent = "";
81
+ this._iconEl.className = "tool-risk-icon " + ThemeIcon.asClassName(icon);
82
+ }
83
+ _setText(text) {
84
+ this._iconEl.className = "tool-risk-icon";
85
+ this._iconEl.textContent = text;
86
+ }
87
+ _setHover(content) {
88
+ this._hoverStore.clear();
89
+ this._hoverStore.add(
90
+ this._hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.domNode, content)
91
+ );
92
+ }
93
+ _refreshDetailsHover() {
94
+ this._detailsHoverStore.clear();
95
+ const md = this._buildDetailsMarkdown();
96
+ const fallback = md.value.replace(/\$\([^)]+\)\s?/g, "");
97
+ this._detailsHoverStore.add(
98
+ this._hoverService.setupManagedHover(getDefaultHoverDelegate("element"), this._detailsIconEl, {
99
+ markdown: md,
100
+ markdownNotSupportedFallback: fallback
101
+ })
102
+ );
103
+ }
104
+ _buildDetailsMarkdown() {
105
+ const aiNote = ( localize(7398, "Risk assessments are AI-generated and may be inaccurate."));
106
+ const details = this._details;
107
+ const md = ( new MarkdownString(undefined, {
108
+ supportThemeIcons: true,
109
+ isTrusted: typeof details === "object" && details ? details.isTrusted : undefined
110
+ }));
111
+ md.appendText(aiNote);
112
+ if (details) {
113
+ md.appendMarkdown("\n\n");
114
+ if (typeof details === "string") {
115
+ md.appendText(details);
116
+ } else {
117
+ md.appendMarkdown(details.value);
118
+ }
119
+ }
120
+ return md;
121
+ }
122
+ };
123
+ ToolRiskBadgeWidget = ( __decorate([( __param(0, IHoverService))], ToolRiskBadgeWidget));
124
+
125
+ export { ToolRiskBadgeWidget };