@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10

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 (1152) hide show
  1. package/bootstrap.json +92 -8
  2. package/dist/admin/admin.controller.d.ts +52 -71
  3. package/dist/admin/admin.controller.js +117 -63
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/admin.schemas.d.ts +57 -0
  7. package/dist/admin/admin.schemas.js +50 -0
  8. package/dist/admin/extensions.controller.d.ts +47 -16
  9. package/dist/admin/extensions.controller.js +94 -23
  10. package/dist/admin/extensions.schemas.d.ts +7 -0
  11. package/dist/admin/extensions.schemas.js +10 -0
  12. package/dist/admin/limit-defaults.d.ts +20 -0
  13. package/dist/admin/limit-defaults.js +10 -0
  14. package/dist/admin/setup-lock.d.ts +16 -0
  15. package/dist/admin/setup-lock.js +47 -0
  16. package/dist/admin/setup.controller.d.ts +9 -9
  17. package/dist/admin/setup.controller.js +28 -26
  18. package/dist/admin/setup.service.d.ts +20 -28
  19. package/dist/admin/setup.service.js +65 -65
  20. package/dist/agents/agent-lookup.d.ts +72 -0
  21. package/dist/agents/agent-lookup.js +208 -0
  22. package/dist/agents/agent-profile.service.d.ts +31 -0
  23. package/dist/agents/agent-profile.service.js +122 -0
  24. package/dist/agents/agents.controller.d.ts +54 -169
  25. package/dist/agents/agents.controller.js +172 -37
  26. package/dist/agents/agents.module.d.ts +10 -0
  27. package/dist/agents/agents.module.js +71 -0
  28. package/dist/agents/agents.schemas.d.ts +389 -0
  29. package/dist/agents/agents.schemas.js +126 -0
  30. package/dist/agents/agents.service.d.ts +104 -76
  31. package/dist/agents/agents.service.js +509 -383
  32. package/dist/agents/definition.d.ts +133 -21
  33. package/dist/agents/definition.js +361 -41
  34. package/dist/agents/from-template.d.ts +106 -0
  35. package/dist/agents/from-template.js +680 -0
  36. package/dist/agents/from-template.service.d.ts +72 -0
  37. package/dist/agents/from-template.service.js +178 -0
  38. package/dist/agents/instruction-files.d.ts +60 -0
  39. package/dist/agents/instruction-files.js +111 -0
  40. package/dist/agents/models.controller.d.ts +44 -6
  41. package/dist/agents/models.controller.js +84 -8
  42. package/dist/agents/org-templates.d.ts +186 -0
  43. package/dist/agents/org-templates.js +868 -0
  44. package/dist/agents/pending-connector-requests.d.ts +79 -0
  45. package/dist/agents/pending-connector-requests.js +215 -0
  46. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  47. package/dist/agents/pending-connectors.controller.js +91 -0
  48. package/dist/agents/pending-connectors.service.d.ts +62 -0
  49. package/dist/agents/pending-connectors.service.js +282 -0
  50. package/dist/agents/profile.d.ts +114 -0
  51. package/dist/agents/profile.js +55 -0
  52. package/dist/agents/readiness.controller.d.ts +26 -0
  53. package/dist/agents/readiness.controller.js +56 -0
  54. package/dist/agents/templates.controller.d.ts +78 -6
  55. package/dist/agents/templates.controller.js +154 -8
  56. package/dist/agents/templates.d.ts +132 -30
  57. package/dist/agents/templates.js +500 -46
  58. package/dist/agents/templates.schemas.d.ts +20 -0
  59. package/dist/agents/templates.schemas.js +45 -0
  60. package/dist/app.d.ts +93 -0
  61. package/dist/app.js +150 -0
  62. package/dist/background/background.controller.d.ts +38 -0
  63. package/dist/background/background.controller.js +88 -0
  64. package/dist/background/background.module.d.ts +10 -0
  65. package/dist/background/background.module.js +39 -0
  66. package/dist/background/background.schemas.d.ts +10 -0
  67. package/dist/background/background.schemas.js +16 -0
  68. package/dist/background/finish.d.ts +44 -0
  69. package/dist/background/finish.js +95 -0
  70. package/dist/background/launch-lock.d.ts +15 -0
  71. package/dist/background/launch-lock.js +40 -0
  72. package/dist/background/launch.d.ts +42 -0
  73. package/dist/background/launch.js +77 -0
  74. package/dist/background/poll.job.d.ts +56 -0
  75. package/dist/background/poll.job.js +195 -0
  76. package/dist/background/render.d.ts +23 -0
  77. package/dist/background/render.js +48 -0
  78. package/dist/background/session.d.ts +48 -0
  79. package/dist/background/session.js +80 -0
  80. package/dist/background/status.d.ts +35 -0
  81. package/dist/background/status.js +57 -0
  82. package/dist/background/stop.d.ts +68 -0
  83. package/dist/background/stop.js +244 -0
  84. package/dist/background/store.d.ts +167 -0
  85. package/dist/background/store.js +361 -0
  86. package/dist/background/store.module.d.ts +6 -0
  87. package/dist/background/store.module.js +22 -0
  88. package/dist/background/tasks.service.d.ts +77 -0
  89. package/dist/background/tasks.service.js +216 -0
  90. package/dist/background/wake-rules.d.ts +66 -0
  91. package/dist/background/wake-rules.js +113 -0
  92. package/dist/background/wake.d.ts +30 -0
  93. package/dist/background/wake.js +63 -0
  94. package/dist/catalog/admin-catalog.controller.d.ts +102 -52
  95. package/dist/catalog/admin-catalog.controller.js +222 -67
  96. package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
  97. package/dist/catalog/admin-catalog.schemas.js +92 -0
  98. package/dist/catalog/catalog-content.d.ts +232 -0
  99. package/dist/catalog/catalog-content.js +367 -0
  100. package/dist/catalog/catalog-files.d.ts +41 -0
  101. package/dist/catalog/catalog-files.js +86 -0
  102. package/dist/catalog/catalog-import.module.d.ts +7 -0
  103. package/dist/catalog/catalog-import.module.js +60 -0
  104. package/dist/catalog/catalog-items.d.ts +290 -0
  105. package/dist/catalog/catalog-items.js +676 -0
  106. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  107. package/dist/catalog/catalog-scope.service.js +1124 -0
  108. package/dist/catalog/catalog.module.d.ts +12 -0
  109. package/dist/catalog/catalog.module.js +81 -0
  110. package/dist/catalog/catalog.service.d.ts +141 -206
  111. package/dist/catalog/catalog.service.js +237 -528
  112. package/dist/catalog/claude/agents.js +15 -10
  113. package/dist/catalog/cli.d.ts +14 -3
  114. package/dist/catalog/cli.js +39 -32
  115. package/dist/catalog/component-promotion.d.ts +96 -0
  116. package/dist/catalog/component-promotion.js +395 -0
  117. package/dist/catalog/component-scope.controller.d.ts +90 -0
  118. package/dist/catalog/component-scope.controller.js +234 -0
  119. package/dist/catalog/component-scope.schemas.d.ts +114 -0
  120. package/dist/catalog/component-scope.schemas.js +97 -0
  121. package/dist/catalog/component-scope.service.d.ts +327 -0
  122. package/dist/catalog/component-scope.service.js +990 -0
  123. package/dist/catalog/component-state.d.ts +188 -0
  124. package/dist/catalog/component-state.js +455 -0
  125. package/dist/catalog/git-source.d.ts +9 -1
  126. package/dist/catalog/git-source.js +29 -2
  127. package/dist/catalog/job-ids.d.ts +45 -0
  128. package/dist/catalog/job-ids.js +40 -0
  129. package/dist/catalog/jobs.d.ts +27 -0
  130. package/dist/catalog/jobs.js +70 -0
  131. package/dist/catalog/locks.d.ts +24 -0
  132. package/dist/catalog/locks.js +63 -0
  133. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  134. package/dist/catalog/marketplace-icons.d.ts +64 -0
  135. package/dist/catalog/marketplace-icons.js +131 -0
  136. package/dist/catalog/marketplaces.controller.d.ts +53 -44
  137. package/dist/catalog/marketplaces.controller.js +146 -51
  138. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  139. package/dist/catalog/marketplaces.schemas.js +53 -0
  140. package/dist/catalog/marketplaces.service.d.ts +136 -26
  141. package/dist/catalog/marketplaces.service.js +663 -281
  142. package/dist/catalog/org-catalog.controller.d.ts +115 -63
  143. package/dist/catalog/org-catalog.controller.js +207 -100
  144. package/dist/catalog/org-catalog.schemas.d.ts +88 -0
  145. package/dist/catalog/org-catalog.schemas.js +93 -0
  146. package/dist/catalog/org-catalog.service.d.ts +89 -216
  147. package/dist/catalog/org-catalog.service.js +431 -472
  148. package/dist/catalog/org-extension-switch.d.ts +41 -0
  149. package/dist/catalog/org-extension-switch.js +115 -0
  150. package/dist/catalog/org-extension.controller.d.ts +113 -0
  151. package/dist/catalog/org-extension.controller.js +271 -0
  152. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  153. package/dist/catalog/org-extension.schemas.js +22 -0
  154. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  155. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  156. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  157. package/dist/catalog/org-plugin-uploads.js +122 -0
  158. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  159. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  160. package/dist/catalog/owned-items.d.ts +188 -0
  161. package/dist/catalog/owned-items.js +801 -0
  162. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  163. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  164. package/dist/catalog/ownership.d.ts +172 -0
  165. package/dist/catalog/ownership.js +326 -0
  166. package/dist/catalog/platform-components.d.ts +223 -0
  167. package/dist/catalog/platform-components.js +763 -0
  168. package/dist/catalog/platform-migration.d.ts +115 -0
  169. package/dist/catalog/platform-migration.js +582 -0
  170. package/dist/catalog/plugin-import.d.ts +270 -68
  171. package/dist/catalog/plugin-import.js +1004 -277
  172. package/dist/catalog/plugin-install.d.ts +251 -65
  173. package/dist/catalog/plugin-install.js +1128 -344
  174. package/dist/catalog/plugin-package.js +14 -1
  175. package/dist/catalog/plugin-upgrade.d.ts +301 -188
  176. package/dist/catalog/plugin-upgrade.js +1256 -1068
  177. package/dist/catalog/request-rules.d.ts +65 -0
  178. package/dist/catalog/request-rules.js +217 -0
  179. package/dist/catalog/requests.service.d.ts +205 -117
  180. package/dist/catalog/requests.service.js +612 -369
  181. package/dist/catalog/reserved-names.d.ts +8 -0
  182. package/dist/catalog/reserved-names.js +42 -0
  183. package/dist/catalog/scope-orgs.d.ts +21 -0
  184. package/dist/catalog/scope-orgs.js +67 -0
  185. package/dist/catalog/scope-state.d.ts +35 -0
  186. package/dist/catalog/scope-state.js +87 -0
  187. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  188. package/dist/catalog/scope-sync-workers.js +29 -0
  189. package/dist/catalog/scope-sync.d.ts +176 -0
  190. package/dist/catalog/scope-sync.js +576 -0
  191. package/dist/catalog/scope.d.ts +42 -0
  192. package/dist/catalog/scope.js +42 -0
  193. package/dist/catalog/unshare.d.ts +22 -0
  194. package/dist/catalog/unshare.js +118 -0
  195. package/dist/channels/actions.d.ts +6 -4
  196. package/dist/channels/actions.js +11 -4
  197. package/dist/channels/cards.d.ts +33 -11
  198. package/dist/channels/cards.js +96 -24
  199. package/dist/channels/channels.module.d.ts +40 -0
  200. package/dist/channels/channels.module.js +130 -0
  201. package/dist/channels/channels.schemas.d.ts +37 -0
  202. package/dist/channels/channels.schemas.js +38 -0
  203. package/dist/channels/connections.controller.d.ts +44 -37
  204. package/dist/channels/connections.controller.js +83 -38
  205. package/dist/channels/connections.service.d.ts +101 -30
  206. package/dist/channels/connections.service.js +380 -147
  207. package/dist/channels/inbound.d.ts +44 -38
  208. package/dist/channels/inbound.js +190 -44
  209. package/dist/channels/job-ids.d.ts +10 -0
  210. package/dist/channels/job-ids.js +10 -0
  211. package/dist/channels/jobs.d.ts +85 -0
  212. package/dist/channels/jobs.js +157 -0
  213. package/dist/channels/outbound.d.ts +71 -80
  214. package/dist/channels/outbound.js +219 -201
  215. package/dist/channels/phrases.d.ts +33 -2
  216. package/dist/channels/phrases.js +29 -1
  217. package/dist/channels/supervisor.d.ts +88 -46
  218. package/dist/channels/supervisor.js +230 -132
  219. package/dist/channels/threads.d.ts +34 -8
  220. package/dist/channels/threads.js +79 -13
  221. package/dist/channels/webhook.d.ts +20 -14
  222. package/dist/channels/webhook.js +51 -20
  223. package/dist/config/docs.js +5 -1
  224. package/dist/config/load.d.ts +3 -2
  225. package/dist/config/load.js +3 -2
  226. package/dist/config/nacos-source.js +11 -2
  227. package/dist/config/schema.d.ts +51 -3
  228. package/dist/config/schema.js +269 -27
  229. package/dist/conversations/access.d.ts +31 -0
  230. package/dist/conversations/access.js +110 -0
  231. package/dist/conversations/agent-tree.d.ts +46 -0
  232. package/dist/conversations/agent-tree.js +92 -0
  233. package/dist/conversations/artifacts.d.ts +11 -11
  234. package/dist/conversations/artifacts.js +36 -10
  235. package/dist/conversations/attachments.controller.d.ts +1 -1
  236. package/dist/conversations/attachments.controller.js +8 -6
  237. package/dist/conversations/attachments.module.d.ts +7 -0
  238. package/dist/conversations/attachments.module.js +25 -0
  239. package/dist/conversations/attachments.service.d.ts +60 -22
  240. package/dist/conversations/attachments.service.js +249 -51
  241. package/dist/conversations/conversations.controller.d.ts +86 -50
  242. package/dist/conversations/conversations.controller.js +184 -103
  243. package/dist/conversations/conversations.module.d.ts +8 -0
  244. package/dist/conversations/conversations.module.js +72 -0
  245. package/dist/conversations/conversations.schemas.d.ts +52 -0
  246. package/dist/conversations/conversations.schemas.js +79 -0
  247. package/dist/conversations/conversations.service.d.ts +166 -49
  248. package/dist/conversations/conversations.service.js +383 -179
  249. package/dist/conversations/environment-status.d.ts +24 -0
  250. package/dist/conversations/environment-status.js +71 -0
  251. package/dist/conversations/event-log.d.ts +64 -27
  252. package/dist/conversations/event-log.js +167 -31
  253. package/dist/conversations/events.d.ts +252 -9
  254. package/dist/conversations/events.js +243 -32
  255. package/dist/conversations/files.d.ts +10 -10
  256. package/dist/conversations/files.js +37 -11
  257. package/dist/conversations/idem-keys.d.ts +5 -0
  258. package/dist/conversations/idem-keys.js +5 -0
  259. package/dist/conversations/job-ids.d.ts +6 -0
  260. package/dist/conversations/job-ids.js +6 -0
  261. package/dist/conversations/message-context.d.ts +79 -0
  262. package/dist/conversations/message-context.js +145 -0
  263. package/dist/conversations/outputs-read.d.ts +11 -11
  264. package/dist/conversations/outputs-read.js +31 -7
  265. package/dist/conversations/queue.d.ts +53 -58
  266. package/dist/conversations/queue.js +37 -293
  267. package/dist/conversations/queue.service.d.ts +60 -0
  268. package/dist/conversations/queue.service.js +350 -0
  269. package/dist/conversations/titles.d.ts +83 -27
  270. package/dist/conversations/titles.js +195 -70
  271. package/dist/conversations/tree.d.ts +17 -0
  272. package/dist/conversations/tree.js +42 -0
  273. package/dist/ctx/bus.js +9 -3
  274. package/dist/ctx/create-ctx.d.ts +26 -1
  275. package/dist/ctx/create-ctx.js +45 -16
  276. package/dist/ctx/lock.d.ts +7 -3
  277. package/dist/ctx/lock.js +9 -20
  278. package/dist/ctx/queue.js +3 -2
  279. package/dist/ctx/secrets.d.ts +10 -2
  280. package/dist/ctx/secrets.js +7 -3
  281. package/dist/db/kernel-schema.d.ts +550 -25
  282. package/dist/db/pool.d.ts +10 -0
  283. package/dist/db/pool.js +4 -0
  284. package/dist/devices/device-auth.controller.d.ts +42 -0
  285. package/dist/devices/device-auth.controller.js +116 -0
  286. package/dist/devices/device-auth.d.ts +119 -0
  287. package/dist/devices/device-auth.js +403 -0
  288. package/dist/devices/device-auth.module.d.ts +7 -0
  289. package/dist/devices/device-auth.module.js +25 -0
  290. package/dist/devices/device-gateway.d.ts +128 -0
  291. package/dist/devices/device-gateway.js +530 -0
  292. package/dist/devices/device-provider.d.ts +89 -0
  293. package/dist/devices/device-provider.js +151 -0
  294. package/dist/devices/device-routes.d.ts +36 -0
  295. package/dist/devices/device-routes.js +90 -0
  296. package/dist/devices/devices.module.d.ts +16 -0
  297. package/dist/devices/devices.module.js +44 -0
  298. package/dist/devices/dto.d.ts +66 -0
  299. package/dist/devices/dto.js +44 -0
  300. package/dist/devices/keys.d.ts +25 -0
  301. package/dist/devices/keys.js +25 -0
  302. package/dist/devices/machines.d.ts +118 -0
  303. package/dist/devices/machines.js +366 -0
  304. package/dist/devices/relay.d.ts +100 -0
  305. package/dist/devices/relay.js +373 -0
  306. package/dist/devices/targets.d.ts +28 -0
  307. package/dist/devices/targets.js +73 -0
  308. package/dist/environments/access.d.ts +66 -0
  309. package/dist/environments/access.js +113 -0
  310. package/dist/environments/conversation-environments.d.ts +75 -0
  311. package/dist/environments/conversation-environments.js +231 -0
  312. package/dist/environments/dto.d.ts +25 -0
  313. package/dist/environments/dto.js +12 -0
  314. package/dist/environments/environments.controller.d.ts +36 -0
  315. package/dist/environments/environments.controller.js +124 -0
  316. package/dist/environments/environments.module.d.ts +8 -0
  317. package/dist/environments/environments.module.js +31 -0
  318. package/dist/environments/environments.schemas.d.ts +3 -0
  319. package/dist/environments/environments.schemas.js +14 -0
  320. package/dist/environments/environments.service.d.ts +251 -0
  321. package/dist/environments/environments.service.js +791 -0
  322. package/dist/environments/label.d.ts +11 -0
  323. package/dist/environments/label.js +25 -0
  324. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  325. package/dist/environments/legacy-cleanup.job.js +141 -0
  326. package/dist/errors.d.ts +136 -2
  327. package/dist/errors.js +136 -2
  328. package/dist/evals/budget.d.ts +42 -21
  329. package/dist/evals/budget.js +114 -62
  330. package/dist/evals/evals.module.d.ts +31 -0
  331. package/dist/evals/evals.module.js +114 -0
  332. package/dist/evals/evals.schemas.d.ts +110 -0
  333. package/dist/evals/evals.schemas.js +107 -0
  334. package/dist/evals/jobs.d.ts +20 -0
  335. package/dist/evals/jobs.js +45 -0
  336. package/dist/evals/reconstruct.d.ts +18 -9
  337. package/dist/evals/reconstruct.js +36 -10
  338. package/dist/evals/recorded-tools.d.ts +37 -1
  339. package/dist/evals/recorded-tools.js +120 -10
  340. package/dist/evals/run-replay.d.ts +75 -10
  341. package/dist/evals/run-replay.js +218 -94
  342. package/dist/evals/runs.controller.d.ts +3 -58
  343. package/dist/evals/runs.controller.js +18 -50
  344. package/dist/evals/runs.service.d.ts +31 -52
  345. package/dist/evals/runs.service.js +281 -255
  346. package/dist/evals/sets.controller.d.ts +3 -29
  347. package/dist/evals/sets.controller.js +18 -39
  348. package/dist/evals/sets.service.d.ts +29 -13
  349. package/dist/evals/sets.service.js +262 -202
  350. package/dist/evals/snapshot.d.ts +5 -4
  351. package/dist/evals/snapshot.js +17 -4
  352. package/dist/evals/step-replay.d.ts +6 -8
  353. package/dist/evals/step-replay.js +17 -10
  354. package/dist/evals/trajectory.controller.d.ts +1 -1
  355. package/dist/evals/trajectory.controller.js +11 -7
  356. package/dist/evals/trajectory.d.ts +2 -2
  357. package/dist/evals/trajectory.js +1 -1
  358. package/dist/evals/trajectory.service.d.ts +13 -7
  359. package/dist/evals/trajectory.service.js +56 -21
  360. package/dist/evals/worker.d.ts +48 -31
  361. package/dist/evals/worker.js +229 -123
  362. package/dist/extensions/admin-ops.d.ts +133 -41
  363. package/dist/extensions/admin-ops.js +378 -172
  364. package/dist/extensions/admin-view.d.ts +82 -32
  365. package/dist/extensions/admin-view.js +284 -71
  366. package/dist/extensions/approvals.d.ts +24 -10
  367. package/dist/extensions/approvals.js +73 -46
  368. package/dist/extensions/blobs.d.ts +27 -10
  369. package/dist/extensions/blobs.js +112 -45
  370. package/dist/extensions/bootstrap.d.ts +136 -46
  371. package/dist/extensions/bootstrap.js +417 -167
  372. package/dist/extensions/cli.d.ts +32 -10
  373. package/dist/extensions/cli.js +52 -98
  374. package/dist/extensions/config-hash.d.ts +10 -0
  375. package/dist/extensions/config-hash.js +38 -0
  376. package/dist/extensions/config-issues.d.ts +19 -0
  377. package/dist/extensions/config-issues.js +48 -0
  378. package/dist/extensions/config-json-schema.d.ts +43 -7
  379. package/dist/extensions/config-json-schema.js +124 -58
  380. package/dist/extensions/deployment-config-store.d.ts +55 -0
  381. package/dist/extensions/deployment-config-store.js +133 -0
  382. package/dist/extensions/deployment-config.d.ts +146 -70
  383. package/dist/extensions/deployment-config.js +439 -246
  384. package/dist/extensions/display-name.d.ts +22 -0
  385. package/dist/extensions/display-name.js +77 -0
  386. package/dist/extensions/effective-config.d.ts +127 -0
  387. package/dist/extensions/effective-config.js +368 -0
  388. package/dist/extensions/enabled.d.ts +5 -5
  389. package/dist/extensions/extensions.module.d.ts +8 -0
  390. package/dist/extensions/extensions.module.js +96 -0
  391. package/dist/extensions/hooks.d.ts +40 -6
  392. package/dist/extensions/hooks.js +83 -17
  393. package/dist/extensions/host.d.ts +161 -80
  394. package/dist/extensions/host.js +505 -213
  395. package/dist/extensions/installs.d.ts +73 -19
  396. package/dist/extensions/installs.js +174 -37
  397. package/dist/extensions/job-ids.d.ts +6 -0
  398. package/dist/extensions/job-ids.js +6 -0
  399. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  400. package/dist/extensions/lifecycle-topics.js +18 -0
  401. package/dist/extensions/lifecycle.d.ts +35 -47
  402. package/dist/extensions/lifecycle.js +103 -39
  403. package/dist/extensions/locks.d.ts +45 -0
  404. package/dist/extensions/locks.js +112 -0
  405. package/dist/extensions/migrate-lock.d.ts +3 -4
  406. package/dist/extensions/org-config.d.ts +141 -49
  407. package/dist/extensions/org-config.js +471 -243
  408. package/dist/extensions/org-levels.d.ts +37 -0
  409. package/dist/extensions/org-levels.js +71 -0
  410. package/dist/extensions/org-overrides.d.ts +151 -0
  411. package/dist/extensions/org-overrides.js +524 -0
  412. package/dist/extensions/package.d.ts +14 -1
  413. package/dist/extensions/package.js +51 -2
  414. package/dist/extensions/permission-view.d.ts +59 -6
  415. package/dist/extensions/permission-view.js +7 -5
  416. package/dist/extensions/plugin-guides.d.ts +129 -0
  417. package/dist/extensions/plugin-guides.js +283 -0
  418. package/dist/extensions/plugin-icons.d.ts +54 -0
  419. package/dist/extensions/plugin-icons.js +125 -0
  420. package/dist/extensions/plugin-items.d.ts +21 -0
  421. package/dist/extensions/plugin-items.js +42 -0
  422. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  423. package/dist/extensions/point-defaults.controller.js +69 -0
  424. package/dist/extensions/point-defaults.d.ts +73 -0
  425. package/dist/extensions/point-defaults.js +236 -0
  426. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  427. package/dist/extensions/point-defaults.schemas.js +14 -0
  428. package/dist/extensions/registry.d.ts +50 -2
  429. package/dist/extensions/registry.js +91 -4
  430. package/dist/extensions/resolve.d.ts +51 -1
  431. package/dist/extensions/resolve.js +85 -3
  432. package/dist/extensions/single-provider.d.ts +92 -0
  433. package/dist/extensions/single-provider.js +180 -0
  434. package/dist/extensions/sources.d.ts +19 -10
  435. package/dist/extensions/sources.js +34 -13
  436. package/dist/extensions/state.module.d.ts +9 -0
  437. package/dist/extensions/state.module.js +38 -0
  438. package/dist/extensions/unavailable.d.ts +50 -0
  439. package/dist/extensions/unavailable.js +115 -0
  440. package/dist/files/files.module.d.ts +3 -0
  441. package/dist/files/files.module.js +22 -0
  442. package/dist/files/previewers.controller.d.ts +7 -2
  443. package/dist/files/previewers.controller.js +19 -12
  444. package/dist/files/previewers.d.ts +21 -19
  445. package/dist/files/previewers.js +114 -38
  446. package/dist/files/previewers.schemas.d.ts +10 -0
  447. package/dist/files/previewers.schemas.js +9 -0
  448. package/dist/http/adapter.d.ts +3 -0
  449. package/dist/http/adapter.js +25 -0
  450. package/dist/http/api.module.d.ts +3 -110
  451. package/dist/http/api.module.js +86 -358
  452. package/dist/http/app.d.ts +22 -17
  453. package/dist/http/app.js +83 -52
  454. package/dist/http/error-filter.module.d.ts +5 -0
  455. package/dist/http/error-filter.module.js +18 -0
  456. package/dist/http/error.filter.js +2 -2
  457. package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
  458. package/dist/http/gateway-routes.js +16 -0
  459. package/dist/http/nest-logger.d.ts +6 -5
  460. package/dist/http/nest-logger.js +24 -10
  461. package/dist/http/plugin-dispatch.d.ts +4 -1
  462. package/dist/http/plugin-dispatch.js +14 -2
  463. package/dist/identity/accounts.d.ts +130 -38
  464. package/dist/identity/accounts.js +373 -186
  465. package/dist/identity/api-tokens.d.ts +11 -7
  466. package/dist/identity/api-tokens.js +71 -44
  467. package/dist/identity/audit.d.ts +9 -5
  468. package/dist/identity/audit.js +5 -1
  469. package/dist/identity/auth.controller.d.ts +11 -10
  470. package/dist/identity/auth.controller.js +40 -30
  471. package/dist/identity/auth.guard.d.ts +16 -8
  472. package/dist/identity/auth.guard.js +41 -13
  473. package/dist/identity/binding.d.ts +9 -11
  474. package/dist/identity/binding.js +41 -13
  475. package/dist/identity/cookies.d.ts +26 -5
  476. package/dist/identity/cookies.js +58 -6
  477. package/dist/identity/external-identity-lock.d.ts +17 -0
  478. package/dist/identity/external-identity-lock.js +39 -0
  479. package/dist/identity/external.d.ts +19 -15
  480. package/dist/identity/external.js +163 -125
  481. package/dist/identity/identity.module.d.ts +6 -0
  482. package/dist/identity/identity.module.js +59 -0
  483. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  484. package/dist/identity/initial-passwords.controller.js +49 -0
  485. package/dist/identity/initial-passwords.d.ts +61 -0
  486. package/dist/identity/initial-passwords.job.d.ts +16 -0
  487. package/dist/identity/initial-passwords.job.js +46 -0
  488. package/dist/identity/initial-passwords.js +159 -0
  489. package/dist/identity/me.controller.d.ts +32 -15
  490. package/dist/identity/me.controller.js +78 -33
  491. package/dist/identity/me.schemas.d.ts +14 -0
  492. package/dist/identity/me.schemas.js +17 -0
  493. package/dist/identity/principal.d.ts +11 -3
  494. package/dist/identity/principal.js +11 -3
  495. package/dist/identity/sessions.d.ts +24 -10
  496. package/dist/identity/sessions.js +119 -42
  497. package/dist/identity/settings.d.ts +42 -23
  498. package/dist/identity/settings.js +137 -72
  499. package/dist/identity/sso.controller.d.ts +7 -7
  500. package/dist/identity/sso.controller.js +13 -9
  501. package/dist/identity/sso.d.ts +9 -12
  502. package/dist/identity/sso.js +54 -24
  503. package/dist/identity/super-admin.d.ts +20 -0
  504. package/dist/identity/super-admin.js +81 -0
  505. package/dist/inbox/inbox.module.d.ts +6 -0
  506. package/dist/inbox/inbox.module.js +26 -0
  507. package/dist/inbox/inbox.schemas.d.ts +8 -0
  508. package/dist/inbox/inbox.schemas.js +11 -0
  509. package/dist/inbox/inbox.service.d.ts +68 -11
  510. package/dist/inbox/inbox.service.js +104 -13
  511. package/dist/inbox/org-notices.d.ts +63 -0
  512. package/dist/inbox/org-notices.js +91 -0
  513. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  514. package/dist/inbox/platform-inbox.controller.js +58 -0
  515. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  516. package/dist/inbox/platform-inbox.service.js +263 -0
  517. package/dist/inbox/platform-notices.d.ts +19 -0
  518. package/dist/inbox/platform-notices.js +9 -0
  519. package/dist/index.d.ts +25 -14
  520. package/dist/index.js +20 -9
  521. package/dist/infra/cache/cache.module.d.ts +3 -0
  522. package/dist/infra/cache/cache.module.js +16 -0
  523. package/dist/infra/cache/cache.service.d.ts +21 -0
  524. package/dist/infra/cache/cache.service.js +80 -0
  525. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  526. package/dist/infra/cache/cacheable.decorator.js +83 -0
  527. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  528. package/dist/infra/cli/kernel-cli.module.js +173 -0
  529. package/dist/infra/close-within.d.ts +15 -0
  530. package/dist/infra/close-within.js +36 -0
  531. package/dist/infra/config/config.module.d.ts +13 -0
  532. package/dist/infra/config/config.module.js +39 -0
  533. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  534. package/dist/infra/config/kernel-config.service.js +157 -0
  535. package/dist/infra/database/after-commit.d.ts +6 -0
  536. package/dist/infra/database/after-commit.js +9 -0
  537. package/dist/infra/database/database.module.d.ts +25 -0
  538. package/dist/infra/database/database.module.js +91 -0
  539. package/dist/infra/database/kernel-db.d.ts +22 -0
  540. package/dist/infra/database/kernel-db.js +65 -0
  541. package/dist/infra/database/transaction-host.d.ts +50 -0
  542. package/dist/infra/database/transaction-host.js +125 -0
  543. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  544. package/dist/infra/database/transactional.decorator.js +27 -0
  545. package/dist/infra/database/xact-lock.d.ts +17 -0
  546. package/dist/infra/database/xact-lock.js +43 -0
  547. package/dist/infra/events/kernel-events.d.ts +121 -0
  548. package/dist/infra/events/kernel-events.js +65 -0
  549. package/dist/infra/health/health.controller.d.ts +26 -0
  550. package/dist/infra/health/health.controller.js +104 -0
  551. package/dist/infra/health/health.module.d.ts +9 -0
  552. package/dist/infra/health/health.module.js +24 -0
  553. package/dist/infra/health/health.options.d.ts +10 -0
  554. package/dist/infra/health/health.options.js +15 -0
  555. package/dist/infra/health/shutdown-state.d.ts +6 -0
  556. package/dist/infra/health/shutdown-state.js +2 -0
  557. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  558. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  559. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  560. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  561. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  562. package/dist/infra/lifecycle/process-guards.js +90 -0
  563. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  564. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  565. package/dist/infra/lock/key-template.d.ts +13 -0
  566. package/dist/infra/lock/key-template.js +46 -0
  567. package/dist/infra/lock/lock.module.d.ts +3 -0
  568. package/dist/infra/lock/lock.module.js +16 -0
  569. package/dist/infra/lock/lock.service.d.ts +120 -0
  570. package/dist/infra/lock/lock.service.js +343 -0
  571. package/dist/infra/lock/shared-lease.d.ts +44 -0
  572. package/dist/infra/lock/shared-lease.js +121 -0
  573. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  574. package/dist/infra/lock/with-lock.decorator.js +49 -0
  575. package/dist/infra/logging/logging.module.d.ts +18 -0
  576. package/dist/infra/logging/logging.module.js +52 -0
  577. package/dist/infra/queue/add-job-once.d.ts +14 -0
  578. package/dist/infra/queue/add-job-once.js +16 -0
  579. package/dist/infra/queue/configured-processor.d.ts +18 -0
  580. package/dist/infra/queue/configured-processor.js +23 -0
  581. package/dist/infra/queue/job-failure.d.ts +18 -0
  582. package/dist/infra/queue/job-failure.js +26 -0
  583. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  584. package/dist/infra/queue/queue-shutdown.js +81 -0
  585. package/dist/infra/queue/queue.module.d.ts +16 -0
  586. package/dist/infra/queue/queue.module.js +61 -0
  587. package/dist/infra/queue/redis-connection.d.ts +13 -0
  588. package/dist/infra/queue/redis-connection.js +25 -0
  589. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  590. package/dist/infra/queue/retired-schedulers.js +9 -0
  591. package/dist/infra/queue/run-job.d.ts +16 -0
  592. package/dist/infra/queue/run-job.js +19 -0
  593. package/dist/infra/redis/redis.module.d.ts +24 -0
  594. package/dist/infra/redis/redis.module.js +91 -0
  595. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  596. package/dist/infra/schedule/cron-tick.js +25 -0
  597. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  598. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  599. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  600. package/dist/infra/schedule/locked-interval.js +190 -0
  601. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  602. package/dist/infra/schedule/locked-tick.js +137 -0
  603. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  604. package/dist/infra/schedule/schedule.module.js +27 -0
  605. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  606. package/dist/infra/schedule/scheduled-runs.js +163 -0
  607. package/dist/infra/swagger/swagger.d.ts +16 -0
  608. package/dist/infra/swagger/swagger.js +31 -0
  609. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  610. package/dist/infra/throttler/credential-throttler.js +77 -0
  611. package/dist/infra/throttler/named-throttlers.d.ts +36 -0
  612. package/dist/infra/throttler/named-throttlers.js +157 -0
  613. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  614. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  615. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  616. package/dist/infra/throttler/throttler.guard.js +68 -0
  617. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  618. package/dist/infra/throttler/throttler.module.js +53 -0
  619. package/dist/infra/tokens.d.ts +20 -0
  620. package/dist/infra/tokens.js +20 -0
  621. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  622. package/dist/infra/validation/create-zod-dto.js +35 -0
  623. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  624. package/dist/infra/validation/parse-with-zod.js +12 -0
  625. package/dist/infra/validation/validation.module.d.ts +3 -0
  626. package/dist/infra/validation/validation.module.js +16 -0
  627. package/dist/infra/validation/zod-params.d.ts +7 -0
  628. package/dist/infra/validation/zod-params.js +42 -0
  629. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  630. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  631. package/dist/kernel.d.ts +9 -241
  632. package/dist/kernel.js +8 -1305
  633. package/dist/kernel.module.d.ts +17 -0
  634. package/dist/kernel.module.js +145 -0
  635. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  636. package/dist/lifecycle/kernel-lifecycle.js +465 -0
  637. package/dist/lifecycle/tokens.d.ts +3 -0
  638. package/dist/lifecycle/tokens.js +3 -0
  639. package/dist/log-config.d.ts +9 -0
  640. package/dist/log-config.js +27 -0
  641. package/dist/log-context.d.ts +34 -0
  642. package/dist/log-context.js +44 -0
  643. package/dist/log-loki.d.ts +34 -0
  644. package/dist/log-loki.js +145 -0
  645. package/dist/log.d.ts +53 -10
  646. package/dist/log.js +168 -18
  647. package/dist/models/embeddings.d.ts +82 -0
  648. package/dist/models/embeddings.js +326 -0
  649. package/dist/models/enablement.controller.d.ts +40 -0
  650. package/dist/models/enablement.controller.js +74 -0
  651. package/dist/models/enablement.d.ts +101 -0
  652. package/dist/models/enablement.js +264 -0
  653. package/dist/models/models.module.d.ts +7 -0
  654. package/dist/models/models.module.js +36 -0
  655. package/dist/models/org-models.schemas.d.ts +8 -0
  656. package/dist/models/org-models.schemas.js +22 -0
  657. package/dist/models/prices.d.ts +13 -5
  658. package/dist/models/prices.js +69 -39
  659. package/dist/models/purposes.controller.d.ts +6 -4
  660. package/dist/models/purposes.controller.js +16 -11
  661. package/dist/models/purposes.d.ts +103 -23
  662. package/dist/models/purposes.js +208 -77
  663. package/dist/net/public-address.js +3 -2
  664. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  665. package/dist/orgs/directory-sync.controller.js +2 -2
  666. package/dist/orgs/directory-sync.d.ts +74 -35
  667. package/dist/orgs/directory-sync.js +243 -132
  668. package/dist/orgs/invitations.controller.d.ts +8 -8
  669. package/dist/orgs/invitations.controller.js +27 -26
  670. package/dist/orgs/invitations.service.d.ts +12 -9
  671. package/dist/orgs/invitations.service.js +130 -92
  672. package/dist/orgs/job-ids.d.ts +8 -0
  673. package/dist/orgs/job-ids.js +8 -0
  674. package/dist/orgs/members.service.d.ts +19 -12
  675. package/dist/orgs/members.service.js +161 -117
  676. package/dist/orgs/offboarding.d.ts +61 -60
  677. package/dist/orgs/offboarding.js +206 -95
  678. package/dist/orgs/org-lock.d.ts +33 -19
  679. package/dist/orgs/org-lock.js +94 -35
  680. package/dist/orgs/org.guard.d.ts +11 -1
  681. package/dist/orgs/org.guard.js +45 -34
  682. package/dist/orgs/orgs.controller.d.ts +13 -16
  683. package/dist/orgs/orgs.controller.js +29 -20
  684. package/dist/orgs/orgs.module.d.ts +6 -0
  685. package/dist/orgs/orgs.module.js +71 -0
  686. package/dist/orgs/orgs.schemas.d.ts +8 -0
  687. package/dist/orgs/orgs.schemas.js +16 -0
  688. package/dist/orgs/orgs.service.d.ts +47 -21
  689. package/dist/orgs/orgs.service.js +166 -91
  690. package/dist/orgs/roles.d.ts +1 -1
  691. package/dist/orgs/roles.js +5 -1
  692. package/dist/orgs/settings.controller.d.ts +2 -2
  693. package/dist/orgs/settings.controller.js +8 -6
  694. package/dist/orgs/settings.service.d.ts +45 -14
  695. package/dist/orgs/settings.service.js +110 -51
  696. package/dist/overrides.d.ts +63 -0
  697. package/dist/overrides.js +34 -0
  698. package/dist/platform/actor.d.ts +48 -0
  699. package/dist/platform/actor.js +100 -0
  700. package/dist/platform/agent-docs.d.ts +18 -0
  701. package/dist/platform/agent-docs.js +59 -0
  702. package/dist/platform/availability.d.ts +14 -0
  703. package/dist/platform/availability.js +43 -0
  704. package/dist/platform/errors.d.ts +28 -0
  705. package/dist/platform/errors.js +65 -0
  706. package/dist/platform/exclusions.d.ts +11 -0
  707. package/dist/platform/exclusions.js +667 -0
  708. package/dist/platform/method.d.ts +6 -0
  709. package/dist/platform/method.js +15 -0
  710. package/dist/platform/operation.d.ts +169 -0
  711. package/dist/platform/operation.js +90 -0
  712. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  713. package/dist/platform/ops/accounts.ops.js +291 -0
  714. package/dist/platform/ops/admin.ops.d.ts +36 -0
  715. package/dist/platform/ops/admin.ops.js +389 -0
  716. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  717. package/dist/platform/ops/agent-skills.ops.js +226 -0
  718. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  719. package/dist/platform/ops/agent-templates.ops.js +272 -0
  720. package/dist/platform/ops/agents.ops.d.ts +37 -0
  721. package/dist/platform/ops/agents.ops.js +717 -0
  722. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  723. package/dist/platform/ops/approvals.ops.js +116 -0
  724. package/dist/platform/ops/background.ops.d.ts +14 -0
  725. package/dist/platform/ops/background.ops.js +134 -0
  726. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  727. package/dist/platform/ops/catalog-admin.ops.js +599 -0
  728. package/dist/platform/ops/channels.ops.d.ts +16 -0
  729. package/dist/platform/ops/channels.ops.js +195 -0
  730. package/dist/platform/ops/components.ops.d.ts +46 -0
  731. package/dist/platform/ops/components.ops.js +853 -0
  732. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  733. package/dist/platform/ops/connectors.ops.js +188 -0
  734. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  735. package/dist/platform/ops/conversations.ops.js +470 -0
  736. package/dist/platform/ops/environments.ops.d.ts +26 -0
  737. package/dist/platform/ops/environments.ops.js +311 -0
  738. package/dist/platform/ops/errors.d.ts +16 -0
  739. package/dist/platform/ops/errors.js +30 -0
  740. package/dist/platform/ops/evals.ops.d.ts +28 -0
  741. package/dist/platform/ops/evals.ops.js +783 -0
  742. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  743. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  744. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  745. package/dist/platform/ops/extensions.ops.js +347 -0
  746. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  747. package/dist/platform/ops/inbox.ops.js +378 -0
  748. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  749. package/dist/platform/ops/marketplaces.ops.js +466 -0
  750. package/dist/platform/ops/models.ops.d.ts +25 -0
  751. package/dist/platform/ops/models.ops.js +232 -0
  752. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  753. package/dist/platform/ops/org-plugins.ops.js +329 -0
  754. package/dist/platform/ops/org-settings.ops.d.ts +16 -0
  755. package/dist/platform/ops/org-settings.ops.js +102 -0
  756. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  757. package/dist/platform/ops/orgs.ops.js +295 -0
  758. package/dist/platform/ops/other-orgs.d.ts +20 -0
  759. package/dist/platform/ops/other-orgs.js +72 -0
  760. package/dist/platform/ops/paging.d.ts +14 -0
  761. package/dist/platform/ops/paging.js +20 -0
  762. package/dist/platform/ops/platform.ops.d.ts +28 -0
  763. package/dist/platform/ops/platform.ops.js +204 -0
  764. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  765. package/dist/platform/ops/plugins.ops.js +476 -0
  766. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  767. package/dist/platform/ops/previewers.ops.js +109 -0
  768. package/dist/platform/ops/requests.ops.d.ts +14 -0
  769. package/dist/platform/ops/requests.ops.js +191 -0
  770. package/dist/platform/ops/role.d.ts +4 -0
  771. package/dist/platform/ops/role.js +10 -0
  772. package/dist/platform/ops/skills.ops.d.ts +17 -0
  773. package/dist/platform/ops/skills.ops.js +216 -0
  774. package/dist/platform/ops/summary.d.ts +10 -0
  775. package/dist/platform/ops/summary.js +18 -0
  776. package/dist/platform/ops/unavailable.d.ts +23 -0
  777. package/dist/platform/ops/unavailable.js +118 -0
  778. package/dist/platform/parity.d.ts +33 -0
  779. package/dist/platform/parity.js +272 -0
  780. package/dist/platform/platform-ops.module.d.ts +39 -0
  781. package/dist/platform/platform-ops.module.js +122 -0
  782. package/dist/platform/platform.module.d.ts +8 -0
  783. package/dist/platform/platform.module.js +25 -0
  784. package/dist/platform/registry.d.ts +30 -0
  785. package/dist/platform/registry.js +111 -0
  786. package/dist/platform/route-schemas.d.ts +18 -0
  787. package/dist/platform/route-schemas.js +63 -0
  788. package/dist/roles/gateway-role.d.ts +54 -0
  789. package/dist/roles/gateway-role.js +118 -0
  790. package/dist/roles/gateway.module.d.ts +9 -0
  791. package/dist/roles/gateway.module.js +31 -0
  792. package/dist/roles/worker-role.d.ts +65 -0
  793. package/dist/roles/worker-role.js +151 -0
  794. package/dist/roles/worker.module.d.ts +14 -0
  795. package/dist/roles/worker.module.js +106 -0
  796. package/dist/runtime/abort.js +19 -2
  797. package/dist/runtime/checkpointer.d.ts +8 -3
  798. package/dist/runtime/checkpointer.js +87 -55
  799. package/dist/runtime/context/build.d.ts +21 -13
  800. package/dist/runtime/context/build.js +106 -29
  801. package/dist/runtime/context/claude-tools.d.ts +4 -1
  802. package/dist/runtime/context/claude-tools.js +13 -12
  803. package/dist/runtime/context/compaction.js +24 -1
  804. package/dist/runtime/context/environment-paths.d.ts +40 -0
  805. package/dist/runtime/context/environment-paths.js +48 -0
  806. package/dist/runtime/context/legacy-text.d.ts +22 -0
  807. package/dist/runtime/context/legacy-text.js +37 -0
  808. package/dist/runtime/context/reminders.d.ts +2 -0
  809. package/dist/runtime/context/reminders.js +2 -0
  810. package/dist/runtime/context/run-context.d.ts +65 -0
  811. package/dist/runtime/context/run-context.js +215 -0
  812. package/dist/runtime/context/skills.d.ts +29 -11
  813. package/dist/runtime/context/skills.js +46 -32
  814. package/dist/runtime/context/tool-changes.d.ts +27 -0
  815. package/dist/runtime/context/tool-changes.js +60 -0
  816. package/dist/runtime/conversation-lock.d.ts +20 -11
  817. package/dist/runtime/conversation-lock.js +62 -72
  818. package/dist/runtime/hook-calls.d.ts +11 -4
  819. package/dist/runtime/hook-calls.js +41 -13
  820. package/dist/runtime/job-ids.d.ts +10 -0
  821. package/dist/runtime/job-ids.js +10 -0
  822. package/dist/runtime/langgraph-loop.d.ts +3 -1
  823. package/dist/runtime/langgraph-loop.js +37 -18
  824. package/dist/runtime/loop.d.ts +42 -6
  825. package/dist/runtime/loop.js +14 -0
  826. package/dist/runtime/maintenance-queue.d.ts +10 -0
  827. package/dist/runtime/maintenance-queue.js +10 -0
  828. package/dist/runtime/maintenance.d.ts +50 -74
  829. package/dist/runtime/maintenance.js +166 -136
  830. package/dist/runtime/model-call.d.ts +61 -15
  831. package/dist/runtime/model-call.js +128 -84
  832. package/dist/runtime/providers.d.ts +158 -27
  833. package/dist/runtime/providers.js +373 -63
  834. package/dist/runtime/quota.d.ts +17 -3
  835. package/dist/runtime/quota.js +27 -2
  836. package/dist/runtime/retired-schedulers.d.ts +7 -0
  837. package/dist/runtime/retired-schedulers.js +31 -0
  838. package/dist/runtime/run-context.service.d.ts +65 -0
  839. package/dist/runtime/run-context.service.js +236 -0
  840. package/dist/runtime/run-control.d.ts +43 -0
  841. package/dist/runtime/run-control.js +89 -0
  842. package/dist/runtime/run-drafts.d.ts +85 -0
  843. package/dist/runtime/run-drafts.js +230 -0
  844. package/dist/runtime/run-finish.d.ts +27 -18
  845. package/dist/runtime/run-finish.js +98 -51
  846. package/dist/runtime/run-jobs.d.ts +46 -0
  847. package/dist/runtime/run-jobs.js +91 -0
  848. package/dist/runtime/run-processors.d.ts +60 -0
  849. package/dist/runtime/run-processors.js +185 -0
  850. package/dist/runtime/run-queue.d.ts +90 -58
  851. package/dist/runtime/run-queue.js +566 -297
  852. package/dist/runtime/run-steps.d.ts +39 -0
  853. package/dist/runtime/run-steps.js +96 -0
  854. package/dist/runtime/run-worker.d.ts +134 -77
  855. package/dist/runtime/run-worker.js +412 -236
  856. package/dist/runtime/runtime.module.d.ts +10 -0
  857. package/dist/runtime/runtime.module.js +122 -0
  858. package/dist/runtime/step-log.d.ts +51 -0
  859. package/dist/runtime/step-log.js +111 -0
  860. package/dist/runtime/stream.controller.d.ts +28 -9
  861. package/dist/runtime/stream.controller.js +72 -13
  862. package/dist/runtime/stream.d.ts +27 -6
  863. package/dist/runtime/stream.js +102 -7
  864. package/dist/runtime/subagents/child.d.ts +58 -51
  865. package/dist/runtime/subagents/child.js +105 -86
  866. package/dist/runtime/subagents/definition.d.ts +32 -28
  867. package/dist/runtime/subagents/definition.js +89 -143
  868. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  869. package/dist/runtime/subagents/deliveries.js +228 -0
  870. package/dist/runtime/subagents/dispatch.d.ts +197 -27
  871. package/dist/runtime/subagents/dispatch.js +336 -270
  872. package/dist/runtime/subagents/limits.d.ts +32 -8
  873. package/dist/runtime/subagents/limits.js +44 -8
  874. package/dist/runtime/subagents/messages.d.ts +95 -0
  875. package/dist/runtime/subagents/messages.js +328 -0
  876. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  877. package/dist/runtime/subagents/org-agents.js +3 -2
  878. package/dist/runtime/subagents/preamble.d.ts +4 -4
  879. package/dist/runtime/subagents/preamble.js +9 -7
  880. package/dist/runtime/subagents/progress.d.ts +10 -8
  881. package/dist/runtime/subagents/progress.js +11 -6
  882. package/dist/runtime/subagents/render.d.ts +30 -0
  883. package/dist/runtime/subagents/render.js +53 -0
  884. package/dist/runtime/subagents/roster.d.ts +27 -10
  885. package/dist/runtime/subagents/roster.js +49 -13
  886. package/dist/runtime/subagents/skill-fork.d.ts +10 -10
  887. package/dist/runtime/subagents/skill-fork.js +23 -8
  888. package/dist/runtime/subagents/status.d.ts +14 -0
  889. package/dist/runtime/subagents/status.js +23 -0
  890. package/dist/runtime/subagents/subagents.service.d.ts +43 -0
  891. package/dist/runtime/subagents/subagents.service.js +106 -0
  892. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  893. package/dist/runtime/usage-report-jobs.js +158 -0
  894. package/dist/runtime/usage-report.d.ts +121 -83
  895. package/dist/runtime/usage-report.js +355 -180
  896. package/dist/runtime/waits.d.ts +258 -81
  897. package/dist/runtime/waits.js +800 -263
  898. package/dist/sandbox/job-ids.d.ts +10 -0
  899. package/dist/sandbox/job-ids.js +10 -0
  900. package/dist/sandbox/jobs.d.ts +68 -0
  901. package/dist/sandbox/jobs.js +150 -0
  902. package/dist/sandbox/leases.d.ts +73 -82
  903. package/dist/sandbox/leases.js +162 -346
  904. package/dist/sandbox/providers.d.ts +46 -0
  905. package/dist/sandbox/providers.js +83 -0
  906. package/dist/sandbox/sandbox.module.d.ts +9 -0
  907. package/dist/sandbox/sandbox.module.js +36 -0
  908. package/dist/sandbox/sandbox.service.d.ts +359 -151
  909. package/dist/sandbox/sandbox.service.js +950 -435
  910. package/dist/sandbox/unreachable.d.ts +30 -0
  911. package/dist/sandbox/unreachable.js +108 -0
  912. package/dist/skills/catalog.d.ts +40 -26
  913. package/dist/skills/catalog.js +120 -99
  914. package/dist/skills/changes.controller.d.ts +11 -4
  915. package/dist/skills/changes.controller.js +34 -9
  916. package/dist/skills/changes.service.d.ts +31 -21
  917. package/dist/skills/changes.service.js +426 -368
  918. package/dist/skills/invocable.controller.d.ts +2 -2
  919. package/dist/skills/invocable.controller.js +10 -7
  920. package/dist/skills/invocation-keys.d.ts +1 -1
  921. package/dist/skills/invocation-keys.js +1 -1
  922. package/dist/skills/invoke.d.ts +19 -18
  923. package/dist/skills/invoke.js +68 -24
  924. package/dist/skills/package.d.ts +20 -1
  925. package/dist/skills/package.js +28 -1
  926. package/dist/skills/skills.controller.d.ts +33 -7
  927. package/dist/skills/skills.controller.js +79 -12
  928. package/dist/skills/skills.module.d.ts +6 -0
  929. package/dist/skills/skills.module.js +39 -0
  930. package/dist/skills/skills.schemas.d.ts +48 -0
  931. package/dist/skills/skills.schemas.js +61 -0
  932. package/dist/skills/skills.service.d.ts +151 -44
  933. package/dist/skills/skills.service.js +636 -204
  934. package/dist/skills/usable.d.ts +81 -0
  935. package/dist/skills/usable.js +379 -0
  936. package/dist/storage/job-ids.d.ts +6 -0
  937. package/dist/storage/job-ids.js +6 -0
  938. package/dist/storage/purge.d.ts +22 -7
  939. package/dist/storage/purge.js +55 -3
  940. package/dist/storage/storage.module.d.ts +6 -0
  941. package/dist/storage/storage.module.js +23 -0
  942. package/dist/storage/storage.service.d.ts +18 -4
  943. package/dist/storage/storage.service.js +44 -3
  944. package/dist/time-zone.d.ts +5 -0
  945. package/dist/time-zone.js +19 -0
  946. package/dist/tools/approvals.controller.d.ts +1 -1
  947. package/dist/tools/approvals.controller.js +14 -11
  948. package/dist/tools/approvals.schemas.d.ts +21 -0
  949. package/dist/tools/approvals.schemas.js +15 -0
  950. package/dist/tools/approvals.service.d.ts +53 -27
  951. package/dist/tools/approvals.service.js +365 -260
  952. package/dist/tools/breaker.d.ts +2 -2
  953. package/dist/tools/breaker.js +21 -3
  954. package/dist/tools/builtin-names.d.ts +109 -0
  955. package/dist/tools/builtin-names.js +173 -0
  956. package/dist/tools/builtins/agent.d.ts +27 -25
  957. package/dist/tools/builtins/agent.js +66 -63
  958. package/dist/tools/builtins/ask-user.d.ts +3 -3
  959. package/dist/tools/builtins/ask-user.js +3 -3
  960. package/dist/tools/builtins/builtin-tools.d.ts +41 -0
  961. package/dist/tools/builtins/builtin-tools.js +151 -0
  962. package/dist/tools/builtins/current-time.d.ts +26 -0
  963. package/dist/tools/builtins/current-time.js +99 -0
  964. package/dist/tools/builtins/handback.d.ts +28 -0
  965. package/dist/tools/builtins/handback.js +53 -0
  966. package/dist/tools/builtins/platform.d.ts +51 -0
  967. package/dist/tools/builtins/platform.js +451 -0
  968. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  969. package/dist/tools/builtins/read-tool-output.js +3 -3
  970. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  971. package/dist/tools/builtins/sandbox/bash.js +293 -41
  972. package/dist/tools/builtins/sandbox/common.d.ts +142 -40
  973. package/dist/tools/builtins/sandbox/common.js +227 -65
  974. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  975. package/dist/tools/builtins/sandbox/deliver.js +21 -18
  976. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  977. package/dist/tools/builtins/sandbox/edit.js +65 -51
  978. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  979. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  980. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  981. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  982. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  983. package/dist/tools/builtins/sandbox/glob.js +19 -14
  984. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  985. package/dist/tools/builtins/sandbox/grep.js +155 -36
  986. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  987. package/dist/tools/builtins/sandbox/index.js +13 -5
  988. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  989. package/dist/tools/builtins/sandbox/read.js +30 -20
  990. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  991. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  992. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  993. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  994. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  995. package/dist/tools/builtins/sandbox/write.js +52 -45
  996. package/dist/tools/builtins/send-message.d.ts +56 -0
  997. package/dist/tools/builtins/send-message.js +100 -0
  998. package/dist/tools/builtins/skill-load.d.ts +32 -21
  999. package/dist/tools/builtins/skill-load.js +125 -74
  1000. package/dist/tools/builtins/skill-write.d.ts +4 -4
  1001. package/dist/tools/builtins/skill-write.js +12 -12
  1002. package/dist/tools/builtins/tool-search.d.ts +13 -9
  1003. package/dist/tools/builtins/tool-search.js +25 -14
  1004. package/dist/tools/builtins/web/errors.d.ts +8 -0
  1005. package/dist/tools/builtins/web/errors.js +53 -0
  1006. package/dist/tools/builtins/web/extract.d.ts +62 -0
  1007. package/dist/tools/builtins/web/extract.js +271 -0
  1008. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  1009. package/dist/tools/builtins/web/fetch.js +175 -0
  1010. package/dist/tools/builtins/web/index.d.ts +13 -0
  1011. package/dist/tools/builtins/web/index.js +12 -0
  1012. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  1013. package/dist/tools/builtins/web/page-cache.js +77 -0
  1014. package/dist/tools/builtins/web/search.d.ts +25 -0
  1015. package/dist/tools/builtins/web/search.js +210 -0
  1016. package/dist/tools/builtins/web/url.d.ts +17 -0
  1017. package/dist/tools/builtins/web/url.js +43 -0
  1018. package/dist/tools/canonical-json.d.ts +6 -0
  1019. package/dist/tools/canonical-json.js +16 -0
  1020. package/dist/tools/connector-content.controller.d.ts +1 -1
  1021. package/dist/tools/connector-content.controller.js +11 -6
  1022. package/dist/tools/connector-content.d.ts +12 -15
  1023. package/dist/tools/connector-content.js +53 -18
  1024. package/dist/tools/connectors.controller.d.ts +16 -3
  1025. package/dist/tools/connectors.controller.js +34 -14
  1026. package/dist/tools/connectors.schemas.d.ts +12 -0
  1027. package/dist/tools/connectors.schemas.js +19 -0
  1028. package/dist/tools/connectors.service.d.ts +80 -18
  1029. package/dist/tools/connectors.service.js +529 -358
  1030. package/dist/tools/credentials.d.ts +20 -20
  1031. package/dist/tools/credentials.js +55 -34
  1032. package/dist/tools/display-names.d.ts +9 -0
  1033. package/dist/tools/display-names.js +24 -0
  1034. package/dist/tools/drift.d.ts +29 -41
  1035. package/dist/tools/drift.js +116 -84
  1036. package/dist/tools/elicitation.js +1 -1
  1037. package/dist/tools/extension-tools.controller.d.ts +14 -0
  1038. package/dist/tools/extension-tools.controller.js +37 -0
  1039. package/dist/tools/info.d.ts +73 -13
  1040. package/dist/tools/info.js +151 -39
  1041. package/dist/tools/job-ids.d.ts +13 -0
  1042. package/dist/tools/job-ids.js +15 -0
  1043. package/dist/tools/jobs.d.ts +24 -0
  1044. package/dist/tools/jobs.js +69 -0
  1045. package/dist/tools/legacy-data.d.ts +34 -0
  1046. package/dist/tools/legacy-data.js +76 -0
  1047. package/dist/tools/legacy-keys.d.ts +51 -0
  1048. package/dist/tools/legacy-keys.js +115 -0
  1049. package/dist/tools/naming.d.ts +1 -5
  1050. package/dist/tools/naming.js +1 -7
  1051. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  1052. package/dist/tools/oauth/flow-paths.js +38 -0
  1053. package/dist/tools/oauth/flow.d.ts +30 -30
  1054. package/dist/tools/oauth/flow.js +109 -81
  1055. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  1056. package/dist/tools/oauth/oauth.controller.js +12 -9
  1057. package/dist/tools/oauth/tokens.d.ts +45 -10
  1058. package/dist/tools/oauth/tokens.js +70 -24
  1059. package/dist/tools/org-tool-switches.d.ts +88 -0
  1060. package/dist/tools/org-tool-switches.js +201 -0
  1061. package/dist/tools/outputs.d.ts +13 -4
  1062. package/dist/tools/outputs.js +48 -4
  1063. package/dist/tools/pipeline.d.ts +108 -80
  1064. package/dist/tools/pipeline.js +396 -409
  1065. package/dist/tools/policy.d.ts +4 -17
  1066. package/dist/tools/policy.js +49 -35
  1067. package/dist/tools/questions.controller.d.ts +2 -2
  1068. package/dist/tools/questions.controller.js +9 -6
  1069. package/dist/tools/questions.service.d.ts +26 -25
  1070. package/dist/tools/questions.service.js +201 -142
  1071. package/dist/tools/registry.d.ts +215 -84
  1072. package/dist/tools/registry.js +382 -264
  1073. package/dist/tools/resources.d.ts +1 -1
  1074. package/dist/tools/resources.js +1 -1
  1075. package/dist/tools/specs.d.ts +5 -4
  1076. package/dist/tools/specs.js +3 -1
  1077. package/dist/tools/tools.module.d.ts +10 -0
  1078. package/dist/tools/tools.module.js +113 -0
  1079. package/dist/tools/validate.js +1 -1
  1080. package/dist/ui/call-extension.d.ts +16 -0
  1081. package/dist/ui/call-extension.js +38 -0
  1082. package/dist/ui/embed-token.d.ts +9 -5
  1083. package/dist/ui/embed-token.js +34 -6
  1084. package/dist/ui/ui-stream.d.ts +22 -17
  1085. package/dist/ui/ui-stream.js +72 -12
  1086. package/dist/ui/ui.module.d.ts +7 -0
  1087. package/dist/ui/ui.module.js +28 -0
  1088. package/dist/ui/views.controller.d.ts +14 -12
  1089. package/dist/ui/views.controller.js +32 -25
  1090. package/dist/ui/views.d.ts +10 -57
  1091. package/dist/ui/views.js +58 -46
  1092. package/package.json +15 -3
  1093. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  1094. package/src/migrations/0064_account_last_org.sql +7 -0
  1095. package/src/migrations/0065_conversation_archive.sql +8 -0
  1096. package/src/migrations/0066_extension_display_name.sql +4 -0
  1097. package/src/migrations/0067_agent_profiles.sql +20 -0
  1098. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  1099. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  1100. package/src/migrations/0070_background_tasks.sql +37 -0
  1101. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  1102. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  1103. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  1104. package/src/migrations/0074_subagent_tree.sql +50 -0
  1105. package/src/migrations/0075_plugin_scope.sql +61 -0
  1106. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  1107. package/src/migrations/0077_scope_requests.sql +52 -0
  1108. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  1109. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  1110. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  1111. package/src/migrations/0081_platform_components.sql +129 -0
  1112. package/src/migrations/0082_platform_migration.sql +33 -0
  1113. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1114. package/src/migrations/0084_org_owned_items.sql +85 -0
  1115. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1116. package/src/migrations/0086_org_layering.sql +30 -0
  1117. package/src/migrations/0087_approval_summary.sql +6 -0
  1118. package/src/migrations/0088_environments.sql +80 -0
  1119. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1120. package/src/migrations/0090_initial_passwords.sql +27 -0
  1121. package/src/migrations/0091_account_time_zone.sql +4 -0
  1122. package/src/migrations/0092_tools_default_on.sql +27 -0
  1123. package/src/migrations/0093_connected_environments.sql +37 -0
  1124. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1125. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1126. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1127. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1128. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1129. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1130. package/src/migrations/0100_catalog_files.sql +13 -0
  1131. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1132. package/dist/catalog/upgrade-targets.d.ts +0 -59
  1133. package/dist/catalog/upgrade-targets.js +0 -90
  1134. package/dist/conversations/sandbox-status.d.ts +0 -21
  1135. package/dist/conversations/sandbox-status.js +0 -24
  1136. package/dist/extensions/org-config.controller.d.ts +0 -24
  1137. package/dist/extensions/org-config.controller.js +0 -59
  1138. package/dist/http/gateway.module.js +0 -13
  1139. package/dist/http/health.controller.d.ts +0 -26
  1140. package/dist/http/health.controller.js +0 -79
  1141. package/dist/http/tokens.d.ts +0 -131
  1142. package/dist/http/tokens.js +0 -131
  1143. package/dist/http/zod.pipe.d.ts +0 -8
  1144. package/dist/http/zod.pipe.js +0 -14
  1145. package/dist/identity/enterprise-admin.d.ts +0 -14
  1146. package/dist/identity/enterprise-admin.js +0 -27
  1147. package/dist/identity/rate-limit.d.ts +0 -55
  1148. package/dist/identity/rate-limit.js +0 -121
  1149. package/dist/sandbox/lifecycle.d.ts +0 -21
  1150. package/dist/sandbox/lifecycle.js +0 -68
  1151. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1152. package/dist/tools/builtins/sandbox/names.js +0 -20
@@ -1,17 +1,34 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { isSafePackagePath, marketplaceEntryVersion, } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import { ApiError } from "../errors.js";
4
- import { enabledExtensionsByOrg } from "../extensions/enabled.js";
14
+ import { ExtensionAdmin } from "../extensions/admin-view.js";
15
+ import { ExtensionInstalls } from "../extensions/installs.js";
16
+ import { PluginInstallLock } from "../extensions/locks.js";
5
17
  import { audit } from "../identity/audit.js";
6
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
18
+ import { SuperAdminLock } from "../identity/super-admin.js";
19
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
20
+ import { KernelDb } from "../infra/database/kernel-db.js";
21
+ import { TransactionHost } from "../infra/database/transaction-host.js";
22
+ import { Transactional } from "../infra/database/transactional.decorator.js";
7
23
  import { sameRepository } from "../packages/provenance.js";
8
- import { endpointCredentialIssues } from "../tools/endpoint.js";
9
- import { expandGitUrl, GitSourceError, gitErrorDetails, gitLocationIdentity, normalGitPath, readGitTreeAndOids, resolveGitCommit, } from "./git-source.js";
10
- import { marketplaceNetPolicy, marketplaceUrlProblem } from "./marketplace-fetch.js";
11
- import { entryCompatible, entryContentChanged, entrySourceHost, HOST_VERSIONS, hostAllowed, loadMarketplaceEntry, pluginNameFrom, sourceEffective, } from "./marketplaces.service.js";
12
- import { cancelPendingRequests } from "./requests.service.js";
13
- import { schemaHasPath } from "./schema-path.js";
14
- import { compareVersions, newestFirst, sameRelease, withBuild } from "./versions.js";
24
+ import { countInstalls, itemConfirmations, itemScopeFacts, itemView, marketplaceLatest, versionUsable, } from "./catalog-items.js";
25
+ import { expandGitUrl, GitSourceError, gitErrorDetails, normalGitPath, readGitTreeAndOids, resolveGitCommit, } from "./git-source.js";
26
+ import { fetchMarketplaceArchive, marketplaceNetPolicy, marketplaceUrlProblem, } from "./marketplace-fetch.js";
27
+ import { assertEntryNotDeprecated, entryCompatible, entrySourceHost, HOST_VERSIONS, hostAllowed, loadMarketplaceEntry, MarketplacesService, pluginNameFrom, } from "./marketplaces.service.js";
28
+ import { releaseExtensionClaim } from "./ownership.js";
29
+ import { PluginImport } from "./plugin-import.js";
30
+ import { cancelPendingRequests } from "./request-rules.js";
31
+ import { newestFirst } from "./versions.js";
15
32
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
16
33
  const notFound = () => new ApiError("catalog.item_not_found", "Catalog item not found");
17
34
  /** An archive URL as recorded (origin + path): a query string or fragment may carry a token. */
@@ -58,33 +75,66 @@ function gitSource(loc, read, pinned) {
58
75
  ref: `${u.origin}${u.pathname}@${commit}${path === "." ? "" : `:${path}`}`,
59
76
  };
60
77
  }
61
- /**
62
- * The object storage prefix of one import (relative to `deployment/`):
63
- * `directory/<itemId>/<version>/<importId>/`. Each import gets a new `importId`, so the losing one of
64
- * two concurrent imports of the same version never overwrites the committed version's files; reads
65
- * always go through the `object_prefix` stored on the version row. Build metadata's `+` is written
66
- * as `_` (a `+` in a key can turn into a space through URL query encoding).
67
- */
68
- export const catalogObjectPrefix = (itemId, version, importId) => `directory/${itemId}/${version.replace(/\+/g, "_")}/${importId}/`;
69
78
  /** Default / largest page size of the list. */
70
79
  export const CATALOG_LIST_DEFAULT_LIMIT = 200;
71
80
  export const CATALOG_LIST_MAX_LIMIT = 1000;
72
- const PUT_CONCURRENCY = 8;
73
81
  /**
74
- * Enterprise catalog items (D9 / C21 / C22, `/api/v1/admin/catalog/*`, enterprise admins only). One
82
+ * Platform catalog items (D9 / C21 / C22, `/api/v1/admin/catalog/*`, super admins only). One
75
83
  * kind: every item is a plugin (spec §4), imported through {@link PluginImport} (prepare -> confirm,
76
- * one review); this service lists and shows items, changes policy, deletes, installs an item's
77
- * extension on the deployment, and prepares marketplace imports. Stateless, shared by every replica.
84
+ * one review, whose confirm installs the plugin's extension); this service lists and shows items,
85
+ * deletes, and prepares marketplace imports (scope and disable: `CatalogScopeService`). Stateless,
86
+ * shared by every replica.
78
87
  */
79
- export class CatalogService {
80
- d;
81
- constructor(d) {
82
- this.d = d;
88
+ let CatalogService = class CatalogService {
89
+ kdb;
90
+ adminLock;
91
+ config;
92
+ installs;
93
+ admin;
94
+ pluginImport;
95
+ marketplaces;
96
+ installLock;
97
+ txHost;
98
+ constructor(kdb,
99
+ /** The super admin lock (identity/super-admin.ts): joins the caller's transaction. */
100
+ adminLock, config, installs,
101
+ /** The deployment's extensions with their approvals (what is pending confirmation). */
102
+ admin,
103
+ /** Plugin import (a marketplace entry goes through its prepare). */
104
+ pluginImport,
105
+ /** The token of a custom marketplace (sent only to its URL's origin). */
106
+ marketplaces,
107
+ /** Serializes a claim release with an install of that name still committing (F10). */
108
+ installLock, txHost) {
109
+ this.kdb = kdb;
110
+ this.adminLock = adminLock;
111
+ this.config = config;
112
+ this.installs = installs;
113
+ this.admin = admin;
114
+ this.pluginImport = pluginImport;
115
+ this.marketplaces = marketplaces;
116
+ this.installLock = installLock;
117
+ this.txHost = txHost;
118
+ }
119
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
120
+ get db() {
121
+ return this.kdb.db;
122
+ }
123
+ /** Downloads a marketplace archive source, verified against its integrity. */
124
+ fetchArchive(archive, signal) {
125
+ const config = this.config.get();
126
+ return fetchMarketplaceArchive(archive, {
127
+ maxBytes: config.packages.maxBytes,
128
+ timeoutMs: 120_000,
129
+ net: marketplaceNetPolicy(config),
130
+ ...(signal !== undefined && { signal }),
131
+ });
83
132
  }
84
133
  /**
85
134
  * Prepares the import of one marketplace entry (C25 / C26, spec §5.2): `version` defaults to the
86
135
  * newest compatible version the marketplace lists for `name`; the entry must be compatible with
87
- * the host (`marketplace.incompatible`); an npm source is downloaded from the configured registry
136
+ * the host (`marketplace.incompatible`) and not deprecated (`marketplace.entry_deprecated`, 409; the
137
+ * confirm does not read the marketplace again); an npm source is downloaded from the configured registry
88
138
  * and an archive source from its URL, both always verified against the marketplace's integrity
89
139
  * (`marketplace.integrity_mismatch`, nothing written). A `path` source is read from the git
90
140
  * marketplace's repository at its last refreshed commit (an http marketplace has none:
@@ -100,12 +150,13 @@ export class CatalogService {
100
150
  * `marketplace.not_found`; disabled, or the entry / version missing -> `marketplace.entry_not_found`.
101
151
  */
102
152
  async importFromMarketplace(actor, input, opts = {}) {
103
- const config = this.d.config();
104
- const { entry, marketplace, claude } = await loadMarketplaceEntry(this.d.db, config, input.marketplaceId, input.name, input.version);
153
+ const config = this.config.get();
154
+ const { entry, marketplace, claude } = await loadMarketplaceEntry(this.db, config, input.marketplaceId, input.name, input.version);
105
155
  const version = marketplaceEntryVersion(entry);
106
156
  if (!entryCompatible(entry)) {
107
157
  throw new ApiError("marketplace.incompatible", `${entry.name}${version !== null ? `@${version}` : ""} needs kernel >= ${entry.minKernel}; this deployment runs kernel ${HOST_VERSIONS.kernel}`);
108
158
  }
159
+ assertEntryNotDeprecated(entry);
109
160
  const src = entry.source;
110
161
  const host = entrySourceHost(entry);
111
162
  if (host !== undefined && !hostAllowed(host, config)) {
@@ -113,6 +164,7 @@ export class CatalogService {
113
164
  }
114
165
  const prepareOpts = {
115
166
  ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
167
+ ...(opts.auditDetail !== undefined && { auditDetail: opts.auditDetail }),
116
168
  expect: {
117
169
  marketplace: {
118
170
  name: entry.name,
@@ -129,20 +181,20 @@ export class CatalogService {
129
181
  let detail;
130
182
  let provenance;
131
183
  if ("npm" in src) {
132
- got = await this.d.installs.fetchMarketplacePackage({ package: src.npm.package, version: src.npm.version, integrity: src.npm.integrity }, opts.signal);
184
+ got = await this.installs.fetchMarketplacePackage({ package: src.npm.package, version: src.npm.version, integrity: src.npm.integrity }, opts.signal);
133
185
  ref = `${input.marketplaceId}:${src.npm.package}@${src.npm.version}`;
134
186
  detail = { registry: new URL(config.packages.npmRegistry).origin };
135
- const p = await this.d.installs.fetchProvenance({ package: src.npm.package, version: src.npm.version, integrity: got.integrity }, opts.signal);
187
+ const p = await this.installs.fetchProvenance({ package: src.npm.package, version: src.npm.version, integrity: got.integrity }, opts.signal);
136
188
  // a git marketplace declares its repository: an attestation from another one is a warning
137
189
  const mismatch = p.checked && marketplace.form === "git" && !sameRepository(p.repository, marketplace.url);
138
190
  provenance = { provenance: p, ...(mismatch && { warning: "repository_mismatch" }) };
139
191
  }
140
192
  else {
141
- got = await this.d.fetchArchive(src.archive, opts.signal);
193
+ got = await this.fetchArchive(src.archive, opts.signal);
142
194
  ref = `${input.marketplaceId}:${archiveRef(src.archive.url)}`;
143
195
  detail = { url: archiveRef(src.archive.url) };
144
196
  }
145
- staged = await this.d.pluginImport.prepare(actor, got.bytes, {
197
+ staged = await this.pluginImport.prepare(actor, got.bytes, {
146
198
  kind: "marketplace",
147
199
  ref,
148
200
  integrity: got.integrity,
@@ -184,7 +236,7 @@ export class CatalogService {
184
236
  }
185
237
  const token = marketplace.builtin
186
238
  ? undefined
187
- : await this.d.marketplaceToken(input.marketplaceId);
239
+ : await this.marketplaces.token(input.marketplaceId);
188
240
  const read = await this.readGit(loc, {
189
241
  ...(token !== undefined && { token, tokenOrigin: new URL(marketplace.url).origin }),
190
242
  ...(opts.signal !== undefined && { signal: opts.signal }),
@@ -192,7 +244,7 @@ export class CatalogService {
192
244
  // path entries follow the marketplace's ref; git entries follow theirs unless a commit is pinned
193
245
  const pinned = "git" in src && src.git.commit !== undefined;
194
246
  const where = gitSource("path" in src && marketplace.ref !== null ? { ...loc, ref: marketplace.ref } : loc, read, pinned);
195
- staged = await this.d.pluginImport.prepareGit(actor, read.files, {
247
+ staged = await this.pluginImport.prepareGit(actor, read.files, {
196
248
  kind: "git",
197
249
  ref: `${input.marketplaceId}:${where.ref}`,
198
250
  marketplaceId: input.marketplaceId,
@@ -224,7 +276,7 @@ export class CatalogService {
224
276
  */
225
277
  async importFromGit(actor, input, opts = {}) {
226
278
  const url = expandGitUrl(input.url);
227
- const problem = marketplaceUrlProblem(url, this.d.config().marketplaces.allowInsecureLoopback);
279
+ const problem = marketplaceUrlProblem(url, this.config.get().marketplaces.allowInsecureLoopback);
228
280
  if (problem !== null)
229
281
  throw new ApiError("validation_failed", `url: ${problem}`);
230
282
  if (input.path !== undefined) {
@@ -247,8 +299,9 @@ export class CatalogService {
247
299
  .filter((s) => s !== "")
248
300
  .pop() ?? "plugin")
249
301
  : where.detail.path.split("/").pop();
250
- const r = await this.d.pluginImport.prepareGit(actor, read.files, { kind: "git", ref: where.ref, detail: where.detail }, {
302
+ const r = await this.pluginImport.prepareGit(actor, read.files, { kind: "git", ref: where.ref, detail: where.detail }, {
251
303
  ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
304
+ ...(opts.auditDetail !== undefined && { auditDetail: opts.auditDetail }),
252
305
  fallback: {
253
306
  name: pluginNameFrom(segment),
254
307
  version: gitFallbackVersion(read.commit),
@@ -259,7 +312,7 @@ export class CatalogService {
259
312
  }
260
313
  /** Resolves the commit and reads the plugin's files; git failures become API errors. */
261
314
  async readGit(loc, o) {
262
- const config = this.d.config();
315
+ const config = this.config.get();
263
316
  const options = {
264
317
  net: marketplaceNetPolicy(config),
265
318
  maxBytes: config.packages.maxBytes,
@@ -287,9 +340,28 @@ export class CatalogService {
287
340
  }
288
341
  /** Same as {@link list}, plus the offset of the next page (null when there is none). */
289
342
  async page(q = {}) {
343
+ // `pending`: every item waiting for a confirmation (one list, not paged: the pending set is small)
344
+ if (q.pending === true) {
345
+ const all = await this.page({
346
+ ...(q.includeDeleted && { includeDeleted: true }),
347
+ limit: CATALOG_LIST_MAX_LIMIT,
348
+ });
349
+ const items = [...all.items];
350
+ let next = all.nextOffset;
351
+ while (next !== null) {
352
+ const more = await this.page({
353
+ ...(q.includeDeleted && { includeDeleted: true }),
354
+ limit: CATALOG_LIST_MAX_LIMIT,
355
+ offset: next,
356
+ });
357
+ items.push(...more.items);
358
+ next = more.nextOffset;
359
+ }
360
+ return { items: items.filter((i) => i.pending), nextOffset: null };
361
+ }
290
362
  const limit = Math.min(Math.max(1, q.limit ?? CATALOG_LIST_DEFAULT_LIMIT), CATALOG_LIST_MAX_LIMIT);
291
363
  const offset = Math.max(0, q.offset ?? 0);
292
- let query = this.d.db
364
+ let query = this.db
293
365
  .selectFrom("catalog_items")
294
366
  .selectAll()
295
367
  .orderBy("name")
@@ -303,7 +375,7 @@ export class CatalogService {
303
375
  const items = rows.slice(0, limit);
304
376
  if (items.length === 0)
305
377
  return { items: [], nextOffset: null };
306
- const versions = await this.d.db
378
+ const versions = await this.db
307
379
  .selectFrom("catalog_item_versions")
308
380
  .select([
309
381
  "item_id",
@@ -314,19 +386,29 @@ export class CatalogService {
314
386
  "integrity",
315
387
  "source_detail",
316
388
  "imported_at",
389
+ "manifest",
390
+ "source_format",
391
+ "applied_at",
392
+ "rejected_at",
317
393
  ])
318
394
  .where("item_id", "in", items.map((i) => i.id))
319
395
  .execute();
396
+ const platformOwned = new Set(items.filter((i) => i.owner_org_id === null).map((i) => i.id));
320
397
  const byItem = new Map();
321
398
  for (const v of versions) {
399
+ // a platform item offers only versions it may use (a transferred org item's rejected or
400
+ // never-applied uploads stay out, ruling P3-52); an org item's pending ones show in 待确认
401
+ if (platformOwned.has(v.item_id) && !versionUsable(v))
402
+ continue;
322
403
  const list = byItem.get(v.item_id) ?? [];
323
404
  list.push(v);
324
405
  byItem.set(v.item_id, list);
325
406
  }
326
- const installs = await countInstalls(this.d.db, items, byItem);
327
- const latest = await marketplaceLatest(this.d.db, this.d.config(), items, byItem);
407
+ const installs = await countInstalls(this.db, items, byItem);
408
+ const latest = await marketplaceLatest(this.db, this.config.get(), items, byItem);
409
+ const facts = await itemScopeFacts(this.db, items, await itemConfirmations(this.admin, items, byItem));
328
410
  return {
329
- items: items.map((i) => itemView(i, byItem.get(i.id) ?? [], installs.get(i.id) ?? 0, latest.get(i.id))),
411
+ items: items.map((i) => itemView(i, byItem.get(i.id) ?? [], installs.get(i.id) ?? 0, latest.get(i.id), facts.get(i.id))),
330
412
  nextOffset,
331
413
  };
332
414
  }
@@ -334,27 +416,29 @@ export class CatalogService {
334
416
  async get(itemId) {
335
417
  if (!UUID_RE.test(itemId))
336
418
  throw notFound();
337
- const item = await this.d.db
419
+ const item = await this.db
338
420
  .selectFrom("catalog_items")
339
421
  .selectAll()
340
422
  .where("id", "=", itemId)
341
423
  .executeTakeFirst();
342
424
  if (!item)
343
425
  throw notFound();
344
- const rows = await this.d.db
426
+ const rows = (await this.db
345
427
  .selectFrom("catalog_item_versions")
346
428
  .selectAll()
347
429
  .where("item_id", "=", itemId)
348
- .execute();
430
+ .execute()).filter((v) => item.owner_org_id !== null || versionUsable(v));
349
431
  rows.sort((a, b) => newestFirst({ version: a.version, importedAt: a.imported_at }, { version: b.version, importedAt: b.imported_at }));
350
432
  const byItem = new Map([[item.id, rows]]);
351
- const installs = await countInstalls(this.d.db, [item], byItem);
352
- const latest = await marketplaceLatest(this.d.db, this.d.config(), [item], byItem);
433
+ const installs = await countInstalls(this.db, [item], byItem);
434
+ const latest = await marketplaceLatest(this.db, this.config.get(), [item], byItem);
435
+ const facts = await itemScopeFacts(this.db, [item], await itemConfirmations(this.admin, [item], byItem));
353
436
  return {
354
437
  item: {
355
- ...itemView(item, rows, installs.get(item.id) ?? 0, latest.get(item.id)),
438
+ ...itemView(item, rows, installs.get(item.id) ?? 0, latest.get(item.id), facts.get(item.id)),
356
439
  packageName: item.package_name,
357
440
  deletedAt: item.deleted_at?.toISOString() ?? null,
441
+ platformVersion: item.platform_synced_version ?? item.latest_version,
358
442
  },
359
443
  versions: rows.map((v) => ({
360
444
  version: v.version,
@@ -376,507 +460,132 @@ export class CatalogService {
376
460
  })),
377
461
  };
378
462
  }
379
- /**
380
- * Changes the policy (audit `catalog.policy_changed`, not written when unchanged). Deleted /
381
- * missing -> `catalog.item_not_found`.
382
- */
383
- async setPolicy(actor, itemId, policy, opts = {}) {
384
- if (!UUID_RE.test(itemId))
385
- throw notFound();
386
- await this.d.db.transaction().execute(async (trx) => {
387
- await lockEnterpriseAdminsAndAuthorize(trx, actor);
388
- const row = await trx
389
- .selectFrom("catalog_items")
390
- .select(["name", "policy"])
391
- .where("id", "=", itemId)
392
- .where("deleted_at", "is", null)
393
- .forUpdate()
394
- .executeTakeFirst();
395
- if (!row)
396
- throw notFound();
397
- if (row.policy === policy)
398
- return;
399
- await trx
400
- .updateTable("catalog_items")
401
- .set({ policy, updated_at: sql `now()` })
402
- .where("id", "=", itemId)
403
- .execute();
404
- await audit(trx, {
405
- actorAccountId: actor,
406
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
407
- action: "catalog.policy_changed",
408
- target: itemId,
409
- detail: { name: row.name, from: row.policy, to: policy },
410
- });
411
- });
412
- return this.view(itemId);
413
- }
414
463
  /**
415
464
  * Deletes the item (soft delete, audit `catalog.removed`; requests still pending are cancelled in
416
465
  * the same transaction): versions and stored files are kept (installed components still refer to
417
466
  * them), organizations no longer see it; the same name can later be imported again as a new
418
- * item. Deleted / missing -> `catalog.item_not_found`.
467
+ * item. Deleted / missing -> `catalog.item_not_found`. A platform plugin whose extension is
468
+ * still enabled on the deployment -> 409 `catalog.extension_enabled` (details
469
+ * `[{ extension, displayName }]`): disable it on the Extensions page first, as an uninstall
470
+ * requires. A disabled extension keeps its install record (the super admin uninstalls it on the
471
+ * Extensions page); an org-owned item's extension is taken out by `OwnedPluginCleanup`.
419
472
  */
420
473
  async remove(actor, itemId, opts = {}) {
421
474
  if (!UUID_RE.test(itemId))
422
475
  throw notFound();
423
- await this.d.db.transaction().execute(async (trx) => {
424
- await lockEnterpriseAdminsAndAuthorize(trx, actor);
425
- const row = await trx
426
- .updateTable("catalog_items")
427
- .set({
428
- deleted_at: sql `now()`,
429
- updated_at: sql `now()`,
430
- })
431
- .where("id", "=", itemId)
432
- .where("deleted_at", "is", null)
433
- .returning(["name"])
434
- .executeTakeFirst();
435
- if (!row)
436
- throw notFound();
437
- // Pending requests for a deleted item are pointless: cancel them in the same transaction
438
- await cancelPendingRequests(trx, { itemId }, actor, "item_removed", opts);
439
- await audit(trx, {
440
- actorAccountId: actor,
441
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
442
- action: "catalog.removed",
443
- target: itemId,
444
- detail: { name: row.name },
445
- });
446
- });
476
+ await this.writeRemove(actor, itemId, opts);
447
477
  }
448
478
  /**
449
- * Installs the extension of one version of an item on the deployment
450
- * (`ExtensionAdminOps.install`: a new install is disabled, a version change keeps the desired
451
- * state; audit `extension.installed`), with the install record linked to the item (F-AA). The
452
- * returned status may be `pending_approval` when the version's permissions are not approved yet.
453
- * A version without an extension -> `catalog.no_extension`; item or version missing ->
454
- * `catalog.item_not_found`.
479
+ * The precheck of {@link remove} (the Platform tool's `plugins.delete`): throws what the delete
480
+ * would throw for an enabled extension; read-only, no locks.
455
481
  */
456
- async installToDeployment(actor, itemId, version, opts = {}) {
482
+ async assertRemovable(itemId) {
457
483
  if (!UUID_RE.test(itemId))
458
484
  throw notFound();
459
- const item = await this.d.db
485
+ await this.assertExtensionDisabled(this.kdb.db, itemId);
486
+ }
487
+ async writeRemove(actor, itemId, opts) {
488
+ await this.adminLock.lockAndAuthorize(actor);
489
+ await this.assertExtensionDisabled(this.db, itemId, true);
490
+ if ((await this.removeIn(actor, itemId, opts)) === null)
491
+ throw notFound();
492
+ }
493
+ /**
494
+ * A live platform item whose extension (the install of the item's name from its package) is
495
+ * enabled -> 409 `catalog.extension_enabled`. With `lock`, under the per-name install lock an
496
+ * enable takes too (the caller's transaction), so no enable slips in between.
497
+ */
498
+ async assertExtensionDisabled(db, itemId, lock = false) {
499
+ const item = await db
460
500
  .selectFrom("catalog_items")
461
- .select(["id", "name"])
501
+ .select(["name", "package_name", "owner_org_id", "display_name"])
462
502
  .where("id", "=", itemId)
463
503
  .where("deleted_at", "is", null)
464
504
  .executeTakeFirst();
465
- if (!item)
466
- throw notFound();
467
- const v = await this.d.db
468
- .selectFrom("catalog_item_versions")
469
- .select("extension_sha256")
470
- .where("item_id", "=", itemId)
471
- .where("version", "=", version)
505
+ if (!item || item.owner_org_id !== null)
506
+ return;
507
+ if (lock)
508
+ await this.installLock.lock(item.name);
509
+ const install = await db
510
+ .selectFrom("extension_installs as x")
511
+ .innerJoin("extension_packages as p", "p.sha256", "x.sha256")
512
+ .select(["x.desired_state", "p.package_name"])
513
+ .where("x.name", "=", item.name)
472
514
  .executeTakeFirst();
473
- if (!v) {
474
- throw new ApiError("catalog.item_not_found", `Version ${version} of this item not found`);
475
- }
476
- if (v.extension_sha256 === null) {
477
- throw new ApiError("catalog.no_extension", `Plugin ${item.name} ${version} has no extension; there is nothing to install on the deployment`);
478
- }
479
- return this.d.ops.install(item.name, v.extension_sha256, actor, opts.actorTokenId, {
480
- catalogItemId: itemId,
481
- });
482
- }
483
- async view(itemId) {
484
- return (await this.get(itemId)).item;
485
- }
486
- }
487
- /**
488
- * Checks a connector template against the loaded connector `c` (problem paths start with `at`): the
489
- * endpoint matches its `endpointSchema` and carries no credential-like headers / query / URL user
490
- * info (the same rule as connector installs); every `editableEndpoint` path exists in the endpoint
491
- * schema.
492
- */
493
- export function templateProblems(c, t, at) {
494
- const problems = [];
495
- const r = c.endpointSchema.safeParse(t.endpoint);
496
- if (!r.success) {
497
- for (const i of r.error.issues) {
498
- problems.push(`${[`${at}.endpoint`, ...i.path.map(String)].join(".")}: ${i.message}`);
499
- }
500
- }
501
- else {
502
- for (const leak of endpointCredentialIssues(r.data)) {
503
- problems.push(`${at}.${leak.path}: ${leak.message}`);
504
- }
515
+ if (install === undefined || install.desired_state !== "enabled")
516
+ return;
517
+ if (item.package_name !== null && install.package_name !== item.package_name)
518
+ return;
519
+ throw new ApiError("catalog.extension_enabled", `The extension "${item.name}" of this plugin is enabled on the deployment; disable it on the Extensions page first, then delete the plugin`, [{ extension: item.name, displayName: item.display_name ?? null }]);
505
520
  }
506
- for (const p of t.editableEndpoint ?? []) {
507
- if (!schemaHasPath(c.endpointSchema, p.split("."))) {
508
- problems.push(`${at}.editableEndpoint "${p}" is not a field of the ${t.connector} connector's endpoint`);
509
- }
510
- }
511
- return problems;
512
- }
513
- /** Writes the files to `deployment/<prefix><path>` ({@link PUT_CONCURRENCY} at a time). */
514
- export async function putCatalogFiles(storage, prefix, files) {
515
- const store = storage.deployment();
516
- const queue = [...files];
517
- await Promise.all(Array.from({ length: Math.min(PUT_CONCURRENCY, queue.length) }, async () => {
518
- for (let f = queue.shift(); f; f = queue.shift()) {
519
- await store.put(`${prefix}${f.path}`, f.data, {
520
- contentType: "application/octet-stream",
521
- size: f.size,
522
- });
523
- }
524
- }));
525
- }
526
- /** Compares the marketplace's permission summary with the computed keys ({@link PermissionsMismatch}). */
527
- export function permissionsMismatch(declared, actual) {
528
- if (declared === undefined || actual === undefined)
529
- return null;
530
- const want = new Set(declared);
531
- const have = new Set(actual);
532
- const missing = [...have].filter((k) => !want.has(k)).sort();
533
- const extra = [...want].filter((k) => !have.has(k)).sort();
534
- return missing.length > 0 || extra.length > 0 ? { missing, extra } : null;
535
- }
536
- /** Takes the transaction-level advisory lock of an item name (concurrent imports of it serialize). */
537
- export async function lockCatalogName(trx, name) {
538
- await sql `SELECT pg_advisory_xact_lock(hashtext(${`capybara.directory-item:${name}`}))`.execute(trx);
539
- }
540
- /**
541
- * The live item of a name, with the source identity of its latest version
542
- * ({@link sourceIdentity}; null when there is none).
543
- */
544
- async function liveItem(db, name) {
545
- const item = await db
546
- .selectFrom("catalog_items")
547
- .select(["id", "package_name", "latest_version", "marketplace_id"])
548
- .where("name", "=", name)
549
- .where("deleted_at", "is", null)
550
- .executeTakeFirst();
551
- if (!item)
552
- return undefined;
553
- const latest = await db
554
- .selectFrom("catalog_item_versions")
555
- .select("source_detail")
556
- .where("item_id", "=", item.id)
557
- .where("version", "=", item.latest_version)
558
- .executeTakeFirst();
559
- return {
560
- ...item,
561
- source: sourceIdentity(latest?.source_detail ?? undefined, item.marketplace_id ?? undefined),
562
- };
563
- }
564
- /**
565
- * The identity of a git source, `<host>/<repo>:<path>` (host lower case, no `.git`), or null when
566
- * the source is not git. An item without package.json is identified by it instead of a package name.
567
- */
568
- export function gitIdentity(detail) {
569
- if (detail === undefined || !("commit" in detail))
570
- return null;
571
- return gitLocationIdentity(detail);
572
- }
573
- /**
574
- * What identifies the source of a plugin without package.json: `git <host>/<repo>:<path>`, or, for
575
- * a marketplace archive (a skills-only tgz without plugin.json), `marketplace <id>` (the
576
- * marketplace vouches for its entries; archive URLs change from version to version). null for
577
- * anything else.
578
- */
579
- function sourceIdentity(detail, marketplaceId) {
580
- const git = gitIdentity(detail);
581
- if (git !== null)
582
- return `git ${git}`;
583
- if (detail !== undefined && "url" in detail && marketplaceId !== undefined) {
584
- return `marketplace ${marketplaceId}`;
585
- }
586
- return null;
587
- }
588
- /** The versions of an item, with what tells their content apart. */
589
- async function itemVersions(db, itemId) {
590
- return db
591
- .selectFrom("catalog_item_versions")
592
- .select(["version", "content_digest", "integrity"])
593
- .where("item_id", "=", itemId)
594
- .execute();
595
- }
596
- /** `atConfirm`: found under the lock at confirm (another import committed after the review). */
597
- const versionExists = (version, sameContent, atConfirm = false) => new ApiError("catalog.version_exists", (sameContent
598
- ? `Version ${version} of this catalog item is already imported with the same content`
599
- : `Version ${version} of this catalog item has already been imported`) +
600
- (atConfirm
601
- ? " (by another import since this one was prepared); prepare the import again"
602
- : ""));
603
- /**
604
- * No version of the release of `p.version` (equal but for build metadata) holds the same content
605
- * (digest; for a version without one, the same integrity), else `catalog.version_exists`.
606
- */
607
- function assertNewContent(existing, p, atConfirm = false) {
608
- const same = existing.find((v) => sameRelease(v.version, p.version) &&
609
- (v.content_digest !== null
610
- ? v.content_digest === p.contentDigest
611
- : v.integrity !== null && v.integrity === p.integrity));
612
- if (same)
613
- throw versionExists(same.version, true, atConfirm);
614
- }
615
- /**
616
- * The version a new import records (Decision 6, spec §5.3): the plugin's own version, unless that
617
- * release is already imported. A version of the same release (equal but for build metadata) with
618
- * the same content (digest; for versions without one, the same integrity) -> `catalog.version_exists`
619
- * "already imported"; other content -> `<version>+git.<sha12>` (git) or `+sha256.<12>` (any other
620
- * source, the digest's first 12 hex), never overwriting the imported version. A git commit already
621
- * recorded with other content (a Claude Code plugin whose marketplace entry changed while its own
622
- * commit did not, see `claudeContentDigest`) falls back to `+sha256.<12>`.
623
- */
624
- export function recordedVersion(existing, p) {
625
- assertNewContent(existing, p);
626
- if (!existing.some((v) => v.version === p.version))
627
- return p.version;
628
- const d = p.detail;
629
- const byDigest = withBuild(p.version, `sha256.${p.contentDigest.slice(0, 12)}`);
630
- let next = d !== undefined && "commit" in d
631
- ? withBuild(p.version, `git.${d.commit.slice(0, 12)}`)
632
- : byDigest;
633
- if (existing.some((v) => v.version === next))
634
- next = byDigest;
635
- if (existing.some((v) => v.version === next))
636
- throw versionExists(next, false);
637
- return next;
638
- }
639
- /**
640
- * Conflict precheck before writing (no lock; {@link writeCatalogVersion}'s re-check inside the
641
- * transaction is final): an item with the same name from another npm package (or, without one,
642
- * another git source) -> `catalog.name_conflict`; the release already imported with the same
643
- * content -> `catalog.version_exists`. Returns the existing item (undefined when there is none) and
644
- * the version to record ({@link recordedVersion}).
645
- */
646
- export async function precheckCatalogImport(db, name, p) {
647
- const existing = await liveItem(db, name);
648
- if (!existing)
649
- return { existing, version: p.version };
650
- assertSameSource(existing, p.packageName, sourceIdentity(p.detail, p.marketplaceId));
651
- return { existing, version: recordedVersion(await itemVersions(db, existing.id), p) };
652
- }
653
- /**
654
- * Writes a catalog version in the caller's transaction (the caller has re-checked the enterprise
655
- * admin): takes the name's advisory lock, checks conflicts again (the same source; no version of
656
- * the release with the same content; `version` not taken meanwhile), creates the item when there is
657
- * none or adds the version (latest and display fields change only for a newer version, a version
658
- * equal but for build metadata being newer as the later import), and writes the version row (with
659
- * its content digest) and the `catalog.imported` audit. Returns the item id.
660
- */
661
- export async function writeCatalogVersion(trx, w) {
662
- const { name, version, listing } = w;
663
- await lockCatalogName(trx, name);
664
- const live = await liveItem(trx, name);
665
- let id;
666
- if (live) {
667
- id = live.id;
668
- assertSameSource(live, w.packageName, sourceIdentity(w.source.detail, w.marketplaceId));
669
- const existing = await itemVersions(trx, id);
670
- // the same content under any version of the release, then the recorded version itself
671
- assertNewContent(existing, {
672
- version,
673
- contentDigest: w.contentDigest,
674
- ...(w.source.integrity !== undefined && { integrity: w.source.integrity }),
675
- }, true);
676
- if (existing.some((v) => v.version === version))
677
- throw versionExists(version, false, true);
678
- const newer = compareVersions(version, live.latest_version) >= 0;
679
- await trx
521
+ /**
522
+ * The soft delete of {@link remove} in the caller's transaction, without its super admin check
523
+ * (pre-flight F14: the super admin's remove and an owner's delete or an org deletion,
524
+ * `OwnedItems.transferOrRemove`, share it): `deleted_at` set, a pending version cleared, the
525
+ * extension name claim of a first upload still waiting released (ruling P3-37, F10), pending
526
+ * requests cancelled, audit `catalog.removed` (`actor` null: the kernel). Returns the removed
527
+ * item's name, or null when it is gone already.
528
+ */
529
+ async removeIn(actor, itemId, opts = {}) {
530
+ const t = this.db;
531
+ const now = sql `now()`;
532
+ const row = await t
680
533
  .updateTable("catalog_items")
681
534
  .set({
682
- updated_at: sql `now()`,
683
- ...(w.marketplaceId !== undefined && { marketplace_id: w.marketplaceId }),
684
- ...(newer && {
685
- latest_version: version,
686
- publisher: listing.publisher,
687
- description: listing.description,
688
- display_name: listing.displayName ? JSON.stringify(listing.displayName) : null,
689
- }),
535
+ deleted_at: now,
536
+ updated_at: now,
537
+ pending_version: null,
538
+ pending_by: null,
539
+ pending_at: null,
690
540
  })
691
- .where("id", "=", id)
692
- .execute();
693
- }
694
- else {
695
- id = w.newItemId;
696
- await trx
697
- .insertInto("catalog_items")
698
- .values({
699
- id,
700
- name,
701
- package_name: w.packageName,
702
- publisher: listing.publisher,
703
- description: listing.description,
704
- display_name: listing.displayName ? JSON.stringify(listing.displayName) : null,
705
- latest_version: version,
706
- created_by: w.actor,
707
- marketplace_id: w.marketplaceId ?? null,
708
- })
709
- .execute();
710
- }
711
- await trx
712
- .insertInto("catalog_item_versions")
713
- .values({
714
- item_id: id,
715
- version,
716
- manifest: JSON.stringify(w.manifest),
717
- source: w.source.source,
718
- source_ref: w.source.ref,
719
- integrity: w.source.integrity ?? null,
720
- source_detail: w.source.detail !== undefined ? JSON.stringify(w.source.detail) : null,
721
- content_digest: w.contentDigest,
722
- object_prefix: w.objectPrefix,
723
- extension_sha256: w.extensionSha256,
724
- files: JSON.stringify(w.files.map(({ path, size, sha256 }) => ({ path, size, sha256 }))),
725
- size: w.size,
726
- imported_by: w.actor,
727
- source_format: w.sourceFormat ?? "capybara",
728
- translation: w.translation != null ? JSON.stringify(w.translation) : null,
729
- license_text: w.licenseText ?? null,
730
- license_truncated: w.licenseTruncated === true,
731
- })
732
- .execute();
733
- await audit(trx, {
734
- ...(w.actor !== null && { actorAccountId: w.actor }),
735
- ...(w.actorTokenId !== undefined && { actorTokenId: w.actorTokenId }),
736
- action: "catalog.imported",
737
- target: id,
738
- detail: {
739
- name,
740
- version,
741
- source: w.source.source,
742
- sourceRef: w.source.ref,
743
- contentDigest: w.contentDigest,
744
- ...(w.extensionSha256 !== null && { sha256: w.extensionSha256 }),
745
- ...(w.source.integrity !== undefined && { integrity: w.source.integrity }),
746
- ...(w.marketplaceId !== undefined && { marketplaceId: w.marketplaceId }),
747
- ...w.auditDetail,
748
- },
749
- });
750
- return id;
751
- }
752
- /**
753
- * An extension name belongs to the npm package that first installed it (`extension_name_owners`,
754
- * Ruling P3): when another package owns it, the import is refused right away with
755
- * `extension.name_conflict` (the same code as at install), instead of failing only at deploy time.
756
- */
757
- export async function assertPluginNameOwner(db, name, packageName) {
758
- const owner = await db
759
- .selectFrom("extension_name_owners")
760
- .select("package_name")
761
- .where("name", "=", name)
762
- .executeTakeFirst();
763
- if (owner && owner.package_name !== packageName) {
764
- throw new ApiError("extension.name_conflict", `Extension name ${name} belongs to package ${owner.package_name}; ${packageLabel(packageName)} cannot use it`);
765
- }
766
- }
767
- /** "package <name>", or what a plugin without package.json is called in messages. */
768
- const packageLabel = (p) => p === null ? "a plugin without package.json" : `package ${p}`;
769
- /**
770
- * Whether a plugin may add a version to an existing item: the same npm package, or, for an item
771
- * without package.json, the same source ({@link sourceIdentity}: git host, repo and path, so
772
- * unrelated repos that resolve to the same name never merge; or the same marketplace for an
773
- * archive); never a mix of the two.
774
- */
775
- function assertSameSource(item, packageName, source) {
776
- const from = (p, src) => p !== null ? `package ${p}` : (src ?? "a plugin without package.json");
777
- const same = item.package_name !== null
778
- ? item.package_name === packageName
779
- : packageName === null && item.source !== null && item.source === source;
780
- if (!same) {
781
- throw new ApiError("catalog.name_conflict", `A catalog item with this name comes from ${from(item.package_name, item.source)}; ${from(packageName, source)} cannot add versions to it`);
782
- }
783
- }
784
- /**
785
- * For each marketplace-imported item, its marketplace (when enabled): the highest compatible
786
- * version listed, and whether a compatible entry's content changed at an imported version.
787
- */
788
- async function marketplaceLatest(db, config, items, versions) {
789
- const out = new Map();
790
- const sourced = items.filter((i) => typeof i.marketplace_id === "string");
791
- if (sourced.length === 0)
792
- return out;
793
- const rows = await db
794
- .selectFrom("marketplace_entries as e")
795
- .innerJoin("marketplaces as s", "s.id", "e.source_id")
796
- .select([
797
- "e.source_id",
798
- "e.name",
799
- "e.version",
800
- "e.entry",
801
- "e.head_commit",
802
- "e.tree_oid",
803
- "s.builtin",
804
- "s.enabled",
805
- "s.url",
806
- "s.last_commit",
807
- ])
808
- .where("e.source_id", "in", [...new Set(sourced.map((i) => i.marketplace_id))])
809
- .where("e.name", "in", [...new Set(sourced.map((i) => i.name))])
810
- .execute();
811
- for (const i of sourced) {
812
- const listed = rows.filter((r) => r.source_id === i.marketplace_id &&
813
- r.name === i.name &&
814
- sourceEffective(r, config) &&
815
- entryCompatible(r.entry));
816
- const [best] = listed
817
- .filter((r) => r.version !== "")
818
- .map((r) => r.version)
819
- .sort(newestFirst);
820
- const recorded = versions.get(i.id) ?? [];
821
- out.set(i.id, {
822
- latest: best ?? null,
823
- contentChanged: listed.some((r) => entryContentChanged(r.entry, {
824
- marketplaceId: r.source_id,
825
- headCommit: r.head_commit,
826
- treeOid: r.tree_oid,
827
- url: r.url,
828
- lastCommit: r.last_commit,
829
- }, recorded)),
830
- });
831
- }
832
- return out;
833
- }
834
- /** Org install counts per item (see {@link CatalogItemView.installs}). */
835
- async function countInstalls(db, items, versions) {
836
- const orgs = new Map(items.map((i) => [i.id, new Set()]));
837
- const installed = await db
838
- .selectFrom("plugin_installs")
839
- .select(["item_id", "org_id"])
840
- .where("item_id", "in", items.map((i) => i.id))
841
- .where("status", "in", ["installed", "upgrading"])
842
- .execute();
843
- for (const r of installed)
844
- orgs.get(r.item_id)?.add(r.org_id);
845
- const withExtension = items.filter((i) => (versions.get(i.id) ?? []).find((v) => v.version === i.latest_version)?.extension_sha256 !=
846
- null);
847
- if (withExtension.length > 0) {
848
- const enabled = await db
849
- .selectFrom(enabledExtensionsByOrg(db).as("en"))
850
- .select(["en.plugin", "en.org_id"])
851
- .where("en.plugin", "in", withExtension.map((p) => p.name))
852
- .execute();
853
- for (const i of withExtension) {
854
- for (const r of enabled)
855
- if (r.plugin === i.name)
856
- orgs.get(i.id)?.add(r.org_id);
541
+ .where("id", "=", itemId)
542
+ .where("deleted_at", "is", null)
543
+ .returning(["name", "awaiting_confirmation", "package_name", "owner_org_id"])
544
+ .executeTakeFirst();
545
+ if (!row)
546
+ return null;
547
+ // An org upload still waiting: free the name when nothing is installed under its claim
548
+ // (ruling P3-37, pre-flight F10). Under the install lock, so an install a running confirmation
549
+ // is committing is seen: that claim stays for its take-out or the cleanup job
550
+ if (row.awaiting_confirmation && row.package_name !== null) {
551
+ await this.installLock.lock(row.name);
552
+ await releaseExtensionClaim(t, row.name, row.package_name);
857
553
  }
554
+ // Pending requests for a deleted item are pointless: cancel them in the same transaction
555
+ await cancelPendingRequests(t, { itemId }, actor, "item_removed", opts);
556
+ await audit(t, {
557
+ actorAccountId: actor,
558
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
559
+ // an org-owned item's removal shows in its owner org's audit log too
560
+ ...(row.owner_org_id !== null && { orgId: row.owner_org_id }),
561
+ action: "catalog.removed",
562
+ target: itemId,
563
+ detail: {
564
+ name: row.name,
565
+ ...(row.owner_org_id !== null && { ownerOrgId: row.owner_org_id }),
566
+ ...(opts.reason !== undefined && { reason: opts.reason }),
567
+ ...opts.auditDetail,
568
+ },
569
+ });
570
+ return { name: row.name };
858
571
  }
859
- return new Map([...orgs].map(([id, set]) => [id, set.size]));
860
- }
861
- export function itemView(i, versions, installs = 0, marketplace = { latest: null, contentChanged: false }) {
862
- const sorted = [...versions].sort((a, b) => newestFirst({ version: a.version, importedAt: a.imported_at ?? null }, { version: b.version, importedAt: b.imported_at ?? null }));
863
- const top = sorted[0]?.version ?? i.latest_version;
864
- const latestMarketplaceVersion = marketplace.latest;
865
- return {
866
- id: i.id,
867
- name: i.name,
868
- publisher: i.publisher,
869
- displayName: i.display_name,
870
- description: i.description,
871
- policy: i.policy,
872
- latestVersion: i.latest_version,
873
- versions: sorted.map((v) => v.version),
874
- installs,
875
- source: versions.find((v) => v.version === i.latest_version)?.source ?? "file",
876
- marketplaceId: i.marketplace_id ?? null,
877
- latestMarketplaceVersion,
878
- newerInMarketplace: latestMarketplaceVersion !== null && compareVersions(latestMarketplaceVersion, top) > 0,
879
- contentChanged: marketplace.contentChanged,
880
- updatedAt: i.updated_at.toISOString(),
881
- };
882
- }
572
+ };
573
+ __decorate([
574
+ Transactional()
575
+ ], CatalogService.prototype, "writeRemove", null);
576
+ __decorate([
577
+ Transactional({ propagation: "mandatory" })
578
+ ], CatalogService.prototype, "removeIn", null);
579
+ CatalogService = __decorate([
580
+ Injectable(),
581
+ __param(0, Inject(KernelDb)),
582
+ __param(1, Inject(SuperAdminLock)),
583
+ __param(2, Inject(KernelConfigService)),
584
+ __param(3, Inject(ExtensionInstalls)),
585
+ __param(4, Inject(ExtensionAdmin)),
586
+ __param(5, Inject(PluginImport)),
587
+ __param(6, Inject(MarketplacesService)),
588
+ __param(7, Inject(PluginInstallLock)),
589
+ __param(8, Inject(TransactionHost))
590
+ ], CatalogService);
591
+ export { CatalogService };