@capybara-hq/kernel 0.1.0-rc.0 → 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 (626) hide show
  1. package/bootstrap.json +10 -6
  2. package/dist/admin/admin.controller.d.ts +17 -17
  3. package/dist/admin/admin.controller.js +43 -26
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/extensions.controller.d.ts +14 -14
  7. package/dist/admin/extensions.controller.js +30 -17
  8. package/dist/admin/setup-lock.d.ts +16 -0
  9. package/dist/admin/setup-lock.js +47 -0
  10. package/dist/admin/setup.controller.d.ts +8 -8
  11. package/dist/admin/setup.controller.js +27 -25
  12. package/dist/admin/setup.service.d.ts +19 -27
  13. package/dist/admin/setup.service.js +61 -61
  14. package/dist/agents/agent-lookup.d.ts +53 -0
  15. package/dist/agents/agent-lookup.js +179 -0
  16. package/dist/agents/agents.controller.d.ts +1 -1
  17. package/dist/agents/agents.controller.js +14 -8
  18. package/dist/agents/agents.module.d.ts +7 -0
  19. package/dist/agents/agents.module.js +41 -0
  20. package/dist/agents/agents.service.d.ts +39 -58
  21. package/dist/agents/agents.service.js +261 -329
  22. package/dist/agents/definition.d.ts +8 -0
  23. package/dist/agents/definition.js +8 -0
  24. package/dist/agents/models.controller.d.ts +1 -1
  25. package/dist/agents/models.controller.js +2 -2
  26. package/dist/agents/templates.controller.d.ts +1 -1
  27. package/dist/agents/templates.controller.js +2 -2
  28. package/dist/agents/templates.d.ts +6 -8
  29. package/dist/agents/templates.js +20 -4
  30. package/dist/app.d.ts +93 -0
  31. package/dist/app.js +150 -0
  32. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  33. package/dist/catalog/admin-catalog.controller.js +27 -13
  34. package/dist/catalog/catalog-content.d.ts +185 -0
  35. package/dist/catalog/catalog-content.js +323 -0
  36. package/dist/catalog/catalog-items.d.ts +186 -0
  37. package/dist/catalog/catalog-items.js +410 -0
  38. package/dist/catalog/catalog.module.d.ts +14 -0
  39. package/dist/catalog/catalog.module.js +71 -0
  40. package/dist/catalog/catalog.service.d.ts +34 -188
  41. package/dist/catalog/catalog.service.js +155 -489
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +30 -13
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +2 -2
  70. package/dist/channels/channels.module.d.ts +40 -0
  71. package/dist/channels/channels.module.js +128 -0
  72. package/dist/channels/connections.controller.d.ts +1 -1
  73. package/dist/channels/connections.controller.js +11 -6
  74. package/dist/channels/connections.service.d.ts +43 -21
  75. package/dist/channels/connections.service.js +236 -131
  76. package/dist/channels/inbound.d.ts +34 -38
  77. package/dist/channels/inbound.js +107 -41
  78. package/dist/channels/job-ids.d.ts +10 -0
  79. package/dist/channels/job-ids.js +10 -0
  80. package/dist/channels/jobs.d.ts +85 -0
  81. package/dist/channels/jobs.js +157 -0
  82. package/dist/channels/outbound.d.ts +60 -82
  83. package/dist/channels/outbound.js +165 -193
  84. package/dist/channels/supervisor.d.ts +88 -46
  85. package/dist/channels/supervisor.js +230 -132
  86. package/dist/channels/threads.d.ts +29 -8
  87. package/dist/channels/threads.js +71 -13
  88. package/dist/channels/webhook.d.ts +20 -14
  89. package/dist/channels/webhook.js +51 -20
  90. package/dist/config/load.d.ts +3 -2
  91. package/dist/config/load.js +3 -2
  92. package/dist/config/nacos-source.js +11 -2
  93. package/dist/config/schema.d.ts +16 -1
  94. package/dist/config/schema.js +54 -7
  95. package/dist/conversations/access.d.ts +29 -0
  96. package/dist/conversations/access.js +86 -0
  97. package/dist/conversations/artifacts.d.ts +10 -10
  98. package/dist/conversations/artifacts.js +35 -9
  99. package/dist/conversations/attachments.controller.d.ts +1 -1
  100. package/dist/conversations/attachments.controller.js +8 -6
  101. package/dist/conversations/attachments.module.d.ts +7 -0
  102. package/dist/conversations/attachments.module.js +25 -0
  103. package/dist/conversations/attachments.service.d.ts +30 -22
  104. package/dist/conversations/attachments.service.js +119 -46
  105. package/dist/conversations/conversations.controller.d.ts +8 -7
  106. package/dist/conversations/conversations.controller.js +59 -29
  107. package/dist/conversations/conversations.module.d.ts +8 -0
  108. package/dist/conversations/conversations.module.js +69 -0
  109. package/dist/conversations/conversations.service.d.ts +40 -38
  110. package/dist/conversations/conversations.service.js +130 -140
  111. package/dist/conversations/event-log.d.ts +28 -18
  112. package/dist/conversations/event-log.js +74 -27
  113. package/dist/conversations/files.d.ts +10 -10
  114. package/dist/conversations/files.js +37 -11
  115. package/dist/conversations/idem-keys.d.ts +5 -0
  116. package/dist/conversations/idem-keys.js +5 -0
  117. package/dist/conversations/job-ids.d.ts +6 -0
  118. package/dist/conversations/job-ids.js +6 -0
  119. package/dist/conversations/outputs-read.d.ts +11 -11
  120. package/dist/conversations/outputs-read.js +31 -7
  121. package/dist/conversations/queue.d.ts +48 -56
  122. package/dist/conversations/queue.js +13 -289
  123. package/dist/conversations/queue.service.d.ts +60 -0
  124. package/dist/conversations/queue.service.js +343 -0
  125. package/dist/conversations/sandbox-status.d.ts +13 -10
  126. package/dist/conversations/sandbox-status.js +36 -8
  127. package/dist/conversations/titles.d.ts +71 -24
  128. package/dist/conversations/titles.js +159 -62
  129. package/dist/ctx/bus.js +9 -3
  130. package/dist/ctx/create-ctx.d.ts +6 -0
  131. package/dist/ctx/create-ctx.js +7 -9
  132. package/dist/ctx/lock.d.ts +7 -3
  133. package/dist/ctx/lock.js +9 -20
  134. package/dist/ctx/queue.js +3 -2
  135. package/dist/ctx/secrets.d.ts +10 -2
  136. package/dist/ctx/secrets.js +7 -3
  137. package/dist/db/kernel-schema.d.ts +2 -2
  138. package/dist/db/pool.d.ts +5 -0
  139. package/dist/db/pool.js +1 -0
  140. package/dist/errors.d.ts +2 -0
  141. package/dist/errors.js +2 -0
  142. package/dist/evals/budget.d.ts +42 -21
  143. package/dist/evals/budget.js +114 -62
  144. package/dist/evals/evals.module.d.ts +31 -0
  145. package/dist/evals/evals.module.js +114 -0
  146. package/dist/evals/jobs.d.ts +20 -0
  147. package/dist/evals/jobs.js +45 -0
  148. package/dist/evals/run-replay.d.ts +56 -8
  149. package/dist/evals/run-replay.js +140 -80
  150. package/dist/evals/runs.controller.d.ts +1 -1
  151. package/dist/evals/runs.controller.js +17 -8
  152. package/dist/evals/runs.service.d.ts +23 -45
  153. package/dist/evals/runs.service.js +245 -234
  154. package/dist/evals/sets.controller.d.ts +1 -1
  155. package/dist/evals/sets.controller.js +17 -8
  156. package/dist/evals/sets.service.d.ts +22 -6
  157. package/dist/evals/sets.service.js +248 -194
  158. package/dist/evals/snapshot.d.ts +2 -2
  159. package/dist/evals/step-replay.d.ts +2 -2
  160. package/dist/evals/step-replay.js +1 -1
  161. package/dist/evals/trajectory.controller.d.ts +1 -1
  162. package/dist/evals/trajectory.controller.js +11 -7
  163. package/dist/evals/trajectory.service.d.ts +5 -4
  164. package/dist/evals/trajectory.service.js +30 -7
  165. package/dist/evals/worker.d.ts +44 -27
  166. package/dist/evals/worker.js +220 -120
  167. package/dist/extensions/admin-ops.d.ts +61 -33
  168. package/dist/extensions/admin-ops.js +248 -154
  169. package/dist/extensions/admin-view.d.ts +38 -27
  170. package/dist/extensions/admin-view.js +126 -55
  171. package/dist/extensions/approvals.d.ts +12 -8
  172. package/dist/extensions/approvals.js +73 -46
  173. package/dist/extensions/blobs.d.ts +27 -10
  174. package/dist/extensions/blobs.js +111 -45
  175. package/dist/extensions/bootstrap.d.ts +96 -42
  176. package/dist/extensions/bootstrap.js +303 -155
  177. package/dist/extensions/cli.d.ts +20 -10
  178. package/dist/extensions/cli.js +41 -96
  179. package/dist/extensions/config-issues.d.ts +7 -0
  180. package/dist/extensions/config-issues.js +31 -0
  181. package/dist/extensions/deployment-config-store.d.ts +49 -0
  182. package/dist/extensions/deployment-config-store.js +133 -0
  183. package/dist/extensions/deployment-config.d.ts +58 -67
  184. package/dist/extensions/deployment-config.js +202 -230
  185. package/dist/extensions/enabled.d.ts +5 -5
  186. package/dist/extensions/extensions.module.d.ts +8 -0
  187. package/dist/extensions/extensions.module.js +77 -0
  188. package/dist/extensions/hooks.d.ts +3 -2
  189. package/dist/extensions/hooks.js +1 -1
  190. package/dist/extensions/host.d.ts +72 -68
  191. package/dist/extensions/host.js +191 -152
  192. package/dist/extensions/installs.d.ts +49 -16
  193. package/dist/extensions/installs.js +128 -32
  194. package/dist/extensions/job-ids.d.ts +6 -0
  195. package/dist/extensions/job-ids.js +6 -0
  196. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  197. package/dist/extensions/lifecycle-topics.js +18 -0
  198. package/dist/extensions/lifecycle.d.ts +35 -47
  199. package/dist/extensions/lifecycle.js +103 -39
  200. package/dist/extensions/locks.d.ts +33 -0
  201. package/dist/extensions/locks.js +86 -0
  202. package/dist/extensions/migrate-lock.d.ts +3 -4
  203. package/dist/extensions/org-config.controller.d.ts +1 -1
  204. package/dist/extensions/org-config.controller.js +8 -5
  205. package/dist/extensions/org-config.d.ts +48 -46
  206. package/dist/extensions/org-config.js +284 -226
  207. package/dist/extensions/registry.d.ts +50 -2
  208. package/dist/extensions/registry.js +89 -4
  209. package/dist/extensions/sources.d.ts +12 -8
  210. package/dist/extensions/sources.js +34 -13
  211. package/dist/files/files.module.d.ts +3 -0
  212. package/dist/files/files.module.js +22 -0
  213. package/dist/files/previewers.controller.d.ts +7 -2
  214. package/dist/files/previewers.controller.js +17 -9
  215. package/dist/files/previewers.d.ts +13 -18
  216. package/dist/files/previewers.js +83 -36
  217. package/dist/http/adapter.d.ts +3 -0
  218. package/dist/http/adapter.js +25 -0
  219. package/dist/http/api.module.d.ts +3 -110
  220. package/dist/http/api.module.js +47 -355
  221. package/dist/http/app.d.ts +11 -15
  222. package/dist/http/app.js +52 -47
  223. package/dist/http/error-filter.module.d.ts +5 -0
  224. package/dist/http/error-filter.module.js +18 -0
  225. package/dist/http/error.filter.js +2 -2
  226. package/dist/identity/accounts.d.ts +82 -29
  227. package/dist/identity/accounts.js +294 -175
  228. package/dist/identity/api-tokens.d.ts +11 -7
  229. package/dist/identity/api-tokens.js +71 -44
  230. package/dist/identity/audit.d.ts +7 -4
  231. package/dist/identity/audit.js +5 -1
  232. package/dist/identity/auth.controller.d.ts +11 -10
  233. package/dist/identity/auth.controller.js +31 -25
  234. package/dist/identity/auth.guard.d.ts +3 -3
  235. package/dist/identity/auth.guard.js +6 -4
  236. package/dist/identity/binding.d.ts +9 -11
  237. package/dist/identity/binding.js +41 -13
  238. package/dist/identity/enterprise-admin.d.ts +18 -12
  239. package/dist/identity/enterprise-admin.js +67 -13
  240. package/dist/identity/external-identity-lock.d.ts +17 -0
  241. package/dist/identity/external-identity-lock.js +39 -0
  242. package/dist/identity/external.d.ts +19 -15
  243. package/dist/identity/external.js +163 -125
  244. package/dist/identity/identity.module.d.ts +6 -0
  245. package/dist/identity/identity.module.js +56 -0
  246. package/dist/identity/me.controller.d.ts +16 -15
  247. package/dist/identity/me.controller.js +37 -31
  248. package/dist/identity/sessions.d.ts +12 -10
  249. package/dist/identity/sessions.js +74 -42
  250. package/dist/identity/settings.d.ts +20 -14
  251. package/dist/identity/settings.js +85 -57
  252. package/dist/identity/sso.controller.d.ts +7 -7
  253. package/dist/identity/sso.controller.js +13 -9
  254. package/dist/identity/sso.d.ts +9 -12
  255. package/dist/identity/sso.js +54 -24
  256. package/dist/inbox/inbox.module.d.ts +3 -0
  257. package/dist/inbox/inbox.module.js +22 -0
  258. package/dist/inbox/inbox.service.d.ts +7 -9
  259. package/dist/inbox/inbox.service.js +32 -11
  260. package/dist/index.d.ts +19 -12
  261. package/dist/index.js +13 -8
  262. package/dist/infra/cache/cache.module.d.ts +3 -0
  263. package/dist/infra/cache/cache.module.js +16 -0
  264. package/dist/infra/cache/cache.service.d.ts +21 -0
  265. package/dist/infra/cache/cache.service.js +80 -0
  266. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  267. package/dist/infra/cache/cacheable.decorator.js +83 -0
  268. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  269. package/dist/infra/cli/kernel-cli.module.js +165 -0
  270. package/dist/infra/close-within.d.ts +15 -0
  271. package/dist/infra/close-within.js +36 -0
  272. package/dist/infra/config/config.module.d.ts +13 -0
  273. package/dist/infra/config/config.module.js +39 -0
  274. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  275. package/dist/infra/config/kernel-config.service.js +126 -0
  276. package/dist/infra/database/after-commit.d.ts +6 -0
  277. package/dist/infra/database/after-commit.js +9 -0
  278. package/dist/infra/database/database.module.d.ts +25 -0
  279. package/dist/infra/database/database.module.js +90 -0
  280. package/dist/infra/database/kernel-db.d.ts +22 -0
  281. package/dist/infra/database/kernel-db.js +65 -0
  282. package/dist/infra/database/transaction-host.d.ts +50 -0
  283. package/dist/infra/database/transaction-host.js +125 -0
  284. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  285. package/dist/infra/database/transactional.decorator.js +27 -0
  286. package/dist/infra/database/xact-lock.d.ts +17 -0
  287. package/dist/infra/database/xact-lock.js +43 -0
  288. package/dist/infra/events/kernel-events.d.ts +96 -0
  289. package/dist/infra/events/kernel-events.js +65 -0
  290. package/dist/infra/health/health.controller.d.ts +26 -0
  291. package/dist/infra/health/health.controller.js +104 -0
  292. package/dist/infra/health/health.module.d.ts +9 -0
  293. package/dist/infra/health/health.module.js +24 -0
  294. package/dist/infra/health/health.options.d.ts +10 -0
  295. package/dist/infra/health/health.options.js +15 -0
  296. package/dist/infra/health/shutdown-state.d.ts +6 -0
  297. package/dist/infra/health/shutdown-state.js +2 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  300. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  301. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  302. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  303. package/dist/infra/lifecycle/process-guards.js +86 -0
  304. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  305. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  306. package/dist/infra/lock/key-template.d.ts +13 -0
  307. package/dist/infra/lock/key-template.js +46 -0
  308. package/dist/infra/lock/lock.module.d.ts +3 -0
  309. package/dist/infra/lock/lock.module.js +16 -0
  310. package/dist/infra/lock/lock.service.d.ts +120 -0
  311. package/dist/infra/lock/lock.service.js +343 -0
  312. package/dist/infra/lock/shared-lease.d.ts +44 -0
  313. package/dist/infra/lock/shared-lease.js +121 -0
  314. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  315. package/dist/infra/lock/with-lock.decorator.js +49 -0
  316. package/dist/infra/logging/logging.module.d.ts +16 -0
  317. package/dist/infra/logging/logging.module.js +34 -0
  318. package/dist/infra/queue/configured-processor.d.ts +18 -0
  319. package/dist/infra/queue/configured-processor.js +23 -0
  320. package/dist/infra/queue/job-failure.d.ts +18 -0
  321. package/dist/infra/queue/job-failure.js +26 -0
  322. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  323. package/dist/infra/queue/queue-shutdown.js +81 -0
  324. package/dist/infra/queue/queue.module.d.ts +16 -0
  325. package/dist/infra/queue/queue.module.js +61 -0
  326. package/dist/infra/queue/redis-connection.d.ts +7 -0
  327. package/dist/infra/queue/redis-connection.js +18 -0
  328. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  329. package/dist/infra/queue/retired-schedulers.js +9 -0
  330. package/dist/infra/queue/run-job.d.ts +16 -0
  331. package/dist/infra/queue/run-job.js +19 -0
  332. package/dist/infra/redis/redis.module.d.ts +24 -0
  333. package/dist/infra/redis/redis.module.js +87 -0
  334. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  335. package/dist/infra/schedule/cron-tick.js +25 -0
  336. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  337. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  338. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  339. package/dist/infra/schedule/locked-interval.js +190 -0
  340. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  341. package/dist/infra/schedule/locked-tick.js +137 -0
  342. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  343. package/dist/infra/schedule/schedule.module.js +27 -0
  344. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  345. package/dist/infra/schedule/scheduled-runs.js +163 -0
  346. package/dist/infra/swagger/swagger.d.ts +16 -0
  347. package/dist/infra/swagger/swagger.js +31 -0
  348. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  349. package/dist/infra/throttler/credential-throttler.js +77 -0
  350. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  351. package/dist/infra/throttler/named-throttlers.js +119 -0
  352. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  353. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  354. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  355. package/dist/infra/throttler/throttler.guard.js +68 -0
  356. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  357. package/dist/infra/throttler/throttler.module.js +53 -0
  358. package/dist/infra/tokens.d.ts +15 -0
  359. package/dist/infra/tokens.js +15 -0
  360. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  361. package/dist/infra/validation/create-zod-dto.js +35 -0
  362. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  363. package/dist/infra/validation/parse-with-zod.js +12 -0
  364. package/dist/infra/validation/validation.module.d.ts +3 -0
  365. package/dist/infra/validation/validation.module.js +16 -0
  366. package/dist/infra/validation/zod-params.d.ts +7 -0
  367. package/dist/infra/validation/zod-params.js +42 -0
  368. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  369. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  370. package/dist/kernel.d.ts +9 -241
  371. package/dist/kernel.js +8 -1305
  372. package/dist/kernel.module.d.ts +17 -0
  373. package/dist/kernel.module.js +136 -0
  374. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  375. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  376. package/dist/lifecycle/tokens.d.ts +3 -0
  377. package/dist/lifecycle/tokens.js +3 -0
  378. package/dist/log-config.d.ts +9 -0
  379. package/dist/log-config.js +27 -0
  380. package/dist/log-context.d.ts +34 -0
  381. package/dist/log-context.js +44 -0
  382. package/dist/log-loki.d.ts +34 -0
  383. package/dist/log-loki.js +145 -0
  384. package/dist/log.d.ts +41 -10
  385. package/dist/log.js +91 -17
  386. package/dist/models/models.module.d.ts +3 -0
  387. package/dist/models/models.module.js +24 -0
  388. package/dist/models/prices.d.ts +8 -2
  389. package/dist/models/prices.js +65 -37
  390. package/dist/models/purposes.controller.d.ts +1 -1
  391. package/dist/models/purposes.controller.js +5 -6
  392. package/dist/models/purposes.d.ts +35 -13
  393. package/dist/models/purposes.js +101 -51
  394. package/dist/net/public-address.js +3 -2
  395. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  396. package/dist/orgs/directory-sync.controller.js +2 -2
  397. package/dist/orgs/directory-sync.d.ts +61 -31
  398. package/dist/orgs/directory-sync.js +212 -125
  399. package/dist/orgs/invitations.controller.d.ts +8 -8
  400. package/dist/orgs/invitations.controller.js +27 -26
  401. package/dist/orgs/invitations.service.d.ts +12 -9
  402. package/dist/orgs/invitations.service.js +130 -92
  403. package/dist/orgs/job-ids.d.ts +8 -0
  404. package/dist/orgs/job-ids.js +8 -0
  405. package/dist/orgs/members.service.d.ts +19 -12
  406. package/dist/orgs/members.service.js +161 -117
  407. package/dist/orgs/offboarding.d.ts +54 -57
  408. package/dist/orgs/offboarding.js +161 -71
  409. package/dist/orgs/org-lock.d.ts +28 -19
  410. package/dist/orgs/org-lock.js +81 -35
  411. package/dist/orgs/org.guard.d.ts +1 -1
  412. package/dist/orgs/org.guard.js +2 -2
  413. package/dist/orgs/orgs.controller.d.ts +13 -13
  414. package/dist/orgs/orgs.controller.js +29 -17
  415. package/dist/orgs/orgs.module.d.ts +6 -0
  416. package/dist/orgs/orgs.module.js +68 -0
  417. package/dist/orgs/orgs.service.d.ts +30 -19
  418. package/dist/orgs/orgs.service.js +139 -86
  419. package/dist/orgs/settings.controller.d.ts +1 -1
  420. package/dist/orgs/settings.controller.js +8 -6
  421. package/dist/orgs/settings.service.d.ts +14 -8
  422. package/dist/orgs/settings.service.js +75 -46
  423. package/dist/overrides.d.ts +56 -0
  424. package/dist/overrides.js +30 -0
  425. package/dist/roles/gateway-role.d.ts +43 -0
  426. package/dist/roles/gateway-role.js +98 -0
  427. package/dist/roles/gateway.module.d.ts +8 -0
  428. package/dist/roles/gateway.module.js +28 -0
  429. package/dist/roles/worker-role.d.ts +63 -0
  430. package/dist/roles/worker-role.js +144 -0
  431. package/dist/roles/worker.module.d.ts +14 -0
  432. package/dist/roles/worker.module.js +90 -0
  433. package/dist/runtime/abort.js +19 -2
  434. package/dist/runtime/checkpointer.d.ts +8 -3
  435. package/dist/runtime/checkpointer.js +87 -55
  436. package/dist/runtime/conversation-lock.d.ts +20 -11
  437. package/dist/runtime/conversation-lock.js +62 -72
  438. package/dist/runtime/hook-calls.d.ts +3 -3
  439. package/dist/runtime/hook-calls.js +1 -6
  440. package/dist/runtime/job-ids.d.ts +10 -0
  441. package/dist/runtime/job-ids.js +10 -0
  442. package/dist/runtime/langgraph-loop.js +1 -1
  443. package/dist/runtime/loop.d.ts +7 -0
  444. package/dist/runtime/loop.js +14 -0
  445. package/dist/runtime/maintenance-queue.d.ts +10 -0
  446. package/dist/runtime/maintenance-queue.js +10 -0
  447. package/dist/runtime/maintenance.d.ts +45 -74
  448. package/dist/runtime/maintenance.js +139 -136
  449. package/dist/runtime/model-call.d.ts +7 -4
  450. package/dist/runtime/model-call.js +24 -57
  451. package/dist/runtime/providers.d.ts +17 -6
  452. package/dist/runtime/providers.js +66 -25
  453. package/dist/runtime/quota.d.ts +17 -3
  454. package/dist/runtime/quota.js +27 -2
  455. package/dist/runtime/retired-schedulers.d.ts +7 -0
  456. package/dist/runtime/retired-schedulers.js +31 -0
  457. package/dist/runtime/run-control.d.ts +33 -0
  458. package/dist/runtime/run-control.js +77 -0
  459. package/dist/runtime/run-finish.d.ts +26 -17
  460. package/dist/runtime/run-finish.js +98 -51
  461. package/dist/runtime/run-jobs.d.ts +48 -0
  462. package/dist/runtime/run-jobs.js +95 -0
  463. package/dist/runtime/run-processors.d.ts +60 -0
  464. package/dist/runtime/run-processors.js +185 -0
  465. package/dist/runtime/run-queue.d.ts +32 -57
  466. package/dist/runtime/run-queue.js +291 -295
  467. package/dist/runtime/run-steps.d.ts +39 -0
  468. package/dist/runtime/run-steps.js +96 -0
  469. package/dist/runtime/run-worker.d.ts +121 -75
  470. package/dist/runtime/run-worker.js +340 -225
  471. package/dist/runtime/runtime.module.d.ts +10 -0
  472. package/dist/runtime/runtime.module.js +112 -0
  473. package/dist/runtime/step-log.d.ts +40 -0
  474. package/dist/runtime/step-log.js +94 -0
  475. package/dist/runtime/stream.controller.d.ts +5 -8
  476. package/dist/runtime/stream.controller.js +14 -12
  477. package/dist/runtime/stream.d.ts +24 -6
  478. package/dist/runtime/stream.js +78 -7
  479. package/dist/runtime/subagents/child.d.ts +3 -44
  480. package/dist/runtime/subagents/child.js +0 -79
  481. package/dist/runtime/subagents/definition.d.ts +4 -4
  482. package/dist/runtime/subagents/definition.js +2 -2
  483. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  484. package/dist/runtime/subagents/dispatch.js +135 -140
  485. package/dist/runtime/subagents/limits.d.ts +9 -4
  486. package/dist/runtime/subagents/limits.js +4 -2
  487. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  488. package/dist/runtime/subagents/org-agents.js +1 -1
  489. package/dist/runtime/subagents/progress.d.ts +2 -2
  490. package/dist/runtime/subagents/roster.d.ts +3 -3
  491. package/dist/runtime/subagents/roster.js +1 -1
  492. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  493. package/dist/runtime/subagents/skill-fork.js +16 -5
  494. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  495. package/dist/runtime/subagents/subagents.service.js +101 -0
  496. package/dist/runtime/usage-report.d.ts +94 -52
  497. package/dist/runtime/usage-report.js +200 -99
  498. package/dist/runtime/waits.d.ts +125 -57
  499. package/dist/runtime/waits.js +431 -208
  500. package/dist/sandbox/job-ids.d.ts +10 -0
  501. package/dist/sandbox/job-ids.js +10 -0
  502. package/dist/sandbox/jobs.d.ts +41 -0
  503. package/dist/sandbox/jobs.js +113 -0
  504. package/dist/sandbox/leases.d.ts +39 -31
  505. package/dist/sandbox/leases.js +117 -257
  506. package/dist/sandbox/providers.d.ts +19 -0
  507. package/dist/sandbox/providers.js +38 -0
  508. package/dist/sandbox/sandbox.module.d.ts +8 -0
  509. package/dist/sandbox/sandbox.module.js +30 -0
  510. package/dist/sandbox/sandbox.service.d.ts +24 -29
  511. package/dist/sandbox/sandbox.service.js +106 -75
  512. package/dist/skills/catalog.d.ts +33 -20
  513. package/dist/skills/catalog.js +96 -53
  514. package/dist/skills/changes.controller.d.ts +4 -4
  515. package/dist/skills/changes.controller.js +15 -9
  516. package/dist/skills/changes.service.d.ts +28 -18
  517. package/dist/skills/changes.service.js +421 -364
  518. package/dist/skills/invocable.controller.d.ts +1 -1
  519. package/dist/skills/invocable.controller.js +8 -5
  520. package/dist/skills/invoke.d.ts +16 -15
  521. package/dist/skills/invoke.js +48 -17
  522. package/dist/skills/skills.controller.d.ts +1 -1
  523. package/dist/skills/skills.controller.js +11 -6
  524. package/dist/skills/skills.module.d.ts +6 -0
  525. package/dist/skills/skills.module.js +30 -0
  526. package/dist/skills/skills.service.d.ts +47 -30
  527. package/dist/skills/skills.service.js +221 -158
  528. package/dist/storage/job-ids.d.ts +6 -0
  529. package/dist/storage/job-ids.js +6 -0
  530. package/dist/storage/purge.d.ts +22 -7
  531. package/dist/storage/purge.js +55 -3
  532. package/dist/storage/storage.module.d.ts +6 -0
  533. package/dist/storage/storage.module.js +23 -0
  534. package/dist/storage/storage.service.d.ts +18 -4
  535. package/dist/storage/storage.service.js +44 -3
  536. package/dist/tools/approvals.controller.d.ts +1 -1
  537. package/dist/tools/approvals.controller.js +12 -8
  538. package/dist/tools/approvals.service.d.ts +27 -25
  539. package/dist/tools/approvals.service.js +324 -258
  540. package/dist/tools/breaker.d.ts +2 -2
  541. package/dist/tools/breaker.js +21 -3
  542. package/dist/tools/builtins/ask-user.d.ts +2 -2
  543. package/dist/tools/builtins/ask-user.js +1 -1
  544. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  545. package/dist/tools/builtins/builtin-tools.js +80 -0
  546. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  547. package/dist/tools/builtins/read-tool-output.js +1 -1
  548. package/dist/tools/builtins/sandbox/bash.js +2 -2
  549. package/dist/tools/builtins/sandbox/common.d.ts +7 -4
  550. package/dist/tools/builtins/sandbox/common.js +5 -3
  551. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  552. package/dist/tools/builtins/sandbox/edit.js +1 -1
  553. package/dist/tools/builtins/sandbox/glob.js +2 -2
  554. package/dist/tools/builtins/sandbox/grep.js +2 -2
  555. package/dist/tools/builtins/sandbox/read.js +1 -1
  556. package/dist/tools/builtins/sandbox/write.js +1 -1
  557. package/dist/tools/builtins/skill-load.d.ts +3 -3
  558. package/dist/tools/builtins/skill-load.js +1 -1
  559. package/dist/tools/canonical-json.d.ts +6 -0
  560. package/dist/tools/canonical-json.js +16 -0
  561. package/dist/tools/connector-content.controller.d.ts +1 -1
  562. package/dist/tools/connector-content.controller.js +11 -6
  563. package/dist/tools/connector-content.d.ts +12 -15
  564. package/dist/tools/connector-content.js +53 -18
  565. package/dist/tools/connectors.controller.d.ts +1 -1
  566. package/dist/tools/connectors.controller.js +21 -10
  567. package/dist/tools/connectors.service.d.ts +31 -13
  568. package/dist/tools/connectors.service.js +434 -344
  569. package/dist/tools/credentials.d.ts +17 -20
  570. package/dist/tools/credentials.js +55 -34
  571. package/dist/tools/drift.d.ts +29 -41
  572. package/dist/tools/drift.js +111 -79
  573. package/dist/tools/info.d.ts +12 -9
  574. package/dist/tools/info.js +33 -7
  575. package/dist/tools/job-ids.d.ts +13 -0
  576. package/dist/tools/job-ids.js +15 -0
  577. package/dist/tools/jobs.d.ts +24 -0
  578. package/dist/tools/jobs.js +69 -0
  579. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  580. package/dist/tools/oauth/flow-paths.js +38 -0
  581. package/dist/tools/oauth/flow.d.ts +30 -30
  582. package/dist/tools/oauth/flow.js +109 -81
  583. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  584. package/dist/tools/oauth/oauth.controller.js +12 -9
  585. package/dist/tools/oauth/tokens.d.ts +11 -3
  586. package/dist/tools/oauth/tokens.js +15 -14
  587. package/dist/tools/outputs.d.ts +13 -4
  588. package/dist/tools/outputs.js +47 -3
  589. package/dist/tools/pipeline.d.ts +62 -46
  590. package/dist/tools/pipeline.js +145 -64
  591. package/dist/tools/policy.d.ts +2 -2
  592. package/dist/tools/questions.controller.d.ts +1 -1
  593. package/dist/tools/questions.controller.js +8 -5
  594. package/dist/tools/questions.service.d.ts +25 -24
  595. package/dist/tools/questions.service.js +201 -142
  596. package/dist/tools/registry.d.ts +30 -20
  597. package/dist/tools/registry.js +73 -37
  598. package/dist/tools/specs.d.ts +5 -4
  599. package/dist/tools/specs.js +3 -1
  600. package/dist/tools/tools.module.d.ts +10 -0
  601. package/dist/tools/tools.module.js +91 -0
  602. package/dist/ui/call-extension.d.ts +16 -0
  603. package/dist/ui/call-extension.js +38 -0
  604. package/dist/ui/embed-token.d.ts +9 -5
  605. package/dist/ui/embed-token.js +34 -6
  606. package/dist/ui/ui-stream.d.ts +22 -17
  607. package/dist/ui/ui-stream.js +72 -12
  608. package/dist/ui/ui.module.d.ts +7 -0
  609. package/dist/ui/ui.module.js +28 -0
  610. package/dist/ui/views.controller.d.ts +14 -12
  611. package/dist/ui/views.controller.js +32 -25
  612. package/dist/ui/views.d.ts +9 -57
  613. package/dist/ui/views.js +43 -45
  614. package/package.json +11 -2
  615. package/dist/http/health.controller.d.ts +0 -26
  616. package/dist/http/health.controller.js +0 -79
  617. package/dist/http/tokens.d.ts +0 -131
  618. package/dist/http/tokens.js +0 -131
  619. package/dist/http/zod.pipe.d.ts +0 -8
  620. package/dist/http/zod.pipe.js +0 -14
  621. package/dist/identity/rate-limit.d.ts +0 -55
  622. package/dist/identity/rate-limit.js +0 -121
  623. package/dist/sandbox/lifecycle.d.ts +0 -21
  624. package/dist/sandbox/lifecycle.js +0 -68
  625. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  626. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -0,0 +1,56 @@
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 { SetupLockModule } from "../admin/setup-lock.js";
9
+ import { ExtensionRegistryModule } from "../extensions/registry.js";
10
+ import { OrgLockModule } from "../orgs/org-lock.js";
11
+ import { AccountsModule } from "./accounts.js";
12
+ import { ApiTokenService } from "./api-tokens.js";
13
+ import { IdentityBinding } from "./binding.js";
14
+ import { EnterpriseAdminLockModule } from "./enterprise-admin.js";
15
+ import { ExternalIdentities } from "./external.js";
16
+ import { ExternalIdentityLock } from "./external-identity-lock.js";
17
+ import { SessionService } from "./sessions.js";
18
+ import { SettingsService } from "./settings.js";
19
+ import { SsoFlow } from "./sso.js";
20
+ /**
21
+ * Identity: accounts, sessions, API tokens, deployment settings and the enterprise admin lock,
22
+ * external identities with IM binding and third-party sign-in.
23
+ */
24
+ let IdentityModule = class IdentityModule {
25
+ };
26
+ IdentityModule = __decorate([
27
+ Module({
28
+ imports: [
29
+ AccountsModule,
30
+ OrgLockModule,
31
+ SetupLockModule,
32
+ EnterpriseAdminLockModule,
33
+ ExtensionRegistryModule,
34
+ ],
35
+ providers: [
36
+ SessionService,
37
+ ApiTokenService,
38
+ SettingsService,
39
+ ExternalIdentityLock,
40
+ ExternalIdentities,
41
+ IdentityBinding,
42
+ SsoFlow,
43
+ ],
44
+ exports: [
45
+ AccountsModule,
46
+ SessionService,
47
+ ApiTokenService,
48
+ SettingsService,
49
+ EnterpriseAdminLockModule,
50
+ ExternalIdentities,
51
+ IdentityBinding,
52
+ SsoFlow,
53
+ ],
54
+ })
55
+ ], IdentityModule);
56
+ export { IdentityModule };
@@ -1,22 +1,22 @@
1
1
  import type { Logger } from "@capybara-hq/plugin-sdk";
2
2
  import type { FastifyReply, FastifyRequest } from "fastify";
3
3
  import { z } from "zod";
4
- import type { OrgsService } from "../orgs/orgs.service.js";
4
+ import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
5
+ import { OrgsService } from "../orgs/orgs.service.js";
5
6
  import type { OrgRole } from "../orgs/roles.js";
6
- import type { Account, AccountsService } from "./accounts.js";
7
- import { type ApiTokenRecord, type ApiTokenService } from "./api-tokens.js";
7
+ import { type Account, AccountsService } from "./accounts.js";
8
+ import { type ApiTokenRecord, ApiTokenService } from "./api-tokens.js";
8
9
  import { type Principal } from "./principal.js";
9
- import type { LoginRateLimiter } from "./rate-limit.js";
10
- import type { SessionService } from "./sessions.js";
11
- declare const ChangePasswordBody: z.ZodObject<{
10
+ import { SessionService } from "./sessions.js";
11
+ declare const ChangePasswordSchema: z.ZodObject<{
12
12
  currentPassword: z.ZodString;
13
13
  newPassword: z.ZodString;
14
14
  }, z.core.$strip>;
15
- declare const TokenBody: z.ZodObject<{
15
+ declare const TokenSchema: z.ZodObject<{
16
16
  name: z.ZodString;
17
17
  expiresAt: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
18
18
  }, z.core.$strip>;
19
- declare const CurrentOrgBody: z.ZodObject<{
19
+ declare const CurrentOrgSchema: z.ZodObject<{
20
20
  orgId: z.ZodNullable<z.ZodString>;
21
21
  }, z.core.$strip>;
22
22
  type MembershipView = {
@@ -31,9 +31,9 @@ export declare class MeController {
31
31
  private readonly sessions;
32
32
  private readonly orgs;
33
33
  private readonly tokens;
34
- private readonly limiter;
34
+ private readonly throttler;
35
35
  private readonly log;
36
- constructor(accounts: AccountsService, sessions: SessionService, orgs: OrgsService, tokens: ApiTokenService, limiter: LoginRateLimiter, log: Logger);
36
+ constructor(accounts: AccountsService, sessions: SessionService, orgs: OrgsService, tokens: ApiTokenService, throttler: CredentialThrottler, log: Logger);
37
37
  me(principal: Principal): Promise<{
38
38
  account: Account;
39
39
  via: "session" | "pat";
@@ -41,15 +41,16 @@ export declare class MeController {
41
41
  memberships: MembershipView[];
42
42
  }>;
43
43
  /** 切换当前组织(仅 Web 会话);`null` 清空。非成员或已软删除的组织 → `org.not_found`。 */
44
- setCurrentOrg(principal: Principal, body: z.infer<typeof CurrentOrgBody>): Promise<void>;
44
+ setCurrentOrg(principal: Principal, body: z.infer<typeof CurrentOrgSchema>): Promise<void>;
45
45
  /**
46
46
  * 改密码:核对旧密码;成功后吊销该账号除当前会话外的所有会话,并吊销其全部个人访问令牌(R24)——
47
47
  * 三者在同一个 PG 事务里生效,之后再尽力写 Redis 吊销标记。
48
- * 核对前先占用限流额度(scope `acct`:按账号 id 10 次、按客户端 IP 50 次,与登录的 IP 额度分开),
49
- * 防止拿到会话的人无限次猜旧密码;超限 → 429 `auth.rate_limited`,核对成功后清零账号计数。
48
+ * Before the check one attempt is reserved (per account id 10, per client IP 50, apart from the
49
+ * login IP budget), so a stolen session cannot guess the old password forever; over the limit →
50
+ * 429 `auth.rate_limited`; a successful check clears the account counter.
50
51
  */
51
- changePassword(principal: Principal, body: z.infer<typeof ChangePasswordBody>, req: FastifyRequest, reply: FastifyReply): Promise<void>;
52
- createToken(principal: Principal, body: z.infer<typeof TokenBody>): Promise<{
52
+ changePassword(principal: Principal, body: z.infer<typeof ChangePasswordSchema>, req: FastifyRequest, reply: FastifyReply): Promise<void>;
53
+ createToken(principal: Principal, body: z.infer<typeof TokenSchema>): Promise<{
53
54
  token: string;
54
55
  record: ApiTokenRecord;
55
56
  }>;
@@ -7,40 +7,50 @@ 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, Post, Put, Req, Res, } from "@nestjs/common";
10
+ import { Controller, Delete, Get, HttpCode, Inject, Param, Post, Put, Req, Res, } from "@nestjs/common";
11
11
  import { z } from "zod";
12
12
  import { ApiError } from "../errors.js";
13
- import { ACCOUNTS, API_TOKENS, KERNEL_LOG, ORGS, RATE_LIMITER, SESSIONS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
15
- import { FutureIsoDate } from "./api-tokens.js";
16
- import { clientMeta } from "./auth.controller.js";
13
+ import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
14
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
15
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
+ import { ZBody } from "../infra/validation/zod-params.js";
17
+ import { OrgsService } from "../orgs/orgs.service.js";
18
+ import { AccountsService } from "./accounts.js";
19
+ import { ApiTokenService, FutureIsoDate } from "./api-tokens.js";
17
20
  import { MAX_PASSWORD_LENGTH } from "./login.js";
18
21
  import { CurrentPrincipal, requireUser, SessionOnly } from "./principal.js";
19
- /** 改密码时同一账号在窗口内允许核对旧密码的次数。 */
20
- const CHANGE_PASSWORD_LIMIT_PER_ACCOUNT = 10;
21
- const ChangePasswordBody = z.object({
22
+ import { SessionService } from "./sessions.js";
23
+ /** The credential throttlers of a password change (per account, per client IP). */
24
+ const CHANGE_PASSWORD_THROTTLERS = ["change-password", "change-password-ip"];
25
+ const ChangePasswordSchema = z.object({
22
26
  currentPassword: z.string().min(1),
23
27
  newPassword: z.string().min(12).max(MAX_PASSWORD_LENGTH),
24
28
  });
25
- const TokenBody = z.object({
29
+ class ChangePasswordBody extends createZodDto(ChangePasswordSchema, "ChangePasswordBody") {
30
+ }
31
+ const TokenSchema = z.object({
26
32
  name: z.string().min(1).max(100),
27
33
  expiresAt: FutureIsoDate.optional(),
28
34
  });
29
- const CurrentOrgBody = z.object({ orgId: z.string().min(1).nullable() });
35
+ class PersonalTokenBody extends createZodDto(TokenSchema, "PersonalTokenBody") {
36
+ }
37
+ const CurrentOrgSchema = z.object({ orgId: z.string().min(1).nullable() });
38
+ class CurrentOrgBody extends createZodDto(CurrentOrgSchema, "CurrentOrgBody") {
39
+ }
30
40
  /** 当前用户(`/api/v1/me`)。 */
31
41
  let MeController = class MeController {
32
42
  accounts;
33
43
  sessions;
34
44
  orgs;
35
45
  tokens;
36
- limiter;
46
+ throttler;
37
47
  log;
38
- constructor(accounts, sessions, orgs, tokens, limiter, log) {
48
+ constructor(accounts, sessions, orgs, tokens, throttler, log) {
39
49
  this.accounts = accounts;
40
50
  this.sessions = sessions;
41
51
  this.orgs = orgs;
42
52
  this.tokens = tokens;
43
- this.limiter = limiter;
53
+ this.throttler = throttler;
44
54
  this.log = log;
45
55
  }
46
56
  async me(principal) {
@@ -65,24 +75,20 @@ let MeController = class MeController {
65
75
  /**
66
76
  * 改密码:核对旧密码;成功后吊销该账号除当前会话外的所有会话,并吊销其全部个人访问令牌(R24)——
67
77
  * 三者在同一个 PG 事务里生效,之后再尽力写 Redis 吊销标记。
68
- * 核对前先占用限流额度(scope `acct`:按账号 id 10 次、按客户端 IP 50 次,与登录的 IP 额度分开),
69
- * 防止拿到会话的人无限次猜旧密码;超限 → 429 `auth.rate_limited`,核对成功后清零账号计数。
78
+ * Before the check one attempt is reserved (per account id 10, per client IP 50, apart from the
79
+ * login IP budget), so a stolen session cannot guess the old password forever; over the limit →
80
+ * 429 `auth.rate_limited`; a successful check clears the account counter.
70
81
  */
71
82
  async changePassword(principal, body, req, reply) {
72
83
  const p = requireUser(principal);
73
84
  if (p.via !== "session") {
74
85
  throw new ApiError("auth.session_required", "This endpoint requires a web session");
75
86
  }
76
- const { ip } = clientMeta(req);
77
- const rl = await this.limiter.reserveScoped("acct", p.account.id, ip, CHANGE_PASSWORD_LIMIT_PER_ACCOUNT);
78
- if (!rl.allowed) {
79
- reply.header("retry-after", String(rl.retryAfterSeconds));
80
- throw new ApiError("auth.rate_limited", "Too many failed password attempts; try again later");
81
- }
87
+ await this.throttler.reserve(CHANGE_PASSWORD_THROTTLERS, req, reply);
82
88
  if (!(await this.accounts.verifyPassword(p.account.id, body.currentPassword))) {
83
89
  throw new ApiError("auth.invalid_credentials", "Current password is incorrect");
84
90
  }
85
- await this.limiter.succeededScoped("acct", p.account.id, ip);
91
+ await this.throttler.succeeded(CHANGE_PASSWORD_THROTTLERS, req);
86
92
  // 新密码、吊销其他会话(PG revoked_at)与个人令牌在同一个 PG 事务里完成
87
93
  const revoked = await this.accounts.changePassword(p.account.id, body.newPassword, p.sessionId);
88
94
  try {
@@ -118,14 +124,14 @@ __decorate([
118
124
  SessionOnly(),
119
125
  HttpCode(204),
120
126
  __param(0, CurrentPrincipal()),
121
- __param(1, Body(new ZodPipe(CurrentOrgBody)))
127
+ __param(1, ZBody(CurrentOrgBody))
122
128
  ], MeController.prototype, "setCurrentOrg", null);
123
129
  __decorate([
124
130
  Put("password"),
125
131
  SessionOnly(),
126
132
  HttpCode(204),
127
133
  __param(0, CurrentPrincipal()),
128
- __param(1, Body(new ZodPipe(ChangePasswordBody))),
134
+ __param(1, ZBody(ChangePasswordBody)),
129
135
  __param(2, Req()),
130
136
  __param(3, Res({ passthrough: true }))
131
137
  ], MeController.prototype, "changePassword", null);
@@ -133,7 +139,7 @@ __decorate([
133
139
  Post("tokens"),
134
140
  SessionOnly(),
135
141
  __param(0, CurrentPrincipal()),
136
- __param(1, Body(new ZodPipe(TokenBody)))
142
+ __param(1, ZBody(PersonalTokenBody))
137
143
  ], MeController.prototype, "createToken", null);
138
144
  __decorate([
139
145
  Get("tokens"),
@@ -149,11 +155,11 @@ __decorate([
149
155
  ], MeController.prototype, "revokeToken", null);
150
156
  MeController = __decorate([
151
157
  Controller("api/v1/me"),
152
- __param(0, Inject(ACCOUNTS)),
153
- __param(1, Inject(SESSIONS)),
154
- __param(2, Inject(ORGS)),
155
- __param(3, Inject(API_TOKENS)),
156
- __param(4, Inject(RATE_LIMITER)),
157
- __param(5, Inject(KERNEL_LOG))
158
+ __param(0, Inject(AccountsService)),
159
+ __param(1, Inject(SessionService)),
160
+ __param(2, Inject(OrgsService)),
161
+ __param(3, Inject(ApiTokenService)),
162
+ __param(4, Inject(CredentialThrottler)),
163
+ __param(5, Inject(KERNEL_LOGGER))
158
164
  ], MeController);
159
165
  export { MeController };
@@ -1,6 +1,8 @@
1
1
  import type { Redis } from "ioredis";
2
2
  import type { Keyring } from "../ctx/secrets.js";
3
- import type { KernelDb } from "../db/kernel-schema.js";
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
6
  import { type Account } from "./accounts.js";
5
7
  export interface IssuedSession {
6
8
  sessionId: string;
@@ -16,25 +18,24 @@ export declare const REFRESH_RACE_GRACE_MS = 30000;
16
18
  * Web 会话服务:短期 access token(HS256 JWT,密钥由主密钥环派生)+ PG 中可吊销、一次一换的 refresh token。
17
19
  * 吊销会在 Redis 写 `capk:revoked-sid:<sid>`(TTL 覆盖任何配置下 access token 的最长剩余寿命),使所有副本立即拒绝该会话的 access token;
18
20
  * 验证 access token 时还会读 PG 的 `sessions.revoked_at`,Redis 丢数据也不会让已吊销的会话复活。
19
- * 框架无关,由调用方注入依赖。
21
+ * Token lifetimes are `auth.accessTokenTtlSeconds` / `auth.refreshTokenTtlDays`, read per session.
20
22
  */
21
23
  export declare class SessionService {
22
24
  private readonly db;
25
+ readonly txHost: TransactionHost;
23
26
  private readonly redis;
24
- private readonly opts;
27
+ private readonly config;
25
28
  private readonly keys;
26
- constructor(db: KernelDb, redis: Redis, keyring: Keyring, opts: {
27
- accessTtlSeconds: number;
28
- refreshTtlDays: number;
29
- });
29
+ constructor(db: KernelDb, txHost: TransactionHost, redis: Redis, keyring: Keyring, config: Pick<KernelConfigService, "get">);
30
30
  /**
31
- * 新建会话。传入 `trx` 时会话行在调用方的事务里写入(如初始化、凭邀请注册:与账号同一事务,
32
- * 失败整体回滚);Cookie 由调用方在提交之后再设置。
31
+ * Creates a session, in the context's transaction when there is one (setup and invitation
32
+ * signup write it with the account, rolled back together); the caller sets the cookies after the
33
+ * commit.
33
34
  */
34
35
  create(accountId: string, meta: {
35
36
  userAgent?: string;
36
37
  ip?: string;
37
- }, trx?: KernelDb): Promise<IssuedSession>;
38
+ }): Promise<IssuedSession>;
38
39
  refresh(refreshToken: string, meta: {
39
40
  userAgent?: string;
40
41
  ip?: string;
@@ -73,6 +74,7 @@ export declare class SessionService {
73
74
  * 不会留下指向已移出组织的 `current_org_id`。非成员或组织已软删除 → `org.not_found`;`null` 清空,不查成员关系。
74
75
  */
75
76
  switchCurrentOrg(sessionId: string, accountId: string, orgId: string | null): Promise<void>;
77
+ private switchIn;
76
78
  /** 有效(未吊销且未过期)的会话;否则返回 undefined。 */
77
79
  get(sessionId: string): Promise<{
78
80
  id: string;
@@ -1,8 +1,23 @@
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 { errors as joseErrors, jwtVerify, SignJWT } from "jose";
3
13
  import { sql } from "kysely";
4
14
  import { ACCESS_TOKEN_TTL_MAX_SECONDS } from "../config/schema.js";
5
15
  import { ApiError } from "../errors.js";
16
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
17
+ import { KernelDb } from "../infra/database/kernel-db.js";
18
+ import { TransactionHost } from "../infra/database/transaction-host.js";
19
+ import { Transactional } from "../infra/database/transactional.decorator.js";
20
+ import { KEYRING, REDIS } from "../infra/tokens.js";
6
21
  import { ACCOUNT_COLUMNS, toAccount } from "./accounts.js";
7
22
  import { sha256Hex } from "./hash.js";
8
23
  /** 旧 refresh token 在被轮换后多久内重放视为并发刷新(不吊销会话)。 */
@@ -24,27 +39,31 @@ class UnknownKidError extends Error {
24
39
  * Web 会话服务:短期 access token(HS256 JWT,密钥由主密钥环派生)+ PG 中可吊销、一次一换的 refresh token。
25
40
  * 吊销会在 Redis 写 `capk:revoked-sid:<sid>`(TTL 覆盖任何配置下 access token 的最长剩余寿命),使所有副本立即拒绝该会话的 access token;
26
41
  * 验证 access token 时还会读 PG 的 `sessions.revoked_at`,Redis 丢数据也不会让已吊销的会话复活。
27
- * 框架无关,由调用方注入依赖。
42
+ * Token lifetimes are `auth.accessTokenTtlSeconds` / `auth.refreshTokenTtlDays`, read per session.
28
43
  */
29
- export class SessionService {
44
+ let SessionService = class SessionService {
30
45
  db;
46
+ txHost;
31
47
  redis;
32
- opts;
48
+ config;
33
49
  keys;
34
- constructor(db, redis, keyring, opts) {
50
+ constructor(db, txHost, redis, keyring, config) {
35
51
  this.db = db;
52
+ this.txHost = txHost;
36
53
  this.redis = redis;
37
- this.opts = opts;
54
+ this.config = config;
38
55
  this.keys = keyring.deriveKey(ACCESS_KEY_INFO);
39
56
  }
40
57
  /**
41
- * 新建会话。传入 `trx` 时会话行在调用方的事务里写入(如初始化、凭邀请注册:与账号同一事务,
42
- * 失败整体回滚);Cookie 由调用方在提交之后再设置。
58
+ * Creates a session, in the context's transaction when there is one (setup and invitation
59
+ * signup write it with the account, rolled back together); the caller sets the cookies after the
60
+ * commit.
43
61
  */
44
- async create(accountId, meta, trx) {
62
+ async create(accountId, meta) {
45
63
  const id = randomUUID();
46
64
  const refreshToken = newRefreshToken();
47
- const row = await (trx ?? this.db)
65
+ const refreshTtlDays = this.config.get().auth.refreshTokenTtlDays;
66
+ const row = await this.db
48
67
  .insertInto("sessions")
49
68
  .values({
50
69
  id,
@@ -52,7 +71,7 @@ export class SessionService {
52
71
  refresh_hash: sha256Hex(refreshToken),
53
72
  user_agent: meta.userAgent ?? null,
54
73
  ip: meta.ip ?? null,
55
- expires_at: sql `now() + make_interval(days => ${this.opts.refreshTtlDays})`,
74
+ expires_at: sql `now() + make_interval(days => ${refreshTtlDays})`,
56
75
  })
57
76
  .returning(["expires_at"])
58
77
  .executeTakeFirstOrThrow();
@@ -236,37 +255,38 @@ export class SessionService {
236
255
  async switchCurrentOrg(sessionId, accountId, orgId) {
237
256
  if (orgId === null)
238
257
  return this.setCurrentOrg(sessionId, null);
239
- await this.db.transaction().execute(async (t) => {
240
- // 加锁顺序与移出成员一致:先组织行、再成员关系行(sessions.current_org_id 的外键检查也会锁组织行,
241
- // 若先锁成员关系,会与持有组织行锁的移出成员互相等待而死锁)
242
- const org = await t
243
- .selectFrom("orgs")
244
- .select("id")
245
- .where("id", "=", orgId)
246
- .where("deleted_at", "is", null)
258
+ await this.switchIn(sessionId, accountId, orgId);
259
+ }
260
+ async switchIn(sessionId, accountId, orgId) {
261
+ // 加锁顺序与移出成员一致:先组织行、再成员关系行(sessions.current_org_id 的外键检查也会锁组织行,
262
+ // 若先锁成员关系,会与持有组织行锁的移出成员互相等待而死锁)
263
+ const org = await this.db
264
+ .selectFrom("orgs")
265
+ .select("id")
266
+ .where("id", "=", orgId)
267
+ .where("deleted_at", "is", null)
268
+ .forShare()
269
+ .executeTakeFirst();
270
+ const m = org &&
271
+ (await this.db
272
+ .selectFrom("memberships")
273
+ .select("role")
274
+ .where("org_id", "=", orgId)
275
+ .where("account_id", "=", accountId)
247
276
  .forShare()
248
- .executeTakeFirst();
249
- const m = org &&
250
- (await t
251
- .selectFrom("memberships")
252
- .select("role")
253
- .where("org_id", "=", orgId)
254
- .where("account_id", "=", accountId)
255
- .forShare()
256
- .executeTakeFirst());
257
- if (!m)
258
- throw new ApiError("org.not_found", "Organization not found");
259
- const r = await t
260
- .updateTable("sessions")
261
- .set({ current_org_id: orgId })
262
- .where("id", "=", sessionId)
263
- .where("revoked_at", "is", null)
264
- .where("expires_at", ">", sql `now()`)
265
- .executeTakeFirst();
266
- if (r.numUpdatedRows === 0n) {
267
- throw new ApiError("auth.session_revoked", "Session has been revoked");
268
- }
269
- });
277
+ .executeTakeFirst());
278
+ if (!m)
279
+ throw new ApiError("org.not_found", "Organization not found");
280
+ const r = await this.db
281
+ .updateTable("sessions")
282
+ .set({ current_org_id: orgId })
283
+ .where("id", "=", sessionId)
284
+ .where("revoked_at", "is", null)
285
+ .where("expires_at", ">", sql `now()`)
286
+ .executeTakeFirst();
287
+ if (r.numUpdatedRows === 0n) {
288
+ throw new ApiError("auth.session_revoked", "Session has been revoked");
289
+ }
270
290
  }
271
291
  /** 有效(未吊销且未过期)的会话;否则返回 undefined。 */
272
292
  async get(sessionId) {
@@ -287,7 +307,7 @@ export class SessionService {
287
307
  };
288
308
  async issue(sessionId, accountId, refreshToken, refreshExpiresAt) {
289
309
  const iat = Math.floor(Date.now() / 1000);
290
- const exp = iat + this.opts.accessTtlSeconds;
310
+ const exp = iat + this.config.get().auth.accessTokenTtlSeconds;
291
311
  const accessToken = await new SignJWT({ sid: sessionId })
292
312
  .setProtectedHeader({ alg: "HS256", kid: this.keys.currentId })
293
313
  .setSubject(accountId)
@@ -303,4 +323,16 @@ export class SessionService {
303
323
  refreshExpiresAt,
304
324
  };
305
325
  }
306
- }
326
+ };
327
+ __decorate([
328
+ Transactional()
329
+ ], SessionService.prototype, "switchIn", null);
330
+ SessionService = __decorate([
331
+ Injectable(),
332
+ __param(0, Inject(KernelDb)),
333
+ __param(1, Inject(TransactionHost)),
334
+ __param(2, Inject(REDIS)),
335
+ __param(3, Inject(KEYRING)),
336
+ __param(4, Inject(KernelConfigService))
337
+ ], SessionService);
338
+ export { SessionService };
@@ -1,7 +1,9 @@
1
- import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { Transaction } from "kysely";
3
1
  import { z } from "zod";
4
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import { TransactionHost } from "../infra/database/transaction-host.js";
5
+ import type { KernelLogger } from "../log.js";
6
+ import { EnterpriseAdminLock } from "./enterprise-admin.js";
5
7
  /** 沙箱 cpu(核)与内存(MB)覆盖的范围(C19)。 */
6
8
  export declare const SANDBOX_CPU_RANGE: {
7
9
  readonly min: 0.25;
@@ -91,31 +93,35 @@ export type DeploymentSettingsPatch = z.infer<typeof DEPLOYMENT_SETTINGS_PATCH>;
91
93
  * 读某个组织的沙箱限额覆盖(创建沙箱、组织设置页用);每次实时读 PG,多副本下改动立即生效。
92
94
  * 只解析这个组织的那一条:没有设置、组织不在其中、或这一条存量值非法 → undefined;别的组织的条目非法不影响它。
93
95
  */
94
- export declare function readSandboxLimitOverride(db: KernelDb, orgId: string): Promise<SandboxLimitOverride | undefined>;
96
+ export declare function readSandboxLimitOverride(db: KernelSchemaDb, orgId: string): Promise<SandboxLimitOverride | undefined>;
95
97
  /**
96
98
  * One organization's sub-agent limit override, read live from PG (so a change applies on every
97
99
  * replica at once); in the caller's transaction when one is given. Only this organization's entry
98
100
  * is parsed: no setting, no entry, or an invalid stored entry → undefined.
99
101
  */
100
- export declare function readSubagentLimitOverride(db: KernelDb | Transaction<KernelDatabase>, orgId: string): Promise<SubagentLimitOverride | undefined>;
102
+ export declare function readSubagentLimitOverride(db: KernelSchemaDb, orgId: string): Promise<SubagentLimitOverride | undefined>;
101
103
  /**
102
104
  * When orgs may not create their own connectors / skills (deployment setting `customConnectors` /
103
105
  * `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the enterprise
104
106
  * catalog only. Reads PG live every time (can read in the caller's transaction); an invalid stored
105
107
  * value counts as allow.
106
108
  */
107
- export declare function assertCustomAllowed(db: KernelDb | Transaction<KernelDatabase>, key: "customConnectors" | "customSkills"): Promise<void>;
108
- /** 部署级设置:每个键一行,读时缺省用默认值。 */
109
+ export declare function assertCustomAllowed(db: KernelSchemaDb, key: "customConnectors" | "customSkills"): Promise<void>;
110
+ /** Deployment settings: one row per key, defaults for missing keys. */
109
111
  export declare class SettingsService {
110
112
  private readonly db;
111
- private readonly log?;
112
- constructor(db: KernelDb, log?: Pick<Logger, "warn"> | undefined);
113
+ readonly txHost: TransactionHost;
114
+ private readonly adminLock;
115
+ private readonly log;
116
+ constructor(db: KernelDb, txHost: TransactionHost, adminLock: EnterpriseAdminLock, log: Pick<KernelLogger, "warn">);
113
117
  /**
114
- * 读全部设置;传 `trx` 时在该事务内读(调用方已持有事务连接时不再占用池里的第二个连接)。
115
- * 逐个键校验:库里某个键的值非法时该键用默认值并 warn 点名,其余合法的键照常生效;
116
- * 不认识的键(如新版本写入的)忽略。
118
+ * Reads every setting, in the context's transaction when there is one (a caller holding a
119
+ * transaction connection does not take a second one from the pool). Each key is validated on
120
+ * its own: an invalid stored value falls back to the default with a warning naming the key, the
121
+ * valid keys apply; unknown keys (written by a newer version) are ignored.
117
122
  */
118
- get(trx?: Transaction<KernelDatabase>): Promise<DeploymentSettings>;
119
- /** 更新设置:事务内取企业管理员锁并复核发起人仍是活跃企业管理员(否则 `forbidden`)。 */
123
+ get(): Promise<DeploymentSettings>;
124
+ /** Updates settings under the enterprise admin lock, re-checking the actor (else `forbidden`). */
120
125
  update(patch: DeploymentSettingsPatch, actorAccountId: string, actorTokenId?: string): Promise<DeploymentSettings>;
126
+ private write;
121
127
  }