@codingame/monaco-vscode-chat-service-override 29.1.0 → 30.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 (258) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +37 -39
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +11 -1
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +4 -4
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +132 -42
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +54 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +15 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +5 -1
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +188 -51
  12. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +7 -6
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +1 -1
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +7 -2
  15. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +6 -0
  16. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +14 -0
  17. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
  18. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +37 -16
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +10 -8
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +37 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +6 -6
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +20 -11
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +14 -14
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +18 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +10 -10
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +36 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +482 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +10 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +43 -10
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -76
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +27 -35
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +86 -80
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +3 -2
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +38 -4
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +38 -18
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +427 -167
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +37 -37
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +15 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +108 -37
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +8 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +28 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +11 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +3 -20
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +4 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +65 -68
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +64 -51
  80. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +288 -195
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +21 -21
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +21 -21
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +1 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +3 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +5 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +10 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -2
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +19 -7
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +3 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +54 -12
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +14 -14
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +50 -50
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +3 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +86 -17
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +65 -65
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +24 -16
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +17 -17
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  138. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  140. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  141. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +3 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +54 -39
  144. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +16 -16
  145. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +24 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +72 -14
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +181 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  154. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  156. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +8 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +37 -37
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +28 -23
  160. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
  161. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
  162. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +62 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +1 -10
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +148 -88
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +16 -9
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +8 -0
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +158 -0
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +8 -3
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +155 -76
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +1 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -4
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +5 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -6
  184. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +31 -1
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +228 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +66 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +190 -0
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +25 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +130 -107
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +1 -0
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +19 -18
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +2 -18
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +169 -266
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +12 -10
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +149 -206
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -22
  201. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +20 -8
  202. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +183 -43
  203. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
  205. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +21 -21
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
  210. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  211. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +11 -11
  213. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  214. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  215. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +2 -2
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +3 -1
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -2
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +3 -2
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +1 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +1 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -3
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +26 -23
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +4 -9
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -6
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +9 -9
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -50
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +2 -2
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +66 -5
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +239 -48
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +0 -14
  249. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +0 -208
  250. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +0 -22
  251. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +0 -637
  252. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +0 -24
  253. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +0 -384
  254. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +0 -33
  255. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +0 -47
  256. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +0 -30
  257. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +0 -55
  258. /package/vscode/src/vs/workbench/contrib/chat/{common → browser}/promptSyntax/promptFileContributions.d.ts +0 -0
@@ -1,8 +1,9 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
4
  import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
4
5
  import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
7
  import { FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
7
8
  import { win32, posix, dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
8
9
  import { OS, OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
@@ -15,13 +16,27 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
15
16
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
16
17
  import { IRemoteAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
17
18
  import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
18
- import { ITrustedDomainService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/url/common/trustedDomainService.service';
19
19
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
20
20
  import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
21
21
  import { WillShutdownJoinerOrder } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle';
22
22
  import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
23
+ import { ISandboxHelperService } from '@codingame/monaco-vscode-api/vscode/vs/platform/sandbox/common/sandboxHelperService.service';
24
+ import { TerminalCapability } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/capabilities/capabilities';
25
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
26
+ import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatElicitationRequestPart';
27
+ import { ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
28
+ import { ElicitationState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
29
+ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
30
+ import { SANDBOX_HELPER_CHANNEL_NAME, SandboxHelperChannelClient } from '../../../../../platform/sandbox/common/sandboxHelperIpc.js';
23
31
 
24
32
  var TerminalSandboxService_1;
33
+ var TerminalSandboxPrerequisiteCheck;
34
+ (function(TerminalSandboxPrerequisiteCheck) {
35
+ TerminalSandboxPrerequisiteCheck["Config"] = "config";
36
+ TerminalSandboxPrerequisiteCheck["Dependencies"] = "dependencies";
37
+ })(
38
+ TerminalSandboxPrerequisiteCheck || (TerminalSandboxPrerequisiteCheck = {})
39
+ );
25
40
  let TerminalSandboxService = class TerminalSandboxService extends Disposable {
26
41
  static {
27
42
  TerminalSandboxService_1 = this;
@@ -35,10 +50,11 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
35
50
  _environmentService,
36
51
  _logService,
37
52
  _remoteAgentService,
38
- _trustedDomainService,
39
53
  _workspaceContextService,
40
54
  _productService,
41
- _lifecycleService
55
+ _lifecycleService,
56
+ _sandboxHelperService,
57
+ _chatService
42
58
  ) {
43
59
  super();
44
60
  this._configurationService = _configurationService;
@@ -46,10 +62,11 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
46
62
  this._environmentService = _environmentService;
47
63
  this._logService = _logService;
48
64
  this._remoteAgentService = _remoteAgentService;
49
- this._trustedDomainService = _trustedDomainService;
50
65
  this._workspaceContextService = _workspaceContextService;
51
66
  this._productService = _productService;
52
67
  this._lifecycleService = _lifecycleService;
68
+ this._sandboxHelperService = _sandboxHelperService;
69
+ this._chatService = _chatService;
53
70
  this._srtPathResolved = false;
54
71
  this._needsForceUpdateConfigFile = true;
55
72
  this._remoteEnvDetails = null;
@@ -66,14 +83,15 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
66
83
  this._remoteEnvDetailsPromise = this._remoteAgentService.getEnvironment();
67
84
  this._register(
68
85
  Event.runAndSubscribe(this._configurationService.onDidChangeConfiguration, e => {
69
- if (e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxEnabled) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowedDomains) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkDeniedDomains) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowTrustedDomains) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxLinuxFileSystem) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.TerminalSandboxMacFileSystem)) {
86
+ if (e?.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxEnabled) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxNetworkAllowedDomains) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxNetworkDeniedDomains) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxMacFileSystem) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxEnabled) || e?.affectsConfiguration(
87
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains
88
+ ) || e?.affectsConfiguration(
89
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains
90
+ ) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxLinuxFileSystem) || e?.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxMacFileSystem)) {
70
91
  this.setNeedsForceUpdateConfigFile();
71
92
  }
72
93
  })
73
94
  );
74
- this._register(this._trustedDomainService.onDidChangeTrustedDomains(() => {
75
- this.setNeedsForceUpdateConfigFile();
76
- }));
77
95
  this._register(this._workspaceContextService.onDidChangeWorkspaceFolders(() => {
78
96
  this.setNeedsForceUpdateConfigFile();
79
97
  }));
@@ -83,27 +101,26 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
83
101
  }
84
102
  e.join(this._cleanupSandboxTempDir(), {
85
103
  id: "join.deleteFilesInSandboxTempDir",
86
- label: ( localize(13961, "Delete Files in Sandbox Temp Dir")),
104
+ label: ( localize(14040, "Delete Files in Sandbox Temp Dir")),
87
105
  order: WillShutdownJoinerOrder.Default
88
106
  });
89
107
  }));
90
108
  }
91
109
  async isEnabled() {
92
- const os = await this.getOS();
93
- if (os === OperatingSystem.Windows) {
94
- return false;
95
- }
96
- return this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxEnabled);
110
+ return await this._isSandboxConfiguredEnabled();
97
111
  }
98
112
  async getOS() {
99
113
  this._remoteEnvDetails = await this._remoteEnvDetailsPromise;
100
114
  this._os = this._remoteEnvDetails ? this._remoteEnvDetails.os : OS;
101
115
  return this._os;
102
116
  }
103
- wrapCommand(command) {
117
+ wrapCommand(command, requestUnsandboxedExecution) {
104
118
  if (!this._sandboxConfigPath || !this._tempDir) {
105
119
  throw ( new Error("Sandbox config path or temp dir not initialized"));
106
120
  }
121
+ if (requestUnsandboxedExecution) {
122
+ return this._tempDir?.path ? `(TMPDIR="${this._tempDir.path}"; export TMPDIR; ${command})` : command;
123
+ }
107
124
  if (!this._execPath) {
108
125
  throw ( new Error("Executable path not set to run sandbox commands"));
109
126
  }
@@ -125,7 +142,40 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
125
142
  setNeedsForceUpdateConfigFile() {
126
143
  this._needsForceUpdateConfigFile = true;
127
144
  }
145
+ async checkForSandboxingPrereqs(forceRefresh = false) {
146
+ if (!(await this._isSandboxConfiguredEnabled())) {
147
+ return {
148
+ enabled: false,
149
+ sandboxConfigPath: undefined,
150
+ failedCheck: undefined
151
+ };
152
+ }
153
+ const sandboxConfigPath = await this.getSandboxConfigPath(forceRefresh);
154
+ if (!sandboxConfigPath) {
155
+ return {
156
+ enabled: true,
157
+ sandboxConfigPath,
158
+ failedCheck: TerminalSandboxPrerequisiteCheck.Config
159
+ };
160
+ }
161
+ if (!(await this._checkSandboxDependencies(forceRefresh))) {
162
+ return {
163
+ enabled: true,
164
+ sandboxConfigPath,
165
+ failedCheck: TerminalSandboxPrerequisiteCheck.Dependencies,
166
+ missingDependencies: await this.getMissingSandboxDependencies()
167
+ };
168
+ }
169
+ return {
170
+ enabled: true,
171
+ sandboxConfigPath,
172
+ failedCheck: undefined
173
+ };
174
+ }
128
175
  async getSandboxConfigPath(forceRefresh = false) {
176
+ if (!(await this._isSandboxConfiguredEnabled())) {
177
+ return undefined;
178
+ }
129
179
  await this._resolveSrtPath();
130
180
  if (!this._sandboxConfigPath || forceRefresh || this._needsForceUpdateConfigFile) {
131
181
  this._sandboxConfigPath = await this._createSandboxConfig();
@@ -133,9 +183,131 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
133
183
  }
134
184
  return this._sandboxConfigPath;
135
185
  }
186
+ async _checkSandboxDependencies(forceRefresh = false) {
187
+ const os = await this.getOS();
188
+ if (os === OperatingSystem.Windows) {
189
+ return false;
190
+ }
191
+ const sandboxDependencyStatus = await this._resolveSandboxDependencyStatus(forceRefresh);
192
+ this._sandboxDependencyStatus = sandboxDependencyStatus;
193
+ if (sandboxDependencyStatus && !sandboxDependencyStatus.bubblewrapInstalled) {
194
+ this._logService.warn("TerminalSandboxService: bubblewrap (bwrap) is not installed");
195
+ }
196
+ if (sandboxDependencyStatus && !sandboxDependencyStatus.socatInstalled) {
197
+ this._logService.warn("TerminalSandboxService: socat is not installed");
198
+ }
199
+ return sandboxDependencyStatus ? sandboxDependencyStatus.bubblewrapInstalled && sandboxDependencyStatus.socatInstalled : true;
200
+ }
201
+ async getMissingSandboxDependencies() {
202
+ const os = await this.getOS();
203
+ if (os === OperatingSystem.Windows) {
204
+ return [];
205
+ }
206
+ if (!this._sandboxDependencyStatus || !this._sandboxDependencyStatus.bubblewrapInstalled || !this._sandboxDependencyStatus.socatInstalled) {
207
+ this._sandboxDependencyStatus = await this._resolveSandboxDependencyStatus(true);
208
+ }
209
+ const missing = [];
210
+ if (this._sandboxDependencyStatus && !this._sandboxDependencyStatus.bubblewrapInstalled) {
211
+ missing.push("bubblewrap");
212
+ }
213
+ if (this._sandboxDependencyStatus && !this._sandboxDependencyStatus.socatInstalled) {
214
+ missing.push("socat");
215
+ }
216
+ return missing;
217
+ }
218
+ async installMissingSandboxDependencies(missingDependencies, sessionResource, token, options) {
219
+ const depsList = missingDependencies.join(" ");
220
+ const installCommand = `sudo apt install -y ${depsList}`;
221
+ const instance = await options.createTerminal();
222
+ let installCommandSent = false;
223
+ const completionPromise = ( new Promise(resolve => {
224
+ const store = ( new DisposableStore());
225
+ let resolved = false;
226
+ const resolveOnce = code => {
227
+ if (resolved) {
228
+ return;
229
+ }
230
+ resolved = true;
231
+ store.dispose();
232
+ resolve(code);
233
+ };
234
+ const attachListener = () => {
235
+ const detection = instance.capabilities.get(TerminalCapability.CommandDetection);
236
+ if (detection) {
237
+ store.add(detection.onCommandFinished(cmd => resolveOnce(cmd.exitCode)));
238
+ }
239
+ };
240
+ attachListener();
241
+ store.add(instance.capabilities.onDidAddCapability(e => {
242
+ if (e.id === TerminalCapability.CommandDetection) {
243
+ attachListener();
244
+ }
245
+ }));
246
+ store.add(instance.onDisposed(() => resolveOnce(undefined)));
247
+ store.add(token.onCancellationRequested(() => resolveOnce(undefined)));
248
+ const safetyTimeout = timeout(5 * 60 * 1000);
249
+ store.add({
250
+ dispose: () => safetyTimeout.cancel()
251
+ });
252
+ safetyTimeout.then(() => resolveOnce(undefined));
253
+ const passwordPrompt = this._createMissingDependencyPasswordPrompt(sessionResource, {
254
+ focusTerminal: () => options.focusTerminal(instance),
255
+ onDidInputData: instance.onDidInputData,
256
+ onDisposed: instance.onDisposed,
257
+ didSendInstallCommand: () => installCommandSent
258
+ }, token);
259
+ store.add(passwordPrompt);
260
+ }));
261
+ await instance.sendText(installCommand, true);
262
+ installCommandSent = true;
263
+ return {
264
+ exitCode: await completionPromise
265
+ };
266
+ }
267
+ _createMissingDependencyPasswordPrompt(sessionResource, promptContext, token) {
268
+ const chatModel = sessionResource && this._chatService.getSession(sessionResource);
269
+ if (!(chatModel instanceof ChatModel)) {
270
+ return ( new DisposableStore());
271
+ }
272
+ const request = chatModel.getRequests().at(-1);
273
+ if (!request) {
274
+ return ( new DisposableStore());
275
+ }
276
+ const part = ( new ChatElicitationRequestPart(( localize(14041, "The terminal is awaiting input.")), ( new MarkdownString(( localize(
277
+ 14042,
278
+ "Installing missing sandbox dependencies may prompt for your sudo password. Select Focus Terminal to type it in the terminal."
279
+ )))), "", ( localize(14043, "Focus Terminal")), undefined, async () => {
280
+ await promptContext.focusTerminal();
281
+ return ElicitationState.Pending;
282
+ }));
283
+ chatModel.acceptResponseProgress(request, part);
284
+ const store = ( new DisposableStore());
285
+ const disposePrompt = () => store.dispose();
286
+ store.add({
287
+ dispose: () => part.hide()
288
+ });
289
+ store.add(token.onCancellationRequested(disposePrompt));
290
+ store.add(promptContext.onDisposed(disposePrompt));
291
+ store.add(promptContext.onDidInputData(data => {
292
+ if (promptContext.didSendInstallCommand() && data.length > 0) {
293
+ disposePrompt();
294
+ }
295
+ }));
296
+ return store;
297
+ }
136
298
  _quoteShellArgument(value) {
137
299
  return `'${value.replace(/'/g, `'\\''`)}'`;
138
300
  }
301
+ async _isSandboxConfiguredEnabled() {
302
+ const os = await this.getOS();
303
+ if (os === OperatingSystem.Windows) {
304
+ return false;
305
+ }
306
+ return this._getSettingValue(
307
+ TerminalChatAgentToolsSettingId.AgentSandboxEnabled,
308
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxEnabled
309
+ ) ?? false;
310
+ }
139
311
  async _resolveSrtPath() {
140
312
  if (this._srtPathResolved) {
141
313
  return;
@@ -161,21 +333,28 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
161
333
  await this._initTempDir();
162
334
  }
163
335
  if (this._tempDir) {
164
- const allowedDomainsSetting = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowedDomains) ?? [];
165
- const deniedDomainsSetting = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkDeniedDomains) ?? [];
166
- const allowTrustedDomains = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowTrustedDomains) ?? false;
167
- const linuxFileSystemSetting = this._os === OperatingSystem.Linux ? this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxLinuxFileSystem) ?? {} : {};
168
- const macFileSystemSetting = this._os === OperatingSystem.Macintosh ? this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxMacFileSystem) ?? {} : {};
336
+ const allowedDomainsSetting = this._getSettingValue(
337
+ TerminalChatAgentToolsSettingId.AgentSandboxNetworkAllowedDomains,
338
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains
339
+ ) ?? [];
340
+ const deniedDomainsSetting = this._getSettingValue(
341
+ TerminalChatAgentToolsSettingId.AgentSandboxNetworkDeniedDomains,
342
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains
343
+ ) ?? [];
344
+ const linuxFileSystemSetting = this._os === OperatingSystem.Linux ? this._getSettingValue(
345
+ TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem,
346
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxLinuxFileSystem
347
+ ) ?? {} : {};
348
+ const macFileSystemSetting = this._os === OperatingSystem.Macintosh ? this._getSettingValue(
349
+ TerminalChatAgentToolsSettingId.AgentSandboxMacFileSystem,
350
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxMacFileSystem
351
+ ) ?? {} : {};
169
352
  const configFileUri = URI.joinPath(this._tempDir, `vscode-sandbox-settings-${this._sandboxSettingsId}.json`);
170
353
  const linuxAllowWrite = this._updateAllowWritePathsWithWorkspaceFolders(linuxFileSystemSetting.allowWrite);
171
354
  const macAllowWrite = this._updateAllowWritePathsWithWorkspaceFolders(macFileSystemSetting.allowWrite);
172
- let allowedDomains = allowedDomainsSetting;
173
- if (allowTrustedDomains) {
174
- allowedDomains = this._addTrustedDomainsToAllowedDomains(allowedDomains);
175
- }
176
355
  const sandboxSettings = {
177
356
  network: {
178
- allowedDomains,
357
+ allowedDomains: allowedDomainsSetting,
179
358
  deniedDomains: deniedDomainsSetting
180
359
  },
181
360
  filesystem: {
@@ -252,31 +431,19 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
252
431
  return typeof windowId === "number" ? `tmp_vscode_${windowId}` : undefined;
253
432
  }
254
433
  getResolvedNetworkDomains() {
255
- let allowedDomains = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowedDomains) ?? [];
256
- const deniedDomains = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkDeniedDomains) ?? [];
257
- const allowTrustedDomains = this._configurationService.getValue(TerminalChatAgentToolsSettingId.TerminalSandboxNetworkAllowTrustedDomains) ?? false;
258
- if (allowTrustedDomains) {
259
- allowedDomains = this._addTrustedDomainsToAllowedDomains(allowedDomains);
260
- }
434
+ const allowedDomains = this._getSettingValue(
435
+ TerminalChatAgentToolsSettingId.AgentSandboxNetworkAllowedDomains,
436
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains
437
+ ) ?? [];
438
+ const deniedDomains = this._getSettingValue(
439
+ TerminalChatAgentToolsSettingId.AgentSandboxNetworkDeniedDomains,
440
+ TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains
441
+ ) ?? [];
261
442
  return {
262
443
  allowedDomains,
263
444
  deniedDomains
264
445
  };
265
446
  }
266
- _addTrustedDomainsToAllowedDomains(allowedDomains) {
267
- const allowedDomainsSet = ( new Set(allowedDomains));
268
- for (const domain of this._trustedDomainService.trustedDomains) {
269
- try {
270
- const uri = ( new URL(domain));
271
- allowedDomainsSet.add(uri.hostname);
272
- } catch {
273
- if (domain !== "*") {
274
- allowedDomainsSet.add(domain);
275
- }
276
- }
277
- }
278
- return Array.from(allowedDomainsSet);
279
- }
280
447
  _updateAllowWritePathsWithWorkspaceFolders(configuredAllowWrite) {
281
448
  const workspaceFolderPaths = ( this._workspaceContextService.getWorkspace().folders.map(folder => folder.uri.path));
282
449
  return [...( new Set([
@@ -285,7 +452,31 @@ let TerminalSandboxService = class TerminalSandboxService extends Disposable {
285
452
  ...(configuredAllowWrite ?? [])
286
453
  ]))];
287
454
  }
455
+ async _resolveSandboxDependencyStatus(forceRefresh = false) {
456
+ if (!forceRefresh && this._sandboxDependencyStatus) {
457
+ return this._sandboxDependencyStatus;
458
+ }
459
+ const connection = this._remoteAgentService.getConnection();
460
+ if (connection) {
461
+ return connection.withChannel(SANDBOX_HELPER_CHANNEL_NAME, channel => {
462
+ const sandboxHelper = ( new SandboxHelperChannelClient(channel));
463
+ return sandboxHelper.checkSandboxDependencies();
464
+ });
465
+ }
466
+ return this._sandboxHelperService.checkSandboxDependencies();
467
+ }
468
+ _getSettingValue(settingId, deprecatedSettingId) {
469
+ const setting = this._configurationService.inspect(settingId);
470
+ const deprecatedSetting = deprecatedSettingId ? this._configurationService.inspect(deprecatedSettingId) : undefined;
471
+ if (setting.userValue === undefined && deprecatedSetting?.userValue !== undefined) {
472
+ this._logService.warn(
473
+ `TerminalSandboxService: Using deprecated setting ${deprecatedSettingId} because ${settingId} is not set. Please update your settings to use ${settingId} instead.`
474
+ );
475
+ return deprecatedSetting.value;
476
+ }
477
+ return setting.value;
478
+ }
288
479
  };
289
- TerminalSandboxService = TerminalSandboxService_1 = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IFileService)), ( __param(2, IEnvironmentService)), ( __param(3, ILogService)), ( __param(4, IRemoteAgentService)), ( __param(5, ITrustedDomainService)), ( __param(6, IWorkspaceContextService)), ( __param(7, IProductService)), ( __param(8, ILifecycleService))], TerminalSandboxService));
480
+ TerminalSandboxService = TerminalSandboxService_1 = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IFileService)), ( __param(2, IEnvironmentService)), ( __param(3, ILogService)), ( __param(4, IRemoteAgentService)), ( __param(5, IWorkspaceContextService)), ( __param(6, IProductService)), ( __param(7, ILifecycleService)), ( __param(8, ISandboxHelperService)), ( __param(9, IChatService))], TerminalSandboxService));
290
481
 
291
- export { TerminalSandboxService };
482
+ export { TerminalSandboxPrerequisiteCheck, TerminalSandboxService };
@@ -1,14 +0,0 @@
1
- import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
- import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorExtensions";
3
- import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
4
- export interface IToolConfirmationActionContext {
5
- readonly sessionResource?: URI;
6
- }
7
- export declare class ConfigureToolsAction extends Action2 {
8
- static ID: string;
9
- constructor();
10
- run(accessor: ServicesAccessor, ...args: unknown[]): Promise<void>;
11
- private extractWidget;
12
- private extractSource;
13
- }
14
- export declare function registerChatToolActions(): void;
@@ -1,208 +0,0 @@
1
-
2
- import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
3
- import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
- import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
5
- import { KeyMod, KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
6
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
7
- import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
8
- import { Action2, MenuId, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
9
- import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
10
- import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
11
- import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
12
- import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
13
- import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
14
- import { IChatToolInvocation, ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
15
- import { isResponseVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
16
- import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
17
- import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
18
- import { ToolsScope } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools';
19
- import { CHAT_CATEGORY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
20
- import { AcceptToolConfirmationActionId, SkipToolConfirmationActionId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatConstants';
21
- import { showToolsPicker } from './chatToolPicker.js';
22
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
23
-
24
- class ToolConfirmationAction extends Action2 {
25
- run(accessor, context) {
26
- const chatWidgetService = accessor.get(IChatWidgetService);
27
- const widget = context?.sessionResource ? chatWidgetService.getWidgetBySessionResource(context.sessionResource) : chatWidgetService.lastFocusedWidget;
28
- const lastItem = widget?.viewModel?.getItems().at(-1);
29
- if (!isResponseVM(lastItem)) {
30
- return;
31
- }
32
- for (const item of lastItem.model.response.value) {
33
- const state = item.kind === "toolInvocation" ? item.state.get() : undefined;
34
- if (state?.type === IChatToolInvocation.StateKind.WaitingForConfirmation || state?.type === IChatToolInvocation.StateKind.WaitingForPostApproval) {
35
- state.confirm(this.getReason());
36
- break;
37
- }
38
- }
39
- widget?.focusInput();
40
- }
41
- }
42
- class AcceptToolConfirmation extends ToolConfirmationAction {
43
- constructor() {
44
- super({
45
- id: AcceptToolConfirmationActionId,
46
- title: ( localize2(5012, "Accept")),
47
- f1: false,
48
- category: CHAT_CATEGORY,
49
- keybinding: {
50
- when: ( ContextKeyExpr.and(ChatContextKeys.inChatSession, ChatContextKeys.Editing.hasToolConfirmation)),
51
- primary: KeyMod.CtrlCmd | KeyCode.Enter,
52
- weight: KeybindingWeight.WorkbenchContrib + 1
53
- }
54
- });
55
- }
56
- getReason() {
57
- return {
58
- type: ToolConfirmKind.UserAction
59
- };
60
- }
61
- }
62
- class SkipToolConfirmation extends ToolConfirmationAction {
63
- constructor() {
64
- super({
65
- id: SkipToolConfirmationActionId,
66
- title: ( localize2(5013, "Skip")),
67
- f1: false,
68
- category: CHAT_CATEGORY,
69
- keybinding: {
70
- when: ( ContextKeyExpr.and(ChatContextKeys.inChatSession, ChatContextKeys.Editing.hasToolConfirmation)),
71
- primary: KeyMod.CtrlCmd | KeyCode.Enter | KeyMod.Alt,
72
- weight: KeybindingWeight.WorkbenchContrib + 1
73
- }
74
- });
75
- }
76
- getReason() {
77
- return {
78
- type: ToolConfirmKind.Skipped
79
- };
80
- }
81
- }
82
- class ConfigureToolsAction extends Action2 {
83
- static {
84
- this.ID = "workbench.action.chat.configureTools";
85
- }
86
- constructor() {
87
- super({
88
- id: ConfigureToolsAction.ID,
89
- title: ( localize(5014, "Configure Tools...")),
90
- icon: Codicon.settings,
91
- f1: false,
92
- category: CHAT_CATEGORY,
93
- precondition: ( ChatContextKeys.chatModeKind.isEqualTo(ChatModeKind.Agent)),
94
- menu: [{
95
- when: ( ContextKeyExpr.and(( ChatContextKeys.chatModeKind.isEqualTo(ChatModeKind.Agent)), ( ChatContextKeys.lockedToCodingAgent.negate()))),
96
- id: MenuId.ChatInput,
97
- group: "navigation",
98
- order: 100
99
- }]
100
- });
101
- }
102
- async run(accessor, ...args) {
103
- const instaService = accessor.get(IInstantiationService);
104
- const chatWidgetService = accessor.get(IChatWidgetService);
105
- const telemetryService = accessor.get(ITelemetryService);
106
- let widget = chatWidgetService.lastFocusedWidget;
107
- if (!widget) {
108
- widget = this.extractWidget(args);
109
- }
110
- if (!widget) {
111
- return;
112
- }
113
- const source = this.extractSource(args) ?? "chatInput";
114
- let placeholder;
115
- let description;
116
- const {
117
- entriesScope,
118
- entriesMap
119
- } = widget.input.selectedToolsModel;
120
- switch (entriesScope) {
121
- case ToolsScope.Session:
122
- placeholder = ( localize(5015, "Select tools for this chat session"));
123
- description = ( localize(5016, "The selected tools were configured only for this chat session."));
124
- break;
125
- case ToolsScope.Agent:
126
- placeholder = ( localize(5017, "Select tools for this custom agent"));
127
- description = ( localize(
128
- 5018,
129
- "The selected tools are configured by the '{0}' custom agent. Changes to the tools will be applied to the custom agent file as well.",
130
- widget.input.currentModeObs.get().label.get()
131
- ));
132
- break;
133
- case ToolsScope.Agent_ReadOnly:
134
- placeholder = ( localize(5019, "Select tools for this custom agent"));
135
- description = ( localize(
136
- 5020,
137
- "The selected tools are configured by the '{0}' custom agent. Changes to the tools will only be used for this session and will not change the '{0}' custom agent.",
138
- widget.input.currentModeObs.get().label.get()
139
- ));
140
- break;
141
- case ToolsScope.Global:
142
- placeholder = ( localize(5021, "Select tools that are available to chat."));
143
- description = ( localize(
144
- 5022,
145
- "The selected tools will be applied globally for all chat sessions that use the default agent."
146
- ));
147
- break;
148
- }
149
- const cts = ( new CancellationTokenSource());
150
- const initialMode = widget.input.currentModeObs.get();
151
- const modeListener = autorun(reader => {
152
- if (initialMode.id !== widget.input.currentModeObs.read(reader).id) {
153
- cts.cancel();
154
- }
155
- });
156
- try {
157
- const result = await instaService.invokeFunction(
158
- showToolsPicker,
159
- placeholder,
160
- source,
161
- description,
162
- () => entriesMap.get(),
163
- widget.input.selectedLanguageModel.get()?.metadata,
164
- cts.token
165
- );
166
- if (result) {
167
- widget.input.selectedToolsModel.set(result, false);
168
- }
169
- } finally {
170
- modeListener.dispose();
171
- cts.dispose();
172
- }
173
- const tools = widget.input.selectedToolsModel.entriesMap.get();
174
- telemetryService.publicLog2("chat/selectedTools", {
175
- total: tools.size,
176
- enabled: Iterable.reduce(tools, (prev, [_, enabled]) => enabled ? prev + 1 : prev, 0)
177
- });
178
- }
179
- extractWidget(args) {
180
- function isChatActionContext(obj) {
181
- return !!obj && typeof obj === "object" && !!obj.widget;
182
- }
183
- for (const arg of args) {
184
- if (isChatActionContext(arg)) {
185
- return arg.widget;
186
- }
187
- }
188
- return undefined;
189
- }
190
- extractSource(args) {
191
- function isChatActionSource(obj) {
192
- return !!obj && typeof obj === "object" && !!obj.source;
193
- }
194
- for (const arg of args) {
195
- if (isChatActionSource(arg)) {
196
- return arg.source;
197
- }
198
- }
199
- return undefined;
200
- }
201
- }
202
- function registerChatToolActions() {
203
- registerAction2(AcceptToolConfirmation);
204
- registerAction2(SkipToolConfirmation);
205
- registerAction2(ConfigureToolsAction);
206
- }
207
-
208
- export { ConfigureToolsAction, registerChatToolActions };
@@ -1,22 +0,0 @@
1
- import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
- import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
3
- import { ILanguageModelChatMetadata } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels";
4
- import { IToolData, IToolSet } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
5
- /**
6
- * New QuickTree implementation of the tools picker.
7
- * Uses IQuickTree to provide a true hierarchical tree structure with:
8
- * - Collapsible nodes for buckets and toolsets
9
- * - Checkbox state management with parent-child relationships
10
- * - Special handling for MCP servers (server as bucket, tools as direct children)
11
- * - Built-in filtering and search capabilities
12
- *
13
- * @param accessor - Service accessor for dependency injection
14
- * @param placeHolder - Placeholder text shown in the picker
15
- * @param description - Optional description text shown in the picker
16
- * @param toolsEntries - Optional initial selection state for tools and toolsets
17
- * @param modelId - Optional model ID to filter tools by supported models
18
- * @param onUpdate - Optional callback fired when the selection changes
19
- * @param token - Optional cancellation token to close the picker when cancelled
20
- * @returns Promise resolving to the final selection map, or undefined if cancelled
21
- */
22
- export declare function showToolsPicker(accessor: ServicesAccessor, placeHolder: string, source: string, description?: string, getToolsEntries?: () => ReadonlyMap<IToolSet | IToolData, boolean>, model?: ILanguageModelChatMetadata | undefined, token?: CancellationToken): Promise<ReadonlyMap<IToolSet | IToolData, boolean> | undefined>;