@capybara-hq/kernel 0.1.0-rc.4 → 0.1.0-rc.5

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 (507) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +39 -13
  3. package/dist/admin/admin.controller.js +33 -17
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +51 -22
  19. package/dist/agents/agents.service.js +172 -70
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/org-templates.d.ts +176 -0
  27. package/dist/agents/org-templates.js +827 -0
  28. package/dist/agents/pending-connector-requests.d.ts +77 -0
  29. package/dist/agents/pending-connector-requests.js +215 -0
  30. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  31. package/dist/agents/pending-connectors.controller.js +91 -0
  32. package/dist/agents/pending-connectors.service.d.ts +62 -0
  33. package/dist/agents/pending-connectors.service.js +282 -0
  34. package/dist/agents/templates.controller.d.ts +86 -5
  35. package/dist/agents/templates.controller.js +171 -7
  36. package/dist/agents/templates.d.ts +127 -23
  37. package/dist/agents/templates.js +475 -52
  38. package/dist/background/background.module.js +8 -1
  39. package/dist/background/finish.d.ts +3 -2
  40. package/dist/background/launch-lock.d.ts +4 -3
  41. package/dist/background/launch-lock.js +4 -3
  42. package/dist/background/poll.job.d.ts +9 -6
  43. package/dist/background/poll.job.js +30 -22
  44. package/dist/background/session.d.ts +13 -2
  45. package/dist/background/session.js +13 -0
  46. package/dist/background/stop.d.ts +12 -6
  47. package/dist/background/stop.js +57 -39
  48. package/dist/background/store.d.ts +18 -6
  49. package/dist/background/store.js +12 -6
  50. package/dist/background/tasks.service.d.ts +15 -5
  51. package/dist/background/tasks.service.js +42 -17
  52. package/dist/background/wake-rules.d.ts +27 -18
  53. package/dist/background/wake-rules.js +52 -22
  54. package/dist/background/wake.d.ts +13 -11
  55. package/dist/background/wake.js +20 -14
  56. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  57. package/dist/catalog/admin-catalog.controller.js +213 -42
  58. package/dist/catalog/catalog-content.d.ts +58 -32
  59. package/dist/catalog/catalog-content.js +34 -8
  60. package/dist/catalog/catalog-import.module.d.ts +7 -0
  61. package/dist/catalog/catalog-import.module.js +60 -0
  62. package/dist/catalog/catalog-items.d.ts +111 -7
  63. package/dist/catalog/catalog-items.js +279 -13
  64. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  65. package/dist/catalog/catalog-scope.service.js +1116 -0
  66. package/dist/catalog/catalog.module.d.ts +7 -9
  67. package/dist/catalog/catalog.module.js +41 -31
  68. package/dist/catalog/catalog.service.d.ts +101 -29
  69. package/dist/catalog/catalog.service.js +104 -106
  70. package/dist/catalog/cli.d.ts +11 -1
  71. package/dist/catalog/cli.js +26 -1
  72. package/dist/catalog/component-promotion.d.ts +96 -0
  73. package/dist/catalog/component-promotion.js +395 -0
  74. package/dist/catalog/component-scope.controller.d.ts +152 -0
  75. package/dist/catalog/component-scope.controller.js +287 -0
  76. package/dist/catalog/component-scope.service.d.ts +303 -0
  77. package/dist/catalog/component-scope.service.js +936 -0
  78. package/dist/catalog/component-state.d.ts +174 -0
  79. package/dist/catalog/component-state.js +437 -0
  80. package/dist/catalog/job-ids.d.ts +30 -0
  81. package/dist/catalog/job-ids.js +25 -0
  82. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  83. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  84. package/dist/catalog/marketplaces.controller.js +56 -7
  85. package/dist/catalog/marketplaces.service.d.ts +54 -14
  86. package/dist/catalog/marketplaces.service.js +71 -22
  87. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  88. package/dist/catalog/org-catalog.controller.js +181 -65
  89. package/dist/catalog/org-catalog.service.d.ts +65 -33
  90. package/dist/catalog/org-catalog.service.js +324 -157
  91. package/dist/catalog/org-extension-switch.d.ts +41 -0
  92. package/dist/catalog/org-extension-switch.js +115 -0
  93. package/dist/catalog/org-extension.controller.d.ts +119 -0
  94. package/dist/catalog/org-extension.controller.js +266 -0
  95. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  96. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  97. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  98. package/dist/catalog/org-plugin-uploads.js +116 -0
  99. package/dist/catalog/owned-items.d.ts +184 -0
  100. package/dist/catalog/owned-items.js +789 -0
  101. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  102. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  103. package/dist/catalog/ownership.d.ts +172 -0
  104. package/dist/catalog/ownership.js +326 -0
  105. package/dist/catalog/platform-components.d.ts +221 -0
  106. package/dist/catalog/platform-components.js +761 -0
  107. package/dist/catalog/platform-migration.d.ts +115 -0
  108. package/dist/catalog/platform-migration.js +582 -0
  109. package/dist/catalog/plugin-import.d.ts +178 -34
  110. package/dist/catalog/plugin-import.js +622 -82
  111. package/dist/catalog/plugin-install.d.ts +185 -41
  112. package/dist/catalog/plugin-install.js +758 -126
  113. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  114. package/dist/catalog/plugin-upgrade.js +1147 -1136
  115. package/dist/catalog/request-rules.d.ts +65 -0
  116. package/dist/catalog/request-rules.js +217 -0
  117. package/dist/catalog/requests.service.d.ts +193 -118
  118. package/dist/catalog/requests.service.js +526 -343
  119. package/dist/catalog/reserved-names.d.ts +8 -0
  120. package/dist/catalog/reserved-names.js +42 -0
  121. package/dist/catalog/scope-orgs.d.ts +21 -0
  122. package/dist/catalog/scope-orgs.js +67 -0
  123. package/dist/catalog/scope-state.d.ts +35 -0
  124. package/dist/catalog/scope-state.js +87 -0
  125. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  126. package/dist/catalog/scope-sync-workers.js +29 -0
  127. package/dist/catalog/scope-sync.d.ts +176 -0
  128. package/dist/catalog/scope-sync.js +576 -0
  129. package/dist/catalog/scope.d.ts +42 -0
  130. package/dist/catalog/scope.js +42 -0
  131. package/dist/catalog/unshare.d.ts +22 -0
  132. package/dist/catalog/unshare.js +118 -0
  133. package/dist/channels/actions.js +1 -0
  134. package/dist/channels/cards.js +20 -2
  135. package/dist/channels/channels.module.js +2 -0
  136. package/dist/channels/inbound.d.ts +9 -1
  137. package/dist/channels/inbound.js +67 -5
  138. package/dist/channels/phrases.d.ts +35 -0
  139. package/dist/channels/phrases.js +29 -0
  140. package/dist/config/docs.js +3 -1
  141. package/dist/config/schema.d.ts +6 -2
  142. package/dist/config/schema.js +46 -22
  143. package/dist/conversations/access.d.ts +6 -4
  144. package/dist/conversations/access.js +27 -5
  145. package/dist/conversations/agent-tree.d.ts +46 -0
  146. package/dist/conversations/agent-tree.js +92 -0
  147. package/dist/conversations/conversations.controller.d.ts +43 -18
  148. package/dist/conversations/conversations.controller.js +79 -38
  149. package/dist/conversations/conversations.module.d.ts +1 -1
  150. package/dist/conversations/conversations.module.js +7 -7
  151. package/dist/conversations/conversations.service.d.ts +69 -12
  152. package/dist/conversations/conversations.service.js +106 -27
  153. package/dist/conversations/environment-status.d.ts +24 -0
  154. package/dist/conversations/environment-status.js +71 -0
  155. package/dist/conversations/event-log.d.ts +20 -5
  156. package/dist/conversations/event-log.js +60 -0
  157. package/dist/conversations/events.d.ts +84 -2
  158. package/dist/conversations/events.js +91 -17
  159. package/dist/conversations/queue.service.d.ts +1 -1
  160. package/dist/conversations/queue.service.js +5 -0
  161. package/dist/conversations/titles.d.ts +5 -3
  162. package/dist/conversations/titles.js +21 -8
  163. package/dist/conversations/tree.d.ts +17 -0
  164. package/dist/conversations/tree.js +42 -0
  165. package/dist/ctx/create-ctx.d.ts +5 -0
  166. package/dist/ctx/create-ctx.js +15 -5
  167. package/dist/db/kernel-schema.d.ts +362 -18
  168. package/dist/environments/access.d.ts +41 -0
  169. package/dist/environments/access.js +77 -0
  170. package/dist/environments/conversation-environments.d.ts +61 -0
  171. package/dist/environments/conversation-environments.js +170 -0
  172. package/dist/environments/dto.d.ts +25 -0
  173. package/dist/environments/dto.js +12 -0
  174. package/dist/environments/environments.controller.d.ts +33 -0
  175. package/dist/environments/environments.controller.js +110 -0
  176. package/dist/environments/environments.module.d.ts +8 -0
  177. package/dist/environments/environments.module.js +27 -0
  178. package/dist/environments/environments.service.d.ts +153 -0
  179. package/dist/environments/environments.service.js +541 -0
  180. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  181. package/dist/environments/legacy-cleanup.job.js +141 -0
  182. package/dist/errors.d.ts +82 -2
  183. package/dist/errors.js +82 -2
  184. package/dist/evals/reconstruct.d.ts +18 -9
  185. package/dist/evals/reconstruct.js +26 -7
  186. package/dist/evals/run-replay.d.ts +4 -2
  187. package/dist/evals/run-replay.js +16 -4
  188. package/dist/evals/step-replay.d.ts +2 -5
  189. package/dist/evals/step-replay.js +1 -1
  190. package/dist/evals/trajectory.service.d.ts +8 -3
  191. package/dist/evals/trajectory.service.js +26 -14
  192. package/dist/evals/worker.d.ts +5 -5
  193. package/dist/evals/worker.js +9 -3
  194. package/dist/extensions/admin-ops.d.ts +36 -10
  195. package/dist/extensions/admin-ops.js +65 -42
  196. package/dist/extensions/admin-view.d.ts +37 -10
  197. package/dist/extensions/admin-view.js +103 -20
  198. package/dist/extensions/bootstrap.d.ts +17 -4
  199. package/dist/extensions/bootstrap.js +70 -9
  200. package/dist/extensions/cli.d.ts +12 -0
  201. package/dist/extensions/cli.js +11 -2
  202. package/dist/extensions/deployment-config.d.ts +28 -5
  203. package/dist/extensions/deployment-config.js +48 -7
  204. package/dist/extensions/effective-config.d.ts +127 -0
  205. package/dist/extensions/effective-config.js +368 -0
  206. package/dist/extensions/extensions.module.js +8 -2
  207. package/dist/extensions/hooks.d.ts +37 -4
  208. package/dist/extensions/hooks.js +82 -16
  209. package/dist/extensions/host.d.ts +19 -1
  210. package/dist/extensions/host.js +30 -7
  211. package/dist/extensions/installs.d.ts +20 -8
  212. package/dist/extensions/installs.js +37 -15
  213. package/dist/extensions/org-config.d.ts +75 -6
  214. package/dist/extensions/org-config.js +184 -32
  215. package/dist/extensions/org-levels.d.ts +37 -0
  216. package/dist/extensions/org-levels.js +71 -0
  217. package/dist/extensions/org-overrides.d.ts +151 -0
  218. package/dist/extensions/org-overrides.js +524 -0
  219. package/dist/extensions/permission-view.d.ts +16 -4
  220. package/dist/extensions/permission-view.js +4 -4
  221. package/dist/extensions/plugin-items.d.ts +21 -0
  222. package/dist/extensions/plugin-items.js +42 -0
  223. package/dist/extensions/point-defaults.d.ts +12 -5
  224. package/dist/extensions/point-defaults.js +37 -9
  225. package/dist/extensions/resolve.d.ts +5 -1
  226. package/dist/extensions/resolve.js +15 -2
  227. package/dist/files/previewers.d.ts +8 -1
  228. package/dist/files/previewers.js +35 -6
  229. package/dist/http/api.module.js +23 -3
  230. package/dist/http/app.d.ts +11 -2
  231. package/dist/http/app.js +31 -5
  232. package/dist/identity/accounts.d.ts +29 -29
  233. package/dist/identity/accounts.js +47 -47
  234. package/dist/identity/audit.d.ts +2 -1
  235. package/dist/identity/auth.guard.d.ts +13 -5
  236. package/dist/identity/auth.guard.js +26 -9
  237. package/dist/identity/identity.module.d.ts +1 -1
  238. package/dist/identity/identity.module.js +4 -4
  239. package/dist/identity/me.controller.js +1 -1
  240. package/dist/identity/principal.d.ts +3 -3
  241. package/dist/identity/principal.js +3 -3
  242. package/dist/identity/settings.d.ts +22 -11
  243. package/dist/identity/settings.js +53 -18
  244. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  245. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  246. package/dist/inbox/inbox.module.d.ts +4 -1
  247. package/dist/inbox/inbox.module.js +7 -3
  248. package/dist/inbox/inbox.service.d.ts +62 -3
  249. package/dist/inbox/inbox.service.js +74 -4
  250. package/dist/inbox/org-notices.d.ts +63 -0
  251. package/dist/inbox/org-notices.js +91 -0
  252. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  253. package/dist/inbox/platform-inbox.controller.js +58 -0
  254. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  255. package/dist/inbox/platform-inbox.service.js +263 -0
  256. package/dist/inbox/platform-notices.d.ts +19 -0
  257. package/dist/inbox/platform-notices.js +9 -0
  258. package/dist/index.d.ts +1 -1
  259. package/dist/index.js +1 -1
  260. package/dist/infra/cli/kernel-cli.module.js +9 -1
  261. package/dist/infra/config/kernel-config.service.js +21 -1
  262. package/dist/infra/database/xact-lock.d.ts +1 -1
  263. package/dist/infra/database/xact-lock.js +1 -1
  264. package/dist/infra/events/kernel-events.d.ts +11 -2
  265. package/dist/infra/queue/add-job-once.d.ts +14 -0
  266. package/dist/infra/queue/add-job-once.js +16 -0
  267. package/dist/kernel.module.js +6 -0
  268. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  269. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  270. package/dist/models/prices.d.ts +5 -5
  271. package/dist/models/prices.js +4 -4
  272. package/dist/models/purposes.controller.d.ts +6 -4
  273. package/dist/models/purposes.controller.js +13 -7
  274. package/dist/models/purposes.d.ts +20 -9
  275. package/dist/models/purposes.js +17 -8
  276. package/dist/orgs/directory-sync.d.ts +14 -5
  277. package/dist/orgs/directory-sync.js +41 -17
  278. package/dist/orgs/offboarding.d.ts +9 -7
  279. package/dist/orgs/offboarding.js +28 -17
  280. package/dist/orgs/org-lock.d.ts +5 -0
  281. package/dist/orgs/org-lock.js +13 -0
  282. package/dist/orgs/org.guard.d.ts +10 -0
  283. package/dist/orgs/org.guard.js +43 -32
  284. package/dist/orgs/orgs.module.js +3 -0
  285. package/dist/orgs/orgs.service.d.ts +20 -7
  286. package/dist/orgs/orgs.service.js +32 -12
  287. package/dist/orgs/roles.d.ts +1 -1
  288. package/dist/orgs/roles.js +5 -1
  289. package/dist/orgs/settings.controller.d.ts +1 -1
  290. package/dist/orgs/settings.service.d.ts +15 -3
  291. package/dist/orgs/settings.service.js +6 -2
  292. package/dist/overrides.d.ts +3 -0
  293. package/dist/overrides.js +2 -0
  294. package/dist/platform/actor.d.ts +48 -0
  295. package/dist/platform/actor.js +100 -0
  296. package/dist/platform/agent-docs.d.ts +18 -0
  297. package/dist/platform/agent-docs.js +59 -0
  298. package/dist/platform/availability.d.ts +14 -0
  299. package/dist/platform/availability.js +43 -0
  300. package/dist/platform/errors.d.ts +11 -0
  301. package/dist/platform/errors.js +26 -0
  302. package/dist/platform/exclusions.d.ts +12 -0
  303. package/dist/platform/exclusions.js +1387 -0
  304. package/dist/platform/method.d.ts +6 -0
  305. package/dist/platform/method.js +15 -0
  306. package/dist/platform/operation.d.ts +92 -0
  307. package/dist/platform/operation.js +35 -0
  308. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  309. package/dist/platform/ops/agent-templates.ops.js +92 -0
  310. package/dist/platform/ops/agents.ops.d.ts +19 -0
  311. package/dist/platform/ops/agents.ops.js +294 -0
  312. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  313. package/dist/platform/ops/connectors.ops.js +126 -0
  314. package/dist/platform/ops/errors.d.ts +11 -0
  315. package/dist/platform/ops/errors.js +22 -0
  316. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  317. package/dist/platform/ops/extensions.ops.js +116 -0
  318. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  319. package/dist/platform/ops/marketplaces.ops.js +157 -0
  320. package/dist/platform/ops/paging.d.ts +14 -0
  321. package/dist/platform/ops/paging.js +20 -0
  322. package/dist/platform/ops/platform.ops.d.ts +23 -0
  323. package/dist/platform/ops/platform.ops.js +158 -0
  324. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  325. package/dist/platform/ops/plugins.ops.js +377 -0
  326. package/dist/platform/ops/requests.ops.d.ts +14 -0
  327. package/dist/platform/ops/requests.ops.js +153 -0
  328. package/dist/platform/ops/role.d.ts +4 -0
  329. package/dist/platform/ops/role.js +10 -0
  330. package/dist/platform/ops/skills.ops.d.ts +13 -0
  331. package/dist/platform/ops/skills.ops.js +98 -0
  332. package/dist/platform/ops/summary.d.ts +10 -0
  333. package/dist/platform/ops/summary.js +18 -0
  334. package/dist/platform/platform-ops.module.d.ts +7 -0
  335. package/dist/platform/platform-ops.module.js +55 -0
  336. package/dist/platform/platform.module.d.ts +8 -0
  337. package/dist/platform/platform.module.js +25 -0
  338. package/dist/platform/redact-orgs.d.ts +7 -0
  339. package/dist/platform/redact-orgs.js +52 -0
  340. package/dist/platform/registry.d.ts +30 -0
  341. package/dist/platform/registry.js +111 -0
  342. package/dist/roles/worker-role.d.ts +6 -4
  343. package/dist/roles/worker-role.js +14 -7
  344. package/dist/roles/worker.module.d.ts +1 -1
  345. package/dist/roles/worker.module.js +9 -1
  346. package/dist/runtime/context/build.d.ts +6 -4
  347. package/dist/runtime/context/build.js +26 -7
  348. package/dist/runtime/context/claude-tools.d.ts +2 -1
  349. package/dist/runtime/context/claude-tools.js +5 -4
  350. package/dist/runtime/context/compaction.js +9 -0
  351. package/dist/runtime/context/reminders.d.ts +2 -0
  352. package/dist/runtime/context/reminders.js +2 -0
  353. package/dist/runtime/context/skills.js +9 -2
  354. package/dist/runtime/context/tool-changes.d.ts +27 -0
  355. package/dist/runtime/context/tool-changes.js +60 -0
  356. package/dist/runtime/hook-calls.js +2 -0
  357. package/dist/runtime/langgraph-loop.d.ts +3 -1
  358. package/dist/runtime/langgraph-loop.js +35 -17
  359. package/dist/runtime/loop.d.ts +32 -4
  360. package/dist/runtime/maintenance.d.ts +7 -4
  361. package/dist/runtime/maintenance.js +23 -8
  362. package/dist/runtime/model-call.d.ts +30 -8
  363. package/dist/runtime/model-call.js +69 -19
  364. package/dist/runtime/run-control.d.ts +11 -1
  365. package/dist/runtime/run-control.js +12 -0
  366. package/dist/runtime/run-drafts.d.ts +85 -0
  367. package/dist/runtime/run-drafts.js +230 -0
  368. package/dist/runtime/run-jobs.d.ts +3 -5
  369. package/dist/runtime/run-jobs.js +3 -7
  370. package/dist/runtime/run-queue.d.ts +37 -3
  371. package/dist/runtime/run-queue.js +188 -11
  372. package/dist/runtime/run-worker.d.ts +11 -5
  373. package/dist/runtime/run-worker.js +54 -31
  374. package/dist/runtime/runtime.module.js +3 -0
  375. package/dist/runtime/step-log.d.ts +9 -4
  376. package/dist/runtime/step-log.js +8 -5
  377. package/dist/runtime/stream.controller.d.ts +23 -1
  378. package/dist/runtime/stream.controller.js +60 -3
  379. package/dist/runtime/stream.d.ts +4 -1
  380. package/dist/runtime/stream.js +27 -3
  381. package/dist/runtime/subagents/child.d.ts +55 -7
  382. package/dist/runtime/subagents/child.js +105 -7
  383. package/dist/runtime/subagents/definition.d.ts +12 -3
  384. package/dist/runtime/subagents/definition.js +43 -29
  385. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  386. package/dist/runtime/subagents/deliveries.js +228 -0
  387. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  388. package/dist/runtime/subagents/dispatch.js +212 -141
  389. package/dist/runtime/subagents/limits.d.ts +24 -5
  390. package/dist/runtime/subagents/limits.js +40 -6
  391. package/dist/runtime/subagents/messages.d.ts +95 -0
  392. package/dist/runtime/subagents/messages.js +328 -0
  393. package/dist/runtime/subagents/preamble.d.ts +4 -4
  394. package/dist/runtime/subagents/preamble.js +9 -7
  395. package/dist/runtime/subagents/progress.d.ts +8 -6
  396. package/dist/runtime/subagents/progress.js +11 -6
  397. package/dist/runtime/subagents/render.d.ts +30 -0
  398. package/dist/runtime/subagents/render.js +53 -0
  399. package/dist/runtime/subagents/roster.d.ts +24 -7
  400. package/dist/runtime/subagents/roster.js +47 -11
  401. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  402. package/dist/runtime/subagents/skill-fork.js +8 -4
  403. package/dist/runtime/subagents/status.d.ts +14 -0
  404. package/dist/runtime/subagents/status.js +23 -0
  405. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  406. package/dist/runtime/subagents/subagents.service.js +11 -6
  407. package/dist/runtime/usage-report.js +17 -12
  408. package/dist/runtime/waits.d.ts +140 -37
  409. package/dist/runtime/waits.js +394 -106
  410. package/dist/sandbox/jobs.d.ts +40 -13
  411. package/dist/sandbox/jobs.js +57 -20
  412. package/dist/sandbox/leases.d.ts +37 -54
  413. package/dist/sandbox/leases.js +71 -115
  414. package/dist/sandbox/providers.d.ts +2 -2
  415. package/dist/sandbox/providers.js +1 -1
  416. package/dist/sandbox/sandbox.module.d.ts +3 -2
  417. package/dist/sandbox/sandbox.module.js +4 -3
  418. package/dist/sandbox/sandbox.service.d.ts +229 -134
  419. package/dist/sandbox/sandbox.service.js +630 -409
  420. package/dist/skills/catalog.d.ts +3 -2
  421. package/dist/skills/catalog.js +21 -43
  422. package/dist/skills/changes.controller.d.ts +7 -0
  423. package/dist/skills/changes.controller.js +19 -1
  424. package/dist/skills/invoke.js +8 -3
  425. package/dist/skills/package.d.ts +20 -1
  426. package/dist/skills/package.js +28 -1
  427. package/dist/skills/skills.controller.d.ts +39 -4
  428. package/dist/skills/skills.controller.js +88 -10
  429. package/dist/skills/skills.module.js +10 -1
  430. package/dist/skills/skills.service.d.ts +106 -26
  431. package/dist/skills/skills.service.js +421 -75
  432. package/dist/skills/usable.d.ts +81 -0
  433. package/dist/skills/usable.js +379 -0
  434. package/dist/tools/approvals.service.d.ts +20 -2
  435. package/dist/tools/approvals.service.js +23 -4
  436. package/dist/tools/builtin-names.d.ts +21 -5
  437. package/dist/tools/builtin-names.js +30 -5
  438. package/dist/tools/builtins/agent.d.ts +23 -21
  439. package/dist/tools/builtins/agent.js +62 -55
  440. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  441. package/dist/tools/builtins/builtin-tools.js +37 -12
  442. package/dist/tools/builtins/handback.d.ts +28 -0
  443. package/dist/tools/builtins/handback.js +53 -0
  444. package/dist/tools/builtins/platform.d.ts +34 -0
  445. package/dist/tools/builtins/platform.js +362 -0
  446. package/dist/tools/builtins/sandbox/bash.js +13 -3
  447. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  448. package/dist/tools/builtins/sandbox/common.js +80 -45
  449. package/dist/tools/builtins/sandbox/edit.js +2 -2
  450. package/dist/tools/builtins/sandbox/glob.js +2 -2
  451. package/dist/tools/builtins/sandbox/grep.js +2 -4
  452. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  453. package/dist/tools/builtins/sandbox/index.js +1 -1
  454. package/dist/tools/builtins/sandbox/read.js +1 -1
  455. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  456. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  457. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  458. package/dist/tools/builtins/sandbox/write.js +2 -2
  459. package/dist/tools/builtins/send-message.d.ts +56 -0
  460. package/dist/tools/builtins/send-message.js +100 -0
  461. package/dist/tools/builtins/skill-load.d.ts +22 -14
  462. package/dist/tools/builtins/skill-load.js +86 -57
  463. package/dist/tools/builtins/skill-write.js +1 -1
  464. package/dist/tools/builtins/web/extract.js +5 -1
  465. package/dist/tools/builtins/web/fetch.js +1 -0
  466. package/dist/tools/builtins/web/search.js +1 -0
  467. package/dist/tools/connectors.controller.d.ts +10 -0
  468. package/dist/tools/connectors.controller.js +12 -0
  469. package/dist/tools/connectors.service.d.ts +46 -5
  470. package/dist/tools/connectors.service.js +94 -15
  471. package/dist/tools/extension-tools.controller.d.ts +14 -0
  472. package/dist/tools/extension-tools.controller.js +37 -0
  473. package/dist/tools/info.d.ts +42 -1
  474. package/dist/tools/info.js +64 -1
  475. package/dist/tools/org-tool-switches.d.ts +74 -0
  476. package/dist/tools/org-tool-switches.js +184 -0
  477. package/dist/tools/pipeline.d.ts +46 -40
  478. package/dist/tools/pipeline.js +187 -364
  479. package/dist/tools/policy.d.ts +1 -1
  480. package/dist/tools/policy.js +36 -16
  481. package/dist/tools/registry.d.ts +98 -5
  482. package/dist/tools/registry.js +87 -9
  483. package/dist/tools/tools.module.js +12 -2
  484. package/dist/ui/views.d.ts +2 -1
  485. package/dist/ui/views.js +17 -3
  486. package/package.json +3 -3
  487. package/src/migrations/0074_subagent_tree.sql +50 -0
  488. package/src/migrations/0075_plugin_scope.sql +61 -0
  489. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  490. package/src/migrations/0077_scope_requests.sql +52 -0
  491. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  492. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  493. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  494. package/src/migrations/0081_platform_components.sql +129 -0
  495. package/src/migrations/0082_platform_migration.sql +33 -0
  496. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  497. package/src/migrations/0084_org_owned_items.sql +85 -0
  498. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  499. package/src/migrations/0086_org_layering.sql +30 -0
  500. package/src/migrations/0087_approval_summary.sql +6 -0
  501. package/src/migrations/0088_environments.sql +80 -0
  502. package/dist/catalog/upgrade-targets.d.ts +0 -56
  503. package/dist/catalog/upgrade-targets.js +0 -90
  504. package/dist/conversations/sandbox-status.d.ts +0 -24
  505. package/dist/conversations/sandbox-status.js +0 -52
  506. package/dist/extensions/org-config.controller.d.ts +0 -32
  507. package/dist/extensions/org-config.controller.js +0 -70
@@ -1,6 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { type Principal } from "../identity/principal.js";
3
3
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { type OrgContext } from "../orgs/org.guard.js";
4
6
  import { CatalogService, type MarketplaceImportResult } from "./catalog.service.js";
5
7
  import { type MarketplaceEntryView, MarketplacesService, type MarketplaceView } from "./marketplaces.service.js";
6
8
  declare const AddBody: z.ZodObject<{
@@ -34,9 +36,9 @@ declare const ImportBody: z.ZodObject<{
34
36
  version: z.ZodOptional<z.ZodString>;
35
37
  }, z.core.$strip>;
36
38
  /**
37
- * Marketplaces (`/api/v1/admin/marketplaces/*`, enterprise admins): create, update, delete and
38
- * refresh the official and enterprise marketplaces, browse entries, import from a marketplace.
39
- * Writes re-check the enterprise admin inside the service's lock and are audited.
39
+ * Marketplaces (`/api/v1/admin/marketplaces/*`, super admins): create, update, delete and
40
+ * refresh the official and custom marketplaces, browse entries, import from a marketplace.
41
+ * Writes re-check the super admin inside the service's lock and are audited.
40
42
  */
41
43
  export declare class MarketplacesController {
42
44
  private readonly marketplaces;
@@ -49,7 +51,7 @@ export declare class MarketplacesController {
49
51
  offline: boolean;
50
52
  }>;
51
53
  /**
52
- * Adds an enterprise marketplace (https URL and mirrors; the token is kept in secrets and sent only
54
+ * Adds a custom marketplace (https URL and mirrors; the token is kept in secrets and sent only
53
55
  * to the URL's origin). A git URL (`…/*.git`, `owner/repo`, or any URL with `form: "git"`) is a
54
56
  * git marketplace with an optional `ref`; anything else is a marketplace.json URL.
55
57
  */
@@ -71,7 +73,7 @@ export declare class MarketplacesController {
71
73
  */
72
74
  update(principal: Principal, id: string, body: z.infer<typeof PatchBody>): Promise<MarketplaceView>;
73
75
  /**
74
- * Deletes an enterprise marketplace (imported catalog items are kept); official -> 409
76
+ * Deletes a custom marketplace (imported catalog items are kept); official -> 409
75
77
  * `marketplace.builtin`.
76
78
  */
77
79
  remove(principal: Principal, id: string): Promise<void>;
@@ -94,4 +96,19 @@ export declare class MarketplacesController {
94
96
  */
95
97
  importEntry(principal: Principal, id: string, name: string, body: z.infer<typeof ImportBody>): Promise<MarketplaceImportResult>;
96
98
  }
99
+ /**
100
+ * Org admins browse the marketplaces read-only (`GET /api/v1/orgs/:orgId/marketplaces/entries`,
101
+ * `catalog.decide`; plugin scope spec §5.1 rule 3) to request an import. The deployment setting
102
+ * `orgMarketplaceBrowse` off -> 404 `not_found`. An entry imported as an item the org can neither
103
+ * see nor request (a hidden `named` item) reads as not imported (`adopted: null`).
104
+ */
105
+ export declare class OrgMarketplacesController {
106
+ private readonly marketplaces;
107
+ private readonly kdb;
108
+ constructor(marketplaces: MarketplacesService, kdb: KernelDb);
109
+ entries(org: OrgContext, q: z.infer<typeof EntriesQuery>): Promise<{
110
+ items: MarketplaceEntryView[];
111
+ truncated: boolean;
112
+ }>;
113
+ }
97
114
  export {};
@@ -10,12 +10,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
10
10
  import { Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post } from "@nestjs/common";
11
11
  import { z } from "zod";
12
12
  import { MARKETPLACE_MAX_MIRRORS } from "../config/schema.js";
13
- import { CurrentPrincipal, EnterpriseAdmin, patTokenId, requireUser, } from "../identity/principal.js";
13
+ import { ApiError } from "../errors.js";
14
+ import { CurrentPrincipal, patTokenId, requireUser, SuperAdmin, } from "../identity/principal.js";
15
+ import { readOrgMarketplaceBrowse } from "../identity/settings.js";
14
16
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
17
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
18
  import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
19
  import { ZBody, ZQuery } from "../infra/validation/zod-params.js";
20
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
17
21
  import { CatalogService } from "./catalog.service.js";
18
22
  import { MarketplacesService, } from "./marketplaces.service.js";
23
+ import { itemsSeenBy } from "./scope-state.js";
19
24
  const Url = z.string().min(1).max(2000);
20
25
  const Form = z.enum(["http", "git"]);
21
26
  const Ref = z.string().min(1).max(256);
@@ -58,9 +63,9 @@ class MarketplaceImportBody extends createZodDto(ImportBody, "MarketplaceImportB
58
63
  class MarketplacePatchBody extends createZodDto(PatchBody, "MarketplacePatchBody") {
59
64
  }
60
65
  /**
61
- * Marketplaces (`/api/v1/admin/marketplaces/*`, enterprise admins): create, update, delete and
62
- * refresh the official and enterprise marketplaces, browse entries, import from a marketplace.
63
- * Writes re-check the enterprise admin inside the service's lock and are audited.
66
+ * Marketplaces (`/api/v1/admin/marketplaces/*`, super admins): create, update, delete and
67
+ * refresh the official and custom marketplaces, browse entries, import from a marketplace.
68
+ * Writes re-check the super admin inside the service's lock and are audited.
64
69
  */
65
70
  let MarketplacesController = class MarketplacesController {
66
71
  marketplaces;
@@ -79,7 +84,7 @@ let MarketplacesController = class MarketplacesController {
79
84
  };
80
85
  }
81
86
  /**
82
- * Adds an enterprise marketplace (https URL and mirrors; the token is kept in secrets and sent only
87
+ * Adds a custom marketplace (https URL and mirrors; the token is kept in secrets and sent only
83
88
  * to the URL's origin). A git URL (`…/*.git`, `owner/repo`, or any URL with `form: "git"`) is a
84
89
  * git marketplace with an optional `ref`; anything else is a marketplace.json URL.
85
90
  */
@@ -124,7 +129,7 @@ let MarketplacesController = class MarketplacesController {
124
129
  }, actorOpts(actor));
125
130
  }
126
131
  /**
127
- * Deletes an enterprise marketplace (imported catalog items are kept); official -> 409
132
+ * Deletes a custom marketplace (imported catalog items are kept); official -> 409
128
133
  * `marketplace.builtin`.
129
134
  */
130
135
  async remove(principal, id) {
@@ -200,9 +205,53 @@ __decorate([
200
205
  ], MarketplacesController.prototype, "importEntry", null);
201
206
  MarketplacesController = __decorate([
202
207
  Controller("api/v1/admin/marketplaces"),
203
- EnterpriseAdmin(),
208
+ SuperAdmin(),
204
209
  __param(0, Inject(MarketplacesService)),
205
210
  __param(1, Inject(CatalogService)),
206
211
  __param(2, Inject(KernelConfigService))
207
212
  ], MarketplacesController);
208
213
  export { MarketplacesController };
214
+ /**
215
+ * Org admins browse the marketplaces read-only (`GET /api/v1/orgs/:orgId/marketplaces/entries`,
216
+ * `catalog.decide`; plugin scope spec §5.1 rule 3) to request an import. The deployment setting
217
+ * `orgMarketplaceBrowse` off -> 404 `not_found`. An entry imported as an item the org can neither
218
+ * see nor request (a hidden `named` item) reads as not imported (`adopted: null`).
219
+ */
220
+ let OrgMarketplacesController = class OrgMarketplacesController {
221
+ marketplaces;
222
+ kdb;
223
+ constructor(marketplaces, kdb) {
224
+ this.marketplaces = marketplaces;
225
+ this.kdb = kdb;
226
+ }
227
+ async entries(org, q) {
228
+ if (!(await readOrgMarketplaceBrowse(this.kdb.db))) {
229
+ throw new ApiError("not_found", "Marketplace browsing is off for organizations");
230
+ }
231
+ const r = await this.marketplaces.entries({
232
+ ...(q.sourceId !== undefined && { marketplaceId: q.sourceId }),
233
+ ...(q.q !== undefined && { q: q.q }),
234
+ });
235
+ // A hidden `named` item the org is not listed on stays unknown to it: the entry reads as not
236
+ // imported
237
+ const seen = await itemsSeenBy(this.kdb.db, org.orgId, r.items.flatMap((e) => (e.adopted ? [e.adopted.itemId] : [])));
238
+ return {
239
+ ...r,
240
+ items: r.items.map((e) => e.adopted === null || seen.has(e.adopted.itemId)
241
+ ? e
242
+ : { ...e, adopted: null, newerAvailable: false, contentChanged: false }),
243
+ };
244
+ }
245
+ };
246
+ __decorate([
247
+ Get("entries"),
248
+ OrgAction("catalog.decide"),
249
+ __param(0, CurrentOrg()),
250
+ __param(1, ZQuery(MarketplaceEntriesQuery))
251
+ ], OrgMarketplacesController.prototype, "entries", null);
252
+ OrgMarketplacesController = __decorate([
253
+ Controller("api/v1/orgs/:orgId/marketplaces"),
254
+ __param(0, Inject(MarketplacesService)),
255
+ __param(1, Inject(KernelDb))
256
+ ], OrgMarketplacesController);
257
+ export { OrgMarketplacesController };
@@ -2,7 +2,7 @@ import { type MarketplaceEntry, type MarketplaceSource } from "@capybara-hq/plug
2
2
  import { type KernelConfig } from "../config/schema.js";
3
3
  import { type Keyring } from "../ctx/secrets.js";
4
4
  import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
5
+ import { SuperAdminLock } from "../identity/super-admin.js";
6
6
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
7
7
  import { KernelDb } from "../infra/database/kernel-db.js";
8
8
  import { TransactionHost } from "../infra/database/transaction-host.js";
@@ -74,6 +74,11 @@ export interface MarketplaceEntryView {
74
74
  en: string;
75
75
  zh?: string;
76
76
  };
77
+ /** The entry's display name (copied from the plugin's `plugin.json`); null without one. */
78
+ displayName: {
79
+ zh: string;
80
+ en: string;
81
+ } | null;
77
82
  minKernel: string | null;
78
83
  homepage: string | null;
79
84
  permissions: {
@@ -83,6 +88,13 @@ export interface MarketplaceEntryView {
83
88
  source: MarketplaceSource;
84
89
  /** `claude-code` for an entry of a Claude Code marketplace (`.claude-plugin/marketplace.json`). */
85
90
  format: "capybara" | "claude-code";
91
+ /**
92
+ * The marketplace deprecates this version (`deprecated`, spec ruling Task 13): its reason, `null`
93
+ * without one; `null` when not deprecated. Importing it is refused (`marketplace.entry_deprecated`).
94
+ */
95
+ deprecated: {
96
+ reason: string | null;
97
+ } | null;
86
98
  /** `minKernel` is satisfied by this deployment. */
87
99
  compatible: boolean;
88
100
  /** The kernel can import this entry's source now. */
@@ -93,7 +105,10 @@ export interface MarketplaceEntryView {
93
105
  itemId: string;
94
106
  versions: string[];
95
107
  } | null;
96
- /** Adopted, and this compatible entry is newer than the newest imported version (never automatic). */
108
+ /**
109
+ * Adopted, and this compatible entry, not deprecated, is newer than the newest imported version
110
+ * (never automatic).
111
+ */
97
112
  newerAvailable: boolean;
98
113
  /**
99
114
  * "Content changed at the same version" (spec §5.3): a version of this entry's release is
@@ -106,6 +121,8 @@ export interface MarketplaceEntryView {
106
121
  }
107
122
  export interface ActorOpts {
108
123
  actorTokenId?: string;
124
+ /** Merged into the audit detail (a write made through the Platform tool: `via`, …). */
125
+ auditDetail?: Record<string, unknown>;
109
126
  }
110
127
  /** A plugin name from a repo URL or path segment (lower case, invalid characters as `-`). */
111
128
  export declare function pluginNameFrom(segment: string): string;
@@ -164,10 +181,17 @@ export declare function headsToResolve(entries: readonly MarketplaceEntry[], imp
164
181
  /** The host versions (an entry's `minKernel` is judged against them). */
165
182
  export declare const HOST_VERSIONS: {
166
183
  readonly kernel: string;
167
- readonly sdk: "0.1.0-rc.2";
184
+ readonly sdk: "0.1.0-rc.3";
168
185
  };
169
186
  /** Whether this deployment satisfies the entry's `minKernel`. */
170
187
  export declare const entryCompatible: (e: Pick<MarketplaceEntry, "minKernel">) => boolean;
188
+ /** Whether the marketplace marks the entry deprecated (`deprecated: true` or with a reason). */
189
+ export declare const entryDeprecated: (e: MarketplaceEntry) => boolean;
190
+ /**
191
+ * Refuses importing (or requesting) a deprecated marketplace entry: 409
192
+ * `marketplace.entry_deprecated`, its reason in the message and details.
193
+ */
194
+ export declare function assertEntryNotDeprecated(e: MarketplaceEntry): void;
171
195
  /**
172
196
  * The form of a marketplace address (spec §5.1): `owner/repo` (expanded to GitHub), an https URL
173
197
  * whose path ends in `.git`, or any URL with `form: "git"` is a git repository; anything else
@@ -181,6 +205,8 @@ export declare function marketplaceForm(url: string, form?: MarketplaceForm): {
181
205
  export declare function entrySourceHost(e: Pick<MarketplaceEntry, "source">): string | undefined;
182
206
  /** Whether `marketplaces.allowedHosts` lets an entry download from `host` (empty: any host). */
183
207
  export declare function hostAllowed(host: string, config: KernelConfig): boolean;
208
+ /** Why an entry is not importable from a marketplace of `form`, or undefined when it is. */
209
+ export declare function unimportable(e: MarketplaceEntry, form: MarketplaceForm, config: KernelConfig): MarketplaceEntryUnimportable | undefined;
184
210
  /** What an import needs to know about the marketplace of an entry. */
185
211
  export interface MarketplaceOfEntry {
186
212
  url: string;
@@ -195,10 +221,24 @@ export declare const sourceEffective: (row: {
195
221
  builtin: boolean;
196
222
  enabled: boolean;
197
223
  }, config: KernelConfig) => boolean;
224
+ /**
225
+ * The default entry of a marketplace plugin (`version` `""`: the entry without a version), the
226
+ * same order as the web's market row (`groupMarketplaceEntries`, apps/web/src/lib/catalog.ts):
227
+ * the newest `usable` versioned entry, a stable version before a prerelease; else the entry
228
+ * without a version that is not deprecated; else the newest versioned one that is not deprecated;
229
+ * else the entry without a version; else the newest.
230
+ */
231
+ export declare function pickDefaultEntry<T extends {
232
+ version: string;
233
+ }>(entries: readonly T[], o: {
234
+ usable: (e: T) => boolean;
235
+ deprecated: (e: T) => boolean;
236
+ }): T | undefined;
198
237
  /**
199
238
  * Reads a marketplace entry for import: `version` given -> the entry listing that version; omitted
200
- * -> the newest compatible versioned entry, else the entry without a version, else the newest
201
- * versioned one (refused later as incompatible). Marketplace missing -> `marketplace.not_found`;
239
+ * -> {@link pickDefaultEntry} over the compatible, importable entries that are not deprecated
240
+ * (a fallback is refused later as incompatible or deprecated). Marketplace missing ->
241
+ * `marketplace.not_found`;
202
242
  * marketplace disabled (official offline included), entry or version missing ->
203
243
  * `marketplace.entry_not_found`.
204
244
  */
@@ -209,9 +249,9 @@ export declare function loadMarketplaceEntry(db: KernelSchemaDb, config: KernelC
209
249
  claude?: ClaudeEntryOverlay;
210
250
  }>;
211
251
  /**
212
- * Marketplaces (D16 / C25 / C26, `/api/v1/admin/marketplaces/*`, enterprise admins only): the official
252
+ * Marketplaces (D16 / C25 / C26, `/api/v1/admin/marketplaces/*`, super admins only): the official
213
253
  * marketplace (config `marketplaces.official.*`, synced at startup into the marketplace with id
214
- * `official`) and enterprise marketplaces (PG, optional token in secrets). A refresh (maintenance
254
+ * `official`) and custom marketplaces (PG, optional token in secrets). A refresh (maintenance
215
255
  * job `catalogs-refresh` every `marketplaces.refreshIntervalMinutes` minutes, or manual) tries the main
216
256
  * URL and then the mirrors with If-None-Match; on success it replaces that marketplace's cached
217
257
  * entries as a whole, when all fail (an invalid manifest included) it keeps the previous ones with
@@ -220,7 +260,7 @@ export declare function loadMarketplaceEntry(db: KernelSchemaDb, config: KernelC
220
260
  */
221
261
  export declare class MarketplacesService {
222
262
  private readonly kdb;
223
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the caller's transaction. */
263
+ /** The super admin lock (identity/super-admin.ts): joins the caller's transaction. */
224
264
  private readonly adminLock;
225
265
  private readonly sourceLock;
226
266
  private readonly config;
@@ -228,8 +268,8 @@ export declare class MarketplacesService {
228
268
  private readonly log;
229
269
  readonly txHost: TransactionHost;
230
270
  constructor(kdb: KernelDb,
231
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the caller's transaction. */
232
- adminLock: EnterpriseAdminLock, sourceLock: CatalogSourceLock, config: KernelConfigService, keyring: Keyring, log: KernelLogger, txHost: TransactionHost);
271
+ /** The super admin lock (identity/super-admin.ts): joins the caller's transaction. */
272
+ adminLock: SuperAdminLock, sourceLock: CatalogSourceLock, config: KernelConfigService, keyring: Keyring, log: KernelLogger, txHost: TransactionHost);
233
273
  /** The kernel-schema handle of the current context (the transaction, else the pool). */
234
274
  private get db();
235
275
  /**
@@ -245,7 +285,7 @@ export declare class MarketplacesService {
245
285
  list(): Promise<MarketplaceView[]>;
246
286
  get(id: string): Promise<MarketplaceView>;
247
287
  /**
248
- * Adds an enterprise marketplace (audit `marketplace.added`). URL and mirrors must be https,
288
+ * Adds a custom marketplace (audit `marketplace.added`). URL and mirrors must be https,
249
289
  * without user info. The form follows {@link marketplaceForm}; a git marketplace may name a `ref`
250
290
  * (branch or tag, default the remote HEAD) and has no mirrors.
251
291
  */
@@ -259,7 +299,7 @@ export declare class MarketplacesService {
259
299
  }, opts?: ActorOpts): Promise<MarketplaceView>;
260
300
  private writeAdd;
261
301
  /**
262
- * Updates an enterprise marketplace (audit `marketplace.updated`, listing the changed fields, the
302
+ * Updates a custom marketplace (audit `marketplace.updated`, listing the changed fields, the
263
303
  * token's value never recorded; not written when unchanged). `token: null` clears the token.
264
304
  * Official only takes `enabled`, any other field -> `marketplace.builtin`. Changing the URL, form
265
305
  * or ref clears the ETag and the last commit (the next refresh reads everything again); a new URL
@@ -278,7 +318,7 @@ export declare class MarketplacesService {
278
318
  }, opts?: ActorOpts): Promise<MarketplaceView>;
279
319
  private writeUpdate;
280
320
  /**
281
- * Deletes an enterprise marketplace (audit `marketplace.removed`): its cached entries and token
321
+ * Deletes a custom marketplace (audit `marketplace.removed`): its cached entries and token
282
322
  * are deleted; imported catalog items are kept (their marketplace becomes null). Official can
283
323
  * only be disabled -> `marketplace.builtin`.
284
324
  */
@@ -318,7 +358,7 @@ export declare class MarketplacesService {
318
358
  * entry unknown (never fails the refresh). Returns `name\0version` -> head.
319
359
  */
320
360
  private resolveHeads;
321
- /** The token of an enterprise marketplace (undefined without one; official never has one). */
361
+ /** The token of a custom marketplace (undefined without one; official never has one). */
322
362
  token(id: string): Promise<string | undefined>;
323
363
  /** Refreshes every effective marketplace (maintenance job `catalogs-refresh`), one failing not stopping the rest. */
324
364
  refreshAll(signal: AbortSignal): Promise<void>;
@@ -8,7 +8,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { randomUUID } from "node:crypto";
11
- import { CATALOG_ITEM_NAME_RE, marketplaceEntryVersion, PLUGIN_MANIFEST_FILE, parseMarketplaceManifest, parsePluginManifest, SDK_VERSION, SEMVER_VERSION_RE, } from "@capybara-hq/plugin-sdk";
11
+ import { CATALOG_ITEM_NAME_RE, marketplaceEntryDeprecation, marketplaceEntryVersion, PLUGIN_MANIFEST_FILE, parseMarketplaceManifest, parsePluginManifest, pluginDescription, SDK_VERSION, SEMVER_VERSION_RE, } from "@capybara-hq/plugin-sdk";
12
12
  import { Inject, Injectable } from "@nestjs/common";
13
13
  import { sql } from "kysely";
14
14
  import semver from "semver";
@@ -18,7 +18,7 @@ import { createSecrets } from "../ctx/secrets.js";
18
18
  import { ApiError } from "../errors.js";
19
19
  import { DEPLOYMENT_SECRETS_ORG } from "../extensions/deployment-config-store.js";
20
20
  import { audit } from "../identity/audit.js";
21
- import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
21
+ import { SuperAdminLock } from "../identity/super-admin.js";
22
22
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
23
23
  import { KernelDb } from "../infra/database/kernel-db.js";
24
24
  import { TransactionHost } from "../infra/database/transaction-host.js";
@@ -243,6 +243,20 @@ export function headsToResolve(entries, imported, config, max) {
243
243
  export const HOST_VERSIONS = { kernel: KERNEL_VERSION, sdk: SDK_VERSION };
244
244
  /** Whether this deployment satisfies the entry's `minKernel`. */
245
245
  export const entryCompatible = (e) => e.minKernel === undefined || semver.gte(HOST_VERSIONS.kernel, e.minKernel);
246
+ /** Whether the marketplace marks the entry deprecated (`deprecated: true` or with a reason). */
247
+ export const entryDeprecated = (e) => marketplaceEntryDeprecation(e) !== null;
248
+ /**
249
+ * Refuses importing (or requesting) a deprecated marketplace entry: 409
250
+ * `marketplace.entry_deprecated`, its reason in the message and details.
251
+ */
252
+ export function assertEntryNotDeprecated(e) {
253
+ const d = marketplaceEntryDeprecation(e);
254
+ if (d === null)
255
+ return;
256
+ const version = marketplaceEntryVersion(e);
257
+ throw new ApiError("marketplace.entry_deprecated", `${e.name}${version !== null ? `@${version}` : ""} is deprecated by its marketplace` +
258
+ `${d.reason !== null ? `: ${d.reason}` : ""}; import another version`, [{ entry: e.name, version, reason: d.reason }]);
259
+ }
246
260
  /**
247
261
  * The form of a marketplace address (spec §5.1): `owner/repo` (expanded to GitHub), an https URL
248
262
  * whose path ends in `.git`, or any URL with `form: "git"` is a git repository; anything else
@@ -282,7 +296,7 @@ export function hostAllowed(host, config) {
282
296
  return allowed.length === 0 || allowed.includes(host.toLowerCase());
283
297
  }
284
298
  /** Why an entry is not importable from a marketplace of `form`, or undefined when it is. */
285
- function unimportable(e, form, config) {
299
+ export function unimportable(e, form, config) {
286
300
  if ("path" in e.source && form !== "git")
287
301
  return "path_needs_git_marketplace";
288
302
  const host = entrySourceHost(e);
@@ -292,10 +306,30 @@ function unimportable(e, form, config) {
292
306
  }
293
307
  /** 来源是否生效:本身启用,official 还要配置没关。 */
294
308
  export const sourceEffective = (row, config) => row.enabled && (!row.builtin || config.marketplaces.official.enabled);
309
+ /**
310
+ * The default entry of a marketplace plugin (`version` `""`: the entry without a version), the
311
+ * same order as the web's market row (`groupMarketplaceEntries`, apps/web/src/lib/catalog.ts):
312
+ * the newest `usable` versioned entry, a stable version before a prerelease; else the entry
313
+ * without a version that is not deprecated; else the newest versioned one that is not deprecated;
314
+ * else the entry without a version; else the newest.
315
+ */
316
+ export function pickDefaultEntry(entries, o) {
317
+ const versioned = entries
318
+ .filter((e) => e.version !== "")
319
+ .sort((a, b) => newestFirst(a.version, b.version));
320
+ const bare = entries.filter((e) => e.version === "");
321
+ return (versioned.find((e) => o.usable(e) && semver.prerelease(e.version) === null) ??
322
+ versioned.find(o.usable) ??
323
+ bare.find((e) => !o.deprecated(e)) ??
324
+ versioned.find((e) => !o.deprecated(e)) ??
325
+ bare[0] ??
326
+ versioned[0]);
327
+ }
295
328
  /**
296
329
  * Reads a marketplace entry for import: `version` given -> the entry listing that version; omitted
297
- * -> the newest compatible versioned entry, else the entry without a version, else the newest
298
- * versioned one (refused later as incompatible). Marketplace missing -> `marketplace.not_found`;
330
+ * -> {@link pickDefaultEntry} over the compatible, importable entries that are not deprecated
331
+ * (a fallback is refused later as incompatible or deprecated). Marketplace missing ->
332
+ * `marketplace.not_found`;
299
333
  * marketplace disabled (official offline included), entry or version missing ->
300
334
  * `marketplace.entry_not_found`.
301
335
  */
@@ -325,13 +359,13 @@ export async function loadMarketplaceEntry(db, config, sourceId, name, version)
325
359
  pickedRow = entries.find((e) => e.version === version);
326
360
  }
327
361
  else {
328
- const versioned = entries
329
- .filter((e) => e.version !== "")
330
- .sort((a, b) => newestFirst(a.version, b.version));
331
- pickedRow =
332
- versioned.find((e) => entryCompatible(e.entry)) ??
333
- entries.find((e) => e.version === "") ??
334
- versioned[0];
362
+ pickedRow = pickDefaultEntry(entries, {
363
+ // compatible, importable, not deprecated
364
+ usable: (e) => entryCompatible(e.entry) &&
365
+ unimportable(e.entry, src.form, config) === undefined &&
366
+ !entryDeprecated(e.entry),
367
+ deprecated: (e) => entryDeprecated(e.entry),
368
+ });
335
369
  }
336
370
  const picked = pickedRow?.entry;
337
371
  if (!picked) {
@@ -353,9 +387,9 @@ export async function loadMarketplaceEntry(db, config, sourceId, name, version)
353
387
  };
354
388
  }
355
389
  /**
356
- * Marketplaces (D16 / C25 / C26, `/api/v1/admin/marketplaces/*`, enterprise admins only): the official
390
+ * Marketplaces (D16 / C25 / C26, `/api/v1/admin/marketplaces/*`, super admins only): the official
357
391
  * marketplace (config `marketplaces.official.*`, synced at startup into the marketplace with id
358
- * `official`) and enterprise marketplaces (PG, optional token in secrets). A refresh (maintenance
392
+ * `official`) and custom marketplaces (PG, optional token in secrets). A refresh (maintenance
359
393
  * job `catalogs-refresh` every `marketplaces.refreshIntervalMinutes` minutes, or manual) tries the main
360
394
  * URL and then the mirrors with If-None-Match; on success it replaces that marketplace's cached
361
395
  * entries as a whole, when all fail (an invalid manifest included) it keeps the previous ones with
@@ -371,7 +405,7 @@ let MarketplacesService = class MarketplacesService {
371
405
  log;
372
406
  txHost;
373
407
  constructor(kdb,
374
- /** The enterprise admin lock (identity/enterprise-admin.ts): joins the caller's transaction. */
408
+ /** The super admin lock (identity/super-admin.ts): joins the caller's transaction. */
375
409
  adminLock, sourceLock, config, keyring, log, txHost) {
376
410
  this.kdb = kdb;
377
411
  this.adminLock = adminLock;
@@ -447,7 +481,7 @@ let MarketplacesService = class MarketplacesService {
447
481
  return (await this.views([row]))[0];
448
482
  }
449
483
  /**
450
- * Adds an enterprise marketplace (audit `marketplace.added`). URL and mirrors must be https,
484
+ * Adds a custom marketplace (audit `marketplace.added`). URL and mirrors must be https,
451
485
  * without user info. The form follows {@link marketplaceForm}; a git marketplace may name a `ref`
452
486
  * (branch or tag, default the remote HEAD) and has no mirrors.
453
487
  */
@@ -495,11 +529,12 @@ let MarketplacesService = class MarketplacesService {
495
529
  ...(input.ref !== undefined && { ref: input.ref }),
496
530
  mirrors: input.mirrors ?? [],
497
531
  hasToken: input.token !== undefined,
532
+ ...opts.auditDetail,
498
533
  },
499
534
  });
500
535
  }
501
536
  /**
502
- * Updates an enterprise marketplace (audit `marketplace.updated`, listing the changed fields, the
537
+ * Updates a custom marketplace (audit `marketplace.updated`, listing the changed fields, the
503
538
  * token's value never recorded; not written when unchanged). `token: null` clears the token.
504
539
  * Official only takes `enabled`, any other field -> `marketplace.builtin`. Changing the URL, form
505
540
  * or ref clears the ETag and the last commit (the next refresh reads everything again); a new URL
@@ -608,7 +643,7 @@ let MarketplacesService = class MarketplacesService {
608
643
  });
609
644
  }
610
645
  /**
611
- * Deletes an enterprise marketplace (audit `marketplace.removed`): its cached entries and token
646
+ * Deletes a custom marketplace (audit `marketplace.removed`): its cached entries and token
612
647
  * are deleted; imported catalog items are kept (their marketplace becomes null). Official can
613
648
  * only be disabled -> `marketplace.builtin`.
614
649
  */
@@ -847,9 +882,14 @@ let MarketplacesService = class MarketplacesService {
847
882
  if ("errors" in m) {
848
883
  throw new MarketplaceInvalidError(`the repository is a single plugin, but its ${PLUGIN_MANIFEST_FILE} is invalid: ${m.errors.slice(0, 5).join("; ")}`, m.errors);
849
884
  }
885
+ const d = pluginDescription(m.description);
850
886
  entry = {
851
887
  name: m.name,
852
- summary: { en: m.description.slice(0, SUMMARY_MAX) },
888
+ summary: {
889
+ en: d.en.slice(0, SUMMARY_MAX),
890
+ ...(d.zh !== undefined && { zh: d.zh.slice(0, SUMMARY_MAX) }),
891
+ },
892
+ ...(m.displayName !== undefined && { displayName: m.displayName }),
853
893
  version: m.version,
854
894
  source: { path: "." },
855
895
  };
@@ -935,7 +975,7 @@ let MarketplacesService = class MarketplacesService {
935
975
  }));
936
976
  return out;
937
977
  }
938
- /** The token of an enterprise marketplace (undefined without one; official never has one). */
978
+ /** The token of a custom marketplace (undefined without one; official never has one). */
939
979
  async token(id) {
940
980
  return (await this.secrets().get(DEPLOYMENT_SECRETS_ORG, tokenKey(id))) ?? undefined;
941
981
  }
@@ -1000,6 +1040,8 @@ let MarketplacesService = class MarketplacesService {
1000
1040
  eb(sql `coalesce(e.npm, '')`, "ilike", like),
1001
1041
  eb(sql `e.entry->'summary'->>'en'`, "ilike", like),
1002
1042
  eb(sql `coalesce(e.entry->'summary'->>'zh', '')`, "ilike", like),
1043
+ eb(sql `coalesce(e.entry->'displayName'->>'en', '')`, "ilike", like),
1044
+ eb(sql `coalesce(e.entry->'displayName'->>'zh', '')`, "ilike", like),
1003
1045
  ]));
1004
1046
  }
1005
1047
  const fetched = await query.execute();
@@ -1058,17 +1100,24 @@ let MarketplacesService = class MarketplacesService {
1058
1100
  name: r.name,
1059
1101
  version,
1060
1102
  summary: e.summary,
1103
+ displayName: e.displayName ?? null,
1061
1104
  minKernel: e.minKernel ?? null,
1062
1105
  homepage: e.homepage ?? null,
1063
1106
  permissions: e.permissions ?? null,
1064
1107
  source: e.source,
1108
+ deprecated: marketplaceEntryDeprecation(e),
1065
1109
  format: r.claude === null ? "capybara" : "claude-code",
1066
1110
  compatible,
1067
1111
  importable,
1068
1112
  ...(reason !== undefined && { reason }),
1069
1113
  adopted: adopted ? { itemId: adopted.itemId, versions: [...adopted.versions] } : null,
1070
- newerAvailable: compatible && version !== null && top !== undefined && compareVersions(version, top) > 0,
1114
+ newerAvailable: compatible &&
1115
+ !entryDeprecated(e) &&
1116
+ version !== null &&
1117
+ top !== undefined &&
1118
+ compareVersions(version, top) > 0,
1071
1119
  contentChanged: adopted !== null &&
1120
+ !entryDeprecated(e) &&
1072
1121
  entryContentChanged(e, {
1073
1122
  marketplaceId: r.source_id,
1074
1123
  headCommit: r.head_commit,
@@ -1281,7 +1330,7 @@ __decorate([
1281
1330
  MarketplacesService = __decorate([
1282
1331
  Injectable(),
1283
1332
  __param(0, Inject(KernelDb)),
1284
- __param(1, Inject(EnterpriseAdminLock)),
1333
+ __param(1, Inject(SuperAdminLock)),
1285
1334
  __param(2, Inject(CatalogSourceLock)),
1286
1335
  __param(3, Inject(KernelConfigService)),
1287
1336
  __param(4, Inject(KEYRING)),