@codingame/monaco-vscode-chat-service-override 33.0.9 → 34.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/index.js +19 -5
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +32 -0
  4. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +77 -0
  5. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +84 -17
  6. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +235 -190
  7. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +3 -2
  8. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +23 -4
  9. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.d.ts +1 -0
  10. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +22 -0
  11. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +107 -8
  12. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +272 -49
  13. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +2 -2
  14. package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.d.ts → agentHostResourceService.d.ts} +26 -0
  15. package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +11 -1
  16. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +13 -0
  17. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +26 -18
  18. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.d.ts +1 -0
  19. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +119 -0
  20. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +135 -19
  21. package/vscode/src/vs/platform/agentHost/common/agentService.js +8 -2
  22. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +5 -1
  23. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +85 -22
  24. package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +36 -0
  25. package/vscode/src/vs/platform/agentHost/common/customAgents.js +12 -0
  26. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +81 -0
  27. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +103 -0
  28. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +86 -10
  29. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +129 -37
  30. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +12 -0
  31. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +72 -0
  32. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.d.ts +6 -0
  33. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.js +30 -0
  34. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.d.ts +6 -0
  35. package/vscode/src/vs/platform/agentHost/common/state/protocol/{reducers.js → channels-session/reducer.js} +99 -168
  36. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +6 -0
  37. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +110 -0
  38. package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.d.ts → common/errors.d.ts} +13 -2
  39. package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.js → common/errors.js} +1 -2
  40. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +17 -0
  41. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.js +9 -0
  42. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +33 -8
  43. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +2 -3
  44. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +36 -5
  45. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +6 -3
  46. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +50 -0
  47. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +138 -0
  48. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +3 -3
  49. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +12 -0
  50. package/vscode/src/vs/platform/networkFilter/common/settings.js +14 -0
  51. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +4 -1
  52. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +9 -0
  53. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +21 -0
  54. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +28 -0
  55. package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +31 -0
  56. package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +49 -0
  57. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +182 -0
  58. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +784 -0
  59. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +18 -0
  60. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +305 -0
  61. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
  62. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +120 -0
  63. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +100 -0
  64. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +10 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
  67. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  68. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +60 -60
  69. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  71. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  72. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
  73. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +106 -8
  74. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  75. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +22 -36
  76. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  77. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  78. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +21 -13
  80. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
  81. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +38 -18
  82. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
  84. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  85. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  86. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
  87. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +3 -2
  88. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +9 -9
  89. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +5 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +10 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +40 -11
  92. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +15 -9
  93. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  94. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +0 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +23 -17
  96. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  97. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +24 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.js +55 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +30 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +119 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +13 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +32 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +55 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +104 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +1 -0
  106. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +177 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.d.ts +3 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +11 -11
  109. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.d.ts +6 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +14 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +3 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +44 -5
  113. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +60 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +103 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -3
  116. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -62
  117. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +9 -7
  118. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  121. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +6 -5
  123. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +38 -28
  124. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  125. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +4 -4
  127. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +22 -31
  128. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -16
  130. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +3 -3
  131. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +8 -2
  132. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +112 -113
  133. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +62 -68
  134. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +3 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +149 -145
  136. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +3 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
  139. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +2 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +2 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +5 -3
  142. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +8 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +13 -12
  144. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +8 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +15 -13
  146. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +1 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +78 -55
  148. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +140 -67
  149. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +11 -21
  150. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +3 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +59 -57
  152. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +440 -357
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +99 -99
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  174. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  175. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  176. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  179. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  180. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  181. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  182. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  183. package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.d.ts +21 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.js +115 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +5 -2
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  188. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +6 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +28 -1
  190. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -1
  191. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +187 -106
  192. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +41 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  194. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  195. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +66 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +346 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +3 -2
  198. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -2
  199. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +72 -29
  200. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  201. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  202. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
  203. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
  204. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +5 -1
  205. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +144 -67
  206. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  207. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +126 -80
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -0
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +32 -31
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +11 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +40 -33
  213. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +5 -1
  214. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +25 -24
  215. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  216. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  217. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +5 -5
  218. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
  219. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  220. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  221. package/vscode/src/vs/workbench/contrib/chat/browser/githubRepoFetcher.js +1 -19
  222. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.d.ts +12 -22
  223. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +14 -6
  224. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +6 -3
  225. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +56 -18
  226. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
  227. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
  228. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +3 -3
  229. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +5 -6
  230. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +33 -36
  232. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +3 -0
  233. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +31 -16
  234. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +4 -4
  235. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +16 -13
  236. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  237. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
  238. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  240. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  242. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  243. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  245. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  246. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
  247. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
  248. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +24 -23
  249. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
  250. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +18 -0
  251. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +23 -1
  252. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
  253. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +5 -2
  254. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  255. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  256. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +22 -13
  257. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +2 -2
  258. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  259. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  260. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  261. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +14 -3
  262. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +55 -24
  263. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  264. package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +38 -0
  265. package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +47 -0
  266. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +54 -12
  267. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +1 -0
  268. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
  269. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +39 -0
  270. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +40 -4
  271. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +30 -8
  272. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +205 -46
  273. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +4 -3
  274. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +8 -3
  275. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +57 -0
  276. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +153 -38
  277. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +12 -7
  278. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +70 -37
  279. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +6 -28
  280. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  281. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  282. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  283. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  284. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +150 -150
  285. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  286. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
  287. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  288. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  289. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  290. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
  291. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  292. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  293. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  294. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  295. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  296. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +21 -21
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +4 -0
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +21 -1
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +55 -0
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +122 -0
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +2 -0
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +41 -0
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +52 -0
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +232 -0
  313. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +65 -0
  314. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +225 -0
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +27 -0
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +143 -0
  317. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +37 -0
  318. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +205 -0
  319. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +40 -0
  320. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +174 -0
  321. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +7 -0
  322. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +43 -0
  323. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +52 -0
  324. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +260 -0
  325. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +44 -0
  326. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +98 -0
  327. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  328. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -3
  329. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +14 -7
  330. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +42 -0
  331. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +226 -0
  332. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +31 -0
  333. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +392 -0
  334. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
  335. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +243 -0
  336. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +54 -0
  337. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
  338. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +20 -0
  339. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +310 -0
  340. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +27 -0
  341. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +177 -0
  342. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +11 -0
  343. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +33 -0
  344. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
  345. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
  346. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
  347. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
  348. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
  349. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
  350. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
  351. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +13 -0
  352. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +22 -0
  353. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +42 -0
  354. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +102 -0
  355. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
  356. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +27 -0
  357. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
  358. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +29 -0
  359. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
  360. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
  361. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +28 -0
  362. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +15 -0
  363. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +55 -0
  364. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  365. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +3 -0
  366. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +31 -9
  367. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  368. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +4 -4
  369. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +177 -0
  370. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +518 -0
  371. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +42 -0
  372. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
  373. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +9 -0
  374. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
  375. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
  376. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +297 -0
  377. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +2961 -0
  378. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +29 -0
  379. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +63 -0
  380. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +14 -14
  381. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  382. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  383. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  384. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  385. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +2 -2
  386. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +17 -0
  387. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +118 -0
  388. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +22 -0
  389. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +44 -0
  390. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +58 -0
  391. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +223 -0
  392. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +20 -0
  393. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +81 -0
  394. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +63 -0
  395. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +349 -0
  396. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +75 -0
  397. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +192 -0
  398. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +89 -0
  399. package/vscode/src/vs/workbench/services/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +226 -9
  400. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +0 -30
  401. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +0 -119
  402. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +0 -552
  403. package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.d.ts +0 -83
@@ -1,5 +1,6 @@
1
1
 
2
2
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
3
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
3
4
 
4
5
  var MarketplaceReferenceKind;
5
6
  (function(MarketplaceReferenceKind) {
@@ -7,22 +8,102 @@ var MarketplaceReferenceKind;
7
8
  MarketplaceReferenceKind["GitUri"] = "gitUri";
8
9
  MarketplaceReferenceKind["LocalFileUri"] = "localFileUri";
9
10
  })(MarketplaceReferenceKind || (MarketplaceReferenceKind = {}));
11
+ const _githubShorthandRe = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:#.+)?$/;
12
+ function extraKnownMarketplacesToConfigDict(entries) {
13
+ if (!entries?.length) {
14
+ return undefined;
15
+ }
16
+ const obj = {};
17
+ for (const entry of entries) {
18
+ if (typeof entry === "string") {
19
+ obj[entry] = entry;
20
+ } else {
21
+ const s = entry.source;
22
+ const base = s.source === "github" ? s.repo : s.url;
23
+ obj[entry.name] = s.ref ? `${base}#${s.ref}` : base;
24
+ }
25
+ }
26
+ return obj;
27
+ }
28
+ function readConfiguredMarketplaces(configurationService) {
29
+ const userValues = configurationService.getValue(ChatConfiguration.PluginMarketplaces) ?? [];
30
+ const extraObj = configurationService.getValue(ChatConfiguration.ExtraMarketplaces) ?? {};
31
+ const extraValues = ( Object.entries(extraObj).map(([name, src]) => {
32
+ const isGithubShorthand = _githubShorthandRe.test(src);
33
+ return isGithubShorthand ? {
34
+ name,
35
+ source: {
36
+ source: "github",
37
+ repo: src
38
+ }
39
+ } : {
40
+ name,
41
+ source: {
42
+ source: "git",
43
+ url: src
44
+ }
45
+ };
46
+ }));
47
+ return {
48
+ userValues,
49
+ extraValues,
50
+ effectiveValues: [...userValues, ...extraValues]
51
+ };
52
+ }
10
53
  function parseMarketplaceReferences(values) {
11
54
  const byCanonicalId = ( new Map());
12
55
  for (const value of values) {
13
- if (typeof value !== "string") {
14
- continue;
15
- }
16
- const parsed = parseMarketplaceReference(value);
17
- if (!parsed) {
18
- continue;
56
+ let parsed;
57
+ if (typeof value === "string") {
58
+ parsed = parseMarketplaceReference(value);
59
+ } else if (value && typeof value === "object") {
60
+ parsed = parseMarketplaceObjectEntry(value);
19
61
  }
20
- if (!( byCanonicalId.has(parsed.canonicalId))) {
62
+ if (parsed && !( byCanonicalId.has(parsed.canonicalId))) {
21
63
  byCanonicalId.set(parsed.canonicalId, parsed);
22
64
  }
23
65
  }
24
66
  return [...( byCanonicalId.values())];
25
67
  }
68
+ function parseMarketplaceObjectEntry(entry) {
69
+ let sourceType;
70
+ let repo;
71
+ let url;
72
+ let ref;
73
+ if (entry.source && typeof entry.source === "object") {
74
+ const nested = entry.source;
75
+ sourceType = nested.source;
76
+ repo = nested.repo;
77
+ url = nested.url;
78
+ ref = nested.ref;
79
+ } else {
80
+ sourceType = entry.source;
81
+ repo = entry.repo;
82
+ url = entry.url;
83
+ ref = entry.ref;
84
+ }
85
+ let parsed;
86
+ if (sourceType === "github" && typeof repo === "string") {
87
+ parsed = parseMarketplaceReference(appendMarketplaceRef(repo, ref));
88
+ } else if (sourceType === "git" && typeof url === "string") {
89
+ parsed = parseMarketplaceReference(appendMarketplaceRef(url, ref));
90
+ }
91
+ if (parsed && typeof entry.name === "string" && entry.name.length > 0) {
92
+ parsed = {
93
+ ...parsed,
94
+ displayLabel: entry.name
95
+ };
96
+ }
97
+ return parsed;
98
+ }
99
+ function appendMarketplaceRef(value, ref) {
100
+ if (!ref) {
101
+ return value;
102
+ }
103
+ const fragmentIndex = value.indexOf("#");
104
+ const base = fragmentIndex === -1 ? value : value.slice(0, fragmentIndex);
105
+ return `${base}#${ref}`;
106
+ }
26
107
  function deduplicateMarketplaceReferences(primary, secondary) {
27
108
  const byCanonicalId = ( new Map());
28
109
  for (const ref of primary) {
@@ -48,17 +129,19 @@ function parseMarketplaceReference(value) {
48
129
  if (scpReference) {
49
130
  return scpReference;
50
131
  }
51
- const shorthandMatch = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(rawValue);
132
+ const shorthandMatch = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)(?:#(.+))?$/.exec(rawValue);
52
133
  if (shorthandMatch) {
53
134
  const owner = shorthandMatch[1];
54
135
  const repo = shorthandMatch[2];
136
+ const ref = shorthandMatch[3];
55
137
  return {
56
138
  rawValue,
57
- displayLabel: `${owner}/${repo}`,
139
+ displayLabel: rawValue,
58
140
  cloneUrl: `https://github.com/${owner}/${repo}.git`,
59
- canonicalId: getGitHubCanonicalId(owner, repo),
60
- cacheSegments: ["github.com", owner, repo],
141
+ canonicalId: getGitHubCanonicalId(owner, repo, ref),
142
+ cacheSegments: ["github.com", owner, repo, ...getRefCacheSegments(ref)],
61
143
  kind: MarketplaceReferenceKind.GitHubShorthand,
144
+ ref,
62
145
  githubRepo: `${owner}/${repo}`
63
146
  };
64
147
  }
@@ -73,6 +156,9 @@ function parseUriMarketplaceReference(rawValue) {
73
156
  }
74
157
  const scheme = uri.scheme.toLowerCase();
75
158
  if (scheme === "file" && /^file:\/\//i.test(rawValue)) {
159
+ if (uri.fragment) {
160
+ return undefined;
161
+ }
76
162
  const localRepositoryUri = URI.file(uri.fsPath);
77
163
  return {
78
164
  rawValue,
@@ -90,61 +176,84 @@ function parseUriMarketplaceReference(rawValue) {
90
176
  if (!uri.authority) {
91
177
  return undefined;
92
178
  }
93
- const normalizedPath = normalizeGitRepoPath(uri.path);
94
- if (!normalizedPath) {
95
- return undefined;
179
+ const ref = uri.fragment || undefined;
180
+ const cloneUri = uri.fragment ? uri.with({
181
+ fragment: ""
182
+ }) : uri;
183
+ const sanitizedAuthority = sanitizePathSegment(uri.authority.toLowerCase());
184
+ const trimmedPath = uri.path.replace(/\/+/g, "/").replace(/\/+$/g, "").replace(/^\/+/, "");
185
+ if (!trimmedPath) {
186
+ return {
187
+ rawValue,
188
+ displayLabel: rawValue,
189
+ cloneUrl: ( cloneUri.toString()),
190
+ canonicalId: appendRefSuffix(`git:${uri.authority.toLowerCase()}/`, ref),
191
+ cacheSegments: [sanitizedAuthority, ...getRefCacheSegments(ref)],
192
+ kind: MarketplaceReferenceKind.GitUri,
193
+ ref
194
+ };
96
195
  }
97
196
  const gitSuffix = ".git";
98
- const sanitizedAuthority = sanitizePathSegment(uri.authority.toLowerCase());
99
- const pathHasGitSuffix = normalizedPath.toLowerCase().endsWith(gitSuffix);
100
- const pathWithoutGit = pathHasGitSuffix ? normalizedPath.slice(1, normalizedPath.length - gitSuffix.length) : normalizedPath.slice(1);
197
+ const pathHasGitSuffix = trimmedPath.toLowerCase().endsWith(gitSuffix);
198
+ const pathWithoutGit = pathHasGitSuffix ? trimmedPath.slice(0, trimmedPath.length - gitSuffix.length) : trimmedPath;
101
199
  const pathSegments = ( pathWithoutGit.split("/").map(sanitizePathSegment));
102
- const canonicalPath = pathHasGitSuffix ? normalizedPath.slice(1).toLowerCase() : `${normalizedPath.slice(1).toLowerCase()}${gitSuffix}`;
200
+ const canonicalPath = pathHasGitSuffix ? trimmedPath.toLowerCase() : `${trimmedPath.toLowerCase()}${gitSuffix}`;
103
201
  const githubRepo = extractGitHubRepo(uri.authority, pathWithoutGit);
202
+ let canonicalId;
203
+ if (githubRepo) {
204
+ const [owner, repo] = githubRepo.split("/");
205
+ canonicalId = getGitHubCanonicalId(owner, repo, ref);
206
+ } else {
207
+ canonicalId = appendRefSuffix(`git:${uri.authority.toLowerCase()}/${canonicalPath}`, ref);
208
+ }
104
209
  return {
105
210
  rawValue,
106
211
  displayLabel: rawValue,
107
- cloneUrl: rawValue,
108
- canonicalId: `git:${uri.authority.toLowerCase()}/${canonicalPath}`,
109
- cacheSegments: [sanitizedAuthority, ...pathSegments],
212
+ cloneUrl: ( cloneUri.toString()),
213
+ canonicalId,
214
+ cacheSegments: [sanitizedAuthority, ...pathSegments, ...getRefCacheSegments(ref)],
110
215
  kind: MarketplaceReferenceKind.GitUri,
216
+ ref,
111
217
  githubRepo
112
218
  };
113
219
  }
114
220
  function parseScpMarketplaceReference(rawValue) {
115
- const match = /^([^@\s]+)@([^:\s]+):(.+\.git)$/i.exec(rawValue);
221
+ const match = /^([^@\s]+)@([^:\s]+):(.+?\.git)(?:#(.+))?$/i.exec(rawValue);
116
222
  if (!match) {
117
223
  return undefined;
118
224
  }
119
225
  const gitSuffix = ".git";
120
226
  const authority = match[2];
121
227
  const pathWithGit = match[3].replace(/^\/+/, "");
228
+ const ref = match[4];
122
229
  if (!pathWithGit.toLowerCase().endsWith(gitSuffix)) {
123
230
  return undefined;
124
231
  }
125
232
  const pathWithoutGit = pathWithGit.slice(0, -gitSuffix.length);
126
233
  const pathSegments = ( pathWithoutGit.split("/").map(sanitizePathSegment));
127
234
  const githubRepo = extractGitHubRepo(authority, pathWithoutGit);
235
+ let canonicalId;
236
+ if (githubRepo) {
237
+ const [owner, repo] = githubRepo.split("/");
238
+ canonicalId = getGitHubCanonicalId(owner, repo, ref);
239
+ } else {
240
+ canonicalId = appendRefSuffix(`git:${authority.toLowerCase()}/${pathWithGit.toLowerCase()}`, ref);
241
+ }
128
242
  return {
129
243
  rawValue,
130
244
  displayLabel: rawValue,
131
- cloneUrl: rawValue,
132
- canonicalId: `git:${authority.toLowerCase()}/${pathWithGit.toLowerCase()}`,
133
- cacheSegments: [sanitizePathSegment(authority.toLowerCase()), ...pathSegments],
245
+ cloneUrl: `${match[1]}@${authority}:${pathWithGit}`,
246
+ canonicalId,
247
+ cacheSegments: [
248
+ sanitizePathSegment(authority.toLowerCase()),
249
+ ...pathSegments,
250
+ ...getRefCacheSegments(ref)
251
+ ],
134
252
  kind: MarketplaceReferenceKind.GitUri,
253
+ ref,
135
254
  githubRepo
136
255
  };
137
256
  }
138
- function normalizeGitRepoPath(path) {
139
- const gitSuffix = ".git";
140
- const trimmed = path.replace(/\/+/g, "/").replace(/\/+$/g, "");
141
- const withLeadingSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
142
- const pathWithoutGit = withLeadingSlash.toLowerCase().endsWith(gitSuffix) ? withLeadingSlash.slice(1, withLeadingSlash.length - gitSuffix.length) : withLeadingSlash.slice(1);
143
- if (!pathWithoutGit || !pathWithoutGit.includes("/")) {
144
- return undefined;
145
- }
146
- return withLeadingSlash;
147
- }
148
257
  function extractGitHubRepo(authority, pathWithoutGit) {
149
258
  if (authority.toLowerCase() !== "github.com") {
150
259
  return undefined;
@@ -155,11 +264,17 @@ function extractGitHubRepo(authority, pathWithoutGit) {
155
264
  }
156
265
  return undefined;
157
266
  }
158
- function getGitHubCanonicalId(owner, repo) {
159
- return `github:${owner.toLowerCase()}/${repo.toLowerCase()}`;
267
+ function getGitHubCanonicalId(owner, repo, ref) {
268
+ return appendRefSuffix(`github:${owner.toLowerCase()}/${repo.toLowerCase()}`, ref);
269
+ }
270
+ function appendRefSuffix(canonicalId, ref) {
271
+ return ref ? `${canonicalId}#${encodeURIComponent(ref)}` : canonicalId;
272
+ }
273
+ function getRefCacheSegments(ref) {
274
+ return ref ? [`ref_${encodeURIComponent(ref)}`] : [];
160
275
  }
161
276
  function sanitizePathSegment(value) {
162
277
  return value.replace(/[\\/:*?"<>|]/g, "_");
163
278
  }
164
279
 
165
- export { MarketplaceReferenceKind, deduplicateMarketplaceReferences, parseMarketplaceReference, parseMarketplaceReferences };
280
+ export { MarketplaceReferenceKind, deduplicateMarketplaceReferences, extraKnownMarketplacesToConfigDict, parseMarketplaceObjectEntry, parseMarketplaceReference, parseMarketplaceReferences, readConfiguredMarketplaces };
@@ -9,13 +9,14 @@ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/fi
9
9
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
10
10
  import { IRequestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service";
11
11
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
12
+ import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
12
13
  import { IAgentPluginRepositoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service";
13
14
  import { IWorkspacePluginSettingsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.service";
14
15
  import { IWorkspaceTrustManagementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service";
15
16
  import { type IMarketplaceReference } from "./marketplaceReference.js";
16
17
  import { IPluginMarketplaceService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.service";
17
- export { deduplicateMarketplaceReferences, MarketplaceReferenceKind, parseMarketplaceReference, parseMarketplaceReferences } from "./marketplaceReference.js";
18
- export type { IMarketplaceReference } from "./marketplaceReference.js";
18
+ export { deduplicateMarketplaceReferences, extraKnownMarketplacesToConfigDict, MarketplaceReferenceKind, parseMarketplaceReference, parseMarketplaceReferences, readConfiguredMarketplaces } from "./marketplaceReference.js";
19
+ export type { IConfiguredMarketplaces, IMarketplaceReference } from "./marketplaceReference.js";
19
20
  export declare enum MarketplaceType {
20
21
  Copilot = "copilot",
21
22
  Claude = "claude",
@@ -46,6 +47,8 @@ export interface IGitUrlPluginSource {
46
47
  readonly url: string;
47
48
  readonly ref?: string;
48
49
  readonly sha?: string;
50
+ /** Subdirectory within the repository where the plugin lives (for `git-subdir` sources). */
51
+ readonly path?: string;
49
52
  }
50
53
  export interface INpmPluginSource {
51
54
  readonly kind: PluginSourceKind.Npm;
@@ -101,6 +104,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
101
104
  private readonly _storageService;
102
105
  private readonly _workspacePluginSettingsService;
103
106
  private readonly _workspaceTrustService;
107
+ private readonly _extensionsWorkbenchService;
104
108
  readonly _serviceBrand: undefined;
105
109
  private readonly _gitHubMarketplaceCache;
106
110
  private readonly _installedPluginsStore;
@@ -114,7 +118,7 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
114
118
  readonly hasUpdatesAvailable: IObservable<boolean>;
115
119
  readonly lastFetchedPlugins: IObservable<readonly IMarketplacePlugin[]>;
116
120
  readonly recommendedPlugins: IObservable<ReadonlySet<string>>;
117
- constructor(_configurationService: IConfigurationService, _requestService: IRequestService, environmentService: IEnvironmentService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService);
121
+ constructor(_configurationService: IConfigurationService, _requestService: IRequestService, environmentService: IEnvironmentService, _fileService: IFileService, _pluginRepositoryService: IAgentPluginRepositoryService, _logService: ILogService, _storageService: IStorageService, _workspacePluginSettingsService: IWorkspacePluginSettingsService, _workspaceTrustService: IWorkspaceTrustManagementService, _extensionsWorkbenchService: IExtensionsWorkbenchService);
118
122
  dispose(): void;
119
123
  clearUpdatesAvailable(): void;
120
124
  fetchMarketplacePlugins(token: CancellationToken): Promise<IMarketplacePlugin[]>;
@@ -127,16 +131,17 @@ export declare class PluginMarketplaceService extends Disposable implements IPlu
127
131
  removeInstalledPlugin(pluginUri: URI): void;
128
132
  isMarketplaceTrusted(ref: IMarketplaceReference): boolean;
129
133
  /**
130
- * For each plugin URI that has no cached metadata, walk up the directory
131
- * tree from the plugin towards the agent-plugins root looking for a
132
- * marketplace definition file. When found, read the marketplace plugins
133
- * and match by source path to populate {@link _pluginMetadata}.
134
+ * Hydrates installed entries from marketplace metadata. Entries written
135
+ * by current builds include the marketplace plugin name, which is enough
136
+ * to re-read the full plugin descriptor from the marketplace source. Old
137
+ * entries without a name fall back to matching by install URI.
134
138
  *
135
139
  * After hydration completes the installed-plugins store is "touched" so
136
140
  * that the derived {@link installedPlugins} observable re-evaluates with
137
141
  * the newly available metadata.
138
142
  */
139
143
  private _hydratePluginMetadata;
144
+ private _readPluginsForInstalledEntry;
140
145
  /**
141
146
  * Shared logic to parse a marketplace.json into {@link IMarketplacePlugin}
142
147
  * objects. Used by both fetch and hydration paths.
@@ -1,6 +1,7 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { runWhenGlobalIdle } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
4
5
  import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
6
  import { parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
6
7
  import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
@@ -19,12 +20,14 @@ import { IRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform
19
20
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
20
21
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
21
22
  import { AutoUpdateConfigurationKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
23
+ import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
22
24
  import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
23
25
  import { IAgentPluginRepositoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.service';
24
26
  import { FileBackedInstalledPluginsStore } from './fileBackedInstalledPluginsStore.js';
25
27
  import { IWorkspacePluginSettingsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.service';
26
28
  import { IWorkspaceTrustManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service';
27
- import { parseMarketplaceReferences, deduplicateMarketplaceReferences, parseMarketplaceReference, MarketplaceReferenceKind } from './marketplaceReference.js';
29
+ import { readConfiguredMarketplaces, parseMarketplaceReferences, deduplicateMarketplaceReferences, parseMarketplaceReference, parseMarketplaceObjectEntry, MarketplaceReferenceKind } from './marketplaceReference.js';
30
+ export { extraKnownMarketplacesToConfigDict } from './marketplaceReference.js';
28
31
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
29
32
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
30
33
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
@@ -120,7 +123,8 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
120
123
  _logService,
121
124
  _storageService,
122
125
  _workspacePluginSettingsService,
123
- _workspaceTrustService
126
+ _workspaceTrustService,
127
+ _extensionsWorkbenchService
124
128
  ) {
125
129
  super();
126
130
  this._configurationService = _configurationService;
@@ -131,6 +135,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
131
135
  this._storageService = _storageService;
132
136
  this._workspacePluginSettingsService = _workspacePluginSettingsService;
133
137
  this._workspaceTrustService = _workspaceTrustService;
138
+ this._extensionsWorkbenchService = _extensionsWorkbenchService;
134
139
  this._gitHubMarketplaceCache = ( new Lazy(() => this._loadPersistedGitHubMarketplaceCache()));
135
140
  this._pluginMetadata = ( new Map());
136
141
  this._hasUpdatesAvailable = observableValue("hasUpdatesAvailable", false);
@@ -186,7 +191,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
186
191
  });
187
192
  this.onDidChangeMarketplaces = Event.any(Event.filter(
188
193
  _configurationService.onDidChangeConfiguration,
189
- e => e.affectsConfiguration(ChatConfiguration.PluginsEnabled) || e.affectsConfiguration(ChatConfiguration.PluginMarketplaces)
194
+ e => e.affectsConfiguration(ChatConfiguration.PluginsEnabled) || e.affectsConfiguration(ChatConfiguration.PluginMarketplaces) || e.affectsConfiguration(ChatConfiguration.ExtraMarketplaces)
190
195
  ), Event.fromObservableLight(this._workspacePluginSettingsService.extraMarketplaces), ( Event.map(this._workspaceTrustService.onDidChangeTrust, () => {})));
191
196
  this._register(runWhenGlobalIdle(() => {
192
197
  this._scheduleUpdateCheck();
@@ -217,8 +222,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
217
222
  if (!this._configurationService.getValue(ChatConfiguration.PluginsEnabled)) {
218
223
  return [];
219
224
  }
220
- const configuredRefs = this._configurationService.getValue(ChatConfiguration.PluginMarketplaces) ?? [];
221
- const configRefs = parseMarketplaceReferences(configuredRefs);
225
+ const {
226
+ effectiveValues
227
+ } = readConfiguredMarketplaces(this._configurationService);
228
+ const configRefs = parseMarketplaceReferences(effectiveValues);
222
229
  let allRefs;
223
230
  if (this._workspaceTrustService.isWorkspaceTrusted()) {
224
231
  const workspaceEntries = this._workspacePluginSettingsService.extraMarketplaces.get();
@@ -226,8 +233,9 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
226
233
  } else {
227
234
  allRefs = configRefs;
228
235
  }
229
- for (const value of configuredRefs) {
230
- if (typeof value !== "string" || !parseMarketplaceReference(value)) {
236
+ for (const value of effectiveValues) {
237
+ const parsed = typeof value === "string" ? parseMarketplaceReference(value) : (value && typeof value === "object" ? parseMarketplaceObjectEntry(value) : undefined);
238
+ if (!parsed) {
231
239
  this._logService.debug(
232
240
  `[PluginMarketplaceService] Ignoring invalid marketplace entry: ${String(value)}`
233
241
  );
@@ -261,7 +269,8 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
261
269
  if (token.isCancellationRequested) {
262
270
  return undefined;
263
271
  }
264
- const url = `https://raw.githubusercontent.com/${repo}/main/${defPath}`;
272
+ const ref = encodeURIComponent(reference.ref ?? "main");
273
+ const url = `https://raw.githubusercontent.com/${repo}/${ref}/${defPath}`;
265
274
  try {
266
275
  const context = await this._requestService.request({
267
276
  type: "GET",
@@ -372,18 +381,17 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
372
381
  }
373
382
  addInstalledPlugin(pluginUri, plugin) {
374
383
  this._pluginMetadata.set(( pluginUri.toString()), plugin);
384
+ const entry = {
385
+ pluginUri,
386
+ marketplace: plugin.marketplaceReference.rawValue,
387
+ name: plugin.name
388
+ };
375
389
  const current = this._installedPluginsStore.get();
376
390
  const existing = current.find(e => isEqual(e.pluginUri, pluginUri));
377
391
  if (existing) {
378
- this._installedPluginsStore.set(( current.map(c => c === existing ? {
379
- pluginUri,
380
- marketplace: plugin.marketplaceReference.rawValue
381
- } : c)), undefined);
392
+ this._installedPluginsStore.set(( current.map(c => c === existing ? entry : c)), undefined);
382
393
  } else {
383
- this._installedPluginsStore.set([...current, {
384
- pluginUri,
385
- marketplace: plugin.marketplaceReference.rawValue
386
- }], undefined);
394
+ this._installedPluginsStore.set([...current, entry], undefined);
387
395
  }
388
396
  }
389
397
  removeInstalledPlugin(pluginUri) {
@@ -392,6 +400,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
392
400
  this._installedPluginsStore.set(current.filter(e => !isEqual(e.pluginUri, pluginUri)), undefined);
393
401
  }
394
402
  isMarketplaceTrusted(ref) {
403
+ if (this._configurationService.getValue(ChatConfiguration.StrictMarketplaces)) {
404
+ const refs = parseMarketplaceReferences(readConfiguredMarketplaces(this._configurationService).extraValues);
405
+ return ( refs.some(r => r.canonicalId === ref.canonicalId));
406
+ }
395
407
  return this._trustedMarketplacesStore.get().includes(ref.canonicalId);
396
408
  }
397
409
  async _hydratePluginMetadata(entries) {
@@ -409,18 +421,10 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
409
421
  continue;
410
422
  }
411
423
  try {
412
- const repoDir = this._pluginRepositoryService.getRepositoryUri(reference);
413
- let plugins = await this._readPluginsFromDirectory(repoDir, reference);
414
- if (plugins.length === 0) {
415
- const single = await this.readSinglePluginManifest(repoDir, reference);
416
- if (single) {
417
- plugins = [single];
418
- }
419
- }
420
- const match = plugins.find(p => {
421
- const installUri = this._pluginRepositoryService.getPluginInstallUri(p);
422
- return isEqual(installUri, entry.pluginUri);
423
- });
424
+ const plugins = await this._readPluginsForInstalledEntry(reference, CancellationToken.None);
425
+ const match = plugins.find(
426
+ p => entry.name ? p.name === entry.name : isEqual(this._pluginRepositoryService.getPluginInstallUri(p), entry.pluginUri)
427
+ );
424
428
  if (match) {
425
429
  this._pluginMetadata.set(key, match);
426
430
  hydrated++;
@@ -434,6 +438,20 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
434
438
  this._installedPluginsStore.set([...current], undefined);
435
439
  }
436
440
  }
441
+ async _readPluginsForInstalledEntry(reference, token) {
442
+ if (reference.kind === MarketplaceReferenceKind.GitHubShorthand && reference.githubRepo) {
443
+ return this._fetchFromGitHubRepo(reference, reference.githubRepo, token);
444
+ }
445
+ const repoDir = this._pluginRepositoryService.getRepositoryUri(reference);
446
+ let plugins = await this._readPluginsFromDirectory(repoDir, reference, token);
447
+ if (plugins.length === 0) {
448
+ const single = await this.readSinglePluginManifest(repoDir, reference);
449
+ if (single) {
450
+ plugins = [single];
451
+ }
452
+ }
453
+ return plugins;
454
+ }
437
455
  _parseMarketplacePlugins(json, reference, marketplaceType, repoDir) {
438
456
  if (!json.plugins || !Array.isArray(json.plugins)) {
439
457
  return [];
@@ -468,7 +486,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
468
486
  }
469
487
  }
470
488
  _isAutoUpdateEnabled() {
471
- return this._configurationService.getValue(AutoUpdateConfigurationKey);
489
+ return this._extensionsWorkbenchService.getAutoUpdateValue() === true;
472
490
  }
473
491
  _scheduleUpdateCheck() {
474
492
  if (this._updateCheckTimer !== undefined) {
@@ -615,7 +633,7 @@ let PluginMarketplaceService = class PluginMarketplaceService extends Disposable
615
633
  return [];
616
634
  }
617
635
  };
618
- PluginMarketplaceService = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IRequestService)), ( __param(2, IEnvironmentService)), ( __param(3, IFileService)), ( __param(4, IAgentPluginRepositoryService)), ( __param(5, ILogService)), ( __param(6, IStorageService)), ( __param(7, IWorkspacePluginSettingsService)), ( __param(8, IWorkspaceTrustManagementService))], PluginMarketplaceService));
636
+ PluginMarketplaceService = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IRequestService)), ( __param(2, IEnvironmentService)), ( __param(3, IFileService)), ( __param(4, IAgentPluginRepositoryService)), ( __param(5, ILogService)), ( __param(6, IStorageService)), ( __param(7, IWorkspacePluginSettingsService)), ( __param(8, IWorkspaceTrustManagementService)), ( __param(9, IExtensionsWorkbenchService))], PluginMarketplaceService));
619
637
  function normalizeMarketplacePath(value) {
620
638
  let normalized = value.trim().replace(/\\/g, "/");
621
639
  normalized = normalized.replace(/^\.?\/+/, "").replace(/\/+$/g, "");
@@ -701,14 +719,15 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
701
719
  };
702
720
  }
703
721
  case "url":
722
+ case "git-subdir":
704
723
  {
705
724
  if (typeof rawSource.url !== "string" || !rawSource.url) {
706
725
  logContext.logService.warn(
707
- `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source is missing required 'url' field`
726
+ `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source is missing required 'url' field`
708
727
  );
709
728
  return undefined;
710
729
  }
711
- if (!rawSource.url.toLowerCase().endsWith(".git")) {
730
+ if (rawSource.source === "url" && !rawSource.url.toLowerCase().endsWith(".git")) {
712
731
  logContext.logService.warn(
713
732
  `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source must end with '.git'`
714
733
  );
@@ -716,13 +735,26 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
716
735
  }
717
736
  if (!isOptionalString(rawSource.ref)) {
718
737
  logContext.logService.warn(
719
- `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source 'ref' must be a string when provided`
738
+ `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source 'ref' must be a string when provided`
720
739
  );
721
740
  return undefined;
722
741
  }
723
742
  if (!isOptionalGitSha(rawSource.sha)) {
724
743
  logContext.logService.warn(
725
- `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source 'sha' must be a full 40-character commit hash when provided`
744
+ `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': ${rawSource.source} source 'sha' must be a full 40-character commit hash when provided`
745
+ );
746
+ return undefined;
747
+ }
748
+ if (rawSource.source === "git-subdir") {
749
+ if (typeof rawSource.path !== "string" || !rawSource.path) {
750
+ logContext.logService.warn(
751
+ `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': git-subdir source is missing required 'path' field`
752
+ );
753
+ return undefined;
754
+ }
755
+ } else if (!isOptionalString(rawSource.path)) {
756
+ logContext.logService.warn(
757
+ `${logContext.logPrefix} Skipping plugin '${logContext.pluginName}': url source 'path' must be a string when provided`
726
758
  );
727
759
  return undefined;
728
760
  }
@@ -730,7 +762,8 @@ function parsePluginSource(rawSource, pluginRoot, logContext) {
730
762
  kind: PluginSourceKind.GitUrl,
731
763
  url: rawSource.url,
732
764
  ref: rawSource.ref,
733
- sha: rawSource.sha
765
+ sha: rawSource.sha,
766
+ path: rawSource.path
734
767
  };
735
768
  }
736
769
  case "npm":
@@ -799,7 +832,7 @@ function hasSourceChanged(installed, marketplace) {
799
832
  case PluginSourceKind.GitHub:
800
833
  return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha || installed.path !== marketplace.path;
801
834
  case PluginSourceKind.GitUrl:
802
- return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha;
835
+ return installed.ref !== marketplace.ref || installed.sha !== marketplace.sha || installed.path !== marketplace.path;
803
836
  case PluginSourceKind.Npm:
804
837
  return installed.version !== marketplace.version;
805
838
  case PluginSourceKind.Pip:
@@ -818,4 +851,4 @@ function getMarketplaceReadmeFileUri(repoDir, source) {
818
851
  return normalizedSource ? joinPath(repoDir, normalizedSource, "README.md") : joinPath(repoDir, "README.md");
819
852
  }
820
853
 
821
- export { MarketplaceReferenceKind, MarketplaceType, PluginMarketplaceService, PluginSourceKind, deduplicateMarketplaceReferences, hasSourceChanged, parseMarketplaceReference, parseMarketplaceReferences, parsePluginSource };
854
+ export { MarketplaceReferenceKind, MarketplaceType, PluginMarketplaceService, PluginSourceKind, deduplicateMarketplaceReferences, hasSourceChanged, parseMarketplaceReference, parseMarketplaceReferences, parsePluginSource, readConfiguredMarketplaces };
@@ -9,7 +9,7 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
9
9
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
10
10
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
11
11
  import { CLAUDE_CONFIG_FOLDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
12
- import { parseMarketplaceReference } from './marketplaceReference.js';
12
+ import { parseMarketplaceObjectEntry } from './marketplaceReference.js';
13
13
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
14
14
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
15
15
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
@@ -18,28 +18,6 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
18
18
  const SETTINGS_FILENAME = "settings.json";
19
19
  const SETTINGS_LOCAL_FILENAME = "settings.local.json";
20
20
  const COPILOT_CONFIG_FOLDER = ".github/copilot";
21
- function marketplaceEntryToReference(entry) {
22
- let sourceType;
23
- let repo;
24
- let url;
25
- if (typeof entry.source === "object" && entry.source !== null) {
26
- const nested = entry.source;
27
- sourceType = nested.source;
28
- repo = nested.repo;
29
- url = nested.url;
30
- } else {
31
- sourceType = entry.source;
32
- repo = entry.repo;
33
- url = entry.url;
34
- }
35
- if (sourceType === "github" && typeof repo === "string") {
36
- return parseMarketplaceReference(repo);
37
- }
38
- if (sourceType === "git" && typeof url === "string") {
39
- return parseMarketplaceReference(url);
40
- }
41
- return undefined;
42
- }
43
21
  function parseEnabledPlugins(json) {
44
22
  const result = ( new Map());
45
23
  if (!json || typeof json !== "object" || Array.isArray(json)) {
@@ -64,17 +42,17 @@ function parseExtraMarketplaces(json, logPrefix, logService) {
64
42
  logService.debug(`${logPrefix} Ignoring non-object extraKnownMarketplaces entry: ${name}`);
65
43
  continue;
66
44
  }
67
- const reference = marketplaceEntryToReference(value);
45
+ const reference = parseMarketplaceObjectEntry({
46
+ ...value,
47
+ name
48
+ });
68
49
  if (!reference) {
69
50
  logService.debug(`${logPrefix} Could not parse marketplace reference for: ${name}`);
70
51
  continue;
71
52
  }
72
53
  entries.push({
73
54
  name,
74
- reference: {
75
- ...reference,
76
- displayLabel: name
77
- }
55
+ reference
78
56
  });
79
57
  }
80
58
  return entries;