@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
@@ -10,8 +10,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
10
10
  import { applyDecorators, createParamDecorator, Inject, Injectable, SetMetadata, UseGuards, } from "@nestjs/common";
11
11
  import { Reflector } from "@nestjs/core";
12
12
  import { ApiError } from "../errors.js";
13
- import { KERNEL_DB } from "../http/tokens.js";
14
13
  import { AllowService } from "../identity/principal.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
15
  import { can, HUMAN_ONLY } from "./roles.js";
16
16
  export const ORG_ACTION_KEY = "capybara:org:action";
17
17
  /**
@@ -90,6 +90,6 @@ let OrgGuard = class OrgGuard {
90
90
  OrgGuard = __decorate([
91
91
  Injectable(),
92
92
  __param(0, Inject(Reflector)),
93
- __param(1, Inject(KERNEL_DB))
93
+ __param(1, Inject(KernelDb))
94
94
  ], OrgGuard);
95
95
  export { OrgGuard };
@@ -1,22 +1,22 @@
1
1
  import { z } from "zod";
2
- import { type ApiTokenRecord, type ApiTokenService } from "../identity/api-tokens.js";
2
+ import { type ApiTokenRecord, ApiTokenService } from "../identity/api-tokens.js";
3
3
  import { type Principal } from "../identity/principal.js";
4
- import type { Member, MembersService } from "./members.service.js";
4
+ import { type Member, MembersService } from "./members.service.js";
5
5
  import { type OrgContext } from "./org.guard.js";
6
- import type { Org, OrgsService } from "./orgs.service.js";
6
+ import { type Org, OrgsService } from "./orgs.service.js";
7
7
  import { type OrgRole } from "./roles.js";
8
- declare const CreateBody: z.ZodObject<{
8
+ declare const CreateSchema: z.ZodObject<{
9
9
  name: z.ZodString;
10
10
  slug: z.ZodOptional<z.ZodString>;
11
11
  }, z.core.$strip>;
12
- declare const UpdateBody: z.ZodObject<{
12
+ declare const UpdateSchema: z.ZodObject<{
13
13
  name: z.ZodOptional<z.ZodString>;
14
14
  slug: z.ZodOptional<z.ZodString>;
15
15
  }, z.core.$strip>;
16
- declare const TransferBody: z.ZodObject<{
16
+ declare const TransferSchema: z.ZodObject<{
17
17
  toAccountId: z.ZodString;
18
18
  }, z.core.$strip>;
19
- declare const ServiceTokenBody: z.ZodObject<{
19
+ declare const ServiceTokenSchema: z.ZodObject<{
20
20
  name: z.ZodString;
21
21
  role: z.ZodEnum<{
22
22
  admin: "admin";
@@ -25,7 +25,7 @@ declare const ServiceTokenBody: z.ZodObject<{
25
25
  }>;
26
26
  expiresAt: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
27
27
  }, z.core.$strip>;
28
- declare const RoleBody: z.ZodObject<{
28
+ declare const RoleSchema: z.ZodObject<{
29
29
  role: z.ZodEnum<{
30
30
  admin: "admin";
31
31
  guest: "guest";
@@ -39,7 +39,7 @@ export declare class OrgsController {
39
39
  private readonly members;
40
40
  private readonly tokens;
41
41
  constructor(orgs: OrgsService, members: MembersService, tokens: ApiTokenService);
42
- create(principal: Principal, body: z.infer<typeof CreateBody>): Promise<{
42
+ create(principal: Principal, body: z.infer<typeof CreateSchema>): Promise<{
43
43
  org: Org;
44
44
  role: "owner";
45
45
  }>;
@@ -52,21 +52,21 @@ export declare class OrgsController {
52
52
  org: Org;
53
53
  role: OrgRole;
54
54
  }>;
55
- update(principal: Principal, org: OrgContext, body: z.infer<typeof UpdateBody>): Promise<{
55
+ update(principal: Principal, org: OrgContext, body: z.infer<typeof UpdateSchema>): Promise<{
56
56
  org: Org;
57
57
  }>;
58
58
  remove(principal: Principal, org: OrgContext): Promise<void>;
59
- transfer(principal: Principal, org: OrgContext, body: z.infer<typeof TransferBody>): Promise<void>;
59
+ transfer(principal: Principal, org: OrgContext, body: z.infer<typeof TransferSchema>): Promise<void>;
60
60
  leave(principal: Principal, org: OrgContext): Promise<void>;
61
61
  listMembers(org: OrgContext): Promise<{
62
62
  members: Member[];
63
63
  }>;
64
- changeRole(principal: Principal, org: OrgContext, accountId: string, body: z.infer<typeof RoleBody>): Promise<{
64
+ changeRole(principal: Principal, org: OrgContext, accountId: string, body: z.infer<typeof RoleSchema>): Promise<{
65
65
  accountId: string;
66
66
  role: OrgRole;
67
67
  }>;
68
68
  removeMember(principal: Principal, org: OrgContext, accountId: string): Promise<void>;
69
- createServiceToken(principal: Principal, org: OrgContext, body: z.infer<typeof ServiceTokenBody>): Promise<{
69
+ createServiceToken(principal: Principal, org: OrgContext, body: z.infer<typeof ServiceTokenSchema>): Promise<{
70
70
  token: string;
71
71
  record: ApiTokenRecord;
72
72
  }>;
@@ -7,30 +7,42 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
- import { Body, Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post, } from "@nestjs/common";
10
+ import { Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post } from "@nestjs/common";
11
11
  import { z } from "zod";
12
12
  import { ApiError } from "../errors.js";
13
- import { API_TOKENS, MEMBERS, ORGS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
15
- import { FutureIsoDate, } from "../identity/api-tokens.js";
13
+ import { ApiTokenService, FutureIsoDate } from "../identity/api-tokens.js";
16
14
  import { CurrentPrincipal, patTokenId, requireUser, SessionOnly, } from "../identity/principal.js";
15
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
+ import { ZBody } from "../infra/validation/zod-params.js";
17
+ import { MembersService } from "./members.service.js";
17
18
  import { CurrentOrg, OrgAction } from "./org.guard.js";
19
+ import { OrgsService } from "./orgs.service.js";
18
20
  import { ORG_ROLES } from "./roles.js";
19
- const CreateBody = z.object({
21
+ const CreateSchema = z.object({
20
22
  name: z.string().min(1).max(100),
21
23
  slug: z.string().min(1).max(40).optional(),
22
24
  });
23
- const UpdateBody = z.object({
25
+ class OrgCreateBody extends createZodDto(CreateSchema, "OrgCreateBody") {
26
+ }
27
+ const UpdateSchema = z.object({
24
28
  name: z.string().min(1).max(100).optional(),
25
29
  slug: z.string().min(1).max(40).optional(),
26
30
  });
27
- const TransferBody = z.object({ toAccountId: z.string().min(1) });
28
- const ServiceTokenBody = z.object({
31
+ class OrgUpdateBody extends createZodDto(UpdateSchema, "OrgUpdateBody") {
32
+ }
33
+ const TransferSchema = z.object({ toAccountId: z.string().min(1) });
34
+ class OrgTransferBody extends createZodDto(TransferSchema, "OrgTransferBody") {
35
+ }
36
+ const ServiceTokenSchema = z.object({
29
37
  name: z.string().min(1).max(100),
30
38
  role: z.enum(["admin", "member", "guest"]),
31
39
  expiresAt: FutureIsoDate.optional(),
32
40
  });
33
- const RoleBody = z.object({ role: z.enum(ORG_ROLES) });
41
+ class ServiceTokenBody extends createZodDto(ServiceTokenSchema, "ServiceTokenBody") {
42
+ }
43
+ const RoleSchema = z.object({ role: z.enum(ORG_ROLES) });
44
+ class MemberRoleBody extends createZodDto(RoleSchema, "MemberRoleBody") {
45
+ }
34
46
  /** 组织与成员(`/api/v1/orgs`)。组织级路由由 `@OrgAction` + OrgGuard 每请求实时鉴权。 */
35
47
  let OrgsController = class OrgsController {
36
48
  orgs;
@@ -99,7 +111,7 @@ let OrgsController = class OrgsController {
99
111
  __decorate([
100
112
  Post(),
101
113
  __param(0, CurrentPrincipal()),
102
- __param(1, Body(new ZodPipe(CreateBody)))
114
+ __param(1, ZBody(OrgCreateBody))
103
115
  ], OrgsController.prototype, "create", null);
104
116
  __decorate([
105
117
  Get(),
@@ -115,7 +127,7 @@ __decorate([
115
127
  OrgAction("org.update"),
116
128
  __param(0, CurrentPrincipal()),
117
129
  __param(1, CurrentOrg()),
118
- __param(2, Body(new ZodPipe(UpdateBody)))
130
+ __param(2, ZBody(OrgUpdateBody))
119
131
  ], OrgsController.prototype, "update", null);
120
132
  __decorate([
121
133
  Delete(":orgId"),
@@ -130,7 +142,7 @@ __decorate([
130
142
  HttpCode(204),
131
143
  __param(0, CurrentPrincipal()),
132
144
  __param(1, CurrentOrg()),
133
- __param(2, Body(new ZodPipe(TransferBody)))
145
+ __param(2, ZBody(OrgTransferBody))
134
146
  ], OrgsController.prototype, "transfer", null);
135
147
  __decorate([
136
148
  Post(":orgId/leave"),
@@ -150,7 +162,7 @@ __decorate([
150
162
  __param(0, CurrentPrincipal()),
151
163
  __param(1, CurrentOrg()),
152
164
  __param(2, Param("accountId")),
153
- __param(3, Body(new ZodPipe(RoleBody)))
165
+ __param(3, ZBody(MemberRoleBody))
154
166
  ], OrgsController.prototype, "changeRole", null);
155
167
  __decorate([
156
168
  Delete(":orgId/members/:accountId"),
@@ -166,7 +178,7 @@ __decorate([
166
178
  SessionOnly(),
167
179
  __param(0, CurrentPrincipal()),
168
180
  __param(1, CurrentOrg()),
169
- __param(2, Body(new ZodPipe(ServiceTokenBody)))
181
+ __param(2, ZBody(ServiceTokenBody))
170
182
  ], OrgsController.prototype, "createServiceToken", null);
171
183
  __decorate([
172
184
  Get(":orgId/service-tokens"),
@@ -185,8 +197,8 @@ __decorate([
185
197
  ], OrgsController.prototype, "revokeServiceToken", null);
186
198
  OrgsController = __decorate([
187
199
  Controller("api/v1/orgs"),
188
- __param(0, Inject(ORGS)),
189
- __param(1, Inject(MEMBERS)),
190
- __param(2, Inject(API_TOKENS))
200
+ __param(0, Inject(OrgsService)),
201
+ __param(1, Inject(MembersService)),
202
+ __param(2, Inject(ApiTokenService))
191
203
  ], OrgsController);
192
204
  export { OrgsController };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Organizations: orgs, org settings, members, invitations, offboarding (with its sweep cron) and
3
+ * directory sync (the hourly scan cron, one-off syncs on the maintenance queue).
4
+ */
5
+ export declare class OrgsModule {
6
+ }
@@ -0,0 +1,68 @@
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
+ import { Module } from "@nestjs/common";
8
+ import { EventLogModule } from "../conversations/event-log.js";
9
+ import { EvalBudgetModule } from "../evals/budget.js";
10
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
11
+ import { IdentityModule } from "../identity/identity.module.js";
12
+ import { QueueModule } from "../infra/queue/queue.module.js";
13
+ import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
14
+ import { RuntimeModule } from "../runtime/runtime.module.js";
15
+ import { SandboxModule } from "../sandbox/sandbox.module.js";
16
+ import { ToolsModule } from "../tools/tools.module.js";
17
+ import { DirectorySync } from "./directory-sync.js";
18
+ import { InvitationsService } from "./invitations.service.js";
19
+ import { MembersService } from "./members.service.js";
20
+ import { Offboarding } from "./offboarding.js";
21
+ import { OrgLockModule } from "./org-lock.js";
22
+ import { OrgsService } from "./orgs.service.js";
23
+ import { OrgSettingsService } from "./settings.service.js";
24
+ /**
25
+ * Organizations: orgs, org settings, members, invitations, offboarding (with its sweep cron) and
26
+ * directory sync (the hourly scan cron, one-off syncs on the maintenance queue).
27
+ */
28
+ let OrgsModule = class OrgsModule {
29
+ };
30
+ OrgsModule = __decorate([
31
+ Module({
32
+ imports: [
33
+ IdentityModule,
34
+ // offboarding publishes the events it cancelled
35
+ EventLogModule,
36
+ OrgLockModule,
37
+ ExtensionsModule,
38
+ // offboarding clears credentials and cancels approvals and questions
39
+ ToolsModule,
40
+ // offboarding stops the member's runs
41
+ RuntimeModule,
42
+ // offboarding enqueues the destruction of the member's sandboxes
43
+ SandboxModule,
44
+ // cancels the deleted org's eval runs
45
+ EvalBudgetModule,
46
+ // the producer side of directory-sync jobs (the maintenance processor consumes them)
47
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
48
+ ],
49
+ providers: [
50
+ OrgsService,
51
+ OrgSettingsService,
52
+ MembersService,
53
+ InvitationsService,
54
+ Offboarding,
55
+ DirectorySync,
56
+ ],
57
+ exports: [
58
+ OrgLockModule,
59
+ OrgsService,
60
+ OrgSettingsService,
61
+ MembersService,
62
+ InvitationsService,
63
+ Offboarding,
64
+ DirectorySync,
65
+ ],
66
+ })
67
+ ], OrgsModule);
68
+ export { OrgsModule };
@@ -1,10 +1,12 @@
1
- import { type Transaction } from "kysely";
2
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
1
+ import { EvalBudget } from "../evals/budget.js";
3
2
  import type { Account } from "../identity/accounts.js";
4
- import type { ApiTokenService } from "../identity/api-tokens.js";
5
- import type { SettingsService } from "../identity/settings.js";
3
+ import { ApiTokenService } from "../identity/api-tokens.js";
4
+ import { SettingsService } from "../identity/settings.js";
5
+ import { KernelDb } from "../infra/database/kernel-db.js";
6
+ import { TransactionHost } from "../infra/database/transaction-host.js";
7
+ import { KernelEvents } from "../infra/events/kernel-events.js";
8
+ import { OrgLock } from "./org-lock.js";
6
9
  import type { OrgRole } from "./roles.js";
7
- type Trx = Transaction<KernelDatabase>;
8
10
  export type Org = {
9
11
  id: string;
10
12
  slug: string;
@@ -15,27 +17,34 @@ export type Org = {
15
17
  export declare const SLUG_RE: RegExp;
16
18
  /** 由名字生成 slug:转小写、非字母数字换 `-`、去首尾 `-`;为空则 `org-<6 位随机>`。 */
17
19
  export declare function slugFromName(name: string): string;
18
- /** 组织服务:创建、查询、修改与软删除。框架无关,由调用方注入依赖。 */
20
+ /**
21
+ * Organizations: create, read, update and soft delete. A soft delete emits `org.deleted` on
22
+ * {@link KernelEvents} after the commit.
23
+ */
19
24
  export declare class OrgsService {
20
25
  private readonly db;
26
+ readonly txHost: TransactionHost;
21
27
  private readonly settings;
22
28
  private readonly apiTokens;
23
- private readonly hooks;
24
- constructor(db: KernelDb, settings: SettingsService, apiTokens: ApiTokenService, hooks?: {
25
- /** 软删除提交之后(内核传:给该组织的渠道连接广播 `channel.changed`,长连接立即断开)。 */
26
- afterDelete?: (orgId: string) => Promise<void>;
27
- });
29
+ private readonly orgLock;
30
+ private readonly events;
31
+ /** Cancels the deleted org's running eval runs (in the delete's transaction). */
32
+ private readonly evalBudget;
33
+ constructor(db: KernelDb, txHost: TransactionHost, settings: SettingsService, apiTokens: ApiTokenService, orgLock: OrgLock, events: KernelEvents,
34
+ /** Cancels the deleted org's running eval runs (in the delete's transaction). */
35
+ evalBudget: Pick<EvalBudget, "cancelRuns">);
28
36
  /**
29
- * 建组织,创建者为 owner。传入 `opts.trx` 时在调用方的事务内执行(初始化向导与建账号同一事务);
30
- * 此时 slug 冲突同样转成 `org.slug_taken`,但该事务已中止,调用方只能回滚。
37
+ * Creates an org with the actor as owner, in the caller's transaction when there is one (the
38
+ * setup wizard creates it with the account); a slug conflict is `org.slug_taken` either way, but
39
+ * a caller's transaction is then aborted and can only roll back.
31
40
  */
32
41
  create(input: {
33
42
  name: string;
34
43
  slug?: string | undefined;
35
44
  }, actor: Account, opts?: {
36
- trx?: Trx | undefined;
37
45
  actorTokenId?: string | undefined;
38
46
  }): Promise<Org>;
47
+ private createIn;
39
48
  /** 账号所属的(未软删除的)组织及其角色,按创建时间升序。 */
40
49
  listForAccount(accountId: string): Promise<(Org & {
41
50
  role: OrgRole;
@@ -46,16 +55,18 @@ export declare class OrgsService {
46
55
  })[]>;
47
56
  /** 未软删除的组织;不存在或已软删除为 undefined。 */
48
57
  get(orgId: string): Promise<Org | undefined>;
49
- /** 改名 / slug(需 admin,锁内实时判定)。 */
58
+ /** Renames / re-slugs (needs admin, decided live under the org lock). */
50
59
  update(orgId: string, patch: {
51
60
  name?: string | undefined;
52
61
  slug?: string | undefined;
53
62
  }, actor: Account, actorTokenId?: string): Promise<Org>;
63
+ private updateIn;
54
64
  /**
55
- * 软删除(需 owner,锁内实时判定):同一事务吊销该组织的服务令牌、取消在执行的评测运行与挂着的目录申请、清空指向它的
56
- * 会话当前组织;
57
- * 提交后调用 `afterDelete`(渠道连接随组织失效:运行时读连接行时 join 组织过滤已删除的)。
65
+ * Soft delete (needs owner, decided live under the org lock): in the same transaction revokes
66
+ * the org's service tokens, cancels its running eval runs and pending catalog requests, and
67
+ * clears sessions' current org pointing at it; after the commit emits `org.deleted` (channel
68
+ * connections go with the org: the runtime's connection reads filter deleted orgs).
58
69
  */
59
70
  softDelete(orgId: string, actor: Account, actorTokenId?: string): Promise<void>;
71
+ private softDeleteIn;
60
72
  }
61
- export {};
@@ -1,10 +1,27 @@
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 { randomBytes, randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import { cancelPendingRequests } from "../catalog/requests.service.js";
4
14
  import { ApiError } from "../errors.js";
5
- import { cancelEvalRuns } from "../evals/budget.js";
15
+ import { EvalBudget } from "../evals/budget.js";
16
+ import { ApiTokenService } from "../identity/api-tokens.js";
6
17
  import { audit } from "../identity/audit.js";
7
- import { lockOrgAndAuthorize } from "./org-lock.js";
18
+ import { SettingsService } from "../identity/settings.js";
19
+ import { afterCommit } from "../infra/database/after-commit.js";
20
+ import { KernelDb } from "../infra/database/kernel-db.js";
21
+ import { TransactionHost } from "../infra/database/transaction-host.js";
22
+ import { Transactional } from "../infra/database/transactional.decorator.js";
23
+ import { KernelEvents } from "../infra/events/kernel-events.js";
24
+ import { OrgLock } from "./org-lock.js";
8
25
  /** 组织 slug:小写字母数字与 `-`,首尾不能是 `-`,1–40 个字符。 */
9
26
  export const SLUG_RE = /^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$/;
10
27
  const MAX_SLUG = 40;
@@ -52,53 +69,65 @@ async function slugGuard(p) {
52
69
  throw e;
53
70
  }
54
71
  }
55
- /** 组织服务:创建、查询、修改与软删除。框架无关,由调用方注入依赖。 */
56
- export class OrgsService {
72
+ /**
73
+ * Organizations: create, read, update and soft delete. A soft delete emits `org.deleted` on
74
+ * {@link KernelEvents} after the commit.
75
+ */
76
+ let OrgsService = class OrgsService {
57
77
  db;
78
+ txHost;
58
79
  settings;
59
80
  apiTokens;
60
- hooks;
61
- constructor(db, settings, apiTokens, hooks = {}) {
81
+ orgLock;
82
+ events;
83
+ evalBudget;
84
+ constructor(db, txHost, settings, apiTokens, orgLock, events,
85
+ /** Cancels the deleted org's running eval runs (in the delete's transaction). */
86
+ evalBudget) {
62
87
  this.db = db;
88
+ this.txHost = txHost;
63
89
  this.settings = settings;
64
90
  this.apiTokens = apiTokens;
65
- this.hooks = hooks;
91
+ this.orgLock = orgLock;
92
+ this.events = events;
93
+ this.evalBudget = evalBudget;
66
94
  }
67
95
  /**
68
- * 建组织,创建者为 owner。传入 `opts.trx` 时在调用方的事务内执行(初始化向导与建账号同一事务);
69
- * 此时 slug 冲突同样转成 `org.slug_taken`,但该事务已中止,调用方只能回滚。
96
+ * Creates an org with the actor as owner, in the caller's transaction when there is one (the
97
+ * setup wizard creates it with the account); a slug conflict is `org.slug_taken` either way, but
98
+ * a caller's transaction is then aborted and can only roll back.
70
99
  */
71
100
  async create(input, actor, opts = {}) {
72
- const { trx, actorTokenId } = opts;
73
- // 在调用方事务内读设置:调用方已占着一个连接时再向池要第二个,并发下可能把池耗尽
74
- const { orgCreation } = await this.settings.get(trx);
101
+ return slugGuard(this.createIn(input, actor, opts.actorTokenId));
102
+ }
103
+ async createIn(input, actor, actorTokenId) {
104
+ // read in the context's transaction: a caller holding a connection asking the pool for a
105
+ // second one could exhaust it under load
106
+ const { orgCreation } = await this.settings.get();
75
107
  if (orgCreation === "enterprise_admin" && !actor.isEnterpriseAdmin) {
76
108
  throw new ApiError("org.creation_disabled", "Only enterprise admins can create organizations");
77
109
  }
78
110
  const name = checkName(input.name);
79
111
  const slug = input.slug ?? slugFromName(name);
80
112
  checkSlug(slug);
81
- const run = async (t) => {
82
- const row = await t
83
- .insertInto("orgs")
84
- .values({ id: randomUUID(), slug, name, created_by: actor.id })
85
- .returning(["id", "slug", "name", "created_at"])
86
- .executeTakeFirstOrThrow();
87
- await t
88
- .insertInto("memberships")
89
- .values({ org_id: row.id, account_id: actor.id, role: "owner" })
90
- .execute();
91
- await audit(t, {
92
- actorAccountId: actor.id,
93
- ...(actorTokenId !== undefined && { actorTokenId }),
94
- orgId: row.id,
95
- action: "org.created",
96
- target: row.id,
97
- detail: { slug, name },
98
- });
99
- return toOrg(row);
100
- };
101
- return slugGuard(trx ? run(trx) : this.db.transaction().execute(run));
113
+ const row = await this.db
114
+ .insertInto("orgs")
115
+ .values({ id: randomUUID(), slug, name, created_by: actor.id })
116
+ .returning(["id", "slug", "name", "created_at"])
117
+ .executeTakeFirstOrThrow();
118
+ await this.db
119
+ .insertInto("memberships")
120
+ .values({ org_id: row.id, account_id: actor.id, role: "owner" })
121
+ .execute();
122
+ await audit(this.db.db, {
123
+ actorAccountId: actor.id,
124
+ ...(actorTokenId !== undefined && { actorTokenId }),
125
+ orgId: row.id,
126
+ action: "org.created",
127
+ target: row.id,
128
+ detail: { slug, name },
129
+ });
130
+ return toOrg(row);
102
131
  }
103
132
  /** 账号所属的(未软删除的)组织及其角色,按创建时间升序。 */
104
133
  async listForAccount(accountId) {
@@ -137,7 +166,7 @@ export class OrgsService {
137
166
  .executeTakeFirst();
138
167
  return row && toOrg(row);
139
168
  }
140
- /** 改名 / slug(需 admin,锁内实时判定)。 */
169
+ /** Renames / re-slugs (needs admin, decided live under the org lock). */
141
170
  async update(orgId, patch, actor, actorTokenId) {
142
171
  const values = {};
143
172
  if (patch.name !== undefined)
@@ -146,64 +175,88 @@ export class OrgsService {
146
175
  checkSlug(patch.slug);
147
176
  values.slug = patch.slug;
148
177
  }
149
- return slugGuard(this.db.transaction().execute(async (trx) => {
150
- const { org: before } = await lockOrgAndAuthorize(trx, orgId, actor.id, "org.update");
151
- if (Object.keys(values).length === 0) {
152
- const row = await trx
153
- .selectFrom("orgs")
154
- .select(["id", "slug", "name", "created_at"])
155
- .where("id", "=", orgId)
156
- .executeTakeFirstOrThrow();
157
- return toOrg(row);
158
- }
159
- const row = await trx
160
- .updateTable("orgs")
161
- .set(values)
178
+ return slugGuard(this.updateIn(orgId, values, actor, actorTokenId));
179
+ }
180
+ async updateIn(orgId, values, actor, actorTokenId) {
181
+ const { org: before } = await this.orgLock.lockAndAuthorize(orgId, actor.id, "org.update");
182
+ if (Object.keys(values).length === 0) {
183
+ const row = await this.db
184
+ .selectFrom("orgs")
185
+ .select(["id", "slug", "name", "created_at"])
162
186
  .where("id", "=", orgId)
163
- .returning(["id", "slug", "name", "created_at"])
164
187
  .executeTakeFirstOrThrow();
165
- await audit(trx, {
166
- actorAccountId: actor.id,
167
- ...(actorTokenId !== undefined && { actorTokenId }),
168
- orgId,
169
- action: "org.updated",
170
- target: orgId,
171
- detail: { before, after: values },
172
- });
173
188
  return toOrg(row);
174
- }));
189
+ }
190
+ const row = await this.db
191
+ .updateTable("orgs")
192
+ .set(values)
193
+ .where("id", "=", orgId)
194
+ .returning(["id", "slug", "name", "created_at"])
195
+ .executeTakeFirstOrThrow();
196
+ await audit(this.db.db, {
197
+ actorAccountId: actor.id,
198
+ ...(actorTokenId !== undefined && { actorTokenId }),
199
+ orgId,
200
+ action: "org.updated",
201
+ target: orgId,
202
+ detail: { before, after: values },
203
+ });
204
+ return toOrg(row);
175
205
  }
176
206
  /**
177
- * 软删除(需 owner,锁内实时判定):同一事务吊销该组织的服务令牌、取消在执行的评测运行与挂着的目录申请、清空指向它的
178
- * 会话当前组织;
179
- * 提交后调用 `afterDelete`(渠道连接随组织失效:运行时读连接行时 join 组织过滤已删除的)。
207
+ * Soft delete (needs owner, decided live under the org lock): in the same transaction revokes
208
+ * the org's service tokens, cancels its running eval runs and pending catalog requests, and
209
+ * clears sessions' current org pointing at it; after the commit emits `org.deleted` (channel
210
+ * connections go with the org: the runtime's connection reads filter deleted orgs).
180
211
  */
181
212
  async softDelete(orgId, actor, actorTokenId) {
182
- await this.db.transaction().execute(async (trx) => {
183
- await lockOrgAndAuthorize(trx, orgId, actor.id, "org.delete");
184
- await trx
185
- .updateTable("orgs")
186
- .set({ deleted_at: sql `now()` })
187
- .where("id", "=", orgId)
188
- .execute();
189
- await this.apiTokens.revokeAllForOrg(orgId, trx);
190
- // 组织删除后评测运行不再花钱:显式取消(审计带原因)
191
- await cancelEvalRuns(trx, { orgId }, { accountId: actor.id, ...(actorTokenId !== undefined && { tokenId: actorTokenId }) }, "org_deleted");
192
- // 挂着的目录申请(含已交企业管理员的)一并取消
193
- await cancelPendingRequests(trx, { orgId }, actor.id, "org_deleted", actorTokenId !== undefined ? { actorTokenId } : {});
194
- await trx
195
- .updateTable("sessions")
196
- .set({ current_org_id: null })
197
- .where("current_org_id", "=", orgId)
198
- .execute();
199
- await audit(trx, {
200
- actorAccountId: actor.id,
201
- ...(actorTokenId !== undefined && { actorTokenId }),
202
- orgId,
203
- action: "org.deleted",
204
- target: orgId,
205
- });
213
+ await this.softDeleteIn(orgId, actor, actorTokenId);
214
+ }
215
+ async softDeleteIn(orgId, actor, actorTokenId) {
216
+ await this.orgLock.lockAndAuthorize(orgId, actor.id, "org.delete");
217
+ await this.db
218
+ .updateTable("orgs")
219
+ .set({ deleted_at: sql `now()` })
220
+ .where("id", "=", orgId)
221
+ .execute();
222
+ await this.apiTokens.revokeAllForOrg(orgId);
223
+ // eval runs of a deleted org stop spending: cancelled explicitly (audited with the reason)
224
+ await this.evalBudget.cancelRuns({ orgId }, { accountId: actor.id, ...(actorTokenId !== undefined && { tokenId: actorTokenId }) }, "org_deleted");
225
+ // pending catalog requests (including those passed to enterprise admins) are cancelled too
226
+ await cancelPendingRequests(this.db.db, { orgId }, actor.id, "org_deleted", actorTokenId !== undefined ? { actorTokenId } : {});
227
+ await this.db
228
+ .updateTable("sessions")
229
+ .set({ current_org_id: null })
230
+ .where("current_org_id", "=", orgId)
231
+ .execute();
232
+ await audit(this.db.db, {
233
+ actorAccountId: actor.id,
234
+ ...(actorTokenId !== undefined && { actorTokenId }),
235
+ orgId,
236
+ action: "org.deleted",
237
+ target: orgId,
206
238
  });
207
- await this.hooks.afterDelete?.(orgId);
239
+ // channel connections follow the org after the root commit (none after a rollback)
240
+ afterCommit(() => this.events.emit("org.deleted", { orgId }));
208
241
  }
209
- }
242
+ };
243
+ __decorate([
244
+ Transactional()
245
+ ], OrgsService.prototype, "createIn", null);
246
+ __decorate([
247
+ Transactional()
248
+ ], OrgsService.prototype, "updateIn", null);
249
+ __decorate([
250
+ Transactional()
251
+ ], OrgsService.prototype, "softDeleteIn", null);
252
+ OrgsService = __decorate([
253
+ Injectable(),
254
+ __param(0, Inject(KernelDb)),
255
+ __param(1, Inject(TransactionHost)),
256
+ __param(2, Inject(SettingsService)),
257
+ __param(3, Inject(ApiTokenService)),
258
+ __param(4, Inject(OrgLock)),
259
+ __param(5, Inject(KernelEvents)),
260
+ __param(6, Inject(EvalBudget))
261
+ ], OrgsService);
262
+ export { OrgsService };
@@ -1,6 +1,6 @@
1
1
  import { type Principal } from "../identity/principal.js";
2
2
  import { type OrgContext } from "./org.guard.js";
3
- import { type OrgSandboxLimits, type OrgSettings, type OrgSettingsDeployment, type OrgSettingsPatch, type OrgSettingsService } from "./settings.service.js";
3
+ import { type OrgSandboxLimits, type OrgSettings, type OrgSettingsDeployment, type OrgSettingsPatch, OrgSettingsService } from "./settings.service.js";
4
4
  /**
5
5
  * 组织设置(`/api/v1/orgs/:orgId/settings`):成员可读,修改需 `org.update`(admin)。
6
6
  * 响应带 `deployment`(部署默认值,如沙箱出站),设置页据此展示「跟随部署」时的实际取值;