@codingame/monaco-vscode-katex-common 31.0.1 → 32.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,118 @@
1
+
2
+ import { OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
3
+ import { gitGlobalOptionsWithValue, matchesTerminalSandboxCommandRule } from './terminalSandboxCommandRules.js';
4
+
5
+ var TerminalSandboxRuntimeConfigurationOperation;
6
+ (function(TerminalSandboxRuntimeConfigurationOperation) {
7
+ TerminalSandboxRuntimeConfigurationOperation["GnuPG"] = "gnupg";
8
+ TerminalSandboxRuntimeConfigurationOperation["Node"] = "node";
9
+ })(
10
+ TerminalSandboxRuntimeConfigurationOperation || (TerminalSandboxRuntimeConfigurationOperation = {})
11
+ );
12
+ const terminalSandboxRuntimeConfigurationCommandRules = [{
13
+ keywords: [
14
+ "node",
15
+ "npm",
16
+ "npx",
17
+ "pnpm",
18
+ "yarn",
19
+ "corepack",
20
+ "bun",
21
+ "deno",
22
+ "nvm",
23
+ "volta",
24
+ "fnm",
25
+ "asdf",
26
+ "mise"
27
+ ],
28
+ value: TerminalSandboxRuntimeConfigurationOperation.Node
29
+ }, {
30
+ keywords: ["git"],
31
+ value: TerminalSandboxRuntimeConfigurationOperation.GnuPG,
32
+ subcommands: ["commit"],
33
+ optionsWithValue: gitGlobalOptionsWithValue,
34
+ condition: (
35
+ {
36
+ os
37
+ }
38
+ ) => os !== OperatingSystem.Windows,
39
+ when: isGpgSignedGitCommit
40
+ }];
41
+ function getTerminalSandboxRuntimeConfigurationForOperation(operation, os) {
42
+ switch (operation) {
43
+ case TerminalSandboxRuntimeConfigurationOperation.GnuPG:
44
+ switch (os) {
45
+ case OperatingSystem.Windows:
46
+ return {};
47
+ case OperatingSystem.Macintosh:
48
+ case OperatingSystem.Linux:
49
+ default:
50
+ return {
51
+ network: {
52
+ allowAllUnixSockets: true
53
+ },
54
+ filesystem: {
55
+ allowRead: ["~/.gnupg"],
56
+ allowWrite: ["~/.gnupg"]
57
+ }
58
+ };
59
+ }
60
+ case TerminalSandboxRuntimeConfigurationOperation.Node:
61
+ switch (os) {
62
+ case OperatingSystem.Macintosh:
63
+ case OperatingSystem.Linux:
64
+ default:
65
+ return {
66
+ filesystem: {
67
+ allowWrite: ["~/.volta/"]
68
+ }
69
+ };
70
+ }
71
+ }
72
+ }
73
+ function getTerminalSandboxRuntimeConfigurationForCommands(os, commandDetails) {
74
+ const operations = ( new Set());
75
+ for (const command of commandDetails) {
76
+ for (const rule of terminalSandboxRuntimeConfigurationCommandRules) {
77
+ if (matchesTerminalSandboxCommandRule(command, rule, {
78
+ os
79
+ })) {
80
+ operations.add(rule.value);
81
+ }
82
+ }
83
+ }
84
+ const configuration = {};
85
+ for (const operation of operations) {
86
+ mergeAdditionalSandboxConfigProperties(
87
+ configuration,
88
+ getTerminalSandboxRuntimeConfigurationForOperation(operation, os)
89
+ );
90
+ }
91
+ return configuration;
92
+ }
93
+ function isGpgSignedGitCommit(command) {
94
+ return ( command.args.some(
95
+ arg => arg === "-S" || arg.startsWith("-S") || arg === "--gpg-sign" || arg.startsWith("--gpg-sign=")
96
+ ));
97
+ }
98
+ function mergeAdditionalSandboxConfigProperties(target, additional) {
99
+ for (const [key, value] of Object.entries(additional)) {
100
+ if (!Object.prototype.hasOwnProperty.call(target, key)) {
101
+ target[key] = value;
102
+ continue;
103
+ }
104
+ const existingValue = target[key];
105
+ if (Array.isArray(existingValue) && Array.isArray(value)) {
106
+ target[key] = [...( new Set([...existingValue, ...value]))];
107
+ continue;
108
+ }
109
+ if (isObjectForSandboxConfigMerge(existingValue) && isObjectForSandboxConfigMerge(value)) {
110
+ mergeAdditionalSandboxConfigProperties(existingValue, value);
111
+ }
112
+ }
113
+ }
114
+ function isObjectForSandboxConfigMerge(value) {
115
+ return typeof value === "object" && value !== null && !Array.isArray(value);
116
+ }
117
+
118
+ export { TerminalSandboxRuntimeConfigurationOperation, getTerminalSandboxRuntimeConfigurationForCommands };
@@ -12,10 +12,10 @@ import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform
12
12
  import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
13
13
  import { ISandboxHelperService } from "@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/sandboxHelperService.service";
14
14
  import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
15
- import { TerminalSandboxPrerequisiteCheck, type ISandboxDependencyInstallOptions, type ISandboxDependencyInstallResult, type ITerminalSandboxPrerequisiteCheckResult, type ITerminalSandboxResolvedNetworkDomains, type ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
15
+ import { TerminalSandboxPrerequisiteCheck, type ISandboxDependencyInstallOptions, type ISandboxDependencyInstallResult, type ITerminalSandboxCommand, type ITerminalSandboxPrerequisiteCheckResult, type ITerminalSandboxResolvedNetworkDomains, type ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
16
16
  import { ITerminalSandboxService } from "@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/terminalSandboxService.service";
17
17
  export { ITerminalSandboxService, TerminalSandboxPrerequisiteCheck };
18
- export type { ISandboxDependencyInstallOptions, ISandboxDependencyInstallResult, ISandboxDependencyInstallTerminal, ITerminalSandboxPrerequisiteCheckResult, ITerminalSandboxResolvedNetworkDomains, ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
18
+ export type { ISandboxDependencyInstallOptions, ISandboxDependencyInstallResult, ISandboxDependencyInstallTerminal, ITerminalSandboxCommand, ITerminalSandboxPrerequisiteCheckResult, ITerminalSandboxResolvedNetworkDomains, ITerminalSandboxWrapResult } from "../../../../../platform/sandbox/common/terminalSandboxService.js";
19
19
  export declare class TerminalSandboxService extends Disposable implements ITerminalSandboxService {
20
20
  private readonly _configurationService;
21
21
  private readonly _fileService;
@@ -40,6 +40,9 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
40
40
  private _remoteEnvDetailsPromise;
41
41
  private _remoteEnvDetails;
42
42
  private _appRoot;
43
+ private _commandAllowListKeywords;
44
+ private _commandAllowListCommandDetails;
45
+ private _commandCwd;
43
46
  private _os;
44
47
  private _defaultWritePaths;
45
48
  private static readonly _sandboxTempDirName;
@@ -48,8 +51,9 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
48
51
  private static readonly _hostRegex;
49
52
  constructor(_configurationService: IConfigurationService, _fileService: IFileService, _environmentService: IEnvironmentService, _logService: ILogService, _remoteAgentService: IRemoteAgentService, _workspaceContextService: IWorkspaceContextService, _productService: IProductService, _lifecycleService: ILifecycleService, _sandboxHelperService: ISandboxHelperService, _chatService: IChatService);
50
53
  isEnabled(): Promise<boolean>;
54
+ isSandboxAllowNetworkEnabled(): Promise<boolean>;
51
55
  getOS(): Promise<OperatingSystem>;
52
- wrapCommand(command: string, requestUnsandboxedExecution?: boolean, shell?: string): ITerminalSandboxWrapResult;
56
+ wrapCommand(command: string, requestUnsandboxedExecution?: boolean, shell?: string, cwd?: URI, commandDetails?: readonly ITerminalSandboxCommand[]): Promise<ITerminalSandboxWrapResult>;
53
57
  getTempDir(): URI | undefined;
54
58
  setNeedsForceUpdateConfigFile(): void;
55
59
  checkForSandboxingPrereqs(forceRefresh?: boolean): Promise<ITerminalSandboxPrerequisiteCheckResult>;
@@ -63,13 +67,29 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
63
67
  */
64
68
  private _createMissingDependencyPasswordPrompt;
65
69
  private _quoteShellArgument;
70
+ private _getSandboxCommandWithPreservedCwd;
71
+ private _wrapSandboxRuntimeCommandForLaunch;
66
72
  private _wrapUnsandboxedCommand;
67
73
  private _getBlockedDomains;
68
74
  private _extractDomains;
69
75
  private _extractDomainFromUrl;
76
+ /**
77
+ * Creates a stable, case-insensitive keyword set for config refresh checks and
78
+ * coarse command allow-list rules.
79
+ */
80
+ private _normalizeCommandKeywords;
81
+ /**
82
+ * Normalizes command details for deterministic comparisons while preserving
83
+ * argument order within each command for argument-sensitive allow-list rules.
84
+ */
85
+ private _normalizeCommandDetails;
86
+ private _areStringArraysEqual;
87
+ private _areObjectsEqual;
70
88
  private _isSandboxConfiguredEnabled;
71
89
  private _resolveSrtPath;
72
90
  private _createSandboxConfig;
91
+ private _getCommandRuntimeFileSystemPaths;
92
+ private _withoutNetworkRuntimeSetting;
73
93
  private _mergeAdditionalSandboxConfigProperties;
74
94
  private _isObjectForSandboxConfigMerge;
75
95
  private _pathJoin;
@@ -79,7 +99,17 @@ export declare class TerminalSandboxService extends Disposable implements ITermi
79
99
  private _getSandboxWindowTempDirName;
80
100
  getResolvedNetworkDomains(): ITerminalSandboxResolvedNetworkDomains;
81
101
  private _updateAllowWritePathsWithWorkspaceFolders;
102
+ private _updateDenyReadPathsWithHome;
103
+ private _updateAllowReadPathsWithAllowWrite;
104
+ private _resolveLinuxFileSystemPaths;
105
+ private _expandHomePath;
106
+ private _getSandboxRuntimeReadPaths;
107
+ private _isPathUnderAppRoot;
108
+ private _getWorkspaceStorageReadPaths;
109
+ private _getUserHomePath;
82
110
  private _resolveSandboxDependencyStatus;
83
- private _isSandboxEnabled;
111
+ private _getSandboxConfiguredEnabledValue;
112
+ private _isSandboxAllowNetworkConfigured;
113
+ private _areUnsandboxedCommandsAllowed;
84
114
  private _getSettingValue;
85
115
  }
@@ -33,6 +33,8 @@ import { SANDBOX_HELPER_CHANNEL_NAME, SandboxHelperChannelClient } from '../../.
33
33
  import { AgentSandboxSettingId, AgentSandboxEnabledValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/settings';
34
34
  import { TerminalSandboxPrerequisiteCheck } from '../../../../../platform/sandbox/common/terminalSandboxService.js';
35
35
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
36
+ import { getTerminalSandboxReadAllowListForCommands } from './terminalSandboxReadAllowList.js';
37
+ import { getTerminalSandboxRuntimeConfigurationForCommands } from './terminalSandboxRuntimeConfigurationPerOperation.js';
36
38
 
37
39
  var TerminalSandboxService_1;
38
40
  let TerminalSandboxService = class TerminalSandboxService extends Disposable {
@@ -77,8 +79,10 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
77
79
  this._srtPathResolved = false;
78
80
  this._needsForceUpdateConfigFile = true;
79
81
  this._remoteEnvDetails = null;
82
+ this._commandAllowListKeywords = [];
83
+ this._commandAllowListCommandDetails = [];
80
84
  this._os = OS;
81
- this._defaultWritePaths = ["~/.npm"];
85
+ this._defaultWritePaths = [];
82
86
  this._pathJoin = (...segments) => {
83
87
  const path = this._os === OperatingSystem.Windows ? win32 : posix;
84
88
  return path.join(...segments);
@@ -104,7 +108,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
104
108
  }
105
109
  e.join(this._cleanupSandboxTempDir(), {
106
110
  id: "join.deleteFilesInSandboxTempDir",
107
- label: ( localize(14190, "Delete Files in Sandbox Temp Dir")),
111
+ label: ( localize(14495, "Delete Files in Sandbox Temp Dir")),
108
112
  order: WillShutdownJoinerOrder.Default
109
113
  });
110
114
  }));
@@ -112,20 +116,44 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
112
116
  async isEnabled() {
113
117
  return await this._isSandboxConfiguredEnabled();
114
118
  }
119
+ async isSandboxAllowNetworkEnabled() {
120
+ if (!(await this._isSandboxConfiguredEnabled())) {
121
+ return false;
122
+ }
123
+ return this._isSandboxAllowNetworkConfigured();
124
+ }
115
125
  async getOS() {
116
126
  this._remoteEnvDetails = await this._remoteEnvDetailsPromise;
117
127
  this._os = this._remoteEnvDetails ? this._remoteEnvDetails.os : OS;
118
128
  return this._os;
119
129
  }
120
- wrapCommand(command, requestUnsandboxedExecution, shell) {
130
+ async wrapCommand(command, requestUnsandboxedExecution, shell, cwd, commandDetails) {
131
+ const normalizedCommandDetails = this._normalizeCommandDetails(commandDetails ?? []);
132
+ const normalizedCommandKeywords = this._normalizeCommandKeywords(( normalizedCommandDetails.map(command => command.keyword)));
133
+ const currentReadAllowListPaths = getTerminalSandboxReadAllowListForCommands(
134
+ this._os,
135
+ this._commandAllowListKeywords,
136
+ this._commandAllowListCommandDetails
137
+ );
138
+ const nextReadAllowListPaths = getTerminalSandboxReadAllowListForCommands(this._os, normalizedCommandKeywords, normalizedCommandDetails);
139
+ const currentRuntimeConfiguration = getTerminalSandboxRuntimeConfigurationForCommands(this._os, this._commandAllowListCommandDetails);
140
+ const nextRuntimeConfiguration = getTerminalSandboxRuntimeConfigurationForCommands(this._os, normalizedCommandDetails);
141
+ const shouldRefreshConfig = this._commandAllowListKeywords.length === 0 || this._needsForceUpdateConfigFile || !this._areStringArraysEqual(this._commandAllowListKeywords, normalizedCommandKeywords) || !this._areStringArraysEqual(currentReadAllowListPaths, nextReadAllowListPaths) || !this._areObjectsEqual(currentRuntimeConfiguration, nextRuntimeConfiguration) || this._commandCwd?.toString() !== cwd?.toString();
142
+ if (shouldRefreshConfig) {
143
+ this._commandAllowListKeywords = normalizedCommandKeywords;
144
+ this._commandAllowListCommandDetails = normalizedCommandDetails;
145
+ this._commandCwd = cwd;
146
+ await this.getSandboxConfigPath(true);
147
+ }
121
148
  if (!this._sandboxConfigPath || !this._tempDir) {
122
149
  throw ( new Error("Sandbox config path or temp dir not initialized"));
123
150
  }
124
- const blockedDomainResult = requestUnsandboxedExecution ? {
151
+ const allowUnsandboxedCommands = this._areUnsandboxedCommandsAllowed();
152
+ const blockedDomainResult = requestUnsandboxedExecution || !allowUnsandboxedCommands ? {
125
153
  blockedDomains: [],
126
154
  deniedDomains: []
127
155
  } : this._getBlockedDomains(command);
128
- if (!requestUnsandboxedExecution && blockedDomainResult.blockedDomains.length > 0) {
156
+ if (!requestUnsandboxedExecution && allowUnsandboxedCommands && blockedDomainResult.blockedDomains.length > 0) {
129
157
  return {
130
158
  command: this._wrapUnsandboxedCommand(command, shell),
131
159
  isSandboxWrapped: false,
@@ -134,7 +162,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
134
162
  requiresUnsandboxConfirmation: true
135
163
  };
136
164
  }
137
- if (requestUnsandboxedExecution) {
165
+ if (requestUnsandboxedExecution && allowUnsandboxedCommands) {
138
166
  return {
139
167
  command: this._wrapUnsandboxedCommand(command, shell),
140
168
  isSandboxWrapped: false
@@ -149,15 +177,18 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
149
177
  if (!this._rgPath) {
150
178
  throw ( new Error("Ripgrep path not resolved"));
151
179
  }
152
- const wrappedCommand = `PATH="$PATH:${dirname(this._rgPath)}" TMPDIR="${this._tempDir.path}" CLAUDE_TMPDIR="${this._tempDir.path}" "${this._execPath}" "${this._srtPath}" --settings "${this._sandboxConfigPath}" -c ${this._quoteShellArgument(command)}`;
180
+ const commandToRunInSandbox = this._getSandboxCommandWithPreservedCwd(command, cwd);
181
+ const sandboxRuntimeCommand = `PATH="$PATH:${dirname(this._rgPath)}" TMPDIR="${this._tempDir.path}" CLAUDE_TMPDIR="${this._tempDir.path}" "${this._execPath}" "${this._srtPath}" --settings "${this._sandboxConfigPath}" -c ${this._quoteShellArgument(commandToRunInSandbox)}`;
182
+ const nodeSandboxRuntimeCommand = `ELECTRON_RUN_AS_NODE=1 ${sandboxRuntimeCommand}`;
183
+ const wrappedCommand = this._wrapSandboxRuntimeCommandForLaunch(nodeSandboxRuntimeCommand, cwd);
153
184
  if (this._remoteEnvDetails) {
154
185
  return {
155
- command: wrappedCommand,
186
+ command: this._wrapSandboxRuntimeCommandForLaunch(sandboxRuntimeCommand, cwd),
156
187
  isSandboxWrapped: true
157
188
  };
158
189
  }
159
190
  return {
160
- command: `ELECTRON_RUN_AS_NODE=1 ${wrappedCommand}`,
191
+ command: wrappedCommand,
161
192
  isSandboxWrapped: true
162
193
  };
163
194
  }
@@ -298,10 +329,10 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
298
329
  if (!request) {
299
330
  return ( new DisposableStore());
300
331
  }
301
- const part = ( new ChatElicitationRequestPart(( localize(14191, "The terminal is awaiting input.")), ( new MarkdownString(( localize(
302
- 14192,
332
+ const part = ( new ChatElicitationRequestPart(( localize(14496, "The terminal is awaiting input.")), ( new MarkdownString(( localize(
333
+ 14497,
303
334
  "Installing missing sandbox dependencies may prompt for your sudo password. Select Focus Terminal to type it in the terminal."
304
- )))), "", ( localize(14193, "Focus Terminal")), undefined, async () => {
335
+ )))), "", ( localize(14498, "Focus Terminal")), undefined, async () => {
305
336
  await promptContext.focusTerminal();
306
337
  return ElicitationState.Pending;
307
338
  }));
@@ -323,6 +354,16 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
323
354
  _quoteShellArgument(value) {
324
355
  return `'${value.replace(/'/g, `'\\''`)}'`;
325
356
  }
357
+ _getSandboxCommandWithPreservedCwd(command, cwd) {
358
+ if (this._os !== OperatingSystem.Linux || !cwd?.path || cwd.path === this._tempDir?.path) {
359
+ return command;
360
+ }
361
+ return `cd ${this._quoteShellArgument(cwd.path)} && ${command}`;
362
+ }
363
+ _wrapSandboxRuntimeCommandForLaunch(sandboxRuntimeCommand, cwd) {
364
+ const tempDirPath = this._tempDir?.path;
365
+ return this._os === OperatingSystem.Linux && cwd?.path && tempDirPath && cwd.path !== tempDirPath ? `cd ${this._quoteShellArgument(tempDirPath)}; ${sandboxRuntimeCommand}` : sandboxRuntimeCommand;
366
+ }
326
367
  _wrapUnsandboxedCommand(command, shell) {
327
368
  if (!this._tempDir?.path) {
328
369
  return command;
@@ -333,6 +374,12 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
333
374
  return `env TMPDIR="${this._tempDir.path}" ${this._quoteShellArgument(shell)} -c ${this._quoteShellArgument(command)}`;
334
375
  }
335
376
  _getBlockedDomains(command) {
377
+ if (this._isSandboxAllowNetworkConfigured()) {
378
+ return {
379
+ blockedDomains: [],
380
+ deniedDomains: []
381
+ };
382
+ }
336
383
  const domains = this._extractDomains(command);
337
384
  if (domains.length === 0) {
338
385
  return {
@@ -395,15 +442,40 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
395
442
  return undefined;
396
443
  }
397
444
  }
445
+ _normalizeCommandKeywords(commandKeywords) {
446
+ return [...( new Set(( commandKeywords.map(keyword => keyword.toLowerCase()))))].sort();
447
+ }
448
+ _normalizeCommandDetails(commandDetails) {
449
+ const seen = ( new Set());
450
+ const result = [];
451
+ for (const command of commandDetails) {
452
+ const normalizedCommand = {
453
+ keyword: command.keyword.toLowerCase(),
454
+ args: [...command.args]
455
+ };
456
+ const key = JSON.stringify(normalizedCommand);
457
+ if (!( seen.has(key))) {
458
+ seen.add(key);
459
+ result.push(normalizedCommand);
460
+ }
461
+ }
462
+ return result.sort(
463
+ (a, b) => a.keyword.localeCompare(b.keyword) || a.args.join("\u0000").localeCompare(b.args.join("\u0000"))
464
+ );
465
+ }
466
+ _areStringArraysEqual(a, b) {
467
+ return a.length === b.length && a.every((keyword, index) => keyword === b[index]);
468
+ }
469
+ _areObjectsEqual(a, b) {
470
+ return JSON.stringify(a) === JSON.stringify(b);
471
+ }
398
472
  async _isSandboxConfiguredEnabled() {
399
473
  const os = await this.getOS();
400
474
  if (os === OperatingSystem.Windows) {
401
475
  return false;
402
476
  }
403
- return this._isSandboxEnabled(this._getSettingValue(
404
- AgentSandboxSettingId.AgentSandboxEnabled,
405
- AgentSandboxSettingId.DeprecatedAgentSandboxEnabled
406
- ) ?? AgentSandboxEnabledValue.Off);
477
+ const value = this._getSandboxConfiguredEnabledValue();
478
+ return value === true || value === AgentSandboxEnabledValue.On || value === AgentSandboxEnabledValue.AllowNetwork;
407
479
  }
408
480
  async _resolveSrtPath() {
409
481
  if (this._srtPathResolved) {
@@ -418,7 +490,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
418
490
  this._srtPath = this._pathJoin(
419
491
  this._appRoot,
420
492
  "node_modules",
421
- "@anthropic-ai",
493
+ "@vscode",
422
494
  "sandbox-runtime",
423
495
  "dist",
424
496
  "cli.js"
@@ -430,16 +502,7 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
430
502
  await this._initTempDir();
431
503
  }
432
504
  if (this._tempDir) {
433
- const allowedDomainsSetting = this._getSettingValue(
434
- AgentNetworkDomainSettingId.AllowedNetworkDomains,
435
- AgentNetworkDomainSettingId.DeprecatedSandboxAllowedNetworkDomains,
436
- AgentNetworkDomainSettingId.DeprecatedOldAllowedNetworkDomains
437
- ) ?? [];
438
- const deniedDomainsSetting = this._getSettingValue(
439
- AgentNetworkDomainSettingId.DeniedNetworkDomains,
440
- AgentNetworkDomainSettingId.DeprecatedSandboxDeniedNetworkDomains,
441
- AgentNetworkDomainSettingId.DeprecatedOldDeniedNetworkDomains
442
- ) ?? [];
505
+ const allowNetwork = await this.isSandboxAllowNetworkEnabled();
443
506
  const linuxFileSystemSetting = this._os === OperatingSystem.Linux ? this._getSettingValue(
444
507
  TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem,
445
508
  TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxLinuxFileSystem
@@ -449,21 +512,53 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
449
512
  TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxMacFileSystem
450
513
  ) ?? {} : {};
451
514
  const runtimeSetting = this._getSettingValue(TerminalChatAgentToolsSettingId.AgentSandboxAdvancedRuntime) ?? {};
515
+ const commandRuntimeSetting = getTerminalSandboxRuntimeConfigurationForCommands(this._os, this._commandAllowListCommandDetails);
516
+ const commandRuntimeAllowReadPaths = this._getCommandRuntimeFileSystemPaths(commandRuntimeSetting, "allowRead");
517
+ const commandRuntimeAllowWritePaths = this._getCommandRuntimeFileSystemPaths(commandRuntimeSetting, "allowWrite");
452
518
  const configFileUri = URI.joinPath(this._tempDir, `vscode-sandbox-settings-${this._sandboxSettingsId}.json`);
453
- const linuxAllowWrite = this._updateAllowWritePathsWithWorkspaceFolders(linuxFileSystemSetting.allowWrite);
454
- const macAllowWrite = this._updateAllowWritePathsWithWorkspaceFolders(macFileSystemSetting.allowWrite);
519
+ let allowWritePaths = [];
520
+ let allowReadPaths = [];
521
+ let denyReadPaths = [];
522
+ let denyWritePaths;
523
+ if (this._os === OperatingSystem.Macintosh) {
524
+ allowWritePaths = this._updateAllowWritePathsWithWorkspaceFolders(macFileSystemSetting.allowWrite, commandRuntimeAllowWritePaths);
525
+ allowReadPaths = this._updateAllowReadPathsWithAllowWrite(
526
+ macFileSystemSetting.allowRead,
527
+ allowWritePaths,
528
+ commandRuntimeAllowReadPaths
529
+ );
530
+ denyReadPaths = this._updateDenyReadPathsWithHome(macFileSystemSetting.denyRead);
531
+ denyWritePaths = macFileSystemSetting.denyWrite;
532
+ } else if (this._os === OperatingSystem.Linux) {
533
+ allowWritePaths = this._resolveLinuxFileSystemPaths(
534
+ this._updateAllowWritePathsWithWorkspaceFolders(linuxFileSystemSetting.allowWrite, commandRuntimeAllowWritePaths)
535
+ );
536
+ allowReadPaths = this._resolveLinuxFileSystemPaths(this._updateAllowReadPathsWithAllowWrite(
537
+ linuxFileSystemSetting.allowRead,
538
+ allowWritePaths,
539
+ commandRuntimeAllowReadPaths
540
+ ));
541
+ denyReadPaths = this._resolveLinuxFileSystemPaths(this._updateDenyReadPathsWithHome(linuxFileSystemSetting.denyRead));
542
+ denyWritePaths = this._resolveLinuxFileSystemPaths(linuxFileSystemSetting.denyWrite);
543
+ }
455
544
  const sandboxSettings = {
456
- network: {
457
- allowedDomains: allowedDomainsSetting,
458
- deniedDomains: deniedDomainsSetting
459
- },
545
+ network: allowNetwork ? {
546
+ allowedDomains: [],
547
+ deniedDomains: [],
548
+ enabled: false
549
+ } : this.getResolvedNetworkDomains(),
460
550
  filesystem: {
461
- denyRead: this._os === OperatingSystem.Macintosh ? macFileSystemSetting.denyRead : linuxFileSystemSetting.denyRead,
462
- allowWrite: this._os === OperatingSystem.Macintosh ? macAllowWrite : linuxAllowWrite,
463
- denyWrite: this._os === OperatingSystem.Macintosh ? macFileSystemSetting.denyWrite : linuxFileSystemSetting.denyWrite
551
+ denyRead: denyReadPaths,
552
+ allowRead: allowReadPaths,
553
+ allowWrite: allowWritePaths,
554
+ denyWrite: denyWritePaths
464
555
  }
465
556
  };
466
- this._mergeAdditionalSandboxConfigProperties(sandboxSettings, runtimeSetting);
557
+ this._mergeAdditionalSandboxConfigProperties(
558
+ sandboxSettings,
559
+ allowNetwork ? this._withoutNetworkRuntimeSetting(runtimeSetting) : runtimeSetting
560
+ );
561
+ this._mergeAdditionalSandboxConfigProperties(sandboxSettings, commandRuntimeSetting);
467
562
  this._sandboxConfigPath = configFileUri.path;
468
563
  await this._fileService.createFile(
469
564
  configFileUri,
@@ -476,6 +571,24 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
476
571
  }
477
572
  return undefined;
478
573
  }
574
+ _getCommandRuntimeFileSystemPaths(runtimeSetting, key) {
575
+ const filesystem = runtimeSetting.filesystem;
576
+ if (!this._isObjectForSandboxConfigMerge(filesystem)) {
577
+ return [];
578
+ }
579
+ const paths = filesystem[key];
580
+ if (!Array.isArray(paths)) {
581
+ return [];
582
+ }
583
+ return paths.filter(path => typeof path === "string");
584
+ }
585
+ _withoutNetworkRuntimeSetting(runtimeSetting) {
586
+ const sanitizedRuntimeSetting = {
587
+ ...runtimeSetting
588
+ };
589
+ delete sanitizedRuntimeSetting.network;
590
+ return sanitizedRuntimeSetting;
591
+ }
479
592
  _mergeAdditionalSandboxConfigProperties(target, additional) {
480
593
  for (const [key, value] of Object.entries(additional)) {
481
594
  if (!Object.prototype.hasOwnProperty.call(target, key)) {
@@ -562,14 +675,74 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
562
675
  deniedDomains
563
676
  };
564
677
  }
565
- _updateAllowWritePathsWithWorkspaceFolders(configuredAllowWrite) {
678
+ _updateAllowWritePathsWithWorkspaceFolders(configuredAllowWrite, commandRuntimeAllowWrite = []) {
566
679
  const workspaceFolderPaths = ( this._workspaceContextService.getWorkspace().folders.map(folder => folder.uri.path));
567
680
  return [...( new Set([
568
681
  ...workspaceFolderPaths,
569
682
  ...this._defaultWritePaths,
570
- ...(configuredAllowWrite ?? [])
683
+ ...(configuredAllowWrite ?? []),
684
+ ...commandRuntimeAllowWrite
571
685
  ]))];
572
686
  }
687
+ _updateDenyReadPathsWithHome(configuredDenyRead) {
688
+ const userHome = this._getUserHomePath();
689
+ return [...( new Set([...(configuredDenyRead ?? []), ...(userHome ? [userHome] : [])]))];
690
+ }
691
+ _updateAllowReadPathsWithAllowWrite(configuredAllowRead, allowWrite, commandRuntimeAllowRead = []) {
692
+ return [...( new Set([
693
+ ...(configuredAllowRead ?? []),
694
+ ...getTerminalSandboxReadAllowListForCommands(
695
+ this._os,
696
+ this._commandAllowListKeywords,
697
+ this._commandAllowListCommandDetails
698
+ ),
699
+ ...commandRuntimeAllowRead,
700
+ ...this._getSandboxRuntimeReadPaths(),
701
+ ...this._getWorkspaceStorageReadPaths(),
702
+ ...allowWrite
703
+ ]))];
704
+ }
705
+ _resolveLinuxFileSystemPaths(paths) {
706
+ return ( (paths ?? []).map(path => this._expandHomePath(path)));
707
+ }
708
+ _expandHomePath(path) {
709
+ const userHome = this._getUserHomePath();
710
+ if (!userHome) {
711
+ return path;
712
+ }
713
+ if (path === "~") {
714
+ return userHome;
715
+ }
716
+ if (path.startsWith("~/")) {
717
+ return this._pathJoin(userHome, path.slice(2));
718
+ }
719
+ return path;
720
+ }
721
+ _getSandboxRuntimeReadPaths() {
722
+ const paths = [this._appRoot];
723
+ if (this._execPath) {
724
+ for (const path of [this._execPath, dirname(this._execPath)]) {
725
+ if (!this._isPathUnderAppRoot(path)) {
726
+ paths.push(path);
727
+ }
728
+ }
729
+ }
730
+ return paths;
731
+ }
732
+ _isPathUnderAppRoot(path) {
733
+ return path === this._appRoot || path.startsWith(
734
+ `${this._appRoot}${this._os === OperatingSystem.Windows ? win32.sep : posix.sep}`
735
+ );
736
+ }
737
+ _getWorkspaceStorageReadPaths() {
738
+ const workspaceStorageHome = this._remoteEnvDetails?.workspaceStorageHome ?? this._environmentService.workspaceStorageHome;
739
+ const workspaceId = this._workspaceContextService.getWorkspace().id;
740
+ return [URI.joinPath(workspaceStorageHome, workspaceId).path];
741
+ }
742
+ _getUserHomePath() {
743
+ const nativeEnv = this._environmentService;
744
+ return this._remoteEnvDetails?.userHome?.path ?? nativeEnv.userHome?.path;
745
+ }
573
746
  async _resolveSandboxDependencyStatus(forceRefresh = false) {
574
747
  if (!forceRefresh && this._sandboxDependencyStatus) {
575
748
  return this._sandboxDependencyStatus;
@@ -583,21 +756,33 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
583
756
  }
584
757
  return this._sandboxHelperService.checkSandboxDependencies();
585
758
  }
586
- _isSandboxEnabled(value) {
587
- return value === true || value === AgentSandboxEnabledValue.On;
759
+ _getSandboxConfiguredEnabledValue() {
760
+ return this._getSettingValue(
761
+ AgentSandboxSettingId.AgentSandboxEnabled,
762
+ AgentSandboxSettingId.DeprecatedAgentSandboxEnabled
763
+ ) ?? AgentSandboxEnabledValue.Off;
764
+ }
765
+ _isSandboxAllowNetworkConfigured() {
766
+ return this._getSandboxConfiguredEnabledValue() === AgentSandboxEnabledValue.AllowNetwork;
767
+ }
768
+ _areUnsandboxedCommandsAllowed() {
769
+ return this._getSettingValue(AgentSandboxSettingId.AgentSandboxAllowUnsandboxedCommands) === true;
588
770
  }
589
771
  _getSettingValue(settingId, ...deprecatedSettingIds) {
590
772
  const setting = this._configurationService.inspect(settingId);
591
773
  if (setting.userValue !== undefined) {
592
774
  return setting.value;
593
775
  }
594
- for (const deprecatedId of deprecatedSettingIds) {
595
- const deprecated = this._configurationService.inspect(deprecatedId);
596
- if (deprecated.userValue !== undefined) {
597
- this._logService.warn(
598
- `TerminalSandboxService: Using deprecated setting ${deprecatedId} because ${settingId} is not set. Please update your settings to use ${settingId} instead.`
599
- );
600
- return deprecated.value;
776
+ if (deprecatedSettingIds.length > 0) {
777
+ const userConfiguredKeys = ( this._configurationService.keys()).user;
778
+ for (const deprecatedId of deprecatedSettingIds) {
779
+ const deprecated = this._configurationService.inspect(deprecatedId);
780
+ if (deprecated.userValue !== undefined && userConfiguredKeys.includes(deprecatedId)) {
781
+ this._logService.warn(
782
+ `TerminalSandboxService: Using deprecated setting ${deprecatedId} because ${settingId} is not set. Please update your settings to use ${settingId} instead.`
783
+ );
784
+ return deprecated.value;
785
+ }
601
786
  }
602
787
  }
603
788
  return setting.value;
@@ -1,16 +0,0 @@
1
- import { ActionBar, IActionBarOptions } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar";
2
- import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
3
- export interface IWorkbenchActionBarOptions extends IActionBarOptions {
4
- /**
5
- * When set the `workbenchActionExecuted` is automatically sent for each invoked action. The `from` property
6
- * of the event will be the passed `telemetrySource`-value.
7
- */
8
- telemetrySource?: string;
9
- }
10
- /**
11
- * A {@link ActionBar action bar} that automatically sends `workbenchActionExecuted` telemetry
12
- * events for each invoked action, like {@link import('./toolbar.js').WorkbenchToolBar WorkbenchToolBar} does.
13
- */
14
- export declare class WorkbenchActionBar extends ActionBar {
15
- constructor(container: HTMLElement, options: IWorkbenchActionBarOptions, telemetryService: ITelemetryService);
16
- }