@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.2

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 (616) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +179 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +261 -329
  21. package/dist/agents/definition.d.ts +8 -0
  22. package/dist/agents/definition.js +8 -0
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +20 -4
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +323 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/cli.d.ts +3 -2
  42. package/dist/catalog/cli.js +13 -31
  43. package/dist/catalog/job-ids.d.ts +15 -0
  44. package/dist/catalog/job-ids.js +15 -0
  45. package/dist/catalog/jobs.d.ts +27 -0
  46. package/dist/catalog/jobs.js +70 -0
  47. package/dist/catalog/locks.d.ts +24 -0
  48. package/dist/catalog/locks.js +63 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  50. package/dist/catalog/marketplaces.controller.js +22 -11
  51. package/dist/catalog/marketplaces.service.d.ts +30 -13
  52. package/dist/catalog/marketplaces.service.js +330 -256
  53. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  54. package/dist/catalog/org-catalog.controller.js +29 -14
  55. package/dist/catalog/org-catalog.service.d.ts +32 -198
  56. package/dist/catalog/org-catalog.service.js +159 -400
  57. package/dist/catalog/plugin-import.d.ts +73 -34
  58. package/dist/catalog/plugin-import.js +356 -217
  59. package/dist/catalog/plugin-install.d.ts +83 -41
  60. package/dist/catalog/plugin-install.js +421 -269
  61. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  62. package/dist/catalog/plugin-upgrade.js +407 -282
  63. package/dist/catalog/requests.service.d.ts +27 -15
  64. package/dist/catalog/requests.service.js +201 -145
  65. package/dist/catalog/upgrade-targets.d.ts +4 -7
  66. package/dist/channels/actions.d.ts +6 -4
  67. package/dist/channels/actions.js +1 -1
  68. package/dist/channels/cards.d.ts +2 -2
  69. package/dist/channels/channels.module.d.ts +40 -0
  70. package/dist/channels/channels.module.js +128 -0
  71. package/dist/channels/connections.controller.d.ts +1 -1
  72. package/dist/channels/connections.controller.js +11 -6
  73. package/dist/channels/connections.service.d.ts +43 -21
  74. package/dist/channels/connections.service.js +236 -131
  75. package/dist/channels/inbound.d.ts +34 -38
  76. package/dist/channels/inbound.js +107 -41
  77. package/dist/channels/job-ids.d.ts +10 -0
  78. package/dist/channels/job-ids.js +10 -0
  79. package/dist/channels/jobs.d.ts +85 -0
  80. package/dist/channels/jobs.js +157 -0
  81. package/dist/channels/outbound.d.ts +60 -82
  82. package/dist/channels/outbound.js +165 -194
  83. package/dist/channels/supervisor.d.ts +88 -46
  84. package/dist/channels/supervisor.js +230 -132
  85. package/dist/channels/threads.d.ts +29 -8
  86. package/dist/channels/threads.js +71 -13
  87. package/dist/channels/webhook.d.ts +20 -14
  88. package/dist/channels/webhook.js +51 -20
  89. package/dist/config/load.d.ts +3 -2
  90. package/dist/config/load.js +3 -2
  91. package/dist/config/nacos-source.js +11 -2
  92. package/dist/config/schema.d.ts +1 -0
  93. package/dist/config/schema.js +10 -4
  94. package/dist/conversations/access.d.ts +29 -0
  95. package/dist/conversations/access.js +86 -0
  96. package/dist/conversations/artifacts.d.ts +10 -10
  97. package/dist/conversations/artifacts.js +35 -9
  98. package/dist/conversations/attachments.controller.d.ts +1 -1
  99. package/dist/conversations/attachments.controller.js +8 -6
  100. package/dist/conversations/attachments.module.d.ts +7 -0
  101. package/dist/conversations/attachments.module.js +25 -0
  102. package/dist/conversations/attachments.service.d.ts +30 -22
  103. package/dist/conversations/attachments.service.js +119 -46
  104. package/dist/conversations/conversations.controller.d.ts +8 -7
  105. package/dist/conversations/conversations.controller.js +59 -29
  106. package/dist/conversations/conversations.module.d.ts +8 -0
  107. package/dist/conversations/conversations.module.js +69 -0
  108. package/dist/conversations/conversations.service.d.ts +40 -38
  109. package/dist/conversations/conversations.service.js +130 -140
  110. package/dist/conversations/event-log.d.ts +28 -18
  111. package/dist/conversations/event-log.js +74 -27
  112. package/dist/conversations/files.d.ts +10 -10
  113. package/dist/conversations/files.js +37 -11
  114. package/dist/conversations/idem-keys.d.ts +5 -0
  115. package/dist/conversations/idem-keys.js +5 -0
  116. package/dist/conversations/job-ids.d.ts +6 -0
  117. package/dist/conversations/job-ids.js +6 -0
  118. package/dist/conversations/outputs-read.d.ts +11 -11
  119. package/dist/conversations/outputs-read.js +31 -7
  120. package/dist/conversations/queue.d.ts +48 -56
  121. package/dist/conversations/queue.js +13 -289
  122. package/dist/conversations/queue.service.d.ts +60 -0
  123. package/dist/conversations/queue.service.js +343 -0
  124. package/dist/conversations/sandbox-status.d.ts +13 -10
  125. package/dist/conversations/sandbox-status.js +36 -8
  126. package/dist/conversations/titles.d.ts +71 -24
  127. package/dist/conversations/titles.js +159 -63
  128. package/dist/ctx/bus.js +9 -3
  129. package/dist/ctx/create-ctx.d.ts +6 -0
  130. package/dist/ctx/create-ctx.js +7 -9
  131. package/dist/ctx/lock.d.ts +7 -3
  132. package/dist/ctx/lock.js +9 -20
  133. package/dist/ctx/secrets.d.ts +10 -2
  134. package/dist/ctx/secrets.js +7 -3
  135. package/dist/db/kernel-schema.d.ts +2 -2
  136. package/dist/db/pool.d.ts +5 -0
  137. package/dist/db/pool.js +1 -0
  138. package/dist/errors.d.ts +1 -0
  139. package/dist/errors.js +1 -0
  140. package/dist/evals/budget.d.ts +42 -21
  141. package/dist/evals/budget.js +114 -62
  142. package/dist/evals/evals.module.d.ts +31 -0
  143. package/dist/evals/evals.module.js +114 -0
  144. package/dist/evals/jobs.d.ts +20 -0
  145. package/dist/evals/jobs.js +45 -0
  146. package/dist/evals/run-replay.d.ts +56 -8
  147. package/dist/evals/run-replay.js +140 -80
  148. package/dist/evals/runs.controller.d.ts +1 -1
  149. package/dist/evals/runs.controller.js +17 -8
  150. package/dist/evals/runs.service.d.ts +23 -45
  151. package/dist/evals/runs.service.js +245 -234
  152. package/dist/evals/sets.controller.d.ts +1 -1
  153. package/dist/evals/sets.controller.js +17 -8
  154. package/dist/evals/sets.service.d.ts +22 -6
  155. package/dist/evals/sets.service.js +248 -194
  156. package/dist/evals/snapshot.d.ts +2 -2
  157. package/dist/evals/step-replay.d.ts +2 -2
  158. package/dist/evals/step-replay.js +1 -1
  159. package/dist/evals/trajectory.controller.d.ts +1 -1
  160. package/dist/evals/trajectory.controller.js +11 -7
  161. package/dist/evals/trajectory.service.d.ts +5 -4
  162. package/dist/evals/trajectory.service.js +30 -7
  163. package/dist/evals/worker.d.ts +44 -27
  164. package/dist/evals/worker.js +220 -121
  165. package/dist/extensions/admin-ops.d.ts +61 -33
  166. package/dist/extensions/admin-ops.js +248 -154
  167. package/dist/extensions/admin-view.d.ts +38 -27
  168. package/dist/extensions/admin-view.js +126 -55
  169. package/dist/extensions/approvals.d.ts +12 -8
  170. package/dist/extensions/approvals.js +73 -46
  171. package/dist/extensions/blobs.d.ts +27 -10
  172. package/dist/extensions/blobs.js +111 -45
  173. package/dist/extensions/bootstrap.d.ts +58 -31
  174. package/dist/extensions/bootstrap.js +175 -121
  175. package/dist/extensions/cli.d.ts +20 -10
  176. package/dist/extensions/cli.js +41 -96
  177. package/dist/extensions/config-issues.d.ts +7 -0
  178. package/dist/extensions/config-issues.js +31 -0
  179. package/dist/extensions/deployment-config-store.d.ts +49 -0
  180. package/dist/extensions/deployment-config-store.js +133 -0
  181. package/dist/extensions/deployment-config.d.ts +58 -67
  182. package/dist/extensions/deployment-config.js +202 -230
  183. package/dist/extensions/enabled.d.ts +5 -5
  184. package/dist/extensions/extensions.module.d.ts +8 -0
  185. package/dist/extensions/extensions.module.js +77 -0
  186. package/dist/extensions/hooks.d.ts +3 -2
  187. package/dist/extensions/hooks.js +1 -1
  188. package/dist/extensions/host.d.ts +72 -68
  189. package/dist/extensions/host.js +191 -152
  190. package/dist/extensions/installs.d.ts +49 -16
  191. package/dist/extensions/installs.js +128 -32
  192. package/dist/extensions/job-ids.d.ts +6 -0
  193. package/dist/extensions/job-ids.js +6 -0
  194. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  195. package/dist/extensions/lifecycle-topics.js +18 -0
  196. package/dist/extensions/lifecycle.d.ts +35 -47
  197. package/dist/extensions/lifecycle.js +103 -39
  198. package/dist/extensions/locks.d.ts +33 -0
  199. package/dist/extensions/locks.js +86 -0
  200. package/dist/extensions/migrate-lock.d.ts +3 -4
  201. package/dist/extensions/org-config.controller.d.ts +1 -1
  202. package/dist/extensions/org-config.controller.js +8 -5
  203. package/dist/extensions/org-config.d.ts +48 -46
  204. package/dist/extensions/org-config.js +284 -226
  205. package/dist/extensions/registry.d.ts +50 -2
  206. package/dist/extensions/registry.js +89 -4
  207. package/dist/extensions/sources.d.ts +12 -8
  208. package/dist/extensions/sources.js +34 -13
  209. package/dist/files/files.module.d.ts +3 -0
  210. package/dist/files/files.module.js +22 -0
  211. package/dist/files/previewers.controller.d.ts +7 -2
  212. package/dist/files/previewers.controller.js +17 -9
  213. package/dist/files/previewers.d.ts +13 -18
  214. package/dist/files/previewers.js +83 -36
  215. package/dist/http/adapter.d.ts +3 -0
  216. package/dist/http/adapter.js +25 -0
  217. package/dist/http/api.module.d.ts +3 -110
  218. package/dist/http/api.module.js +47 -355
  219. package/dist/http/app.d.ts +11 -15
  220. package/dist/http/app.js +17 -62
  221. package/dist/http/error-filter.module.d.ts +5 -0
  222. package/dist/http/error-filter.module.js +18 -0
  223. package/dist/http/error.filter.js +2 -2
  224. package/dist/identity/accounts.d.ts +82 -29
  225. package/dist/identity/accounts.js +294 -175
  226. package/dist/identity/api-tokens.d.ts +11 -7
  227. package/dist/identity/api-tokens.js +71 -44
  228. package/dist/identity/audit.d.ts +7 -4
  229. package/dist/identity/audit.js +5 -1
  230. package/dist/identity/auth.controller.d.ts +11 -10
  231. package/dist/identity/auth.controller.js +31 -25
  232. package/dist/identity/auth.guard.d.ts +3 -3
  233. package/dist/identity/auth.guard.js +6 -4
  234. package/dist/identity/binding.d.ts +9 -11
  235. package/dist/identity/binding.js +41 -13
  236. package/dist/identity/enterprise-admin.d.ts +18 -12
  237. package/dist/identity/enterprise-admin.js +67 -13
  238. package/dist/identity/external-identity-lock.d.ts +17 -0
  239. package/dist/identity/external-identity-lock.js +39 -0
  240. package/dist/identity/external.d.ts +19 -15
  241. package/dist/identity/external.js +163 -125
  242. package/dist/identity/identity.module.d.ts +6 -0
  243. package/dist/identity/identity.module.js +56 -0
  244. package/dist/identity/me.controller.d.ts +16 -15
  245. package/dist/identity/me.controller.js +37 -31
  246. package/dist/identity/sessions.d.ts +12 -10
  247. package/dist/identity/sessions.js +74 -42
  248. package/dist/identity/settings.d.ts +20 -14
  249. package/dist/identity/settings.js +85 -57
  250. package/dist/identity/sso.controller.d.ts +7 -7
  251. package/dist/identity/sso.controller.js +13 -9
  252. package/dist/identity/sso.d.ts +9 -12
  253. package/dist/identity/sso.js +54 -24
  254. package/dist/inbox/inbox.module.d.ts +3 -0
  255. package/dist/inbox/inbox.module.js +22 -0
  256. package/dist/inbox/inbox.service.d.ts +7 -9
  257. package/dist/inbox/inbox.service.js +32 -11
  258. package/dist/index.d.ts +16 -11
  259. package/dist/index.js +9 -6
  260. package/dist/infra/cache/cache.module.d.ts +3 -0
  261. package/dist/infra/cache/cache.module.js +16 -0
  262. package/dist/infra/cache/cache.service.d.ts +21 -0
  263. package/dist/infra/cache/cache.service.js +80 -0
  264. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  265. package/dist/infra/cache/cacheable.decorator.js +83 -0
  266. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  267. package/dist/infra/cli/kernel-cli.module.js +165 -0
  268. package/dist/infra/close-within.d.ts +15 -0
  269. package/dist/infra/close-within.js +36 -0
  270. package/dist/infra/config/config.module.d.ts +13 -0
  271. package/dist/infra/config/config.module.js +39 -0
  272. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  273. package/dist/infra/config/kernel-config.service.js +126 -0
  274. package/dist/infra/database/after-commit.d.ts +6 -0
  275. package/dist/infra/database/after-commit.js +9 -0
  276. package/dist/infra/database/database.module.d.ts +25 -0
  277. package/dist/infra/database/database.module.js +90 -0
  278. package/dist/infra/database/kernel-db.d.ts +22 -0
  279. package/dist/infra/database/kernel-db.js +65 -0
  280. package/dist/infra/database/transaction-host.d.ts +50 -0
  281. package/dist/infra/database/transaction-host.js +125 -0
  282. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  283. package/dist/infra/database/transactional.decorator.js +27 -0
  284. package/dist/infra/database/xact-lock.d.ts +17 -0
  285. package/dist/infra/database/xact-lock.js +43 -0
  286. package/dist/infra/events/kernel-events.d.ts +96 -0
  287. package/dist/infra/events/kernel-events.js +65 -0
  288. package/dist/infra/health/health.controller.d.ts +26 -0
  289. package/dist/infra/health/health.controller.js +104 -0
  290. package/dist/infra/health/health.module.d.ts +9 -0
  291. package/dist/infra/health/health.module.js +24 -0
  292. package/dist/infra/health/health.options.d.ts +10 -0
  293. package/dist/infra/health/health.options.js +15 -0
  294. package/dist/infra/health/shutdown-state.d.ts +6 -0
  295. package/dist/infra/health/shutdown-state.js +2 -0
  296. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  297. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  300. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  301. package/dist/infra/lifecycle/process-guards.js +86 -0
  302. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  303. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  304. package/dist/infra/lock/key-template.d.ts +13 -0
  305. package/dist/infra/lock/key-template.js +46 -0
  306. package/dist/infra/lock/lock.module.d.ts +3 -0
  307. package/dist/infra/lock/lock.module.js +16 -0
  308. package/dist/infra/lock/lock.service.d.ts +120 -0
  309. package/dist/infra/lock/lock.service.js +343 -0
  310. package/dist/infra/lock/shared-lease.d.ts +44 -0
  311. package/dist/infra/lock/shared-lease.js +121 -0
  312. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  313. package/dist/infra/lock/with-lock.decorator.js +49 -0
  314. package/dist/infra/logging/logging.module.d.ts +16 -0
  315. package/dist/infra/logging/logging.module.js +34 -0
  316. package/dist/infra/queue/configured-processor.d.ts +18 -0
  317. package/dist/infra/queue/configured-processor.js +23 -0
  318. package/dist/infra/queue/job-failure.d.ts +18 -0
  319. package/dist/infra/queue/job-failure.js +26 -0
  320. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  321. package/dist/infra/queue/queue-shutdown.js +81 -0
  322. package/dist/infra/queue/queue.module.d.ts +16 -0
  323. package/dist/infra/queue/queue.module.js +61 -0
  324. package/dist/infra/queue/redis-connection.d.ts +7 -0
  325. package/dist/infra/queue/redis-connection.js +18 -0
  326. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  327. package/dist/infra/queue/retired-schedulers.js +9 -0
  328. package/dist/infra/queue/run-job.d.ts +16 -0
  329. package/dist/infra/queue/run-job.js +19 -0
  330. package/dist/infra/redis/redis.module.d.ts +24 -0
  331. package/dist/infra/redis/redis.module.js +87 -0
  332. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  333. package/dist/infra/schedule/cron-tick.js +25 -0
  334. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  335. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  336. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  337. package/dist/infra/schedule/locked-interval.js +190 -0
  338. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  339. package/dist/infra/schedule/locked-tick.js +137 -0
  340. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  341. package/dist/infra/schedule/schedule.module.js +27 -0
  342. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  343. package/dist/infra/schedule/scheduled-runs.js +163 -0
  344. package/dist/infra/swagger/swagger.d.ts +16 -0
  345. package/dist/infra/swagger/swagger.js +31 -0
  346. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  347. package/dist/infra/throttler/credential-throttler.js +77 -0
  348. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  349. package/dist/infra/throttler/named-throttlers.js +119 -0
  350. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  351. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  352. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  353. package/dist/infra/throttler/throttler.guard.js +68 -0
  354. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  355. package/dist/infra/throttler/throttler.module.js +53 -0
  356. package/dist/infra/tokens.d.ts +15 -0
  357. package/dist/infra/tokens.js +15 -0
  358. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  359. package/dist/infra/validation/create-zod-dto.js +35 -0
  360. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  361. package/dist/infra/validation/parse-with-zod.js +12 -0
  362. package/dist/infra/validation/validation.module.d.ts +3 -0
  363. package/dist/infra/validation/validation.module.js +16 -0
  364. package/dist/infra/validation/zod-params.d.ts +7 -0
  365. package/dist/infra/validation/zod-params.js +42 -0
  366. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  367. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  368. package/dist/kernel.d.ts +9 -244
  369. package/dist/kernel.js +8 -1305
  370. package/dist/kernel.module.d.ts +17 -0
  371. package/dist/kernel.module.js +136 -0
  372. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  373. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  374. package/dist/lifecycle/tokens.d.ts +3 -0
  375. package/dist/lifecycle/tokens.js +3 -0
  376. package/dist/log-context.d.ts +2 -0
  377. package/dist/log-context.js +4 -0
  378. package/dist/models/models.module.d.ts +3 -0
  379. package/dist/models/models.module.js +24 -0
  380. package/dist/models/prices.d.ts +8 -2
  381. package/dist/models/prices.js +65 -37
  382. package/dist/models/purposes.controller.d.ts +1 -1
  383. package/dist/models/purposes.controller.js +5 -6
  384. package/dist/models/purposes.d.ts +35 -13
  385. package/dist/models/purposes.js +101 -51
  386. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  387. package/dist/orgs/directory-sync.controller.js +2 -2
  388. package/dist/orgs/directory-sync.d.ts +61 -31
  389. package/dist/orgs/directory-sync.js +212 -125
  390. package/dist/orgs/invitations.controller.d.ts +8 -8
  391. package/dist/orgs/invitations.controller.js +27 -26
  392. package/dist/orgs/invitations.service.d.ts +12 -9
  393. package/dist/orgs/invitations.service.js +130 -92
  394. package/dist/orgs/job-ids.d.ts +8 -0
  395. package/dist/orgs/job-ids.js +8 -0
  396. package/dist/orgs/members.service.d.ts +19 -12
  397. package/dist/orgs/members.service.js +161 -117
  398. package/dist/orgs/offboarding.d.ts +54 -57
  399. package/dist/orgs/offboarding.js +161 -71
  400. package/dist/orgs/org-lock.d.ts +28 -19
  401. package/dist/orgs/org-lock.js +81 -35
  402. package/dist/orgs/org.guard.d.ts +1 -1
  403. package/dist/orgs/org.guard.js +2 -2
  404. package/dist/orgs/orgs.controller.d.ts +13 -13
  405. package/dist/orgs/orgs.controller.js +29 -17
  406. package/dist/orgs/orgs.module.d.ts +6 -0
  407. package/dist/orgs/orgs.module.js +68 -0
  408. package/dist/orgs/orgs.service.d.ts +30 -19
  409. package/dist/orgs/orgs.service.js +139 -86
  410. package/dist/orgs/settings.controller.d.ts +1 -1
  411. package/dist/orgs/settings.controller.js +8 -6
  412. package/dist/orgs/settings.service.d.ts +14 -8
  413. package/dist/orgs/settings.service.js +75 -46
  414. package/dist/overrides.d.ts +56 -0
  415. package/dist/overrides.js +30 -0
  416. package/dist/roles/gateway-role.d.ts +43 -0
  417. package/dist/roles/gateway-role.js +98 -0
  418. package/dist/roles/gateway.module.d.ts +8 -0
  419. package/dist/roles/gateway.module.js +28 -0
  420. package/dist/roles/worker-role.d.ts +63 -0
  421. package/dist/roles/worker-role.js +144 -0
  422. package/dist/roles/worker.module.d.ts +14 -0
  423. package/dist/roles/worker.module.js +90 -0
  424. package/dist/runtime/abort.js +19 -2
  425. package/dist/runtime/checkpointer.d.ts +8 -3
  426. package/dist/runtime/checkpointer.js +87 -55
  427. package/dist/runtime/conversation-lock.d.ts +20 -11
  428. package/dist/runtime/conversation-lock.js +62 -72
  429. package/dist/runtime/hook-calls.d.ts +3 -3
  430. package/dist/runtime/hook-calls.js +1 -6
  431. package/dist/runtime/job-ids.d.ts +10 -0
  432. package/dist/runtime/job-ids.js +10 -0
  433. package/dist/runtime/langgraph-loop.js +1 -1
  434. package/dist/runtime/loop.d.ts +7 -0
  435. package/dist/runtime/loop.js +14 -0
  436. package/dist/runtime/maintenance-queue.d.ts +10 -0
  437. package/dist/runtime/maintenance-queue.js +10 -0
  438. package/dist/runtime/maintenance.d.ts +45 -74
  439. package/dist/runtime/maintenance.js +139 -137
  440. package/dist/runtime/model-call.d.ts +7 -4
  441. package/dist/runtime/model-call.js +24 -57
  442. package/dist/runtime/providers.d.ts +17 -6
  443. package/dist/runtime/providers.js +66 -25
  444. package/dist/runtime/quota.d.ts +17 -3
  445. package/dist/runtime/quota.js +27 -2
  446. package/dist/runtime/retired-schedulers.d.ts +7 -0
  447. package/dist/runtime/retired-schedulers.js +31 -0
  448. package/dist/runtime/run-control.d.ts +33 -0
  449. package/dist/runtime/run-control.js +77 -0
  450. package/dist/runtime/run-finish.d.ts +26 -17
  451. package/dist/runtime/run-finish.js +98 -51
  452. package/dist/runtime/run-jobs.d.ts +48 -0
  453. package/dist/runtime/run-jobs.js +95 -0
  454. package/dist/runtime/run-processors.d.ts +60 -0
  455. package/dist/runtime/run-processors.js +185 -0
  456. package/dist/runtime/run-queue.d.ts +32 -57
  457. package/dist/runtime/run-queue.js +291 -295
  458. package/dist/runtime/run-steps.d.ts +39 -0
  459. package/dist/runtime/run-steps.js +96 -0
  460. package/dist/runtime/run-worker.d.ts +121 -75
  461. package/dist/runtime/run-worker.js +340 -226
  462. package/dist/runtime/runtime.module.d.ts +10 -0
  463. package/dist/runtime/runtime.module.js +112 -0
  464. package/dist/runtime/step-log.d.ts +40 -0
  465. package/dist/runtime/step-log.js +94 -0
  466. package/dist/runtime/stream.controller.d.ts +5 -8
  467. package/dist/runtime/stream.controller.js +14 -12
  468. package/dist/runtime/stream.d.ts +24 -6
  469. package/dist/runtime/stream.js +78 -7
  470. package/dist/runtime/subagents/child.d.ts +3 -44
  471. package/dist/runtime/subagents/child.js +0 -79
  472. package/dist/runtime/subagents/definition.d.ts +4 -4
  473. package/dist/runtime/subagents/definition.js +2 -2
  474. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  475. package/dist/runtime/subagents/dispatch.js +135 -140
  476. package/dist/runtime/subagents/limits.d.ts +9 -4
  477. package/dist/runtime/subagents/limits.js +4 -2
  478. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  479. package/dist/runtime/subagents/org-agents.js +1 -1
  480. package/dist/runtime/subagents/progress.d.ts +2 -2
  481. package/dist/runtime/subagents/roster.d.ts +3 -3
  482. package/dist/runtime/subagents/roster.js +1 -1
  483. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  484. package/dist/runtime/subagents/skill-fork.js +16 -5
  485. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  486. package/dist/runtime/subagents/subagents.service.js +101 -0
  487. package/dist/runtime/usage-report.d.ts +94 -52
  488. package/dist/runtime/usage-report.js +200 -100
  489. package/dist/runtime/waits.d.ts +125 -57
  490. package/dist/runtime/waits.js +431 -208
  491. package/dist/sandbox/job-ids.d.ts +10 -0
  492. package/dist/sandbox/job-ids.js +10 -0
  493. package/dist/sandbox/jobs.d.ts +41 -0
  494. package/dist/sandbox/jobs.js +113 -0
  495. package/dist/sandbox/leases.d.ts +39 -31
  496. package/dist/sandbox/leases.js +117 -257
  497. package/dist/sandbox/providers.d.ts +19 -0
  498. package/dist/sandbox/providers.js +38 -0
  499. package/dist/sandbox/sandbox.module.d.ts +8 -0
  500. package/dist/sandbox/sandbox.module.js +30 -0
  501. package/dist/sandbox/sandbox.service.d.ts +24 -29
  502. package/dist/sandbox/sandbox.service.js +106 -75
  503. package/dist/skills/catalog.d.ts +33 -20
  504. package/dist/skills/catalog.js +96 -53
  505. package/dist/skills/changes.controller.d.ts +4 -4
  506. package/dist/skills/changes.controller.js +15 -9
  507. package/dist/skills/changes.service.d.ts +28 -18
  508. package/dist/skills/changes.service.js +421 -364
  509. package/dist/skills/invocable.controller.d.ts +1 -1
  510. package/dist/skills/invocable.controller.js +8 -5
  511. package/dist/skills/invoke.d.ts +16 -15
  512. package/dist/skills/invoke.js +48 -17
  513. package/dist/skills/skills.controller.d.ts +1 -1
  514. package/dist/skills/skills.controller.js +11 -6
  515. package/dist/skills/skills.module.d.ts +6 -0
  516. package/dist/skills/skills.module.js +30 -0
  517. package/dist/skills/skills.service.d.ts +47 -30
  518. package/dist/skills/skills.service.js +221 -158
  519. package/dist/storage/job-ids.d.ts +6 -0
  520. package/dist/storage/job-ids.js +6 -0
  521. package/dist/storage/purge.d.ts +22 -7
  522. package/dist/storage/purge.js +55 -3
  523. package/dist/storage/storage.module.d.ts +6 -0
  524. package/dist/storage/storage.module.js +23 -0
  525. package/dist/storage/storage.service.d.ts +18 -4
  526. package/dist/storage/storage.service.js +44 -3
  527. package/dist/tools/approvals.controller.d.ts +1 -1
  528. package/dist/tools/approvals.controller.js +12 -8
  529. package/dist/tools/approvals.service.d.ts +27 -25
  530. package/dist/tools/approvals.service.js +324 -258
  531. package/dist/tools/breaker.d.ts +2 -2
  532. package/dist/tools/breaker.js +21 -3
  533. package/dist/tools/builtins/ask-user.d.ts +2 -2
  534. package/dist/tools/builtins/ask-user.js +1 -1
  535. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  536. package/dist/tools/builtins/builtin-tools.js +80 -0
  537. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  538. package/dist/tools/builtins/read-tool-output.js +1 -1
  539. package/dist/tools/builtins/sandbox/bash.js +2 -2
  540. package/dist/tools/builtins/sandbox/common.d.ts +2 -1
  541. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  542. package/dist/tools/builtins/sandbox/edit.js +1 -1
  543. package/dist/tools/builtins/sandbox/glob.js +2 -2
  544. package/dist/tools/builtins/sandbox/grep.js +2 -2
  545. package/dist/tools/builtins/sandbox/read.js +1 -1
  546. package/dist/tools/builtins/sandbox/write.js +1 -1
  547. package/dist/tools/builtins/skill-load.d.ts +3 -3
  548. package/dist/tools/builtins/skill-load.js +1 -1
  549. package/dist/tools/canonical-json.d.ts +6 -0
  550. package/dist/tools/canonical-json.js +16 -0
  551. package/dist/tools/connector-content.controller.d.ts +1 -1
  552. package/dist/tools/connector-content.controller.js +11 -6
  553. package/dist/tools/connector-content.d.ts +12 -15
  554. package/dist/tools/connector-content.js +53 -18
  555. package/dist/tools/connectors.controller.d.ts +1 -1
  556. package/dist/tools/connectors.controller.js +21 -10
  557. package/dist/tools/connectors.service.d.ts +31 -13
  558. package/dist/tools/connectors.service.js +434 -344
  559. package/dist/tools/credentials.d.ts +17 -20
  560. package/dist/tools/credentials.js +55 -34
  561. package/dist/tools/drift.d.ts +29 -41
  562. package/dist/tools/drift.js +111 -79
  563. package/dist/tools/info.d.ts +12 -9
  564. package/dist/tools/info.js +33 -7
  565. package/dist/tools/job-ids.d.ts +13 -0
  566. package/dist/tools/job-ids.js +15 -0
  567. package/dist/tools/jobs.d.ts +24 -0
  568. package/dist/tools/jobs.js +69 -0
  569. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  570. package/dist/tools/oauth/flow-paths.js +38 -0
  571. package/dist/tools/oauth/flow.d.ts +30 -30
  572. package/dist/tools/oauth/flow.js +109 -81
  573. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  574. package/dist/tools/oauth/oauth.controller.js +12 -9
  575. package/dist/tools/oauth/tokens.d.ts +11 -3
  576. package/dist/tools/oauth/tokens.js +15 -14
  577. package/dist/tools/outputs.d.ts +13 -4
  578. package/dist/tools/outputs.js +47 -3
  579. package/dist/tools/pipeline.d.ts +62 -46
  580. package/dist/tools/pipeline.js +145 -64
  581. package/dist/tools/policy.d.ts +2 -2
  582. package/dist/tools/questions.controller.d.ts +1 -1
  583. package/dist/tools/questions.controller.js +8 -5
  584. package/dist/tools/questions.service.d.ts +25 -24
  585. package/dist/tools/questions.service.js +201 -142
  586. package/dist/tools/registry.d.ts +30 -20
  587. package/dist/tools/registry.js +73 -37
  588. package/dist/tools/specs.d.ts +5 -4
  589. package/dist/tools/specs.js +3 -1
  590. package/dist/tools/tools.module.d.ts +10 -0
  591. package/dist/tools/tools.module.js +91 -0
  592. package/dist/ui/call-extension.d.ts +16 -0
  593. package/dist/ui/call-extension.js +38 -0
  594. package/dist/ui/embed-token.d.ts +9 -5
  595. package/dist/ui/embed-token.js +34 -6
  596. package/dist/ui/ui-stream.d.ts +22 -17
  597. package/dist/ui/ui-stream.js +72 -12
  598. package/dist/ui/ui.module.d.ts +7 -0
  599. package/dist/ui/ui.module.js +28 -0
  600. package/dist/ui/views.controller.d.ts +14 -12
  601. package/dist/ui/views.controller.js +32 -25
  602. package/dist/ui/views.d.ts +9 -57
  603. package/dist/ui/views.js +43 -45
  604. package/package.json +9 -2
  605. package/dist/http/health.controller.d.ts +0 -26
  606. package/dist/http/health.controller.js +0 -79
  607. package/dist/http/tokens.d.ts +0 -131
  608. package/dist/http/tokens.js +0 -131
  609. package/dist/http/zod.pipe.d.ts +0 -8
  610. package/dist/http/zod.pipe.js +0 -14
  611. package/dist/identity/rate-limit.d.ts +0 -55
  612. package/dist/identity/rate-limit.js +0 -121
  613. package/dist/sandbox/lifecycle.d.ts +0 -21
  614. package/dist/sandbox/lifecycle.js +0 -68
  615. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  616. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,8 +1,10 @@
1
1
  import type { LocalizedName } from "@capybara-hq/plugin-sdk";
2
- import { type Transaction } from "kysely";
3
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
3
  import { ApiError } from "../errors.js";
5
- type Trx = Transaction<KernelDatabase>;
4
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
5
+ import { KernelDb } from "../infra/database/kernel-db.js";
6
+ import { TransactionHost } from "../infra/database/transaction-host.js";
7
+ import { OrgLock } from "../orgs/org-lock.js";
6
8
  export type CatalogRequestStage = "org" | "deployment";
7
9
  export type CatalogRequestStatus = "pending" | "approved" | "rejected" | "cancelled";
8
10
  export type CatalogDecision = "approve" | "reject";
@@ -41,13 +43,13 @@ export declare const CATALOG_REQUESTS_LIST_MAX = 200;
41
43
  * installed plugin only): the dependency's own item must still be live and not disabled, and the
42
44
  * approval is judged by `approvedBy`.
43
45
  */
44
- export declare function assertItemInstallable(t: Trx, orgId: string, itemId: string, approvedBy?: string): Promise<void>;
46
+ export declare function assertItemInstallable(t: KernelSchemaDb, orgId: string, itemId: string, approvedBy?: string): Promise<void>;
45
47
  /**
46
48
  * The extensions among `plugins` whose own catalog item (the non-deleted item with the same name) is
47
49
  * disabled (FOR SHARE: exclusive with policy changes). A disabled item is a master switch: no path
48
50
  * (direct enabling, its item, another plugin) can newly enable its extension (Ruling M-5).
49
51
  */
50
- export declare function disabledPluginItems(db: KernelDb | Trx, plugins: readonly string[]): Promise<string[]>;
52
+ export declare function disabledPluginItems(db: KernelSchemaDb, plugins: readonly string[]): Promise<string[]>;
51
53
  /**
52
54
  * Throws `catalog.item_disabled` when a plugin's own catalog item is disabled (the message names
53
55
  * the plugin).
@@ -62,17 +64,17 @@ export declare function pluginItemDisabled(names: readonly string[]): ApiError;
62
64
  * as sources (an enterprise admin deleting an item withdraws its constraint). No source (not
63
65
  * installed through the catalog) -> not bound by catalog policy.
64
66
  */
65
- export declare function assertPluginSourcesInstallable(t: Trx, orgId: string, plugin: string): Promise<void>;
67
+ export declare function assertPluginSourcesInstallable(t: KernelSchemaDb, orgId: string, plugin: string): Promise<void>;
66
68
  /** 审计里带上 PAT(个人令牌发起时)。 */
67
69
  export interface RequestActorOpts {
68
70
  actorTokenId?: string;
69
71
  }
70
72
  /**
71
- * Cancels catalog requests still pending in the caller's transaction (when the item or the org is
72
- * deleted), status `cancelled` (the decider is the actor). Each one audits
73
+ * Cancels catalog requests still pending in the caller's transaction (`db` is its handle; when the
74
+ * item or the org is deleted), status `cancelled` (the decider is the actor). Each one audits
73
75
  * `catalog.request_cancelled` (with the reason). Returns how many were cancelled.
74
76
  */
75
- export declare function cancelPendingRequests(t: Trx, where: {
77
+ export declare function cancelPendingRequests(db: KernelSchemaDb, where: {
76
78
  itemId: string;
77
79
  } | {
78
80
  orgId: string;
@@ -90,8 +92,16 @@ export declare function cancelPendingRequests(t: Trx, where: {
90
92
  * org row lock, in order). No in-process state.
91
93
  */
92
94
  export declare class CatalogRequestsService {
93
- private readonly db;
94
- constructor(db: KernelDb);
95
+ private readonly kdb;
96
+ /** The org row and enterprise admin locks: both join the caller's transaction. */
97
+ private readonly orgLock;
98
+ private readonly adminLock;
99
+ readonly txHost: TransactionHost;
100
+ constructor(kdb: KernelDb,
101
+ /** The org row and enterprise admin locks: both join the caller's transaction. */
102
+ orgLock: OrgLock, adminLock: EnterpriseAdminLock, txHost: TransactionHost);
103
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
104
+ private get db();
95
105
  /**
96
106
  * A member request (`catalog.request`, re-checked inside the org row lock). Item missing /
97
107
  * deleted -> `catalog.item_not_found`; disabled -> org admins get `catalog.item_disabled`,
@@ -105,6 +115,7 @@ export declare class CatalogRequestsService {
105
115
  request: CatalogRequestView;
106
116
  created: boolean;
107
117
  }>;
118
+ private writeRequest;
108
119
  private pendingRow;
109
120
  /**
110
121
  * An org admin installing a needs_approval item without a grant: in the caller's transaction (the
@@ -112,7 +123,7 @@ export declare class CatalogRequestsService {
112
123
  * existing pending request is moved to deployment (a member request goes to the enterprise admins
113
124
  * with it). Returns the request id. Audits `catalog.requested`.
114
125
  */
115
- requestDeployment(t: Trx, orgId: string, actor: string, item: {
126
+ requestDeployment(orgId: string, actor: string, item: {
116
127
  id: string;
117
128
  name: string;
118
129
  }, version: string | null, opts?: RequestActorOpts): Promise<string>;
@@ -121,7 +132,7 @@ export declare class CatalogRequestsService {
121
132
  * 申请——条目之后改成 allow 再装的就不会一直挂着)标为 approved(安装者即决定人),收件箱与企业管理员列表随之清空。
122
133
  * 在调用方事务里执行。
123
134
  */
124
- resolveByInstall(t: Trx, orgId: string, itemId: string, actor: string, opts?: RequestActorOpts): Promise<void>;
135
+ resolveByInstall(orgId: string, itemId: string, actor: string, opts?: RequestActorOpts): Promise<void>;
125
136
  /**
126
137
  * An org admin decides a member request (`catalog.decide`, re-checked inside the org row lock;
127
138
  * the request row FOR UPDATE). Not this org's request -> `catalog.request_not_found`; already
@@ -130,6 +141,7 @@ export declare class CatalogRequestsService {
130
141
  * deployment (still pending); otherwise approved. Audits `catalog.request_decided`.
131
142
  */
132
143
  decideOrg(orgId: string, actor: string, requestId: string, decision: CatalogDecision, opts?: RequestActorOpts): Promise<CatalogRequestView>;
144
+ private writeDecideOrg;
133
145
  /**
134
146
  * An enterprise admin decides a stage deployment request (re-checked inside the enterprise admin
135
147
  * lock; the request row FOR UPDATE). Missing or still at the org stage ->
@@ -139,6 +151,7 @@ export declare class CatalogRequestsService {
139
151
  * `catalog.request_decided` (with orgId).
140
152
  */
141
153
  decideDeployment(actor: string, requestId: string, decision: CatalogDecision, opts?: RequestActorOpts): Promise<CatalogRequestView>;
154
+ private writeDecideDeployment;
142
155
  /** 企业管理员的申请列表(stage deployment;`status` 缺省 pending),新的在前。 */
143
156
  listDeployment(q?: {
144
157
  status?: CatalogRequestStatus;
@@ -156,7 +169,6 @@ export declare class CatalogRequestsService {
156
169
  stage: CatalogRequestStage;
157
170
  status: string;
158
171
  }>>;
159
- view(db: KernelDb | Trx, id: string): Promise<CatalogRequestView>;
172
+ view(id: string): Promise<CatalogRequestView>;
160
173
  private baseQuery;
161
174
  }
162
- export {};
@@ -1,9 +1,22 @@
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 { randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import { ApiError } from "../errors.js";
4
14
  import { audit } from "../identity/audit.js";
5
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
6
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
15
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
16
+ import { KernelDb } from "../infra/database/kernel-db.js";
17
+ import { TransactionHost } from "../infra/database/transaction-host.js";
18
+ import { Transactional } from "../infra/database/transactional.decorator.js";
19
+ import { OrgLock } from "../orgs/org-lock.js";
7
20
  import { roleAtLeast } from "../orgs/roles.js";
8
21
  /** 申请列表一次最多返回的条数。 */
9
22
  export const CATALOG_REQUESTS_LIST_MAX = 200;
@@ -107,12 +120,12 @@ export async function assertPluginSourcesInstallable(t, orgId, plugin) {
107
120
  }
108
121
  }
109
122
  /**
110
- * Cancels catalog requests still pending in the caller's transaction (when the item or the org is
111
- * deleted), status `cancelled` (the decider is the actor). Each one audits
123
+ * Cancels catalog requests still pending in the caller's transaction (`db` is its handle; when the
124
+ * item or the org is deleted), status `cancelled` (the decider is the actor). Each one audits
112
125
  * `catalog.request_cancelled` (with the reason). Returns how many were cancelled.
113
126
  */
114
- export async function cancelPendingRequests(t, where, actor, reason, opts = {}) {
115
- let q = t
127
+ export async function cancelPendingRequests(db, where, actor, reason, opts = {}) {
128
+ let q = db
116
129
  .updateTable("catalog_requests")
117
130
  .set({ status: "cancelled", decided_by: actor, decided_at: sql `now()` })
118
131
  .where("status", "=", "pending");
@@ -120,7 +133,7 @@ export async function cancelPendingRequests(t, where, actor, reason, opts = {})
120
133
  "itemId" in where ? q.where("item_id", "=", where.itemId) : q.where("org_id", "=", where.orgId);
121
134
  const rows = await q.returning(["id", "org_id", "item_id", "stage"]).execute();
122
135
  for (const r of rows) {
123
- await audit(t, {
136
+ await audit(db, {
124
137
  actorAccountId: actor,
125
138
  ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
126
139
  orgId: r.org_id,
@@ -143,10 +156,22 @@ export async function cancelPendingRequests(t, where, actor, reason, opts = {})
143
156
  * One pending request per org and item (partial unique index; org-side writes all run inside the
144
157
  * org row lock, in order). No in-process state.
145
158
  */
146
- export class CatalogRequestsService {
147
- db;
148
- constructor(db) {
149
- this.db = db;
159
+ let CatalogRequestsService = class CatalogRequestsService {
160
+ kdb;
161
+ orgLock;
162
+ adminLock;
163
+ txHost;
164
+ constructor(kdb,
165
+ /** The org row and enterprise admin locks: both join the caller's transaction. */
166
+ orgLock, adminLock, txHost) {
167
+ this.kdb = kdb;
168
+ this.orgLock = orgLock;
169
+ this.adminLock = adminLock;
170
+ this.txHost = txHost;
171
+ }
172
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
173
+ get db() {
174
+ return this.kdb.db;
150
175
  }
151
176
  /**
152
177
  * A member request (`catalog.request`, re-checked inside the org row lock). Item missing /
@@ -155,45 +180,47 @@ export class CatalogRequestsService {
155
180
  * request is returned as is (`created: false`), no new one. Audits `catalog.requested`.
156
181
  */
157
182
  async request(orgId, actor, itemId, input, opts = {}) {
158
- const r = await this.db.transaction().execute(async (t) => {
159
- const { role } = await lockOrgAndAuthorize(t, orgId, actor, "catalog.request");
160
- const item = await lockItem(t, itemId);
161
- if (!item || item.deleted_at !== null)
162
- throw itemNotFound();
163
- // 成员看不到 disabled 的条目(列表、详情、图标一致):同样答 not found,不暴露条目存在
164
- if (item.policy === "disabled") {
165
- throw roleAtLeast(role, "admin") ? itemDisabled() : itemNotFound();
166
- }
167
- const existing = await this.pendingRow(t, orgId, itemId);
168
- if (existing)
169
- return { id: existing.id, created: false };
170
- const id = randomUUID();
171
- await t
172
- .insertInto("catalog_requests")
173
- .values({
174
- id,
175
- org_id: orgId,
176
- item_id: itemId,
177
- version: input.version ?? null,
178
- stage: "org",
179
- requested_by: actor,
180
- note: input.note ?? "",
181
- })
182
- .execute();
183
- await audit(t, {
184
- actorAccountId: actor,
185
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
186
- orgId,
187
- action: "catalog.requested",
188
- target: id,
189
- detail: { itemId, name: item.name, stage: "org" },
190
- });
191
- return { id, created: true };
183
+ const r = await this.writeRequest(orgId, actor, itemId, input, opts);
184
+ return { request: await this.view(r.id), created: r.created };
185
+ }
186
+ async writeRequest(orgId, actor, itemId, input, opts) {
187
+ const t = this.db;
188
+ const { role } = await this.orgLock.lockAndAuthorize(orgId, actor, "catalog.request");
189
+ const item = await lockItem(t, itemId);
190
+ if (!item || item.deleted_at !== null)
191
+ throw itemNotFound();
192
+ // 成员看不到 disabled 的条目(列表、详情、图标一致):同样答 not found,不暴露条目存在
193
+ if (item.policy === "disabled") {
194
+ throw roleAtLeast(role, "admin") ? itemDisabled() : itemNotFound();
195
+ }
196
+ const existing = await this.pendingRow(orgId, itemId);
197
+ if (existing)
198
+ return { id: existing.id, created: false };
199
+ const id = randomUUID();
200
+ await t
201
+ .insertInto("catalog_requests")
202
+ .values({
203
+ id,
204
+ org_id: orgId,
205
+ item_id: itemId,
206
+ version: input.version ?? null,
207
+ stage: "org",
208
+ requested_by: actor,
209
+ note: input.note ?? "",
210
+ })
211
+ .execute();
212
+ await audit(t, {
213
+ actorAccountId: actor,
214
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
215
+ orgId,
216
+ action: "catalog.requested",
217
+ target: id,
218
+ detail: { itemId, name: item.name, stage: "org" },
192
219
  });
193
- return { request: await this.view(this.db, r.id), created: r.created };
220
+ return { id, created: true };
194
221
  }
195
- pendingRow(t, orgId, itemId) {
196
- return t
222
+ pendingRow(orgId, itemId) {
223
+ return this.db
197
224
  .selectFrom("catalog_requests")
198
225
  .select(["id", "stage"])
199
226
  .where("org_id", "=", orgId)
@@ -207,8 +234,9 @@ export class CatalogRequestsService {
207
234
  * existing pending request is moved to deployment (a member request goes to the enterprise admins
208
235
  * with it). Returns the request id. Audits `catalog.requested`.
209
236
  */
210
- async requestDeployment(t, orgId, actor, item, version, opts = {}) {
211
- const existing = await this.pendingRow(t, orgId, item.id);
237
+ async requestDeployment(orgId, actor, item, version, opts = {}) {
238
+ const t = this.db;
239
+ const existing = await this.pendingRow(orgId, item.id);
212
240
  if (existing) {
213
241
  if (existing.stage === "org") {
214
242
  await t
@@ -254,7 +282,8 @@ export class CatalogRequestsService {
254
282
  * 申请——条目之后改成 allow 再装的就不会一直挂着)标为 approved(安装者即决定人),收件箱与企业管理员列表随之清空。
255
283
  * 在调用方事务里执行。
256
284
  */
257
- async resolveByInstall(t, orgId, itemId, actor, opts = {}) {
285
+ async resolveByInstall(orgId, itemId, actor, opts = {}) {
286
+ const t = this.db;
258
287
  const rows = await t
259
288
  .updateTable("catalog_requests")
260
289
  .set({ status: "approved", decided_by: actor, decided_at: sql `now()` })
@@ -284,50 +313,52 @@ export class CatalogRequestsService {
284
313
  async decideOrg(orgId, actor, requestId, decision, opts = {}) {
285
314
  if (!UUID_RE.test(requestId))
286
315
  throw requestNotFound();
287
- await this.db.transaction().execute(async (t) => {
288
- await lockOrgAndAuthorize(t, orgId, actor, "catalog.decide");
289
- const row = await t
290
- .selectFrom("catalog_requests")
291
- .select(["id", "item_id", "stage", "status"])
292
- .where("id", "=", requestId)
293
- .where("org_id", "=", orgId)
294
- .forUpdate()
295
- .executeTakeFirst();
296
- if (!row)
297
- throw requestNotFound();
298
- if (row.status !== "pending" || row.stage !== "org") {
299
- throw new ApiError("catalog.request_decided", row.status === "pending"
300
- ? "This request is waiting for the enterprise admin"
301
- : "This request has already been decided");
302
- }
303
- let escalated = false;
304
- if (decision === "approve") {
305
- const item = await lockItem(t, row.item_id);
306
- if (!item || item.deleted_at !== null || item.policy === "disabled")
307
- throw itemDisabled();
308
- escalated = item.policy === "needs_approval" && !(await hasGrant(t, orgId, row.item_id));
309
- }
310
- await t
311
- .updateTable("catalog_requests")
312
- .set(escalated
313
- ? { stage: "deployment", org_decided_by: actor, org_decided_at: sql `now()` }
314
- : {
315
- status: decision === "approve" ? "approved" : "rejected",
316
- decided_by: actor,
317
- decided_at: sql `now()`,
318
- })
319
- .where("id", "=", requestId)
320
- .execute();
321
- await audit(t, {
322
- actorAccountId: actor,
323
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
324
- orgId,
325
- action: "catalog.request_decided",
326
- target: requestId,
327
- detail: { itemId: row.item_id, decision, stage: "org", escalated },
328
- });
316
+ await this.writeDecideOrg(orgId, actor, requestId, decision, opts);
317
+ return this.view(requestId);
318
+ }
319
+ async writeDecideOrg(orgId, actor, requestId, decision, opts) {
320
+ const t = this.db;
321
+ await this.orgLock.lockAndAuthorize(orgId, actor, "catalog.decide");
322
+ const row = await t
323
+ .selectFrom("catalog_requests")
324
+ .select(["id", "item_id", "stage", "status"])
325
+ .where("id", "=", requestId)
326
+ .where("org_id", "=", orgId)
327
+ .forUpdate()
328
+ .executeTakeFirst();
329
+ if (!row)
330
+ throw requestNotFound();
331
+ if (row.status !== "pending" || row.stage !== "org") {
332
+ throw new ApiError("catalog.request_decided", row.status === "pending"
333
+ ? "This request is waiting for the enterprise admin"
334
+ : "This request has already been decided");
335
+ }
336
+ let escalated = false;
337
+ if (decision === "approve") {
338
+ const item = await lockItem(t, row.item_id);
339
+ if (!item || item.deleted_at !== null || item.policy === "disabled")
340
+ throw itemDisabled();
341
+ escalated = item.policy === "needs_approval" && !(await hasGrant(t, orgId, row.item_id));
342
+ }
343
+ await t
344
+ .updateTable("catalog_requests")
345
+ .set(escalated
346
+ ? { stage: "deployment", org_decided_by: actor, org_decided_at: sql `now()` }
347
+ : {
348
+ status: decision === "approve" ? "approved" : "rejected",
349
+ decided_by: actor,
350
+ decided_at: sql `now()`,
351
+ })
352
+ .where("id", "=", requestId)
353
+ .execute();
354
+ await audit(t, {
355
+ actorAccountId: actor,
356
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
357
+ orgId,
358
+ action: "catalog.request_decided",
359
+ target: requestId,
360
+ detail: { itemId: row.item_id, decision, stage: "org", escalated },
329
361
  });
330
- return this.view(this.db, requestId);
331
362
  }
332
363
  /**
333
364
  * An enterprise admin decides a stage deployment request (re-checked inside the enterprise admin
@@ -340,59 +371,61 @@ export class CatalogRequestsService {
340
371
  async decideDeployment(actor, requestId, decision, opts = {}) {
341
372
  if (!UUID_RE.test(requestId))
342
373
  throw requestNotFound();
343
- await this.db.transaction().execute(async (t) => {
344
- await lockEnterpriseAdminsAndAuthorize(t, actor);
345
- const row = await t
346
- .selectFrom("catalog_requests")
347
- .select(["id", "org_id", "item_id", "stage", "status"])
348
- .where("id", "=", requestId)
349
- .forUpdate()
374
+ await this.writeDecideDeployment(actor, requestId, decision, opts);
375
+ return this.view(requestId);
376
+ }
377
+ async writeDecideDeployment(actor, requestId, decision, opts) {
378
+ const t = this.db;
379
+ await this.adminLock.lockAndAuthorize(actor);
380
+ const row = await t
381
+ .selectFrom("catalog_requests")
382
+ .select(["id", "org_id", "item_id", "stage", "status"])
383
+ .where("id", "=", requestId)
384
+ .forUpdate()
385
+ .executeTakeFirst();
386
+ if (row?.stage !== "deployment")
387
+ throw requestNotFound();
388
+ if (row.status !== "pending") {
389
+ throw new ApiError("catalog.request_decided", "This request has already been decided");
390
+ }
391
+ if (decision === "approve") {
392
+ const item = await lockItem(t, row.item_id);
393
+ if (!item || item.deleted_at !== null || item.policy === "disabled")
394
+ throw itemDisabled();
395
+ const org = await t
396
+ .selectFrom("orgs")
397
+ .select("deleted_at")
398
+ .where("id", "=", row.org_id)
350
399
  .executeTakeFirst();
351
- if (row?.stage !== "deployment")
400
+ if (!org || org.deleted_at !== null)
352
401
  throw requestNotFound();
353
- if (row.status !== "pending") {
354
- throw new ApiError("catalog.request_decided", "This request has already been decided");
355
- }
356
- if (decision === "approve") {
357
- const item = await lockItem(t, row.item_id);
358
- if (!item || item.deleted_at !== null || item.policy === "disabled")
359
- throw itemDisabled();
360
- const org = await t
361
- .selectFrom("orgs")
362
- .select("deleted_at")
363
- .where("id", "=", row.org_id)
364
- .executeTakeFirst();
365
- if (!org || org.deleted_at !== null)
366
- throw requestNotFound();
367
- await t
368
- .insertInto("catalog_org_grants")
369
- .values({ item_id: row.item_id, org_id: row.org_id, granted_by: actor })
370
- .onConflict((oc) => oc.columns(["item_id", "org_id"]).doNothing())
371
- .execute();
372
- }
373
402
  await t
374
- .updateTable("catalog_requests")
375
- .set({
376
- status: decision === "approve" ? "approved" : "rejected",
377
- decided_by: actor,
378
- decided_at: sql `now()`,
379
- })
380
- .where("id", "=", requestId)
403
+ .insertInto("catalog_org_grants")
404
+ .values({ item_id: row.item_id, org_id: row.org_id, granted_by: actor })
405
+ .onConflict((oc) => oc.columns(["item_id", "org_id"]).doNothing())
381
406
  .execute();
382
- await audit(t, {
383
- actorAccountId: actor,
384
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
385
- orgId: row.org_id,
386
- action: "catalog.request_decided",
387
- target: requestId,
388
- detail: { itemId: row.item_id, decision, stage: "deployment" },
389
- });
407
+ }
408
+ await t
409
+ .updateTable("catalog_requests")
410
+ .set({
411
+ status: decision === "approve" ? "approved" : "rejected",
412
+ decided_by: actor,
413
+ decided_at: sql `now()`,
414
+ })
415
+ .where("id", "=", requestId)
416
+ .execute();
417
+ await audit(t, {
418
+ actorAccountId: actor,
419
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
420
+ orgId: row.org_id,
421
+ action: "catalog.request_decided",
422
+ target: requestId,
423
+ detail: { itemId: row.item_id, decision, stage: "deployment" },
390
424
  });
391
- return this.view(this.db, requestId);
392
425
  }
393
426
  /** 企业管理员的申请列表(stage deployment;`status` 缺省 pending),新的在前。 */
394
427
  async listDeployment(q = {}) {
395
- const rows = await this.baseQuery(this.db)
428
+ const rows = await this.baseQuery()
396
429
  .where("r.stage", "=", "deployment")
397
430
  .where("r.status", "=", q.status ?? "pending")
398
431
  .where("o.deleted_at", "is", null)
@@ -427,7 +460,7 @@ export class CatalogRequestsService {
427
460
  .executeTakeFirst();
428
461
  if (!m || !roleAtLeast(m.role, "admin"))
429
462
  return [];
430
- const rows = await this.baseQuery(this.db)
463
+ const rows = await this.baseQuery()
431
464
  .where("r.org_id", "=", orgId)
432
465
  .where("r.stage", "=", "org")
433
466
  .where("r.status", "=", "pending")
@@ -450,14 +483,14 @@ export class CatalogRequestsService {
450
483
  out.set(r.item_id, { id: r.id, stage: r.stage, status: r.status });
451
484
  return out;
452
485
  }
453
- async view(db, id) {
454
- const row = await this.baseQuery(db).where("r.id", "=", id).executeTakeFirst();
486
+ async view(id) {
487
+ const row = await this.baseQuery().where("r.id", "=", id).executeTakeFirst();
455
488
  if (!row)
456
489
  throw requestNotFound();
457
490
  return toView(row);
458
491
  }
459
- baseQuery(db) {
460
- return db
492
+ baseQuery() {
493
+ return this.db
461
494
  .selectFrom("catalog_requests as r")
462
495
  .innerJoin("catalog_items as i", "i.id", "r.item_id")
463
496
  .innerJoin("orgs as o", "o.id", "r.org_id")
@@ -482,7 +515,30 @@ export class CatalogRequestsService {
482
515
  "r.created_at",
483
516
  ]);
484
517
  }
485
- }
518
+ };
519
+ __decorate([
520
+ Transactional()
521
+ ], CatalogRequestsService.prototype, "writeRequest", null);
522
+ __decorate([
523
+ Transactional({ propagation: "mandatory" })
524
+ ], CatalogRequestsService.prototype, "requestDeployment", null);
525
+ __decorate([
526
+ Transactional({ propagation: "mandatory" })
527
+ ], CatalogRequestsService.prototype, "resolveByInstall", null);
528
+ __decorate([
529
+ Transactional()
530
+ ], CatalogRequestsService.prototype, "writeDecideOrg", null);
531
+ __decorate([
532
+ Transactional()
533
+ ], CatalogRequestsService.prototype, "writeDecideDeployment", null);
534
+ CatalogRequestsService = __decorate([
535
+ Injectable(),
536
+ __param(0, Inject(KernelDb)),
537
+ __param(1, Inject(OrgLock)),
538
+ __param(2, Inject(EnterpriseAdminLock)),
539
+ __param(3, Inject(TransactionHost))
540
+ ], CatalogRequestsService);
541
+ export { CatalogRequestsService };
486
542
  function toView(r) {
487
543
  return {
488
544
  id: r.id,
@@ -1,7 +1,5 @@
1
- import type { Transaction } from "kysely";
2
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
3
- import type { ExtensionHost } from "../extensions/host.js";
4
- type Trx = Transaction<KernelDatabase>;
1
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
+ import type { ExtensionRegistry } from "../extensions/registry.js";
5
3
  /**
6
4
  * Which versions an org may upgrade an installed plugin to (package ecosystem spec §10, Decision
7
5
  * 10, Ruling 8):
@@ -32,7 +30,7 @@ export interface TargetVersion {
32
30
  * this replica loaded from the startup config; undefined when the deployment runs none (then no
33
31
  * upgrade target and no "upgrade pending").
34
32
  */
35
- export declare function deployedExtension(db: KernelDb | Trx, host: Pick<ExtensionHost, "manifests">, name: string): Promise<DeployedExtension | undefined>;
33
+ export declare function deployedExtension(db: KernelSchemaDb, host: Pick<ExtensionRegistry, "manifests">, name: string): Promise<DeployedExtension | undefined>;
36
34
  /** Whether catalog version `v` carries the deployment's extension `d`. */
37
35
  export declare const runsDeployed: (v: TargetVersion, d: DeployedExtension) => boolean;
38
36
  /**
@@ -51,9 +49,8 @@ export interface UpgradeInfo {
51
49
  * The upgrade info of org installs (`itemId`, `name`, `version`), keyed by `itemId@version`; reads
52
50
  * the items' catalog versions and the deployment's extensions in a few queries.
53
51
  */
54
- export declare function upgradeInfo(db: KernelDb, host: Pick<ExtensionHost, "manifests">, installs: readonly {
52
+ export declare function upgradeInfo(db: KernelSchemaDb, host: Pick<ExtensionRegistry, "manifests">, installs: readonly {
55
53
  itemId: string;
56
54
  name: string;
57
55
  version: string;
58
56
  }[]): Promise<Map<string, UpgradeInfo>>;
59
- export {};
@@ -1,9 +1,9 @@
1
1
  import type { ChannelCard, InboundEvent, InboundSender } from "@capybara-hq/plugin-sdk";
2
- import type { KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
3
  import type { ApprovalsService } from "../tools/approvals.service.js";
4
4
  import type { QuestionsService } from "../tools/questions.service.js";
5
5
  import type { ChannelConnectionRow, ChannelConnections } from "./connections.service.js";
6
- import type { ChannelOutboundScheduler } from "./inbound.js";
6
+ import { type ChannelJobs } from "./jobs.js";
7
7
  import { type ChannelLocale, type ChannelPhrase } from "./phrases.js";
8
8
  type CardActionEvent = Extract<InboundEvent, {
9
9
  type: "card_action";
@@ -14,11 +14,13 @@ export type SpeakerResolver = (connectionId: string, row: ChannelConnectionRow,
14
14
  threadAccount: string | null;
15
15
  } | undefined>;
16
16
  export interface ChannelCardActionsDeps {
17
- db: KernelDb;
17
+ /** The context-aware kernel-schema handle (read at call time). */
18
+ readonly db: KernelSchemaDb;
18
19
  connections: Pick<ChannelConnections, "row" | "send">;
19
20
  approvals: Pick<ApprovalsService, "decide">;
20
21
  questions: Pick<QuestionsService, "answer">;
21
- outbound: ChannelOutboundScheduler;
22
+ /** The delivery of the card's conversation. */
23
+ outbound: Pick<ChannelJobs, "enqueue">;
22
24
  resolveSpeaker: SpeakerResolver;
23
25
  }
24
26
  /**
@@ -1,6 +1,6 @@
1
1
  import { ApiError } from "../errors.js";
2
2
  import { readOrgSettings } from "../orgs/settings.service.js";
3
- import { idempotencyKey } from "./outbound.js";
3
+ import { idempotencyKey } from "./jobs.js";
4
4
  import { phrase } from "./phrases.js";
5
5
  import { findThread, threadKeyOf } from "./threads.js";
6
6
  /** 授权 / 状态类失败 → 回给点击者的一句话(不改卡片);其余错误照常抛出。 */