@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
@@ -1,7 +1,21 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
1
11
  import { z } from "zod";
2
12
  import { ApiError } from "../errors.js";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { TransactionHost } from "../infra/database/transaction-host.js";
15
+ import { Transactional } from "../infra/database/transactional.decorator.js";
16
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
3
17
  import { audit } from "./audit.js";
4
- import { lockEnterpriseAdminsAndAuthorize } from "./enterprise-admin.js";
18
+ import { EnterpriseAdminLock } from "./enterprise-admin.js";
5
19
  /** 币种代码:ISO 4217 的三位大写字母(如 USD、CNY)。 */
6
20
  const CurrencyCode = z.string().regex(/^[A-Z]{3}$/, "must be a 3-letter ISO 4217 currency code");
7
21
  /** 沙箱 cpu(核)与内存(MB)覆盖的范围(C19)。 */
@@ -156,24 +170,26 @@ function mergeByOrg(current, patch) {
156
170
  }
157
171
  return merged;
158
172
  }
159
- /** 部署级设置:每个键一行,读时缺省用默认值。 */
160
- export class SettingsService {
173
+ /** Deployment settings: one row per key, defaults for missing keys. */
174
+ let SettingsService = class SettingsService {
161
175
  db;
176
+ txHost;
177
+ adminLock;
162
178
  log;
163
- constructor(db, log) {
179
+ constructor(db, txHost, adminLock, log) {
164
180
  this.db = db;
181
+ this.txHost = txHost;
182
+ this.adminLock = adminLock;
165
183
  this.log = log;
166
184
  }
167
185
  /**
168
- * 读全部设置;传 `trx` 时在该事务内读(调用方已持有事务连接时不再占用池里的第二个连接)。
169
- * 逐个键校验:库里某个键的值非法时该键用默认值并 warn 点名,其余合法的键照常生效;
170
- * 不认识的键(如新版本写入的)忽略。
186
+ * Reads every setting, in the context's transaction when there is one (a caller holding a
187
+ * transaction connection does not take a second one from the pool). Each key is validated on
188
+ * its own: an invalid stored value falls back to the default with a warning naming the key, the
189
+ * valid keys apply; unknown keys (written by a newer version) are ignored.
171
190
  */
172
- async get(trx) {
173
- const rows = await (trx ?? this.db)
174
- .selectFrom("deployment_settings")
175
- .select(["key", "value"])
176
- .execute();
191
+ async get() {
192
+ const rows = await this.db.selectFrom("deployment_settings").select(["key", "value"]).execute();
177
193
  const stored = new Map(rows.map((r) => [r.key, r.value]));
178
194
  const out = { ...DEFAULTS };
179
195
  for (const [key, field] of Object.entries(DEPLOYMENT_SETTINGS.shape)) {
@@ -184,7 +200,7 @@ export class SettingsService {
184
200
  out[key] = parsed.data;
185
201
  }
186
202
  else {
187
- this.log?.warn("invalid deployment setting; using default", {
203
+ this.log.warn("invalid deployment setting; using default", {
188
204
  key,
189
205
  issues: parsed.error.issues.map((i) => i.message),
190
206
  });
@@ -192,57 +208,69 @@ export class SettingsService {
192
208
  }
193
209
  return out;
194
210
  }
195
- /** 更新设置:事务内取企业管理员锁并复核发起人仍是活跃企业管理员(否则 `forbidden`)。 */
211
+ /** Updates settings under the enterprise admin lock, re-checking the actor (else `forbidden`). */
196
212
  async update(patch, actorAccountId, actorTokenId) {
197
213
  const check = DEPLOYMENT_SETTINGS_PATCH.safeParse(patch);
198
214
  if (!check.success) {
199
215
  throw new ApiError("validation_failed", "Invalid deployment settings", check.error.issues.map((i) => ({ path: i.path.join("."), message: i.message })));
200
216
  }
201
- await this.db.transaction().execute(async (trx) => {
202
- await lockEnterpriseAdminsAndAuthorize(trx, actorAccountId);
203
- // 企业管理员锁串行化所有设置修改:在锁内读当前覆盖再合并,不会丢失并发修改。
204
- const next = {};
205
- if (check.data.orgCreation !== undefined)
206
- next.orgCreation = check.data.orgCreation;
207
- if (check.data.priceCurrency !== undefined)
208
- next.priceCurrency = check.data.priceCurrency;
209
- if (check.data.customConnectors !== undefined) {
210
- next.customConnectors = check.data.customConnectors;
217
+ await this.write(check.data, actorAccountId, actorTokenId);
218
+ return this.get();
219
+ }
220
+ async write(patch, actorAccountId, actorTokenId) {
221
+ await this.adminLock.lockAndAuthorize(actorAccountId);
222
+ // The enterprise admin lock serializes every settings write: the current overrides are read
223
+ // and merged under it, so no concurrent change is lost
224
+ const next = {};
225
+ if (patch.orgCreation !== undefined)
226
+ next.orgCreation = patch.orgCreation;
227
+ if (patch.priceCurrency !== undefined)
228
+ next.priceCurrency = patch.priceCurrency;
229
+ if (patch.customConnectors !== undefined)
230
+ next.customConnectors = patch.customConnectors;
231
+ if (patch.customSkills !== undefined)
232
+ next.customSkills = patch.customSkills;
233
+ const { runConcurrencyOverrides: runPatch, sandboxLimitOverrides: sandboxPatch, subagentLimitOverrides: subagentPatch, } = patch;
234
+ if (runPatch !== undefined || sandboxPatch !== undefined || subagentPatch !== undefined) {
235
+ const current = await this.get();
236
+ if (runPatch !== undefined) {
237
+ next.runConcurrencyOverrides = mergeByOrg(current.runConcurrencyOverrides, runPatch);
211
238
  }
212
- if (check.data.customSkills !== undefined)
213
- next.customSkills = check.data.customSkills;
214
- const { runConcurrencyOverrides: runPatch, sandboxLimitOverrides: sandboxPatch, subagentLimitOverrides: subagentPatch, } = check.data;
215
- if (runPatch !== undefined || sandboxPatch !== undefined || subagentPatch !== undefined) {
216
- const current = await this.get(trx);
217
- if (runPatch !== undefined) {
218
- next.runConcurrencyOverrides = mergeByOrg(current.runConcurrencyOverrides, runPatch);
219
- }
220
- if (sandboxPatch !== undefined) {
221
- next.sandboxLimitOverrides = mergeByOrg(current.sandboxLimitOverrides, sandboxPatch);
222
- }
223
- if (subagentPatch !== undefined) {
224
- next.subagentLimitOverrides = mergeByOrg(current.subagentLimitOverrides, subagentPatch);
225
- }
239
+ if (sandboxPatch !== undefined) {
240
+ next.sandboxLimitOverrides = mergeByOrg(current.sandboxLimitOverrides, sandboxPatch);
226
241
  }
227
- for (const [key, value] of Object.entries(next)) {
228
- if (value === undefined)
229
- continue;
230
- const json = JSON.stringify(value);
231
- await trx
232
- .insertInto("deployment_settings")
233
- .values({ key, value: json, updated_by: actorAccountId })
234
- .onConflict((oc) => oc
235
- .column("key")
236
- .doUpdateSet({ value: json, updated_by: actorAccountId, updated_at: new Date() }))
237
- .execute();
242
+ if (subagentPatch !== undefined) {
243
+ next.subagentLimitOverrides = mergeByOrg(current.subagentLimitOverrides, subagentPatch);
238
244
  }
239
- await audit(trx, {
240
- actorAccountId,
241
- ...(actorTokenId !== undefined && { actorTokenId }),
242
- action: "deployment.settings.updated",
243
- detail: check.data,
244
- });
245
+ }
246
+ for (const [key, value] of Object.entries(next)) {
247
+ if (value === undefined)
248
+ continue;
249
+ const json = JSON.stringify(value);
250
+ await this.db
251
+ .insertInto("deployment_settings")
252
+ .values({ key, value: json, updated_by: actorAccountId })
253
+ .onConflict((oc) => oc
254
+ .column("key")
255
+ .doUpdateSet({ value: json, updated_by: actorAccountId, updated_at: new Date() }))
256
+ .execute();
257
+ }
258
+ await audit(this.db.db, {
259
+ actorAccountId,
260
+ ...(actorTokenId !== undefined && { actorTokenId }),
261
+ action: "deployment.settings.updated",
262
+ detail: patch,
245
263
  });
246
- return this.get();
247
264
  }
248
- }
265
+ };
266
+ __decorate([
267
+ Transactional()
268
+ ], SettingsService.prototype, "write", null);
269
+ SettingsService = __decorate([
270
+ Injectable(),
271
+ __param(0, Inject(KernelDb)),
272
+ __param(1, Inject(TransactionHost)),
273
+ __param(2, Inject(EnterpriseAdminLock)),
274
+ __param(3, Inject(KERNEL_LOGGER))
275
+ ], SettingsService);
276
+ export { SettingsService };
@@ -1,11 +1,11 @@
1
1
  import type { FastifyReply, FastifyRequest } from "fastify";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { AccountsService } from "./accounts.js";
4
- import type { IdentityBinding, PendingBinding } from "./binding.js";
5
- import type { ExternalIdentities, LinkedIdentity } from "./external.js";
2
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
3
+ import { AccountsService } from "./accounts.js";
4
+ import { IdentityBinding, type PendingBinding } from "./binding.js";
5
+ import { ExternalIdentities, type LinkedIdentity } from "./external.js";
6
6
  import { type Principal } from "./principal.js";
7
- import type { SessionService } from "./sessions.js";
8
- import { type SsoFlow } from "./sso.js";
7
+ import { SessionService } from "./sessions.js";
8
+ import { SsoFlow } from "./sso.js";
9
9
  /**
10
10
  * 第三方登录(`/api/v1/auth/sources`、`/api/v1/auth/sso/:plugin/*`,均为公开路由)。浏览器整页跳转,
11
11
  * 发起与回调都以 302 结束;失败回登录页并带原因码(`/login?error=<code>`),不回显身份源文本。
@@ -15,7 +15,7 @@ export declare class SsoController {
15
15
  private readonly sessions;
16
16
  private readonly accounts;
17
17
  private readonly config;
18
- constructor(flow: SsoFlow, sessions: SessionService, accounts: AccountsService, config: () => KernelConfig);
18
+ constructor(flow: SsoFlow, sessions: SessionService, accounts: AccountsService, config: KernelConfigService);
19
19
  sources(): {
20
20
  sources: {
21
21
  plugin: string;
@@ -8,11 +8,15 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { Controller, Delete, Get, HttpCode, Inject, Param, Post, Query, Req, Res, } from "@nestjs/common";
11
- import { ACCOUNTS, EXTERNAL_IDENTITIES, IDENTITY_BINDING, KERNEL_CONFIG, SESSIONS, SSO_FLOW, } from "../http/tokens.js";
11
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
12
+ import { AccountsService } from "./accounts.js";
12
13
  import { clientMeta } from "./auth.controller.js";
14
+ import { IdentityBinding } from "./binding.js";
13
15
  import { setSessionCookies } from "./cookies.js";
16
+ import { ExternalIdentities } from "./external.js";
14
17
  import { CurrentPrincipal, Public, requireUser, SessionOnly } from "./principal.js";
15
- import { SSO_BINDING_COOKIE, SSO_COOKIE_PATH, SSO_STATE_TTL_SECONDS, ssoBrowserBinding, } from "./sso.js";
18
+ import { SessionService } from "./sessions.js";
19
+ import { SSO_BINDING_COOKIE, SSO_COOKIE_PATH, SSO_STATE_TTL_SECONDS, SsoFlow, ssoBrowserBinding, } from "./sso.js";
16
20
  const MAX_QUERY_KEYS = 50;
17
21
  const MAX_QUERY_VALUE = 4096;
18
22
  /** 查询参数只取单值字符串(重复参数 / 数组 / 超长值丢弃)。 */
@@ -78,7 +82,7 @@ let SsoController = class SsoController {
78
82
  }
79
83
  else {
80
84
  const session = await this.sessions.create(account.id, clientMeta(req));
81
- setSessionCookies(reply, session, this.config());
85
+ setSessionCookies(reply, session, this.config.get());
82
86
  location = this.flow.webUrl(r.returnTo);
83
87
  }
84
88
  }
@@ -110,10 +114,10 @@ __decorate([
110
114
  ], SsoController.prototype, "callback", null);
111
115
  SsoController = __decorate([
112
116
  Controller("api/v1/auth"),
113
- __param(0, Inject(SSO_FLOW)),
114
- __param(1, Inject(SESSIONS)),
115
- __param(2, Inject(ACCOUNTS)),
116
- __param(3, Inject(KERNEL_CONFIG))
117
+ __param(0, Inject(SsoFlow)),
118
+ __param(1, Inject(SessionService)),
119
+ __param(2, Inject(AccountsService)),
120
+ __param(3, Inject(KernelConfigService))
117
121
  ], SsoController);
118
122
  export { SsoController };
119
123
  /**
@@ -155,7 +159,7 @@ __decorate([
155
159
  ], BindController.prototype, "bind", null);
156
160
  BindController = __decorate([
157
161
  Controller("api/v1/bind"),
158
- __param(0, Inject(IDENTITY_BINDING))
162
+ __param(0, Inject(IdentityBinding))
159
163
  ], BindController);
160
164
  export { BindController };
161
165
  /** 本人绑定的外部身份(`/api/v1/me/identities`):列出、解除。 */
@@ -187,6 +191,6 @@ __decorate([
187
191
  ], MeIdentitiesController.prototype, "unlink", null);
188
192
  MeIdentitiesController = __decorate([
189
193
  Controller("api/v1/me/identities"),
190
- __param(0, Inject(EXTERNAL_IDENTITIES))
194
+ __param(0, Inject(ExternalIdentities))
191
195
  ], MeIdentitiesController);
192
196
  export { MeIdentitiesController };
@@ -1,8 +1,8 @@
1
1
  import { type Logger } from "@capybara-hq/plugin-sdk";
2
2
  import type { Redis } from "ioredis";
3
- import type { KernelConfig } from "../config/schema.js";
4
- import type { ExtensionHost } from "../extensions/host.js";
5
- import { type ExternalIdentities } from "./external.js";
3
+ import { ExtensionRegistry } from "../extensions/registry.js";
4
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
5
+ import { ExternalIdentities } from "./external.js";
6
6
  /** state 的有效期(秒)。 */
7
7
  export declare const SSO_STATE_TTL_SECONDS = 600;
8
8
  /** 浏览器绑定 Cookie:回调必须来自发起登录的同一个浏览器(防登录 CSRF / 把回跳链接转给别人)。 */
@@ -22,13 +22,6 @@ export type SsoLoginError = "sso.unavailable" | "sso.state_invalid" | "sso.sessi
22
22
  export declare function ssoBrowserBinding(existing: string | undefined): string;
23
23
  /** 回跳页面:站内相对路径(以单个 `/` 开头,非 `//`),否则 `/`(防开放重定向)。 */
24
24
  export declare function safeReturnTo(p: string | undefined): string;
25
- export interface SsoFlowDeps {
26
- redis: Redis;
27
- config: () => KernelConfig;
28
- host: Pick<ExtensionHost, "list" | "deploymentConfig">;
29
- external: ExternalIdentities;
30
- log: Pick<Logger, "warn">;
31
- }
32
25
  /** 回调结果:成功给账号与回跳页面,失败给原因码。 */
33
26
  export type SsoCallbackResult = {
34
27
  ok: true;
@@ -48,8 +41,12 @@ export type SsoCallbackResult = {
48
41
  * 由此证明本人控制该外部身份,升级为可登录(Ruling A18,见 `ExternalIdentities.resolve`)。
49
42
  */
50
43
  export declare class SsoFlow {
51
- private readonly deps;
52
- constructor(deps: SsoFlowDeps);
44
+ private readonly redis;
45
+ private readonly config;
46
+ private readonly registry;
47
+ private readonly external;
48
+ private readonly log;
49
+ constructor(redis: Redis, config: Pick<KernelConfigService, "get">, registry: Pick<ExtensionRegistry, "list" | "deploymentConfig">, external: ExternalIdentities, log: Pick<Logger, "warn">);
53
50
  /** 已启用的登录方式:`auth.loginSources` 中(按其顺序)且已加载、提供 `identity-source@1` 的插件。 */
54
51
  sources(): {
55
52
  plugin: string;
@@ -1,8 +1,21 @@
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 { createHash, randomBytes, timingSafeEqual } from "node:crypto";
2
11
  import { IDENTITY_SOURCE_EXTENSION_POINT, } from "@capybara-hq/plugin-sdk";
12
+ import { Inject, Injectable } from "@nestjs/common";
3
13
  import { ApiError } from "../errors.js";
4
- import { isSafeReturnPath } from "../tools/oauth/flow.js";
5
- import { IdentityNotVerified } from "./external.js";
14
+ import { ExtensionRegistry } from "../extensions/registry.js";
15
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
16
+ import { KERNEL_LOGGER, REDIS } from "../infra/tokens.js";
17
+ import { isSafeReturnPath } from "../tools/oauth/flow-paths.js";
18
+ import { ExternalIdentities, IdentityNotVerified } from "./external.js";
6
19
  /** state 的有效期(秒)。 */
7
20
  export const SSO_STATE_TTL_SECONDS = 600;
8
21
  /** 浏览器绑定 Cookie:回调必须来自发起登录的同一个浏览器(防登录 CSRF / 把回跳链接转给别人)。 */
@@ -41,38 +54,46 @@ export function safeReturnTo(p) {
41
54
  * 已登录的用户也可以发起(「登录状态下绑定」):回调请求带着同一账号的 Web 会话时,经 IM 绑定链接建立的身份
42
55
  * 由此证明本人控制该外部身份,升级为可登录(Ruling A18,见 `ExternalIdentities.resolve`)。
43
56
  */
44
- export class SsoFlow {
45
- deps;
46
- constructor(deps) {
47
- this.deps = deps;
57
+ let SsoFlow = class SsoFlow {
58
+ redis;
59
+ config;
60
+ registry;
61
+ external;
62
+ log;
63
+ constructor(redis, config, registry, external, log) {
64
+ this.redis = redis;
65
+ this.config = config;
66
+ this.registry = registry;
67
+ this.external = external;
68
+ this.log = log;
48
69
  }
49
70
  /** 已启用的登录方式:`auth.loginSources` 中(按其顺序)且已加载、提供 `identity-source@1` 的插件。 */
50
71
  sources() {
51
- return this.deps.config().auth.loginSources.flatMap((plugin) => {
72
+ return this.config.get().auth.loginSources.flatMap((plugin) => {
52
73
  const src = this.provider(plugin);
53
74
  return src ? [{ plugin, label: { zh: src.label.zh, en: src.label.en } }] : [];
54
75
  });
55
76
  }
56
77
  provider(plugin) {
57
- if (!this.deps.config().auth.loginSources.includes(plugin))
78
+ if (!this.config.get().auth.loginSources.includes(plugin))
58
79
  return undefined;
59
- const entry = this.deps.host
80
+ const entry = this.registry
60
81
  .list("identity-source")
61
82
  .find((e) => e.plugin === plugin && e.capability === IDENTITY_SOURCE_EXTENSION_POINT);
62
83
  return entry?.impl;
63
84
  }
64
85
  redirectUri(plugin) {
65
- const base = (this.deps.config().http.publicUrl ?? "").replace(/\/+$/, "");
86
+ const base = (this.config.get().http.publicUrl ?? "").replace(/\/+$/, "");
66
87
  return `${base}/api/v1/auth/sso/${encodeURIComponent(plugin)}/callback`;
67
88
  }
68
89
  /** 绑定 Cookie 是否加 Secure:`auth.cookieSecure`,或 `http.publicUrl` 是 https(浏览器经 https 访问)。 */
69
90
  cookieSecure() {
70
- const cfg = this.deps.config();
91
+ const cfg = this.config.get();
71
92
  return cfg.auth.cookieSecure || (cfg.http.publicUrl ?? "").startsWith("https:");
72
93
  }
73
94
  /** 网页地址:`http.publicUrl` + 站内路径(未配置 publicUrl 时为相对地址)。 */
74
95
  webUrl(path) {
75
- const base = (this.deps.config().http.publicUrl ?? "").replace(/\/+$/, "");
96
+ const base = (this.config.get().http.publicUrl ?? "").replace(/\/+$/, "");
76
97
  return `${base}${path}`;
77
98
  }
78
99
  /** 登录页并带原因码。 */
@@ -85,7 +106,7 @@ export class SsoFlow {
85
106
  */
86
107
  async start(plugin, returnTo, binding, sessionAccountId) {
87
108
  const src = this.provider(plugin);
88
- if (!src || !this.deps.config().http.publicUrl)
109
+ if (!src || !this.config.get().http.publicUrl)
89
110
  return this.loginError("sso.unavailable");
90
111
  const state = b64url();
91
112
  const nonce = b64url();
@@ -94,7 +115,7 @@ export class SsoFlow {
94
115
  let url;
95
116
  try {
96
117
  url = src.authorizeUrl({
97
- config: this.deps.host.deploymentConfig(plugin),
118
+ config: this.registry.deploymentConfig(plugin),
98
119
  redirectUri,
99
120
  state,
100
121
  nonce,
@@ -106,7 +127,7 @@ export class SsoFlow {
106
127
  throw new Error("authorize URL must be http(s)");
107
128
  }
108
129
  catch (err) {
109
- this.deps.log.warn("identity source authorizeUrl failed", { plugin, err });
130
+ this.log.warn("identity source authorizeUrl failed", { plugin, err });
110
131
  return this.loginError("sso.unavailable");
111
132
  }
112
133
  const rec = {
@@ -118,7 +139,7 @@ export class SsoFlow {
118
139
  codeVerifier,
119
140
  ...(sessionAccountId !== undefined && { sessionAccountId }),
120
141
  };
121
- await this.deps.redis.set(stateKey(state), JSON.stringify(rec), "EX", SSO_STATE_TTL_SECONDS);
142
+ await this.redis.set(stateKey(state), JSON.stringify(rec), "EX", SSO_STATE_TTL_SECONDS);
122
143
  return url;
123
144
  }
124
145
  /**
@@ -133,7 +154,7 @@ export class SsoFlow {
133
154
  const state = query.state;
134
155
  if (state === undefined || !STATE_RE.test(state))
135
156
  return { ok: false, error: "sso.state_invalid" };
136
- const raw = await this.deps.redis.getdel(stateKey(state));
157
+ const raw = await this.redis.getdel(stateKey(state));
137
158
  if (raw === null)
138
159
  return { ok: false, error: "sso.state_invalid" };
139
160
  const rec = JSON.parse(raw);
@@ -154,7 +175,7 @@ export class SsoFlow {
154
175
  let identity;
155
176
  try {
156
177
  identity = await src.callback({
157
- config: this.deps.host.deploymentConfig(plugin),
178
+ config: this.registry.deploymentConfig(plugin),
158
179
  redirectUri: rec.redirectUri,
159
180
  query,
160
181
  nonce: rec.nonce,
@@ -163,13 +184,13 @@ export class SsoFlow {
163
184
  });
164
185
  }
165
186
  catch (err) {
166
- this.deps.log.warn("identity source callback failed", { plugin, err });
187
+ this.log.warn("identity source callback failed", { plugin, err });
167
188
  return { ok: false, error: "sso.provider_error" };
168
189
  }
169
190
  // 身份源键由内核推导(Ruling A19):插件只能为自己、为它报出的租户声明身份
170
191
  if (typeof identity?.tenantId !== "string" ||
171
192
  identity.source !== `${plugin}:${identity.tenantId}`) {
172
- this.deps.log.warn("identity source returned a source key that does not match its tenant", {
193
+ this.log.warn("identity source returned a source key that does not match its tenant", {
173
194
  plugin,
174
195
  });
175
196
  return { ok: false, error: "sso.provider_error" };
@@ -181,7 +202,7 @@ export class SsoFlow {
181
202
  let accountId;
182
203
  try {
183
204
  // 只有登录路径允许按已验证邮箱合并(Ruling A9)
184
- accountId = (await this.deps.external.resolve(identity, undefined, {
205
+ accountId = (await this.external.resolve(identity, {
185
206
  allowMerge: true,
186
207
  linkedVia: "sso",
187
208
  login: provedBy === undefined ? {} : { sessionAccountId: provedBy },
@@ -189,14 +210,23 @@ export class SsoFlow {
189
210
  }
190
211
  catch (err) {
191
212
  if (err instanceof IdentityNotVerified) {
192
- this.deps.log.warn("sign-in with an unverified linked identity refused", { plugin });
213
+ this.log.warn("sign-in with an unverified linked identity refused", { plugin });
193
214
  return { ok: false, error: "sso.identity_not_verified" };
194
215
  }
195
216
  if (!(err instanceof ApiError))
196
217
  throw err;
197
- this.deps.log.warn("external identity rejected", { plugin, err });
218
+ this.log.warn("external identity rejected", { plugin, err });
198
219
  return { ok: false, error: "sso.provider_error" };
199
220
  }
200
221
  return { ok: true, accountId, returnTo: rec.returnTo };
201
222
  }
202
- }
223
+ };
224
+ SsoFlow = __decorate([
225
+ Injectable(),
226
+ __param(0, Inject(REDIS)),
227
+ __param(1, Inject(KernelConfigService)),
228
+ __param(2, Inject(ExtensionRegistry)),
229
+ __param(3, Inject(ExternalIdentities)),
230
+ __param(4, Inject(KERNEL_LOGGER))
231
+ ], SsoFlow);
232
+ export { SsoFlow };
@@ -0,0 +1,3 @@
1
+ /** The inbox: pending tool approvals, skill changes and catalog requests, read live from PG. */
2
+ export declare class InboxModule {
3
+ }
@@ -0,0 +1,22 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Module } from "@nestjs/common";
8
+ import { CatalogModule } from "../catalog/catalog.module.js";
9
+ import { SkillsModule } from "../skills/skills.module.js";
10
+ import { ToolsModule } from "../tools/tools.module.js";
11
+ import { InboxService } from "./inbox.service.js";
12
+ /** The inbox: pending tool approvals, skill changes and catalog requests, read live from PG. */
13
+ let InboxModule = class InboxModule {
14
+ };
15
+ InboxModule = __decorate([
16
+ Module({
17
+ imports: [ToolsModule, SkillsModule, CatalogModule],
18
+ providers: [InboxService],
19
+ exports: [InboxService],
20
+ })
21
+ ], InboxModule);
22
+ export { InboxModule };
@@ -1,6 +1,6 @@
1
- import { type CatalogRequestsService, type CatalogRequestView } from "../catalog/requests.service.js";
2
- import { type SkillChangesService, type SkillChangeView } from "../skills/changes.service.js";
3
- import { type ApprovalsService, type ApprovalView } from "../tools/approvals.service.js";
1
+ import { CatalogRequestsService, type CatalogRequestView } from "../catalog/requests.service.js";
2
+ import { SkillChangesService, type SkillChangeView } from "../skills/changes.service.js";
3
+ import { ApprovalsService, type ApprovalView } from "../tools/approvals.service.js";
4
4
  /** 收件箱一次最多返回的事项数。 */
5
5
  export declare const INBOX_MAX_ITEMS = 100;
6
6
  /**
@@ -33,11 +33,9 @@ export interface InboxView {
33
33
  }
34
34
  /** 收件箱(计划取舍 C6):按类型汇总各来源的待处理事项。无状态,每次实时读 PG。 */
35
35
  export declare class InboxService {
36
- private readonly d;
37
- constructor(d: {
38
- approvals: Pick<ApprovalsService, "list">;
39
- skillChanges: Pick<SkillChangesService, "listPending">;
40
- catalogRequests?: Pick<CatalogRequestsService, "listForOrgAdmin">;
41
- });
36
+ private readonly approvals;
37
+ private readonly skillChanges;
38
+ private readonly catalogRequests;
39
+ constructor(approvals: Pick<ApprovalsService, "list">, skillChanges: Pick<SkillChangesService, "listPending">, catalogRequests: Pick<CatalogRequestsService, "listForOrgAdmin">);
42
40
  list(orgId: string, accountId: string): Promise<InboxView>;
43
41
  }
@@ -1,19 +1,33 @@
1
- import { CATALOG_REQUESTS_LIST_MAX, } from "../catalog/requests.service.js";
2
- import { SKILL_CHANGES_LIST_MAX, } from "../skills/changes.service.js";
3
- import { APPROVALS_LIST_MAX, } from "../tools/approvals.service.js";
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { CATALOG_REQUESTS_LIST_MAX, CatalogRequestsService, } from "../catalog/requests.service.js";
12
+ import { SKILL_CHANGES_LIST_MAX, SkillChangesService, } from "../skills/changes.service.js";
13
+ import { APPROVALS_LIST_MAX, ApprovalsService, } from "../tools/approvals.service.js";
4
14
  /** 收件箱一次最多返回的事项数。 */
5
15
  export const INBOX_MAX_ITEMS = 100;
6
16
  /** 收件箱(计划取舍 C6):按类型汇总各来源的待处理事项。无状态,每次实时读 PG。 */
7
- export class InboxService {
8
- d;
9
- constructor(d) {
10
- this.d = d;
17
+ let InboxService = class InboxService {
18
+ approvals;
19
+ skillChanges;
20
+ catalogRequests;
21
+ constructor(approvals, skillChanges, catalogRequests) {
22
+ this.approvals = approvals;
23
+ this.skillChanges = skillChanges;
24
+ this.catalogRequests = catalogRequests;
11
25
  }
12
26
  async list(orgId, accountId) {
13
27
  const [approvals, changes, requests] = await Promise.all([
14
- this.d.approvals.list(orgId, accountId, "pending"),
15
- this.d.skillChanges.listPending(orgId, accountId),
16
- this.d.catalogRequests?.listForOrgAdmin(orgId, accountId) ?? [],
28
+ this.approvals.list(orgId, accountId, "pending"),
29
+ this.skillChanges.listPending(orgId, accountId),
30
+ this.catalogRequests.listForOrgAdmin(orgId, accountId),
17
31
  ]);
18
32
  const all = [
19
33
  ...approvals.map((a) => ({
@@ -54,4 +68,11 @@ export class InboxService {
54
68
  truncated: full || all.length > INBOX_MAX_ITEMS,
55
69
  };
56
70
  }
57
- }
71
+ };
72
+ InboxService = __decorate([
73
+ Injectable(),
74
+ __param(0, Inject(ApprovalsService)),
75
+ __param(1, Inject(SkillChangesService)),
76
+ __param(2, Inject(CatalogRequestsService))
77
+ ], InboxService);
78
+ export { InboxService };