@iaforged/context-code 1.0.63 → 1.0.65

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 (2000) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +633 -9
  3. package/context-bootstrap.js +28 -28
  4. package/package.json +169 -170
  5. package/dist/src/QueryEngine.js +0 -928
  6. package/dist/src/Task.js +0 -49
  7. package/dist/src/Tool.js +0 -56
  8. package/dist/src/assistant/AssistantSessionChooser.js +0 -16
  9. package/dist/src/assistant/index.js +0 -16
  10. package/dist/src/assistant/sessionDiscovery.js +0 -16
  11. package/dist/src/assistant/sessionHistory.js +0 -47
  12. package/dist/src/bootstrap/state.js +0 -1165
  13. package/dist/src/bridge/bridgeApi.js +0 -304
  14. package/dist/src/bridge/bridgeConfig.js +0 -39
  15. package/dist/src/bridge/bridgeDebug.js +0 -73
  16. package/dist/src/bridge/bridgeEnabled.js +0 -187
  17. package/dist/src/bridge/bridgeMain.js +0 -2289
  18. package/dist/src/bridge/bridgeMessaging.js +0 -353
  19. package/dist/src/bridge/bridgePermissionCallbacks.js +0 -10
  20. package/dist/src/bridge/bridgePointer.js +0 -175
  21. package/dist/src/bridge/bridgeStatusUtil.js +0 -105
  22. package/dist/src/bridge/bridgeUI.js +0 -412
  23. package/dist/src/bridge/capacityWake.js +0 -35
  24. package/dist/src/bridge/codeSessionApi.js +0 -111
  25. package/dist/src/bridge/createSession.js +0 -273
  26. package/dist/src/bridge/debugUtils.js +0 -115
  27. package/dist/src/bridge/envLessBridgeConfig.js +0 -121
  28. package/dist/src/bridge/flushGate.js +0 -65
  29. package/dist/src/bridge/inboundAttachments.js +0 -152
  30. package/dist/src/bridge/inboundMessages.js +0 -63
  31. package/dist/src/bridge/initReplBridge.js +0 -428
  32. package/dist/src/bridge/jwtUtils.js +0 -185
  33. package/dist/src/bridge/pollConfig.js +0 -85
  34. package/dist/src/bridge/pollConfigDefaults.js +0 -62
  35. package/dist/src/bridge/remoteBridgeCore.js +0 -712
  36. package/dist/src/bridge/replBridge.js +0 -1720
  37. package/dist/src/bridge/replBridgeHandle.js +0 -30
  38. package/dist/src/bridge/replBridgeTransport.js +0 -236
  39. package/dist/src/bridge/sessionIdCompat.js +0 -56
  40. package/dist/src/bridge/sessionRunner.js +0 -421
  41. package/dist/src/bridge/trustedDevice.js +0 -172
  42. package/dist/src/bridge/types.js +0 -9
  43. package/dist/src/bridge/workSecret.js +0 -99
  44. package/dist/src/buddy/CompanionSprite.js +0 -349
  45. package/dist/src/buddy/companion.js +0 -107
  46. package/dist/src/buddy/prompt.js +0 -33
  47. package/dist/src/buddy/sprites.js +0 -488
  48. package/dist/src/buddy/types.js +0 -90
  49. package/dist/src/buddy/useBuddyNotification.js +0 -90
  50. package/dist/src/cli/bg.js +0 -16
  51. package/dist/src/cli/exit.js +0 -30
  52. package/dist/src/cli/handlers/agents.js +0 -55
  53. package/dist/src/cli/handlers/ant.js +0 -16
  54. package/dist/src/cli/handlers/auth.js +0 -312
  55. package/dist/src/cli/handlers/autoMode.js +0 -128
  56. package/dist/src/cli/handlers/mcp.js +0 -334
  57. package/dist/src/cli/handlers/plugins.js +0 -634
  58. package/dist/src/cli/handlers/projects_bridge.js +0 -40
  59. package/dist/src/cli/handlers/templateJobs.js +0 -16
  60. package/dist/src/cli/handlers/util.js +0 -76
  61. package/dist/src/cli/ndjsonSafeStringify.js +0 -27
  62. package/dist/src/cli/print.js +0 -4225
  63. package/dist/src/cli/remoteIO.js +0 -208
  64. package/dist/src/cli/rollback.js +0 -16
  65. package/dist/src/cli/structuredIO.js +0 -644
  66. package/dist/src/cli/transports/HybridTransport.js +0 -233
  67. package/dist/src/cli/transports/SSETransport.js +0 -538
  68. package/dist/src/cli/transports/SerialBatchEventUploader.js +0 -224
  69. package/dist/src/cli/transports/Transport.js +0 -1
  70. package/dist/src/cli/transports/WebSocketTransport.js +0 -613
  71. package/dist/src/cli/transports/WorkerStateUploader.js +0 -88
  72. package/dist/src/cli/transports/ccrClient.js +0 -711
  73. package/dist/src/cli/transports/transportUtils.js +0 -39
  74. package/dist/src/cli/up.js +0 -16
  75. package/dist/src/cli/update.js +0 -315
  76. package/dist/src/commands/add-dir/add-dir.js +0 -121
  77. package/dist/src/commands/add-dir/index.js +0 -8
  78. package/dist/src/commands/add-dir/validation.js +0 -76
  79. package/dist/src/commands/advisor.js +0 -88
  80. package/dist/src/commands/agents/agents.js +0 -9
  81. package/dist/src/commands/agents/index.js +0 -7
  82. package/dist/src/commands/ant-trace/index.js +0 -1
  83. package/dist/src/commands/assistant/assistant.js +0 -16
  84. package/dist/src/commands/autofix-pr/index.js +0 -1
  85. package/dist/src/commands/backfill-sessions/index.js +0 -1
  86. package/dist/src/commands/branch/branch.js +0 -205
  87. package/dist/src/commands/branch/index.js +0 -11
  88. package/dist/src/commands/break-cache/index.js +0 -1
  89. package/dist/src/commands/bridge/bridge.js +0 -512
  90. package/dist/src/commands/bridge/index.js +0 -22
  91. package/dist/src/commands/bridge-kick.js +0 -179
  92. package/dist/src/commands/brief.js +0 -94
  93. package/dist/src/commands/btw/btw.js +0 -234
  94. package/dist/src/commands/btw/index.js +0 -9
  95. package/dist/src/commands/bughunter/index.js +0 -1
  96. package/dist/src/commands/chrome/chrome.js +0 -291
  97. package/dist/src/commands/chrome/index.js +0 -10
  98. package/dist/src/commands/clear/caches.js +0 -116
  99. package/dist/src/commands/clear/clear.js +0 -5
  100. package/dist/src/commands/clear/conversation.js +0 -191
  101. package/dist/src/commands/clear/index.js +0 -9
  102. package/dist/src/commands/color/color.js +0 -58
  103. package/dist/src/commands/color/index.js +0 -9
  104. package/dist/src/commands/commit-push-pr.js +0 -137
  105. package/dist/src/commands/commit.js +0 -80
  106. package/dist/src/commands/compact/compact.js +0 -196
  107. package/dist/src/commands/compact/index.js +0 -11
  108. package/dist/src/commands/config/config.js +0 -5
  109. package/dist/src/commands/config/index.js +0 -8
  110. package/dist/src/commands/context/context-noninteractive.js +0 -221
  111. package/dist/src/commands/context/context.js +0 -46
  112. package/dist/src/commands/context/index.js +0 -21
  113. package/dist/src/commands/copy/copy.js +0 -366
  114. package/dist/src/commands/copy/index.js +0 -7
  115. package/dist/src/commands/cost/cost.js +0 -21
  116. package/dist/src/commands/cost/index.js +0 -16
  117. package/dist/src/commands/createMovedToPluginCommand.js +0 -33
  118. package/dist/src/commands/ctx_viz/index.js +0 -1
  119. package/dist/src/commands/debug-tool-call/index.js +0 -1
  120. package/dist/src/commands/desktop/desktop.js +0 -5
  121. package/dist/src/commands/desktop/index.js +0 -22
  122. package/dist/src/commands/diff/diff.js +0 -5
  123. package/dist/src/commands/diff/index.js +0 -6
  124. package/dist/src/commands/doctor/doctor.js +0 -5
  125. package/dist/src/commands/doctor/index.js +0 -9
  126. package/dist/src/commands/effort/effort.js +0 -166
  127. package/dist/src/commands/effort/index.js +0 -11
  128. package/dist/src/commands/env/index.js +0 -1
  129. package/dist/src/commands/exit/exit.js +0 -31
  130. package/dist/src/commands/exit/index.js +0 -9
  131. package/dist/src/commands/export/export.js +0 -86
  132. package/dist/src/commands/export/index.js +0 -8
  133. package/dist/src/commands/extra-usage/extra-usage-core.js +0 -99
  134. package/dist/src/commands/extra-usage/extra-usage-noninteractive.js +0 -13
  135. package/dist/src/commands/extra-usage/extra-usage.js +0 -14
  136. package/dist/src/commands/extra-usage/index.js +0 -27
  137. package/dist/src/commands/fast/fast.js +0 -275
  138. package/dist/src/commands/fast/index.js +0 -20
  139. package/dist/src/commands/feedback/feedback.js +0 -10
  140. package/dist/src/commands/feedback/index.js +0 -20
  141. package/dist/src/commands/files/files.js +0 -11
  142. package/dist/src/commands/files/index.js +0 -9
  143. package/dist/src/commands/good-claude/index.js +0 -1
  144. package/dist/src/commands/heapdump/heapdump.js +0 -14
  145. package/dist/src/commands/heapdump/index.js +0 -9
  146. package/dist/src/commands/help/help.js +0 -5
  147. package/dist/src/commands/help/index.js +0 -7
  148. package/dist/src/commands/hooks/hooks.js +0 -11
  149. package/dist/src/commands/hooks/index.js +0 -8
  150. package/dist/src/commands/ide/ide.js +0 -615
  151. package/dist/src/commands/ide/index.js +0 -8
  152. package/dist/src/commands/init-verifiers.js +0 -258
  153. package/dist/src/commands/init.js +0 -249
  154. package/dist/src/commands/insights.js +0 -2555
  155. package/dist/src/commands/install-github-app/ApiKeyStep.js +0 -230
  156. package/dist/src/commands/install-github-app/CheckExistingSecretStep.js +0 -194
  157. package/dist/src/commands/install-github-app/CheckGitHubStep.js +0 -15
  158. package/dist/src/commands/install-github-app/ChooseRepoStep.js +0 -211
  159. package/dist/src/commands/install-github-app/CreatingStep.js +0 -52
  160. package/dist/src/commands/install-github-app/ErrorStep.js +0 -83
  161. package/dist/src/commands/install-github-app/ExistingWorkflowStep.js +0 -104
  162. package/dist/src/commands/install-github-app/InstallAppStep.js +0 -96
  163. package/dist/src/commands/install-github-app/OAuthFlowStep.js +0 -190
  164. package/dist/src/commands/install-github-app/SuccessStep.js +0 -93
  165. package/dist/src/commands/install-github-app/WarningsStep.js +0 -70
  166. package/dist/src/commands/install-github-app/index.js +0 -10
  167. package/dist/src/commands/install-github-app/install-github-app.js +0 -593
  168. package/dist/src/commands/install-github-app/setupGitHubActions.js +0 -227
  169. package/dist/src/commands/install-slack-app/index.js +0 -9
  170. package/dist/src/commands/install-slack-app/install-slack-app.js +0 -25
  171. package/dist/src/commands/install.js +0 -118
  172. package/dist/src/commands/issue/index.js +0 -1
  173. package/dist/src/commands/keybindings/index.js +0 -10
  174. package/dist/src/commands/keybindings/keybindings.js +0 -47
  175. package/dist/src/commands/login/index.js +0 -11
  176. package/dist/src/commands/login/login.js +0 -99
  177. package/dist/src/commands/login-openai/index.js +0 -7
  178. package/dist/src/commands/login-openai/login-openai.js +0 -54
  179. package/dist/src/commands/logout/index.js +0 -8
  180. package/dist/src/commands/logout/logout.js +0 -72
  181. package/dist/src/commands/mcp/addCommand.js +0 -183
  182. package/dist/src/commands/mcp/index.js +0 -9
  183. package/dist/src/commands/mcp/mcp.js +0 -78
  184. package/dist/src/commands/mcp/xaaIdpCommand.js +0 -193
  185. package/dist/src/commands/memory/index.js +0 -7
  186. package/dist/src/commands/memory/memory.js +0 -71
  187. package/dist/src/commands/mobile/index.js +0 -8
  188. package/dist/src/commands/mobile/mobile.js +0 -278
  189. package/dist/src/commands/mock-limits/index.js +0 -1
  190. package/dist/src/commands/model/index.js +0 -14
  191. package/dist/src/commands/model/model.js +0 -297
  192. package/dist/src/commands/oauth-refresh/index.js +0 -1
  193. package/dist/src/commands/onboarding/index.js +0 -1
  194. package/dist/src/commands/output-style/index.js +0 -8
  195. package/dist/src/commands/output-style/output-style.js +0 -6
  196. package/dist/src/commands/passes/index.js +0 -17
  197. package/dist/src/commands/passes/passes.js +0 -22
  198. package/dist/src/commands/perf-issue/index.js +0 -1
  199. package/dist/src/commands/permissions/index.js +0 -8
  200. package/dist/src/commands/permissions/permissions.js +0 -8
  201. package/dist/src/commands/plan/index.js +0 -8
  202. package/dist/src/commands/plan/plan.js +0 -115
  203. package/dist/src/commands/plugin/AddMarketplace.js +0 -95
  204. package/dist/src/commands/plugin/BrowseMarketplace.js +0 -576
  205. package/dist/src/commands/plugin/DiscoverPlugins.js +0 -613
  206. package/dist/src/commands/plugin/ManageMarketplaces.js +0 -582
  207. package/dist/src/commands/plugin/ManagePlugins.js +0 -1783
  208. package/dist/src/commands/plugin/PluginErrors.js +0 -124
  209. package/dist/src/commands/plugin/PluginOptionsDialog.js +0 -367
  210. package/dist/src/commands/plugin/PluginOptionsFlow.js +0 -97
  211. package/dist/src/commands/plugin/PluginSettings.js +0 -1042
  212. package/dist/src/commands/plugin/PluginTrustWarning.js +0 -34
  213. package/dist/src/commands/plugin/UnifiedInstalledCell.js +0 -615
  214. package/dist/src/commands/plugin/ValidatePlugin.js +0 -95
  215. package/dist/src/commands/plugin/index.js +0 -10
  216. package/dist/src/commands/plugin/parseArgs.js +0 -71
  217. package/dist/src/commands/plugin/plugin.js +0 -5
  218. package/dist/src/commands/plugin/pluginDetailsHelpers.js +0 -89
  219. package/dist/src/commands/plugin/usePagination.js +0 -89
  220. package/dist/src/commands/pr_comments/index.js +0 -49
  221. package/dist/src/commands/privacy-settings/index.js +0 -11
  222. package/dist/src/commands/privacy-settings/privacy-settings.js +0 -54
  223. package/dist/src/commands/profile/index.js +0 -9
  224. package/dist/src/commands/profile/profile.js +0 -426
  225. package/dist/src/commands/provider/index.js +0 -8
  226. package/dist/src/commands/provider/provider.js +0 -349
  227. package/dist/src/commands/rate-limit-options/index.js +0 -15
  228. package/dist/src/commands/rate-limit-options/rate-limit-options.js +0 -213
  229. package/dist/src/commands/release-notes/index.js +0 -8
  230. package/dist/src/commands/release-notes/release-notes.js +0 -38
  231. package/dist/src/commands/reload-plugins/index.js +0 -11
  232. package/dist/src/commands/reload-plugins/reload-plugins.js +0 -52
  233. package/dist/src/commands/remote-env/index.js +0 -12
  234. package/dist/src/commands/remote-env/remote-env.js +0 -5
  235. package/dist/src/commands/remote-setup/api.js +0 -155
  236. package/dist/src/commands/remote-setup/index.js +0 -15
  237. package/dist/src/commands/remote-setup/remote-setup.js +0 -149
  238. package/dist/src/commands/rename/generateSessionName.js +0 -58
  239. package/dist/src/commands/rename/index.js +0 -9
  240. package/dist/src/commands/rename/rename.js +0 -52
  241. package/dist/src/commands/reset-limits/index.js +0 -4
  242. package/dist/src/commands/resume/index.js +0 -9
  243. package/dist/src/commands/resume/resume.js +0 -239
  244. package/dist/src/commands/review/UltrareviewOverageDialog.js +0 -97
  245. package/dist/src/commands/review/reviewRemote.js +0 -259
  246. package/dist/src/commands/review/ultrareviewCommand.js +0 -57
  247. package/dist/src/commands/review/ultrareviewEnabled.js +0 -10
  248. package/dist/src/commands/review.js +0 -50
  249. package/dist/src/commands/rewind/index.js +0 -10
  250. package/dist/src/commands/rewind/rewind.js +0 -7
  251. package/dist/src/commands/sandbox-toggle/index.js +0 -41
  252. package/dist/src/commands/sandbox-toggle/sandbox-toggle.js +0 -72
  253. package/dist/src/commands/security-review.js +0 -231
  254. package/dist/src/commands/session/index.js +0 -13
  255. package/dist/src/commands/session/session.js +0 -142
  256. package/dist/src/commands/share/index.js +0 -1
  257. package/dist/src/commands/skills/index.js +0 -7
  258. package/dist/src/commands/skills/skills.js +0 -5
  259. package/dist/src/commands/stats/index.js +0 -7
  260. package/dist/src/commands/stats/stats.js +0 -5
  261. package/dist/src/commands/status/index.js +0 -8
  262. package/dist/src/commands/status/status.js +0 -5
  263. package/dist/src/commands/statusline.js +0 -22
  264. package/dist/src/commands/stickers/index.js +0 -8
  265. package/dist/src/commands/stickers/stickers.js +0 -14
  266. package/dist/src/commands/summary/index.js +0 -1
  267. package/dist/src/commands/tag/index.js +0 -9
  268. package/dist/src/commands/tag/tag.js +0 -215
  269. package/dist/src/commands/tasks/index.js +0 -8
  270. package/dist/src/commands/tasks/tasks.js +0 -5
  271. package/dist/src/commands/telegram/index.js +0 -9
  272. package/dist/src/commands/telegram/telegram.js +0 -118
  273. package/dist/src/commands/teleport/index.js +0 -1
  274. package/dist/src/commands/terminalSetup/index.js +0 -18
  275. package/dist/src/commands/terminalSetup/terminalSetup.js +0 -491
  276. package/dist/src/commands/theme/index.js +0 -7
  277. package/dist/src/commands/theme/theme.js +0 -50
  278. package/dist/src/commands/thinkback/index.js +0 -9
  279. package/dist/src/commands/thinkback/thinkback.js +0 -527
  280. package/dist/src/commands/thinkback-play/index.js +0 -13
  281. package/dist/src/commands/thinkback-play/thinkback-play.js +0 -34
  282. package/dist/src/commands/ultraplan.js +0 -418
  283. package/dist/src/commands/upgrade/index.js +0 -12
  284. package/dist/src/commands/upgrade/upgrade.js +0 -37
  285. package/dist/src/commands/usage/index.js +0 -7
  286. package/dist/src/commands/usage/usage.js +0 -5
  287. package/dist/src/commands/version.js +0 -18
  288. package/dist/src/commands/vim/index.js +0 -8
  289. package/dist/src/commands/vim/vim.js +0 -25
  290. package/dist/src/commands/voice/index.js +0 -14
  291. package/dist/src/commands/voice/voice.js +0 -130
  292. package/dist/src/commands/whatsapp/index.js +0 -9
  293. package/dist/src/commands/whatsapp/whatsapp.js +0 -326
  294. package/dist/src/commands.js +0 -646
  295. package/dist/src/components/AgentProgressLine.js +0 -111
  296. package/dist/src/components/App.js +0 -45
  297. package/dist/src/components/ApproveApiKey.js +0 -124
  298. package/dist/src/components/AutoModeOptInDialog.js +0 -140
  299. package/dist/src/components/AutoUpdater.js +0 -157
  300. package/dist/src/components/AutoUpdaterWrapper.js +0 -78
  301. package/dist/src/components/AwsAuthStatusBox.js +0 -88
  302. package/dist/src/components/BaseTextInput.js +0 -105
  303. package/dist/src/components/BashModeProgress.js +0 -48
  304. package/dist/src/components/BridgeDialog.js +0 -414
  305. package/dist/src/components/BypassPermissionsModeDialog.js +0 -87
  306. package/dist/src/components/ChannelDowngradeDialog.js +0 -100
  307. package/dist/src/components/ClaudeCodeHint/PluginHintMenu.js +0 -37
  308. package/dist/src/components/ClaudeInChromeOnboarding.js +0 -126
  309. package/dist/src/components/ClaudeMdExternalIncludesDialog.js +0 -137
  310. package/dist/src/components/ClickableImageRef.js +0 -64
  311. package/dist/src/components/CompactSummary.js +0 -119
  312. package/dist/src/components/ConfigurableShortcutHint.js +0 -34
  313. package/dist/src/components/ConsoleOAuthFlow.js +0 -756
  314. package/dist/src/components/ContextSuggestions.js +0 -43
  315. package/dist/src/components/ContextVisualization.js +0 -483
  316. package/dist/src/components/CoordinatorAgentStatus.js +0 -261
  317. package/dist/src/components/CostThresholdDialog.js +0 -48
  318. package/dist/src/components/CtrlOToExpand.js +0 -50
  319. package/dist/src/components/CustomSelect/SelectMulti.js +0 -149
  320. package/dist/src/components/CustomSelect/index.js +0 -2
  321. package/dist/src/components/CustomSelect/option-map.js +0 -32
  322. package/dist/src/components/CustomSelect/select-input-option.js +0 -426
  323. package/dist/src/components/CustomSelect/select-option.js +0 -23
  324. package/dist/src/components/CustomSelect/select.js +0 -518
  325. package/dist/src/components/CustomSelect/use-multi-select-state.js +0 -214
  326. package/dist/src/components/CustomSelect/use-select-input.js +0 -170
  327. package/dist/src/components/CustomSelect/use-select-navigation.js +0 -366
  328. package/dist/src/components/CustomSelect/use-select-state.js +0 -22
  329. package/dist/src/components/DesktopHandoff.js +0 -195
  330. package/dist/src/components/DesktopUpsell/DesktopUpsellStartup.js +0 -173
  331. package/dist/src/components/DevBar.js +0 -50
  332. package/dist/src/components/DevChannelsDialog.js +0 -103
  333. package/dist/src/components/DiagnosticsDisplay.js +0 -91
  334. package/dist/src/components/EffortCallout.js +0 -264
  335. package/dist/src/components/EffortIndicator.js +0 -29
  336. package/dist/src/components/ExitFlow.js +0 -40
  337. package/dist/src/components/ExportDialog.js +0 -101
  338. package/dist/src/components/FallbackToolUseErrorMessage.js +0 -115
  339. package/dist/src/components/FallbackToolUseRejectedMessage.js +0 -16
  340. package/dist/src/components/FastIcon.js +0 -42
  341. package/dist/src/components/Feedback.js +0 -439
  342. package/dist/src/components/FeedbackSurvey/FeedbackSurvey.js +0 -150
  343. package/dist/src/components/FeedbackSurvey/FeedbackSurveyView.js +0 -103
  344. package/dist/src/components/FeedbackSurvey/TranscriptSharePrompt.js +0 -83
  345. package/dist/src/components/FeedbackSurvey/submitTranscriptShare.js +0 -75
  346. package/dist/src/components/FeedbackSurvey/useDebouncedDigitInput.js +0 -51
  347. package/dist/src/components/FeedbackSurvey/useFeedbackSurvey.js +0 -258
  348. package/dist/src/components/FeedbackSurvey/useMemorySurvey.js +0 -191
  349. package/dist/src/components/FeedbackSurvey/usePostCompactSurvey.js +0 -202
  350. package/dist/src/components/FeedbackSurvey/useSurveyState.js +0 -80
  351. package/dist/src/components/FileEditToolDiff.js +0 -166
  352. package/dist/src/components/FileEditToolUpdatedMessage.js +0 -111
  353. package/dist/src/components/FileEditToolUseRejectedMessage.js +0 -157
  354. package/dist/src/components/FilePathLink.js +0 -34
  355. package/dist/src/components/FullscreenLayout.js +0 -578
  356. package/dist/src/components/GlobalSearchDialog.js +0 -339
  357. package/dist/src/components/HelpV2/Commands.js +0 -65
  358. package/dist/src/components/HelpV2/General.js +0 -24
  359. package/dist/src/components/HelpV2/HelpV2.js +0 -186
  360. package/dist/src/components/HighlightedCode/Fallback.js +0 -193
  361. package/dist/src/components/HighlightedCode.js +0 -184
  362. package/dist/src/components/HistorySearchDialog.js +0 -92
  363. package/dist/src/components/IdeAutoConnectDialog.js +0 -153
  364. package/dist/src/components/IdeOnboardingDialog.js +0 -174
  365. package/dist/src/components/IdeStatusIndicator.js +0 -49
  366. package/dist/src/components/IdleReturnDialog.js +0 -116
  367. package/dist/src/components/InterruptedByUser.js +0 -15
  368. package/dist/src/components/InvalidConfigDialog.js +0 -134
  369. package/dist/src/components/InvalidSettingsDialog.js +0 -84
  370. package/dist/src/components/KeybindingWarnings.js +0 -54
  371. package/dist/src/components/LanguagePicker.js +0 -84
  372. package/dist/src/components/LogSelector.js +0 -1579
  373. package/dist/src/components/LogoV2/AnimatedAsterisk.js +0 -42
  374. package/dist/src/components/LogoV2/AnimatedClawd.js +0 -111
  375. package/dist/src/components/LogoV2/ChannelsNotice.js +0 -258
  376. package/dist/src/components/LogoV2/Clawd.js +0 -5
  377. package/dist/src/components/LogoV2/CondensedLogo.js +0 -159
  378. package/dist/src/components/LogoV2/EmergencyTip.js +0 -47
  379. package/dist/src/components/LogoV2/Feed.js +0 -84
  380. package/dist/src/components/LogoV2/FeedColumn.js +0 -55
  381. package/dist/src/components/LogoV2/GuestPassesUpsell.js +0 -71
  382. package/dist/src/components/LogoV2/LogoV2.js +0 -565
  383. package/dist/src/components/LogoV2/Opus1mMergeNotice.js +0 -56
  384. package/dist/src/components/LogoV2/OverageCreditUpsell.js +0 -160
  385. package/dist/src/components/LogoV2/VoiceModeNotice.js +0 -70
  386. package/dist/src/components/LogoV2/WelcomeV2.js +0 -461
  387. package/dist/src/components/LogoV2/feedConfigs.js +0 -78
  388. package/dist/src/components/LspRecommendation/LspRecommendationMenu.js +0 -46
  389. package/dist/src/components/MCPServerApprovalDialog.js +0 -113
  390. package/dist/src/components/MCPServerDesktopImportDialog.js +0 -206
  391. package/dist/src/components/MCPServerDialogCopy.js +0 -15
  392. package/dist/src/components/MCPServerMultiselectDialog.js +0 -133
  393. package/dist/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.js +0 -149
  394. package/dist/src/components/ManagedSettingsSecurityDialog/utils.js +0 -105
  395. package/dist/src/components/Markdown.js +0 -217
  396. package/dist/src/components/MarkdownTable.js +0 -279
  397. package/dist/src/components/MemoryUsageIndicator.js +0 -27
  398. package/dist/src/components/Message.js +0 -566
  399. package/dist/src/components/MessageModel.js +0 -36
  400. package/dist/src/components/MessageResponse.js +0 -73
  401. package/dist/src/components/MessageRow.js +0 -346
  402. package/dist/src/components/MessageSelector.js +0 -743
  403. package/dist/src/components/MessageTimestamp.js +0 -57
  404. package/dist/src/components/Messages.js +0 -637
  405. package/dist/src/components/ModelPicker.js +0 -484
  406. package/dist/src/components/NativeAutoUpdater.js +0 -153
  407. package/dist/src/components/NotebookEditToolUseRejectedMessage.js +0 -83
  408. package/dist/src/components/OffscreenFreeze.js +0 -35
  409. package/dist/src/components/Onboarding.js +0 -174
  410. package/dist/src/components/OutputStylePicker.js +0 -102
  411. package/dist/src/components/PackageManagerAutoUpdater.js +0 -100
  412. package/dist/src/components/Passes/Passes.js +0 -113
  413. package/dist/src/components/PrBadge.js +0 -90
  414. package/dist/src/components/PressEnterToContinue.js +0 -15
  415. package/dist/src/components/PromptInput/HistorySearchInput.js +0 -44
  416. package/dist/src/components/PromptInput/IssueFlagBanner.js +0 -8
  417. package/dist/src/components/PromptInput/Notifications.js +0 -221
  418. package/dist/src/components/PromptInput/PromptInput.js +0 -1998
  419. package/dist/src/components/PromptInput/PromptInputFooter.js +0 -84
  420. package/dist/src/components/PromptInput/PromptInputFooterLeftSide.js +0 -409
  421. package/dist/src/components/PromptInput/PromptInputFooterSuggestions.js +0 -280
  422. package/dist/src/components/PromptInput/PromptInputHelpMenu.js +0 -379
  423. package/dist/src/components/PromptInput/PromptInputModeIndicator.js +0 -72
  424. package/dist/src/components/PromptInput/PromptInputQueuedCommands.js +0 -105
  425. package/dist/src/components/PromptInput/PromptInputStashNotice.js +0 -20
  426. package/dist/src/components/PromptInput/SandboxPromptFooterHint.js +0 -65
  427. package/dist/src/components/PromptInput/ShimmeredInput.js +0 -132
  428. package/dist/src/components/PromptInput/VoiceIndicator.js +0 -136
  429. package/dist/src/components/PromptInput/inputModes.js +0 -24
  430. package/dist/src/components/PromptInput/inputPaste.js +0 -62
  431. package/dist/src/components/PromptInput/useMaybeTruncateInput.js +0 -33
  432. package/dist/src/components/PromptInput/usePromptInputPlaceholder.js +0 -55
  433. package/dist/src/components/PromptInput/useShowFastIconHint.js +0 -23
  434. package/dist/src/components/PromptInput/useSwarmBanner.js +0 -112
  435. package/dist/src/components/PromptInput/utils.js +0 -50
  436. package/dist/src/components/QuickOpenDialog.js +0 -243
  437. package/dist/src/components/RemoteCallout.js +0 -53
  438. package/dist/src/components/RemoteEnvironmentDialog.js +0 -345
  439. package/dist/src/components/ResumeTask.js +0 -173
  440. package/dist/src/components/SandboxViolationExpandedView.js +0 -102
  441. package/dist/src/components/ScrollKeybindingHandler.js +0 -982
  442. package/dist/src/components/SearchBox.js +0 -55
  443. package/dist/src/components/SentryErrorBoundary.js +0 -16
  444. package/dist/src/components/SessionBackgroundHint.js +0 -104
  445. package/dist/src/components/SessionPreview.js +0 -200
  446. package/dist/src/components/Settings/Config.js +0 -1628
  447. package/dist/src/components/Settings/Settings.js +0 -129
  448. package/dist/src/components/Settings/Status.js +0 -230
  449. package/dist/src/components/Settings/Usage.js +0 -341
  450. package/dist/src/components/ShowInIDEPrompt.js +0 -151
  451. package/dist/src/components/SkillImprovementSurvey.js +0 -130
  452. package/dist/src/components/Spinner/FlashingChar.js +0 -51
  453. package/dist/src/components/Spinner/GlimmerMessage.js +0 -328
  454. package/dist/src/components/Spinner/ShimmerChar.js +0 -22
  455. package/dist/src/components/Spinner/SpinnerAnimationRow.js +0 -169
  456. package/dist/src/components/Spinner/SpinnerGlyph.js +0 -69
  457. package/dist/src/components/Spinner/TeammateSpinnerLine.js +0 -170
  458. package/dist/src/components/Spinner/TeammateSpinnerTree.js +0 -268
  459. package/dist/src/components/Spinner/index.js +0 -11
  460. package/dist/src/components/Spinner/teammateSelectHint.js +0 -1
  461. package/dist/src/components/Spinner/useShimmerAnimation.js +0 -22
  462. package/dist/src/components/Spinner/useStalledAnimation.js +0 -63
  463. package/dist/src/components/Spinner/utils.js +0 -77
  464. package/dist/src/components/Spinner.js +0 -470
  465. package/dist/src/components/Stats.js +0 -1000
  466. package/dist/src/components/StatusLine.js +0 -285
  467. package/dist/src/components/StatusNotices.js +0 -50
  468. package/dist/src/components/StructuredDiff/Fallback.js +0 -335
  469. package/dist/src/components/StructuredDiff/colorDiff.js +0 -26
  470. package/dist/src/components/StructuredDiff.js +0 -152
  471. package/dist/src/components/StructuredDiffList.js +0 -8
  472. package/dist/src/components/TagTabs.js +0 -100
  473. package/dist/src/components/TaskListV2.js +0 -333
  474. package/dist/src/components/TeammateViewHeader.js +0 -87
  475. package/dist/src/components/TeleportError.js +0 -191
  476. package/dist/src/components/TeleportProgress.js +0 -130
  477. package/dist/src/components/TeleportRepoMismatchDialog.js +0 -98
  478. package/dist/src/components/TeleportResumeWrapper.js +0 -158
  479. package/dist/src/components/TeleportStash.js +0 -82
  480. package/dist/src/components/TextInput.js +0 -108
  481. package/dist/src/components/ThemePicker.js +0 -330
  482. package/dist/src/components/ThinkingToggle.js +0 -153
  483. package/dist/src/components/TokenWarning.js +0 -172
  484. package/dist/src/components/ToolUseLoader.js +0 -34
  485. package/dist/src/components/TrustDialog/TrustDialog.js +0 -301
  486. package/dist/src/components/TrustDialog/utils.js +0 -199
  487. package/dist/src/components/ValidationErrorsList.js +0 -146
  488. package/dist/src/components/VimTextInput.js +0 -136
  489. package/dist/src/components/VirtualMessageList.js +0 -892
  490. package/dist/src/components/WorkflowMultiselectDialog.js +0 -118
  491. package/dist/src/components/WorktreeExitDialog.js +0 -222
  492. package/dist/src/components/agents/AgentDetail.js +0 -226
  493. package/dist/src/components/agents/AgentEditor.js +0 -146
  494. package/dist/src/components/agents/AgentNavigationFooter.js +0 -21
  495. package/dist/src/components/agents/AgentsList.js +0 -436
  496. package/dist/src/components/agents/AgentsMenu.js +0 -848
  497. package/dist/src/components/agents/ColorPicker.js +0 -110
  498. package/dist/src/components/agents/ModelSelector.js +0 -62
  499. package/dist/src/components/agents/SnapshotUpdateDialog.js +0 -16
  500. package/dist/src/components/agents/ToolSelector.js +0 -557
  501. package/dist/src/components/agents/agentFileUtils.js +0 -179
  502. package/dist/src/components/agents/generateAgent.js +0 -161
  503. package/dist/src/components/agents/new-agent-creation/CreateAgentWizard.js +0 -88
  504. package/dist/src/components/agents/new-agent-creation/wizard-steps/ColorStep.js +0 -80
  505. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.js +0 -386
  506. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.js +0 -63
  507. package/dist/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.js +0 -126
  508. package/dist/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.js +0 -118
  509. package/dist/src/components/agents/new-agent-creation/wizard-steps/LocationStep.js +0 -79
  510. package/dist/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.js +0 -107
  511. package/dist/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +0 -79
  512. package/dist/src/components/agents/new-agent-creation/wizard-steps/ModelStep.js +0 -48
  513. package/dist/src/components/agents/new-agent-creation/wizard-steps/PromptStep.js +0 -131
  514. package/dist/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.js +0 -51
  515. package/dist/src/components/agents/new-agent-creation/wizard-steps/TypeStep.js +0 -100
  516. package/dist/src/components/agents/types.js +0 -4
  517. package/dist/src/components/agents/utils.js +0 -14
  518. package/dist/src/components/agents/validateAgent.js +0 -79
  519. package/dist/src/components/design-system/Byline.js +0 -72
  520. package/dist/src/components/design-system/Dialog.js +0 -116
  521. package/dist/src/components/design-system/Divider.js +0 -109
  522. package/dist/src/components/design-system/FuzzyPicker.js +0 -187
  523. package/dist/src/components/design-system/KeyboardShortcutHint.js +0 -67
  524. package/dist/src/components/design-system/ListItem.js +0 -183
  525. package/dist/src/components/design-system/LoadingState.js +0 -68
  526. package/dist/src/components/design-system/Pane.js +0 -68
  527. package/dist/src/components/design-system/ProgressBar.js +0 -62
  528. package/dist/src/components/design-system/Ratchet.js +0 -71
  529. package/dist/src/components/design-system/StatusIcon.js +0 -69
  530. package/dist/src/components/design-system/Tabs.js +0 -269
  531. package/dist/src/components/design-system/ThemeProvider.js +0 -137
  532. package/dist/src/components/design-system/ThemedBox.js +0 -125
  533. package/dist/src/components/design-system/ThemedText.js +0 -60
  534. package/dist/src/components/design-system/color.js +0 -22
  535. package/dist/src/components/diff/DiffDetailView.js +0 -284
  536. package/dist/src/components/diff/DiffDialog.js +0 -387
  537. package/dist/src/components/diff/DiffFileList.js +0 -291
  538. package/dist/src/components/grove/Grove.js +0 -483
  539. package/dist/src/components/hooks/HooksConfigMenu.js +0 -570
  540. package/dist/src/components/hooks/PromptDialog.js +0 -81
  541. package/dist/src/components/hooks/SelectEventMode.js +0 -117
  542. package/dist/src/components/hooks/SelectHookMode.js +0 -93
  543. package/dist/src/components/hooks/SelectMatcherMode.js +0 -124
  544. package/dist/src/components/hooks/ViewHookMode.js +0 -197
  545. package/dist/src/components/mcp/CapabilitiesSection.js +0 -55
  546. package/dist/src/components/mcp/ElicitationDialog.js +0 -945
  547. package/dist/src/components/mcp/MCPAgentServerMenu.js +0 -95
  548. package/dist/src/components/mcp/MCPListPanel.js +0 -504
  549. package/dist/src/components/mcp/MCPReconnect.js +0 -168
  550. package/dist/src/components/mcp/MCPRemoteServerMenu.js +0 -460
  551. package/dist/src/components/mcp/MCPSettings.js +0 -414
  552. package/dist/src/components/mcp/MCPStdioServerMenu.js +0 -95
  553. package/dist/src/components/mcp/MCPToolDetailView.js +0 -219
  554. package/dist/src/components/mcp/MCPToolListView.js +0 -136
  555. package/dist/src/components/mcp/McpParsingWarnings.js +0 -211
  556. package/dist/src/components/mcp/index.js +0 -8
  557. package/dist/src/components/mcp/types.js +0 -3
  558. package/dist/src/components/mcp/utils/reconnectHelpers.js +0 -35
  559. package/dist/src/components/memory/MemoryFileSelector.js +0 -455
  560. package/dist/src/components/memory/MemoryUpdateNotification.js +0 -42
  561. package/dist/src/components/messageActions.js +0 -418
  562. package/dist/src/components/messages/AdvisorMessage.js +0 -151
  563. package/dist/src/components/messages/AssistantRedactedThinkingMessage.js +0 -27
  564. package/dist/src/components/messages/AssistantTextMessage.js +0 -274
  565. package/dist/src/components/messages/AssistantThinkingMessage.js +0 -69
  566. package/dist/src/components/messages/AssistantToolUseMessage.js +0 -323
  567. package/dist/src/components/messages/AttachmentMessage.js +0 -418
  568. package/dist/src/components/messages/CollapsedReadSearchContent.js +0 -362
  569. package/dist/src/components/messages/CompactBoundaryMessage.js +0 -18
  570. package/dist/src/components/messages/GroupedToolUseContent.js +0 -37
  571. package/dist/src/components/messages/HighlightedThinkingText.js +0 -164
  572. package/dist/src/components/messages/HookProgressMessage.js +0 -110
  573. package/dist/src/components/messages/PlanApprovalMessage.js +0 -212
  574. package/dist/src/components/messages/RateLimitMessage.js +0 -149
  575. package/dist/src/components/messages/ShutdownMessage.js +0 -123
  576. package/dist/src/components/messages/SystemAPIErrorMessage.js +0 -135
  577. package/dist/src/components/messages/SystemTextMessage.js +0 -843
  578. package/dist/src/components/messages/TaskAssignmentMessage.js +0 -71
  579. package/dist/src/components/messages/UserAgentNotificationMessage.js +0 -77
  580. package/dist/src/components/messages/UserBashInputMessage.js +0 -51
  581. package/dist/src/components/messages/UserBashOutputMessage.js +0 -54
  582. package/dist/src/components/messages/UserChannelMessage.js +0 -129
  583. package/dist/src/components/messages/UserCommandMessage.js +0 -106
  584. package/dist/src/components/messages/UserImageMessage.js +0 -53
  585. package/dist/src/components/messages/UserLocalCommandOutputMessage.js +0 -169
  586. package/dist/src/components/messages/UserMemoryInputMessage.js +0 -72
  587. package/dist/src/components/messages/UserPlanMessage.js +0 -37
  588. package/dist/src/components/messages/UserPromptMessage.js +0 -63
  589. package/dist/src/components/messages/UserResourceUpdateMessage.js +0 -101
  590. package/dist/src/components/messages/UserTeammateMessage.js +0 -156
  591. package/dist/src/components/messages/UserTextMessage.js +0 -271
  592. package/dist/src/components/messages/UserToolResultMessage/RejectedPlanMessage.js +0 -27
  593. package/dist/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.js +0 -16
  594. package/dist/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -16
  595. package/dist/src/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -91
  596. package/dist/src/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -73
  597. package/dist/src/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -83
  598. package/dist/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -58
  599. package/dist/src/components/messages/UserToolResultMessage/utils.js +0 -43
  600. package/dist/src/components/messages/nullRenderingAttachments.js +0 -58
  601. package/dist/src/components/messages/teamMemCollapsed.js +0 -142
  602. package/dist/src/components/messages/teamMemSaved.js +0 -17
  603. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +0 -654
  604. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.js +0 -219
  605. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +0 -227
  606. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.js +0 -174
  607. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.js +0 -444
  608. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.js +0 -136
  609. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.js +0 -100
  610. package/dist/src/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -404
  611. package/dist/src/components/permissions/BashPermissionRequest/bashToolUseOptions.js +0 -110
  612. package/dist/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +0 -448
  613. package/dist/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js +0 -125
  614. package/dist/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js +0 -650
  615. package/dist/src/components/permissions/FallbackPermissionRequest.js +0 -348
  616. package/dist/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -184
  617. package/dist/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +0 -108
  618. package/dist/src/components/permissions/FilePermissionDialog/ideDiffConfig.js +0 -13
  619. package/dist/src/components/permissions/FilePermissionDialog/permissionOptions.js +0 -136
  620. package/dist/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.js +0 -131
  621. package/dist/src/components/permissions/FilePermissionDialog/usePermissionHandler.js +0 -86
  622. package/dist/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -163
  623. package/dist/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -78
  624. package/dist/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -112
  625. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.js +0 -163
  626. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.js +0 -217
  627. package/dist/src/components/permissions/PermissionDecisionDebugInfo.js +0 -466
  628. package/dist/src/components/permissions/PermissionDialog.js +0 -54
  629. package/dist/src/components/permissions/PermissionExplanation.js +0 -269
  630. package/dist/src/components/permissions/PermissionPrompt.js +0 -316
  631. package/dist/src/components/permissions/PermissionRequest.js +0 -160
  632. package/dist/src/components/permissions/PermissionRequestTitle.js +0 -57
  633. package/dist/src/components/permissions/PermissionRuleExplanation.js +0 -109
  634. package/dist/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.js +0 -178
  635. package/dist/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.js +0 -73
  636. package/dist/src/components/permissions/SandboxPermissionRequest.js +0 -161
  637. package/dist/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +0 -228
  638. package/dist/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +0 -384
  639. package/dist/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +0 -258
  640. package/dist/src/components/permissions/WorkerBadge.js +0 -43
  641. package/dist/src/components/permissions/WorkerPendingPermission.js +0 -106
  642. package/dist/src/components/permissions/hooks.js +0 -163
  643. package/dist/src/components/permissions/rules/AddPermissionRules.js +0 -170
  644. package/dist/src/components/permissions/rules/AddWorkspaceDirectory.js +0 -334
  645. package/dist/src/components/permissions/rules/PermissionRuleDescription.js +0 -77
  646. package/dist/src/components/permissions/rules/PermissionRuleInput.js +0 -135
  647. package/dist/src/components/permissions/rules/PermissionRuleList.js +0 -1189
  648. package/dist/src/components/permissions/rules/RecentDenialsTab.js +0 -204
  649. package/dist/src/components/permissions/rules/RemoveWorkspaceDirectory.js +0 -102
  650. package/dist/src/components/permissions/rules/WorkspaceTab.js +0 -132
  651. package/dist/src/components/permissions/shellPermissionHelpers.js +0 -111
  652. package/dist/src/components/permissions/useShellPermissionFeedback.js +0 -108
  653. package/dist/src/components/permissions/utils.js +0 -14
  654. package/dist/src/components/sandbox/SandboxConfigTab.js +0 -47
  655. package/dist/src/components/sandbox/SandboxDependenciesTab.js +0 -122
  656. package/dist/src/components/sandbox/SandboxDoctorSection.js +0 -46
  657. package/dist/src/components/sandbox/SandboxOverridesTab.js +0 -192
  658. package/dist/src/components/sandbox/SandboxSettings.js +0 -296
  659. package/dist/src/components/shell/ExpandShellOutputContext.js +0 -33
  660. package/dist/src/components/shell/OutputLine.js +0 -110
  661. package/dist/src/components/shell/ShellProgressMessage.js +0 -143
  662. package/dist/src/components/shell/ShellTimeDisplay.js +0 -71
  663. package/dist/src/components/skills/SkillsMenu.js +0 -238
  664. package/dist/src/components/tasks/AsyncAgentDetailDialog.js +0 -234
  665. package/dist/src/components/tasks/BackgroundTask.js +0 -363
  666. package/dist/src/components/tasks/BackgroundTaskStatus.js +0 -419
  667. package/dist/src/components/tasks/BackgroundTasksDialog.js +0 -496
  668. package/dist/src/components/tasks/DreamDetailDialog.js +0 -250
  669. package/dist/src/components/tasks/InProcessTeammateDetailDialog.js +0 -274
  670. package/dist/src/components/tasks/RemoteSessionDetailDialog.js +0 -868
  671. package/dist/src/components/tasks/RemoteSessionProgress.js +0 -249
  672. package/dist/src/components/tasks/ShellDetailDialog.js +0 -403
  673. package/dist/src/components/tasks/ShellProgress.js +0 -76
  674. package/dist/src/components/tasks/renderToolActivity.js +0 -28
  675. package/dist/src/components/tasks/taskStatusUtils.js +0 -94
  676. package/dist/src/components/teams/TeamStatus.js +0 -76
  677. package/dist/src/components/teams/TeamsDialog.js +0 -672
  678. package/dist/src/components/ui/OrderedList.js +0 -66
  679. package/dist/src/components/ui/OrderedListItem.js +0 -41
  680. package/dist/src/components/ui/TreeSelect.js +0 -300
  681. package/dist/src/components/wizard/WizardDialogLayout.js +0 -47
  682. package/dist/src/components/wizard/WizardNavigationFooter.js +0 -10
  683. package/dist/src/components/wizard/WizardProvider.js +0 -217
  684. package/dist/src/components/wizard/index.js +0 -4
  685. package/dist/src/components/wizard/useWizard.js +0 -9
  686. package/dist/src/constants/apiLimits.js +0 -81
  687. package/dist/src/constants/betas.js +0 -45
  688. package/dist/src/constants/common.js +0 -29
  689. package/dist/src/constants/cyberRiskInstruction.js +0 -24
  690. package/dist/src/constants/errorIds.js +0 -14
  691. package/dist/src/constants/figures.js +0 -38
  692. package/dist/src/constants/files.js +0 -150
  693. package/dist/src/constants/github-app.js +0 -139
  694. package/dist/src/constants/keys.js +0 -10
  695. package/dist/src/constants/messages.js +0 -1
  696. package/dist/src/constants/oauth.js +0 -221
  697. package/dist/src/constants/outputStyles.js +0 -162
  698. package/dist/src/constants/product.js +0 -56
  699. package/dist/src/constants/prompts.js +0 -752
  700. package/dist/src/constants/spinnerVerbs.js +0 -202
  701. package/dist/src/constants/system.js +0 -77
  702. package/dist/src/constants/systemPromptSections.js +0 -39
  703. package/dist/src/constants/toolLimits.js +0 -50
  704. package/dist/src/constants/tools.js +0 -103
  705. package/dist/src/constants/turnCompletionVerbs.js +0 -12
  706. package/dist/src/constants/xml.js +0 -73
  707. package/dist/src/context/QueuedMessageContext.js +0 -51
  708. package/dist/src/context/fpsMetrics.js +0 -22
  709. package/dist/src/context/mailbox.js +0 -35
  710. package/dist/src/context/modalContext.js +0 -34
  711. package/dist/src/context/notifications.js +0 -199
  712. package/dist/src/context/overlayContext.js +0 -149
  713. package/dist/src/context/promptOverlayContext.js +0 -118
  714. package/dist/src/context/stats.js +0 -207
  715. package/dist/src/context/voice.js +0 -74
  716. package/dist/src/context.js +0 -146
  717. package/dist/src/coordinator/coordinatorMode.js +0 -345
  718. package/dist/src/cost-tracker.js +0 -208
  719. package/dist/src/costHook.js +0 -17
  720. package/dist/src/daemon/main.js +0 -16
  721. package/dist/src/daemon/workerRegistry.js +0 -16
  722. package/dist/src/dialogLaunchers.js +0 -68
  723. package/dist/src/entrypoints/agentSdkTypes.js +0 -202
  724. package/dist/src/entrypoints/cli.js +0 -237
  725. package/dist/src/entrypoints/init.js +0 -265
  726. package/dist/src/entrypoints/mcp.js +0 -142
  727. package/dist/src/entrypoints/sandboxTypes.js +0 -112
  728. package/dist/src/entrypoints/sdk/controlSchemas.js +0 -452
  729. package/dist/src/entrypoints/sdk/controlTypes.js +0 -1
  730. package/dist/src/entrypoints/sdk/coreSchemas.js +0 -1331
  731. package/dist/src/entrypoints/sdk/coreTypes.generated.js +0 -1
  732. package/dist/src/entrypoints/sdk/coreTypes.js +0 -49
  733. package/dist/src/entrypoints/sdk/runtimeTypes.js +0 -1
  734. package/dist/src/entrypoints/sdk/toolTypes.js +0 -1
  735. package/dist/src/environment-runner/main.js +0 -16
  736. package/dist/src/history.js +0 -386
  737. package/dist/src/hooks/fileSuggestions.js +0 -635
  738. package/dist/src/hooks/notifs/useAutoModeUnavailableNotification.js +0 -47
  739. package/dist/src/hooks/notifs/useCanSwitchToExistingSubscription.js +0 -57
  740. package/dist/src/hooks/notifs/useDeprecationWarningNotification.js +0 -43
  741. package/dist/src/hooks/notifs/useFastModeNotification.js +0 -164
  742. package/dist/src/hooks/notifs/useIDEStatusIndicator.js +0 -174
  743. package/dist/src/hooks/notifs/useInstallMessages.js +0 -27
  744. package/dist/src/hooks/notifs/useLspInitializationNotification.js +0 -144
  745. package/dist/src/hooks/notifs/useMcpConnectivityStatus.js +0 -80
  746. package/dist/src/hooks/notifs/useModelMigrationNotifications.js +0 -53
  747. package/dist/src/hooks/notifs/useNpmDeprecationNotification.js +0 -24
  748. package/dist/src/hooks/notifs/usePluginAutoupdateNotification.js +0 -82
  749. package/dist/src/hooks/notifs/usePluginInstallationStatus.js +0 -127
  750. package/dist/src/hooks/notifs/useRateLimitWarningNotification.js +0 -118
  751. package/dist/src/hooks/notifs/useSettingsErrors.js +0 -64
  752. package/dist/src/hooks/notifs/useStartupNotification.js +0 -33
  753. package/dist/src/hooks/notifs/useTeammateShutdownNotification.js +0 -64
  754. package/dist/src/hooks/renderPlaceholder.js +0 -26
  755. package/dist/src/hooks/toolPermission/PermissionContext.js +0 -211
  756. package/dist/src/hooks/toolPermission/handlers/coordinatorHandler.js +0 -44
  757. package/dist/src/hooks/toolPermission/handlers/interactiveHandler.js +0 -397
  758. package/dist/src/hooks/toolPermission/handlers/swarmWorkerHandler.js +0 -108
  759. package/dist/src/hooks/toolPermission/permissionLogging.js +0 -145
  760. package/dist/src/hooks/unifiedSuggestions.js +0 -130
  761. package/dist/src/hooks/useAfterFirstRender.js +0 -12
  762. package/dist/src/hooks/useApiKeyVerification.js +0 -63
  763. package/dist/src/hooks/useArrowKeyHistory.js +0 -203
  764. package/dist/src/hooks/useAssistantHistory.js +0 -194
  765. package/dist/src/hooks/useAwaySummary.js +0 -105
  766. package/dist/src/hooks/useBackgroundTaskNavigation.js +0 -204
  767. package/dist/src/hooks/useBlink.js +0 -28
  768. package/dist/src/hooks/useCanUseTool.js +0 -192
  769. package/dist/src/hooks/useCancelRequest.js +0 -195
  770. package/dist/src/hooks/useChromeExtensionNotification.js +0 -49
  771. package/dist/src/hooks/useClaudeCodeHintRecommendation.js +0 -117
  772. package/dist/src/hooks/useClipboardImageHint.js +0 -59
  773. package/dist/src/hooks/useCommandKeybindings.js +0 -87
  774. package/dist/src/hooks/useCommandQueue.js +0 -10
  775. package/dist/src/hooks/useCopyOnSelect.js +0 -88
  776. package/dist/src/hooks/useDeferredHookMessages.js +0 -43
  777. package/dist/src/hooks/useDiffData.js +0 -69
  778. package/dist/src/hooks/useDiffInIDE.js +0 -252
  779. package/dist/src/hooks/useDirectConnect.js +0 -150
  780. package/dist/src/hooks/useDoublePress.js +0 -44
  781. package/dist/src/hooks/useDynamicConfig.js +0 -17
  782. package/dist/src/hooks/useElapsedTime.js +0 -25
  783. package/dist/src/hooks/useExitOnCtrlCD.js +0 -57
  784. package/dist/src/hooks/useExitOnCtrlCDWithKeybindings.js +0 -17
  785. package/dist/src/hooks/useFileHistorySnapshotInit.js +0 -14
  786. package/dist/src/hooks/useGlobalKeybindings.js +0 -215
  787. package/dist/src/hooks/useHistorySearch.js +0 -241
  788. package/dist/src/hooks/useIDEIntegration.js +0 -56
  789. package/dist/src/hooks/useIdeAtMentioned.js +0 -51
  790. package/dist/src/hooks/useIdeConnectionStatus.js +0 -21
  791. package/dist/src/hooks/useIdeLogging.js +0 -29
  792. package/dist/src/hooks/useIdeSelection.js +0 -106
  793. package/dist/src/hooks/useInboxPoller.js +0 -709
  794. package/dist/src/hooks/useInputBuffer.js +0 -73
  795. package/dist/src/hooks/useIssueFlagBanner.js +0 -115
  796. package/dist/src/hooks/useLogMessages.js +0 -98
  797. package/dist/src/hooks/useLspPluginRecommendation.js +0 -176
  798. package/dist/src/hooks/useMailboxBridge.js +0 -15
  799. package/dist/src/hooks/useMainLoopModel.js +0 -25
  800. package/dist/src/hooks/useManagePlugins.js +0 -261
  801. package/dist/src/hooks/useMemoryUsage.js +0 -28
  802. package/dist/src/hooks/useMergedClients.js +0 -11
  803. package/dist/src/hooks/useMergedCommands.js +0 -10
  804. package/dist/src/hooks/useMergedTools.js +0 -32
  805. package/dist/src/hooks/useMinDisplayTime.js +0 -26
  806. package/dist/src/hooks/useNotifyAfterTimeout.js +0 -51
  807. package/dist/src/hooks/useOfficialMarketplaceNotification.js +0 -46
  808. package/dist/src/hooks/usePasteHandler.js +0 -188
  809. package/dist/src/hooks/usePluginRecommendationBase.js +0 -101
  810. package/dist/src/hooks/usePrStatus.js +0 -91
  811. package/dist/src/hooks/usePromptSuggestion.js +0 -128
  812. package/dist/src/hooks/usePromptsFromClaudeInChrome.js +0 -66
  813. package/dist/src/hooks/useQueueProcessor.js +0 -46
  814. package/dist/src/hooks/useRemoteSession.js +0 -431
  815. package/dist/src/hooks/useReplBridge.js +0 -717
  816. package/dist/src/hooks/useSSHSession.js +0 -167
  817. package/dist/src/hooks/useScheduledTasks.js +0 -104
  818. package/dist/src/hooks/useSearchInput.js +0 -302
  819. package/dist/src/hooks/useSessionBackgrounding.js +0 -132
  820. package/dist/src/hooks/useSettings.js +0 -10
  821. package/dist/src/hooks/useSettingsChange.js +0 -13
  822. package/dist/src/hooks/useSkillImprovementSurvey.js +0 -69
  823. package/dist/src/hooks/useSkillsChange.js +0 -51
  824. package/dist/src/hooks/useSwarmInitialization.js +0 -67
  825. package/dist/src/hooks/useSwarmPermissionPoller.js +0 -215
  826. package/dist/src/hooks/useTaskListWatcher.js +0 -157
  827. package/dist/src/hooks/useTasksV2.js +0 -220
  828. package/dist/src/hooks/useTeammateViewAutoExit.js +0 -55
  829. package/dist/src/hooks/useTelegramMirror.js +0 -47
  830. package/dist/src/hooks/useTeleportResume.js +0 -81
  831. package/dist/src/hooks/useTerminalSize.js +0 -9
  832. package/dist/src/hooks/useTextInput.js +0 -397
  833. package/dist/src/hooks/useTimeout.js +0 -10
  834. package/dist/src/hooks/useTurnDiffs.js +0 -160
  835. package/dist/src/hooks/useTypeahead.js +0 -1392
  836. package/dist/src/hooks/useUpdateNotification.js +0 -22
  837. package/dist/src/hooks/useVimInput.js +0 -232
  838. package/dist/src/hooks/useVirtualScroll.js +0 -627
  839. package/dist/src/hooks/useVoice.js +0 -954
  840. package/dist/src/hooks/useVoiceEnabled.js +0 -21
  841. package/dist/src/hooks/useVoiceIntegration.js +0 -631
  842. package/dist/src/hooks/useWhatsAppMirror.js +0 -46
  843. package/dist/src/index.js +0 -18
  844. package/dist/src/ink/Ansi.js +0 -269
  845. package/dist/src/ink/bidi.js +0 -117
  846. package/dist/src/ink/clearTerminal.js +0 -58
  847. package/dist/src/ink/colorize.js +0 -198
  848. package/dist/src/ink/components/AlternateScreen.js +0 -74
  849. package/dist/src/ink/components/App.js +0 -558
  850. package/dist/src/ink/components/AppContext.js +0 -11
  851. package/dist/src/ink/components/Box.js +0 -153
  852. package/dist/src/ink/components/Button.js +0 -166
  853. package/dist/src/ink/components/ClockContext.js +0 -108
  854. package/dist/src/ink/components/CursorDeclarationContext.js +0 -3
  855. package/dist/src/ink/components/ErrorOverview.js +0 -49
  856. package/dist/src/ink/components/Link.js +0 -33
  857. package/dist/src/ink/components/Newline.js +0 -29
  858. package/dist/src/ink/components/NoSelect.js +0 -56
  859. package/dist/src/ink/components/RawAnsi.js +0 -45
  860. package/dist/src/ink/components/ScrollBox.js +0 -170
  861. package/dist/src/ink/components/Spacer.js +0 -19
  862. package/dist/src/ink/components/StdinContext.js +0 -16
  863. package/dist/src/ink/components/TerminalFocusContext.js +0 -45
  864. package/dist/src/ink/components/TerminalSizeContext.js +0 -3
  865. package/dist/src/ink/components/Text.js +0 -194
  866. package/dist/src/ink/constants.js +0 -2
  867. package/dist/src/ink/devtools.js +0 -16
  868. package/dist/src/ink/dom.js +0 -298
  869. package/dist/src/ink/events/click-event.js +0 -36
  870. package/dist/src/ink/events/dispatcher.js +0 -172
  871. package/dist/src/ink/events/emitter.js +0 -31
  872. package/dist/src/ink/events/event-handlers.js +0 -30
  873. package/dist/src/ink/events/event.js +0 -9
  874. package/dist/src/ink/events/focus-event.js +0 -16
  875. package/dist/src/ink/events/input-event.js +0 -161
  876. package/dist/src/ink/events/keyboard-event.js +0 -45
  877. package/dist/src/ink/events/terminal-event.js +0 -78
  878. package/dist/src/ink/events/terminal-focus-event.js +0 -15
  879. package/dist/src/ink/focus.js +0 -158
  880. package/dist/src/ink/frame.js +0 -30
  881. package/dist/src/ink/get-max-width.js +0 -23
  882. package/dist/src/ink/hit-test.js +0 -113
  883. package/dist/src/ink/hooks/use-animation-frame.js +0 -48
  884. package/dist/src/ink/hooks/use-app.js +0 -7
  885. package/dist/src/ink/hooks/use-declared-cursor.js +0 -60
  886. package/dist/src/ink/hooks/use-input.js +0 -70
  887. package/dist/src/ink/hooks/use-interval.js +0 -54
  888. package/dist/src/ink/hooks/use-search-highlight.js +0 -32
  889. package/dist/src/ink/hooks/use-selection.js +0 -60
  890. package/dist/src/ink/hooks/use-stdin.js +0 -7
  891. package/dist/src/ink/hooks/use-tab-status.js +0 -57
  892. package/dist/src/ink/hooks/use-terminal-focus.js +0 -15
  893. package/dist/src/ink/hooks/use-terminal-title.js +0 -29
  894. package/dist/src/ink/hooks/use-terminal-viewport.js +0 -77
  895. package/dist/src/ink/ink.js +0 -1644
  896. package/dist/src/ink/instances.js +0 -7
  897. package/dist/src/ink/layout/engine.js +0 -4
  898. package/dist/src/ink/layout/geometry.js +0 -61
  899. package/dist/src/ink/layout/node.js +0 -62
  900. package/dist/src/ink/layout/yoga.js +0 -237
  901. package/dist/src/ink/line-width-cache.js +0 -19
  902. package/dist/src/ink/log-update.js +0 -583
  903. package/dist/src/ink/measure-element.js +0 -8
  904. package/dist/src/ink/measure-text.js +0 -35
  905. package/dist/src/ink/node-cache.js +0 -30
  906. package/dist/src/ink/optimizer.js +0 -81
  907. package/dist/src/ink/output.js +0 -556
  908. package/dist/src/ink/parse-keypress.js +0 -695
  909. package/dist/src/ink/reconciler.js +0 -384
  910. package/dist/src/ink/render-border.js +0 -134
  911. package/dist/src/ink/render-node-to-output.js +0 -1216
  912. package/dist/src/ink/render-to-screen.js +0 -171
  913. package/dist/src/ink/renderer.js +0 -129
  914. package/dist/src/ink/root.js +0 -80
  915. package/dist/src/ink/screen.js +0 -1132
  916. package/dist/src/ink/searchHighlight.js +0 -78
  917. package/dist/src/ink/selection.js +0 -792
  918. package/dist/src/ink/squash-text-nodes.js +0 -56
  919. package/dist/src/ink/stringWidth.js +0 -200
  920. package/dist/src/ink/styles.js +0 -299
  921. package/dist/src/ink/supports-hyperlinks.js +0 -40
  922. package/dist/src/ink/tabstops.js +0 -39
  923. package/dist/src/ink/terminal-focus-state.js +0 -35
  924. package/dist/src/ink/terminal-querier.js +0 -173
  925. package/dist/src/ink/terminal.js +0 -208
  926. package/dist/src/ink/termio/ansi.js +0 -70
  927. package/dist/src/ink/termio/csi.js +0 -260
  928. package/dist/src/ink/termio/dec.js +0 -53
  929. package/dist/src/ink/termio/esc.js +0 -55
  930. package/dist/src/ink/termio/osc.js +0 -432
  931. package/dist/src/ink/termio/parser.js +0 -356
  932. package/dist/src/ink/termio/sgr.js +0 -292
  933. package/dist/src/ink/termio/tokenize.js +0 -264
  934. package/dist/src/ink/termio/types.js +0 -55
  935. package/dist/src/ink/termio.js +0 -24
  936. package/dist/src/ink/useTerminalNotification.js +0 -57
  937. package/dist/src/ink/warn.js +0 -10
  938. package/dist/src/ink/widest-line.js +0 -14
  939. package/dist/src/ink/wrap-text.js +0 -54
  940. package/dist/src/ink/wrapAnsi.js +0 -6
  941. package/dist/src/ink.js +0 -50
  942. package/dist/src/interactiveHelpers.js +0 -317
  943. package/dist/src/keybindings/KeybindingContext.js +0 -184
  944. package/dist/src/keybindings/KeybindingProviderSetup.js +0 -259
  945. package/dist/src/keybindings/defaultBindings.js +0 -333
  946. package/dist/src/keybindings/loadUserBindings.js +0 -393
  947. package/dist/src/keybindings/match.js +0 -111
  948. package/dist/src/keybindings/parser.js +0 -184
  949. package/dist/src/keybindings/reservedShortcuts.js +0 -109
  950. package/dist/src/keybindings/resolver.js +0 -182
  951. package/dist/src/keybindings/schema.js +0 -205
  952. package/dist/src/keybindings/shortcutFormat.js +0 -48
  953. package/dist/src/keybindings/template.js +0 -40
  954. package/dist/src/keybindings/useKeybinding.js +0 -161
  955. package/dist/src/keybindings/useShortcutDisplay.js +0 -43
  956. package/dist/src/keybindings/validate.js +0 -395
  957. package/dist/src/main.js +0 -4073
  958. package/dist/src/memdir/findRelevantMemories.js +0 -101
  959. package/dist/src/memdir/memdir.js +0 -408
  960. package/dist/src/memdir/memoryAge.js +0 -52
  961. package/dist/src/memdir/memoryScan.js +0 -65
  962. package/dist/src/memdir/memoryTypes.js +0 -260
  963. package/dist/src/memdir/paths.js +0 -236
  964. package/dist/src/memdir/teamMemPaths.js +0 -261
  965. package/dist/src/memdir/teamMemPrompts.js +0 -82
  966. package/dist/src/migrations/migrateAutoUpdatesToSettings.js +0 -47
  967. package/dist/src/migrations/migrateBypassPermissionsAcceptedToSettings.js +0 -32
  968. package/dist/src/migrations/migrateEnableAllProjectMcpServersToSettings.js +0 -83
  969. package/dist/src/migrations/migrateFennecToOpus.js +0 -39
  970. package/dist/src/migrations/migrateLegacyOpusToCurrent.js +0 -44
  971. package/dist/src/migrations/migrateOpusToOpus1m.js +0 -31
  972. package/dist/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js +0 -23
  973. package/dist/src/migrations/migrateSonnet1mToSonnet45.js +0 -38
  974. package/dist/src/migrations/migrateSonnet45ToSonnet46.js +0 -48
  975. package/dist/src/migrations/resetAutoModeOptInForDefaultOffer.js +0 -47
  976. package/dist/src/migrations/resetProToOpusDefault.js +0 -46
  977. package/dist/src/mirrors/shared.js +0 -186
  978. package/dist/src/moreright/useMoreRight.js +0 -13
  979. package/dist/src/native-ts/color-diff/index.js +0 -821
  980. package/dist/src/native-ts/file-index/index.js +0 -328
  981. package/dist/src/native-ts/yoga-layout/enums.js +0 -101
  982. package/dist/src/native-ts/yoga-layout/index.js +0 -2113
  983. package/dist/src/outputStyles/loadOutputStylesDir.js +0 -71
  984. package/dist/src/plugins/builtinPlugins.js +0 -132
  985. package/dist/src/plugins/bundled/index.js +0 -22
  986. package/dist/src/projectOnboardingState.js +0 -61
  987. package/dist/src/query/config.js +0 -17
  988. package/dist/src/query/deps.js +0 -12
  989. package/dist/src/query/stopHooks.js +0 -334
  990. package/dist/src/query/tokenBudget.js +0 -49
  991. package/dist/src/query.js +0 -1330
  992. package/dist/src/recovery/bunBundleShim.js +0 -11
  993. package/dist/src/remote/RemoteSessionManager.js +0 -195
  994. package/dist/src/remote/SessionsWebSocket.js +0 -305
  995. package/dist/src/remote/remotePermissionBridge.js +0 -70
  996. package/dist/src/remote/sdkMessageAdapter.js +0 -227
  997. package/dist/src/replLauncher.js +0 -6
  998. package/dist/src/schemas/hooks.js +0 -174
  999. package/dist/src/screens/Doctor.js +0 -580
  1000. package/dist/src/screens/REPL.js +0 -4434
  1001. package/dist/src/screens/ResumeConversation.js +0 -341
  1002. package/dist/src/self-hosted-runner/main.js +0 -16
  1003. package/dist/src/server/backends/dangerousBackend.js +0 -16
  1004. package/dist/src/server/connectHeadless.js +0 -16
  1005. package/dist/src/server/createDirectConnectSession.js +0 -62
  1006. package/dist/src/server/directConnectManager.js +0 -153
  1007. package/dist/src/server/lockfile.js +0 -16
  1008. package/dist/src/server/parseConnectUrl.js +0 -16
  1009. package/dist/src/server/server.js +0 -16
  1010. package/dist/src/server/serverBanner.js +0 -16
  1011. package/dist/src/server/serverLog.js +0 -16
  1012. package/dist/src/server/sessionManager.js +0 -16
  1013. package/dist/src/server/types.js +0 -7
  1014. package/dist/src/services/AgentSummary/agentSummary.js +0 -147
  1015. package/dist/src/services/MagicDocs/magicDocs.js +0 -193
  1016. package/dist/src/services/MagicDocs/prompts.js +0 -110
  1017. package/dist/src/services/PromptSuggestion/promptSuggestion.js +0 -402
  1018. package/dist/src/services/PromptSuggestion/speculation.js +0 -643
  1019. package/dist/src/services/SessionMemory/prompts.js +0 -254
  1020. package/dist/src/services/SessionMemory/sessionMemory.js +0 -358
  1021. package/dist/src/services/SessionMemory/sessionMemoryUtils.js +0 -157
  1022. package/dist/src/services/analytics/config.js +0 -33
  1023. package/dist/src/services/analytics/datadog.js +0 -259
  1024. package/dist/src/services/analytics/firstPartyEventLogger.js +0 -342
  1025. package/dist/src/services/analytics/firstPartyEventLoggingExporter.js +0 -594
  1026. package/dist/src/services/analytics/growthbook.js +0 -952
  1027. package/dist/src/services/analytics/index.js +0 -114
  1028. package/dist/src/services/analytics/metadata.js +0 -698
  1029. package/dist/src/services/analytics/sink.js +0 -95
  1030. package/dist/src/services/analytics/sinkKillswitch.js +0 -19
  1031. package/dist/src/services/api/adminRequests.js +0 -57
  1032. package/dist/src/services/api/bootstrap.js +0 -149
  1033. package/dist/src/services/api/claude.js +0 -2461
  1034. package/dist/src/services/api/client.js +0 -325
  1035. package/dist/src/services/api/dumpPrompts.js +0 -174
  1036. package/dist/src/services/api/emptyUsage.js +0 -20
  1037. package/dist/src/services/api/errorUtils.js +0 -203
  1038. package/dist/src/services/api/errors.js +0 -934
  1039. package/dist/src/services/api/filesApi.js +0 -523
  1040. package/dist/src/services/api/firstTokenDate.js +0 -49
  1041. package/dist/src/services/api/grove.js +0 -272
  1042. package/dist/src/services/api/index.js +0 -23
  1043. package/dist/src/services/api/logging.js +0 -484
  1044. package/dist/src/services/api/metricsOptOut.js +0 -127
  1045. package/dist/src/services/api/openai.js +0 -1187
  1046. package/dist/src/services/api/openrouter.js +0 -30
  1047. package/dist/src/services/api/overageCreditGrant.js +0 -123
  1048. package/dist/src/services/api/promptCacheBreakDetection.js +0 -510
  1049. package/dist/src/services/api/referral.js +0 -219
  1050. package/dist/src/services/api/sessionIngress.js +0 -358
  1051. package/dist/src/services/api/ultrareviewQuota.js +0 -29
  1052. package/dist/src/services/api/usage.js +0 -31
  1053. package/dist/src/services/api/withRetry.js +0 -599
  1054. package/dist/src/services/autoDream/autoDream.js +0 -244
  1055. package/dist/src/services/autoDream/config.js +0 -17
  1056. package/dist/src/services/autoDream/consolidationLock.js +0 -122
  1057. package/dist/src/services/autoDream/consolidationPrompt.js +0 -56
  1058. package/dist/src/services/awaySummary.js +0 -61
  1059. package/dist/src/services/claudeAiLimits.js +0 -331
  1060. package/dist/src/services/claudeAiLimitsHook.js +0 -15
  1061. package/dist/src/services/compact/apiMicrocompact.js +0 -97
  1062. package/dist/src/services/compact/autoCompact.js +0 -236
  1063. package/dist/src/services/compact/cachedMicrocompact.js +0 -16
  1064. package/dist/src/services/compact/compact.js +0 -1258
  1065. package/dist/src/services/compact/compactWarningHook.js +0 -12
  1066. package/dist/src/services/compact/compactWarningState.js +0 -15
  1067. package/dist/src/services/compact/grouping.js +0 -58
  1068. package/dist/src/services/compact/microCompact.js +0 -414
  1069. package/dist/src/services/compact/postCompactCleanup.js +0 -72
  1070. package/dist/src/services/compact/prompt.js +0 -327
  1071. package/dist/src/services/compact/sessionMemoryCompact.js +0 -467
  1072. package/dist/src/services/compact/timeBasedMCConfig.js +0 -11
  1073. package/dist/src/services/diagnosticTracking.js +0 -282
  1074. package/dist/src/services/extractMemories/extractMemories.js +0 -444
  1075. package/dist/src/services/extractMemories/prompts.js +0 -129
  1076. package/dist/src/services/internalLogging.js +0 -68
  1077. package/dist/src/services/lsp/LSPClient.js +0 -306
  1078. package/dist/src/services/lsp/LSPDiagnosticRegistry.js +0 -277
  1079. package/dist/src/services/lsp/LSPServerInstance.js +0 -390
  1080. package/dist/src/services/lsp/LSPServerManager.js +0 -305
  1081. package/dist/src/services/lsp/config.js +0 -57
  1082. package/dist/src/services/lsp/manager.js +0 -246
  1083. package/dist/src/services/lsp/passiveFeedback.js +0 -226
  1084. package/dist/src/services/mcp/InProcessTransport.js +0 -54
  1085. package/dist/src/services/mcp/MCPConnectionManager.js +0 -50
  1086. package/dist/src/services/mcp/SdkControlTransport.js +0 -115
  1087. package/dist/src/services/mcp/auth.js +0 -1882
  1088. package/dist/src/services/mcp/channelAllowlist.js +0 -57
  1089. package/dist/src/services/mcp/channelNotification.js +0 -236
  1090. package/dist/src/services/mcp/channelPermissions.js +0 -192
  1091. package/dist/src/services/mcp/claudeai.js +0 -123
  1092. package/dist/src/services/mcp/client.js +0 -2480
  1093. package/dist/src/services/mcp/config.js +0 -1277
  1094. package/dist/src/services/mcp/elicitationHandler.js +0 -192
  1095. package/dist/src/services/mcp/envExpansion.js +0 -30
  1096. package/dist/src/services/mcp/headersHelper.js +0 -94
  1097. package/dist/src/services/mcp/mcpStringUtils.js +0 -85
  1098. package/dist/src/services/mcp/normalization.js +0 -21
  1099. package/dist/src/services/mcp/oauthPort.js +0 -69
  1100. package/dist/src/services/mcp/officialRegistry.js +0 -54
  1101. package/dist/src/services/mcp/types.js +0 -94
  1102. package/dist/src/services/mcp/useManageMCPConnections.js +0 -820
  1103. package/dist/src/services/mcp/utils.js +0 -433
  1104. package/dist/src/services/mcp/vscodeSdkMcp.js +0 -69
  1105. package/dist/src/services/mcp/xaa.js +0 -342
  1106. package/dist/src/services/mcp/xaaIdpLogin.js +0 -377
  1107. package/dist/src/services/mcpServerApproval.js +0 -29
  1108. package/dist/src/services/mockRateLimits.js +0 -666
  1109. package/dist/src/services/notifier.js +0 -114
  1110. package/dist/src/services/oauth/auth-code-listener.js +0 -236
  1111. package/dist/src/services/oauth/client.js +0 -545
  1112. package/dist/src/services/oauth/crypto.js +0 -19
  1113. package/dist/src/services/oauth/getOauthProfile.js +0 -48
  1114. package/dist/src/services/oauth/index.js +0 -152
  1115. package/dist/src/services/oauth/types.js +0 -1
  1116. package/dist/src/services/plugins/PluginInstallationManager.js +0 -139
  1117. package/dist/src/services/plugins/pluginCliCommands.js +0 -230
  1118. package/dist/src/services/plugins/pluginOperations.js +0 -826
  1119. package/dist/src/services/policyLimits/index.js +0 -547
  1120. package/dist/src/services/policyLimits/types.js +0 -9
  1121. package/dist/src/services/preventSleep.js +0 -143
  1122. package/dist/src/services/rateLimitMessages.js +0 -271
  1123. package/dist/src/services/rateLimitMocking.js +0 -91
  1124. package/dist/src/services/remoteManagedSettings/index.js +0 -534
  1125. package/dist/src/services/remoteManagedSettings/securityCheck.js +0 -59
  1126. package/dist/src/services/remoteManagedSettings/syncCache.js +0 -90
  1127. package/dist/src/services/remoteManagedSettings/syncCacheState.js +0 -89
  1128. package/dist/src/services/remoteManagedSettings/types.js +0 -12
  1129. package/dist/src/services/settingsSync/index.js +0 -478
  1130. package/dist/src/services/settingsSync/types.js +0 -35
  1131. package/dist/src/services/teamMemorySync/index.js +0 -976
  1132. package/dist/src/services/teamMemorySync/secretScanner.js +0 -275
  1133. package/dist/src/services/teamMemorySync/teamMemSecretGuard.js +0 -35
  1134. package/dist/src/services/teamMemorySync/types.js +0 -47
  1135. package/dist/src/services/teamMemorySync/watcher.js +0 -326
  1136. package/dist/src/services/tips/tipHistory.js +0 -17
  1137. package/dist/src/services/tips/tipRegistry.js +0 -589
  1138. package/dist/src/services/tips/tipScheduler.js +0 -40
  1139. package/dist/src/services/tokenEstimation.js +0 -365
  1140. package/dist/src/services/toolUseSummary/toolUseSummaryGenerator.js +0 -87
  1141. package/dist/src/services/tools/StreamingToolExecutor.js +0 -413
  1142. package/dist/src/services/tools/toolExecution.js +0 -1218
  1143. package/dist/src/services/tools/toolHooks.js +0 -454
  1144. package/dist/src/services/tools/toolOrchestration.js +0 -110
  1145. package/dist/src/services/vcr.js +0 -291
  1146. package/dist/src/services/voice.js +0 -394
  1147. package/dist/src/services/voiceKeyterms.js +0 -94
  1148. package/dist/src/services/voiceStreamSTT.js +0 -406
  1149. package/dist/src/setup.js +0 -349
  1150. package/dist/src/skills/bundled/batch.js +0 -114
  1151. package/dist/src/skills/bundled/claudeApi.js +0 -145
  1152. package/dist/src/skills/bundled/claudeApiContent.js +0 -14
  1153. package/dist/src/skills/bundled/claudeInChrome.js +0 -27
  1154. package/dist/src/skills/bundled/debug.js +0 -99
  1155. package/dist/src/skills/bundled/index.js +0 -5
  1156. package/dist/src/skills/bundled/keybindings.js +0 -292
  1157. package/dist/src/skills/bundled/loop.js +0 -81
  1158. package/dist/src/skills/bundled/loremIpsum.js +0 -266
  1159. package/dist/src/skills/bundled/remember.js +0 -75
  1160. package/dist/src/skills/bundled/scheduleRemoteAgents.js +0 -373
  1161. package/dist/src/skills/bundled/simplify.js +0 -66
  1162. package/dist/src/skills/bundled/skillify.js +0 -184
  1163. package/dist/src/skills/bundled/stuck.js +0 -75
  1164. package/dist/src/skills/bundled/updateConfig.js +0 -463
  1165. package/dist/src/skills/bundled/verify.js +0 -25
  1166. package/dist/src/skills/bundled/verifyContent.js +0 -7
  1167. package/dist/src/skills/bundledSkills.js +0 -159
  1168. package/dist/src/skills/loadSkillsDir.js +0 -736
  1169. package/dist/src/skills/mcpSkillBuilders.js +0 -10
  1170. package/dist/src/ssh/createSSHSession.js +0 -16
  1171. package/dist/src/state/AppState.js +0 -184
  1172. package/dist/src/state/AppStateStore.js +0 -119
  1173. package/dist/src/state/onChangeAppState.js +0 -132
  1174. package/dist/src/state/selectors.js +0 -51
  1175. package/dist/src/state/store.js +0 -21
  1176. package/dist/src/state/teammateViewHelpers.js +0 -124
  1177. package/dist/src/tasks/DreamTask/DreamTask.js +0 -99
  1178. package/dist/src/tasks/InProcessTeammateTask/InProcessTeammateTask.js +0 -116
  1179. package/dist/src/tasks/InProcessTeammateTask/types.js +0 -35
  1180. package/dist/src/tasks/LocalAgentTask/LocalAgentTask.js +0 -507
  1181. package/dist/src/tasks/LocalMainSessionTask.js +0 -338
  1182. package/dist/src/tasks/LocalShellTask/LocalShellTask.js +0 -475
  1183. package/dist/src/tasks/LocalShellTask/guards.js +0 -9
  1184. package/dist/src/tasks/LocalShellTask/killShellTasks.js +0 -59
  1185. package/dist/src/tasks/RemoteAgentTask/RemoteAgentTask.js +0 -742
  1186. package/dist/src/tasks/pillLabel.js +0 -69
  1187. package/dist/src/tasks/stopTask.js +0 -67
  1188. package/dist/src/tasks/types.js +0 -18
  1189. package/dist/src/tasks.js +0 -39
  1190. package/dist/src/telegram/bridge.js +0 -334
  1191. package/dist/src/telegram/config.js +0 -57
  1192. package/dist/src/telegram/mirror.js +0 -91
  1193. package/dist/src/tools/AgentTool/AgentTool.js +0 -1222
  1194. package/dist/src/tools/AgentTool/UI.js +0 -592
  1195. package/dist/src/tools/AgentTool/agentColorManager.js +0 -43
  1196. package/dist/src/tools/AgentTool/agentDisplay.js +0 -72
  1197. package/dist/src/tools/AgentTool/agentMemory.js +0 -125
  1198. package/dist/src/tools/AgentTool/agentMemorySnapshot.js +0 -136
  1199. package/dist/src/tools/AgentTool/agentToolUtils.js +0 -456
  1200. package/dist/src/tools/AgentTool/built-in/claudeCodeGuideAgent.js +0 -175
  1201. package/dist/src/tools/AgentTool/built-in/exploreAgent.js +0 -76
  1202. package/dist/src/tools/AgentTool/built-in/generalPurposeAgent.js +0 -28
  1203. package/dist/src/tools/AgentTool/built-in/planAgent.js +0 -87
  1204. package/dist/src/tools/AgentTool/built-in/statuslineSetup.js +0 -140
  1205. package/dist/src/tools/AgentTool/built-in/verificationAgent.js +0 -146
  1206. package/dist/src/tools/AgentTool/builtInAgents.js +0 -58
  1207. package/dist/src/tools/AgentTool/constants.js +0 -11
  1208. package/dist/src/tools/AgentTool/forkSubagent.js +0 -177
  1209. package/dist/src/tools/AgentTool/loadAgentsDir.js +0 -497
  1210. package/dist/src/tools/AgentTool/prompt.js +0 -260
  1211. package/dist/src/tools/AgentTool/resumeAgent.js +0 -182
  1212. package/dist/src/tools/AgentTool/runAgent.js +0 -629
  1213. package/dist/src/tools/AskUserQuestionTool/AskUserQuestionTool.js +0 -237
  1214. package/dist/src/tools/AskUserQuestionTool/prompt.js +0 -38
  1215. package/dist/src/tools/BashTool/BashTool.js +0 -1008
  1216. package/dist/src/tools/BashTool/BashToolResultMessage.js +0 -168
  1217. package/dist/src/tools/BashTool/UI.js +0 -133
  1218. package/dist/src/tools/BashTool/bashCommandHelpers.js +0 -184
  1219. package/dist/src/tools/BashTool/bashPermissions.js +0 -2023
  1220. package/dist/src/tools/BashTool/bashSecurity.js +0 -2267
  1221. package/dist/src/tools/BashTool/commandSemantics.js +0 -105
  1222. package/dist/src/tools/BashTool/commentLabel.js +0 -14
  1223. package/dist/src/tools/BashTool/destructiveCommandWarning.js +0 -88
  1224. package/dist/src/tools/BashTool/modeValidation.js +0 -86
  1225. package/dist/src/tools/BashTool/pathValidation.js +0 -1080
  1226. package/dist/src/tools/BashTool/prompt.js +0 -333
  1227. package/dist/src/tools/BashTool/readOnlyValidation.js +0 -1794
  1228. package/dist/src/tools/BashTool/sedEditParser.js +0 -282
  1229. package/dist/src/tools/BashTool/sedValidation.js +0 -580
  1230. package/dist/src/tools/BashTool/shouldUseSandbox.js +0 -125
  1231. package/dist/src/tools/BashTool/toolName.js +0 -2
  1232. package/dist/src/tools/BashTool/utils.js +0 -180
  1233. package/dist/src/tools/BriefTool/BriefTool.js +0 -172
  1234. package/dist/src/tools/BriefTool/UI.js +0 -66
  1235. package/dist/src/tools/BriefTool/attachments.js +0 -86
  1236. package/dist/src/tools/BriefTool/prompt.js +0 -19
  1237. package/dist/src/tools/BriefTool/upload.js +0 -136
  1238. package/dist/src/tools/ConfigTool/ConfigTool.js +0 -398
  1239. package/dist/src/tools/ConfigTool/UI.js +0 -24
  1240. package/dist/src/tools/ConfigTool/constants.js +0 -1
  1241. package/dist/src/tools/ConfigTool/prompt.js +0 -82
  1242. package/dist/src/tools/ConfigTool/supportedSettings.js +0 -180
  1243. package/dist/src/tools/EnterPlanModeTool/EnterPlanModeTool.js +0 -98
  1244. package/dist/src/tools/EnterPlanModeTool/UI.js +0 -13
  1245. package/dist/src/tools/EnterPlanModeTool/constants.js +0 -1
  1246. package/dist/src/tools/EnterPlanModeTool/prompt.js +0 -164
  1247. package/dist/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +0 -104
  1248. package/dist/src/tools/EnterWorktreeTool/UI.js +0 -8
  1249. package/dist/src/tools/EnterWorktreeTool/constants.js +0 -1
  1250. package/dist/src/tools/EnterWorktreeTool/prompt.js +0 -30
  1251. package/dist/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.js +0 -385
  1252. package/dist/src/tools/ExitPlanModeTool/UI.js +0 -31
  1253. package/dist/src/tools/ExitPlanModeTool/constants.js +0 -2
  1254. package/dist/src/tools/ExitPlanModeTool/prompt.js +0 -27
  1255. package/dist/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +0 -257
  1256. package/dist/src/tools/ExitWorktreeTool/UI.js +0 -9
  1257. package/dist/src/tools/ExitWorktreeTool/constants.js +0 -1
  1258. package/dist/src/tools/ExitWorktreeTool/prompt.js +0 -32
  1259. package/dist/src/tools/FileEditTool/FileEditTool.js +0 -480
  1260. package/dist/src/tools/FileEditTool/UI.js +0 -201
  1261. package/dist/src/tools/FileEditTool/constants.js +0 -7
  1262. package/dist/src/tools/FileEditTool/prompt.js +0 -24
  1263. package/dist/src/tools/FileEditTool/types.js +0 -50
  1264. package/dist/src/tools/FileEditTool/utils.js +0 -579
  1265. package/dist/src/tools/FileReadTool/FileReadTool.js +0 -889
  1266. package/dist/src/tools/FileReadTool/UI.js +0 -125
  1267. package/dist/src/tools/FileReadTool/imageProcessor.js +0 -46
  1268. package/dist/src/tools/FileReadTool/limits.js +0 -70
  1269. package/dist/src/tools/FileReadTool/prompt.js +0 -31
  1270. package/dist/src/tools/FileWriteTool/FileWriteTool.js +0 -341
  1271. package/dist/src/tools/FileWriteTool/UI.js +0 -338
  1272. package/dist/src/tools/FileWriteTool/prompt.js +0 -15
  1273. package/dist/src/tools/GlobTool/GlobTool.js +0 -161
  1274. package/dist/src/tools/GlobTool/UI.js +0 -39
  1275. package/dist/src/tools/GlobTool/prompt.js +0 -6
  1276. package/dist/src/tools/GrepTool/GrepTool.js +0 -439
  1277. package/dist/src/tools/GrepTool/UI.js +0 -154
  1278. package/dist/src/tools/GrepTool/prompt.js +0 -16
  1279. package/dist/src/tools/LSPTool/LSPTool.js +0 -660
  1280. package/dist/src/tools/LSPTool/UI.js +0 -204
  1281. package/dist/src/tools/LSPTool/formatters.js +0 -445
  1282. package/dist/src/tools/LSPTool/prompt.js +0 -20
  1283. package/dist/src/tools/LSPTool/schemas.js +0 -197
  1284. package/dist/src/tools/LSPTool/symbolContext.js +0 -75
  1285. package/dist/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +0 -100
  1286. package/dist/src/tools/ListMcpResourcesTool/UI.js +0 -16
  1287. package/dist/src/tools/ListMcpResourcesTool/prompt.js +0 -18
  1288. package/dist/src/tools/MCPTool/MCPTool.js +0 -60
  1289. package/dist/src/tools/MCPTool/UI.js +0 -342
  1290. package/dist/src/tools/MCPTool/classifyForCollapse.js +0 -597
  1291. package/dist/src/tools/MCPTool/prompt.js +0 -3
  1292. package/dist/src/tools/McpAuthTool/McpAuthTool.js +0 -162
  1293. package/dist/src/tools/NotebookEditTool/NotebookEditTool.js +0 -421
  1294. package/dist/src/tools/NotebookEditTool/UI.js +0 -40
  1295. package/dist/src/tools/NotebookEditTool/constants.js +0 -2
  1296. package/dist/src/tools/NotebookEditTool/prompt.js +0 -2
  1297. package/dist/src/tools/PowerShellTool/PowerShellTool.js +0 -899
  1298. package/dist/src/tools/PowerShellTool/UI.js +0 -57
  1299. package/dist/src/tools/PowerShellTool/clmTypes.js +0 -207
  1300. package/dist/src/tools/PowerShellTool/commandSemantics.js +0 -115
  1301. package/dist/src/tools/PowerShellTool/commonParameters.js +0 -27
  1302. package/dist/src/tools/PowerShellTool/destructiveCommandWarning.js +0 -92
  1303. package/dist/src/tools/PowerShellTool/gitSafety.js +0 -185
  1304. package/dist/src/tools/PowerShellTool/modeValidation.js +0 -357
  1305. package/dist/src/tools/PowerShellTool/pathValidation.js +0 -1712
  1306. package/dist/src/tools/PowerShellTool/powershellPermissions.js +0 -1351
  1307. package/dist/src/tools/PowerShellTool/powershellSecurity.js +0 -942
  1308. package/dist/src/tools/PowerShellTool/prompt.js +0 -132
  1309. package/dist/src/tools/PowerShellTool/readOnlyValidation.js +0 -1633
  1310. package/dist/src/tools/PowerShellTool/toolName.js +0 -2
  1311. package/dist/src/tools/REPLTool/constants.js +0 -43
  1312. package/dist/src/tools/REPLTool/primitiveTools.js +0 -36
  1313. package/dist/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +0 -112
  1314. package/dist/src/tools/ReadMcpResourceTool/UI.js +0 -23
  1315. package/dist/src/tools/ReadMcpResourceTool/prompt.js +0 -15
  1316. package/dist/src/tools/RemoteTriggerTool/RemoteTriggerTool.js +0 -142
  1317. package/dist/src/tools/RemoteTriggerTool/UI.js +0 -11
  1318. package/dist/src/tools/RemoteTriggerTool/prompt.js +0 -12
  1319. package/dist/src/tools/ScheduleCronTool/CronCreateTool.js +0 -120
  1320. package/dist/src/tools/ScheduleCronTool/CronDeleteTool.js +0 -74
  1321. package/dist/src/tools/ScheduleCronTool/CronListTool.js +0 -77
  1322. package/dist/src/tools/ScheduleCronTool/UI.js +0 -28
  1323. package/dist/src/tools/ScheduleCronTool/prompt.js +0 -115
  1324. package/dist/src/tools/SendMessageTool/SendMessageTool.js +0 -675
  1325. package/dist/src/tools/SendMessageTool/UI.js +0 -23
  1326. package/dist/src/tools/SendMessageTool/constants.js +0 -1
  1327. package/dist/src/tools/SendMessageTool/prompt.js +0 -47
  1328. package/dist/src/tools/SkillTool/SkillTool.js +0 -827
  1329. package/dist/src/tools/SkillTool/UI.js +0 -60
  1330. package/dist/src/tools/SkillTool/constants.js +0 -1
  1331. package/dist/src/tools/SkillTool/prompt.js +0 -184
  1332. package/dist/src/tools/SleepTool/prompt.js +0 -14
  1333. package/dist/src/tools/SyntheticOutputTool/SyntheticOutputTool.js +0 -138
  1334. package/dist/src/tools/TaskCreateTool/TaskCreateTool.js +0 -104
  1335. package/dist/src/tools/TaskCreateTool/constants.js +0 -1
  1336. package/dist/src/tools/TaskCreateTool/prompt.js +0 -52
  1337. package/dist/src/tools/TaskGetTool/TaskGetTool.js +0 -106
  1338. package/dist/src/tools/TaskGetTool/constants.js +0 -1
  1339. package/dist/src/tools/TaskGetTool/prompt.js +0 -23
  1340. package/dist/src/tools/TaskListTool/TaskListTool.js +0 -89
  1341. package/dist/src/tools/TaskListTool/constants.js +0 -1
  1342. package/dist/src/tools/TaskListTool/prompt.js +0 -44
  1343. package/dist/src/tools/TaskOutputTool/TaskOutputTool.js +0 -535
  1344. package/dist/src/tools/TaskOutputTool/constants.js +0 -1
  1345. package/dist/src/tools/TaskStopTool/TaskStopTool.js +0 -110
  1346. package/dist/src/tools/TaskStopTool/UI.js +0 -30
  1347. package/dist/src/tools/TaskStopTool/prompt.js +0 -7
  1348. package/dist/src/tools/TaskUpdateTool/TaskUpdateTool.js +0 -301
  1349. package/dist/src/tools/TaskUpdateTool/constants.js +0 -1
  1350. package/dist/src/tools/TaskUpdateTool/prompt.js +0 -76
  1351. package/dist/src/tools/TeamCreateTool/TeamCreateTool.js +0 -177
  1352. package/dist/src/tools/TeamCreateTool/UI.js +0 -4
  1353. package/dist/src/tools/TeamCreateTool/constants.js +0 -1
  1354. package/dist/src/tools/TeamCreateTool/prompt.js +0 -113
  1355. package/dist/src/tools/TeamDeleteTool/TeamDeleteTool.js +0 -102
  1356. package/dist/src/tools/TeamDeleteTool/UI.js +0 -13
  1357. package/dist/src/tools/TeamDeleteTool/constants.js +0 -1
  1358. package/dist/src/tools/TeamDeleteTool/prompt.js +0 -16
  1359. package/dist/src/tools/TodoWriteTool/TodoWriteTool.js +0 -99
  1360. package/dist/src/tools/TodoWriteTool/constants.js +0 -1
  1361. package/dist/src/tools/TodoWriteTool/prompt.js +0 -181
  1362. package/dist/src/tools/ToolSearchTool/ToolSearchTool.js +0 -357
  1363. package/dist/src/tools/ToolSearchTool/constants.js +0 -1
  1364. package/dist/src/tools/ToolSearchTool/prompt.js +0 -99
  1365. package/dist/src/tools/TungstenTool/TungstenLiveMonitor.js +0 -7
  1366. package/dist/src/tools/TungstenTool/TungstenTool.js +0 -3
  1367. package/dist/src/tools/WebFetchTool/UI.js +0 -30
  1368. package/dist/src/tools/WebFetchTool/WebFetchTool.js +0 -246
  1369. package/dist/src/tools/WebFetchTool/preapproved.js +0 -155
  1370. package/dist/src/tools/WebFetchTool/prompt.js +0 -39
  1371. package/dist/src/tools/WebFetchTool/utils.js +0 -381
  1372. package/dist/src/tools/WebSearchTool/UI.js +0 -66
  1373. package/dist/src/tools/WebSearchTool/WebSearchTool.js +0 -352
  1374. package/dist/src/tools/WebSearchTool/prompt.js +0 -32
  1375. package/dist/src/tools/WorkflowTool/constants.js +0 -2
  1376. package/dist/src/tools/shared/gitOperationTracking.js +0 -220
  1377. package/dist/src/tools/shared/spawnMultiAgent.js +0 -805
  1378. package/dist/src/tools/testing/TestingPermissionTool.js +0 -72
  1379. package/dist/src/tools/utils.js +0 -24
  1380. package/dist/src/tools.js +0 -332
  1381. package/dist/src/types/command.js +0 -10
  1382. package/dist/src/types/connectorText.js +0 -2
  1383. package/dist/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.js +0 -673
  1384. package/dist/src/types/generated/events_mono/common/v1/auth.js +0 -49
  1385. package/dist/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js +0 -147
  1386. package/dist/src/types/generated/google/protobuf/timestamp.js +0 -38
  1387. package/dist/src/types/hooks.js +0 -153
  1388. package/dist/src/types/ids.js +0 -27
  1389. package/dist/src/types/logs.js +0 -11
  1390. package/dist/src/types/message.js +0 -1
  1391. package/dist/src/types/permissions.js +0 -25
  1392. package/dist/src/types/plugin.js +0 -72
  1393. package/dist/src/types/textInputTypes.js +0 -20
  1394. package/dist/src/types/utils.js +0 -5
  1395. package/dist/src/upstreamproxy/relay.js +0 -346
  1396. package/dist/src/upstreamproxy/upstreamproxy.js +0 -236
  1397. package/dist/src/utils/CircularBuffer.js +0 -75
  1398. package/dist/src/utils/Cursor.js +0 -1229
  1399. package/dist/src/utils/QueryGuard.js +0 -115
  1400. package/dist/src/utils/Shell.js +0 -374
  1401. package/dist/src/utils/ShellCommand.js +0 -338
  1402. package/dist/src/utils/abortController.js +0 -74
  1403. package/dist/src/utils/activityManager.js +0 -127
  1404. package/dist/src/utils/advisor.js +0 -77
  1405. package/dist/src/utils/agentContext.js +0 -91
  1406. package/dist/src/utils/agentId.js +0 -83
  1407. package/dist/src/utils/agentSwarmsEnabled.js +0 -37
  1408. package/dist/src/utils/agenticSessionSearch.js +0 -255
  1409. package/dist/src/utils/analyzeContext.js +0 -848
  1410. package/dist/src/utils/ansiToPng.js +0 -259
  1411. package/dist/src/utils/ansiToSvg.js +0 -207
  1412. package/dist/src/utils/api.js +0 -555
  1413. package/dist/src/utils/apiPreconnect.js +0 -62
  1414. package/dist/src/utils/appleTerminalBackup.js +0 -95
  1415. package/dist/src/utils/argumentSubstitution.js +0 -114
  1416. package/dist/src/utils/array.js +0 -12
  1417. package/dist/src/utils/asciicast.js +0 -200
  1418. package/dist/src/utils/attachments.js +0 -2514
  1419. package/dist/src/utils/attribution.js +0 -308
  1420. package/dist/src/utils/attributionHooks.js +0 -16
  1421. package/dist/src/utils/attributionTrailer.js +0 -16
  1422. package/dist/src/utils/auth.js +0 -2020
  1423. package/dist/src/utils/authFileDescriptor.js +0 -152
  1424. package/dist/src/utils/authPortable.js +0 -14
  1425. package/dist/src/utils/autoModeDenials.js +0 -15
  1426. package/dist/src/utils/autoRunIssue.js +0 -112
  1427. package/dist/src/utils/autoUpdater.js +0 -461
  1428. package/dist/src/utils/aws.js +0 -44
  1429. package/dist/src/utils/awsAuthStatusManager.js +0 -66
  1430. package/dist/src/utils/background/remote/preconditions.js +0 -175
  1431. package/dist/src/utils/background/remote/remoteSession.js +0 -53
  1432. package/dist/src/utils/backgroundHousekeeping.js +0 -66
  1433. package/dist/src/utils/bash/ParsedCommand.js +0 -241
  1434. package/dist/src/utils/bash/ShellSnapshot.js +0 -489
  1435. package/dist/src/utils/bash/ast.js +0 -2590
  1436. package/dist/src/utils/bash/bashParser.js +0 -4355
  1437. package/dist/src/utils/bash/bashPipeCommand.js +0 -249
  1438. package/dist/src/utils/bash/commands.js +0 -1131
  1439. package/dist/src/utils/bash/heredoc.js +0 -647
  1440. package/dist/src/utils/bash/parser.js +0 -195
  1441. package/dist/src/utils/bash/prefix.js +0 -154
  1442. package/dist/src/utils/bash/registry.js +0 -23
  1443. package/dist/src/utils/bash/shellCompletion.js +0 -196
  1444. package/dist/src/utils/bash/shellPrefix.js +0 -25
  1445. package/dist/src/utils/bash/shellQuote.js +0 -253
  1446. package/dist/src/utils/bash/shellQuoting.js +0 -106
  1447. package/dist/src/utils/bash/specs/alias.js +0 -11
  1448. package/dist/src/utils/bash/specs/index.js +0 -16
  1449. package/dist/src/utils/bash/specs/nohup.js +0 -10
  1450. package/dist/src/utils/bash/specs/pyright.js +0 -88
  1451. package/dist/src/utils/bash/specs/sleep.js +0 -10
  1452. package/dist/src/utils/bash/specs/srun.js +0 -28
  1453. package/dist/src/utils/bash/specs/time.js +0 -10
  1454. package/dist/src/utils/bash/specs/timeout.js +0 -17
  1455. package/dist/src/utils/bash/treeSitterAnalysis.js +0 -407
  1456. package/dist/src/utils/betas.js +0 -332
  1457. package/dist/src/utils/billing.js +0 -54
  1458. package/dist/src/utils/binaryCheck.js +0 -40
  1459. package/dist/src/utils/browser.js +0 -58
  1460. package/dist/src/utils/bufferedWriter.js +0 -77
  1461. package/dist/src/utils/bundledMode.js +0 -19
  1462. package/dist/src/utils/caCerts.js +0 -93
  1463. package/dist/src/utils/caCertsConfig.js +0 -77
  1464. package/dist/src/utils/cachePaths.js +0 -28
  1465. package/dist/src/utils/ccshareResume.js +0 -16
  1466. package/dist/src/utils/classifierApprovals.js +0 -66
  1467. package/dist/src/utils/classifierApprovalsHook.js +0 -10
  1468. package/dist/src/utils/claudeCodeHints.js +0 -142
  1469. package/dist/src/utils/claudeDesktop.js +0 -108
  1470. package/dist/src/utils/claudeInChrome/chromeNativeHost.js +0 -416
  1471. package/dist/src/utils/claudeInChrome/common.js +0 -466
  1472. package/dist/src/utils/claudeInChrome/mcpServer.js +0 -237
  1473. package/dist/src/utils/claudeInChrome/prompt.js +0 -79
  1474. package/dist/src/utils/claudeInChrome/setup.js +0 -320
  1475. package/dist/src/utils/claudeInChrome/setupPortable.js +0 -172
  1476. package/dist/src/utils/claudeInChrome/toolRendering.js +0 -234
  1477. package/dist/src/utils/claudemd.js +0 -1054
  1478. package/dist/src/utils/cleanup.js +0 -514
  1479. package/dist/src/utils/cleanupRegistry.js +0 -22
  1480. package/dist/src/utils/cliArgs.js +0 -53
  1481. package/dist/src/utils/cliHighlight.js +0 -45
  1482. package/dist/src/utils/codeIndexing.js +0 -149
  1483. package/dist/src/utils/collapseBackgroundBashNotifications.js +0 -70
  1484. package/dist/src/utils/collapseHookSummaries.js +0 -48
  1485. package/dist/src/utils/collapseReadSearch.js +0 -871
  1486. package/dist/src/utils/collapseTeammateShutdowns.js +0 -44
  1487. package/dist/src/utils/combinedAbortSignal.js +0 -40
  1488. package/dist/src/utils/commandLifecycle.js +0 -7
  1489. package/dist/src/utils/commitAttribution.js +0 -720
  1490. package/dist/src/utils/completionCache.js +0 -138
  1491. package/dist/src/utils/computerUse/appNames.js +0 -170
  1492. package/dist/src/utils/computerUse/cleanup.js +0 -66
  1493. package/dist/src/utils/computerUse/common.js +0 -56
  1494. package/dist/src/utils/computerUse/computerUseLock.js +0 -183
  1495. package/dist/src/utils/computerUse/drainRunLoop.js +0 -71
  1496. package/dist/src/utils/computerUse/escHotkey.js +0 -53
  1497. package/dist/src/utils/computerUse/executor.js +0 -480
  1498. package/dist/src/utils/computerUse/gates.js +0 -55
  1499. package/dist/src/utils/computerUse/hostAdapter.js +0 -62
  1500. package/dist/src/utils/computerUse/inputLoader.js +0 -27
  1501. package/dist/src/utils/computerUse/mcpServer.js +0 -84
  1502. package/dist/src/utils/computerUse/setup.js +0 -42
  1503. package/dist/src/utils/computerUse/swiftLoader.js +0 -20
  1504. package/dist/src/utils/computerUse/toolRendering.js +0 -100
  1505. package/dist/src/utils/computerUse/wrapper.js +0 -318
  1506. package/dist/src/utils/concurrentSessions.js +0 -179
  1507. package/dist/src/utils/config.js +0 -1084
  1508. package/dist/src/utils/configConstants.js +0 -18
  1509. package/dist/src/utils/contentArray.js +0 -45
  1510. package/dist/src/utils/context.js +0 -185
  1511. package/dist/src/utils/contextAnalysis.js +0 -171
  1512. package/dist/src/utils/contextSuggestions.js +0 -158
  1513. package/dist/src/utils/controlMessageCompat.js +0 -31
  1514. package/dist/src/utils/conversationRecovery.js +0 -436
  1515. package/dist/src/utils/cron.js +0 -260
  1516. package/dist/src/utils/cronJitterConfig.js +0 -62
  1517. package/dist/src/utils/cronScheduler.js +0 -388
  1518. package/dist/src/utils/cronTasks.js +0 -328
  1519. package/dist/src/utils/cronTasksLock.js +0 -159
  1520. package/dist/src/utils/crossProjectResume.js +0 -46
  1521. package/dist/src/utils/crypto.js +0 -13
  1522. package/dist/src/utils/cwd.js +0 -29
  1523. package/dist/src/utils/databaseMcp/common.js +0 -48
  1524. package/dist/src/utils/databaseMcp/mcpServer.js +0 -2
  1525. package/dist/src/utils/databaseMcp/server/connection.js +0 -243
  1526. package/dist/src/utils/databaseMcp/server/index.js +0 -1442
  1527. package/dist/src/utils/databaseMcp/server/queries.js +0 -683
  1528. package/dist/src/utils/databaseMcp/server/types.js +0 -7
  1529. package/dist/src/utils/databaseMcp/setup.js +0 -28
  1530. package/dist/src/utils/debug.js +0 -220
  1531. package/dist/src/utils/debugFilter.js +0 -125
  1532. package/dist/src/utils/deepLink/banner.js +0 -103
  1533. package/dist/src/utils/deepLink/parseDeepLink.js +0 -138
  1534. package/dist/src/utils/deepLink/protocolHandler.js +0 -119
  1535. package/dist/src/utils/deepLink/registerProtocol.js +0 -291
  1536. package/dist/src/utils/deepLink/terminalLauncher.js +0 -455
  1537. package/dist/src/utils/deepLink/terminalPreference.js +0 -51
  1538. package/dist/src/utils/desktopDeepLink.js +0 -208
  1539. package/dist/src/utils/detectRepository.js +0 -157
  1540. package/dist/src/utils/diagLogs.js +0 -74
  1541. package/dist/src/utils/diff.js +0 -108
  1542. package/dist/src/utils/directMemberMessage.js +0 -34
  1543. package/dist/src/utils/displayTags.js +0 -46
  1544. package/dist/src/utils/doctorContextWarnings.js +0 -179
  1545. package/dist/src/utils/doctorDiagnostic.js +0 -495
  1546. package/dist/src/utils/dxt/helpers.js +0 -64
  1547. package/dist/src/utils/dxt/zip.js +0 -167
  1548. package/dist/src/utils/earlyInput.js +0 -166
  1549. package/dist/src/utils/editor.js +0 -163
  1550. package/dist/src/utils/effort.js +0 -278
  1551. package/dist/src/utils/embeddedTools.js +0 -26
  1552. package/dist/src/utils/env.js +0 -358
  1553. package/dist/src/utils/envDynamic.js +0 -130
  1554. package/dist/src/utils/envUtils.js +0 -154
  1555. package/dist/src/utils/envValidation.js +0 -26
  1556. package/dist/src/utils/errorLogSink.js +0 -197
  1557. package/dist/src/utils/errors.js +0 -207
  1558. package/dist/src/utils/eventLoopStallDetector.js +0 -16
  1559. package/dist/src/utils/exampleCommands.js +0 -165
  1560. package/dist/src/utils/execFileNoThrow.js +0 -93
  1561. package/dist/src/utils/execFileNoThrowPortable.js +0 -111
  1562. package/dist/src/utils/execSyncWrapper.js +0 -68
  1563. package/dist/src/utils/exportRenderer.js +0 -71
  1564. package/dist/src/utils/extraUsage.js +0 -19
  1565. package/dist/src/utils/fastMode.js +0 -393
  1566. package/dist/src/utils/file.js +0 -467
  1567. package/dist/src/utils/fileHistory.js +0 -851
  1568. package/dist/src/utils/fileOperationAnalytics.js +0 -45
  1569. package/dist/src/utils/filePersistence/filePersistence.js +0 -212
  1570. package/dist/src/utils/filePersistence/outputsScanner.js +0 -104
  1571. package/dist/src/utils/filePersistence/types.js +0 -5
  1572. package/dist/src/utils/fileRead.js +0 -81
  1573. package/dist/src/utils/fileReadCache.js +0 -78
  1574. package/dist/src/utils/fileStateCache.js +0 -99
  1575. package/dist/src/utils/findExecutable.js +0 -13
  1576. package/dist/src/utils/fingerprint.js +0 -59
  1577. package/dist/src/utils/forkedAgent.js +0 -410
  1578. package/dist/src/utils/format.js +0 -238
  1579. package/dist/src/utils/formatBriefTimestamp.js +0 -72
  1580. package/dist/src/utils/fpsTracker.js +0 -34
  1581. package/dist/src/utils/frontmatterParser.js +0 -260
  1582. package/dist/src/utils/fsOperations.js +0 -834
  1583. package/dist/src/utils/fullscreen.js +0 -194
  1584. package/dist/src/utils/generatedFiles.js +0 -122
  1585. package/dist/src/utils/generators.js +0 -67
  1586. package/dist/src/utils/genericProcessUtils.js +0 -155
  1587. package/dist/src/utils/getWorktreePaths.js +0 -56
  1588. package/dist/src/utils/getWorktreePathsPortable.js +0 -23
  1589. package/dist/src/utils/ghPrStatus.js +0 -71
  1590. package/dist/src/utils/git/gitConfigParser.js +0 -226
  1591. package/dist/src/utils/git/gitFilesystem.js +0 -606
  1592. package/dist/src/utils/git/gitignore.js +0 -84
  1593. package/dist/src/utils/git.js +0 -725
  1594. package/dist/src/utils/gitDiff.js +0 -395
  1595. package/dist/src/utils/gitSettings.js +0 -18
  1596. package/dist/src/utils/github/ghAuthStatus.js +0 -23
  1597. package/dist/src/utils/githubRepoPathMapping.js +0 -135
  1598. package/dist/src/utils/glob.js +0 -90
  1599. package/dist/src/utils/gracefulShutdown.js +0 -447
  1600. package/dist/src/utils/groupToolUses.js +0 -126
  1601. package/dist/src/utils/handlePromptSubmit.js +0 -398
  1602. package/dist/src/utils/hash.js +0 -46
  1603. package/dist/src/utils/headlessProfiler.js +0 -147
  1604. package/dist/src/utils/heapDumpService.js +0 -202
  1605. package/dist/src/utils/heatmap.js +0 -151
  1606. package/dist/src/utils/highlightMatch.js +0 -28
  1607. package/dist/src/utils/hooks/AsyncHookRegistry.js +0 -187
  1608. package/dist/src/utils/hooks/apiQueryHookHelper.js +0 -77
  1609. package/dist/src/utils/hooks/execAgentHook.js +0 -257
  1610. package/dist/src/utils/hooks/execHttpHook.js +0 -184
  1611. package/dist/src/utils/hooks/execPromptHook.js +0 -171
  1612. package/dist/src/utils/hooks/fileChangedWatcher.js +0 -161
  1613. package/dist/src/utils/hooks/hookEvents.js +0 -111
  1614. package/dist/src/utils/hooks/hookHelpers.js +0 -60
  1615. package/dist/src/utils/hooks/hooksConfigManager.js +0 -323
  1616. package/dist/src/utils/hooks/hooksConfigSnapshot.js +0 -114
  1617. package/dist/src/utils/hooks/hooksSettings.js +0 -204
  1618. package/dist/src/utils/hooks/postSamplingHooks.js +0 -39
  1619. package/dist/src/utils/hooks/registerFrontmatterHooks.js +0 -47
  1620. package/dist/src/utils/hooks/registerSkillHooks.js +0 -40
  1621. package/dist/src/utils/hooks/sessionHooks.js +0 -252
  1622. package/dist/src/utils/hooks/skillImprovement.js +0 -211
  1623. package/dist/src/utils/hooks/ssrfGuard.js +0 -258
  1624. package/dist/src/utils/hooks.js +0 -3668
  1625. package/dist/src/utils/horizontalScroll.js +0 -108
  1626. package/dist/src/utils/http.js +0 -121
  1627. package/dist/src/utils/hyperlink.js +0 -28
  1628. package/dist/src/utils/iTermBackup.js +0 -48
  1629. package/dist/src/utils/ide.js +0 -1198
  1630. package/dist/src/utils/idePathConversion.js +0 -66
  1631. package/dist/src/utils/idleTimeout.js +0 -44
  1632. package/dist/src/utils/imagePaste.js +0 -329
  1633. package/dist/src/utils/imageResizer.js +0 -664
  1634. package/dist/src/utils/imageStore.js +0 -150
  1635. package/dist/src/utils/imageValidation.js +0 -92
  1636. package/dist/src/utils/immediateCommand.js +0 -12
  1637. package/dist/src/utils/inProcessTeammateHelpers.js +0 -71
  1638. package/dist/src/utils/ink.js +0 -20
  1639. package/dist/src/utils/intl.js +0 -83
  1640. package/dist/src/utils/jetbrains.js +0 -152
  1641. package/dist/src/utils/json.js +0 -295
  1642. package/dist/src/utils/jsonRead.js +0 -14
  1643. package/dist/src/utils/keyboardShortcuts.js +0 -11
  1644. package/dist/src/utils/lazySchema.js +0 -8
  1645. package/dist/src/utils/listSessionsImpl.js +0 -332
  1646. package/dist/src/utils/localInstaller.js +0 -131
  1647. package/dist/src/utils/lockfile.js +0 -22
  1648. package/dist/src/utils/log.js +0 -280
  1649. package/dist/src/utils/logoV2Utils.js +0 -288
  1650. package/dist/src/utils/mailbox.js +0 -50
  1651. package/dist/src/utils/managedEnv.js +0 -160
  1652. package/dist/src/utils/managedEnvConstants.js +0 -187
  1653. package/dist/src/utils/markdown.js +0 -300
  1654. package/dist/src/utils/markdownConfigLoader.js +0 -480
  1655. package/dist/src/utils/mcp/dateTimeParser.js +0 -102
  1656. package/dist/src/utils/mcp/elicitationValidation.js +0 -259
  1657. package/dist/src/utils/mcpInstructionsDelta.js +0 -97
  1658. package/dist/src/utils/mcpOutputStorage.js +0 -159
  1659. package/dist/src/utils/mcpValidation.js +0 -165
  1660. package/dist/src/utils/mcpWebSocketTransport.js +0 -180
  1661. package/dist/src/utils/memoize.js +0 -205
  1662. package/dist/src/utils/memory/types.js +0 -9
  1663. package/dist/src/utils/memory/versions.js +0 -7
  1664. package/dist/src/utils/memoryFileDetection.js +0 -247
  1665. package/dist/src/utils/messagePredicates.js +0 -6
  1666. package/dist/src/utils/messageQueueManager.js +0 -430
  1667. package/dist/src/utils/messages/mappers.js +0 -240
  1668. package/dist/src/utils/messages/systemInit.js +0 -74
  1669. package/dist/src/utils/messages.js +0 -4273
  1670. package/dist/src/utils/model/agent.js +0 -128
  1671. package/dist/src/utils/model/aliases.js +0 -21
  1672. package/dist/src/utils/model/antModels.js +0 -25
  1673. package/dist/src/utils/model/bedrock.js +0 -220
  1674. package/dist/src/utils/model/check1mAccess.js +0 -64
  1675. package/dist/src/utils/model/configs.js +0 -93
  1676. package/dist/src/utils/model/contextWindowUpgradeCheck.js +0 -41
  1677. package/dist/src/utils/model/deprecation.js +0 -72
  1678. package/dist/src/utils/model/model.js +0 -635
  1679. package/dist/src/utils/model/modelAllowlist.js +0 -148
  1680. package/dist/src/utils/model/modelCapabilities.js +0 -107
  1681. package/dist/src/utils/model/modelOptions.js +0 -627
  1682. package/dist/src/utils/model/modelStrings.js +0 -144
  1683. package/dist/src/utils/model/modelSupportOverrides.js +0 -40
  1684. package/dist/src/utils/model/openrouter.js +0 -51
  1685. package/dist/src/utils/model/providerBaseUrls.js +0 -77
  1686. package/dist/src/utils/model/providerCatalog.js +0 -81
  1687. package/dist/src/utils/model/providerModels.js +0 -334
  1688. package/dist/src/utils/model/providerProfiles.js +0 -392
  1689. package/dist/src/utils/model/providerProfilesDb.js +0 -556
  1690. package/dist/src/utils/model/providerSwitch.js +0 -68
  1691. package/dist/src/utils/model/providers.js +0 -199
  1692. package/dist/src/utils/model/validateModel.js +0 -257
  1693. package/dist/src/utils/modelCost.js +0 -160
  1694. package/dist/src/utils/modifiers.js +0 -35
  1695. package/dist/src/utils/mtls.js +0 -134
  1696. package/dist/src/utils/nativeInstaller/download.js +0 -370
  1697. package/dist/src/utils/nativeInstaller/index.js +0 -8
  1698. package/dist/src/utils/nativeInstaller/installer.js +0 -1396
  1699. package/dist/src/utils/nativeInstaller/packageManagers.js +0 -258
  1700. package/dist/src/utils/nativeInstaller/pidLock.js +0 -347
  1701. package/dist/src/utils/notebook.js +0 -176
  1702. package/dist/src/utils/objectGroupBy.js +0 -15
  1703. package/dist/src/utils/pasteStore.js +0 -93
  1704. package/dist/src/utils/path.js +0 -140
  1705. package/dist/src/utils/pdf.js +0 -236
  1706. package/dist/src/utils/pdfUtils.js +0 -61
  1707. package/dist/src/utils/peerAddress.js +0 -20
  1708. package/dist/src/utils/permissions/PermissionMode.js +0 -95
  1709. package/dist/src/utils/permissions/PermissionPromptToolResultSchema.js +0 -85
  1710. package/dist/src/utils/permissions/PermissionResult.js +0 -11
  1711. package/dist/src/utils/permissions/PermissionRule.js +0 -19
  1712. package/dist/src/utils/permissions/PermissionUpdate.js +0 -268
  1713. package/dist/src/utils/permissions/PermissionUpdateSchema.js +0 -61
  1714. package/dist/src/utils/permissions/autoModeState.js +0 -34
  1715. package/dist/src/utils/permissions/bashClassifier.js +0 -30
  1716. package/dist/src/utils/permissions/bypassPermissionsKillswitch.js +0 -115
  1717. package/dist/src/utils/permissions/classifierDecision.js +0 -88
  1718. package/dist/src/utils/permissions/classifierShared.js +0 -28
  1719. package/dist/src/utils/permissions/dangerousPatterns.js +0 -78
  1720. package/dist/src/utils/permissions/denialTracking.js +0 -34
  1721. package/dist/src/utils/permissions/filesystem.js +0 -1411
  1722. package/dist/src/utils/permissions/getNextPermissionMode.js +0 -74
  1723. package/dist/src/utils/permissions/pathValidation.js +0 -351
  1724. package/dist/src/utils/permissions/permissionExplainer.js +0 -188
  1725. package/dist/src/utils/permissions/permissionRuleParser.js +0 -177
  1726. package/dist/src/utils/permissions/permissionSetup.js +0 -1164
  1727. package/dist/src/utils/permissions/permissions.js +0 -1065
  1728. package/dist/src/utils/permissions/permissionsLoader.js +0 -217
  1729. package/dist/src/utils/permissions/shadowedRuleDetection.js +0 -149
  1730. package/dist/src/utils/permissions/shellRuleMatching.js +0 -174
  1731. package/dist/src/utils/permissions/yoloClassifier.js +0 -1195
  1732. package/dist/src/utils/planModeV2.js +0 -75
  1733. package/dist/src/utils/plans.js +0 -334
  1734. package/dist/src/utils/platform.js +0 -122
  1735. package/dist/src/utils/plugins/addDirPluginSettings.js +0 -53
  1736. package/dist/src/utils/plugins/cacheUtils.js +0 -174
  1737. package/dist/src/utils/plugins/dependencyResolver.js +0 -244
  1738. package/dist/src/utils/plugins/fetchTelemetry.js +0 -108
  1739. package/dist/src/utils/plugins/gitAvailability.js +0 -65
  1740. package/dist/src/utils/plugins/headlessPluginInstall.js +0 -136
  1741. package/dist/src/utils/plugins/hintRecommendation.js +0 -136
  1742. package/dist/src/utils/plugins/installCounts.js +0 -218
  1743. package/dist/src/utils/plugins/installedPluginsManager.js +0 -1003
  1744. package/dist/src/utils/plugins/loadPluginAgents.js +0 -219
  1745. package/dist/src/utils/plugins/loadPluginCommands.js +0 -595
  1746. package/dist/src/utils/plugins/loadPluginHooks.js +0 -239
  1747. package/dist/src/utils/plugins/loadPluginOutputStyles.js +0 -112
  1748. package/dist/src/utils/plugins/lspPluginIntegration.js +0 -293
  1749. package/dist/src/utils/plugins/lspRecommendation.js +0 -278
  1750. package/dist/src/utils/plugins/managedPlugins.js +0 -26
  1751. package/dist/src/utils/plugins/marketplaceHelpers.js +0 -470
  1752. package/dist/src/utils/plugins/marketplaceManager.js +0 -1939
  1753. package/dist/src/utils/plugins/mcpPluginIntegration.js +0 -465
  1754. package/dist/src/utils/plugins/mcpbHandler.js +0 -708
  1755. package/dist/src/utils/plugins/officialMarketplace.js +0 -21
  1756. package/dist/src/utils/plugins/officialMarketplaceGcs.js +0 -195
  1757. package/dist/src/utils/plugins/officialMarketplaceStartupCheck.js +0 -338
  1758. package/dist/src/utils/plugins/orphanedPluginFilter.js +0 -96
  1759. package/dist/src/utils/plugins/parseMarketplaceInput.js +0 -143
  1760. package/dist/src/utils/plugins/performStartupChecks.js +0 -66
  1761. package/dist/src/utils/plugins/pluginAutoupdate.js +0 -210
  1762. package/dist/src/utils/plugins/pluginBlocklist.js +0 -93
  1763. package/dist/src/utils/plugins/pluginDirectories.js +0 -170
  1764. package/dist/src/utils/plugins/pluginFlagging.js +0 -173
  1765. package/dist/src/utils/plugins/pluginIdentifier.js +0 -78
  1766. package/dist/src/utils/plugins/pluginInstallationHelpers.js +0 -400
  1767. package/dist/src/utils/plugins/pluginLoader.js +0 -2426
  1768. package/dist/src/utils/plugins/pluginOptionsStorage.js +0 -311
  1769. package/dist/src/utils/plugins/pluginPolicy.js +0 -18
  1770. package/dist/src/utils/plugins/pluginStartupCheck.js +0 -261
  1771. package/dist/src/utils/plugins/pluginVersioning.js +0 -128
  1772. package/dist/src/utils/plugins/reconciler.js +0 -181
  1773. package/dist/src/utils/plugins/refresh.js +0 -162
  1774. package/dist/src/utils/plugins/schemas.js +0 -1283
  1775. package/dist/src/utils/plugins/validatePlugin.js +0 -765
  1776. package/dist/src/utils/plugins/walkPluginMarkdown.js +0 -49
  1777. package/dist/src/utils/plugins/zipCache.js +0 -346
  1778. package/dist/src/utils/plugins/zipCacheAdapters.js +0 -133
  1779. package/dist/src/utils/postCommitAttribution.js +0 -16
  1780. package/dist/src/utils/powershell/dangerousCmdlets.js +0 -174
  1781. package/dist/src/utils/powershell/parser.js +0 -1357
  1782. package/dist/src/utils/powershell/staticPrefix.js +0 -277
  1783. package/dist/src/utils/preflightChecks.js +0 -147
  1784. package/dist/src/utils/privacyLevel.js +0 -49
  1785. package/dist/src/utils/process.js +0 -56
  1786. package/dist/src/utils/processUserInput/processBashCommand.js +0 -119
  1787. package/dist/src/utils/processUserInput/processSlashCommand.js +0 -845
  1788. package/dist/src/utils/processUserInput/processTextPrompt.js +0 -68
  1789. package/dist/src/utils/processUserInput/processUserInput.js +0 -326
  1790. package/dist/src/utils/profilerBase.js +0 -29
  1791. package/dist/src/utils/promptCategory.js +0 -39
  1792. package/dist/src/utils/promptEditor.js +0 -151
  1793. package/dist/src/utils/promptShellExecution.js +0 -119
  1794. package/dist/src/utils/proxy.js +0 -347
  1795. package/dist/src/utils/queryContext.js +0 -110
  1796. package/dist/src/utils/queryHelpers.js +0 -436
  1797. package/dist/src/utils/queryProfiler.js +0 -242
  1798. package/dist/src/utils/queueProcessor.js +0 -70
  1799. package/dist/src/utils/readEditContext.js +0 -176
  1800. package/dist/src/utils/readFileInRange.js +0 -278
  1801. package/dist/src/utils/releaseNotes.js +0 -304
  1802. package/dist/src/utils/renderOptions.js +0 -67
  1803. package/dist/src/utils/ripgrep.js +0 -540
  1804. package/dist/src/utils/sandbox/sandbox-adapter.js +0 -749
  1805. package/dist/src/utils/sandbox/sandbox-ui-utils.js +0 -11
  1806. package/dist/src/utils/sanitization.js +0 -72
  1807. package/dist/src/utils/screenshotClipboard.js +0 -89
  1808. package/dist/src/utils/sdkEventQueue.js +0 -49
  1809. package/dist/src/utils/sdkHeapDumpMonitor.js +0 -16
  1810. package/dist/src/utils/secureStorage/fallbackStorage.js +0 -59
  1811. package/dist/src/utils/secureStorage/index.js +0 -14
  1812. package/dist/src/utils/secureStorage/keychainPrefetch.js +0 -91
  1813. package/dist/src/utils/secureStorage/macOsKeychainHelpers.js +0 -91
  1814. package/dist/src/utils/secureStorage/macOsKeychainStorage.js +0 -192
  1815. package/dist/src/utils/secureStorage/plainTextStorage.js +0 -81
  1816. package/dist/src/utils/secureStorage/secureStoreDefs.js +0 -1
  1817. package/dist/src/utils/secureStorage/sqliteStorage.js +0 -217
  1818. package/dist/src/utils/secureStorage/types.js +0 -1
  1819. package/dist/src/utils/semanticBoolean.js +0 -23
  1820. package/dist/src/utils/semanticNumber.js +0 -34
  1821. package/dist/src/utils/semver.js +0 -53
  1822. package/dist/src/utils/sequential.js +0 -43
  1823. package/dist/src/utils/sessionActivity.js +0 -120
  1824. package/dist/src/utils/sessionDataUploader.js +0 -16
  1825. package/dist/src/utils/sessionEnvVars.js +0 -18
  1826. package/dist/src/utils/sessionEnvironment.js +0 -131
  1827. package/dist/src/utils/sessionFileAccessHooks.js +0 -207
  1828. package/dist/src/utils/sessionIngressAuth.js +0 -113
  1829. package/dist/src/utils/sessionRestore.js +0 -359
  1830. package/dist/src/utils/sessionStart.js +0 -165
  1831. package/dist/src/utils/sessionState.js +0 -76
  1832. package/dist/src/utils/sessionStorage.js +0 -4162
  1833. package/dist/src/utils/sessionStoragePortable.js +0 -665
  1834. package/dist/src/utils/sessionTitle.js +0 -120
  1835. package/dist/src/utils/sessionUrl.js +0 -50
  1836. package/dist/src/utils/set.js +0 -50
  1837. package/dist/src/utils/settings/allErrors.js +0 -29
  1838. package/dist/src/utils/settings/applySettingsChange.js +0 -65
  1839. package/dist/src/utils/settings/changeDetector.js +0 -409
  1840. package/dist/src/utils/settings/constants.js +0 -166
  1841. package/dist/src/utils/settings/internalWrites.js +0 -33
  1842. package/dist/src/utils/settings/managedPath.js +0 -29
  1843. package/dist/src/utils/settings/mdm/constants.js +0 -62
  1844. package/dist/src/utils/settings/mdm/rawRead.js +0 -97
  1845. package/dist/src/utils/settings/mdm/settings.js +0 -254
  1846. package/dist/src/utils/settings/permissionValidation.js +0 -224
  1847. package/dist/src/utils/settings/pluginOnlyPolicy.js +0 -53
  1848. package/dist/src/utils/settings/schemaOutput.js +0 -7
  1849. package/dist/src/utils/settings/settings.js +0 -791
  1850. package/dist/src/utils/settings/settingsCache.js +0 -47
  1851. package/dist/src/utils/settings/toolValidationConfig.js +0 -76
  1852. package/dist/src/utils/settings/types.js +0 -846
  1853. package/dist/src/utils/settings/validateEditTool.js +0 -34
  1854. package/dist/src/utils/settings/validation.js +0 -192
  1855. package/dist/src/utils/settings/validationTips.js +0 -111
  1856. package/dist/src/utils/shell/bashProvider.js +0 -202
  1857. package/dist/src/utils/shell/outputLimits.js +0 -7
  1858. package/dist/src/utils/shell/powershellDetection.js +0 -96
  1859. package/dist/src/utils/shell/powershellProvider.js +0 -104
  1860. package/dist/src/utils/shell/prefix.js +0 -246
  1861. package/dist/src/utils/shell/readOnlyCommandValidation.js +0 -1776
  1862. package/dist/src/utils/shell/resolveDefaultShell.js +0 -13
  1863. package/dist/src/utils/shell/shellProvider.js +0 -2
  1864. package/dist/src/utils/shell/shellToolUtils.js +0 -21
  1865. package/dist/src/utils/shell/specPrefix.js +0 -198
  1866. package/dist/src/utils/shellConfig.js +0 -136
  1867. package/dist/src/utils/sideQuery.js +0 -195
  1868. package/dist/src/utils/sideQuestion.js +0 -121
  1869. package/dist/src/utils/signal.js +0 -34
  1870. package/dist/src/utils/sinks.js +0 -15
  1871. package/dist/src/utils/skills/skillChangeDetector.js +0 -264
  1872. package/dist/src/utils/slashCommandParsing.js +0 -46
  1873. package/dist/src/utils/sleep.js +0 -72
  1874. package/dist/src/utils/sliceAnsi.js +0 -74
  1875. package/dist/src/utils/slowOperations.js +0 -323
  1876. package/dist/src/utils/standaloneAgent.js +0 -20
  1877. package/dist/src/utils/startupProfiler.js +0 -158
  1878. package/dist/src/utils/staticRender.js +0 -103
  1879. package/dist/src/utils/stats.js +0 -802
  1880. package/dist/src/utils/statsCache.js +0 -330
  1881. package/dist/src/utils/status.js +0 -544
  1882. package/dist/src/utils/statusNoticeDefinitions.js +0 -112
  1883. package/dist/src/utils/statusNoticeHelpers.js +0 -15
  1884. package/dist/src/utils/stream.js +0 -73
  1885. package/dist/src/utils/streamJsonStdoutGuard.js +0 -107
  1886. package/dist/src/utils/streamlinedTransform.js +0 -162
  1887. package/dist/src/utils/stringUtils.js +0 -202
  1888. package/dist/src/utils/subprocessEnv.js +0 -87
  1889. package/dist/src/utils/suggestions/commandSuggestions.js +0 -458
  1890. package/dist/src/utils/suggestions/directoryCompletion.js +0 -191
  1891. package/dist/src/utils/suggestions/shellHistoryCompletion.js +0 -95
  1892. package/dist/src/utils/suggestions/skillUsageTracking.js +0 -50
  1893. package/dist/src/utils/suggestions/slackChannelSuggestions.js +0 -169
  1894. package/dist/src/utils/swarm/It2SetupPrompt.js +0 -386
  1895. package/dist/src/utils/swarm/backends/ITermBackend.js +0 -276
  1896. package/dist/src/utils/swarm/backends/InProcessBackend.js +0 -237
  1897. package/dist/src/utils/swarm/backends/PaneBackendExecutor.js +0 -250
  1898. package/dist/src/utils/swarm/backends/TmuxBackend.js +0 -574
  1899. package/dist/src/utils/swarm/backends/detection.js +0 -112
  1900. package/dist/src/utils/swarm/backends/it2Setup.js +0 -185
  1901. package/dist/src/utils/swarm/backends/registry.js +0 -369
  1902. package/dist/src/utils/swarm/backends/teammateModeSnapshot.js +0 -68
  1903. package/dist/src/utils/swarm/backends/types.js +0 -9
  1904. package/dist/src/utils/swarm/constants.js +0 -29
  1905. package/dist/src/utils/swarm/inProcessRunner.js +0 -1021
  1906. package/dist/src/utils/swarm/leaderPermissionBridge.js +0 -31
  1907. package/dist/src/utils/swarm/permissionSync.js +0 -667
  1908. package/dist/src/utils/swarm/reconnection.js +0 -82
  1909. package/dist/src/utils/swarm/spawnInProcess.js +0 -218
  1910. package/dist/src/utils/swarm/spawnUtils.js +0 -123
  1911. package/dist/src/utils/swarm/teamHelpers.js +0 -484
  1912. package/dist/src/utils/swarm/teammateInit.js +0 -87
  1913. package/dist/src/utils/swarm/teammateLayoutManager.js +0 -82
  1914. package/dist/src/utils/swarm/teammateModel.js +0 -9
  1915. package/dist/src/utils/swarm/teammatePromptAddendum.js +0 -17
  1916. package/dist/src/utils/systemDirectories.js +0 -51
  1917. package/dist/src/utils/systemPrompt.js +0 -90
  1918. package/dist/src/utils/systemPromptType.js +0 -9
  1919. package/dist/src/utils/systemTheme.js +0 -108
  1920. package/dist/src/utils/systemThemeWatcher.js +0 -16
  1921. package/dist/src/utils/taggedId.js +0 -49
  1922. package/dist/src/utils/task/TaskOutput.js +0 -320
  1923. package/dist/src/utils/task/diskOutput.js +0 -387
  1924. package/dist/src/utils/task/framework.js +0 -236
  1925. package/dist/src/utils/task/outputFormatting.js +0 -24
  1926. package/dist/src/utils/task/sdkProgress.js +0 -24
  1927. package/dist/src/utils/tasks.js +0 -672
  1928. package/dist/src/utils/teamDiscovery.js +0 -48
  1929. package/dist/src/utils/teamMemoryOps.js +0 -67
  1930. package/dist/src/utils/teammate.js +0 -237
  1931. package/dist/src/utils/teammateContext.js +0 -56
  1932. package/dist/src/utils/teammateMailbox.js +0 -793
  1933. package/dist/src/utils/telemetry/betaSessionTracing.js +0 -371
  1934. package/dist/src/utils/telemetry/bigqueryExporter.js +0 -178
  1935. package/dist/src/utils/telemetry/events.js +0 -57
  1936. package/dist/src/utils/telemetry/instrumentation.js +0 -617
  1937. package/dist/src/utils/telemetry/logger.js +0 -25
  1938. package/dist/src/utils/telemetry/perfettoTracing.js +0 -882
  1939. package/dist/src/utils/telemetry/pluginTelemetry.js +0 -157
  1940. package/dist/src/utils/telemetry/sessionTracing.js +0 -693
  1941. package/dist/src/utils/telemetry/skillLoadedEvent.js +0 -26
  1942. package/dist/src/utils/telemetryAttributes.js +0 -57
  1943. package/dist/src/utils/teleport/api.js +0 -299
  1944. package/dist/src/utils/teleport/environmentSelection.js +0 -55
  1945. package/dist/src/utils/teleport/environments.js +0 -84
  1946. package/dist/src/utils/teleport/gitBundle.js +0 -192
  1947. package/dist/src/utils/teleport.js +0 -1041
  1948. package/dist/src/utils/tempfile.js +0 -26
  1949. package/dist/src/utils/terminal.js +0 -105
  1950. package/dist/src/utils/terminalPanel.js +0 -155
  1951. package/dist/src/utils/textHighlighting.js +0 -113
  1952. package/dist/src/utils/theme.js +0 -525
  1953. package/dist/src/utils/thinking.js +0 -130
  1954. package/dist/src/utils/timeouts.js +0 -35
  1955. package/dist/src/utils/tmuxSocket.js +0 -373
  1956. package/dist/src/utils/todo/types.js +0 -9
  1957. package/dist/src/utils/tokenBudget.js +0 -62
  1958. package/dist/src/utils/tokens.js +0 -223
  1959. package/dist/src/utils/toolErrors.js +0 -101
  1960. package/dist/src/utils/toolPool.js +0 -63
  1961. package/dist/src/utils/toolResultStorage.js +0 -769
  1962. package/dist/src/utils/toolSchemaCache.js +0 -7
  1963. package/dist/src/utils/toolSearch.js +0 -551
  1964. package/dist/src/utils/transcriptSearch.js +0 -200
  1965. package/dist/src/utils/treeify.js +0 -111
  1966. package/dist/src/utils/truncate.js +0 -164
  1967. package/dist/src/utils/udsClient.js +0 -16
  1968. package/dist/src/utils/udsMessaging.js +0 -16
  1969. package/dist/src/utils/ultraplan/ccrSession.js +0 -264
  1970. package/dist/src/utils/ultraplan/keyword.js +0 -122
  1971. package/dist/src/utils/ultraplan/prompt.txt +0 -1
  1972. package/dist/src/utils/unaryLogging.js +0 -16
  1973. package/dist/src/utils/undercover.js +0 -89
  1974. package/dist/src/utils/user.js +0 -138
  1975. package/dist/src/utils/userAgent.js +0 -13
  1976. package/dist/src/utils/userPromptKeywords.js +0 -21
  1977. package/dist/src/utils/uuid.js +0 -22
  1978. package/dist/src/utils/warningHandler.js +0 -97
  1979. package/dist/src/utils/which.js +0 -75
  1980. package/dist/src/utils/windowsPaths.js +0 -146
  1981. package/dist/src/utils/withResolvers.js +0 -13
  1982. package/dist/src/utils/words.js +0 -793
  1983. package/dist/src/utils/workloadContext.js +0 -42
  1984. package/dist/src/utils/worktree.js +0 -1142
  1985. package/dist/src/utils/worktreeModeEnabled.js +0 -11
  1986. package/dist/src/utils/xdg.js +0 -52
  1987. package/dist/src/utils/xml.js +0 -15
  1988. package/dist/src/utils/yaml.js +0 -16
  1989. package/dist/src/utils/zodToJsonSchema.js +0 -19
  1990. package/dist/src/vim/motions.js +0 -73
  1991. package/dist/src/vim/operators.js +0 -401
  1992. package/dist/src/vim/textObjects.js +0 -153
  1993. package/dist/src/vim/transitions.js +0 -340
  1994. package/dist/src/vim/types.js +0 -93
  1995. package/dist/src/voice/voiceModeEnabled.js +0 -48
  1996. package/dist/src/whatsapp/bridge.js +0 -267
  1997. package/dist/src/whatsapp/config.js +0 -128
  1998. package/dist/src/whatsapp/markdown.js +0 -37
  1999. package/dist/src/whatsapp/mirror.js +0 -74
  2000. package/dist/src/whatsapp/session.js +0 -142
@@ -1,1939 +0,0 @@
1
- /**
2
- * Marketplace manager for Context Code plugins
3
- *
4
- * This module provides functionality to:
5
- * - Manage known marketplace sources (URLs, GitHub repos, npm packages, local files)
6
- * - Cache marketplace manifests locally for offline access
7
- * - Install plugins from marketplace entries
8
- * - Track and update marketplace configurations
9
- *
10
- * File structure managed by this module:
11
- * ~/.claude/
12
- * └── plugins/
13
- * ├── known_marketplaces.json # Configuration of all known marketplaces
14
- * └── marketplaces/ # Cache directory for marketplace data
15
- * ├── my-marketplace.json # Cached marketplace from URL source
16
- * └── github-marketplace/ # Cloned repository for GitHub source
17
- * └── .claude-plugin/
18
- * └── marketplace.json
19
- */
20
- import axios from 'axios';
21
- import { writeFile } from 'fs/promises';
22
- import isEqual from 'lodash-es/isEqual.js';
23
- import memoize from 'lodash-es/memoize.js';
24
- import { basename, dirname, isAbsolute, join, resolve, sep } from 'path';
25
- import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js';
26
- import { logForDebugging } from '../debug.js';
27
- import { isEnvTruthy } from '../envUtils.js';
28
- import { ConfigParseError, errorMessage, getErrnoCode, isENOENT, toError, } from '../errors.js';
29
- import { execFileNoThrow, execFileNoThrowWithCwd } from '../execFileNoThrow.js';
30
- import { getFsImplementation } from '../fsOperations.js';
31
- import { gitExe } from '../git.js';
32
- import { logError } from '../log.js';
33
- import { getInitialSettings, getSettingsForSource, updateSettingsForSource, } from '../settings/settings.js';
34
- import { jsonParse, jsonStringify, writeFileSync_DEPRECATED, } from '../slowOperations.js';
35
- import { getAddDirEnabledPlugins, getAddDirExtraMarketplaces, } from './addDirPluginSettings.js';
36
- import { markPluginVersionOrphaned } from './cacheUtils.js';
37
- import { classifyFetchError, logPluginFetch } from './fetchTelemetry.js';
38
- import { removeAllPluginsForMarketplace } from './installedPluginsManager.js';
39
- import { extractHostFromSource, formatSourceForDisplay, getHostPatternsFromAllowlist, getStrictKnownMarketplaces, isSourceAllowedByPolicy, isSourceInBlocklist, } from './marketplaceHelpers.js';
40
- import { OFFICIAL_MARKETPLACE_NAME, OFFICIAL_MARKETPLACE_SOURCE, } from './officialMarketplace.js';
41
- import { fetchOfficialMarketplaceFromGcs } from './officialMarketplaceGcs.js';
42
- import { deletePluginDataDir, getPluginSeedDirs, getPluginsDirectory, } from './pluginDirectories.js';
43
- import { parsePluginIdentifier } from './pluginIdentifier.js';
44
- import { deletePluginOptions } from './pluginOptionsStorage.js';
45
- import { isLocalMarketplaceSource, KnownMarketplacesFileSchema, PluginMarketplaceSchema, validateOfficialNameSource, } from './schemas.js';
46
- /**
47
- * Get the path to the known marketplaces configuration file
48
- * Using a function instead of a constant allows proper mocking in tests
49
- */
50
- function getKnownMarketplacesFile() {
51
- return join(getPluginsDirectory(), 'known_marketplaces.json');
52
- }
53
- /**
54
- * Get the path to the marketplaces cache directory
55
- * Using a function instead of a constant allows proper mocking in tests
56
- */
57
- export function getMarketplacesCacheDir() {
58
- return join(getPluginsDirectory(), 'marketplaces');
59
- }
60
- /**
61
- * Memoized inner function to get marketplace data.
62
- * This caches the marketplace in memory after loading from disk or network.
63
- */
64
- /**
65
- * Clear all cached marketplace data (for testing)
66
- */
67
- export function clearMarketplacesCache() {
68
- getMarketplace.cache?.clear?.();
69
- }
70
- /**
71
- * Get declared marketplace intent from merged settings and --add-dir sources.
72
- * This is what SHOULD exist — used by the reconciler to find gaps.
73
- *
74
- * The official marketplace is implicitly declared with `sourceIsFallback: true`
75
- * when any enabled plugin references it.
76
- */
77
- export function getDeclaredMarketplaces() {
78
- const implicit = {};
79
- // Only the official marketplace can be implicitly declared — it's the one
80
- // built-in source we know. Other marketplaces have no default source to inject.
81
- // Explicitly-disabled entries (value: false) don't count.
82
- const enabledPlugins = {
83
- ...getAddDirEnabledPlugins(),
84
- ...(getInitialSettings().enabledPlugins ?? {}),
85
- };
86
- for (const [pluginId, value] of Object.entries(enabledPlugins)) {
87
- if (value &&
88
- parsePluginIdentifier(pluginId).marketplace === OFFICIAL_MARKETPLACE_NAME) {
89
- implicit[OFFICIAL_MARKETPLACE_NAME] = {
90
- source: OFFICIAL_MARKETPLACE_SOURCE,
91
- sourceIsFallback: true,
92
- };
93
- break;
94
- }
95
- }
96
- // Lowest precedence: implicit < --add-dir < merged settings.
97
- // An explicit extraKnownMarketplaces entry for claude-plugins-official
98
- // in --add-dir or settings wins.
99
- return {
100
- ...implicit,
101
- ...getAddDirExtraMarketplaces(),
102
- ...(getInitialSettings().extraKnownMarketplaces ?? {}),
103
- };
104
- }
105
- /**
106
- * Find which editable settings source declared a marketplace.
107
- * Checks in reverse precedence order (highest priority last) so the
108
- * result is the source that "wins" in the merged view.
109
- * Returns null if the marketplace isn't declared in any editable source.
110
- */
111
- export function getMarketplaceDeclaringSource(name) {
112
- // Check highest-precedence editable sources first — the one that wins
113
- // in the merged view is the one we should write back to.
114
- const editableSources = ['localSettings', 'projectSettings', 'userSettings'];
115
- for (const source of editableSources) {
116
- const settings = getSettingsForSource(source);
117
- if (settings?.extraKnownMarketplaces?.[name]) {
118
- return source;
119
- }
120
- }
121
- return null;
122
- }
123
- /**
124
- * Save a marketplace entry to settings (intent layer).
125
- * Does NOT touch known_marketplaces.json (state layer).
126
- *
127
- * @param name - The marketplace name
128
- * @param entry - The marketplace config
129
- * @param settingSource - Which settings source to write to (defaults to userSettings)
130
- */
131
- export function saveMarketplaceToSettings(name, entry, settingSource = 'userSettings') {
132
- const existing = getSettingsForSource(settingSource) ?? {};
133
- const current = { ...existing.extraKnownMarketplaces };
134
- current[name] = entry;
135
- updateSettingsForSource(settingSource, { extraKnownMarketplaces: current });
136
- }
137
- /**
138
- * Load known marketplaces configuration from disk
139
- *
140
- * Reads the configuration file at ~/.claude/plugins/known_marketplaces.json
141
- * which contains a mapping of marketplace names to their sources and metadata.
142
- *
143
- * Example configuration file content:
144
- * ```json
145
- * {
146
- * "official-marketplace": {
147
- * "source": { "source": "url", "url": "https://example.com/marketplace.json" },
148
- * "installLocation": "/Users/me/.claude/plugins/marketplaces/official-marketplace.json",
149
- * "lastUpdated": "2024-01-15T10:30:00.000Z"
150
- * },
151
- * "company-plugins": {
152
- * "source": { "source": "github", "repo": "mycompany/plugins" },
153
- * "installLocation": "/Users/me/.claude/plugins/marketplaces/company-plugins",
154
- * "lastUpdated": "2024-01-14T15:45:00.000Z"
155
- * }
156
- * }
157
- * ```
158
- *
159
- * @returns Configuration object mapping marketplace names to their metadata
160
- */
161
- export async function loadKnownMarketplacesConfig() {
162
- const fs = getFsImplementation();
163
- const configFile = getKnownMarketplacesFile();
164
- try {
165
- const content = await fs.readFile(configFile, {
166
- encoding: 'utf-8',
167
- });
168
- const data = jsonParse(content);
169
- // Validate against schema
170
- const parsed = KnownMarketplacesFileSchema().safeParse(data);
171
- if (!parsed.success) {
172
- const errorMsg = `Marketplace configuration file is corrupted: ${parsed.error.issues.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`;
173
- logForDebugging(errorMsg, {
174
- level: 'error',
175
- });
176
- throw new ConfigParseError(errorMsg, configFile, data);
177
- }
178
- return parsed.data;
179
- }
180
- catch (error) {
181
- if (isENOENT(error)) {
182
- return {};
183
- }
184
- // If it's already a ConfigParseError, re-throw it
185
- if (error instanceof ConfigParseError) {
186
- throw error;
187
- }
188
- // For JSON parse errors or I/O errors, throw with helpful message
189
- const errorMsg = `Failed to load marketplace configuration: ${errorMessage(error)}`;
190
- logForDebugging(errorMsg, {
191
- level: 'error',
192
- });
193
- throw new Error(errorMsg);
194
- }
195
- }
196
- /**
197
- * Load known marketplaces config, returning {} on any error instead of throwing.
198
- *
199
- * Use this on read-only paths (plugin loading, feature checks) where a corrupted
200
- * config should degrade gracefully rather than crash. DO NOT use on load→mutate→save
201
- * paths — returning {} there would cause the save to overwrite the corrupted file
202
- * with just the new entry, permanently destroying the user's other entries. The
203
- * throwing variant preserves the file so the user can fix the corruption and recover.
204
- */
205
- export async function loadKnownMarketplacesConfigSafe() {
206
- try {
207
- return await loadKnownMarketplacesConfig();
208
- }
209
- catch {
210
- // Inner function already logged via logForDebugging. Don't logError here —
211
- // corrupted user config isn't a Context Code bug, shouldn't hit the error file.
212
- return {};
213
- }
214
- }
215
- /**
216
- * Save known marketplaces configuration to disk
217
- *
218
- * Writes the configuration to ~/.claude/plugins/known_marketplaces.json,
219
- * creating the directory structure if it doesn't exist.
220
- *
221
- * @param config - The marketplace configuration to save
222
- */
223
- export async function saveKnownMarketplacesConfig(config) {
224
- // Validate before saving
225
- const parsed = KnownMarketplacesFileSchema().safeParse(config);
226
- const configFile = getKnownMarketplacesFile();
227
- if (!parsed.success) {
228
- throw new ConfigParseError(`Invalid marketplace config: ${parsed.error.message}`, configFile, config);
229
- }
230
- const fs = getFsImplementation();
231
- // Get directory from config file path to ensure consistency
232
- const dir = join(configFile, '..');
233
- await fs.mkdir(dir);
234
- writeFileSync_DEPRECATED(configFile, jsonStringify(parsed.data, null, 2), {
235
- encoding: 'utf-8',
236
- flush: true,
237
- });
238
- }
239
- /**
240
- * Register marketplaces from the read-only seed directories into the primary
241
- * known_marketplaces.json.
242
- *
243
- * The seed's known_marketplaces.json contains installLocation paths pointing
244
- * into the seed dir itself. Registering those entries into the primary JSON
245
- * makes them visible to all marketplace readers (getMarketplaceCacheOnly,
246
- * getPluginByIdCacheOnly, etc.) without any loader changes — they just follow
247
- * the installLocation wherever it points.
248
- *
249
- * Seed entries always win for marketplaces declared in the seed — the seed is
250
- * admin-managed (baked into the container image). If admin updates the seed
251
- * in a new image, those changes propagate on next boot. Users opt out of seed
252
- * plugins via `plugin disable`, not by removing the marketplace.
253
- *
254
- * With multiple seed dirs (path-delimiter-separated), first-seed-wins: a
255
- * marketplace name claimed by an earlier seed is skipped by later seeds.
256
- *
257
- * autoUpdate is forced to false since the seed is read-only and git-pull would
258
- * fail. installLocation is computed from the runtime seedDir, not trusted from
259
- * the seed's JSON (handles multi-stage Docker mount-path drift).
260
- *
261
- * Idempotent: second call with unchanged seed writes nothing.
262
- *
263
- * @returns true if any marketplace entries were written/changed (caller should
264
- * clear caches so earlier plugin-load passes don't keep stale "marketplace
265
- * not found" state)
266
- */
267
- export async function registerSeedMarketplaces() {
268
- const seedDirs = getPluginSeedDirs();
269
- if (seedDirs.length === 0)
270
- return false;
271
- const primary = await loadKnownMarketplacesConfig();
272
- // First-seed-wins across this registration pass. Can't use the isEqual check
273
- // alone — two seeds with the same name will have different installLocations.
274
- const claimed = new Set();
275
- let changed = 0;
276
- for (const seedDir of seedDirs) {
277
- const seedConfig = await readSeedKnownMarketplaces(seedDir);
278
- if (!seedConfig)
279
- continue;
280
- for (const [name, seedEntry] of Object.entries(seedConfig)) {
281
- if (claimed.has(name))
282
- continue;
283
- // Compute installLocation relative to THIS seedDir, not the build-time
284
- // path baked into the seed's JSON. Handles multi-stage Docker builds
285
- // where the seed is mounted at a different path than where it was built.
286
- const resolvedLocation = await findSeedMarketplaceLocation(seedDir, name);
287
- if (!resolvedLocation) {
288
- // Seed content missing (incomplete build) — leave primary alone, but
289
- // don't claim the name either: a later seed may have working content.
290
- logForDebugging(`Seed marketplace '${name}' not found under ${seedDir}/marketplaces/, skipping`, { level: 'warn' });
291
- continue;
292
- }
293
- claimed.add(name);
294
- const desired = {
295
- source: seedEntry.source,
296
- installLocation: resolvedLocation,
297
- lastUpdated: seedEntry.lastUpdated,
298
- autoUpdate: false,
299
- };
300
- // Skip if primary already matches — idempotent no-op, no write.
301
- if (isEqual(primary[name], desired))
302
- continue;
303
- // Seed wins — admin-managed. Overwrite any existing primary entry.
304
- primary[name] = desired;
305
- changed++;
306
- }
307
- }
308
- if (changed > 0) {
309
- await saveKnownMarketplacesConfig(primary);
310
- logForDebugging(`Synced ${changed} marketplace(s) from seed dir(s)`);
311
- return true;
312
- }
313
- return false;
314
- }
315
- async function readSeedKnownMarketplaces(seedDir) {
316
- const seedJsonPath = join(seedDir, 'known_marketplaces.json');
317
- try {
318
- const content = await getFsImplementation().readFile(seedJsonPath, {
319
- encoding: 'utf-8',
320
- });
321
- const parsed = KnownMarketplacesFileSchema().safeParse(jsonParse(content));
322
- if (!parsed.success) {
323
- logForDebugging(`Seed known_marketplaces.json invalid at ${seedDir}: ${parsed.error.message}`, { level: 'warn' });
324
- return null;
325
- }
326
- return parsed.data;
327
- }
328
- catch (e) {
329
- if (!isENOENT(e)) {
330
- logForDebugging(`Failed to read seed known_marketplaces.json at ${seedDir}: ${e}`, { level: 'warn' });
331
- }
332
- return null;
333
- }
334
- }
335
- /**
336
- * Locate a marketplace in the seed directory by name.
337
- *
338
- * Probes the canonical locations under seedDir/marketplaces/ rather than
339
- * trusting the seed's stored installLocation (which may have a stale absolute
340
- * path from a different build-time mount point).
341
- *
342
- * @returns Readable location, or null if neither format exists/validates
343
- */
344
- async function findSeedMarketplaceLocation(seedDir, name) {
345
- const dirCandidate = join(seedDir, 'marketplaces', name);
346
- const jsonCandidate = join(seedDir, 'marketplaces', `${name}.json`);
347
- for (const candidate of [dirCandidate, jsonCandidate]) {
348
- try {
349
- await readCachedMarketplace(candidate);
350
- return candidate;
351
- }
352
- catch {
353
- // Try next candidate
354
- }
355
- }
356
- return null;
357
- }
358
- /**
359
- * If installLocation points into a configured seed directory, return that seed
360
- * directory. Seed-managed entries are admin-controlled — users can't
361
- * remove/refresh/modify them (they'd be overwritten by registerSeedMarketplaces
362
- * on next startup). Returning the specific seed lets error messages name it.
363
- */
364
- function seedDirFor(installLocation) {
365
- return getPluginSeedDirs().find(d => installLocation === d || installLocation.startsWith(d + sep));
366
- }
367
- /**
368
- * Git pull operation (exported for testing)
369
- *
370
- * Pulls latest changes with a configurable timeout (default 120s, override via CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS).
371
- * Provides helpful error messages for common failure scenarios.
372
- * If a ref is specified, fetches and checks out that specific branch or tag.
373
- */
374
- // Environment variables to prevent git from prompting for credentials
375
- const GIT_NO_PROMPT_ENV = {
376
- GIT_TERMINAL_PROMPT: '0', // Prevent terminal credential prompts
377
- GIT_ASKPASS: '', // Disable askpass GUI programs
378
- };
379
- const DEFAULT_PLUGIN_GIT_TIMEOUT_MS = 120 * 1000;
380
- function getPluginGitTimeoutMs() {
381
- const envValue = process.env.CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS;
382
- if (envValue) {
383
- const parsed = parseInt(envValue, 10);
384
- if (!isNaN(parsed) && parsed > 0) {
385
- return parsed;
386
- }
387
- }
388
- return DEFAULT_PLUGIN_GIT_TIMEOUT_MS;
389
- }
390
- export async function gitPull(cwd, ref, options) {
391
- logForDebugging(`git pull: cwd=${cwd} ref=${ref ?? 'default'}`);
392
- const env = { ...process.env, ...GIT_NO_PROMPT_ENV };
393
- const credentialArgs = options?.disableCredentialHelper
394
- ? ['-c', 'credential.helper=']
395
- : [];
396
- if (ref) {
397
- const fetchResult = await execFileNoThrowWithCwd(gitExe(), [...credentialArgs, 'fetch', 'origin', ref], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
398
- if (fetchResult.code !== 0) {
399
- return enhanceGitPullErrorMessages(fetchResult);
400
- }
401
- const checkoutResult = await execFileNoThrowWithCwd(gitExe(), [...credentialArgs, 'checkout', ref], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
402
- if (checkoutResult.code !== 0) {
403
- return enhanceGitPullErrorMessages(checkoutResult);
404
- }
405
- const pullResult = await execFileNoThrowWithCwd(gitExe(), [...credentialArgs, 'pull', 'origin', ref], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
406
- if (pullResult.code !== 0) {
407
- return enhanceGitPullErrorMessages(pullResult);
408
- }
409
- await gitSubmoduleUpdate(cwd, credentialArgs, env, options?.sparsePaths);
410
- return pullResult;
411
- }
412
- const result = await execFileNoThrowWithCwd(gitExe(), [...credentialArgs, 'pull', 'origin', 'HEAD'], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
413
- if (result.code !== 0) {
414
- return enhanceGitPullErrorMessages(result);
415
- }
416
- await gitSubmoduleUpdate(cwd, credentialArgs, env, options?.sparsePaths);
417
- return result;
418
- }
419
- /**
420
- * Sync submodule working dirs after a successful pull. gitClone() uses
421
- * --recurse-submodules, but gitPull() didn't — the parent repo's submodule
422
- * pointer would advance while the working dir stayed at the old commit,
423
- * making plugin sources in submodules unresolvable after marketplace update.
424
- * Non-fatal: a failed submodule update logs a warning; most marketplaces
425
- * don't use submodules at all. (gh-30696)
426
- *
427
- * Skipped for sparse clones — gitClone's sparse path intentionally omits
428
- * --recurse-submodules to preserve partial-clone bandwidth savings, and
429
- * .gitmodules is a root file that cone-mode sparse-checkout always
430
- * materializes, so the .gitmodules gate alone can't distinguish sparse repos.
431
- *
432
- * Perf: git-submodule is a bash script that spawns ~20 subprocesses (~35ms+)
433
- * even when no submodules exist. .gitmodules is a tracked file — pull
434
- * materializes it iff the repo has submodules — so gate on its presence to
435
- * skip the spawn for the common case.
436
- *
437
- * --init performs first-contact clone of newly-added submodules, so maintain
438
- * parity with gitClone's non-sparse path: StrictHostKeyChecking=yes for
439
- * fail-closed SSH (unknown hosts reject rather than silently populate
440
- * known_hosts), and --depth 1 for shallow clone (matching --shallow-submodules).
441
- * --depth only affects not-yet-initialized submodules; existing shallow
442
- * submodules are unaffected.
443
- */
444
- async function gitSubmoduleUpdate(cwd, credentialArgs, env, sparsePaths) {
445
- if (sparsePaths && sparsePaths.length > 0)
446
- return;
447
- const hasGitmodules = await getFsImplementation()
448
- .stat(join(cwd, '.gitmodules'))
449
- .then(() => true, () => false);
450
- if (!hasGitmodules)
451
- return;
452
- const result = await execFileNoThrowWithCwd(gitExe(), [
453
- '-c',
454
- 'core.sshCommand=ssh -o BatchMode=yes -o StrictHostKeyChecking=yes',
455
- ...credentialArgs,
456
- 'submodule',
457
- 'update',
458
- '--init',
459
- '--recursive',
460
- '--depth',
461
- '1',
462
- ], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
463
- if (result.code !== 0) {
464
- logForDebugging(`git submodule update failed (non-fatal): ${result.stderr}`, { level: 'warn' });
465
- }
466
- }
467
- /**
468
- * Enhance error messages for git pull failures
469
- */
470
- function enhanceGitPullErrorMessages(result) {
471
- if (result.code === 0) {
472
- return result;
473
- }
474
- // Detect execa timeout kills via the error field (stderr won't contain "timed out"
475
- // when the process is killed by SIGTERM — the timeout info is only in error)
476
- if (result.error?.includes('timed out')) {
477
- const timeoutSec = Math.round(getPluginGitTimeoutMs() / 1000);
478
- return {
479
- ...result,
480
- stderr: `Git pull timed out after ${timeoutSec}s. Try increasing the timeout via CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS environment variable.\n\nOriginal error: ${result.stderr}`,
481
- };
482
- }
483
- // Detect SSH host key verification failures (check before the generic
484
- // 'Could not read from remote' catch — that string appears in both cases).
485
- // OpenSSH emits "Host key verification failed" for BOTH host-not-in-known_hosts
486
- // and host-key-has-changed — the latter also includes the "REMOTE HOST
487
- // IDENTIFICATION HAS CHANGED" banner, which needs different remediation.
488
- if (result.stderr.includes('REMOTE HOST IDENTIFICATION HAS CHANGED')) {
489
- return {
490
- ...result,
491
- stderr: `SSH host key for this marketplace's git host has changed (server key rotation or possible MITM). Remove the stale entry with: ssh-keygen -R <host>\nThen connect once manually to accept the new key.\n\nOriginal error: ${result.stderr}`,
492
- };
493
- }
494
- if (result.stderr.includes('Host key verification failed')) {
495
- return {
496
- ...result,
497
- stderr: `SSH host key verification failed while updating marketplace. The host key is not in your known_hosts file. Connect once manually to add it (e.g., ssh -T git@<host>), or remove and re-add the marketplace with an HTTPS URL.\n\nOriginal error: ${result.stderr}`,
498
- };
499
- }
500
- // Detect SSH authentication failures
501
- if (result.stderr.includes('Permission denied (publickey)') ||
502
- result.stderr.includes('Could not read from remote repository')) {
503
- return {
504
- ...result,
505
- stderr: `SSH authentication failed while updating marketplace. Please ensure your SSH keys are configured.\n\nOriginal error: ${result.stderr}`,
506
- };
507
- }
508
- // Detect network issues
509
- if (result.stderr.includes('timed out') ||
510
- result.stderr.includes('Could not resolve host')) {
511
- return {
512
- ...result,
513
- stderr: `Network error while updating marketplace. Please check your internet connection.\n\nOriginal error: ${result.stderr}`,
514
- };
515
- }
516
- return result;
517
- }
518
- /**
519
- * Check if SSH is likely to work for GitHub
520
- * This is a quick heuristic check that avoids the full clone timeout
521
- *
522
- * Uses StrictHostKeyChecking=yes (not accept-new) so an unknown github.com
523
- * host key fails closed rather than being silently added to known_hosts.
524
- * This prevents a network-level MITM from poisoning known_hosts on first
525
- * contact. Users who already have github.com in known_hosts see no change;
526
- * users who don't are routed to the HTTPS clone path.
527
- *
528
- * @returns true if SSH auth succeeds and github.com is already trusted
529
- */
530
- async function isGitHubSshLikelyConfigured() {
531
- try {
532
- // Quick SSH connection test with 2 second timeout
533
- // This fails fast if SSH isn't configured
534
- const result = await execFileNoThrow('ssh', [
535
- '-T',
536
- '-o',
537
- 'BatchMode=yes',
538
- '-o',
539
- 'ConnectTimeout=2',
540
- '-o',
541
- 'StrictHostKeyChecking=yes',
542
- 'git@github.com',
543
- ], {
544
- timeout: 3000, // 3 second total timeout
545
- });
546
- // SSH to github.com always returns exit code 1 with "successfully authenticated"
547
- // or exit code 255 with "Permission denied" - we want the former
548
- const configured = result.code === 1 &&
549
- (result.stderr?.includes('successfully authenticated') ||
550
- result.stdout?.includes('successfully authenticated'));
551
- logForDebugging(`SSH config check: code=${result.code} configured=${configured}`);
552
- return configured;
553
- }
554
- catch (error) {
555
- // Any error means SSH isn't configured properly
556
- logForDebugging(`SSH configuration check failed: ${errorMessage(error)}`, {
557
- level: 'warn',
558
- });
559
- return false;
560
- }
561
- }
562
- /**
563
- * Check if a git error indicates authentication failure.
564
- * Used to provide enhanced error messages for auth failures.
565
- */
566
- function isAuthenticationError(stderr) {
567
- return (stderr.includes('Authentication failed') ||
568
- stderr.includes('could not read Username') ||
569
- stderr.includes('terminal prompts disabled') ||
570
- stderr.includes('403') ||
571
- stderr.includes('401'));
572
- }
573
- /**
574
- * Extract the SSH host from a git URL for error messaging.
575
- * Matches the SSH format user@host:path (e.g., git@github.com:owner/repo.git).
576
- */
577
- function extractSshHost(gitUrl) {
578
- const match = gitUrl.match(/^[^@]+@([^:]+):/);
579
- return match?.[1] ?? null;
580
- }
581
- /**
582
- * Git clone operation (exported for testing)
583
- *
584
- * Clones a git repository with a configurable timeout (default 120s, override via CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS)
585
- * and larger repositories. Provides helpful error messages for common failure scenarios.
586
- * Optionally checks out a specific branch or tag.
587
- *
588
- * Does NOT disable credential helpers — this allows the user's existing auth setup
589
- * (gh auth, keychain, git-credential-store, etc.) to work natively for private repos.
590
- * Interactive prompts are still prevented via GIT_TERMINAL_PROMPT=0, GIT_ASKPASS='',
591
- * stdin: 'ignore', and BatchMode=yes for SSH.
592
- *
593
- * Uses StrictHostKeyChecking=yes (not accept-new): unknown SSH hosts fail closed
594
- * with a clear message rather than being silently trusted on first contact. For
595
- * the github source type, the preflight check routes unknown-host users to HTTPS
596
- * automatically; for explicit git@host:… URLs, users see an actionable error.
597
- */
598
- export async function gitClone(gitUrl, targetPath, ref, sparsePaths) {
599
- const useSparse = sparsePaths && sparsePaths.length > 0;
600
- const args = [
601
- '-c',
602
- 'core.sshCommand=ssh -o BatchMode=yes -o StrictHostKeyChecking=yes',
603
- 'clone',
604
- '--depth',
605
- '1',
606
- ];
607
- if (useSparse) {
608
- // Partial clone: skip blob download until checkout, defer checkout until
609
- // after sparse-checkout is configured. Submodules are intentionally dropped
610
- // for sparse clones — sparse monorepos rarely need them, and recursing
611
- // submodules would defeat the partial-clone bandwidth savings.
612
- args.push('--filter=blob:none', '--no-checkout');
613
- }
614
- else {
615
- args.push('--recurse-submodules', '--shallow-submodules');
616
- }
617
- if (ref) {
618
- args.push('--branch', ref);
619
- }
620
- args.push(gitUrl, targetPath);
621
- const timeoutMs = getPluginGitTimeoutMs();
622
- logForDebugging(`git clone: url=${redactUrlCredentials(gitUrl)} ref=${ref ?? 'default'} timeout=${timeoutMs}ms`);
623
- const result = await execFileNoThrowWithCwd(gitExe(), args, {
624
- timeout: timeoutMs,
625
- stdin: 'ignore',
626
- env: { ...process.env, ...GIT_NO_PROMPT_ENV },
627
- });
628
- // Scrub credentials from execa's error/stderr fields before any logging or
629
- // returning. execa's shortMessage embeds the full command line (including
630
- // the credentialed URL), and result.stderr may also contain it on some git
631
- // versions.
632
- const redacted = redactUrlCredentials(gitUrl);
633
- if (gitUrl !== redacted) {
634
- if (result.error)
635
- result.error = result.error.replaceAll(gitUrl, redacted);
636
- if (result.stderr)
637
- result.stderr = result.stderr.replaceAll(gitUrl, redacted);
638
- }
639
- if (result.code === 0) {
640
- if (useSparse) {
641
- // Configure the sparse cone, then materialize only those paths.
642
- // `sparse-checkout set --cone` handles both init and path selection
643
- // in a single step on git >= 2.25.
644
- const sparseResult = await execFileNoThrowWithCwd(gitExe(), ['sparse-checkout', 'set', '--cone', '--', ...sparsePaths], {
645
- cwd: targetPath,
646
- timeout: timeoutMs,
647
- stdin: 'ignore',
648
- env: { ...process.env, ...GIT_NO_PROMPT_ENV },
649
- });
650
- if (sparseResult.code !== 0) {
651
- return {
652
- code: sparseResult.code,
653
- stderr: `git sparse-checkout set failed: ${sparseResult.stderr}`,
654
- };
655
- }
656
- const checkoutResult = await execFileNoThrowWithCwd(gitExe(),
657
- // ref was already passed to clone via --branch, so HEAD points to it;
658
- // if no ref, HEAD points to the remote's default branch.
659
- ['checkout', 'HEAD'], {
660
- cwd: targetPath,
661
- timeout: timeoutMs,
662
- stdin: 'ignore',
663
- env: { ...process.env, ...GIT_NO_PROMPT_ENV },
664
- });
665
- if (checkoutResult.code !== 0) {
666
- return {
667
- code: checkoutResult.code,
668
- stderr: `git checkout after sparse-checkout failed: ${checkoutResult.stderr}`,
669
- };
670
- }
671
- }
672
- logForDebugging(`git clone succeeded: ${redactUrlCredentials(gitUrl)}`);
673
- return result;
674
- }
675
- logForDebugging(`git clone failed: url=${redactUrlCredentials(gitUrl)} code=${result.code} error=${result.error ?? 'none'} stderr=${result.stderr}`, { level: 'warn' });
676
- // Detect timeout kills — when execFileNoThrowWithCwd kills the process via SIGTERM,
677
- // stderr may only contain partial output (e.g. "Cloning into '...'") with no
678
- // "timed out" string. Check the error field from execa which contains the
679
- // timeout message.
680
- if (result.error?.includes('timed out')) {
681
- return {
682
- ...result,
683
- stderr: `Git clone timed out after ${Math.round(timeoutMs / 1000)}s. The repository may be too large for the current timeout. Set CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS to increase it (e.g., 300000 for 5 minutes).\n\nOriginal error: ${result.stderr}`,
684
- };
685
- }
686
- // Enhance error messages for common scenarios
687
- if (result.stderr) {
688
- // Host key verification failure — check FIRST, before the generic
689
- // 'Could not read from remote repository' catch (that string appears
690
- // in both stderr outputs, so order matters). OpenSSH emits
691
- // "Host key verification failed" for BOTH host-not-in-known_hosts and
692
- // host-key-has-changed; distinguish them by the key-change banner.
693
- if (result.stderr.includes('REMOTE HOST IDENTIFICATION HAS CHANGED')) {
694
- const host = extractSshHost(gitUrl);
695
- const removeHint = host ? `ssh-keygen -R ${host}` : 'ssh-keygen -R <host>';
696
- return {
697
- ...result,
698
- stderr: `SSH host key has changed (server key rotation or possible MITM). Remove the stale known_hosts entry:\n ${removeHint}\nThen connect once manually to verify and accept the new key.\n\nOriginal error: ${result.stderr}`,
699
- };
700
- }
701
- if (result.stderr.includes('Host key verification failed')) {
702
- const host = extractSshHost(gitUrl);
703
- const connectHint = host ? `ssh -T git@${host}` : 'ssh -T git@<host>';
704
- return {
705
- ...result,
706
- stderr: `SSH host key is not in your known_hosts file. To add it, connect once manually (this will show the fingerprint for you to verify):\n ${connectHint}\n\nOr use an HTTPS URL instead (recommended for public repos).\n\nOriginal error: ${result.stderr}`,
707
- };
708
- }
709
- if (result.stderr.includes('Permission denied (publickey)') ||
710
- result.stderr.includes('Could not read from remote repository')) {
711
- return {
712
- ...result,
713
- stderr: `SSH authentication failed. Please ensure your SSH keys are configured for GitHub, or use an HTTPS URL instead.\n\nOriginal error: ${result.stderr}`,
714
- };
715
- }
716
- if (isAuthenticationError(result.stderr)) {
717
- return {
718
- ...result,
719
- stderr: `HTTPS authentication failed. Please ensure your credential helper is configured (e.g., gh auth login).\n\nOriginal error: ${result.stderr}`,
720
- };
721
- }
722
- if (result.stderr.includes('timed out') ||
723
- result.stderr.includes('timeout') ||
724
- result.stderr.includes('Could not resolve host')) {
725
- return {
726
- ...result,
727
- stderr: `Network error or timeout while cloning repository. Please check your internet connection and try again.\n\nOriginal error: ${result.stderr}`,
728
- };
729
- }
730
- }
731
- // Fallback for empty stderr — gh-28373: user saw "Failed to clone
732
- // marketplace repository:" with nothing after the colon. Git CAN fail
733
- // without writing to stderr (stdout instead, or output swallowed by
734
- // credential helper / signal). execa's error field has the execa-level
735
- // message (command, exit code, signal); exit code is the minimum.
736
- if (!result.stderr) {
737
- return {
738
- code: result.code,
739
- stderr: result.error ||
740
- `git clone exited with code ${result.code} (no stderr output). Run with --debug to see the full command.`,
741
- };
742
- }
743
- return result;
744
- }
745
- /**
746
- * Safely invoke a progress callback, catching and logging any errors.
747
- * Prevents callback errors from aborting marketplace operations.
748
- *
749
- * @param onProgress - The progress callback to invoke
750
- * @param message - Progress message to pass to the callback
751
- */
752
- function safeCallProgress(onProgress, message) {
753
- if (!onProgress)
754
- return;
755
- try {
756
- onProgress(message);
757
- }
758
- catch (callbackError) {
759
- logForDebugging(`Progress callback error: ${errorMessage(callbackError)}`, {
760
- level: 'warn',
761
- });
762
- }
763
- }
764
- /**
765
- * Reconcile the on-disk sparse-checkout state with the desired config.
766
- *
767
- * Runs before gitPull to handle transitions:
768
- * - Full→Sparse or SparseA→SparseB: run `sparse-checkout set --cone` (idempotent)
769
- * - Sparse→Full: return non-zero so caller falls back to rm+reclone. Avoids
770
- * `sparse-checkout disable` on a --filter=blob:none partial clone, which would
771
- * trigger a lazy fetch of every blob in the monorepo.
772
- * - Full→Full (common case): single local `git config --get` check, no-op.
773
- *
774
- * Failures here (ENOENT, not a repo) are harmless — gitPull will also fail and
775
- * trigger the clone path, which establishes the correct state from scratch.
776
- */
777
- export async function reconcileSparseCheckout(cwd, sparsePaths) {
778
- const env = { ...process.env, ...GIT_NO_PROMPT_ENV };
779
- if (sparsePaths && sparsePaths.length > 0) {
780
- return execFileNoThrowWithCwd(gitExe(), ['sparse-checkout', 'set', '--cone', '--', ...sparsePaths], { cwd, timeout: getPluginGitTimeoutMs(), stdin: 'ignore', env });
781
- }
782
- const check = await execFileNoThrowWithCwd(gitExe(), ['config', '--get', 'core.sparseCheckout'], { cwd, stdin: 'ignore', env });
783
- if (check.code === 0 && check.stdout.trim() === 'true') {
784
- return {
785
- code: 1,
786
- stderr: 'sparsePaths removed from config but repository is sparse; re-cloning for full checkout',
787
- };
788
- }
789
- return { code: 0, stderr: '' };
790
- }
791
- /**
792
- * Cache a marketplace from a git repository
793
- *
794
- * Clones or updates a git repository containing marketplace data.
795
- * If the repository already exists at cachePath, pulls the latest changes.
796
- * If pulling fails, removes the directory and re-clones.
797
- *
798
- * Example repository structure:
799
- * ```
800
- * my-marketplace/
801
- * ├── .claude-plugin/
802
- * │ └── marketplace.json # Default location for marketplace manifest
803
- * ├── plugins/ # Plugin implementations
804
- * └── README.md
805
- * ```
806
- *
807
- * @param gitUrl - The git URL to clone (https or ssh)
808
- * @param cachePath - Local directory path to clone/update the repository
809
- * @param ref - Optional git branch or tag to checkout
810
- * @param onProgress - Optional callback to report progress
811
- */
812
- async function cacheMarketplaceFromGit(gitUrl, cachePath, ref, sparsePaths, onProgress, options) {
813
- const fs = getFsImplementation();
814
- // Attempt incremental update; fall back to re-clone if the repo is absent,
815
- // stale, or otherwise not updatable. Using pull-first avoids a stat-before-operate
816
- // TOCTOU check: gitPull returns non-zero when cachePath is missing or has no .git.
817
- const timeoutSec = Math.round(getPluginGitTimeoutMs() / 1000);
818
- safeCallProgress(onProgress, `Refreshing marketplace cache (timeout: ${timeoutSec}s)…`);
819
- // Reconcile sparse-checkout config before pulling. If this requires a re-clone
820
- // (Sparse→Full transition) or fails (missing dir, not a repo), skip straight
821
- // to the rm+clone fallback.
822
- const reconcileResult = await reconcileSparseCheckout(cachePath, sparsePaths);
823
- if (reconcileResult.code === 0) {
824
- const pullStarted = performance.now();
825
- const pullResult = await gitPull(cachePath, ref, {
826
- disableCredentialHelper: options?.disableCredentialHelper,
827
- sparsePaths,
828
- });
829
- logPluginFetch('marketplace_pull', gitUrl, pullResult.code === 0 ? 'success' : 'failure', performance.now() - pullStarted, pullResult.code === 0 ? undefined : classifyFetchError(pullResult.stderr));
830
- if (pullResult.code === 0)
831
- return;
832
- logForDebugging(`git pull failed, will re-clone: ${pullResult.stderr}`, {
833
- level: 'warn',
834
- });
835
- }
836
- else {
837
- logForDebugging(`sparse-checkout reconcile requires re-clone: ${reconcileResult.stderr}`);
838
- }
839
- try {
840
- await fs.rm(cachePath, { recursive: true });
841
- // rm succeeded — a stale or partially-cloned directory existed; log for diagnostics
842
- logForDebugging(`Found stale marketplace directory at ${cachePath}, cleaning up to allow re-clone`, { level: 'warn' });
843
- safeCallProgress(onProgress, 'Found stale directory, cleaning up and re-cloning…');
844
- }
845
- catch (rmError) {
846
- if (!isENOENT(rmError)) {
847
- const rmErrorMsg = errorMessage(rmError);
848
- throw new Error(`Failed to clean up existing marketplace directory. Please manually delete the directory at ${cachePath} and try again.\n\nTechnical details: ${rmErrorMsg}`);
849
- }
850
- // ENOENT — cachePath didn't exist, this is a fresh install, nothing to clean up
851
- }
852
- // Clone the repository (one attempt — no internal retry loop)
853
- const refMessage = ref ? ` (ref: ${ref})` : '';
854
- safeCallProgress(onProgress, `Cloning repository (timeout: ${timeoutSec}s): ${redactUrlCredentials(gitUrl)}${refMessage}`);
855
- const cloneStarted = performance.now();
856
- const result = await gitClone(gitUrl, cachePath, ref, sparsePaths);
857
- logPluginFetch('marketplace_clone', gitUrl, result.code === 0 ? 'success' : 'failure', performance.now() - cloneStarted, result.code === 0 ? undefined : classifyFetchError(result.stderr));
858
- if (result.code !== 0) {
859
- // Clean up any partial directory created by the failed clone so the next
860
- // attempt starts fresh. Best-effort: if this fails, the stale dir will be
861
- // auto-detected and removed at the top of the next call.
862
- try {
863
- await fs.rm(cachePath, { recursive: true, force: true });
864
- }
865
- catch {
866
- // ignore
867
- }
868
- throw new Error(`Failed to clone marketplace repository: ${result.stderr}`);
869
- }
870
- safeCallProgress(onProgress, 'Clone complete, validating marketplace…');
871
- }
872
- /**
873
- * Redact header values for safe logging
874
- *
875
- * @param headers - Headers to redact
876
- * @returns Headers with values replaced by '***REDACTED***'
877
- */
878
- function redactHeaders(headers) {
879
- return Object.fromEntries(Object.entries(headers).map(([key]) => [key, '***REDACTED***']));
880
- }
881
- /**
882
- * Redact userinfo (username:password) in a URL to avoid logging credentials.
883
- *
884
- * Marketplace URLs may embed credentials (e.g. GitHub PATs in
885
- * `https://user:token@github.com/org/repo`). Debug logs and progress output
886
- * are written to disk and may be included in bug reports, so credentials must
887
- * be redacted before logging.
888
- *
889
- * Redacts all credentials from http(s) URLs:
890
- * https://user:token@github.com/repo → https://***:***@github.com/repo
891
- * https://:token@github.com/repo → https://:***@github.com/repo
892
- * https://token@github.com/repo → https://***@github.com/repo
893
- *
894
- * Both username and password are redacted unconditionally on http(s) because
895
- * it is impossible to distinguish `placeholder:secret` (e.g. x-access-token:ghp_...)
896
- * from `secret:placeholder` (e.g. ghp_...:x-oauth-basic) by parsing alone.
897
- * Non-http(s) schemes (ssh://git@...) and non-URL inputs (`owner/repo` shorthand)
898
- * pass through unchanged.
899
- */
900
- function redactUrlCredentials(urlString) {
901
- try {
902
- const parsed = new URL(urlString);
903
- const isHttp = parsed.protocol === 'http:' || parsed.protocol === 'https:';
904
- if (isHttp && (parsed.username || parsed.password)) {
905
- if (parsed.username)
906
- parsed.username = '***';
907
- if (parsed.password)
908
- parsed.password = '***';
909
- return parsed.toString();
910
- }
911
- }
912
- catch {
913
- // Not a valid URL — safe as-is
914
- }
915
- return urlString;
916
- }
917
- /**
918
- * Cache a marketplace from a URL
919
- *
920
- * Downloads a marketplace.json file from a URL and saves it locally.
921
- * Creates the cache directory structure if it doesn't exist.
922
- *
923
- * Example marketplace.json structure:
924
- * ```json
925
- * {
926
- * "name": "my-marketplace",
927
- * "owner": { "name": "John Doe", "email": "john@example.com" },
928
- * "plugins": [
929
- * {
930
- * "id": "my-plugin",
931
- * "name": "My Plugin",
932
- * "source": "./plugins/my-plugin.json",
933
- * "category": "productivity",
934
- * "description": "A helpful plugin"
935
- * }
936
- * ]
937
- * }
938
- * ```
939
- *
940
- * @param url - The URL to download the marketplace.json from
941
- * @param cachePath - Local file path to save the downloaded marketplace
942
- * @param customHeaders - Optional custom HTTP headers for authentication
943
- * @param onProgress - Optional callback to report progress
944
- */
945
- async function cacheMarketplaceFromUrl(url, cachePath, customHeaders, onProgress) {
946
- const fs = getFsImplementation();
947
- const redactedUrl = redactUrlCredentials(url);
948
- safeCallProgress(onProgress, `Downloading marketplace from ${redactedUrl}`);
949
- logForDebugging(`Downloading marketplace from URL: ${redactedUrl}`);
950
- if (customHeaders && Object.keys(customHeaders).length > 0) {
951
- logForDebugging(`Using custom headers: ${jsonStringify(redactHeaders(customHeaders))}`);
952
- }
953
- const headers = {
954
- ...customHeaders,
955
- // User-Agent must come last to prevent override (for consistency with WebFetch)
956
- 'User-Agent': 'Claude-Code-Plugin-Manager',
957
- };
958
- let response;
959
- const fetchStarted = performance.now();
960
- try {
961
- response = await axios.get(url, {
962
- timeout: 10000,
963
- headers,
964
- });
965
- }
966
- catch (error) {
967
- logPluginFetch('marketplace_url', url, 'failure', performance.now() - fetchStarted, classifyFetchError(error));
968
- if (axios.isAxiosError(error)) {
969
- if (error.code === 'ECONNREFUSED' || error.code === 'ENOTFOUND') {
970
- throw new Error(`Could not connect to ${redactedUrl}. Please check your internet connection and verify the URL is correct.\n\nTechnical details: ${error.message}`);
971
- }
972
- if (error.code === 'ETIMEDOUT') {
973
- throw new Error(`Request timed out while downloading marketplace from ${redactedUrl}. The server may be slow or unreachable.\n\nTechnical details: ${error.message}`);
974
- }
975
- if (error.response) {
976
- throw new Error(`HTTP ${error.response.status} error while downloading marketplace from ${redactedUrl}. The marketplace file may not exist at this URL.\n\nTechnical details: ${error.message}`);
977
- }
978
- }
979
- throw new Error(`Failed to download marketplace from ${redactedUrl}: ${errorMessage(error)}`);
980
- }
981
- safeCallProgress(onProgress, 'Validating marketplace data');
982
- // Validate the response is a valid marketplace
983
- const result = PluginMarketplaceSchema().safeParse(response.data);
984
- if (!result.success) {
985
- logPluginFetch('marketplace_url', url, 'failure', performance.now() - fetchStarted, 'invalid_schema');
986
- throw new ConfigParseError(`Invalid marketplace schema from URL: ${result.error.issues.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`, redactedUrl, response.data);
987
- }
988
- logPluginFetch('marketplace_url', url, 'success', performance.now() - fetchStarted);
989
- safeCallProgress(onProgress, 'Saving marketplace to cache');
990
- // Ensure cache directory exists
991
- const cacheDir = join(cachePath, '..');
992
- await fs.mkdir(cacheDir);
993
- // Write the validated marketplace file
994
- writeFileSync_DEPRECATED(cachePath, jsonStringify(result.data, null, 2), {
995
- encoding: 'utf-8',
996
- flush: true,
997
- });
998
- }
999
- /**
1000
- * Generate a cache path for a marketplace source
1001
- */
1002
- function getCachePathForSource(source) {
1003
- const tempName = source.source === 'github'
1004
- ? source.repo.replace('/', '-')
1005
- : source.source === 'npm'
1006
- ? source.package.replace('@', '').replace('/', '-')
1007
- : source.source === 'file'
1008
- ? basename(source.path).replace('.json', '')
1009
- : source.source === 'directory'
1010
- ? basename(source.path)
1011
- : 'temp_' + Date.now();
1012
- return tempName;
1013
- }
1014
- /**
1015
- * Parse and validate JSON file with a Zod schema
1016
- */
1017
- async function parseFileWithSchema(filePath, schema) {
1018
- const fs = getFsImplementation();
1019
- const content = await fs.readFile(filePath, { encoding: 'utf-8' });
1020
- let data;
1021
- try {
1022
- data = jsonParse(content);
1023
- }
1024
- catch (error) {
1025
- throw new ConfigParseError(`Invalid JSON in ${filePath}: ${errorMessage(error)}`, filePath, content);
1026
- }
1027
- const result = schema.safeParse(data);
1028
- if (!result.success) {
1029
- throw new ConfigParseError(`Invalid schema: ${filePath} ${result.error?.issues.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`, filePath, data);
1030
- }
1031
- return result.data;
1032
- }
1033
- /**
1034
- * Load and cache a marketplace from its source
1035
- *
1036
- * Handles different source types:
1037
- * - URL: Downloads marketplace.json directly
1038
- * - GitHub: Clones repo and looks for .claude-plugin/marketplace.json
1039
- * - Git: Clones repository from git URL
1040
- * - NPM: (Not yet implemented) Would fetch from npm package
1041
- * - File: Reads from local filesystem
1042
- *
1043
- * After loading, validates the marketplace schema and renames the cache
1044
- * to match the marketplace's actual name from the manifest.
1045
- *
1046
- * Cache structure:
1047
- * ~/.claude/plugins/marketplaces/
1048
- * ├── official-marketplace.json # From URL source
1049
- * ├── github-marketplace/ # From GitHub/Git source
1050
- * │ └── .claude-plugin/
1051
- * │ └── marketplace.json
1052
- * └── local-marketplace.json # From file source
1053
- *
1054
- * @param source - The marketplace source to load from
1055
- * @param onProgress - Optional callback to report progress
1056
- * @returns Object containing the validated marketplace and its cache path
1057
- * @throws If marketplace file not found or validation fails
1058
- */
1059
- async function loadAndCacheMarketplace(source, onProgress) {
1060
- const fs = getFsImplementation();
1061
- const cacheDir = getMarketplacesCacheDir();
1062
- // Ensure cache directory exists
1063
- await fs.mkdir(cacheDir);
1064
- let temporaryCachePath;
1065
- let marketplacePath;
1066
- let cleanupNeeded = false;
1067
- // Generate a temp name for the cache path
1068
- const tempName = getCachePathForSource(source);
1069
- try {
1070
- switch (source.source) {
1071
- case 'url': {
1072
- // Direct URL to marketplace.json
1073
- temporaryCachePath = join(cacheDir, `${tempName}.json`);
1074
- cleanupNeeded = true;
1075
- await cacheMarketplaceFromUrl(source.url, temporaryCachePath, source.headers, onProgress);
1076
- marketplacePath = temporaryCachePath;
1077
- break;
1078
- }
1079
- case 'github': {
1080
- // Smart SSH/HTTPS selection: check if SSH is configured before trying it
1081
- // This avoids waiting for timeout on SSH when it's not configured
1082
- const sshUrl = `git@github.com:${source.repo}.git`;
1083
- const httpsUrl = `https://github.com/${source.repo}.git`;
1084
- temporaryCachePath = join(cacheDir, tempName);
1085
- cleanupNeeded = true;
1086
- let lastError = null;
1087
- // Quick check if SSH is likely to work
1088
- const sshConfigured = await isGitHubSshLikelyConfigured();
1089
- if (sshConfigured) {
1090
- // SSH looks good, try it first
1091
- safeCallProgress(onProgress, `Cloning via SSH: ${sshUrl}`);
1092
- try {
1093
- await cacheMarketplaceFromGit(sshUrl, temporaryCachePath, source.ref, source.sparsePaths, onProgress);
1094
- }
1095
- catch (err) {
1096
- lastError = toError(err);
1097
- // Log SSH failure for monitoring
1098
- logError(lastError);
1099
- // SSH failed despite being configured, try HTTPS fallback
1100
- safeCallProgress(onProgress, `SSH clone failed, retrying with HTTPS: ${httpsUrl}`);
1101
- logForDebugging(`SSH clone failed for ${source.repo} despite SSH being configured, falling back to HTTPS`, { level: 'info' });
1102
- // Clean up failed SSH attempt if it created anything
1103
- await fs.rm(temporaryCachePath, { recursive: true, force: true });
1104
- // Try HTTPS
1105
- try {
1106
- await cacheMarketplaceFromGit(httpsUrl, temporaryCachePath, source.ref, source.sparsePaths, onProgress);
1107
- lastError = null; // Success!
1108
- }
1109
- catch (httpsErr) {
1110
- // HTTPS also failed - use HTTPS error as the final error
1111
- lastError = toError(httpsErr);
1112
- // Log HTTPS failure for monitoring (both SSH and HTTPS failed)
1113
- logError(lastError);
1114
- }
1115
- }
1116
- }
1117
- else {
1118
- // SSH not configured, go straight to HTTPS
1119
- safeCallProgress(onProgress, `SSH not configured, cloning via HTTPS: ${httpsUrl}`);
1120
- logForDebugging(`SSH not configured for GitHub, using HTTPS for ${source.repo}`, { level: 'info' });
1121
- try {
1122
- await cacheMarketplaceFromGit(httpsUrl, temporaryCachePath, source.ref, source.sparsePaths, onProgress);
1123
- }
1124
- catch (err) {
1125
- lastError = toError(err);
1126
- // Always try SSH as fallback for ANY HTTPS failure
1127
- // Log HTTPS failure for monitoring
1128
- logError(lastError);
1129
- // HTTPS failed, try SSH as fallback
1130
- safeCallProgress(onProgress, `HTTPS clone failed, retrying with SSH: ${sshUrl}`);
1131
- logForDebugging(`HTTPS clone failed for ${source.repo} (${lastError.message}), falling back to SSH`, { level: 'info' });
1132
- // Clean up failed HTTPS attempt if it created anything
1133
- await fs.rm(temporaryCachePath, { recursive: true, force: true });
1134
- // Try SSH
1135
- try {
1136
- await cacheMarketplaceFromGit(sshUrl, temporaryCachePath, source.ref, source.sparsePaths, onProgress);
1137
- lastError = null; // Success!
1138
- }
1139
- catch (sshErr) {
1140
- // SSH also failed - use SSH error as the final error
1141
- lastError = toError(sshErr);
1142
- // Log SSH failure for monitoring (both HTTPS and SSH failed)
1143
- logError(lastError);
1144
- }
1145
- }
1146
- }
1147
- // If we still have an error, throw it
1148
- if (lastError) {
1149
- throw lastError;
1150
- }
1151
- marketplacePath = join(temporaryCachePath, source.path || '.claude-plugin/marketplace.json');
1152
- break;
1153
- }
1154
- case 'git': {
1155
- temporaryCachePath = join(cacheDir, tempName);
1156
- cleanupNeeded = true;
1157
- await cacheMarketplaceFromGit(source.url, temporaryCachePath, source.ref, source.sparsePaths, onProgress);
1158
- marketplacePath = join(temporaryCachePath, source.path || '.claude-plugin/marketplace.json');
1159
- break;
1160
- }
1161
- case 'npm': {
1162
- // TODO: Implement npm package support
1163
- throw new Error('NPM marketplace sources not yet implemented');
1164
- }
1165
- case 'file': {
1166
- // For local files, resolve paths relative to marketplace root directory
1167
- // File sources point to .claude-plugin/marketplace.json, so the marketplace
1168
- // root is two directories up (parent of .claude-plugin/)
1169
- // Resolve to absolute so error messages show the actual path checked
1170
- // (legacy known_marketplaces.json entries may have relative paths)
1171
- const absPath = resolve(source.path);
1172
- marketplacePath = absPath;
1173
- temporaryCachePath = dirname(dirname(absPath));
1174
- cleanupNeeded = false;
1175
- break;
1176
- }
1177
- case 'directory': {
1178
- // For directories, look for .claude-plugin/marketplace.json
1179
- // Resolve to absolute so error messages show the actual path checked
1180
- // (legacy known_marketplaces.json entries may have relative paths)
1181
- const absPath = resolve(source.path);
1182
- marketplacePath = join(absPath, '.claude-plugin', 'marketplace.json');
1183
- temporaryCachePath = absPath;
1184
- cleanupNeeded = false;
1185
- break;
1186
- }
1187
- case 'settings': {
1188
- // Inline manifest from settings.json — no fetch. Synthesize the
1189
- // marketplace.json on disk so getMarketplaceCacheOnly reads it
1190
- // like any other source. The plugins array already passed
1191
- // PluginMarketplaceEntrySchema validation when settings were parsed;
1192
- // the post-switch parseFileWithSchema re-validates the full
1193
- // PluginMarketplaceSchema (catches schema drift between the two).
1194
- //
1195
- // Writing to source.name up front means the rename below is a no-op
1196
- // (temporaryCachePath === finalCachePath). known_marketplaces.json
1197
- // stores this source object including the plugins array, so
1198
- // diffMarketplaces detects settings edits via isEqual — no special
1199
- // dirty-tracking needed.
1200
- temporaryCachePath = join(cacheDir, source.name);
1201
- marketplacePath = join(temporaryCachePath, '.claude-plugin', 'marketplace.json');
1202
- cleanupNeeded = false;
1203
- await fs.mkdir(dirname(marketplacePath));
1204
- // No `satisfies PluginMarketplace` here: source.plugins is the narrow
1205
- // SettingsMarketplacePlugin type (no strict/.default(), no manifest
1206
- // fields). The parseFileWithSchema(PluginMarketplaceSchema()) call
1207
- // below widens and validates — that's the real check.
1208
- await writeFile(marketplacePath, jsonStringify({
1209
- name: source.name,
1210
- owner: source.owner ?? { name: 'settings' },
1211
- plugins: source.plugins,
1212
- }, null, 2));
1213
- break;
1214
- }
1215
- default:
1216
- throw new Error(`Unsupported marketplace source type`);
1217
- }
1218
- // Load and validate the marketplace
1219
- logForDebugging(`Reading marketplace from ${marketplacePath}`);
1220
- let marketplace;
1221
- try {
1222
- marketplace = await parseFileWithSchema(marketplacePath, PluginMarketplaceSchema());
1223
- }
1224
- catch (e) {
1225
- if (isENOENT(e)) {
1226
- throw new Error(`Marketplace file not found at ${marketplacePath}`);
1227
- }
1228
- throw new Error(`Failed to parse marketplace file at ${marketplacePath}: ${errorMessage(e)}`);
1229
- }
1230
- // Now rename the cache path to use the marketplace's actual name
1231
- const finalCachePath = join(cacheDir, marketplace.name);
1232
- // Defense-in-depth: the schema rejects path separators, .., and . in marketplace.name,
1233
- // but verify the computed path is a strict subdirectory of cacheDir before fs.rm.
1234
- // A malicious marketplace.json with a crafted name must never cause us to rm outside
1235
- // cacheDir, nor rm cacheDir itself (e.g. name "." → join normalizes to cacheDir).
1236
- const resolvedFinal = resolve(finalCachePath);
1237
- const resolvedCacheDir = resolve(cacheDir);
1238
- if (!resolvedFinal.startsWith(resolvedCacheDir + sep)) {
1239
- throw new Error(`Marketplace name '${marketplace.name}' resolves to a path outside the cache directory`);
1240
- }
1241
- // Don't rename if it's a local file or directory, or already has the right name
1242
- if (temporaryCachePath !== finalCachePath &&
1243
- !isLocalMarketplaceSource(source)) {
1244
- try {
1245
- // Remove the destination if it already exists, then rename
1246
- try {
1247
- onProgress?.('Cleaning up old marketplace cache…');
1248
- }
1249
- catch (callbackError) {
1250
- logForDebugging(`Progress callback error: ${errorMessage(callbackError)}`, { level: 'warn' });
1251
- }
1252
- await fs.rm(finalCachePath, { recursive: true, force: true });
1253
- // Rename temp cache to final name
1254
- await fs.rename(temporaryCachePath, finalCachePath);
1255
- temporaryCachePath = finalCachePath;
1256
- cleanupNeeded = false; // Successfully renamed, no cleanup needed
1257
- }
1258
- catch (error) {
1259
- const errorMsg = errorMessage(error);
1260
- throw new Error(`Failed to finalize marketplace cache. Please manually delete the directory at ${finalCachePath} if it exists and try again.\n\nTechnical details: ${errorMsg}`);
1261
- }
1262
- }
1263
- return { marketplace, cachePath: temporaryCachePath };
1264
- }
1265
- catch (error) {
1266
- // Clean up any temporary files/directories on error
1267
- if (cleanupNeeded &&
1268
- temporaryCachePath &&
1269
- !isLocalMarketplaceSource(source)) {
1270
- try {
1271
- await fs.rm(temporaryCachePath, { recursive: true, force: true });
1272
- }
1273
- catch (cleanupError) {
1274
- logForDebugging(`Warning: Failed to clean up temporary marketplace cache at ${temporaryCachePath}: ${errorMessage(cleanupError)}`, { level: 'warn' });
1275
- }
1276
- }
1277
- throw error;
1278
- }
1279
- }
1280
- /**
1281
- * Add a marketplace source to the known marketplaces
1282
- *
1283
- * The marketplace is fetched, validated, and cached locally.
1284
- * The configuration is saved to ~/.claude/plugins/known_marketplaces.json.
1285
- *
1286
- * @param source - MarketplaceSource object representing the marketplace source.
1287
- * Callers should parse user input into MarketplaceSource format
1288
- * (see AddMarketplace.parseMarketplaceInput for handling shortcuts like "owner/repo").
1289
- * @param onProgress - Optional callback for progress updates during marketplace installation
1290
- * @throws If source format is invalid or marketplace cannot be loaded
1291
- */
1292
- export async function addMarketplaceSource(source, onProgress) {
1293
- // Resolve relative directory/file paths to absolute so state is cwd-independent
1294
- let resolvedSource = source;
1295
- if (isLocalMarketplaceSource(source) && !isAbsolute(source.path)) {
1296
- resolvedSource = { ...source, path: resolve(source.path) };
1297
- }
1298
- // Check policy FIRST, before any network/filesystem operations
1299
- // This prevents downloading/cloning when the source is blocked
1300
- if (!isSourceAllowedByPolicy(resolvedSource)) {
1301
- // Check if explicitly blocked vs not in allowlist for better error messages
1302
- if (isSourceInBlocklist(resolvedSource)) {
1303
- throw new Error(`Marketplace source '${formatSourceForDisplay(resolvedSource)}' is blocked by enterprise policy.`);
1304
- }
1305
- // Not in allowlist - build helpful error message
1306
- const allowlist = getStrictKnownMarketplaces() || [];
1307
- const hostPatterns = getHostPatternsFromAllowlist();
1308
- const sourceHost = extractHostFromSource(resolvedSource);
1309
- let errorMessage = `Marketplace source '${formatSourceForDisplay(resolvedSource)}'`;
1310
- if (sourceHost) {
1311
- errorMessage += ` (${sourceHost})`;
1312
- }
1313
- errorMessage += ' is blocked by enterprise policy.';
1314
- if (allowlist.length > 0) {
1315
- errorMessage += ` Allowed sources: ${allowlist.map(s => formatSourceForDisplay(s)).join(', ')}`;
1316
- }
1317
- else {
1318
- errorMessage += ' No external marketplaces are allowed.';
1319
- }
1320
- // If source is a github shorthand and there are hostPatterns, suggest using full URL
1321
- if (resolvedSource.source === 'github' && hostPatterns.length > 0) {
1322
- errorMessage +=
1323
- `\n\nTip: The shorthand "${resolvedSource.repo}" assumes github.com. ` +
1324
- `For internal GitHub Enterprise, use the full URL:\n` +
1325
- ` git@your-github-host.com:${resolvedSource.repo}.git`;
1326
- }
1327
- throw new Error(errorMessage);
1328
- }
1329
- // Source-idempotency: if this exact source already exists, skip clone
1330
- const existingConfig = await loadKnownMarketplacesConfig();
1331
- for (const [existingName, existingEntry] of Object.entries(existingConfig)) {
1332
- if (isEqual(existingEntry.source, resolvedSource)) {
1333
- logForDebugging(`Source already materialized as '${existingName}', skipping clone`);
1334
- return { name: existingName, alreadyMaterialized: true, resolvedSource };
1335
- }
1336
- }
1337
- // Load and cache the marketplace to validate it and get its name
1338
- const { marketplace, cachePath } = await loadAndCacheMarketplace(resolvedSource, onProgress);
1339
- // Validate that reserved names come from official sources
1340
- const sourceValidationError = validateOfficialNameSource(marketplace.name, resolvedSource);
1341
- if (sourceValidationError) {
1342
- throw new Error(sourceValidationError);
1343
- }
1344
- // Name collision with different source: overwrite (settings intent wins).
1345
- // Seed-managed entries are admin-controlled and cannot be overwritten.
1346
- // Re-read config after clone (may take a while; another process may have written).
1347
- const config = await loadKnownMarketplacesConfig();
1348
- const oldEntry = config[marketplace.name];
1349
- if (oldEntry) {
1350
- const seedDir = seedDirFor(oldEntry.installLocation);
1351
- if (seedDir) {
1352
- throw new Error(`Marketplace '${marketplace.name}' is seed-managed (${seedDir}). ` +
1353
- `To use a different source, ask your admin to update the seed, ` +
1354
- `or use a different marketplace name.`);
1355
- }
1356
- logForDebugging(`Marketplace '${marketplace.name}' exists with different source — overwriting`);
1357
- // Clean up the old cache if it's not a user-owned local path AND it
1358
- // actually differs from the new cachePath. loadAndCacheMarketplace writes
1359
- // to cachePath BEFORE we get here — rm-ing the same dir deletes the fresh
1360
- // write. Settings sources always land on the same dir (name → path);
1361
- // git sources hit this latently when the source repo changes but the
1362
- // fetched marketplace.json declares the same name. Only rm when locations
1363
- // genuinely differ (the only case where there's a stale dir to clean).
1364
- //
1365
- // Defensively validate the stored path before rm: a corrupted
1366
- // installLocation (gh-32793, gh-32661) could point at the user's project
1367
- // dir. If it's outside the cache dir, skip cleanup — the stale dir (if
1368
- // any) is harmless, and blocking the re-add would prevent the user from
1369
- // fixing the corruption.
1370
- if (!isLocalMarketplaceSource(oldEntry.source)) {
1371
- const cacheDir = resolve(getMarketplacesCacheDir());
1372
- const resolvedOld = resolve(oldEntry.installLocation);
1373
- const resolvedNew = resolve(cachePath);
1374
- if (resolvedOld === resolvedNew) {
1375
- // Same dir — loadAndCacheMarketplace already overwrote in place.
1376
- // Nothing to clean.
1377
- }
1378
- else if (resolvedOld === cacheDir ||
1379
- resolvedOld.startsWith(cacheDir + sep)) {
1380
- const fs = getFsImplementation();
1381
- await fs.rm(oldEntry.installLocation, { recursive: true, force: true });
1382
- }
1383
- else {
1384
- logForDebugging(`Skipping cleanup of old installLocation (${oldEntry.installLocation}) — ` +
1385
- `outside ${cacheDir}. The path is corrupted; leaving it alone and ` +
1386
- `overwriting the config entry.`, { level: 'warn' });
1387
- }
1388
- }
1389
- }
1390
- // Update config using the marketplace's actual name
1391
- config[marketplace.name] = {
1392
- source: resolvedSource,
1393
- installLocation: cachePath,
1394
- lastUpdated: new Date().toISOString(),
1395
- };
1396
- await saveKnownMarketplacesConfig(config);
1397
- logForDebugging(`Added marketplace source: ${marketplace.name}`);
1398
- return { name: marketplace.name, alreadyMaterialized: false, resolvedSource };
1399
- }
1400
- /**
1401
- * Remove a marketplace source from known marketplaces
1402
- *
1403
- * Removes the marketplace configuration and cleans up cached files.
1404
- * Deletes both directory caches (for git sources) and file caches (for URL sources).
1405
- * Also cleans up the marketplace from settings.json (extraKnownMarketplaces) and
1406
- * removes related plugin entries from enabledPlugins.
1407
- *
1408
- * @param name - The marketplace name to remove
1409
- * @throws If marketplace with given name is not found
1410
- */
1411
- export async function removeMarketplaceSource(name) {
1412
- const config = await loadKnownMarketplacesConfig();
1413
- if (!config[name]) {
1414
- throw new Error(`Marketplace '${name}' not found`);
1415
- }
1416
- // Seed-registered marketplaces are admin-baked into the container — removing
1417
- // them is a category error. They'd resurrect on next startup anyway. Guide
1418
- // the user to the right action instead.
1419
- const entry = config[name];
1420
- const seedDir = seedDirFor(entry.installLocation);
1421
- if (seedDir) {
1422
- throw new Error(`Marketplace '${name}' is registered from the read-only seed directory ` +
1423
- `(${seedDir}) and will be re-registered on next startup. ` +
1424
- `To stop using its plugins: claude plugin disable <plugin>@${name}`);
1425
- }
1426
- // Remove from config
1427
- delete config[name];
1428
- await saveKnownMarketplacesConfig(config);
1429
- // Clean up cached files (both directory and JSON formats)
1430
- const fs = getFsImplementation();
1431
- const cacheDir = getMarketplacesCacheDir();
1432
- const cachePath = join(cacheDir, name);
1433
- await fs.rm(cachePath, { recursive: true, force: true });
1434
- const jsonCachePath = join(cacheDir, `${name}.json`);
1435
- await fs.rm(jsonCachePath, { force: true });
1436
- // Clean up settings.json - remove marketplace from extraKnownMarketplaces
1437
- // and remove related plugin entries from enabledPlugins
1438
- // Check each editable settings source
1439
- const editableSources = ['userSettings', 'projectSettings', 'localSettings'];
1440
- for (const source of editableSources) {
1441
- const settings = getSettingsForSource(source);
1442
- if (!settings)
1443
- continue;
1444
- let needsUpdate = false;
1445
- const updates = {};
1446
- // Remove from extraKnownMarketplaces if present
1447
- if (settings.extraKnownMarketplaces?.[name]) {
1448
- const updatedMarketplaces = { ...settings.extraKnownMarketplaces };
1449
- // Use undefined values (NOT delete) to signal key removal via mergeWith
1450
- updatedMarketplaces[name] = undefined;
1451
- updates.extraKnownMarketplaces =
1452
- updatedMarketplaces;
1453
- needsUpdate = true;
1454
- }
1455
- // Remove related plugins from enabledPlugins (format: "plugin@marketplace")
1456
- if (settings.enabledPlugins) {
1457
- const marketplaceSuffix = `@${name}`;
1458
- const updatedPlugins = { ...settings.enabledPlugins };
1459
- let removedPlugins = false;
1460
- for (const pluginId in updatedPlugins) {
1461
- if (pluginId.endsWith(marketplaceSuffix)) {
1462
- updatedPlugins[pluginId] = undefined;
1463
- removedPlugins = true;
1464
- }
1465
- }
1466
- if (removedPlugins) {
1467
- updates.enabledPlugins = updatedPlugins;
1468
- needsUpdate = true;
1469
- }
1470
- }
1471
- // Update settings if changes were made
1472
- if (needsUpdate) {
1473
- const result = updateSettingsForSource(source, updates);
1474
- if (result.error) {
1475
- logError(result.error);
1476
- logForDebugging(`Failed to clean up marketplace '${name}' from ${source} settings: ${result.error.message}`);
1477
- }
1478
- else {
1479
- logForDebugging(`Cleaned up marketplace '${name}' from ${source} settings`);
1480
- }
1481
- }
1482
- }
1483
- // Remove plugins from installed_plugins.json and mark orphaned paths.
1484
- // Also wipe their stored options/secrets — after marketplace removal
1485
- // zero installations remain, same "last scope gone" condition as
1486
- // uninstallPluginOp.
1487
- const { orphanedPaths, removedPluginIds } = removeAllPluginsForMarketplace(name);
1488
- for (const installPath of orphanedPaths) {
1489
- await markPluginVersionOrphaned(installPath);
1490
- }
1491
- for (const pluginId of removedPluginIds) {
1492
- deletePluginOptions(pluginId);
1493
- await deletePluginDataDir(pluginId);
1494
- }
1495
- logForDebugging(`Removed marketplace source: ${name}`);
1496
- }
1497
- /**
1498
- * Read a cached marketplace from disk without updating it
1499
- *
1500
- * @param installLocation - Path to the cached marketplace
1501
- * @returns The marketplace object
1502
- * @throws If marketplace file not found or invalid
1503
- */
1504
- async function readCachedMarketplace(installLocation) {
1505
- // For git-sourced directories, the manifest lives at .claude-plugin/marketplace.json.
1506
- // For url/file/directory sources it is the installLocation itself.
1507
- // Try the nested path first; fall back to installLocation when it is a plain file
1508
- // (ENOTDIR) or the nested file is simply missing (ENOENT).
1509
- const nestedPath = join(installLocation, '.claude-plugin', 'marketplace.json');
1510
- try {
1511
- return await parseFileWithSchema(nestedPath, PluginMarketplaceSchema());
1512
- }
1513
- catch (e) {
1514
- if (e instanceof ConfigParseError)
1515
- throw e;
1516
- const code = getErrnoCode(e);
1517
- if (code !== 'ENOENT' && code !== 'ENOTDIR')
1518
- throw e;
1519
- }
1520
- return await parseFileWithSchema(installLocation, PluginMarketplaceSchema());
1521
- }
1522
- /**
1523
- * Get a specific marketplace by name from cache only (no network).
1524
- * Returns null if cache is missing or corrupted.
1525
- * Use this for startup paths that should never block on network.
1526
- */
1527
- export async function getMarketplaceCacheOnly(name) {
1528
- const fs = getFsImplementation();
1529
- const configFile = getKnownMarketplacesFile();
1530
- try {
1531
- const content = await fs.readFile(configFile, { encoding: 'utf-8' });
1532
- const config = jsonParse(content);
1533
- const entry = config[name];
1534
- if (!entry) {
1535
- return null;
1536
- }
1537
- return await readCachedMarketplace(entry.installLocation);
1538
- }
1539
- catch (error) {
1540
- if (isENOENT(error)) {
1541
- return null;
1542
- }
1543
- logForDebugging(`Failed to read cached marketplace ${name}: ${errorMessage(error)}`, { level: 'warn' });
1544
- return null;
1545
- }
1546
- }
1547
- /**
1548
- * Get a specific marketplace by name
1549
- *
1550
- * First attempts to read from cache. Only fetches from source if:
1551
- * - No cached version exists
1552
- * - Cache is invalid/corrupted
1553
- *
1554
- * This avoids unnecessary network/git operations on every access.
1555
- * Use refreshMarketplace() to explicitly update from source.
1556
- *
1557
- * @param name - The marketplace name to fetch
1558
- * @returns The marketplace object or null if not found/failed
1559
- */
1560
- export const getMarketplace = memoize(async (name) => {
1561
- const config = await loadKnownMarketplacesConfig();
1562
- const entry = config[name];
1563
- if (!entry) {
1564
- throw new Error(`Marketplace '${name}' not found in configuration. Available marketplaces: ${Object.keys(config).join(', ')}`);
1565
- }
1566
- // Legacy entries (pre-#19708) may have relative paths in global config.
1567
- // These are meaningless outside the project that wrote them — resolving
1568
- // against process.cwd() produces the wrong path. Give actionable guidance
1569
- // instead of a misleading ENOENT.
1570
- if (isLocalMarketplaceSource(entry.source) &&
1571
- !isAbsolute(entry.source.path)) {
1572
- throw new Error(`Marketplace "${name}" has a relative source path (${entry.source.path}) ` +
1573
- `in known_marketplaces.json — this is stale state from an older ` +
1574
- `Context Code version. Run 'claude marketplace remove ${name}' and ` +
1575
- `re-add it from the original project directory.`);
1576
- }
1577
- // Try to read from disk cache
1578
- try {
1579
- return await readCachedMarketplace(entry.installLocation);
1580
- }
1581
- catch (error) {
1582
- // Log cache corruption before re-fetching
1583
- logForDebugging(`Cache corrupted or missing for marketplace ${name}, re-fetching from source: ${errorMessage(error)}`, {
1584
- level: 'warn',
1585
- });
1586
- }
1587
- // Cache doesn't exist or is invalid, fetch from source
1588
- let marketplace;
1589
- try {
1590
- ;
1591
- ({ marketplace } = await loadAndCacheMarketplace(entry.source));
1592
- }
1593
- catch (error) {
1594
- throw new Error(`Failed to load marketplace "${name}" from source (${entry.source.source}): ${errorMessage(error)}`);
1595
- }
1596
- // Update lastUpdated only when we actually fetch
1597
- config[name].lastUpdated = new Date().toISOString();
1598
- await saveKnownMarketplacesConfig(config);
1599
- return marketplace;
1600
- });
1601
- /**
1602
- * Get plugin by ID from cache only (no network calls).
1603
- * Returns null if marketplace cache is missing or corrupted.
1604
- * Use this for startup paths that should never block on network.
1605
- *
1606
- * @param pluginId - The plugin ID in format "name@marketplace"
1607
- * @returns The plugin entry or null if not found/cache missing
1608
- */
1609
- export async function getPluginByIdCacheOnly(pluginId) {
1610
- const { name: pluginName, marketplace: marketplaceName } = parsePluginIdentifier(pluginId);
1611
- if (!pluginName || !marketplaceName) {
1612
- return null;
1613
- }
1614
- const fs = getFsImplementation();
1615
- const configFile = getKnownMarketplacesFile();
1616
- try {
1617
- const content = await fs.readFile(configFile, { encoding: 'utf-8' });
1618
- const config = jsonParse(content);
1619
- const marketplaceConfig = config[marketplaceName];
1620
- if (!marketplaceConfig) {
1621
- return null;
1622
- }
1623
- const marketplace = await getMarketplaceCacheOnly(marketplaceName);
1624
- if (!marketplace) {
1625
- return null;
1626
- }
1627
- const plugin = marketplace.plugins.find(p => p.name === pluginName);
1628
- if (!plugin) {
1629
- return null;
1630
- }
1631
- return {
1632
- entry: plugin,
1633
- marketplaceInstallLocation: marketplaceConfig.installLocation,
1634
- };
1635
- }
1636
- catch {
1637
- return null;
1638
- }
1639
- }
1640
- /**
1641
- * Get plugin by ID from a specific marketplace
1642
- *
1643
- * First tries cache-only lookup. If cache is missing/corrupted,
1644
- * falls back to fetching from source.
1645
- *
1646
- * @param pluginId - The plugin ID in format "name@marketplace"
1647
- * @returns The plugin entry or null if not found
1648
- */
1649
- export async function getPluginById(pluginId) {
1650
- // Try cache-only first (fast path)
1651
- const cached = await getPluginByIdCacheOnly(pluginId);
1652
- if (cached) {
1653
- return cached;
1654
- }
1655
- // Cache miss - try fetching from source
1656
- const { name: pluginName, marketplace: marketplaceName } = parsePluginIdentifier(pluginId);
1657
- if (!pluginName || !marketplaceName) {
1658
- return null;
1659
- }
1660
- try {
1661
- const config = await loadKnownMarketplacesConfig();
1662
- const marketplaceConfig = config[marketplaceName];
1663
- if (!marketplaceConfig) {
1664
- return null;
1665
- }
1666
- const marketplace = await getMarketplace(marketplaceName);
1667
- const plugin = marketplace.plugins.find(p => p.name === pluginName);
1668
- if (!plugin) {
1669
- return null;
1670
- }
1671
- return {
1672
- entry: plugin,
1673
- marketplaceInstallLocation: marketplaceConfig.installLocation,
1674
- };
1675
- }
1676
- catch (error) {
1677
- logForDebugging(`Could not find plugin ${pluginId}: ${errorMessage(error)}`, { level: 'debug' });
1678
- return null;
1679
- }
1680
- }
1681
- /**
1682
- * Refresh all marketplace caches
1683
- *
1684
- * Updates all configured marketplaces from their sources.
1685
- * Continues refreshing even if some marketplaces fail.
1686
- * Updates lastUpdated timestamps for successful refreshes.
1687
- *
1688
- * This is useful for:
1689
- * - Periodic updates to get new plugins
1690
- * - Syncing after network connectivity is restored
1691
- * - Ensuring caches are up-to-date before browsing
1692
- *
1693
- * @returns Promise that resolves when all refresh attempts complete
1694
- */
1695
- export async function refreshAllMarketplaces() {
1696
- const config = await loadKnownMarketplacesConfig();
1697
- for (const [name, entry] of Object.entries(config)) {
1698
- // Seed-managed marketplaces are controlled by the seed image — refreshing
1699
- // them is pointless (registerSeedMarketplaces overwrites on next startup).
1700
- if (seedDirFor(entry.installLocation)) {
1701
- logForDebugging(`Skipping seed-managed marketplace '${name}' in bulk refresh`);
1702
- continue;
1703
- }
1704
- // settings-sourced marketplaces have no upstream — see refreshMarketplace.
1705
- if (entry.source.source === 'settings') {
1706
- continue;
1707
- }
1708
- // inc-5046: same GCS intercept as refreshMarketplace() — bulk update
1709
- // hits this path on `claude plugin marketplace update` (no name arg).
1710
- if (name === OFFICIAL_MARKETPLACE_NAME) {
1711
- const sha = await fetchOfficialMarketplaceFromGcs(entry.installLocation, getMarketplacesCacheDir());
1712
- if (sha !== null) {
1713
- config[name].lastUpdated = new Date().toISOString();
1714
- continue;
1715
- }
1716
- if (!getFeatureValue_CACHED_MAY_BE_STALE('tengu_plugin_official_mkt_git_fallback', true)) {
1717
- logForDebugging(`Skipping official marketplace bulk refresh: GCS failed, git fallback disabled`);
1718
- continue;
1719
- }
1720
- // fall through to git
1721
- }
1722
- try {
1723
- const { cachePath } = await loadAndCacheMarketplace(entry.source);
1724
- config[name].lastUpdated = new Date().toISOString();
1725
- config[name].installLocation = cachePath;
1726
- }
1727
- catch (error) {
1728
- logForDebugging(`Failed to refresh marketplace ${name}: ${errorMessage(error)}`, {
1729
- level: 'error',
1730
- });
1731
- }
1732
- }
1733
- await saveKnownMarketplacesConfig(config);
1734
- }
1735
- /**
1736
- * Refresh a single marketplace cache
1737
- *
1738
- * Updates a specific marketplace from its source by doing an in-place update.
1739
- * For git sources, runs git pull in the existing directory.
1740
- * For URL sources, re-downloads to the existing file.
1741
- * Clears the memoization cache and updates the lastUpdated timestamp.
1742
- *
1743
- * @param name - The name of the marketplace to refresh
1744
- * @param onProgress - Optional callback to report progress
1745
- * @throws If marketplace not found or refresh fails
1746
- */
1747
- export async function refreshMarketplace(name, onProgress, options) {
1748
- const config = await loadKnownMarketplacesConfig();
1749
- const entry = config[name];
1750
- if (!entry) {
1751
- throw new Error(`Marketplace '${name}' not found. Available marketplaces: ${Object.keys(config).join(', ')}`);
1752
- }
1753
- // Clear the memoization cache for this specific marketplace
1754
- getMarketplace.cache?.delete?.(name);
1755
- // settings-sourced marketplaces have no upstream to pull. Edits to the
1756
- // inline plugins array surface as sourceChanged in the reconciler, which
1757
- // re-materializes via addMarketplaceSource — refresh is not the vehicle.
1758
- if (entry.source.source === 'settings') {
1759
- logForDebugging(`Skipping refresh for settings-sourced marketplace '${name}' — no upstream`);
1760
- return;
1761
- }
1762
- try {
1763
- // For updates, use the existing installLocation directly (in-place update)
1764
- const installLocation = entry.installLocation;
1765
- const source = entry.source;
1766
- // Seed-managed marketplaces are controlled by the seed image. Refreshing
1767
- // would be pointless — registerSeedMarketplaces() overwrites installLocation
1768
- // back to seed on next startup. Error with guidance instead.
1769
- const seedDir = seedDirFor(installLocation);
1770
- if (seedDir) {
1771
- throw new Error(`Marketplace '${name}' is seed-managed (${seedDir}) and its content is ` +
1772
- `controlled by the seed image. To update: ask your admin to update the seed.`);
1773
- }
1774
- // For remote sources (github/git/url), installLocation must be inside the
1775
- // marketplaces cache dir. A corrupted value (gh-32793, gh-32661 — e.g.
1776
- // Windows path read on WSL, literal tilde, manual edit) can point at the
1777
- // user's project. cacheMarketplaceFromGit would then run git ops with that
1778
- // cwd (git walks up to the user's .git) and fs.rm it on pull failure.
1779
- // Refuse instead of auto-fixing so the user knows their state is corrupted.
1780
- if (!isLocalMarketplaceSource(source)) {
1781
- const cacheDir = resolve(getMarketplacesCacheDir());
1782
- const resolvedLoc = resolve(installLocation);
1783
- if (resolvedLoc !== cacheDir && !resolvedLoc.startsWith(cacheDir + sep)) {
1784
- throw new Error(`Marketplace '${name}' has a corrupted installLocation ` +
1785
- `(${installLocation}) — expected a path inside ${cacheDir}. ` +
1786
- `This can happen after cross-platform path writes or manual edits ` +
1787
- `to known_marketplaces.json. ` +
1788
- `Run: claude plugin marketplace remove "${name}" and re-add it.`);
1789
- }
1790
- }
1791
- // inc-5046: official marketplace fetches from a GCS mirror instead of
1792
- // git-cloning GitHub. Special-cased by NAME (not a new source type) so
1793
- // no data migration is needed — existing known_marketplaces.json entries
1794
- // still say source:'github', which is true (GCS is a mirror).
1795
- if (name === OFFICIAL_MARKETPLACE_NAME) {
1796
- const sha = await fetchOfficialMarketplaceFromGcs(installLocation, getMarketplacesCacheDir());
1797
- if (sha !== null) {
1798
- config[name] = { ...entry, lastUpdated: new Date().toISOString() };
1799
- await saveKnownMarketplacesConfig(config);
1800
- return;
1801
- }
1802
- // GCS failed — fall through to git ONLY if the kill-switch allows.
1803
- // Default true (backend write perms are pending as of inc-5046); flip
1804
- // to false via GrowthBook once the backend is confirmed live so new
1805
- // clients NEVER hit GitHub for the official marketplace.
1806
- if (!getFeatureValue_CACHED_MAY_BE_STALE('tengu_plugin_official_mkt_git_fallback', true)) {
1807
- // Throw, don't return — every other failure path in this function
1808
- // throws, and callers like ManageMarketplaces.tsx:259 increment
1809
- // updatedCount on any non-throwing return. A silent return would
1810
- // report "Updated 1 marketplace" when nothing was refreshed.
1811
- throw new Error('Official marketplace GCS fetch failed and git fallback is disabled');
1812
- }
1813
- logForDebugging('Official marketplace GCS failed; falling back to git', {
1814
- level: 'warn',
1815
- });
1816
- // ...falls through to source.source === 'github' branch below
1817
- }
1818
- // Update based on source type
1819
- if (source.source === 'github' || source.source === 'git') {
1820
- // Git sources: do in-place git pull
1821
- if (source.source === 'github') {
1822
- // Same SSH/HTTPS fallback as loadAndCacheMarketplace: if the pull
1823
- // succeeds the remote URL in .git/config is used, but a re-clone
1824
- // needs a URL — pick the right protocol up-front and fall back.
1825
- const sshUrl = `git@github.com:${source.repo}.git`;
1826
- const httpsUrl = `https://github.com/${source.repo}.git`;
1827
- if (isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
1828
- // CCR: always HTTPS (no SSH keys available)
1829
- await cacheMarketplaceFromGit(httpsUrl, installLocation, source.ref, source.sparsePaths, onProgress, options);
1830
- }
1831
- else {
1832
- const sshConfigured = await isGitHubSshLikelyConfigured();
1833
- const primaryUrl = sshConfigured ? sshUrl : httpsUrl;
1834
- const fallbackUrl = sshConfigured ? httpsUrl : sshUrl;
1835
- try {
1836
- await cacheMarketplaceFromGit(primaryUrl, installLocation, source.ref, source.sparsePaths, onProgress, options);
1837
- }
1838
- catch {
1839
- logForDebugging(`Marketplace refresh failed with ${sshConfigured ? 'SSH' : 'HTTPS'} for ${source.repo}, falling back to ${sshConfigured ? 'HTTPS' : 'SSH'}`, { level: 'info' });
1840
- await cacheMarketplaceFromGit(fallbackUrl, installLocation, source.ref, source.sparsePaths, onProgress, options);
1841
- }
1842
- }
1843
- }
1844
- else {
1845
- // Explicit git URL: use as-is (no fallback available)
1846
- await cacheMarketplaceFromGit(source.url, installLocation, source.ref, source.sparsePaths, onProgress, options);
1847
- }
1848
- // Validate that marketplace.json still exists after update
1849
- // The repo may have been restructured or deprecated
1850
- try {
1851
- await readCachedMarketplace(installLocation);
1852
- }
1853
- catch {
1854
- const sourceDisplay = source.source === 'github'
1855
- ? source.repo
1856
- : redactUrlCredentials(source.url);
1857
- const reason = name === 'claude-code-plugins'
1858
- ? `We've deprecated "claude-code-plugins" in favor of "claude-plugins-official".`
1859
- : `This marketplace may have been deprecated or moved to a new location.`;
1860
- throw new Error(`The marketplace.json file is no longer present in this repository.\n\n` +
1861
- `${reason}\n` +
1862
- `Source: ${sourceDisplay}\n\n` +
1863
- `You can remove this marketplace with: claude plugin marketplace remove "${name}"`);
1864
- }
1865
- }
1866
- else if (source.source === 'url') {
1867
- // URL sources: re-download to existing file
1868
- await cacheMarketplaceFromUrl(source.url, installLocation, source.headers, onProgress);
1869
- }
1870
- else if (isLocalMarketplaceSource(source)) {
1871
- // Local sources: no remote to update from, but validate the file still exists and is valid
1872
- safeCallProgress(onProgress, 'Validating local marketplace');
1873
- // Read and validate to ensure the marketplace file is still valid
1874
- await readCachedMarketplace(installLocation);
1875
- }
1876
- else {
1877
- throw new Error(`Unsupported marketplace source type for refresh`);
1878
- }
1879
- // Update lastUpdated timestamp
1880
- config[name].lastUpdated = new Date().toISOString();
1881
- await saveKnownMarketplacesConfig(config);
1882
- logForDebugging(`Successfully refreshed marketplace: ${name}`);
1883
- }
1884
- catch (error) {
1885
- const errorMessage = error instanceof Error ? error.message : String(error);
1886
- logForDebugging(`Failed to refresh marketplace ${name}: ${errorMessage}`, {
1887
- level: 'error',
1888
- });
1889
- throw new Error(`Failed to refresh marketplace '${name}': ${errorMessage}`);
1890
- }
1891
- }
1892
- /**
1893
- * Set the autoUpdate flag for a marketplace
1894
- *
1895
- * When autoUpdate is enabled, the marketplace and its installed plugins
1896
- * will be automatically updated on startup.
1897
- *
1898
- * @param name - The name of the marketplace to update
1899
- * @param autoUpdate - Whether to enable auto-update
1900
- * @throws If marketplace not found
1901
- */
1902
- export async function setMarketplaceAutoUpdate(name, autoUpdate) {
1903
- const config = await loadKnownMarketplacesConfig();
1904
- const entry = config[name];
1905
- if (!entry) {
1906
- throw new Error(`Marketplace '${name}' not found. Available marketplaces: ${Object.keys(config).join(', ')}`);
1907
- }
1908
- // Seed-managed marketplaces always have autoUpdate: false (read-only, git-pull
1909
- // would fail). Toggle appears to work but registerSeedMarketplaces overwrites
1910
- // it on next startup. Error with guidance instead of silent revert.
1911
- const seedDir = seedDirFor(entry.installLocation);
1912
- if (seedDir) {
1913
- throw new Error(`Marketplace '${name}' is seed-managed (${seedDir}) and ` +
1914
- `auto-update is always disabled for seed content. ` +
1915
- `To update: ask your admin to update the seed.`);
1916
- }
1917
- // Only update if the value is actually changing
1918
- if (entry.autoUpdate === autoUpdate) {
1919
- return;
1920
- }
1921
- config[name] = {
1922
- ...entry,
1923
- autoUpdate,
1924
- };
1925
- await saveKnownMarketplacesConfig(config);
1926
- // Also update intent in settings if declared there — write to the SAME
1927
- // source that declared it to avoid creating duplicates at wrong scope
1928
- const declaringSource = getMarketplaceDeclaringSource(name);
1929
- if (declaringSource) {
1930
- const declared = getSettingsForSource(declaringSource)?.extraKnownMarketplaces?.[name];
1931
- if (declared) {
1932
- saveMarketplaceToSettings(name, { source: declared.source, autoUpdate }, declaringSource);
1933
- }
1934
- }
1935
- logForDebugging(`Set autoUpdate=${autoUpdate} for marketplace: ${name}`);
1936
- }
1937
- export const _test = {
1938
- redactUrlCredentials,
1939
- };