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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -0,0 +1,395 @@
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
+ };
10
+ // Promote on share (plugin scope phase 3, spec §14, rulings P3-3 to P3-6, P3-23): an org's own
11
+ // skill or agent template stays an org row (`skills` / `agent_templates`) until the super admin
12
+ // first shows it to other orgs or associates it with one. That action promotes it, in its own
13
+ // transaction: a platform row owned by the org (`owner_org_id` = `origin_org_id` = the org,
14
+ // `scope_mode own`, `named: [owner]`, `shown_to_others false`) at the org row's version number,
15
+ // and the org row linked to it without a pin (ruling B2). The owner's agents keep referencing the
16
+ // org row's id; `skills/usable.ts` and `agents/templates.ts` serve that row its own stored version
17
+ // while it is the platform row's current one, so nothing the owner's agents see changes (no
18
+ // "Updated skills" line, same `subagent_started` reference). Other orgs reference the platform id.
19
+ import { createHash, randomUUID } from "node:crypto";
20
+ import { Inject, Injectable } from "@nestjs/common";
21
+ import { sql } from "kysely";
22
+ import { ApiError } from "../errors.js";
23
+ import { audit } from "../identity/audit.js";
24
+ import { KernelDb } from "../infra/database/kernel-db.js";
25
+ import { TransactionHost } from "../infra/database/transaction-host.js";
26
+ import { Transactional } from "../infra/database/transactional.decorator.js";
27
+ import { StorageService } from "../storage/storage.service.js";
28
+ import { putCatalogFiles } from "./catalog-items.js";
29
+ import { platformSkillPrefix, uniqueVersionPrefix } from "./platform-components.js";
30
+ /** The org row changed between {@link ComponentPromotion.prepare} and its transaction: prepare again. */
31
+ export class PromotionStale extends Error {
32
+ }
33
+ /** How many times a caller prepares again after {@link PromotionStale}. */
34
+ export const PROMOTION_ATTEMPTS = 3;
35
+ const notFound = () => new ApiError("component.not_found", "Component not found");
36
+ /** 409 `catalog.not_owned`: only the org's own rows can be shared (P3-6). */
37
+ export function notOwnedError(what) {
38
+ return new ApiError("catalog.not_owned", `${what} is not this organization's own: only its own org skills and agent templates can be shared`);
39
+ }
40
+ /** 409 `component.version_stale`: the org row kept changing while it was being promoted. */
41
+ export const promotionStaleError = () => new ApiError("component.version_stale", "The skill or agent template changed while it was being shared; try again");
42
+ /** The platform table of a kind. */
43
+ const PLATFORM_TABLE = {
44
+ skill: "platform_skills",
45
+ agent_template: "platform_agent_templates",
46
+ };
47
+ /**
48
+ * Promotes an org's own skill or agent template to a platform row when it is first shared
49
+ * (ruling P3-3). Stateless, shared by every replica.
50
+ */
51
+ let ComponentPromotion = class ComponentPromotion {
52
+ kdb;
53
+ files;
54
+ txHost;
55
+ constructor(kdb,
56
+ /** Where files are read and written (the kernel's object storage). */
57
+ files, txHost) {
58
+ this.kdb = kdb;
59
+ this.files = files;
60
+ this.txHost = txHost;
61
+ }
62
+ get db() {
63
+ return this.kdb.db;
64
+ }
65
+ /**
66
+ * The live org row `id` of `kind` (an org-scope skill, an agent template) of a live org, when it
67
+ * is the org's own (see {@link OrgRow}); undefined otherwise.
68
+ */
69
+ async orgRow(kind, id, forUpdate = false) {
70
+ return readOrgRow(this.db, kind, id, forUpdate);
71
+ }
72
+ /**
73
+ * The first phase, outside any transaction: reads the org row and (a skill) copies its current
74
+ * version's files to `deployment/platform/skills/<platformId>/<version>/`, checking each file
75
+ * against the manifest. A row promoted already needs nothing. A failed copy throws and nothing is
76
+ * linked (the copied files stay unreferenced). Missing or not the org's own -> 404.
77
+ */
78
+ async prepare(kind, orgRowId) {
79
+ const row = await this.orgRow(kind, orgRowId);
80
+ if (!row)
81
+ throw notFound();
82
+ if (row.link !== null) {
83
+ return {
84
+ kind,
85
+ orgRowId,
86
+ orgId: row.orgId,
87
+ platformId: row.link,
88
+ version: row.version,
89
+ already: true,
90
+ prefix: null,
91
+ };
92
+ }
93
+ if (!row.ownable)
94
+ throw notOwnedError(row.name);
95
+ const platformId = randomUUID();
96
+ const prefix = kind === "skill" ? uniqueVersionPrefix(platformSkillPrefix(platformId, row.version)) : null;
97
+ if (prefix !== null)
98
+ await this.copySkillFiles(row, prefix);
99
+ return {
100
+ kind,
101
+ orgRowId,
102
+ orgId: row.orgId,
103
+ platformId,
104
+ version: row.version,
105
+ already: false,
106
+ prefix,
107
+ };
108
+ }
109
+ /** Deletes a prepared promotion's files after its transaction failed (best effort, P3-45). */
110
+ async discard(p) {
111
+ if (p.prefix === null)
112
+ return;
113
+ try {
114
+ await this.files.deployment().deletePrefix(p.prefix);
115
+ }
116
+ catch {
117
+ // unreferenced objects only: nothing reads them
118
+ }
119
+ }
120
+ /**
121
+ * The second phase, in the caller's transaction: re-reads the org row under its lock (after the
122
+ * org row, so an org deletion is serialized), checks the share gate on it (409
123
+ * `catalog.not_shareable`) and writes the platform row (`current_version` = the org row's, one
124
+ * version row at that number), its list `[owner]`, and the link (no pin). Idempotent: a row the
125
+ * org promoted already returns its platform id. A version written since {@link prepare} ->
126
+ * {@link PromotionStale}; a live platform row of the same name created in this org already (a
127
+ * shared item whose owner deleted it and then made a new one) -> 409 `plugin.skill_conflict`.
128
+ * Audits `component.promoted`. Returns the platform id.
129
+ */
130
+ async promote(p, actor) {
131
+ const org = await this.db
132
+ .selectFrom("orgs")
133
+ .select("id")
134
+ .where("id", "=", p.orgId)
135
+ .where("deleted_at", "is", null)
136
+ .forShare()
137
+ .executeTakeFirst();
138
+ if (!org)
139
+ throw notFound();
140
+ const row = await this.orgRow(p.kind, p.orgRowId, true);
141
+ if (!row)
142
+ throw notFound();
143
+ if (row.link !== null)
144
+ return row.link;
145
+ if (!row.ownable)
146
+ throw notOwnedError(row.name);
147
+ if (!row.shareable) {
148
+ throw new ApiError("catalog.not_shareable", `${row.name} is owned by an organization that has not made it shareable`);
149
+ }
150
+ if (p.already || p.version !== row.version)
151
+ throw new PromotionStale();
152
+ const table = PLATFORM_TABLE[p.kind];
153
+ const taken = await this.db
154
+ .selectFrom(table)
155
+ .select("id")
156
+ .where("name", "=", row.name)
157
+ .where("origin_org_id", "=", row.orgId)
158
+ .where(sql `coalesce(plugin_name, '')`, "=", row.plugin ?? "")
159
+ .where("deleted_at", "is", null)
160
+ .executeTakeFirst();
161
+ if (taken) {
162
+ throw new ApiError("plugin.skill_conflict", `A shared ${p.kind === "skill" ? "skill" : "agent template"} named "${row.name}" from this organization already exists on the platform`, [{ skill: row.name, orgId: row.orgId, skills: [taken.id], source: { kind: "org" } }]);
163
+ }
164
+ const owned = {
165
+ owner_org_id: row.orgId,
166
+ origin_org_id: row.orgId,
167
+ shareable: row.shareable,
168
+ shown_to_others: false,
169
+ scope_mode: "own",
170
+ scope: "named",
171
+ };
172
+ if (p.kind === "skill") {
173
+ const v = await this.db
174
+ .selectFrom("skill_versions")
175
+ .select(["manifest", "source_format", "suggest_pinned", "created_by"])
176
+ .where("skill_id", "=", row.id)
177
+ .where("version", "=", row.version)
178
+ .executeTakeFirstOrThrow();
179
+ await this.db
180
+ .insertInto("platform_skills")
181
+ .values({
182
+ id: p.platformId,
183
+ catalog_item_id: null,
184
+ plugin_name: null,
185
+ name: row.name,
186
+ description: v.manifest.description,
187
+ description_zh: null,
188
+ current_version: row.version,
189
+ ...owned,
190
+ })
191
+ .execute();
192
+ await this.db
193
+ .insertInto("platform_skill_versions")
194
+ .values({
195
+ skill_id: p.platformId,
196
+ version: row.version,
197
+ manifest: JSON.stringify(v.manifest),
198
+ object_prefix: p.prefix,
199
+ catalog_version: null,
200
+ source_format: v.source_format,
201
+ suggest_pinned: v.suggest_pinned,
202
+ created_by: v.created_by,
203
+ })
204
+ .execute();
205
+ await this.db
206
+ .updateTable("skills")
207
+ .set({ platform_skill_id: p.platformId, updated_at: sql `now()` })
208
+ .where("id", "=", row.id)
209
+ .execute();
210
+ }
211
+ else {
212
+ const v = await this.db
213
+ .selectFrom("agent_template_versions")
214
+ .select(["definition", "source_format", "catalog_version"])
215
+ .where("template_id", "=", row.id)
216
+ .where("version", "=", row.version)
217
+ .executeTakeFirstOrThrow();
218
+ const description = v.definition?.description;
219
+ await this.db
220
+ .insertInto("platform_agent_templates")
221
+ .values({
222
+ id: p.platformId,
223
+ catalog_item_id: null,
224
+ // the roster type `<plugin>:<name>` is model-visible: other orgs see the same type
225
+ plugin_name: row.plugin,
226
+ name: row.name,
227
+ description: typeof description === "string" ? description : null,
228
+ current_version: row.version,
229
+ ...owned,
230
+ })
231
+ .execute();
232
+ await this.db
233
+ .insertInto("platform_agent_template_versions")
234
+ .values({
235
+ template_id: p.platformId,
236
+ version: row.version,
237
+ // the stored definition as it is (its tool keys are normalized when read)
238
+ definition: JSON.stringify(v.definition),
239
+ // an org template has no file: only its parsed definition is stored
240
+ object_prefix: null,
241
+ catalog_version: v.catalog_version,
242
+ source_format: v.source_format,
243
+ })
244
+ .execute();
245
+ await this.db
246
+ .updateTable("agent_templates")
247
+ .set({ platform_template_id: p.platformId, updated_at: new Date() })
248
+ .where("id", "=", row.id)
249
+ .execute();
250
+ }
251
+ await this.db
252
+ .insertInto("component_scope_orgs")
253
+ .values({ kind: p.kind, component_id: p.platformId, org_id: row.orgId })
254
+ .execute();
255
+ await audit(this.db, {
256
+ actorAccountId: actor,
257
+ orgId: row.orgId,
258
+ action: "component.promoted",
259
+ target: p.platformId,
260
+ detail: { kind: p.kind, name: row.name, from: row.id, version: row.version },
261
+ });
262
+ return p.platformId;
263
+ }
264
+ /** Copies the skill's current version files to its platform prefix (outside any transaction). */
265
+ async copySkillFiles(row, prefix) {
266
+ const v = await this.db
267
+ .selectFrom("skill_versions")
268
+ .select(["manifest", "object_prefix"])
269
+ .where("skill_id", "=", row.id)
270
+ .where("version", "=", row.version)
271
+ .executeTakeFirst();
272
+ if (!v)
273
+ throw notFound();
274
+ this.files.assertAvailable();
275
+ const store = this.files.kernel(row.orgId);
276
+ const out = [];
277
+ for (const f of v.manifest.files) {
278
+ const got = await store.get(`${v.object_prefix}${f.path}`);
279
+ if (!got)
280
+ throw new ApiError("internal", `Stored skill file ${f.path} is missing`);
281
+ const data = new Uint8Array(await new Response(got.body).arrayBuffer());
282
+ if (createHash("sha256").update(data).digest("hex") !== f.sha256) {
283
+ throw new ApiError("internal", `Stored skill file ${f.path} does not match its manifest`);
284
+ }
285
+ out.push({ path: f.path, size: data.byteLength, data });
286
+ }
287
+ await putCatalogFiles(this.files, prefix, out);
288
+ }
289
+ };
290
+ __decorate([
291
+ Transactional({ propagation: "mandatory" })
292
+ ], ComponentPromotion.prototype, "promote", null);
293
+ ComponentPromotion = __decorate([
294
+ Injectable(),
295
+ __param(0, Inject(KernelDb)),
296
+ __param(1, Inject(StorageService)),
297
+ __param(2, Inject(TransactionHost))
298
+ ], ComponentPromotion);
299
+ export { ComponentPromotion };
300
+ /** {@link ComponentPromotion.orgRow} through `db` (readers outside the provider). */
301
+ export async function readOrgRow(db, kind, id, forUpdate = false) {
302
+ if (kind === "skill") {
303
+ let q = db
304
+ .selectFrom("skills as s")
305
+ .innerJoin("orgs as o", "o.id", "s.org_id")
306
+ .leftJoin("platform_skills as p", "p.id", "s.platform_skill_id")
307
+ .select([
308
+ "s.id",
309
+ "s.org_id",
310
+ "s.name",
311
+ "s.current_version",
312
+ "s.shareable",
313
+ "s.platform_skill_id",
314
+ "s.pinned_version",
315
+ "s.catalog_item_id",
316
+ "p.owner_org_id",
317
+ "p.deleted_at as p_deleted_at",
318
+ ])
319
+ .where("s.id", "=", id)
320
+ .where("s.scope", "=", "org")
321
+ .where("s.deleted_at", "is", null)
322
+ .where("o.deleted_at", "is", null);
323
+ if (forUpdate)
324
+ q = q.forUpdate("s");
325
+ const r = await q.executeTakeFirst();
326
+ if (!r)
327
+ return undefined;
328
+ const link = ownedLink(r);
329
+ if (link === false)
330
+ return undefined;
331
+ return {
332
+ kind,
333
+ id: r.id,
334
+ orgId: r.org_id,
335
+ name: r.name,
336
+ plugin: null,
337
+ version: r.current_version,
338
+ shareable: r.shareable,
339
+ link,
340
+ ownable: r.catalog_item_id === null,
341
+ };
342
+ }
343
+ let q = db
344
+ .selectFrom("agent_templates as t")
345
+ .innerJoin("orgs as o", "o.id", "t.org_id")
346
+ .leftJoin("platform_agent_templates as p", "p.id", "t.platform_template_id")
347
+ .select([
348
+ "t.id",
349
+ "t.org_id",
350
+ "t.name",
351
+ "t.plugin_name",
352
+ "t.current_version",
353
+ "t.shareable",
354
+ "t.platform_template_id as platform_skill_id",
355
+ "t.pinned_version",
356
+ "t.catalog_item_id",
357
+ "p.owner_org_id",
358
+ "p.deleted_at as p_deleted_at",
359
+ ])
360
+ .where("t.id", "=", id)
361
+ .where("t.deleted_at", "is", null)
362
+ .where("o.deleted_at", "is", null);
363
+ if (forUpdate)
364
+ q = q.forUpdate("t");
365
+ const r = await q.executeTakeFirst();
366
+ if (!r)
367
+ return undefined;
368
+ const link = ownedLink(r);
369
+ if (link === false)
370
+ return undefined;
371
+ return {
372
+ kind,
373
+ id: r.id,
374
+ orgId: r.org_id,
375
+ name: r.name,
376
+ plugin: r.plugin_name,
377
+ version: r.current_version,
378
+ shareable: r.shareable,
379
+ link,
380
+ // an org template (ruling P4-13); a plugin's template keeps its roster type and is not
381
+ ownable: r.catalog_item_id === null && r.plugin_name === null,
382
+ };
383
+ }
384
+ /**
385
+ * The platform row an org row is promoted to (null: not linked), or false when the row is a copy
386
+ * of a platform row the org does not own (P3-6: not the org's own).
387
+ */
388
+ function ownedLink(r) {
389
+ if (r.platform_skill_id === null)
390
+ return null;
391
+ if (r.pinned_version === null && r.owner_org_id === r.org_id && r.p_deleted_at === null) {
392
+ return r.platform_skill_id;
393
+ }
394
+ return false;
395
+ }
@@ -0,0 +1,152 @@
1
+ import { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { type OrgContext } from "../orgs/org.guard.js";
4
+ import { type ComponentScopePreview, ComponentScopeService, type ComponentVersionView, type ComponentView, type OrgComponentView, type OrgOfferedComponentView } from "./component-scope.service.js";
5
+ import { PlatformComponents, type UploadedComponentVersion } from "./platform-components.js";
6
+ declare const ComponentParams: z.ZodObject<{
7
+ kind: z.ZodEnum<{
8
+ agent_template: "agent_template";
9
+ connector_template: "connector_template";
10
+ skill: "skill";
11
+ }>;
12
+ id: z.ZodString;
13
+ }, z.core.$strip>;
14
+ declare const ListQuery: z.ZodObject<{
15
+ kind: z.ZodEnum<{
16
+ agent_template: "agent_template";
17
+ connector_template: "connector_template";
18
+ skill: "skill";
19
+ }>;
20
+ }, z.core.$strict>;
21
+ declare const OrgListQuery: z.ZodObject<{
22
+ kind: z.ZodOptional<z.ZodEnum<{
23
+ agent_template: "agent_template";
24
+ connector_template: "connector_template";
25
+ skill: "skill";
26
+ }>>;
27
+ itemId: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strict>;
29
+ /** `{ scope, orgs? }`, `{ disabled: true }` or `{ follow: true }`: exactly one. */
30
+ declare const PreviewBody: z.ZodObject<{
31
+ scope: z.ZodOptional<z.ZodEnum<{
32
+ all: "all";
33
+ named: "named";
34
+ optional: "optional";
35
+ }>>;
36
+ orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ disabled: z.ZodOptional<z.ZodLiteral<true>>;
38
+ follow: z.ZodOptional<z.ZodLiteral<true>>;
39
+ }, z.core.$strict>;
40
+ /** `{ scope, orgs?, scopeHash }` or `{ follow: true, scopeHash }`. */
41
+ declare const ScopeBody: z.ZodObject<{
42
+ scope: z.ZodOptional<z.ZodEnum<{
43
+ all: "all";
44
+ named: "named";
45
+ optional: "optional";
46
+ }>>;
47
+ orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
+ follow: z.ZodOptional<z.ZodLiteral<true>>;
49
+ scopeHash: z.ZodString;
50
+ }, z.core.$strict>;
51
+ declare const DisabledBody: z.ZodObject<{
52
+ disabled: z.ZodBoolean;
53
+ scopeHash: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strict>;
55
+ declare const ShownBody: z.ZodObject<{
56
+ shownToOthers: z.ZodBoolean;
57
+ }, z.core.$strict>;
58
+ declare const SwitchBody: z.ZodObject<{
59
+ enabled: z.ZodBoolean;
60
+ confirm: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strict>;
62
+ declare const IdParams: z.ZodObject<{
63
+ id: z.ZodString;
64
+ }, z.core.$strip>;
65
+ declare const TemplateVersionBody: z.ZodObject<{
66
+ content: z.ZodString;
67
+ }, z.core.$strict>;
68
+ /**
69
+ * Platform components (`/api/v1/admin/components/*`, super admins; plugin scope phase 2, Task 6):
70
+ * the global list of skills, agent templates and connector templates, and each one's own scope,
71
+ * disable and visibility (spec §5 rules 2, 4, 8, 10). Changes that take something away are
72
+ * previewed (`POST …/scope/preview`) and confirmed with `scopeHash`.
73
+ */
74
+ export declare class AdminComponentsController {
75
+ private readonly scope;
76
+ private readonly components;
77
+ constructor(scope: ComponentScopeService, components: PlatformComponents);
78
+ /**
79
+ * Updates a platform skill on its own (spec §7.2): the skill package (zip) as the raw body
80
+ * (`application/octet-stream`, at most `packages.maxBytes`). The package keeps the skill's name
81
+ * (400 `validation_failed`), is checked like an org upload (400 `skill.invalid_package`), and
82
+ * becomes the next version, flagged as updated on its own; it keeps its plugin and serves in
83
+ * orgs at once. Unknown component -> 404 `component.not_found`. Audits `component.version_uploaded`.
84
+ */
85
+ uploadSkillVersion(principal: Principal, p: z.infer<typeof IdParams>, req: {
86
+ body?: unknown;
87
+ }): Promise<UploadedComponentVersion>;
88
+ /** Updates a platform agent template on its own: `{ content }` is the template markdown file. */
89
+ uploadAgentTemplateVersion(principal: Principal, p: z.infer<typeof IdParams>, body: z.infer<typeof TemplateVersionBody>): Promise<UploadedComponentVersion>;
90
+ /** `GET ?kind=`: every platform component of the kind (plugin, owner, scope, version, orgs on). */
91
+ list(q: z.infer<typeof ListQuery>): Promise<{
92
+ components: ComponentView[];
93
+ }>;
94
+ /**
95
+ * A component's versions, newest first: `{ versions: [{ version, catalogVersion, updatedOnOwn,
96
+ * createdAt }] }` (a connector template keeps no history: its current version only). Unknown or
97
+ * removed -> 404 `component.not_found`.
98
+ */
99
+ versions(p: z.infer<typeof ComponentParams>): Promise<{
100
+ versions: ComponentVersionView[];
101
+ }>;
102
+ /**
103
+ * What a component scope change (`{ scope, orgs? }`), a disable (`{ disabled: true }`) or a
104
+ * return to its plugin's scope (`{ follow: true }`) would do: `{ affected: [{ orgId, orgName,
105
+ * agents }], conflicts: [{ orgId, orgName, name, skills }], scopeHash }`. Unknown component ->
106
+ * 404 `component.not_found`; of a builtin plugin -> 409 `plugin.builtin`.
107
+ */
108
+ preview(p: z.infer<typeof ComponentParams>, body: z.infer<typeof PreviewBody>): Promise<ComponentScopePreview>;
109
+ /**
110
+ * Gives the component its own scope, or makes it follow its plugin again, confirmed with the
111
+ * preview's `scopeHash` (a difference -> 409 `plugin.scope_stale`); an org whose own skill has
112
+ * its name would newly be offered it -> 409 `plugin.skill_conflict`. Audits
113
+ * `component.scope_changed`.
114
+ */
115
+ setScope(principal: Principal, p: z.infer<typeof ComponentParams>, body: z.infer<typeof ScopeBody>): Promise<ComponentView>;
116
+ /** Disables the component on the deployment (`scopeHash` required) or enables it again. */
117
+ setDisabled(principal: Principal, p: z.infer<typeof ComponentParams>, body: z.infer<typeof DisabledBody>): Promise<ComponentView>;
118
+ /** Shows or hides the component to orgs outside its `named` list. */
119
+ setShown(principal: Principal, p: z.infer<typeof ComponentParams>, body: z.infer<typeof ShownBody>): Promise<ComponentView>;
120
+ }
121
+ /**
122
+ * An org admin's switch of one platform component (`PUT orgs/:orgId/components/:kind/:id/switch`,
123
+ * spec §5 rule 5, §13.5): `{ enabled: true }` -> 200 `{ component }`; `{ enabled: false }` on a
124
+ * component in use -> 200 `{ preview: { agents }, confirm }`, then with `confirm` -> `{ component }`.
125
+ * The route needs `catalog.read`; the service re-checks the kind's manage action (org admins).
126
+ */
127
+ export declare class OrgComponentsController {
128
+ private readonly scope;
129
+ constructor(scope: ComponentScopeService);
130
+ /**
131
+ * The platform components offered to the org (`?kind=`, `?itemId=`: only those; Task 10): each
132
+ * with its state in the org (`on`, `locked` for `all`, the org's `switch`) and whether an org
133
+ * admin may switch it. Members read it (the workspace pages are read-only for them).
134
+ */
135
+ list(org: OrgContext, q: z.infer<typeof OrgListQuery>): Promise<{
136
+ components: OrgOfferedComponentView[];
137
+ }>;
138
+ setSwitch(principal: Principal, org: OrgContext, p: z.infer<typeof ComponentParams>, body: z.infer<typeof SwitchBody>): Promise<{
139
+ component: OrgComponentView;
140
+ } | {
141
+ preview: {
142
+ agents: {
143
+ id: string;
144
+ name: string;
145
+ refs: string[];
146
+ }[];
147
+ connectorsKept: number;
148
+ };
149
+ confirm: string;
150
+ }>;
151
+ }
152
+ export {};