@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
@@ -77,12 +77,12 @@ let ChatWindowNotifier = class ChatWindowNotifier extends Disposable {
77
77
  mode: FocusMode.Notify
78
78
  });
79
79
  }
80
- const notificationTitle = info.title ? ( localize(6362, "Session: {0}", info.title)) : ( localize(6363, "Untitled Session"));
80
+ const notificationTitle = info.title ? ( localize(6413, "Session: {0}", info.title)) : ( localize(6414, "Untitled Session"));
81
81
  const cts = ( new CancellationTokenSource());
82
82
  this._activeNotifications.set(sessionResource, toDisposable(() => cts.dispose(true)));
83
83
  const isQuestionCarousel = this._isQuestionCarouselPending(sessionResource);
84
84
  try {
85
- const actionLabel = isQuestionCarousel ? ( localize(6364, "Open Session")) : ( localize(6365, "Allow"));
85
+ const actionLabel = isQuestionCarousel ? ( localize(6415, "Open Session")) : ( localize(6416, "Allow"));
86
86
  const result = await this._hostService.showToast({
87
87
  title: this._sanitizeOSToastText(notificationTitle),
88
88
  body: this._getNotificationBody(sessionResource, info, isQuestionCarousel),
@@ -121,7 +121,7 @@ let ChatWindowNotifier = class ChatWindowNotifier extends Disposable {
121
121
  }
122
122
  _getNotificationBody(sessionResource, info, isQuestionCarousel) {
123
123
  if (isQuestionCarousel) {
124
- return localize(6366, "Questions need your input.");
124
+ return localize(6417, "Questions need your input.");
125
125
  }
126
126
  const terminalCommand = this._getPendingTerminalCommand(sessionResource);
127
127
  if (terminalCommand) {
@@ -130,7 +130,7 @@ let ChatWindowNotifier = class ChatWindowNotifier extends Disposable {
130
130
  if (info.detail) {
131
131
  return this._sanitizeOSToastText(info.detail);
132
132
  }
133
- return localize(6367, "Approval needed to continue.");
133
+ return localize(6418, "Approval needed to continue.");
134
134
  }
135
135
  _getPendingTerminalCommand(sessionResource) {
136
136
  const model = this._chatService.getSession(sessionResource);
@@ -51,8 +51,8 @@ let AgentPluginRecommendations = class AgentPluginRecommendations extends Dispos
51
51
  if (uninstalledCount === 0) {
52
52
  return;
53
53
  }
54
- this._notificationService.prompt(Severity.Info, uninstalledCount === 1 ? ( localize(6368, "This workspace recommends 1 agent plugin.")) : ( localize(6369, "This workspace recommends {0} agent plugins.", uninstalledCount)), [{
55
- label: ( localize(6370, "Show Plugins")),
54
+ this._notificationService.prompt(Severity.Info, uninstalledCount === 1 ? ( localize(6419, "This workspace recommends 1 agent plugin.")) : ( localize(6420, "This workspace recommends {0} agent plugins.", uninstalledCount)), [{
55
+ label: ( localize(6421, "Show Plugins")),
56
56
  run: () => {
57
57
  this._extensionsWorkbenchService.openSearch("@agentPlugins @recommended");
58
58
  }
@@ -13,8 +13,8 @@ const configurationRegistry = ( Registry.as(Extensions.Configuration));
13
13
  function createDefaultModelArrays() {
14
14
  return {
15
15
  modelIds: [""],
16
- modelLabels: [( localize(6371, "Auto (Vendor Default)"))],
17
- modelDescriptions: [( localize(6372, "Use the vendor's default model"))]
16
+ modelLabels: [( localize(6422, "Auto (Vendor Default)"))],
17
+ modelDescriptions: [( localize(6423, "Use the vendor's default model"))]
18
18
  };
19
19
  }
20
20
  let DefaultModelContribution = class DefaultModelContribution extends Disposable {
@@ -46,8 +46,8 @@ let DefaultModelContribution = class DefaultModelContribution extends Disposable
46
46
  modelLabels.length = 0;
47
47
  modelDescriptions.length = 0;
48
48
  modelIds.push("");
49
- modelLabels.push(( localize(6371, "Auto (Vendor Default)")));
50
- modelDescriptions.push(( localize(6372, "Use the vendor's default model")));
49
+ modelLabels.push(( localize(6422, "Auto (Vendor Default)")));
50
+ modelDescriptions.push(( localize(6423, "Use the vendor's default model")));
51
51
  const models = [];
52
52
  const allModelIds = this._languageModelsService.getLanguageModelIds();
53
53
  for (const modelId of allModelIds) {
@@ -5,16 +5,16 @@ import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/
5
5
  import { ContributionEnablementState, isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
6
6
 
7
7
  function createEnablementActions(key, enablementModel, idPrefix) {
8
- return [( new Action(`${idPrefix}.enable`, ( localize(6373, "Enable")), undefined, true, () => {
8
+ return [( new Action(`${idPrefix}.enable`, ( localize(6424, "Enable")), undefined, true, () => {
9
9
  enablementModel.setEnabled(key, ContributionEnablementState.EnabledProfile);
10
10
  return Promise.resolve();
11
- })), ( new Action(`${idPrefix}.enableForWorkspace`, ( localize(6374, "Enable (Workspace)")), undefined, true, () => {
11
+ })), ( new Action(`${idPrefix}.enableForWorkspace`, ( localize(6425, "Enable (Workspace)")), undefined, true, () => {
12
12
  enablementModel.setEnabled(key, ContributionEnablementState.EnabledWorkspace);
13
13
  return Promise.resolve();
14
- })), ( new Action(`${idPrefix}.disable`, ( localize(6375, "Disable")), undefined, true, () => {
14
+ })), ( new Action(`${idPrefix}.disable`, ( localize(6426, "Disable")), undefined, true, () => {
15
15
  enablementModel.setEnabled(key, ContributionEnablementState.DisabledProfile);
16
16
  return Promise.resolve();
17
- })), ( new Action(`${idPrefix}.disableForWorkspace`, ( localize(6376, "Disable (Workspace)")), undefined, true, () => {
17
+ })), ( new Action(`${idPrefix}.disableForWorkspace`, ( localize(6427, "Disable (Workspace)")), undefined, true, () => {
18
18
  enablementModel.setEnabled(key, ContributionEnablementState.DisabledWorkspace);
19
19
  return Promise.resolve();
20
20
  }))];
@@ -46,8 +46,8 @@ let EnablementStatusWidget = class EnablementStatusWidget extends Disposable {
46
46
  };
47
47
  EnablementStatusWidget = ( __decorate([( __param(3, IMarkdownRendererService))], EnablementStatusWidget));
48
48
  const pluginEnablementLabels = {
49
- disabledProfile: ( localize(6377, "This plugin is disabled.")),
50
- disabledWorkspace: ( localize(6378, "This plugin is disabled for this workspace."))
49
+ disabledProfile: ( localize(6428, "This plugin is disabled.")),
50
+ disabledWorkspace: ( localize(6429, "This plugin is disabled for this workspace."))
51
51
  };
52
52
 
53
53
  export { EnablementStatusWidget, pluginEnablementLabels };
@@ -340,7 +340,7 @@ let ChatLanguageModelsDataContribution = class ChatLanguageModelsDataContributio
340
340
  },
341
341
  settings: {
342
342
  type: "object",
343
- description: ( localize(6379, "Per-model settings"))
343
+ description: ( localize(6430, "Per-model settings"))
344
344
  }
345
345
  },
346
346
  allOf: [...( vendors.map(vendor => ({
@@ -9,7 +9,7 @@ import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/pla
9
9
  import { IProgressService } from "@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress.service";
10
10
  import { IQuickInputService } from "@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service";
11
11
  import { IAgentPluginRepositoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service";
12
- import { IUpdateAllPluginsOptions, IUpdateAllPluginsResult } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginInstallService";
12
+ import { IInstallPluginFromSourceOptions, IInstallPluginFromSourceResult, IUpdateAllPluginsOptions, IUpdateAllPluginsResult } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginInstallService";
13
13
  import { IPluginInstallService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginInstallService.service";
14
14
  import { IMarketplacePlugin } from "../common/plugins/pluginMarketplaceService.js";
15
15
  import { IPluginMarketplaceService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.service";
@@ -27,12 +27,9 @@ export declare class PluginInstallService implements IPluginInstallService {
27
27
  readonly _serviceBrand: undefined;
28
28
  constructor(_pluginRepositoryService: IAgentPluginRepositoryService, _pluginMarketplaceService: IPluginMarketplaceService, _fileService: IFileService, _notificationService: INotificationService, _dialogService: IDialogService, _logService: ILogService, _progressService: IProgressService, _commandService: ICommandService, _quickInputService: IQuickInputService, _configurationService: IConfigurationService);
29
29
  installPlugin(plugin: IMarketplacePlugin): Promise<void>;
30
- installPluginFromSource(source: string): Promise<void>;
30
+ installPluginFromSource(source: string, options?: IInstallPluginFromSourceOptions): Promise<void>;
31
31
  validatePluginSource(source: string): string | undefined;
32
- installPluginFromValidatedSource(source: string): Promise<{
33
- success: boolean;
34
- message?: string;
35
- }>;
32
+ installPluginFromValidatedSource(source: string, options?: IInstallPluginFromSourceOptions): Promise<IInstallPluginFromSourceResult>;
36
33
  private _doInstallFromSource;
37
34
  private _addMarketplaceToConfig;
38
35
  updatePlugin(plugin: IMarketplacePlugin, silent?: boolean): Promise<boolean>;
@@ -2,7 +2,6 @@
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
4
4
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
5
- import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
6
5
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
6
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
8
7
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
@@ -59,13 +58,13 @@ let PluginInstallService = class PluginInstallService {
59
58
  }
60
59
  return this._installGitPlugin(plugin);
61
60
  }
62
- async installPluginFromSource(source) {
61
+ async installPluginFromSource(source, options) {
63
62
  const reference = parseMarketplaceReference(source);
64
63
  if (!reference) {
65
64
  this._notificationService.notify({
66
65
  severity: Severity.Error,
67
66
  message: ( localize(
68
- 6380,
67
+ 6431,
69
68
  "'{0}' is not a valid plugin source. Enter a GitHub repository (owner/repo) or a git clone URL.",
70
69
  source
71
70
  ))
@@ -76,13 +75,13 @@ let PluginInstallService = class PluginInstallService {
76
75
  this._notificationService.notify({
77
76
  severity: Severity.Error,
78
77
  message: ( localize(
79
- 6381,
78
+ 6432,
80
79
  "Local file paths are not supported. Enter a GitHub repository (owner/repo) or a git clone URL."
81
80
  ))
82
81
  });
83
82
  return;
84
83
  }
85
- const result = await this._doInstallFromSource(reference);
84
+ const result = await this._doInstallFromSource(reference, options);
86
85
  if (!result.success && result.message) {
87
86
  this._notificationService.notify({
88
87
  severity: Severity.Error,
@@ -94,26 +93,26 @@ let PluginInstallService = class PluginInstallService {
94
93
  const reference = parseMarketplaceReference(source);
95
94
  if (!reference) {
96
95
  return localize(
97
- 6380,
96
+ 6431,
98
97
  "'{0}' is not a valid plugin source. Enter a GitHub repository (owner/repo) or a git clone URL.",
99
98
  source
100
99
  );
101
100
  }
102
101
  if (reference.kind === MarketplaceReferenceKind.LocalFileUri) {
103
102
  return localize(
104
- 6381,
103
+ 6432,
105
104
  "Local file paths are not supported. Enter a GitHub repository (owner/repo) or a git clone URL."
106
105
  );
107
106
  }
108
107
  return undefined;
109
108
  }
110
- async installPluginFromValidatedSource(source) {
109
+ async installPluginFromValidatedSource(source, options) {
111
110
  const reference = parseMarketplaceReference(source);
112
111
  if (!reference) {
113
112
  return {
114
113
  success: false,
115
114
  message: ( localize(
116
- 6380,
115
+ 6431,
117
116
  "'{0}' is not a valid plugin source. Enter a GitHub repository (owner/repo) or a git clone URL.",
118
117
  source
119
118
  ))
@@ -123,14 +122,14 @@ let PluginInstallService = class PluginInstallService {
123
122
  return {
124
123
  success: false,
125
124
  message: ( localize(
126
- 6381,
125
+ 6432,
127
126
  "Local file paths are not supported. Enter a GitHub repository (owner/repo) or a git clone URL."
128
127
  ))
129
128
  };
130
129
  }
131
- return this._doInstallFromSource(reference);
130
+ return this._doInstallFromSource(reference, options);
132
131
  }
133
- async _doInstallFromSource(reference) {
132
+ async _doInstallFromSource(reference, options) {
134
133
  const sourceDescriptor = reference.kind === MarketplaceReferenceKind.GitHubShorthand ? {
135
134
  kind: PluginSourceKind.GitHub,
136
135
  repo: reference.githubRepo
@@ -156,7 +155,7 @@ let PluginInstallService = class PluginInstallService {
156
155
  let repoDir;
157
156
  try {
158
157
  repoDir = await this._pluginRepositoryService.ensurePluginSource(tempPlugin, {
159
- progressTitle: ( localize(6382, "Cloning plugin source '{0}'...", reference.displayLabel)),
158
+ progressTitle: ( localize(6433, "Cloning plugin source '{0}'...", reference.displayLabel)),
160
159
  failureLabel: reference.displayLabel,
161
160
  marketplaceType: MarketplaceType.OpenPlugin
162
161
  });
@@ -165,7 +164,7 @@ let PluginInstallService = class PluginInstallService {
165
164
  return {
166
165
  success: false,
167
166
  message: ( localize(
168
- 6383,
167
+ 6434,
169
168
  "Failed to clone plugin source '{0}': {1}",
170
169
  reference.displayLabel,
171
170
  detail
@@ -176,7 +175,7 @@ let PluginInstallService = class PluginInstallService {
176
175
  if (!repoExists) {
177
176
  return {
178
177
  success: false,
179
- message: ( localize(6384, "Failed to clone plugin source '{0}'.", reference.displayLabel))
178
+ message: ( localize(6435, "Failed to clone plugin source '{0}'.", reference.displayLabel))
180
179
  };
181
180
  }
182
181
  const discoveredPlugins = await this._pluginMarketplaceService.readPluginsFromDirectory(repoDir, reference);
@@ -185,17 +184,35 @@ let PluginInstallService = class PluginInstallService {
185
184
  return {
186
185
  success: false,
187
186
  message: ( localize(
188
- 6385,
187
+ 6436,
189
188
  "No plugins found in '{0}'. This does not appear to be a valid plugin marketplace.",
190
189
  reference.displayLabel
191
190
  ))
192
191
  };
193
192
  }
193
+ if (options?.plugin) {
194
+ const matchedPlugin = discoveredPlugins.find(p => p.name === options.plugin);
195
+ if (!matchedPlugin) {
196
+ return {
197
+ success: false,
198
+ message: ( localize(
199
+ 6437,
200
+ "Plugin '{0}' not found in '{1}'.",
201
+ options.plugin,
202
+ reference.displayLabel
203
+ ))
204
+ };
205
+ }
206
+ await this._addMarketplaceToConfig(reference);
207
+ await this.installPlugin(matchedPlugin);
208
+ return {
209
+ success: true,
210
+ matchedPlugin
211
+ };
212
+ }
194
213
  if (discoveredPlugins.length === 1) {
195
- const plugin = discoveredPlugins[0];
196
- const pluginDir = plugin.source ? URI.joinPath(repoDir, plugin.source) : repoDir;
197
- this._pluginMarketplaceService.addInstalledPlugin(pluginDir, plugin);
198
- this._addMarketplaceToConfig(reference);
214
+ await this._addMarketplaceToConfig(reference);
215
+ await this.installPlugin(discoveredPlugins[0]);
199
216
  return {
200
217
  success: true
201
218
  };
@@ -206,7 +223,7 @@ let PluginInstallService = class PluginInstallService {
206
223
  plugin: p
207
224
  })));
208
225
  const selected = await this._quickInputService.pick(picks, {
209
- placeHolder: ( localize(6386, "Select a plugin to install from '{0}'", reference.displayLabel)),
226
+ placeHolder: ( localize(6438, "Select a plugin to install from '{0}'", reference.displayLabel)),
210
227
  canPickMany: false
211
228
  });
212
229
  if (!selected) {
@@ -214,10 +231,8 @@ let PluginInstallService = class PluginInstallService {
214
231
  success: false
215
232
  };
216
233
  }
217
- const plugin = selected.plugin;
218
- const pluginDir = plugin.source ? URI.joinPath(repoDir, plugin.source) : repoDir;
219
- this._pluginMarketplaceService.addInstalledPlugin(pluginDir, plugin);
220
- this._addMarketplaceToConfig(reference);
234
+ await this._addMarketplaceToConfig(reference);
235
+ await this.installPlugin(selected.plugin);
221
236
  return {
222
237
  success: true
223
238
  };
@@ -228,7 +243,7 @@ let PluginInstallService = class PluginInstallService {
228
243
  if (( existingRefs.some(r => r.canonicalId === reference.canonicalId))) {
229
244
  return;
230
245
  }
231
- this._configurationService.updateValue(
246
+ return this._configurationService.updateValue(
232
247
  ChatConfiguration.PluginMarketplaces,
233
248
  [...currentValues, reference.rawValue]
234
249
  );
@@ -245,7 +260,7 @@ let PluginInstallService = class PluginInstallService {
245
260
  });
246
261
  }
247
262
  async updateAllPlugins(options, token) {
248
- const installed = this._pluginMarketplaceService.installedPlugins.get().filter(e => e.enabled);
263
+ const installed = this._pluginMarketplaceService.installedPlugins.get();
249
264
  if (installed.length === 0) {
250
265
  return {
251
266
  updatedNames: [],
@@ -366,15 +381,15 @@ let PluginInstallService = class PluginInstallService {
366
381
  } else {
367
382
  await this._progressService.withProgress({
368
383
  location: ProgressLocation.Notification,
369
- title: ( localize(6387, "Updating plugins..."))
384
+ title: ( localize(6439, "Updating plugins..."))
370
385
  }, doUpdate);
371
386
  }
372
387
  if (failedNames.length > 0) {
373
388
  this._notificationService.notify({
374
389
  severity: Severity.Error,
375
- message: ( localize(6388, "Failed to update: {0}", failedNames.join(", "))),
390
+ message: ( localize(6440, "Failed to update: {0}", failedNames.join(", "))),
376
391
  actions: {
377
- primary: [( new Action("showGitOutput", ( localize(6389, "Show Output")), undefined, true, () => {
392
+ primary: [( new Action("showGitOutput", ( localize(6441, "Show Output")), undefined, true, () => {
378
393
  this._commandService.executeCommand("git.showOutput");
379
394
  }))]
380
395
  }
@@ -383,7 +398,7 @@ let PluginInstallService = class PluginInstallService {
383
398
  this._pluginMarketplaceService.clearUpdatesAvailable();
384
399
  this._notificationService.notify({
385
400
  severity: Severity.Info,
386
- message: ( localize(6390, "Updated plugins: {0}", updatedNames.join(", ")))
401
+ message: ( localize(6442, "Updated plugins: {0}", updatedNames.join(", ")))
387
402
  });
388
403
  } else if (!token.isCancellationRequested) {
389
404
  this._pluginMarketplaceService.clearUpdatesAvailable();
@@ -408,16 +423,16 @@ let PluginInstallService = class PluginInstallService {
408
423
  } = await this._dialogService.confirm({
409
424
  type: "question",
410
425
  message: ( localize(
411
- 6391,
426
+ 6443,
412
427
  "Trust Plugins from '{0}'?",
413
428
  plugin.marketplaceReference.displayLabel
414
429
  )),
415
430
  detail: ( localize(
416
- 6392,
431
+ 6444,
417
432
  "Plugins can run code on your machine. Only install plugins from sources you trust.\n\nSource: {0}",
418
433
  plugin.marketplaceReference.rawValue
419
434
  )),
420
- primaryButton: ( localize(6393, "&&Trust")),
435
+ primaryButton: ( localize(6445, "&&Trust")),
421
436
  custom: {
422
437
  icon: Codicon.shield
423
438
  }
@@ -431,7 +446,7 @@ let PluginInstallService = class PluginInstallService {
431
446
  async _installRelativePathPlugin(plugin) {
432
447
  try {
433
448
  await this._pluginRepositoryService.ensureRepository(plugin.marketplaceReference, {
434
- progressTitle: ( localize(6394, "Installing plugin '{0}'...", plugin.name)),
449
+ progressTitle: ( localize(6446, "Installing plugin '{0}'...", plugin.name)),
435
450
  failureLabel: plugin.name,
436
451
  marketplaceType: plugin.marketplaceType
437
452
  });
@@ -445,7 +460,7 @@ let PluginInstallService = class PluginInstallService {
445
460
  this._notificationService.notify({
446
461
  severity: Severity.Error,
447
462
  message: ( localize(
448
- 6395,
463
+ 6447,
449
464
  "Plugin source directory '{0}' is invalid for repository '{1}'.",
450
465
  plugin.source,
451
466
  plugin.marketplace
@@ -458,7 +473,7 @@ let PluginInstallService = class PluginInstallService {
458
473
  this._notificationService.notify({
459
474
  severity: Severity.Error,
460
475
  message: ( localize(
461
- 6396,
476
+ 6448,
462
477
  "Plugin source directory '{0}' not found in repository '{1}'.",
463
478
  plugin.source,
464
479
  plugin.marketplace
@@ -473,7 +488,7 @@ let PluginInstallService = class PluginInstallService {
473
488
  let pluginDir;
474
489
  try {
475
490
  pluginDir = await this._pluginRepositoryService.ensurePluginSource(plugin, {
476
- progressTitle: ( localize(6394, "Installing plugin '{0}'...", plugin.name)),
491
+ progressTitle: ( localize(6446, "Installing plugin '{0}'...", plugin.name)),
477
492
  failureLabel: plugin.name,
478
493
  marketplaceType: plugin.marketplaceType
479
494
  });
@@ -485,7 +500,7 @@ let PluginInstallService = class PluginInstallService {
485
500
  this._notificationService.notify({
486
501
  severity: Severity.Error,
487
502
  message: ( localize(
488
- 6397,
503
+ 6449,
489
504
  "Plugin source '{0}' not found after cloning.",
490
505
  repo.getLabel(plugin.sourceDescriptor)
491
506
  ))
@@ -36,7 +36,7 @@ function gitRevisionCacheSuffix(ref, sha) {
36
36
  function showGitOutputAction(commandService) {
37
37
  return (new Action(
38
38
  "showGitOutput",
39
- localize(6398, "Show Git Output"),
39
+ localize(6450, "Show Git Output"),
40
40
  undefined,
41
41
  true,
42
42
  () => {
@@ -83,7 +83,7 @@ let AbstractGitPluginSource = class AbstractGitPluginSource {
83
83
  await this._checkoutRevision(repoDir, descriptor, options?.failureLabel ?? label);
84
84
  return this.getInstallUri(cacheRoot, descriptor);
85
85
  }
86
- const progressTitle = options?.progressTitle ?? ( localize(6399, "Cloning plugin source '{0}'...", label));
86
+ const progressTitle = options?.progressTitle ?? ( localize(6451, "Cloning plugin source '{0}'...", label));
87
87
  const failureLabel = options?.failureLabel ?? label;
88
88
  const ref = descriptor.ref;
89
89
  await this._cloneRepository(repoDir, this._cloneUrl(descriptor), progressTitle, failureLabel, ref);
@@ -124,7 +124,7 @@ let AbstractGitPluginSource = class AbstractGitPluginSource {
124
124
  }
125
125
  return await this._progressService.withProgress({
126
126
  location: ProgressLocation.Notification,
127
- title: ( localize(6400, "Updating plugin '{0}'...", updateLabel)),
127
+ title: ( localize(6452, "Updating plugin '{0}'...", updateLabel)),
128
128
  cancellable: false
129
129
  }, doUpdate);
130
130
  } catch (err) {
@@ -133,7 +133,7 @@ let AbstractGitPluginSource = class AbstractGitPluginSource {
133
133
  this._notificationService.notify({
134
134
  severity: Severity.Error,
135
135
  message: ( localize(
136
- 6401,
136
+ 6453,
137
137
  "Failed to update plugin '{0}': {1}",
138
138
  failureLabel,
139
139
  err?.message ?? String(err)
@@ -161,7 +161,7 @@ let AbstractGitPluginSource = class AbstractGitPluginSource {
161
161
  this._notificationService.notify({
162
162
  severity: Severity.Error,
163
163
  message: ( localize(
164
- 6402,
164
+ 6454,
165
165
  "Failed to install plugin '{0}': {1}",
166
166
  failureLabel,
167
167
  err?.message ?? String(err)
@@ -189,7 +189,7 @@ let AbstractGitPluginSource = class AbstractGitPluginSource {
189
189
  this._notificationService.notify({
190
190
  severity: Severity.Error,
191
191
  message: ( localize(
192
- 6403,
192
+ 6455,
193
193
  "Failed to checkout plugin '{0}' to requested revision: {1}",
194
194
  failureLabel,
195
195
  err?.message ?? String(err)
@@ -338,7 +338,7 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
338
338
  if (!confirmed) {
339
339
  return undefined;
340
340
  }
341
- const progressTitle = ( localize(6404, "Installing {0} plugin '{1}'...", this._managerName, plugin.name));
341
+ const progressTitle = ( localize(6456, "Installing {0} plugin '{1}'...", this._managerName, plugin.name));
342
342
  const {
343
343
  success,
344
344
  terminal
@@ -351,7 +351,7 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
351
351
  this._notificationService.notify({
352
352
  severity: Severity.Error,
353
353
  message: ( localize(
354
- 6405,
354
+ 6457,
355
355
  "{0} package '{1}' was not found after installation.",
356
356
  this._managerName,
357
357
  this.getLabel(plugin.sourceDescriptor)
@@ -369,9 +369,9 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
369
369
  return (new Promise(resolve => {
370
370
  const n = this._notificationService.notify({
371
371
  severity: Severity.Info,
372
- message: ( localize(6406, "Plugin '{0}' wants to run: {1}", pluginName, command)),
372
+ message: ( localize(6458, "Plugin '{0}' wants to run: {1}", pluginName, command)),
373
373
  actions: {
374
- primary: [( new Action("installPlugin", ( localize(6407, "Install")), undefined, true, async () => resolve(true)))]
374
+ primary: [( new Action("installPlugin", ( localize(6459, "Install")), undefined, true, async () => resolve(true)))]
375
375
  }
376
376
  });
377
377
  Event.once(n.onDidClose)(() => resolve(false));
@@ -381,9 +381,9 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
381
381
  confirmed
382
382
  } = await this._dialogService.confirm({
383
383
  type: "question",
384
- message: ( localize(6408, "Install Plugin '{0}'?", pluginName)),
385
- detail: ( localize(6409, "This will run the following command in a terminal:\n\n{0}", command)),
386
- primaryButton: ( localize(6410, "&&Install"))
384
+ message: ( localize(6460, "Install Plugin '{0}'?", pluginName)),
385
+ detail: ( localize(6461, "This will run the following command in a terminal:\n\n{0}", command)),
386
+ primaryButton: ( localize(6462, "&&Install"))
387
387
  });
388
388
  return confirmed;
389
389
  }
@@ -397,7 +397,7 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
397
397
  }, async () => {
398
398
  terminal = await this._terminalService.createTerminal({
399
399
  config: {
400
- name: ( localize(6411, "Plugin Install")),
400
+ name: ( localize(6463, "Plugin Install")),
401
401
  forceShellIntegration: true,
402
402
  isTransient: true,
403
403
  isFeatureTerminal: true
@@ -409,7 +409,7 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
409
409
  await terminal.runCommand(command, true);
410
410
  const exitCode = await commandResultPromise;
411
411
  if (exitCode !== 0) {
412
- throw ( new Error(( localize(6412, "Command exited with code {0}", exitCode))));
412
+ throw ( new Error(( localize(6464, "Command exited with code {0}", exitCode))));
413
413
  }
414
414
  });
415
415
  return {
@@ -421,7 +421,7 @@ let AbstractPackagePluginSource = class AbstractPackagePluginSource {
421
421
  this._notificationService.notify({
422
422
  severity: Severity.Error,
423
423
  message: ( localize(
424
- 6413,
424
+ 6465,
425
425
  "Plugin installation command failed: {0}",
426
426
  err?.message ?? String(err)
427
427
  ))
@@ -2,29 +2,44 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
2
2
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
3
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
4
4
  import { IDialogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service";
5
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
6
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
6
7
  import { IURLHandler } from "@codingame/monaco-vscode-api/vscode/vs/platform/url/common/url";
7
8
  import { IURLService } from "@codingame/monaco-vscode-api/vscode/vs/platform/url/common/url.service";
9
+ import { IEditorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service";
8
10
  import { IHostService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service";
9
11
  import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
12
+ import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
10
13
  import { IPluginInstallService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginInstallService.service";
11
14
  /**
12
- * Handles `vscode://chat-plugin/install?source=<base64>` and
15
+ * Handles `vscode://chat-plugin/install?source=<base64>[&plugin=<base64>]` and
13
16
  * `vscode://chat-plugin/add-marketplace?ref=<base64>` URLs.
14
17
  *
15
18
  * The `source` / `ref` query parameter is a base64-encoded `owner/repo` or
16
- * git clone URL. A confirmation dialog is always shown before any action.
19
+ * git clone URL. When `plugin` is provided on the `/install` route, the handler
20
+ * targets that specific plugin within the marketplace, installs it, and opens
21
+ * its details in the editor. Otherwise, a confirmation dialog is shown before
22
+ * any action.
17
23
  */
18
24
  export declare class PluginUrlHandler extends Disposable implements IWorkbenchContribution, IURLHandler {
19
25
  private readonly _pluginInstallService;
20
26
  private readonly _dialogService;
21
27
  private readonly _configurationService;
28
+ private readonly _extensionsWorkbenchService;
22
29
  private readonly _hostService;
23
30
  private readonly _logService;
31
+ private readonly _editorService;
32
+ private readonly _instantiationService;
24
33
  static readonly ID = "workbench.contrib.pluginUrlHandler";
25
- constructor(urlService: IURLService, _pluginInstallService: IPluginInstallService, _dialogService: IDialogService, _configurationService: IConfigurationService, _hostService: IHostService, _logService: ILogService);
34
+ constructor(urlService: IURLService, _pluginInstallService: IPluginInstallService, _dialogService: IDialogService, _configurationService: IConfigurationService, _extensionsWorkbenchService: IExtensionsWorkbenchService, _hostService: IHostService, _logService: ILogService, _editorService: IEditorService, _instantiationService: IInstantiationService);
26
35
  handleURL(uri: URI): Promise<boolean>;
27
36
  private _handleInstall;
37
+ /**
38
+ * Handles the case where a specific plugin is targeted within a
39
+ * marketplace. Delegates trust and discovery to the install service,
40
+ * then opens the plugin details in a modal editor.
41
+ */
42
+ private _handleInstallTargetedPlugin;
28
43
  private _handleAddMarketplace;
29
44
  /**
30
45
  * Reads a query parameter and attempts to parse it as a marketplace
@@ -32,4 +47,10 @@ export declare class PluginUrlHandler extends Disposable implements IWorkbenchCo
32
47
  * value so that plain-text `owner/repo` values also work in URLs.
33
48
  */
34
49
  private _decodeQueryParam;
50
+ /**
51
+ * Reads a query parameter and decodes it. Tries base64-decoding first,
52
+ * then falls back to the raw value.
53
+ */
54
+ private _decodeStringParam;
55
+ private _tryBase64Decode;
35
56
  }