@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3

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 (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  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 +31 -14
  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 +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,38 +1,31 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { createHash } from "node:crypto";
11
+ import { connectorToolKey, extensionToolKey } from "@capybara-hq/plugin-sdk";
12
+ import { Inject, Injectable } from "@nestjs/common";
13
+ import { ExtensionHost } from "../extensions/host.js";
14
+ import { ExtensionRegistry } from "../extensions/registry.js";
15
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
16
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
17
  import { readOrgSettings } from "../orgs/settings.service.js";
3
18
  import { estimateTokens } from "../runtime/context/tokens.js";
4
19
  import { SUBAGENT_LIMIT_DEFAULTS, subagentLimits } from "../runtime/subagents/limits.js";
5
20
  import { resolveRoster } from "../runtime/subagents/roster.js";
6
- import { AGENT_TOOL, agentToolSpec } from "./builtins/agent.js";
7
- import { SANDBOX_TOOL_NAMES } from "./builtins/sandbox/names.js";
8
- import { toolKey, toolKeyIssue } from "./naming.js";
9
- /**
10
- * 内核内置工具的名字(Task 10 / Task 19 实现;M5 T8 加沙箱工具)。保存 agent 时内置工具引用按这份清单校验,
11
- * 不依赖当前是否已注册,避免实现落地顺序影响已保存的定义;运行时未注册的照常报不可用。
12
- * `skill_write`(M5 T15)由 agent 定义显式引用才可用(负责人决定 agent 能否改自己的技能)。
13
- */
14
- export const BUILTIN_TOOL_NAMES = [
15
- "ask_user",
16
- "read_tool_output",
17
- "tool_search",
18
- "skill_load",
19
- "skill_write",
20
- ...SANDBOX_TOOL_NAMES,
21
- // phase C: dispatches sub-agents; its description is built per agent from the roster
22
- "agent",
23
- ];
24
- /** 键排序、去掉 undefined 的 JSON(jsonb 不保留键顺序,指纹必须与顺序无关)。 */
25
- export function canonicalJson(v) {
26
- if (Array.isArray(v))
27
- return `[${v.map(canonicalJson).join(",")}]`;
28
- if (v !== null && typeof v === "object") {
29
- const entries = Object.entries(v)
30
- .filter(([, x]) => x !== undefined)
31
- .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
32
- return `{${entries.map(([k, x]) => `${JSON.stringify(k)}:${canonicalJson(x)}`).join(",")}}`;
33
- }
34
- return JSON.stringify(v);
35
- }
21
+ import { AGENT_TOOL, BUILTIN_TOOL_NAMES, SKILL_LOAD, TOOL_SEARCH } from "./builtin-names.js";
22
+ import { agentToolSpec } from "./builtins/agent.js";
23
+ import { BuiltinTools } from "./builtins/builtin-tools.js";
24
+ import { canonicalJson } from "./canonical-json.js";
25
+ import { legacyKeySaveText } from "./legacy-keys.js";
26
+ import { toolKeyIssue } from "./naming.js";
27
+ export { BUILTIN_TOOL_NAMES } from "./builtin-names.js";
28
+ export { canonicalJson } from "./canonical-json.js";
36
29
  /** The first 16 hex digits of sha256(canonicalJson(v)): a fingerprint independent of key order. */
37
30
  export function contentHash(v) {
38
31
  return createHash("sha256").update(canonicalJson(v)).digest("hex").slice(0, 16);
@@ -63,10 +56,8 @@ export function specHash(spec) {
63
56
  export function policyFromAnnotations(a) {
64
57
  return a?.readOnlyHint === true ? "allow" : "ask";
65
58
  }
66
- /** 内置 `tool_search` 的名字(由注册表按组织设置与阈值自动加入,不进 agent 定义)。 */
67
- const TOOL_SEARCH = "tool_search";
68
- /** 内置 `skill_load` 的名字(对话日志里有技能目录快照时由注册表自动加入,不进 agent 定义)。 */
69
- const SKILL_LOAD = "skill_load";
59
+ // `ToolSearch` is added by the registry by org setting and threshold, `Skill` when the log has a
60
+ // skills catalog snapshot; neither comes from agent definitions (`./builtin-names.ts`).
70
61
  /** 工具定义(模型可见三项)的估算 token 数(与请求估算同一口径)。 */
71
62
  function estimateToolTokens(tools) {
72
63
  return estimateTokens([], [], tools.map((t) => ({
@@ -97,14 +88,35 @@ const sourceId = (s) => s.kind === "builtin"
97
88
  * Only the first of a key is kept; the same source referenced twice is deduplicated silently,
98
89
  * different sources with the same key report a duplicate.
99
90
  */
100
- export class ToolRegistry {
101
- deps;
102
- constructor(deps) {
103
- this.deps = deps;
91
+ let ToolRegistry = class ToolRegistry {
92
+ db;
93
+ host;
94
+ extensions;
95
+ builtinTools;
96
+ config;
97
+ constructor(db,
98
+ /** Extension tools and the organization's enabled extensions. */
99
+ host,
100
+ /** The installed connectors (`connector@1`, from the extension registry). */
101
+ extensions, builtinTools,
102
+ /**
103
+ * `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
104
+ * offered and the sub-agent limits are the schema defaults.
105
+ */
106
+ config) {
107
+ this.db = db;
108
+ this.host = host;
109
+ this.extensions = extensions;
110
+ this.builtinTools = builtinTools;
111
+ this.config = config;
112
+ }
113
+ /** The kernel's builtin tools (`ToolSearch` is added by {@link forAgent}, not by definitions). */
114
+ get builtins() {
115
+ return this.builtinTools.list();
104
116
  }
105
117
  /** `host.list("connector")` 中 `kind` 匹配的第一个实现;未安装返回 undefined。 */
106
118
  findConnector(kind) {
107
- for (const e of this.deps.host.list("connector")) {
119
+ for (const e of this.extensions.list("connector")) {
108
120
  const impl = e.impl;
109
121
  if (impl?.kind === kind)
110
122
  return impl;
@@ -127,10 +139,10 @@ export class ToolRegistry {
127
139
  */
128
140
  handler(source) {
129
141
  if (source.kind === "builtin") {
130
- return this.deps.builtins.find((b) => b.spec.name === source.name)?.run;
142
+ return this.builtins.find((b) => b.spec.name === source.name)?.run;
131
143
  }
132
144
  if (source.kind === "plugin") {
133
- const t = this.deps.host
145
+ const t = this.host
134
146
  .tools()
135
147
  .find((x) => x.plugin === source.plugin && x.spec.name === source.name);
136
148
  if (!t)
@@ -141,15 +153,15 @@ export class ToolRegistry {
141
153
  }
142
154
  /** The registered builtin tools' specs (display metadata for `tools/info.ts`). */
143
155
  builtinSpecs() {
144
- return this.deps.builtins.map((b) => b.spec);
156
+ return this.builtins.map((b) => b.spec);
145
157
  }
146
158
  /** The loaded extensions' registered tool specs, with their extension's name. */
147
159
  extensionToolSpecs() {
148
- return this.deps.host.tools().map((t) => ({ plugin: t.plugin, spec: t.spec }));
160
+ return this.host.tools().map((t) => ({ plugin: t.plugin, spec: t.spec }));
149
161
  }
150
162
  /** 已安装连接器的 kind 列表(去重,按加载顺序)。 */
151
163
  connectorKinds() {
152
- return [...new Set(this.deps.host.list("connector").map((e) => e.impl.kind))];
164
+ return [...new Set(this.extensions.list("connector").map((e) => e.impl.kind))];
153
165
  }
154
166
  /**
155
167
  * 保存 agent 时校验工具引用(只看「存在」,停用 / 待复核 / 插件未启用等运行时状态不拒绝,由 `forAgent` 报不可用):
@@ -162,7 +174,7 @@ export class ToolRegistry {
162
174
  async checkRefs(orgId, refs) {
163
175
  const issues = [];
164
176
  const owner = new Map();
165
- const pluginTools = this.deps.host.tools();
177
+ const pluginTools = this.host.tools();
166
178
  const connectorIds = [
167
179
  ...new Set(refs.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
168
180
  ];
@@ -179,13 +191,19 @@ export class ToolRegistry {
179
191
  const path = `tools.${i}`;
180
192
  if (ref.kind === "builtin") {
181
193
  if (!BUILTIN_TOOL_NAMES.includes(ref.name)) {
182
- issues.push({ path, message: `Built-in tool "${ref.name}" does not exist` });
194
+ const renamed = legacyKeySaveText(ref.name);
195
+ issues.push({
196
+ path,
197
+ message: renamed === null
198
+ ? `Built-in tool "${ref.name}" does not exist`
199
+ : `Built-in tool ${renamed}`,
200
+ });
183
201
  return;
184
202
  }
185
203
  claim(path, ref.name, `builtin:${ref.name}`);
186
204
  }
187
205
  else if (ref.kind === "plugin") {
188
- const key = toolKey(ref.plugin, ref.name);
206
+ const key = extensionToolKey(ref.plugin, ref.name);
189
207
  if (!pluginTools.some((x) => x.plugin === ref.plugin && x.spec.name === ref.name)) {
190
208
  issues.push({ path, message: `Plugin tool "${key}" does not exist` });
191
209
  return;
@@ -212,22 +230,22 @@ export class ToolRegistry {
212
230
  });
213
231
  continue;
214
232
  }
215
- claim(path, toolKey(app.slug, name), `connector:${app.id}:${name}`);
233
+ claim(path, connectorToolKey(app.slug, name), `connector:${app.id}:${name}`);
216
234
  }
217
235
  }
218
236
  });
219
237
  return { keys: new Set(owner.keys()), issues };
220
238
  }
221
239
  /**
222
- * 解析 agent 引用的工具(见类注释),再判定是否启用 `tool_search`:组织设置 `toolSearch === "on"`,且
240
+ * 解析 agent 引用的工具(见类注释),再判定是否启用 `ToolSearch`:组织设置 `toolSearch === "on"`,且
223
241
  * 可用工具数 > `tools.searchThresholdTools` 或其定义的估算 token > `tools.searchThresholdTokens`。
224
- * 启用时把内置 `tool_search` 追加到末尾。定义里显式引用的 `tool_search` 忽略(由这里按设置管理)。
225
- * `skillLoad`:对话日志里有技能目录快照(`skills_catalog`,Ruling M17)→ 加入内置 `skill_load`(始终完整加载);
226
- * 定义里显式引用的 `skill_load` 同样忽略。
242
+ * 启用时把内置 `ToolSearch` 追加到末尾。定义里显式引用的 `ToolSearch` 忽略(由这里按设置管理)。
243
+ * `skillLoad`:对话日志里有技能目录快照(`skills_catalog`,Ruling M17)→ 加入内置 `Skill`(始终完整加载);
244
+ * 定义里显式引用的 `Skill` 同样忽略。
227
245
  */
228
246
  async forAgent(orgId, def) {
229
247
  const { tools, unavailable, hidden } = await this.resolve(orgId, def);
230
- const sl = def.skillLoad === true && this.deps.builtins.find((x) => x.spec.name === SKILL_LOAD);
248
+ const sl = def.skillLoad === true && this.builtins.find((x) => x.spec.name === SKILL_LOAD);
231
249
  if (sl) {
232
250
  tools.push({
233
251
  key: SKILL_LOAD,
@@ -240,7 +258,7 @@ export class ToolRegistry {
240
258
  }
241
259
  const toolSearch = await this.searchActive(orgId, tools);
242
260
  if (toolSearch) {
243
- const b = this.deps.builtins.find((x) => x.spec.name === TOOL_SEARCH);
261
+ const b = this.builtins.find((x) => x.spec.name === TOOL_SEARCH);
244
262
  tools.push({
245
263
  key: TOOL_SEARCH,
246
264
  source: { kind: "builtin", name: TOOL_SEARCH },
@@ -251,16 +269,16 @@ export class ToolRegistry {
251
269
  }
252
270
  return { tools, unavailable, hidden, toolSearch };
253
271
  }
254
- /** 是否启用 `tool_search`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
272
+ /** 是否启用 `ToolSearch`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
255
273
  async searchActive(orgId, tools) {
256
- const cfg = this.deps.config?.().tools;
257
- if (!cfg || !this.deps.builtins.some((b) => b.spec.name === TOOL_SEARCH))
274
+ const cfg = this.config?.get().tools;
275
+ if (!cfg || !this.builtins.some((b) => b.spec.name === TOOL_SEARCH))
258
276
  return false;
259
277
  const over = tools.length > cfg.searchThresholdTools ||
260
278
  estimateToolTokens(tools) > cfg.searchThresholdTokens;
261
279
  if (!over)
262
280
  return false;
263
- return (await readOrgSettings(this.deps.db, orgId)).toolSearch === "on";
281
+ return (await readOrgSettings(this.db.db, orgId)).toolSearch === "on";
264
282
  }
265
283
  async resolve(orgId, def) {
266
284
  const tools = [];
@@ -288,12 +306,12 @@ export class ToolRegistry {
288
306
  ...new Set(def.tools.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
289
307
  ];
290
308
  const apps = await this.loadConnectors(orgId, connectorIds);
291
- const pluginTools = this.deps.host.tools();
309
+ const pluginTools = this.host.tools();
292
310
  for (const ref of def.tools) {
293
311
  if (ref.kind === "builtin") {
294
312
  if (ref.name === TOOL_SEARCH || ref.name === SKILL_LOAD)
295
313
  continue;
296
- const b = this.deps.builtins.find((x) => x.spec.name === ref.name);
314
+ const b = this.builtins.find((x) => x.spec.name === ref.name);
297
315
  if (!b) {
298
316
  unavailable.push({ ref: ref.name, reason: "Built-in tool does not exist" });
299
317
  continue;
@@ -303,11 +321,11 @@ export class ToolRegistry {
303
321
  unavailable.push({ ref: ref.name, reason: why });
304
322
  continue;
305
323
  }
306
- // `agent`: the description lists this definition's roster (sub-agents spec §4.3); with an
324
+ // `Agent`: the description lists this definition's roster (sub-agents spec §4.3); with an
307
325
  // empty roster there is nothing to dispatch, so the tool is not offered at all
308
326
  let spec = b.spec;
309
327
  if (b.spec.name === AGENT_TOOL) {
310
- const roster = await resolveRoster(this.deps.db, orgId, { subagents: def.subagents });
328
+ const roster = await resolveRoster(this.db.db, orgId, { subagents: def.subagents });
311
329
  if (roster.length === 0)
312
330
  continue;
313
331
  spec = agentToolSpec(roster, await this.maxConcurrentSubagents(orgId));
@@ -323,7 +341,7 @@ export class ToolRegistry {
323
341
  });
324
342
  }
325
343
  else if (ref.kind === "plugin") {
326
- const key = toolKey(ref.plugin, ref.name);
344
+ const key = extensionToolKey(ref.plugin, ref.name);
327
345
  const t = pluginTools.find((x) => x.plugin === ref.plugin && x.spec.name === ref.name);
328
346
  if (!t) {
329
347
  unavailable.push({ ref: key, reason: "Plugin tool does not exist" });
@@ -355,7 +373,7 @@ export class ToolRegistry {
355
373
  unavailable.push({ ref: `app:${ref.connectorId}`, reason: "App does not exist" });
356
374
  continue;
357
375
  }
358
- const all = toolKey(app.slug, "*");
376
+ const all = connectorToolKey(app.slug, "*");
359
377
  if (app.deleted) {
360
378
  unavailable.push({ ref: all, reason: `App ${app.slug} was deleted` });
361
379
  continue;
@@ -377,7 +395,7 @@ export class ToolRegistry {
377
395
  // 「all」里未启用的工具不算 agent 点名要的,不进 unavailable(不提醒),只记进 hidden 备查
378
396
  const notEnabled = ref.tools === "all" ? hidden : unavailable;
379
397
  for (const t of wanted) {
380
- const key = toolKey(app.slug, t.name);
398
+ const key = connectorToolKey(app.slug, t.name);
381
399
  // 远端已不再提供(漂移检测置停用并标记,见 drift.ts):与「没有这一行」同一个事实
382
400
  if ("missing" in t || t.gone) {
383
401
  notEnabled.push({ ref: key, reason: `Tool no longer exists in app ${app.slug}` });
@@ -414,25 +432,26 @@ export class ToolRegistry {
414
432
  return { tools, unavailable, hidden };
415
433
  }
416
434
  /**
417
- * `subagents.maxConcurrentPerRun` with the organization's override, for the `agent` tool's
435
+ * `subagents.maxConcurrentPerRun` with the organization's override, for the `Agent` tool's
418
436
  * description (§4.3). A change of the limit changes the tool's spec hash; replays read the
419
437
  * definition logged by hash, so no drift reason is involved. Without config (some tests): the
420
438
  * schema default.
421
439
  */
422
440
  async maxConcurrentSubagents(orgId) {
423
- const config = this.deps.config ?? (() => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }));
424
- return (await subagentLimits(this.deps.db, config, orgId)).maxConcurrentPerRun;
441
+ const cfg = this.config;
442
+ const config = cfg ?? { get: () => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }) };
443
+ return (await subagentLimits(this.db.db, config, orgId)).maxConcurrentPerRun;
425
444
  }
426
445
  /** Plugins the organization enabled (built-in plugins always count as enabled, C14). */
427
446
  async enabledPlugins(orgId) {
428
- return this.deps.host.enabledPlugins(orgId);
447
+ return this.host.enabledPlugins(orgId);
429
448
  }
430
449
  async loadConnectors(orgId, ids) {
431
450
  const out = new Map();
432
451
  if (ids.length === 0)
433
452
  return out;
434
453
  // 软删除的连接器也读出来,只为给出「已删除」这个更准确的原因(slug 可能已被新连接器复用,按 id 区分)
435
- const apps = await this.deps.db
454
+ const apps = await this.db
436
455
  .selectFrom("connectors")
437
456
  .select(["id", "slug", "connector", "status", "deleted_at"])
438
457
  .where("org_id", "=", orgId)
@@ -441,7 +460,7 @@ export class ToolRegistry {
441
460
  const live = apps.filter((a) => a.deleted_at === null).map((a) => a.id);
442
461
  const toolRows = live.length === 0
443
462
  ? []
444
- : await this.deps.db
463
+ : await this.db
445
464
  .selectFrom("connector_tools")
446
465
  .select([
447
466
  "connector_id",
@@ -478,4 +497,13 @@ export class ToolRegistry {
478
497
  }
479
498
  return out;
480
499
  }
481
- }
500
+ };
501
+ ToolRegistry = __decorate([
502
+ Injectable(),
503
+ __param(0, Inject(KernelDb)),
504
+ __param(1, Inject(ExtensionHost)),
505
+ __param(2, Inject(ExtensionRegistry)),
506
+ __param(3, Inject(BuiltinTools)),
507
+ __param(4, Inject(KernelConfigService))
508
+ ], ToolRegistry);
509
+ export { ToolRegistry };
@@ -1,6 +1,6 @@
1
1
  import { type ConnectorSession, type ToolResult, type ToolSpec } from "@capybara-hq/plugin-sdk";
2
2
  /**
3
- * 连接器 resources 的两个内核工具(brief:`<connectorSlug>__list_resources`、`<connectorSlug>__read_resource {uri}`)。
3
+ * 连接器 resources 的两个内核工具(brief:`mcp__<slug>__list_resources`、`mcp__<slug>__read_resource {uri}`)。
4
4
  *
5
5
  * 设计:安装 / 刷新连接器时,连接器会话带 `listResources` 方法即视为支持 resources(不额外调用,免得多一次外连
6
6
  * 和多一种失败),内核把这两个工具作为 `source = 'resources'` 的行写进 `connector_tools`(迁移 0013)。这样它们和
@@ -1,6 +1,6 @@
1
1
  import { ToolError, } from "@capybara-hq/plugin-sdk";
2
2
  /**
3
- * 连接器 resources 的两个内核工具(brief:`<connectorSlug>__list_resources`、`<connectorSlug>__read_resource {uri}`)。
3
+ * 连接器 resources 的两个内核工具(brief:`mcp__<slug>__list_resources`、`mcp__<slug>__read_resource {uri}`)。
4
4
  *
5
5
  * 设计:安装 / 刷新连接器时,连接器会话带 `listResources` 方法即视为支持 resources(不额外调用,免得多一次外连
6
6
  * 和多一种失败),内核把这两个工具作为 `source = 'resources'` 的行写进 `connector_tools`(迁移 0013)。这样它们和
@@ -1,14 +1,15 @@
1
1
  import type { ToolSpec } from "@capybara-hq/plugin-sdk";
2
- import type { Transaction } from "kysely";
3
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
3
  /**
5
4
  * 把工具定义按指纹存进 `capybara.tool_specs`(内容寻址:同一指纹只存一次,已存在不改)。
6
5
  * `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
7
6
  * 仍可按指纹取回,模型请求可由日志还原。
8
7
  */
9
- export declare function recordToolSpecs(db: KernelDb | Transaction<KernelDatabase>, specs: readonly {
8
+ export declare function recordToolSpecs(
9
+ /** The pool or a transaction (a transaction is a Kysely handle too). */
10
+ db: KernelSchemaDb, specs: readonly {
10
11
  specHash: string;
11
12
  spec: ToolSpec;
12
13
  }[]): Promise<void>;
13
14
  /** 按指纹取回工具定义;没有记录 → null。 */
14
- export declare function loadToolSpec(db: KernelDb, specHash: string): Promise<ToolSpec | null>;
15
+ export declare function loadToolSpec(db: KernelSchemaDb, specHash: string): Promise<ToolSpec | null>;
@@ -3,7 +3,9 @@
3
3
  * `model_call` 只记 `{key, specHash}`,定义本身存这里——连接器刷新 / 插件升级改了定义之后,早先请求用过的定义
4
4
  * 仍可按指纹取回,模型请求可由日志还原。
5
5
  */
6
- export async function recordToolSpecs(db, specs) {
6
+ export async function recordToolSpecs(
7
+ /** The pool or a transaction (a transaction is a Kysely handle too). */
8
+ db, specs) {
7
9
  const unique = new Map();
8
10
  for (const s of specs)
9
11
  if (!unique.has(s.specHash))
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tools and connectors: credentials, output archives, the builtin tools and the registry,
3
+ * approvals and questions (their decisions are the domain events `approval.decided` /
4
+ * `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
5
+ * maintenance processor consumes), the breaker, connector content, the execution pipeline, org
6
+ * connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
7
+ * output cleanup) are the worker role's (`WorkerModule`).
8
+ */
9
+ export declare class ToolsModule {
10
+ }
@@ -0,0 +1,91 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Module } from "@nestjs/common";
8
+ import { ConversationAccessModule } from "../conversations/access.js";
9
+ import { AttachmentsModule } from "../conversations/attachments.module.js";
10
+ import { EventLogModule } from "../conversations/event-log.js";
11
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
12
+ import { QueueModule } from "../infra/queue/queue.module.js";
13
+ import { OrgLockModule } from "../orgs/org-lock.js";
14
+ import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
15
+ import { SubagentsModule } from "../runtime/subagents/subagents.service.js";
16
+ import { SandboxModule } from "../sandbox/sandbox.module.js";
17
+ import { SkillsModule } from "../skills/skills.module.js";
18
+ import { StorageModule } from "../storage/storage.module.js";
19
+ import { ApprovalsService } from "./approvals.service.js";
20
+ import { Breaker } from "./breaker.js";
21
+ import { BuiltinTools } from "./builtins/builtin-tools.js";
22
+ import { ConnectorContent } from "./connector-content.js";
23
+ import { ConnectorsService } from "./connectors.service.js";
24
+ import { Credentials } from "./credentials.js";
25
+ import { ToolDrift } from "./drift.js";
26
+ import { ConversationToolInfo } from "./info.js";
27
+ import { OAuthFlow } from "./oauth/flow.js";
28
+ import { ToolOutputs } from "./outputs.js";
29
+ import { ToolPipeline } from "./pipeline.js";
30
+ import { QuestionsService } from "./questions.service.js";
31
+ import { ToolRegistry } from "./registry.js";
32
+ /**
33
+ * Tools and connectors: credentials, output archives, the builtin tools and the registry,
34
+ * approvals and questions (their decisions are the domain events `approval.decided` /
35
+ * `question.answered`), drift detection (the producer of the one-off `drift-connector` jobs the
36
+ * maintenance processor consumes), the breaker, connector content, the execution pipeline, org
37
+ * connectors and the OAuth connect flow. The periodic jobs (`ToolJobs`: the drift scan and the
38
+ * output cleanup) are the worker role's (`WorkerModule`).
39
+ */
40
+ let ToolsModule = class ToolsModule {
41
+ };
42
+ ToolsModule = __decorate([
43
+ Module({
44
+ imports: [
45
+ EventLogModule,
46
+ AttachmentsModule,
47
+ ExtensionsModule,
48
+ StorageModule,
49
+ SkillsModule,
50
+ OrgLockModule,
51
+ // the `Agent` tool's dispatch
52
+ SubagentsModule,
53
+ // the builtin sandbox and skill tools run in the conversation's sandbox
54
+ SandboxModule,
55
+ // the conversation page's tool metadata reads only what the viewer may see
56
+ ConversationAccessModule,
57
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
58
+ ],
59
+ providers: [
60
+ Credentials,
61
+ ToolOutputs,
62
+ BuiltinTools,
63
+ ToolRegistry,
64
+ ApprovalsService,
65
+ QuestionsService,
66
+ ToolDrift,
67
+ Breaker,
68
+ ConnectorContent,
69
+ ToolPipeline,
70
+ ConnectorsService,
71
+ OAuthFlow,
72
+ ConversationToolInfo,
73
+ ],
74
+ exports: [
75
+ Credentials,
76
+ ToolOutputs,
77
+ BuiltinTools,
78
+ ToolRegistry,
79
+ ApprovalsService,
80
+ QuestionsService,
81
+ ToolDrift,
82
+ Breaker,
83
+ ConnectorContent,
84
+ ToolPipeline,
85
+ ConnectorsService,
86
+ OAuthFlow,
87
+ ConversationToolInfo,
88
+ ],
89
+ })
90
+ ], ToolsModule);
91
+ export { ToolsModule };
@@ -0,0 +1,16 @@
1
+ import type { Logger } from "@capybara-hq/plugin-sdk";
2
+ /**
3
+ * Calls an extension with a time limit and an abort signal (plugin views, actions and file
4
+ * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
5
+ * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
6
+ */
7
+ export declare function callExtension<T>(o: {
8
+ log: Pick<Logger, "warn">;
9
+ plugin: string;
10
+ what: string;
11
+ fields: Record<string, unknown>;
12
+ timeoutMs: number;
13
+ failCode: "ui.render_failed" | "ui.action_failed";
14
+ failMessage: string;
15
+ fn: (signal: AbortSignal) => Promise<T>;
16
+ }): Promise<T>;
@@ -0,0 +1,38 @@
1
+ import { ApiError } from "../errors.js";
2
+ /**
3
+ * Calls an extension with a time limit and an abort signal (plugin views, actions and file
4
+ * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
5
+ * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
6
+ */
7
+ export async function callExtension(o) {
8
+ const ac = new AbortController();
9
+ let timer;
10
+ const timeout = new Promise((resolve) => {
11
+ timer = setTimeout(() => {
12
+ ac.abort(new Error(`plugin ui ${o.what} timed out`));
13
+ resolve("timeout");
14
+ }, o.timeoutMs);
15
+ });
16
+ try {
17
+ const r = await Promise.race([
18
+ Promise.resolve()
19
+ .then(() => o.fn(ac.signal))
20
+ .then((value) => ({ value })),
21
+ timeout,
22
+ ]);
23
+ if (r === "timeout") {
24
+ o.log.warn(`plugin ui ${o.what} timed out`, { ...o.fields, timeoutMs: o.timeoutMs });
25
+ throw new ApiError("ui.timeout", `Plugin ${o.plugin} did not respond within ${o.timeoutMs / 1000}s`);
26
+ }
27
+ return r.value;
28
+ }
29
+ catch (e) {
30
+ if (e instanceof ApiError)
31
+ throw e;
32
+ o.log.warn(`plugin ui ${o.what} failed`, { ...o.fields, err: e });
33
+ throw new ApiError(o.failCode, o.failMessage);
34
+ }
35
+ finally {
36
+ clearTimeout(timer);
37
+ }
38
+ }
@@ -6,20 +6,21 @@ export declare const EMBED_TOKEN_TTL_SECONDS = 300;
6
6
  export declare const EMBED_TOKEN_SKEW_SECONDS = 30;
7
7
  /** HKDF 用途(keyring 派生时 info 为 `capybara:capybara-embed/1`),也是签名输入的域前缀。 */
8
8
  export declare const EMBED_KEY_INFO = "capybara-embed/1";
9
+ /** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
10
+ export declare const EMBED_TOKEN_CLOCK: unique symbol;
9
11
  /**
10
12
  * 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
11
13
  * - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
12
14
  * - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
13
15
  * `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
14
- * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
16
+ * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
17
+ * routes issue tokens with it and every extension's `ctx` verifies them with it.
15
18
  */
16
19
  export declare class EmbedTokens {
20
+ private readonly now;
17
21
  private readonly current;
18
22
  private readonly keys;
19
- private readonly now;
20
- constructor(keyring: Keyring, opts?: {
21
- now?: () => number;
22
- });
23
+ constructor(keyring: Keyring, now?: () => number);
23
24
  /** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
24
25
  issue(c: Omit<EmbedClaims, "exp">): {
25
26
  token: string;
@@ -29,3 +30,6 @@ export declare class EmbedTokens {
29
30
  /** 校验令牌并要求它签给 `plugin`;不通过返回 null。 */
30
31
  verify(token: unknown, plugin: string): EmbedClaims | null;
31
32
  }
33
+ /** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
34
+ export declare class EmbedTokensModule {
35
+ }