@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,5 +1,7 @@
1
1
  import type { ModelUsage } from "@capybara-hq/plugin-sdk";
2
- import type { KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
5
  /**
4
6
  * 评测运行的 token 预算(C7):`eval_runs.tokens_used` 在 PG 里原子累加,达到 `token_cap` 的同一条语句把
5
7
  * 状态置为 `capped`;worker 每次请求前查 {@link runActive},不活跃就不再发新请求。在途请求可以越过上限,
@@ -13,7 +15,7 @@ export declare const usageTokens: (u: ModelUsage) => number;
13
15
  * 累加用量:`UPDATE … RETURNING`,累加后 ≥ 上限且运行仍在执行 → 同一语句置 `capped`、记 `finished_at`。
14
16
  * 运行已不在(被删)时返回 `{ used: 0, capped: true }`,调用方同样停下。
15
17
  */
16
- export declare function consumeTokens(db: KernelDb, runId: string, tokens: number): Promise<{
18
+ export declare function consumeTokens(db: KernelSchemaDb, runId: string, tokens: number): Promise<{
17
19
  used: number;
18
20
  capped: boolean;
19
21
  }>;
@@ -27,35 +29,54 @@ export declare const TOO_MANY_ERRORS: {
27
29
  * 同一语句置 `failed`、记原因与 `finished_at`;成功 → 清零。返回运行是否因此被熔断。
28
30
  * 多个任务并发时「连续」按写入顺序计(近似),足以挡住「每个请求都失败」的运行。
29
31
  */
30
- export declare function recordOutcome(db: KernelDb, runId: string, ok: boolean, maxConsecutive: number): Promise<{
32
+ export declare function recordOutcome(db: KernelSchemaDb, runId: string, ok: boolean, maxConsecutive: number): Promise<{
31
33
  tripped: boolean;
32
34
  }>;
33
35
  /**
34
36
  * 运行停下(取消 / 越限 / 熔断 / 删除评测集)时:还在等评委的结果(`judge_status = 'pending'`)记 `skipped`,
35
37
  * 否则这些用例永远算不上做完。给了 `caseId` 只处理该用例。在途的评委请求做完后写不进来(条件是 pending),用量照样计入。
36
38
  */
37
- export declare function skipPendingJudges(db: KernelDb, runId: string, caseId?: string): Promise<void>;
38
- /**
39
- * 重算 `cases_done` = 结果全部结束、且没有等评委的结果的用例数(幂等:任务重做不会重复计数),达到 `cases_total` 且运行仍在执行 →
40
- * `completed`。先锁运行行再数(READ COMMITTED 下新语句看得到其他任务已提交的结果),并发完成的任务不会互相覆盖。
41
- * worker 每做完一个用例、取消、入队失败时都调用。在事务里调用时锁随事务释放。
42
- */
43
- export declare function recountCases(db: KernelDb, runId: string): Promise<void>;
39
+ export declare function skipPendingJudges(db: KernelSchemaDb, runId: string, caseId?: string): Promise<void>;
44
40
  /**
45
41
  * 运行仍在执行(queued / running),且所属组织与评测集的 agent 都没有删除:取消、达到上限、已结束、运行行已删除、
46
42
  * 组织或 agent 已删除都为 false(删除组织 / agent 时会显式取消运行,这里再兜一次底,挡住删除与请求之间的竞争)。
47
43
  */
48
- export declare function runActive(db: KernelDb, runId: string): Promise<boolean>;
44
+ export declare function runActive(db: KernelSchemaDb, runId: string): Promise<boolean>;
49
45
  /**
50
- * 删除组织或 agent 时(调用方的事务内)取消其在执行的评测运行:运行置 `cancelled`,未开始的结果 `skipped`、
51
- * 等评委的记 `skipped`,重算进度,每个运行写审计 `eval.run_cancelled`(detail 带原因)。在途请求做完后写不进新的请求
52
- * (worker 每次请求前查 {@link runActive})。运行创建者离开组织不取消(Ruling S1-b:管理员的评测运行是组织的工作)。
46
+ * The eval run bookkeeping that needs a transaction: the progress recount (it locks the run row)
47
+ * and the cancellation of an org's or agent's runs when it is deleted. One provider, shared by the
48
+ * evals, the agents and the orgs.
53
49
  */
54
- export declare function cancelEvalRuns(trx: KernelDb, scope: {
55
- orgId: string;
56
- agentId?: string;
57
- }, actor: {
58
- accountId: string;
59
- tokenId?: string;
60
- }, reason: "org_deleted" | "agent_deleted"): Promise<string[]>;
50
+ export declare class EvalBudget {
51
+ private readonly db;
52
+ readonly txHost: TransactionHost;
53
+ constructor(db: KernelDb, txHost: TransactionHost);
54
+ /**
55
+ * 重算 `cases_done` = 结果全部结束、且没有等评委的结果的用例数(幂等:任务重做不会重复计数),达到 `cases_total` 且运行仍在执行 →
56
+ * `completed`。先锁运行行再数(READ COMMITTED 下新语句看得到其他任务已提交的结果),并发完成的任务不会互相覆盖。
57
+ * worker 每做完一个用例、取消、入队失败时都调用。Joins the caller's transaction (the lock is released with it),
58
+ * else runs in its own.
59
+ */
60
+ recountCases(runId: string): Promise<void>;
61
+ /**
62
+ * 删除组织或 agent 时(调用方的事务内)取消其在执行的评测运行:运行置 `cancelled`,未开始的结果 `skipped`、
63
+ * 等评委的记 `skipped`,重算进度,每个运行写审计 `eval.run_cancelled`(detail 带原因)。在途请求做完后写不进新的请求
64
+ * (worker 每次请求前查 {@link runActive})。运行创建者离开组织不取消(Ruling S1-b:管理员的评测运行是组织的工作)。
65
+ */
66
+ cancelRuns(scope: {
67
+ orgId: string;
68
+ agentId?: string;
69
+ }, actor: {
70
+ accountId: string;
71
+ tokenId?: string;
72
+ }, reason: "org_deleted" | "agent_deleted"): Promise<string[]>;
73
+ /**
74
+ * A run that stopped (cancelled, its set deleted): its results not started yet are `skipped`,
75
+ * the pending judges too, and the progress is recounted, in the caller's transaction.
76
+ */
77
+ skipRun(runId: string): Promise<void>;
78
+ }
79
+ /** {@link EvalBudget} on its own: the agents and the orgs import it without the evals. */
80
+ export declare class EvalBudgetModule {
81
+ }
61
82
  export declare const addUsage: (a: ModelUsage, b: ModelUsage) => ModelUsage;
@@ -1,5 +1,18 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable, Module } from "@nestjs/common";
1
11
  import { sql } from "kysely";
2
12
  import { audit } from "../identity/audit.js";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { TransactionHost } from "../infra/database/transaction-host.js";
15
+ import { Transactional } from "../infra/database/transactional.decorator.js";
3
16
  /**
4
17
  * 评测运行的 token 预算(C7):`eval_runs.tokens_used` 在 PG 里原子累加,达到 `token_cap` 的同一条语句把
5
18
  * 状态置为 `capped`;worker 每次请求前查 {@link runActive},不活跃就不再发新请求。在途请求可以越过上限,
@@ -83,13 +96,44 @@ export async function skipPendingJudges(db, runId, caseId) {
83
96
  await q.execute();
84
97
  }
85
98
  /**
86
- * 重算 `cases_done` = 结果全部结束、且没有等评委的结果的用例数(幂等:任务重做不会重复计数),达到 `cases_total` 且运行仍在执行 →
87
- * `completed`。先锁运行行再数(READ COMMITTED 下新语句看得到其他任务已提交的结果),并发完成的任务不会互相覆盖。
88
- * worker 每做完一个用例、取消、入队失败时都调用。在事务里调用时锁随事务释放。
99
+ * 运行仍在执行(queued / running),且所属组织与评测集的 agent 都没有删除:取消、达到上限、已结束、运行行已删除、
100
+ * 组织或 agent 已删除都为 false(删除组织 / agent 时会显式取消运行,这里再兜一次底,挡住删除与请求之间的竞争)。
89
101
  */
90
- export async function recountCases(db, runId) {
91
- const run = async (trx) => {
92
- const row = await trx
102
+ export async function runActive(db, runId) {
103
+ const r = await db
104
+ .selectFrom("eval_runs as r")
105
+ .innerJoin("eval_sets as s", "s.id", "r.set_id")
106
+ .innerJoin("agents as a", "a.id", "s.agent_id")
107
+ .innerJoin("orgs as o", "o.id", "r.org_id")
108
+ .select("r.id")
109
+ .where("r.id", "=", runId)
110
+ .where("r.status", "in", [...ACTIVE_EVAL_STATUSES])
111
+ .where("a.deleted_at", "is", null)
112
+ .where("o.deleted_at", "is", null)
113
+ .executeTakeFirst();
114
+ return r !== undefined;
115
+ }
116
+ /**
117
+ * The eval run bookkeeping that needs a transaction: the progress recount (it locks the run row)
118
+ * and the cancellation of an org's or agent's runs when it is deleted. One provider, shared by the
119
+ * evals, the agents and the orgs.
120
+ */
121
+ let EvalBudget = class EvalBudget {
122
+ db;
123
+ txHost;
124
+ constructor(db, txHost) {
125
+ this.db = db;
126
+ this.txHost = txHost;
127
+ }
128
+ /**
129
+ * 重算 `cases_done` = 结果全部结束、且没有等评委的结果的用例数(幂等:任务重做不会重复计数),达到 `cases_total` 且运行仍在执行 →
130
+ * `completed`。先锁运行行再数(READ COMMITTED 下新语句看得到其他任务已提交的结果),并发完成的任务不会互相覆盖。
131
+ * worker 每做完一个用例、取消、入队失败时都调用。Joins the caller's transaction (the lock is released with it),
132
+ * else runs in its own.
133
+ */
134
+ async recountCases(runId) {
135
+ const db = this.db.db;
136
+ const row = await db
93
137
  .selectFrom("eval_runs")
94
138
  .select(["cases_total", "status"])
95
139
  .where("id", "=", runId)
@@ -102,10 +146,10 @@ export async function recountCases(db, runId) {
102
146
  SELECT case_id FROM capybara.eval_results WHERE run_id = ${runId}
103
147
  GROUP BY case_id
104
148
  HAVING bool_and(status IN ('done', 'error', 'skipped') AND judge_status <> 'pending')
105
- ) finished`.execute(trx);
149
+ ) finished`.execute(db);
106
150
  const done = Number(r.rows[0]?.n ?? 0);
107
151
  const complete = done >= row.cases_total && ACTIVE_EVAL_STATUSES.includes(row.status);
108
- await trx
152
+ await db
109
153
  .updateTable("eval_runs")
110
154
  .set({
111
155
  cases_done: done,
@@ -113,66 +157,74 @@ export async function recountCases(db, runId) {
113
157
  })
114
158
  .where("id", "=", runId)
115
159
  .execute();
116
- };
117
- if (db.isTransaction)
118
- await run(db);
119
- else
120
- await db.transaction().execute((trx) => run(trx));
121
- }
122
- /**
123
- * 运行仍在执行(queued / running),且所属组织与评测集的 agent 都没有删除:取消、达到上限、已结束、运行行已删除、
124
- * 组织或 agent 已删除都为 false(删除组织 / agent 时会显式取消运行,这里再兜一次底,挡住删除与请求之间的竞争)。
125
- */
126
- export async function runActive(db, runId) {
127
- const r = await db
128
- .selectFrom("eval_runs as r")
129
- .innerJoin("eval_sets as s", "s.id", "r.set_id")
130
- .innerJoin("agents as a", "a.id", "s.agent_id")
131
- .innerJoin("orgs as o", "o.id", "r.org_id")
132
- .select("r.id")
133
- .where("r.id", "=", runId)
134
- .where("r.status", "in", [...ACTIVE_EVAL_STATUSES])
135
- .where("a.deleted_at", "is", null)
136
- .where("o.deleted_at", "is", null)
137
- .executeTakeFirst();
138
- return r !== undefined;
139
- }
140
- /**
141
- * 删除组织或 agent 时(调用方的事务内)取消其在执行的评测运行:运行置 `cancelled`,未开始的结果 `skipped`、
142
- * 等评委的记 `skipped`,重算进度,每个运行写审计 `eval.run_cancelled`(detail 带原因)。在途请求做完后写不进新的请求
143
- * (worker 每次请求前查 {@link runActive})。运行创建者离开组织不取消(Ruling S1-b:管理员的评测运行是组织的工作)。
144
- */
145
- export async function cancelEvalRuns(trx, scope, actor, reason) {
146
- let q = trx
147
- .updateTable("eval_runs")
148
- .set({ status: "cancelled", finished_at: sql `now()` })
149
- .where("org_id", "=", scope.orgId)
150
- .where("status", "in", [...ACTIVE_EVAL_STATUSES]);
151
- if (scope.agentId !== undefined) {
152
- const agentId = scope.agentId;
153
- q = q.where("set_id", "in", (eb) => eb.selectFrom("eval_sets").select("id").where("agent_id", "=", agentId));
154
160
  }
155
- const runs = await q.returning("id").execute();
156
- for (const r of runs) {
157
- await trx
161
+ /**
162
+ * 删除组织或 agent 时(调用方的事务内)取消其在执行的评测运行:运行置 `cancelled`,未开始的结果 `skipped`、
163
+ * 等评委的记 `skipped`,重算进度,每个运行写审计 `eval.run_cancelled`(detail 带原因)。在途请求做完后写不进新的请求
164
+ * (worker 每次请求前查 {@link runActive})。运行创建者离开组织不取消(Ruling S1-b:管理员的评测运行是组织的工作)。
165
+ */
166
+ async cancelRuns(scope, actor, reason) {
167
+ const db = this.db.db;
168
+ let q = db
169
+ .updateTable("eval_runs")
170
+ .set({ status: "cancelled", finished_at: sql `now()` })
171
+ .where("org_id", "=", scope.orgId)
172
+ .where("status", "in", [...ACTIVE_EVAL_STATUSES]);
173
+ if (scope.agentId !== undefined) {
174
+ const agentId = scope.agentId;
175
+ q = q.where("set_id", "in", (eb) => eb.selectFrom("eval_sets").select("id").where("agent_id", "=", agentId));
176
+ }
177
+ const runs = await q.returning("id").execute();
178
+ for (const r of runs) {
179
+ await this.skipRun(r.id);
180
+ await audit(db, {
181
+ actorAccountId: actor.accountId,
182
+ ...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
183
+ orgId: scope.orgId,
184
+ action: "eval.run_cancelled",
185
+ target: r.id,
186
+ detail: { reason },
187
+ });
188
+ }
189
+ return runs.map((r) => r.id);
190
+ }
191
+ /**
192
+ * A run that stopped (cancelled, its set deleted): its results not started yet are `skipped`,
193
+ * the pending judges too, and the progress is recounted, in the caller's transaction.
194
+ */
195
+ async skipRun(runId) {
196
+ await this.db
158
197
  .updateTable("eval_results")
159
198
  .set({ status: "skipped", updated_at: sql `now()` })
160
- .where("run_id", "=", r.id)
199
+ .where("run_id", "=", runId)
161
200
  .where("status", "=", "pending")
162
201
  .execute();
163
- await skipPendingJudges(trx, r.id);
164
- await recountCases(trx, r.id);
165
- await audit(trx, {
166
- actorAccountId: actor.accountId,
167
- ...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
168
- orgId: scope.orgId,
169
- action: "eval.run_cancelled",
170
- target: r.id,
171
- detail: { reason },
172
- });
202
+ await skipPendingJudges(this.db.db, runId);
203
+ await this.recountCases(runId);
173
204
  }
174
- return runs.map((r) => r.id);
175
- }
205
+ };
206
+ __decorate([
207
+ Transactional()
208
+ ], EvalBudget.prototype, "recountCases", null);
209
+ __decorate([
210
+ Transactional({ propagation: "mandatory" })
211
+ ], EvalBudget.prototype, "cancelRuns", null);
212
+ __decorate([
213
+ Transactional({ propagation: "mandatory" })
214
+ ], EvalBudget.prototype, "skipRun", null);
215
+ EvalBudget = __decorate([
216
+ Injectable(),
217
+ __param(0, Inject(KernelDb)),
218
+ __param(1, Inject(TransactionHost))
219
+ ], EvalBudget);
220
+ export { EvalBudget };
221
+ /** {@link EvalBudget} on its own: the agents and the orgs import it without the evals. */
222
+ let EvalBudgetModule = class EvalBudgetModule {
223
+ };
224
+ EvalBudgetModule = __decorate([
225
+ Module({ providers: [EvalBudget], exports: [EvalBudget] })
226
+ ], EvalBudgetModule);
227
+ export { EvalBudgetModule };
176
228
  export const addUsage = (a, b) => ({
177
229
  inputTokens: a.inputTokens + b.inputTokens,
178
230
  outputTokens: a.outputTokens + b.outputTokens,
@@ -0,0 +1,31 @@
1
+ import { WorkerHost } from "@nestjs/bullmq";
2
+ import { type DynamicModule } from "@nestjs/common";
3
+ import type { Job, Worker } from "bullmq";
4
+ import type { KernelConfig } from "../config/schema.js";
5
+ import { type EvalJobData } from "./jobs.js";
6
+ import { EvalWorker } from "./worker.js";
7
+ /**
8
+ * Evals: the trajectory viewer, eval sets and cases, eval runs (the producer of
9
+ * `cap-kernel-evals`) and the run bookkeeping ({@link EvalBudgetModule}, re-exported).
10
+ */
11
+ export declare class EvalsModule {
12
+ }
13
+ /** The consumer of `cap-kernel-evals` (one case per job): {@link EvalWorker}. */
14
+ export declare class EvalsProcessor extends WorkerHost<Worker<EvalJobData>> {
15
+ private readonly evals;
16
+ constructor(evals: EvalWorker);
17
+ process(job: Job<EvalJobData>, token?: string): Promise<void>;
18
+ failed(job: Job<EvalJobData> | undefined, err: Error): void;
19
+ error(err: Error): void;
20
+ }
21
+ /**
22
+ * The eval worker (step and full-run replays, the judge) over the runtime's loop and model
23
+ * registry, and the consumer of `cap-kernel-evals`, its options from the startup config
24
+ * (concurrency `evals.workerConcurrency`, the run queues' job lock and stalled detection). Imported
25
+ * only by the worker role (`WorkerModule`), so other roles get no processor and no BullMQ worker.
26
+ * The worker never starts by itself: the worker role (`WorkerRole`) starts it after the extensions
27
+ * loaded, and drains it on stop.
28
+ */
29
+ export declare class EvalWorkersModule {
30
+ static forRoot(config: KernelConfig): DynamicModule;
31
+ }
@@ -0,0 +1,114 @@
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 EvalWorkersModule_1;
11
+ import { hostname } from "node:os";
12
+ import { OnWorkerEvent, WorkerHost } from "@nestjs/bullmq";
13
+ import { Inject, Injectable, Module } from "@nestjs/common";
14
+ import { EventLogModule } from "../conversations/event-log.js";
15
+ import { IdentityModule } from "../identity/identity.module.js";
16
+ import { configuredProcessor } from "../infra/queue/configured-processor.js";
17
+ import { QueueModule } from "../infra/queue/queue.module.js";
18
+ import { runJob } from "../infra/queue/run-job.js";
19
+ import { ModelsModule } from "../models/models.module.js";
20
+ import { OrgLockModule } from "../orgs/org-lock.js";
21
+ import { ProvidersModule } from "../runtime/providers.js";
22
+ import { RuntimeModule } from "../runtime/runtime.module.js";
23
+ import { EvalBudgetModule } from "./budget.js";
24
+ import { EVAL_QUEUE_NAME, EvalJobs } from "./jobs.js";
25
+ import { EvalReplaySeeder } from "./run-replay.js";
26
+ import { EvalRunsService } from "./runs.service.js";
27
+ import { EvalSetsService } from "./sets.service.js";
28
+ import { TrajectoryService } from "./trajectory.service.js";
29
+ import { EVAL_MAX_STALLED_COUNT, EvalWorker } from "./worker.js";
30
+ /**
31
+ * Evals: the trajectory viewer, eval sets and cases, eval runs (the producer of
32
+ * `cap-kernel-evals`) and the run bookkeeping ({@link EvalBudgetModule}, re-exported).
33
+ */
34
+ let EvalsModule = class EvalsModule {
35
+ };
36
+ EvalsModule = __decorate([
37
+ Module({
38
+ imports: [
39
+ EventLogModule,
40
+ ModelsModule,
41
+ IdentityModule,
42
+ OrgLockModule,
43
+ ProvidersModule,
44
+ EvalBudgetModule,
45
+ QueueModule.registerQueue(EVAL_QUEUE_NAME),
46
+ ],
47
+ providers: [TrajectoryService, EvalSetsService, EvalRunsService, EvalJobs],
48
+ exports: [TrajectoryService, EvalSetsService, EvalRunsService, EvalJobs, EvalBudgetModule],
49
+ })
50
+ ], EvalsModule);
51
+ export { EvalsModule };
52
+ /** The consumer of `cap-kernel-evals` (one case per job): {@link EvalWorker}. */
53
+ let EvalsProcessor = class EvalsProcessor extends WorkerHost {
54
+ evals;
55
+ constructor(evals) {
56
+ super();
57
+ this.evals = evals;
58
+ }
59
+ process(job, token) {
60
+ return runJob(EVAL_QUEUE_NAME, job, () => this.evals.process(job, token));
61
+ }
62
+ failed(job, err) {
63
+ this.evals.onFailed(job, err);
64
+ }
65
+ error(err) {
66
+ this.evals.onError(err);
67
+ }
68
+ };
69
+ __decorate([
70
+ OnWorkerEvent("failed")
71
+ ], EvalsProcessor.prototype, "failed", null);
72
+ __decorate([
73
+ OnWorkerEvent("error")
74
+ ], EvalsProcessor.prototype, "error", null);
75
+ EvalsProcessor = __decorate([
76
+ Injectable(),
77
+ __param(0, Inject(EvalWorker))
78
+ ], EvalsProcessor);
79
+ export { EvalsProcessor };
80
+ /**
81
+ * The eval worker (step and full-run replays, the judge) over the runtime's loop and model
82
+ * registry, and the consumer of `cap-kernel-evals`, its options from the startup config
83
+ * (concurrency `evals.workerConcurrency`, the run queues' job lock and stalled detection). Imported
84
+ * only by the worker role (`WorkerModule`), so other roles get no processor and no BullMQ worker.
85
+ * The worker never starts by itself: the worker role (`WorkerRole`) starts it after the extensions
86
+ * loaded, and drains it on stop.
87
+ */
88
+ let EvalWorkersModule = EvalWorkersModule_1 = class EvalWorkersModule {
89
+ static forRoot(config) {
90
+ const { jobLockMs, stalledIntervalMs } = config.runtime;
91
+ return {
92
+ module: EvalWorkersModule_1,
93
+ imports: [EvalsModule, RuntimeModule, EventLogModule, ModelsModule],
94
+ providers: [
95
+ EvalReplaySeeder,
96
+ EvalWorker,
97
+ configuredProcessor(EvalsProcessor, EVAL_QUEUE_NAME, {
98
+ // the worker name is recorded on the job (BullMQ processedBy): which replica ran it
99
+ name: `${hostname()}-${process.pid}`,
100
+ concurrency: config.evals.workerConcurrency,
101
+ lockDuration: jobLockMs,
102
+ stalledInterval: stalledIntervalMs,
103
+ maxStalledCount: EVAL_MAX_STALLED_COUNT,
104
+ }),
105
+ ],
106
+ exports: [EvalWorker, EvalsProcessor],
107
+ };
108
+ }
109
+ };
110
+ EvalWorkersModule = EvalWorkersModule_1 = __decorate([
111
+ Module({})
112
+ // biome-ignore lint/complexity/noStaticOnlyClass: a Nest dynamic module
113
+ ], EvalWorkersModule);
114
+ export { EvalWorkersModule };
@@ -0,0 +1,20 @@
1
+ import type { Queue } from "bullmq";
2
+ /** 评测队列的 BullMQ 队列名(不含 `:`,C7)。 */
3
+ export declare const EVAL_QUEUE_NAME = "cap-kernel-evals";
4
+ /** 每个用例一个任务(C7;不含 `:`)。 */
5
+ export declare const evalJobId: (runId: string, caseId: string) => string;
6
+ /** 评测任务的数据。 */
7
+ export interface EvalJobData {
8
+ runId: string;
9
+ caseId: string;
10
+ orgId: string;
11
+ }
12
+ /**
13
+ * The producer of `cap-kernel-evals` (one job per case, {@link evalJobId}); the eval worker
14
+ * consumes it on the worker role. A leaf module: the runs service and the worker import it.
15
+ */
16
+ export declare class EvalJobs {
17
+ private readonly queue;
18
+ constructor(queue: Pick<Queue, "addBulk">);
19
+ enqueue(jobs: EvalJobData[]): Promise<void>;
20
+ }
@@ -0,0 +1,45 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { getQueueToken } from "@nestjs/bullmq";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ /** 评测队列的 BullMQ 队列名(不含 `:`,C7)。 */
13
+ export const EVAL_QUEUE_NAME = "cap-kernel-evals";
14
+ /** 每个用例一个任务(C7;不含 `:`)。 */
15
+ export const evalJobId = (runId, caseId) => `eval-${runId}-${caseId}`;
16
+ /**
17
+ * The producer of `cap-kernel-evals` (one job per case, {@link evalJobId}); the eval worker
18
+ * consumes it on the worker role. A leaf module: the runs service and the worker import it.
19
+ */
20
+ let EvalJobs = class EvalJobs {
21
+ queue;
22
+ constructor(queue) {
23
+ this.queue = queue;
24
+ }
25
+ async enqueue(jobs) {
26
+ await this.queue.addBulk(jobs.map((data) => ({
27
+ name: "case",
28
+ data,
29
+ opts: {
30
+ jobId: evalJobId(data.runId, data.caseId),
31
+ // 处理函数外的暂时故障(PG / Redis):指数退避重试,不让整个用例一次失败。
32
+ // 结果按认领号写入,重做不会重复写结果
33
+ attempts: 3,
34
+ backoff: { type: "exponential", delay: 1000 },
35
+ removeOnComplete: true,
36
+ removeOnFail: 1000,
37
+ },
38
+ })));
39
+ }
40
+ };
41
+ EvalJobs = __decorate([
42
+ Injectable(),
43
+ __param(0, Inject(getQueueToken(EVAL_QUEUE_NAME)))
44
+ ], EvalJobs);
45
+ export { EvalJobs };
@@ -1,13 +1,17 @@
1
1
  import { type ContentBlock, type Logger, type ModelUsage, type StopReason } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { EventLog } from "../conversations/event-log.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
2
+ import { type ModelRef } from "../agents/definition.js";
3
+ import { EventLog } from "../conversations/event-log.js";
4
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
+ import type { KernelConfigService } from "../infra/config/kernel-config.service.js";
6
+ import { KernelDb } from "../infra/database/kernel-db.js";
7
+ import { TransactionHost } from "../infra/database/transaction-host.js";
5
8
  import type { KyselyCheckpointSaver } from "../runtime/checkpointer.js";
6
9
  import type { LoopDeps } from "../runtime/langgraph-loop.js";
7
10
  import type { AgentLoop, LoopOutcome } from "../runtime/loop.js";
8
11
  import { type MediaSourceDeps } from "../runtime/model-call.js";
9
12
  import type { ProviderRegistry } from "../runtime/providers.js";
10
- import type { CaseSnapshot } from "./snapshot.js";
13
+ import type { RunFinish } from "../runtime/run-finish.js";
14
+ import type { CaseSnapshot, SnapshotEvent } from "./snapshot.js";
11
15
  import type { ResolvedCandidate } from "./step-replay.js";
12
16
  /**
13
17
  * 整轮回放(D2 / C6):在 `kind = 'eval'` 的隐藏对话里跑**同一个** `LangGraphLoop`,工具管线换成
@@ -50,9 +54,14 @@ export interface EvalReplayHooks {
50
54
  beforeJudge?(evalRunId: string): Promise<void>;
51
55
  }
52
56
  export interface RunReplayDeps {
53
- db: KernelDb;
57
+ /** The context-aware handle (reads, the eval conversation's cleanup). */
58
+ readonly db: KernelSchemaDb;
54
59
  eventLog: EventLog;
55
- config: () => KernelConfig;
60
+ /** Writes the seed (the eval conversation, its events, the run) in a transaction of its own. */
61
+ seeder: Pick<EvalReplaySeeder, "seed">;
62
+ /** Writes the replayed run's terminal state. */
63
+ runFinish: Pick<RunFinish, "finish">;
64
+ config: Pick<KernelConfigService, "get">;
56
65
  log: Logger;
57
66
  registry: Pick<ProviderRegistry, "resolve">;
58
67
  media?: MediaSourceDeps;
@@ -64,15 +73,54 @@ export interface RunReplayDeps {
64
73
  /** 本次执行是否仍持有结果的认领(失去认领 → 不再发请求);不给 = 不检查。 */
65
74
  stillClaimed?: () => Promise<boolean>;
66
75
  /**
67
- * 种子事务内调用:把评测对话记到结果上(以认领为条件)。返回 false = 已失去认领,种子回滚、抛 {@link ReplayClaimLost}。
76
+ * 种子事务内调用(its queries join the seed's transaction through the context-aware handle):把评测对话记到结果上
77
+ * (以认领为条件)。返回 false = 已失去认领,种子回滚、抛 {@link ReplayClaimLost}。
68
78
  */
69
- onSeeded?: (trx: KernelDb, conversationId: string) => Promise<boolean>;
79
+ onSeeded?: (conversationId: string) => Promise<boolean>;
70
80
  hooks?: EvalReplayHooks;
71
81
  }
72
82
  /** 写种子时发现已失去认领或运行已不在执行:本次执行停下,不留评测对话。 */
73
83
  export declare class ReplayClaimLost extends Error {
74
84
  constructor();
75
85
  }
86
+ /** What {@link EvalReplaySeeder.seed} writes. */
87
+ export interface ReplaySeed {
88
+ evalRunId: string;
89
+ orgId: string;
90
+ agentId: string;
91
+ accountId: string;
92
+ conversationId: string;
93
+ runId: string;
94
+ /** The original run's `run_started` seq: the seeds are the events before it. */
95
+ runStartedSeq: number;
96
+ /** The conversation's `consumed_seq` when the original run started. */
97
+ consumed: number;
98
+ seeds: SnapshotEvent[];
99
+ /** The run's trigger seq (the last user message before it). */
100
+ trigger: number;
101
+ agentVersion: number;
102
+ model: ModelRef;
103
+ /** The original run's `skills_catalog` event, its payload copied as is. */
104
+ catalog: {
105
+ payload: unknown;
106
+ } | undefined;
107
+ }
108
+ /**
109
+ * The seed of a full-run replay (C6): the `kind = 'eval'` conversation with the events before the
110
+ * original run at their original seqs, the run row and its `run_started` (and the original
111
+ * `skills_catalog`), in one transaction of its own.
112
+ */
113
+ export declare class EvalReplaySeeder {
114
+ private readonly db;
115
+ private readonly eventLog;
116
+ readonly txHost: TransactionHost;
117
+ constructor(db: KernelDb, eventLog: Pick<EventLog, "appendIn">, txHost: TransactionHost);
118
+ /**
119
+ * Writes the seed; `onSeeded` runs inside the same transaction (false = the claim is lost: the
120
+ * seed rolls back and {@link ReplayClaimLost} is thrown).
121
+ */
122
+ seed(p: ReplaySeed, onSeeded?: (conversationId: string) => Promise<boolean>): Promise<void>;
123
+ }
76
124
  /** 整轮回放被停下的原因(`run_aborted.detail`)。 */
77
125
  export type StopDetail = "cancelled" | "capped" | "too_many_errors" | "claim_lost" | "shutdown";
78
126
  /** 原运行(快照)的摘要,作为整轮回放的基线。 */