@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,10 @@
1
- import type { KernelConfig } from "../config/schema.js";
2
- import type { KernelDb } from "../db/kernel-schema.js";
3
- import type { SettingsService } from "../identity/settings.js";
4
- import type { PricesService } from "../models/prices.js";
1
+ import { SettingsService } from "../identity/settings.js";
2
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import { TransactionHost } from "../infra/database/transaction-host.js";
5
+ import { PricesService } from "../models/prices.js";
6
+ import { OrgLock } from "../orgs/org-lock.js";
7
+ import { EvalBudget } from "./budget.js";
5
8
  import { type CaseSnapshot } from "./snapshot.js";
6
9
  import { type TrajectoryRun } from "./trajectory.js";
7
10
  export interface EvalSetView {
@@ -67,11 +70,19 @@ export declare function caseTitle(s: CaseSnapshot): string;
67
70
  * (`evals.manage`),再锁集合行,串行化同一集合的容量判定。查看用例内容写审计 `trajectory.viewed`。
68
71
  */
69
72
  export declare class EvalSetsService {
70
- private readonly db;
73
+ private readonly kdb;
71
74
  private readonly config;
72
75
  private readonly prices;
73
76
  private readonly settings;
74
- constructor(db: KernelDb, config: () => KernelConfig, prices: PricesService, settings: SettingsService);
77
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
78
+ private readonly orgLock;
79
+ private readonly budget;
80
+ readonly txHost: TransactionHost;
81
+ constructor(kdb: KernelDb, config: Pick<KernelConfigService, "get">, prices: Pick<PricesService, "table">, settings: Pick<SettingsService, "get">,
82
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
83
+ orgLock: Pick<OrgLock, "lockAndAuthorize">, budget: Pick<EvalBudget, "skipRun">, txHost: TransactionHost);
84
+ /** The context-aware handle (the `@Transactional` method's transaction, else the pool). */
85
+ private get db();
75
86
  private views;
76
87
  private static toView;
77
88
  private view;
@@ -93,6 +104,11 @@ export declare class EvalSetsService {
93
104
  * 在执行的运行取消,运行行保留(无入口)。
94
105
  */
95
106
  remove(orgId: string, actor: string, setId: string, actorTokenId?: string): Promise<void>;
107
+ private createIn;
108
+ private updateIn;
109
+ private removeIn;
110
+ private insertCaseIn;
111
+ private removeCaseIn;
96
112
  /** 未删除的评测集;不存在 → `eval.set_not_found`。 */
97
113
  private liveSet;
98
114
  private caseCount;
@@ -1,9 +1,26 @@
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
+ var EvalSetsService_1;
11
+ import { Inject, Injectable } from "@nestjs/common";
1
12
  import { sql } from "kysely";
2
13
  import { typedInvocation } from "../conversations/events.js";
3
14
  import { ApiError } from "../errors.js";
4
15
  import { audit } from "../identity/audit.js";
5
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
6
- import { recountCases, skipPendingJudges } from "./budget.js";
16
+ import { SettingsService } from "../identity/settings.js";
17
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
18
+ import { KernelDb } from "../infra/database/kernel-db.js";
19
+ import { TransactionHost } from "../infra/database/transaction-host.js";
20
+ import { Transactional } from "../infra/database/transactional.decorator.js";
21
+ import { PricesService } from "../models/prices.js";
22
+ import { OrgLock } from "../orgs/org-lock.js";
23
+ import { EvalBudget } from "./budget.js";
7
24
  import { casePlans } from "./plan.js";
8
25
  import { caseBase } from "./runs.service.js";
9
26
  import { readSnapshot, replayableCalls, takeSnapshot, toEvents, } from "./snapshot.js";
@@ -74,16 +91,28 @@ function toCaseView(r) {
74
91
  * (`takeSnapshot`,≤ `evals.maxCaseBytes`),之后与原对话无关。写操作在事务里锁组织行并复核角色
75
92
  * (`evals.manage`),再锁集合行,串行化同一集合的容量判定。查看用例内容写审计 `trajectory.viewed`。
76
93
  */
77
- export class EvalSetsService {
78
- db;
94
+ let EvalSetsService = EvalSetsService_1 = class EvalSetsService {
95
+ kdb;
79
96
  config;
80
97
  prices;
81
98
  settings;
82
- constructor(db, config, prices, settings) {
83
- this.db = db;
99
+ orgLock;
100
+ budget;
101
+ txHost;
102
+ constructor(kdb, config, prices, settings,
103
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
104
+ orgLock, budget, txHost) {
105
+ this.kdb = kdb;
84
106
  this.config = config;
85
107
  this.prices = prices;
86
108
  this.settings = settings;
109
+ this.orgLock = orgLock;
110
+ this.budget = budget;
111
+ this.txHost = txHost;
112
+ }
113
+ /** The context-aware handle (the `@Transactional` method's transaction, else the pool). */
114
+ get db() {
115
+ return this.kdb.db;
87
116
  }
88
117
  views(orgId) {
89
118
  return this.db
@@ -121,42 +150,10 @@ export class EvalSetsService {
121
150
  const r = await this.views(orgId).where("s.id", "=", setId).executeTakeFirst();
122
151
  if (!r)
123
152
  throw setNotFound();
124
- return EvalSetsService.toView(r);
153
+ return EvalSetsService_1.toView(r);
125
154
  }
126
155
  async create(orgId, actor, input, actorTokenId) {
127
- const id = await this.db.transaction().execute(async (trx) => {
128
- await lockOrgAndAuthorize(trx, orgId, actor, "evals.manage");
129
- const agent = await trx
130
- .selectFrom("agents")
131
- .select("id")
132
- .where("id", "=", input.agentId)
133
- .where("org_id", "=", orgId)
134
- .where("deleted_at", "is", null)
135
- .executeTakeFirst();
136
- if (!agent)
137
- throw new ApiError("agent.not_found", "Agent not found");
138
- const row = await trx
139
- .insertInto("eval_sets")
140
- .values({
141
- org_id: orgId,
142
- agent_id: input.agentId,
143
- name: input.name,
144
- description: input.description ?? "",
145
- rubric: input.rubric ?? null,
146
- created_by: actor,
147
- })
148
- .returning("id")
149
- .executeTakeFirstOrThrow();
150
- await audit(trx, {
151
- actorAccountId: actor,
152
- ...(actorTokenId !== undefined && { actorTokenId }),
153
- orgId,
154
- action: "eval.set_created",
155
- target: row.id,
156
- detail: { agentId: input.agentId, name: input.name },
157
- });
158
- return row.id;
159
- });
156
+ const id = await this.createIn(orgId, actor, input, actorTokenId);
160
157
  return this.view(orgId, id);
161
158
  }
162
159
  async list(orgId) {
@@ -164,7 +161,7 @@ export class EvalSetsService {
164
161
  .orderBy("s.created_at", "desc")
165
162
  .orderBy("s.id", "desc")
166
163
  .execute();
167
- return rows.map((r) => EvalSetsService.toView(r));
164
+ return rows.map((r) => EvalSetsService_1.toView(r));
168
165
  }
169
166
  async get(orgId, setId) {
170
167
  const set = await this.view(orgId, setId);
@@ -181,34 +178,7 @@ export class EvalSetsService {
181
178
  async update(orgId, actor, setId, patch, actorTokenId) {
182
179
  if (!UUID.test(setId))
183
180
  throw setNotFound();
184
- await this.db.transaction().execute(async (trx) => {
185
- await lockOrgAndAuthorize(trx, orgId, actor, "evals.manage");
186
- const r = await trx
187
- .updateTable("eval_sets")
188
- .set({
189
- ...(patch.name !== undefined && { name: patch.name }),
190
- ...(patch.description !== undefined && { description: patch.description }),
191
- ...(patch.rubric !== undefined && { rubric: patch.rubric }),
192
- updated_at: sql `now()`,
193
- })
194
- .where("id", "=", setId)
195
- .where("org_id", "=", orgId)
196
- .where("deleted_at", "is", null)
197
- .executeTakeFirst();
198
- if (Number(r.numUpdatedRows) === 0)
199
- throw setNotFound();
200
- await audit(trx, {
201
- actorAccountId: actor,
202
- ...(actorTokenId !== undefined && { actorTokenId }),
203
- orgId,
204
- action: "eval.set_updated",
205
- target: setId,
206
- // 只记改了哪些字段(评分标准可能很长,不进审计)
207
- detail: {
208
- fields: ["name", "description", "rubric"].filter((f) => patch[f] !== undefined),
209
- },
210
- });
211
- });
181
+ await this.updateIn(orgId, actor, setId, patch, actorTokenId);
212
182
  return this.view(orgId, setId);
213
183
  }
214
184
  /**
@@ -218,25 +188,173 @@ export class EvalSetsService {
218
188
  async remove(orgId, actor, setId, actorTokenId) {
219
189
  if (!UUID.test(setId))
220
190
  throw setNotFound();
221
- await this.db.transaction().execute(async (trx) => {
222
- await lockOrgAndAuthorize(trx, orgId, actor, "evals.manage");
223
- const r = await trx
224
- .updateTable("eval_sets")
225
- .set({ deleted_at: sql `now()`, updated_at: sql `now()` })
226
- .where("id", "=", setId)
227
- .where("org_id", "=", orgId)
228
- .where("deleted_at", "is", null)
229
- .executeTakeFirst();
230
- if (Number(r.numUpdatedRows) === 0)
231
- throw setNotFound();
232
- await stopAndPurgeRuns(trx, setId);
233
- await audit(trx, {
234
- actorAccountId: actor,
235
- ...(actorTokenId !== undefined && { actorTokenId }),
236
- orgId,
237
- action: "eval.set_deleted",
238
- target: setId,
239
- });
191
+ await this.removeIn(orgId, actor, setId, actorTokenId);
192
+ }
193
+ async createIn(orgId, actor, input, actorTokenId) {
194
+ await this.orgLock.lockAndAuthorize(orgId, actor, "evals.manage");
195
+ const agent = await this.db
196
+ .selectFrom("agents")
197
+ .select("id")
198
+ .where("id", "=", input.agentId)
199
+ .where("org_id", "=", orgId)
200
+ .where("deleted_at", "is", null)
201
+ .executeTakeFirst();
202
+ if (!agent)
203
+ throw new ApiError("agent.not_found", "Agent not found");
204
+ const row = await this.db
205
+ .insertInto("eval_sets")
206
+ .values({
207
+ org_id: orgId,
208
+ agent_id: input.agentId,
209
+ name: input.name,
210
+ description: input.description ?? "",
211
+ rubric: input.rubric ?? null,
212
+ created_by: actor,
213
+ })
214
+ .returning("id")
215
+ .executeTakeFirstOrThrow();
216
+ await audit(this.db, {
217
+ actorAccountId: actor,
218
+ ...(actorTokenId !== undefined && { actorTokenId }),
219
+ orgId,
220
+ action: "eval.set_created",
221
+ target: row.id,
222
+ detail: { agentId: input.agentId, name: input.name },
223
+ });
224
+ return row.id;
225
+ }
226
+ async updateIn(orgId, actor, setId, patch, actorTokenId) {
227
+ await this.orgLock.lockAndAuthorize(orgId, actor, "evals.manage");
228
+ const r = await this.db
229
+ .updateTable("eval_sets")
230
+ .set({
231
+ ...(patch.name !== undefined && { name: patch.name }),
232
+ ...(patch.description !== undefined && { description: patch.description }),
233
+ ...(patch.rubric !== undefined && { rubric: patch.rubric }),
234
+ updated_at: sql `now()`,
235
+ })
236
+ .where("id", "=", setId)
237
+ .where("org_id", "=", orgId)
238
+ .where("deleted_at", "is", null)
239
+ .executeTakeFirst();
240
+ if (Number(r.numUpdatedRows) === 0)
241
+ throw setNotFound();
242
+ await audit(this.db, {
243
+ actorAccountId: actor,
244
+ ...(actorTokenId !== undefined && { actorTokenId }),
245
+ orgId,
246
+ action: "eval.set_updated",
247
+ target: setId,
248
+ // 只记改了哪些字段(评分标准可能很长,不进审计)
249
+ detail: {
250
+ fields: ["name", "description", "rubric"].filter((f) => patch[f] !== undefined),
251
+ },
252
+ });
253
+ }
254
+ async removeIn(orgId, actor, setId, actorTokenId) {
255
+ await this.orgLock.lockAndAuthorize(orgId, actor, "evals.manage");
256
+ const r = await this.db
257
+ .updateTable("eval_sets")
258
+ .set({ deleted_at: sql `now()`, updated_at: sql `now()` })
259
+ .where("id", "=", setId)
260
+ .where("org_id", "=", orgId)
261
+ .where("deleted_at", "is", null)
262
+ .executeTakeFirst();
263
+ if (Number(r.numUpdatedRows) === 0)
264
+ throw setNotFound();
265
+ await stopAndPurgeRuns(this.db, this.budget, setId);
266
+ await audit(this.db, {
267
+ actorAccountId: actor,
268
+ ...(actorTokenId !== undefined && { actorTokenId }),
269
+ orgId,
270
+ action: "eval.set_deleted",
271
+ target: setId,
272
+ });
273
+ }
274
+ async insertCaseIn(orgId, actor, setId, snapshot, extra, prepared) {
275
+ const { max, json, plans, base } = prepared;
276
+ await this.orgLock.lockAndAuthorize(orgId, actor, "evals.manage");
277
+ const set = await this.db
278
+ .selectFrom("eval_sets")
279
+ .select("id")
280
+ .where("id", "=", setId)
281
+ .where("org_id", "=", orgId)
282
+ .where("deleted_at", "is", null)
283
+ .forUpdate()
284
+ .executeTakeFirst();
285
+ if (!set)
286
+ throw setNotFound();
287
+ if ((await this.caseCount(this.db, setId)) >= max)
288
+ return "full";
289
+ const row = await this.db
290
+ .insertInto("eval_cases")
291
+ .values({
292
+ set_id: setId,
293
+ org_id: orgId,
294
+ source_conversation_id: snapshot.conversationId,
295
+ source_run_id: snapshot.runId,
296
+ agent_version: snapshot.agentVersion,
297
+ title: caseTitle(snapshot),
298
+ snapshot: json,
299
+ snapshot_bytes: Buffer.byteLength(json),
300
+ replayable_steps: replayableCalls(snapshot).length,
301
+ plan_step: JSON.stringify(plans.step),
302
+ plan_run: JSON.stringify(plans.run),
303
+ base_model: base ? JSON.stringify(base.definition.model) : null,
304
+ added_by: actor,
305
+ })
306
+ .onConflict((oc) => oc.columns(["set_id", "source_run_id"]).doNothing())
307
+ .returning(CASE_COLUMNS)
308
+ .executeTakeFirst();
309
+ if (!row)
310
+ return "exists";
311
+ await audit(this.db, {
312
+ actorAccountId: actor,
313
+ ...(extra.actorTokenId !== undefined && { actorTokenId: extra.actorTokenId }),
314
+ orgId,
315
+ action: "eval.case_added",
316
+ target: setId,
317
+ detail: {
318
+ caseId: row.id,
319
+ conversationId: snapshot.conversationId,
320
+ runId: snapshot.runId,
321
+ ...(extra.sampled && { sampled: true }),
322
+ },
323
+ });
324
+ return toCaseView(row);
325
+ }
326
+ async removeCaseIn(orgId, actor, setId, caseId, actorTokenId) {
327
+ await this.orgLock.lockAndAuthorize(orgId, actor, "evals.manage");
328
+ const set = await this.db
329
+ .selectFrom("eval_sets")
330
+ .select("id")
331
+ .where("id", "=", setId)
332
+ .where("org_id", "=", orgId)
333
+ .where("deleted_at", "is", null)
334
+ .forUpdate()
335
+ .executeTakeFirst();
336
+ if (!set)
337
+ throw setNotFound();
338
+ const r = await this.db
339
+ .deleteFrom("eval_cases")
340
+ .where("id", "=", caseId)
341
+ .where("set_id", "=", setId)
342
+ .where("org_id", "=", orgId)
343
+ .returning(["source_conversation_id", "source_run_id"])
344
+ .executeTakeFirst();
345
+ if (!r)
346
+ throw caseNotFound();
347
+ await audit(this.db, {
348
+ actorAccountId: actor,
349
+ ...(actorTokenId !== undefined && { actorTokenId }),
350
+ orgId,
351
+ action: "eval.case_removed",
352
+ target: setId,
353
+ detail: {
354
+ caseId,
355
+ conversationId: r.source_conversation_id,
356
+ runId: r.source_run_id,
357
+ },
240
358
  });
241
359
  }
242
360
  /** 未删除的评测集;不存在 → `eval.set_not_found`。 */
@@ -267,7 +385,7 @@ export class EvalSetsService {
267
385
  * `(set_id, source_run_id)` 已存在时返回 null(不写)。成功时写审计 `eval.case_added`。
268
386
  */
269
387
  async insertCase(orgId, actor, setId, snapshot, extra) {
270
- const max = this.config().evals.maxCasesPerSet;
388
+ const max = this.config.get().evals.maxCasesPerSet;
271
389
  const json = JSON.stringify(snapshot);
272
390
  // 估算与启动只读这些列(不读快照):两种模式的计划与用例原版本的模型
273
391
  const plans = casePlans(snapshot);
@@ -277,57 +395,7 @@ export class EvalSetsService {
277
395
  plans.step.switchedModel = switched;
278
396
  plans.run.switchedModel = switched;
279
397
  }
280
- return this.db.transaction().execute(async (trx) => {
281
- await lockOrgAndAuthorize(trx, orgId, actor, "evals.manage");
282
- const set = await trx
283
- .selectFrom("eval_sets")
284
- .select("id")
285
- .where("id", "=", setId)
286
- .where("org_id", "=", orgId)
287
- .where("deleted_at", "is", null)
288
- .forUpdate()
289
- .executeTakeFirst();
290
- if (!set)
291
- throw setNotFound();
292
- if ((await this.caseCount(trx, setId)) >= max)
293
- return "full";
294
- const row = await trx
295
- .insertInto("eval_cases")
296
- .values({
297
- set_id: setId,
298
- org_id: orgId,
299
- source_conversation_id: snapshot.conversationId,
300
- source_run_id: snapshot.runId,
301
- agent_version: snapshot.agentVersion,
302
- title: caseTitle(snapshot),
303
- snapshot: json,
304
- snapshot_bytes: Buffer.byteLength(json),
305
- replayable_steps: replayableCalls(snapshot).length,
306
- plan_step: JSON.stringify(plans.step),
307
- plan_run: JSON.stringify(plans.run),
308
- base_model: base ? JSON.stringify(base.definition.model) : null,
309
- added_by: actor,
310
- })
311
- .onConflict((oc) => oc.columns(["set_id", "source_run_id"]).doNothing())
312
- .returning(CASE_COLUMNS)
313
- .executeTakeFirst();
314
- if (!row)
315
- return "exists";
316
- await audit(trx, {
317
- actorAccountId: actor,
318
- ...(extra.actorTokenId !== undefined && { actorTokenId: extra.actorTokenId }),
319
- orgId,
320
- action: "eval.case_added",
321
- target: setId,
322
- detail: {
323
- caseId: row.id,
324
- conversationId: snapshot.conversationId,
325
- runId: snapshot.runId,
326
- ...(extra.sampled && { sampled: true }),
327
- },
328
- });
329
- return toCaseView(row);
330
- });
398
+ return this.insertCaseIn(orgId, actor, setId, snapshot, extra, { max, json, plans, base });
331
399
  }
332
400
  /**
333
401
  * 把某次运行加为用例。对话不在本组织(或是 eval 对话)→ `conversation.not_found`;对话的 agent 不是集合的 agent →
@@ -358,7 +426,7 @@ export class EvalSetsService {
358
426
  .executeTakeFirst();
359
427
  if (exists)
360
428
  throw caseExists();
361
- const { maxCasesPerSet, maxCaseBytes } = this.config().evals;
429
+ const { maxCasesPerSet, maxCaseBytes } = this.config.get().evals;
362
430
  // 先判容量再取快照(快照可能很大);写入时在锁内再判一次
363
431
  if ((await this.caseCount(this.db, setId)) >= maxCasesPerSet)
364
432
  throw tooMany(maxCasesPerSet);
@@ -380,7 +448,7 @@ export class EvalSetsService {
380
448
  */
381
449
  async sample(orgId, actor, setId, input, actorTokenId) {
382
450
  const set = await this.liveSet(orgId, setId);
383
- const { maxCasesPerSet, maxCaseBytes } = this.config().evals;
451
+ const { maxCasesPerSet, maxCaseBytes } = this.config.get().evals;
384
452
  const room = maxCasesPerSet - (await this.caseCount(this.db, setId));
385
453
  if (room <= 0)
386
454
  throw tooMany(maxCasesPerSet);
@@ -442,40 +510,7 @@ export class EvalSetsService {
442
510
  throw setNotFound();
443
511
  if (!UUID.test(caseId))
444
512
  throw caseNotFound();
445
- await this.db.transaction().execute(async (trx) => {
446
- await lockOrgAndAuthorize(trx, orgId, actor, "evals.manage");
447
- const set = await trx
448
- .selectFrom("eval_sets")
449
- .select("id")
450
- .where("id", "=", setId)
451
- .where("org_id", "=", orgId)
452
- .where("deleted_at", "is", null)
453
- .forUpdate()
454
- .executeTakeFirst();
455
- if (!set)
456
- throw setNotFound();
457
- const r = await trx
458
- .deleteFrom("eval_cases")
459
- .where("id", "=", caseId)
460
- .where("set_id", "=", setId)
461
- .where("org_id", "=", orgId)
462
- .returning(["source_conversation_id", "source_run_id"])
463
- .executeTakeFirst();
464
- if (!r)
465
- throw caseNotFound();
466
- await audit(trx, {
467
- actorAccountId: actor,
468
- ...(actorTokenId !== undefined && { actorTokenId }),
469
- orgId,
470
- action: "eval.case_removed",
471
- target: setId,
472
- detail: {
473
- caseId,
474
- conversationId: r.source_conversation_id,
475
- runId: r.source_run_id,
476
- },
477
- });
478
- });
513
+ await this.removeCaseIn(orgId, actor, setId, caseId, actorTokenId);
479
514
  }
480
515
  /**
481
516
  * 用例详情:由快照还原轨迹(原对话删除后照常可读)。快照即对话内容,每次查看写审计 `trajectory.viewed`
@@ -514,15 +549,41 @@ export class EvalSetsService {
514
549
  }),
515
550
  };
516
551
  }
517
- }
552
+ };
553
+ __decorate([
554
+ Transactional({ propagation: "requires_new" })
555
+ ], EvalSetsService.prototype, "createIn", null);
556
+ __decorate([
557
+ Transactional({ propagation: "requires_new" })
558
+ ], EvalSetsService.prototype, "updateIn", null);
559
+ __decorate([
560
+ Transactional({ propagation: "requires_new" })
561
+ ], EvalSetsService.prototype, "removeIn", null);
562
+ __decorate([
563
+ Transactional({ propagation: "requires_new" })
564
+ ], EvalSetsService.prototype, "insertCaseIn", null);
565
+ __decorate([
566
+ Transactional({ propagation: "requires_new" })
567
+ ], EvalSetsService.prototype, "removeCaseIn", null);
568
+ EvalSetsService = EvalSetsService_1 = __decorate([
569
+ Injectable(),
570
+ __param(0, Inject(KernelDb)),
571
+ __param(1, Inject(KernelConfigService)),
572
+ __param(2, Inject(PricesService)),
573
+ __param(3, Inject(SettingsService)),
574
+ __param(4, Inject(OrgLock)),
575
+ __param(5, Inject(EvalBudget)),
576
+ __param(6, Inject(TransactionHost))
577
+ ], EvalSetsService);
578
+ export { EvalSetsService };
518
579
  /**
519
580
  * 删除评测集时(同一事务内):在执行的评测运行置 `cancelled`、未开始的结果 `skipped`(在途的用例在下一次请求前停下),
520
581
  * 删掉这些运行的整轮回放隐藏对话(及其 checkpoint)与集合的全部用例(结果级联删除)——集合软删后它们没有入口,也不该留着。
521
582
  * 与回放写种子互斥:种子事务对运行行加共享锁并复核仍在执行(见 `replayRun`),这里的 UPDATE 持行锁,
522
583
  * 先提交的一方胜出,不会在删除之后再长出新的评测对话。
523
584
  */
524
- async function stopAndPurgeRuns(trx, setId) {
525
- const runs = await trx
585
+ async function stopAndPurgeRuns(db, budget, setId) {
586
+ const runs = await db
526
587
  .updateTable("eval_runs")
527
588
  .set({ status: "cancelled", finished_at: sql `now()` })
528
589
  .where("set_id", "=", setId)
@@ -530,29 +591,22 @@ async function stopAndPurgeRuns(trx, setId) {
530
591
  .returning("id")
531
592
  .execute();
532
593
  for (const r of runs) {
533
- await trx
534
- .updateTable("eval_results")
535
- .set({ status: "skipped", updated_at: sql `now()` })
536
- .where("run_id", "=", r.id)
537
- .where("status", "=", "pending")
538
- .execute();
539
- await skipPendingJudges(trx, r.id);
540
- await recountCases(trx, r.id);
594
+ await budget.skipRun(r.id);
541
595
  }
542
- const all = trx.selectFrom("eval_runs").select("id").where("set_id", "=", setId);
543
- const convs = trx
596
+ const all = db.selectFrom("eval_runs").select("id").where("set_id", "=", setId);
597
+ const convs = db
544
598
  .selectFrom("conversations")
545
599
  .select("id")
546
600
  .where("kind", "=", "eval")
547
601
  .where("eval_run_id", "in", all);
548
- const threads = trx.selectFrom("runs").select("id").where("conversation_id", "in", convs);
549
- await trx.deleteFrom("lg_checkpoint_writes").where("thread_id", "in", threads).execute();
550
- await trx.deleteFrom("lg_checkpoints").where("thread_id", "in", threads).execute();
551
- await trx
602
+ const threads = db.selectFrom("runs").select("id").where("conversation_id", "in", convs);
603
+ await db.deleteFrom("lg_checkpoint_writes").where("thread_id", "in", threads).execute();
604
+ await db.deleteFrom("lg_checkpoints").where("thread_id", "in", threads).execute();
605
+ await db
552
606
  .deleteFrom("conversations")
553
607
  .where("kind", "=", "eval")
554
608
  .where("eval_run_id", "in", all)
555
609
  .execute();
556
610
  // 用例快照是复制来的对话内容:硬删(结果随之级联删除),与单个移除用例一致
557
- await trx.deleteFrom("eval_cases").where("set_id", "=", setId).execute();
611
+ await db.deleteFrom("eval_cases").where("set_id", "=", setId).execute();
558
612
  }
@@ -1,7 +1,7 @@
1
1
  import type { ToolSpec } from "@capybara-hq/plugin-sdk";
2
2
  import { type AgentDefinition } from "../agents/definition.js";
3
3
  import type { ConversationEvent, ConversationEventType } from "../conversations/events.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
4
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
5
  /**
6
6
  * 评测用例快照(C3):复制截至某次运行终态的会话事件、这些事件引用的 agent 版本定义、请求用到的工具定义
7
7
  * (按 specHash)。回放只读快照,不改原对话的日志;媒体不复制字节,回放时按引用取原附件。
@@ -57,7 +57,7 @@ export interface CaseSnapshot {
57
57
  * 运行还没有终态事件 → `eval.run_not_finished`(409);序列化后超过 `maxBytes` 字节 → `eval.case_too_large`(413)。
58
58
  * `maxBytes` 由调用方传入(`evals.maxCaseBytes`)。
59
59
  */
60
- export declare function takeSnapshot(db: KernelDb, orgId: string, conversationId: string, runId: string, maxBytes: number): Promise<CaseSnapshot>;
60
+ export declare function takeSnapshot(db: KernelSchemaDb, orgId: string, conversationId: string, runId: string, maxBytes: number): Promise<CaseSnapshot>;
61
61
  /**
62
62
  * 读出库里存的快照(`eval_cases.snapshot`):把各版本定义里改名前(D17)的 `{ kind: "app" }` 工具引用规范化为
63
63
  * connector 形(C27)。整轮回放会把定义交给实时注册表,不规范化的话连接器工具全部失效。其余字段原样。
@@ -1,7 +1,7 @@
1
1
  import { type ContentBlock, type ModelUsage, type ParamValue, type StopReason } from "@capybara-hq/plugin-sdk";
2
2
  import type { AgentDefinition, ModelRef } from "../agents/definition.js";
3
- import type { KernelConfig } from "../config/schema.js";
4
3
  import { type Selection } from "../conversations/selection.js";
4
+ import type { KernelConfigService } from "../infra/config/kernel-config.service.js";
5
5
  import { type MediaSourceDeps } from "../runtime/model-call.js";
6
6
  import type { ProviderRegistry } from "../runtime/providers.js";
7
7
  import { type DriftReason } from "./reconstruct.js";
@@ -56,7 +56,7 @@ export interface ReplayOutput {
56
56
  }
57
57
  export interface StepReplayDeps {
58
58
  registry: Pick<ProviderRegistry, "resolve">;
59
- config: () => KernelConfig;
59
+ config: Pick<KernelConfigService, "get">;
60
60
  /** 附件来源(与运行时同一个,按组织 + 对话取);不给时媒体一律按「不再可用」占位。 */
61
61
  media?: MediaSourceDeps;
62
62
  }
@@ -151,7 +151,7 @@ export async function replayStep(d, s, call, candidate, signal) {
151
151
  }),
152
152
  ...(media !== undefined && { mediaInfo: media.mediaInfo, media: media.media }),
153
153
  });
154
- const idleMs = info.streamIdleTimeoutMs ?? d.config().runtime.streamIdleMs;
154
+ const idleMs = info.streamIdleTimeoutMs ?? d.config.get().runtime.streamIdleMs;
155
155
  const started = Date.now();
156
156
  let streamedChars = 0;
157
157
  let out;
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { type Principal } from "../identity/principal.js";
3
3
  import { type OrgContext } from "../orgs/org.guard.js";
4
- import { type TrajectoryDetail, type TrajectoryListItem, type TrajectoryService } from "./trajectory.service.js";
4
+ import { type TrajectoryDetail, type TrajectoryListItem, TrajectoryService } from "./trajectory.service.js";
5
5
  declare const ListQuery: z.ZodObject<{
6
6
  agentId: z.ZodOptional<z.ZodString>;
7
7
  kind: z.ZodOptional<z.ZodEnum<{