@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,11 +1,28 @@
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 } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { ExtensionHost } from "../extensions/host.js";
13
+ import { ExtensionRegistry } from "../extensions/registry.js";
14
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
16
  import { readOrgSettings } from "../orgs/settings.service.js";
3
17
  import { estimateTokens } from "../runtime/context/tokens.js";
4
18
  import { SUBAGENT_LIMIT_DEFAULTS, subagentLimits } from "../runtime/subagents/limits.js";
5
19
  import { resolveRoster } from "../runtime/subagents/roster.js";
6
20
  import { AGENT_TOOL, agentToolSpec } from "./builtins/agent.js";
21
+ import { BuiltinTools } from "./builtins/builtin-tools.js";
7
22
  import { SANDBOX_TOOL_NAMES } from "./builtins/sandbox/names.js";
23
+ import { canonicalJson } from "./canonical-json.js";
8
24
  import { toolKey, toolKeyIssue } from "./naming.js";
25
+ export { canonicalJson } from "./canonical-json.js";
9
26
  /**
10
27
  * 内核内置工具的名字(Task 10 / Task 19 实现;M5 T8 加沙箱工具)。保存 agent 时内置工具引用按这份清单校验,
11
28
  * 不依赖当前是否已注册,避免实现落地顺序影响已保存的定义;运行时未注册的照常报不可用。
@@ -21,18 +38,6 @@ export const BUILTIN_TOOL_NAMES = [
21
38
  // phase C: dispatches sub-agents; its description is built per agent from the roster
22
39
  "agent",
23
40
  ];
24
- /** 键排序、去掉 undefined 的 JSON(jsonb 不保留键顺序,指纹必须与顺序无关)。 */
25
- export function canonicalJson(v) {
26
- if (Array.isArray(v))
27
- return `[${v.map(canonicalJson).join(",")}]`;
28
- if (v !== null && typeof v === "object") {
29
- const entries = Object.entries(v)
30
- .filter(([, x]) => x !== undefined)
31
- .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
32
- return `{${entries.map(([k, x]) => `${JSON.stringify(k)}:${canonicalJson(x)}`).join(",")}}`;
33
- }
34
- return JSON.stringify(v);
35
- }
36
41
  /** The first 16 hex digits of sha256(canonicalJson(v)): a fingerprint independent of key order. */
37
42
  export function contentHash(v) {
38
43
  return createHash("sha256").update(canonicalJson(v)).digest("hex").slice(0, 16);
@@ -97,14 +102,35 @@ const sourceId = (s) => s.kind === "builtin"
97
102
  * Only the first of a key is kept; the same source referenced twice is deduplicated silently,
98
103
  * different sources with the same key report a duplicate.
99
104
  */
100
- export class ToolRegistry {
101
- deps;
102
- constructor(deps) {
103
- this.deps = deps;
105
+ let ToolRegistry = class ToolRegistry {
106
+ db;
107
+ host;
108
+ extensions;
109
+ builtinTools;
110
+ config;
111
+ constructor(db,
112
+ /** Extension tools and the organization's enabled extensions. */
113
+ host,
114
+ /** The installed connectors (`connector@1`, from the extension registry). */
115
+ extensions, builtinTools,
116
+ /**
117
+ * `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `tool_search` is never
118
+ * offered and the sub-agent limits are the schema defaults.
119
+ */
120
+ config) {
121
+ this.db = db;
122
+ this.host = host;
123
+ this.extensions = extensions;
124
+ this.builtinTools = builtinTools;
125
+ this.config = config;
126
+ }
127
+ /** The kernel's builtin tools (`tool_search` is added by {@link forAgent}, not by definitions). */
128
+ get builtins() {
129
+ return this.builtinTools.list();
104
130
  }
105
131
  /** `host.list("connector")` 中 `kind` 匹配的第一个实现;未安装返回 undefined。 */
106
132
  findConnector(kind) {
107
- for (const e of this.deps.host.list("connector")) {
133
+ for (const e of this.extensions.list("connector")) {
108
134
  const impl = e.impl;
109
135
  if (impl?.kind === kind)
110
136
  return impl;
@@ -127,10 +153,10 @@ export class ToolRegistry {
127
153
  */
128
154
  handler(source) {
129
155
  if (source.kind === "builtin") {
130
- return this.deps.builtins.find((b) => b.spec.name === source.name)?.run;
156
+ return this.builtins.find((b) => b.spec.name === source.name)?.run;
131
157
  }
132
158
  if (source.kind === "plugin") {
133
- const t = this.deps.host
159
+ const t = this.host
134
160
  .tools()
135
161
  .find((x) => x.plugin === source.plugin && x.spec.name === source.name);
136
162
  if (!t)
@@ -141,15 +167,15 @@ export class ToolRegistry {
141
167
  }
142
168
  /** The registered builtin tools' specs (display metadata for `tools/info.ts`). */
143
169
  builtinSpecs() {
144
- return this.deps.builtins.map((b) => b.spec);
170
+ return this.builtins.map((b) => b.spec);
145
171
  }
146
172
  /** The loaded extensions' registered tool specs, with their extension's name. */
147
173
  extensionToolSpecs() {
148
- return this.deps.host.tools().map((t) => ({ plugin: t.plugin, spec: t.spec }));
174
+ return this.host.tools().map((t) => ({ plugin: t.plugin, spec: t.spec }));
149
175
  }
150
176
  /** 已安装连接器的 kind 列表(去重,按加载顺序)。 */
151
177
  connectorKinds() {
152
- return [...new Set(this.deps.host.list("connector").map((e) => e.impl.kind))];
178
+ return [...new Set(this.extensions.list("connector").map((e) => e.impl.kind))];
153
179
  }
154
180
  /**
155
181
  * 保存 agent 时校验工具引用(只看「存在」,停用 / 待复核 / 插件未启用等运行时状态不拒绝,由 `forAgent` 报不可用):
@@ -162,7 +188,7 @@ export class ToolRegistry {
162
188
  async checkRefs(orgId, refs) {
163
189
  const issues = [];
164
190
  const owner = new Map();
165
- const pluginTools = this.deps.host.tools();
191
+ const pluginTools = this.host.tools();
166
192
  const connectorIds = [
167
193
  ...new Set(refs.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
168
194
  ];
@@ -227,7 +253,7 @@ export class ToolRegistry {
227
253
  */
228
254
  async forAgent(orgId, def) {
229
255
  const { tools, unavailable, hidden } = await this.resolve(orgId, def);
230
- const sl = def.skillLoad === true && this.deps.builtins.find((x) => x.spec.name === SKILL_LOAD);
256
+ const sl = def.skillLoad === true && this.builtins.find((x) => x.spec.name === SKILL_LOAD);
231
257
  if (sl) {
232
258
  tools.push({
233
259
  key: SKILL_LOAD,
@@ -240,7 +266,7 @@ export class ToolRegistry {
240
266
  }
241
267
  const toolSearch = await this.searchActive(orgId, tools);
242
268
  if (toolSearch) {
243
- const b = this.deps.builtins.find((x) => x.spec.name === TOOL_SEARCH);
269
+ const b = this.builtins.find((x) => x.spec.name === TOOL_SEARCH);
244
270
  tools.push({
245
271
  key: TOOL_SEARCH,
246
272
  source: { kind: "builtin", name: TOOL_SEARCH },
@@ -253,14 +279,14 @@ export class ToolRegistry {
253
279
  }
254
280
  /** 是否启用 `tool_search`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
255
281
  async searchActive(orgId, tools) {
256
- const cfg = this.deps.config?.().tools;
257
- if (!cfg || !this.deps.builtins.some((b) => b.spec.name === TOOL_SEARCH))
282
+ const cfg = this.config?.get().tools;
283
+ if (!cfg || !this.builtins.some((b) => b.spec.name === TOOL_SEARCH))
258
284
  return false;
259
285
  const over = tools.length > cfg.searchThresholdTools ||
260
286
  estimateToolTokens(tools) > cfg.searchThresholdTokens;
261
287
  if (!over)
262
288
  return false;
263
- return (await readOrgSettings(this.deps.db, orgId)).toolSearch === "on";
289
+ return (await readOrgSettings(this.db.db, orgId)).toolSearch === "on";
264
290
  }
265
291
  async resolve(orgId, def) {
266
292
  const tools = [];
@@ -288,12 +314,12 @@ export class ToolRegistry {
288
314
  ...new Set(def.tools.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
289
315
  ];
290
316
  const apps = await this.loadConnectors(orgId, connectorIds);
291
- const pluginTools = this.deps.host.tools();
317
+ const pluginTools = this.host.tools();
292
318
  for (const ref of def.tools) {
293
319
  if (ref.kind === "builtin") {
294
320
  if (ref.name === TOOL_SEARCH || ref.name === SKILL_LOAD)
295
321
  continue;
296
- const b = this.deps.builtins.find((x) => x.spec.name === ref.name);
322
+ const b = this.builtins.find((x) => x.spec.name === ref.name);
297
323
  if (!b) {
298
324
  unavailable.push({ ref: ref.name, reason: "Built-in tool does not exist" });
299
325
  continue;
@@ -307,7 +333,7 @@ export class ToolRegistry {
307
333
  // empty roster there is nothing to dispatch, so the tool is not offered at all
308
334
  let spec = b.spec;
309
335
  if (b.spec.name === AGENT_TOOL) {
310
- const roster = await resolveRoster(this.deps.db, orgId, { subagents: def.subagents });
336
+ const roster = await resolveRoster(this.db.db, orgId, { subagents: def.subagents });
311
337
  if (roster.length === 0)
312
338
  continue;
313
339
  spec = agentToolSpec(roster, await this.maxConcurrentSubagents(orgId));
@@ -420,19 +446,20 @@ export class ToolRegistry {
420
446
  * schema default.
421
447
  */
422
448
  async maxConcurrentSubagents(orgId) {
423
- const config = this.deps.config ?? (() => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }));
424
- return (await subagentLimits(this.deps.db, config, orgId)).maxConcurrentPerRun;
449
+ const cfg = this.config;
450
+ const config = cfg ?? { get: () => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }) };
451
+ return (await subagentLimits(this.db.db, config, orgId)).maxConcurrentPerRun;
425
452
  }
426
453
  /** Plugins the organization enabled (built-in plugins always count as enabled, C14). */
427
454
  async enabledPlugins(orgId) {
428
- return this.deps.host.enabledPlugins(orgId);
455
+ return this.host.enabledPlugins(orgId);
429
456
  }
430
457
  async loadConnectors(orgId, ids) {
431
458
  const out = new Map();
432
459
  if (ids.length === 0)
433
460
  return out;
434
461
  // 软删除的连接器也读出来,只为给出「已删除」这个更准确的原因(slug 可能已被新连接器复用,按 id 区分)
435
- const apps = await this.deps.db
462
+ const apps = await this.db
436
463
  .selectFrom("connectors")
437
464
  .select(["id", "slug", "connector", "status", "deleted_at"])
438
465
  .where("org_id", "=", orgId)
@@ -441,7 +468,7 @@ export class ToolRegistry {
441
468
  const live = apps.filter((a) => a.deleted_at === null).map((a) => a.id);
442
469
  const toolRows = live.length === 0
443
470
  ? []
444
- : await this.deps.db
471
+ : await this.db
445
472
  .selectFrom("connector_tools")
446
473
  .select([
447
474
  "connector_id",
@@ -478,4 +505,13 @@ export class ToolRegistry {
478
505
  }
479
506
  return out;
480
507
  }
481
- }
508
+ };
509
+ ToolRegistry = __decorate([
510
+ Injectable(),
511
+ __param(0, Inject(KernelDb)),
512
+ __param(1, Inject(ExtensionHost)),
513
+ __param(2, Inject(ExtensionRegistry)),
514
+ __param(3, Inject(BuiltinTools)),
515
+ __param(4, Inject(KernelConfigService))
516
+ ], ToolRegistry);
517
+ export { ToolRegistry };
@@ -1,14 +1,15 @@
1
1
  import type { ToolSpec } from "@capybara-hq/plugin-sdk";
2
- import type { Transaction } from "kysely";
3
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
3
  /**
5
4
  * 把工具定义按指纹存进 `capybara.tool_specs`(内容寻址:同一指纹只存一次,已存在不改)。
6
5
  * `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
7
6
  * 仍可按指纹取回,模型请求可由日志还原。
8
7
  */
9
- export declare function recordToolSpecs(db: KernelDb | Transaction<KernelDatabase>, specs: readonly {
8
+ export declare function recordToolSpecs(
9
+ /** The pool or a transaction (a transaction is a Kysely handle too). */
10
+ db: KernelSchemaDb, specs: readonly {
10
11
  specHash: string;
11
12
  spec: ToolSpec;
12
13
  }[]): Promise<void>;
13
14
  /** 按指纹取回工具定义;没有记录 → null。 */
14
- export declare function loadToolSpec(db: KernelDb, specHash: string): Promise<ToolSpec | null>;
15
+ export declare function loadToolSpec(db: KernelSchemaDb, specHash: string): Promise<ToolSpec | null>;
@@ -3,7 +3,9 @@
3
3
  * `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
4
4
  * 仍可按指纹取回,模型请求可由日志还原。
5
5
  */
6
- export async function recordToolSpecs(db, specs) {
6
+ export async function recordToolSpecs(
7
+ /** The pool or a transaction (a transaction is a Kysely handle too). */
8
+ db, specs) {
7
9
  const unique = new Map();
8
10
  for (const s of specs)
9
11
  if (!unique.has(s.specHash))
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tools and connectors: credentials, output archives, the builtin tools and the registry,
3
+ * approvals and questions (their decisions are the domain events `approval.decided` /
4
+ * `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
5
+ * maintenance processor consumes), the breaker, connector content, the execution pipeline, org
6
+ * connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
7
+ * output cleanup) are the worker role's (`WorkerModule`).
8
+ */
9
+ export declare class ToolsModule {
10
+ }
@@ -0,0 +1,91 @@
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 { ConversationAccessModule } from "../conversations/access.js";
9
+ import { AttachmentsModule } from "../conversations/attachments.module.js";
10
+ import { EventLogModule } from "../conversations/event-log.js";
11
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
12
+ import { QueueModule } from "../infra/queue/queue.module.js";
13
+ import { OrgLockModule } from "../orgs/org-lock.js";
14
+ import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
15
+ import { SubagentsModule } from "../runtime/subagents/subagents.service.js";
16
+ import { SandboxModule } from "../sandbox/sandbox.module.js";
17
+ import { SkillsModule } from "../skills/skills.module.js";
18
+ import { StorageModule } from "../storage/storage.module.js";
19
+ import { ApprovalsService } from "./approvals.service.js";
20
+ import { Breaker } from "./breaker.js";
21
+ import { BuiltinTools } from "./builtins/builtin-tools.js";
22
+ import { ConnectorContent } from "./connector-content.js";
23
+ import { ConnectorsService } from "./connectors.service.js";
24
+ import { Credentials } from "./credentials.js";
25
+ import { ToolDrift } from "./drift.js";
26
+ import { ConversationToolInfo } from "./info.js";
27
+ import { OAuthFlow } from "./oauth/flow.js";
28
+ import { ToolOutputs } from "./outputs.js";
29
+ import { ToolPipeline } from "./pipeline.js";
30
+ import { QuestionsService } from "./questions.service.js";
31
+ import { ToolRegistry } from "./registry.js";
32
+ /**
33
+ * Tools and connectors: credentials, output archives, the builtin tools and the registry,
34
+ * approvals and questions (their decisions are the domain events `approval.decided` /
35
+ * `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
36
+ * maintenance processor consumes), the breaker, connector content, the execution pipeline, org
37
+ * connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
38
+ * output cleanup) are the worker role's (`WorkerModule`).
39
+ */
40
+ let ToolsModule = class ToolsModule {
41
+ };
42
+ ToolsModule = __decorate([
43
+ Module({
44
+ imports: [
45
+ EventLogModule,
46
+ AttachmentsModule,
47
+ ExtensionsModule,
48
+ StorageModule,
49
+ SkillsModule,
50
+ OrgLockModule,
51
+ // the `agent` tool's dispatch
52
+ SubagentsModule,
53
+ // the builtin sandbox and skill tools run in the conversation's sandbox
54
+ SandboxModule,
55
+ // the conversation page's tool metadata reads only what the viewer may see
56
+ ConversationAccessModule,
57
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
58
+ ],
59
+ providers: [
60
+ Credentials,
61
+ ToolOutputs,
62
+ BuiltinTools,
63
+ ToolRegistry,
64
+ ApprovalsService,
65
+ QuestionsService,
66
+ ToolDrift,
67
+ Breaker,
68
+ ConnectorContent,
69
+ ToolPipeline,
70
+ ConnectorsService,
71
+ OAuthFlow,
72
+ ConversationToolInfo,
73
+ ],
74
+ exports: [
75
+ Credentials,
76
+ ToolOutputs,
77
+ BuiltinTools,
78
+ ToolRegistry,
79
+ ApprovalsService,
80
+ QuestionsService,
81
+ ToolDrift,
82
+ Breaker,
83
+ ConnectorContent,
84
+ ToolPipeline,
85
+ ConnectorsService,
86
+ OAuthFlow,
87
+ ConversationToolInfo,
88
+ ],
89
+ })
90
+ ], ToolsModule);
91
+ export { ToolsModule };
@@ -0,0 +1,16 @@
1
+ import type { Logger } from "@capybara-hq/plugin-sdk";
2
+ /**
3
+ * Calls an extension with a time limit and an abort signal (plugin views, actions and file
4
+ * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
5
+ * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
6
+ */
7
+ export declare function callExtension<T>(o: {
8
+ log: Pick<Logger, "warn">;
9
+ plugin: string;
10
+ what: string;
11
+ fields: Record<string, unknown>;
12
+ timeoutMs: number;
13
+ failCode: "ui.render_failed" | "ui.action_failed";
14
+ failMessage: string;
15
+ fn: (signal: AbortSignal) => Promise<T>;
16
+ }): Promise<T>;
@@ -0,0 +1,38 @@
1
+ import { ApiError } from "../errors.js";
2
+ /**
3
+ * Calls an extension with a time limit and an abort signal (plugin views, actions and file
4
+ * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
5
+ * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
6
+ */
7
+ export async function callExtension(o) {
8
+ const ac = new AbortController();
9
+ let timer;
10
+ const timeout = new Promise((resolve) => {
11
+ timer = setTimeout(() => {
12
+ ac.abort(new Error(`plugin ui ${o.what} timed out`));
13
+ resolve("timeout");
14
+ }, o.timeoutMs);
15
+ });
16
+ try {
17
+ const r = await Promise.race([
18
+ Promise.resolve()
19
+ .then(() => o.fn(ac.signal))
20
+ .then((value) => ({ value })),
21
+ timeout,
22
+ ]);
23
+ if (r === "timeout") {
24
+ o.log.warn(`plugin ui ${o.what} timed out`, { ...o.fields, timeoutMs: o.timeoutMs });
25
+ throw new ApiError("ui.timeout", `Plugin ${o.plugin} did not respond within ${o.timeoutMs / 1000}s`);
26
+ }
27
+ return r.value;
28
+ }
29
+ catch (e) {
30
+ if (e instanceof ApiError)
31
+ throw e;
32
+ o.log.warn(`plugin ui ${o.what} failed`, { ...o.fields, err: e });
33
+ throw new ApiError(o.failCode, o.failMessage);
34
+ }
35
+ finally {
36
+ clearTimeout(timer);
37
+ }
38
+ }
@@ -6,20 +6,21 @@ export declare const EMBED_TOKEN_TTL_SECONDS = 300;
6
6
  export declare const EMBED_TOKEN_SKEW_SECONDS = 30;
7
7
  /** HKDF 用途(keyring 派生时 info 为 `capybara:capybara-embed/1`),也是签名输入的域前缀。 */
8
8
  export declare const EMBED_KEY_INFO = "capybara-embed/1";
9
+ /** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
10
+ export declare const EMBED_TOKEN_CLOCK: unique symbol;
9
11
  /**
10
12
  * 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
11
13
  * - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
12
14
  * - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
13
15
  * `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
14
- * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
16
+ * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
17
+ * routes issue tokens with it and every extension's `ctx` verifies them with it.
15
18
  */
16
19
  export declare class EmbedTokens {
20
+ private readonly now;
17
21
  private readonly current;
18
22
  private readonly keys;
19
- private readonly now;
20
- constructor(keyring: Keyring, opts?: {
21
- now?: () => number;
22
- });
23
+ constructor(keyring: Keyring, now?: () => number);
23
24
  /** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
24
25
  issue(c: Omit<EmbedClaims, "exp">): {
25
26
  token: string;
@@ -29,3 +30,6 @@ export declare class EmbedTokens {
29
30
  /** 校验令牌并要求它签给 `plugin`;不通过返回 null。 */
30
31
  verify(token: unknown, plugin: string): EmbedClaims | null;
31
32
  }
33
+ /** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
34
+ export declare class EmbedTokensModule {
35
+ }
@@ -1,4 +1,15 @@
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 { createHmac, timingSafeEqual } from "node:crypto";
11
+ import { Inject, Injectable, Module, Optional } from "@nestjs/common";
12
+ import { KEYRING } from "../infra/tokens.js";
2
13
  import { ORG_ROLES } from "../orgs/roles.js";
3
14
  /** 嵌入令牌的有效期(秒)。网页在过期前 60 秒续期。 */
4
15
  export const EMBED_TOKEN_TTL_SECONDS = 300;
@@ -63,23 +74,26 @@ function parseClaims(v) {
63
74
  exp: c.exp,
64
75
  };
65
76
  }
77
+ /** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
78
+ export const EMBED_TOKEN_CLOCK = Symbol("EMBED_TOKEN_CLOCK");
66
79
  /**
67
80
  * 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
68
81
  * - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
69
82
  * - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
70
83
  * `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
71
- * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
84
+ * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
85
+ * routes issue tokens with it and every extension's `ctx` verifies them with it.
72
86
  */
73
- export class EmbedTokens {
87
+ let EmbedTokens = class EmbedTokens {
88
+ now;
74
89
  current;
75
90
  keys;
76
- now;
77
- constructor(keyring, opts = {}) {
91
+ constructor(keyring, now = Date.now) {
92
+ this.now = now;
78
93
  const derived = keyring.deriveKey(EMBED_KEY_INFO);
79
94
  const ids = [derived.currentId, ...keyring.toJSON().previousIds];
80
95
  this.current = derived.current;
81
96
  this.keys = ids.map((id) => derived.byId(id)).filter((k) => k !== undefined);
82
- this.now = opts.now ?? Date.now;
83
97
  }
84
98
  /** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
85
99
  issue(c) {
@@ -126,7 +140,21 @@ export class EmbedTokens {
126
140
  return null;
127
141
  return claims;
128
142
  }
129
- }
143
+ };
144
+ EmbedTokens = __decorate([
145
+ Injectable(),
146
+ __param(0, Inject(KEYRING)),
147
+ __param(1, Optional()),
148
+ __param(1, Inject(EMBED_TOKEN_CLOCK))
149
+ ], EmbedTokens);
150
+ export { EmbedTokens };
130
151
  function mac(key, payload) {
131
152
  return createHmac("sha256", key).update(`${EMBED_KEY_INFO}.${payload}`).digest();
132
153
  }
154
+ /** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
155
+ let EmbedTokensModule = class EmbedTokensModule {
156
+ };
157
+ EmbedTokensModule = __decorate([
158
+ Module({ providers: [EmbedTokens], exports: [EmbedTokens] })
159
+ ], EmbedTokensModule);
160
+ export { EmbedTokensModule };
@@ -1,37 +1,42 @@
1
1
  import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { KernelDb } from "../db/kernel-schema.js";
4
2
  import type { CredentialCheck } from "../identity/credential-check.js";
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
5
6
  import { type OrgRole } from "../orgs/roles.js";
6
- import type { SseOutput, StreamBus, StreamHandle } from "../runtime/stream.js";
7
- export interface OrgUiStreamsDeps {
8
- bus: StreamBus;
9
- /**
10
- * 调用者此刻的组织角色(组织未删除、账号 active、仍有成员关系,否则 undefined):
11
- * 连接建立时与每 `sseRecheckMs` 复核一次;组织级刷新只服务组织页面,要 member 以上(A38)。
12
- */
13
- memberRole(orgId: string, accountId: string): Promise<OrgRole | undefined>;
14
- config: () => KernelConfig;
15
- log: Pick<Logger, "warn">;
16
- }
7
+ import { type SseOutput, type StreamBus, type StreamHandle } from "../runtime/stream.js";
17
8
  export interface OrgUiStreamParams {
18
9
  orgId: string;
19
10
  viewerAccountId: string;
20
11
  credential: CredentialCheck;
21
12
  }
22
- /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
23
- export declare function orgMembership(db: KernelDb): OrgUiStreamsDeps["memberRole"];
13
+ /** The org role the org UI stream re-checks. */
14
+ export declare class UiStreamMembership {
15
+ private readonly db;
16
+ constructor(db: KernelDb);
17
+ /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
18
+ role(orgId: string, accountId: string): Promise<OrgRole | undefined>;
19
+ }
24
20
  /**
25
21
  * 组织级界面刷新流(SSE):订阅内核主题 `org-ui.<orgId>`,把插件 `ctx.ui.invalidate`(不带对话)的刷新
26
22
  * 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
27
23
  * (订阅、心跳与复核定时器),停机时一并关闭。
28
24
  */
29
25
  export declare class OrgUiStreams {
30
- private readonly d;
31
26
  private readonly active;
32
- constructor(d: OrgUiStreamsDeps);
27
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
28
+ private closing;
29
+ private readonly d;
30
+ /**
31
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
32
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
33
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
34
+ * streams end with their connections.
35
+ */
36
+ constructor(bus: StreamBus, membership: Pick<UiStreamMembership, "role">, config: Pick<KernelConfigService, "get">, log: Pick<Logger, "warn">, shutdown?: Pick<GracefulShutdown, "signal">);
33
37
  /** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
34
38
  open(p: OrgUiStreamParams, out: SseOutput): Promise<StreamHandle>;
39
+ /** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
35
40
  closeAll(): void;
36
41
  get size(): number;
37
42
  }