@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
@@ -0,0 +1,15 @@
1
+ // The tools' job names and the retired scheduler ids: a leaf module (no service imports), read by
2
+ // the maintenance queue's retirement list.
3
+ /** The periodic drift scan (`@LockedInterval`, tools/jobs.ts). */
4
+ export const DRIFT_SCAN_JOB = "drift-scan";
5
+ /** The BullMQ repeatable scheduler the scan had before it became `@LockedInterval` (retired). */
6
+ export const DRIFT_SCHEDULER_ID = "drift-scan-interval";
7
+ /**
8
+ * 单个连接器的漂移检查任务名(维护队列上的一次性任务:生产方是 `ToolDrift`,消费方是
9
+ * `MaintenanceProcessor`)。
10
+ */
11
+ export const DRIFT_CONNECTOR_JOB = "drift-connector";
12
+ /** The hourly cleanup of expired tool output archives (`@LockedCron`, tools/jobs.ts). */
13
+ export const OUTPUT_CLEANUP_JOB = "output-cleanup";
14
+ /** The BullMQ repeatable scheduler the cleanup had before it became `@LockedCron` (retired). */
15
+ export const OUTPUT_CLEANUP_SCHEDULER_ID = "output-cleanup-hourly";
@@ -0,0 +1,24 @@
1
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { LockService } from "../infra/lock/lock.service.js";
4
+ import type { KernelLogger } from "../log.js";
5
+ import { ToolDrift } from "./drift.js";
6
+ /**
7
+ * The tools' periodic jobs, each run once per tick across replicas: the tool drift scan
8
+ * (`drift-scan`, every `tools.driftIntervalHours` and once right after the start, as the old
9
+ * repeatable scheduler's first run: `@LockedInterval` with `runOnStart`; a repeated scan in the
10
+ * same period enqueues nothing new, its job ids are per period) and the hourly cleanup of expired
11
+ * tool output archives (`output-cleanup`: `@LockedCron`).
12
+ */
13
+ export declare class ToolJobs {
14
+ private readonly drift;
15
+ private readonly db;
16
+ readonly config: KernelConfigService;
17
+ readonly lockService: LockService;
18
+ readonly log: KernelLogger;
19
+ constructor(drift: Pick<ToolDrift, "scan">, db: KernelDb, config: KernelConfigService, lockService: LockService, log: KernelLogger);
20
+ /** Enqueues a drift check of every active connector not checked in this period. */
21
+ scanDrift(): Promise<void>;
22
+ /** Deletes expired tool output archives (in batches, no long transaction). */
23
+ cleanupOutputs(): Promise<void>;
24
+ }
@@ -0,0 +1,69 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
12
+ import { KernelDb } from "../infra/database/kernel-db.js";
13
+ import { LockService } from "../infra/lock/lock.service.js";
14
+ import { LockedCron } from "../infra/schedule/locked-cron.decorator.js";
15
+ import { LockedInterval } from "../infra/schedule/locked-interval.js";
16
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
17
+ import { ToolDrift } from "./drift.js";
18
+ import { DRIFT_SCAN_JOB, OUTPUT_CLEANUP_JOB } from "./job-ids.js";
19
+ import { deleteExpiredOutputs } from "./outputs.js";
20
+ /**
21
+ * The tools' periodic jobs, each run once per tick across replicas: the tool drift scan
22
+ * (`drift-scan`, every `tools.driftIntervalHours` and once right after the start, as the old
23
+ * repeatable scheduler's first run: `@LockedInterval` with `runOnStart`; a repeated scan in the
24
+ * same period enqueues nothing new, its job ids are per period) and the hourly cleanup of expired
25
+ * tool output archives (`output-cleanup`: `@LockedCron`).
26
+ */
27
+ let ToolJobs = class ToolJobs {
28
+ drift;
29
+ db;
30
+ config;
31
+ lockService;
32
+ log;
33
+ constructor(drift, db, config, lockService, log) {
34
+ this.drift = drift;
35
+ this.db = db;
36
+ this.config = config;
37
+ this.lockService = lockService;
38
+ this.log = log;
39
+ }
40
+ /** Enqueues a drift check of every active connector not checked in this period. */
41
+ async scanDrift() {
42
+ const n = await this.drift.scan();
43
+ if (n > 0)
44
+ this.log.info("tool drift checks enqueued", { count: n });
45
+ }
46
+ /** Deletes expired tool output archives (in batches, no long transaction). */
47
+ async cleanupOutputs() {
48
+ const n = await deleteExpiredOutputs(this.db.db);
49
+ if (n > 0)
50
+ this.log.info("expired tool outputs deleted", { count: n });
51
+ }
52
+ };
53
+ __decorate([
54
+ LockedInterval(DRIFT_SCAN_JOB, (c) => c.tools.driftIntervalHours * 3_600_000, {
55
+ runOnStart: true,
56
+ })
57
+ ], ToolJobs.prototype, "scanDrift", null);
58
+ __decorate([
59
+ LockedCron("0 * * * *", { name: OUTPUT_CLEANUP_JOB })
60
+ ], ToolJobs.prototype, "cleanupOutputs", null);
61
+ ToolJobs = __decorate([
62
+ Injectable(),
63
+ __param(0, Inject(ToolDrift)),
64
+ __param(1, Inject(KernelDb)),
65
+ __param(2, Inject(KernelConfigService)),
66
+ __param(3, Inject(LockService)),
67
+ __param(4, Inject(KERNEL_LOGGER))
68
+ ], ToolJobs);
69
+ export { ToolJobs };
@@ -0,0 +1,34 @@
1
+ import { type AgentDefinition } from "../agents/definition.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ import type { KernelLogger } from "../log.js";
4
+ import { type LegacyScope } from "./legacy-keys.js";
5
+ /**
6
+ * Stored release-candidate tool keys (tool naming spec §8): the scope that reads an rc
7
+ * `<x>__<tool>` key in an org, the stored-definition readers that use it, and the startup notice
8
+ * for the rows migration 0063 could not map. No in-process state: each call reads PostgreSQL.
9
+ */
10
+ /**
11
+ * What an rc `<x>__<tool>` key can name in `orgId`: the org's live connector slugs and the
12
+ * deployment's extension names (installed ones and config-declared ones, which claim their name
13
+ * in `extension_name_owners`). Migration 0063 reads the same two sources.
14
+ */
15
+ export declare function loadLegacyScope(db: KernelSchemaDb, orgId: string): Promise<LegacyScope>;
16
+ /**
17
+ * A stored agent definition of `orgId` with every rc key it can map read as the current key
18
+ * ({@link normalizeStoredDefinition}); the scope is read only when the definition holds an rc
19
+ * `<x>__<tool>` key.
20
+ */
21
+ export declare function normalizeStoredDefinitionIn(db: KernelSchemaDb, orgId: string, def: unknown): Promise<AgentDefinition>;
22
+ /** A stored agent template (or any template-shaped value) of `orgId` in current keys. */
23
+ export declare function normalizeTemplateIn<T>(db: KernelSchemaDb, orgId: string, t: T): Promise<T>;
24
+ /**
25
+ * Rows still holding an rc tool key after migration 0063: grants and pending approvals and
26
+ * questions it could not map (an ambiguous or unknown `<x>__<tool>`). Read-only.
27
+ */
28
+ export declare function countLegacyToolKeys(db: KernelSchemaDb): Promise<number>;
29
+ /**
30
+ * The startup notice (spec §8.2): one WARN `tools.legacy_key_unmapped` with the count of rows
31
+ * still holding an rc key, only when there are any. A grant that no longer matches stops applying
32
+ * (the person is asked again), so this is a notice, not a failure.
33
+ */
34
+ export declare function warnLegacyToolKeys(db: KernelSchemaDb, log: Pick<KernelLogger, "warn">): Promise<void>;
@@ -0,0 +1,76 @@
1
+ import { sql } from "kysely";
2
+ import { needsLegacyScope, normalizeStoredDefinition, normalizeToolKeys, } from "../agents/definition.js";
3
+ import { LEGACY_BUILTINS } from "./legacy-keys.js";
4
+ /**
5
+ * Stored release-candidate tool keys (tool naming spec §8): the scope that reads an rc
6
+ * `<x>__<tool>` key in an org, the stored-definition readers that use it, and the startup notice
7
+ * for the rows migration 0063 could not map. No in-process state: each call reads PostgreSQL.
8
+ */
9
+ /**
10
+ * What an rc `<x>__<tool>` key can name in `orgId`: the org's live connector slugs and the
11
+ * deployment's extension names (installed ones and config-declared ones, which claim their name
12
+ * in `extension_name_owners`). Migration 0063 reads the same two sources.
13
+ */
14
+ export async function loadLegacyScope(db, orgId) {
15
+ const [connectors, installs, owners] = await Promise.all([
16
+ db
17
+ .selectFrom("connectors")
18
+ .select(["id", "slug"])
19
+ .where("org_id", "=", orgId)
20
+ .where("deleted_at", "is", null)
21
+ .execute(),
22
+ db.selectFrom("extension_installs").select("name").execute(),
23
+ db.selectFrom("extension_name_owners").select("name").execute(),
24
+ ]);
25
+ return {
26
+ connectorSlugs: new Set(connectors.map((r) => r.slug)),
27
+ connectorSlugById: new Map(connectors.map((r) => [r.id, r.slug])),
28
+ extensionNames: new Set([...installs, ...owners].map((r) => r.name)),
29
+ };
30
+ }
31
+ /**
32
+ * A stored agent definition of `orgId` with every rc key it can map read as the current key
33
+ * ({@link normalizeStoredDefinition}); the scope is read only when the definition holds an rc
34
+ * `<x>__<tool>` key.
35
+ */
36
+ export async function normalizeStoredDefinitionIn(db, orgId, def) {
37
+ return normalizeStoredDefinition(def, needsLegacyScope(def) ? await loadLegacyScope(db, orgId) : undefined);
38
+ }
39
+ /** A stored agent template (or any template-shaped value) of `orgId` in current keys. */
40
+ export async function normalizeTemplateIn(db, orgId, t) {
41
+ return normalizeToolKeys(t, needsLegacyScope(t) ? await loadLegacyScope(db, orgId) : undefined);
42
+ }
43
+ /**
44
+ * The SQL test for an rc key, the predicate of migration 0063's partial indexes (so the count
45
+ * below reads only those, nearly empty, indexes): an old builtin name, or `<x>__<tool>` not in the
46
+ * current `mcp__` / `plugin__` format.
47
+ */
48
+ const legacyKeySql = (col) => sql `(${col} = ANY (ARRAY[${sql.join(Object.keys(LEGACY_BUILTINS).map((k) => sql.lit(k)))}]::text[]) OR (${col} ~ '^[a-z0-9][a-z0-9_-]*__.' AND ${col} !~ '^(mcp|plugin)__'))`;
49
+ /**
50
+ * Rows still holding an rc tool key after migration 0063: grants and pending approvals and
51
+ * questions it could not map (an ambiguous or unknown `<x>__<tool>`). Read-only.
52
+ */
53
+ export async function countLegacyToolKeys(db) {
54
+ const r = await sql `
55
+ SELECT
56
+ (SELECT count(*) FROM capybara.tool_grants WHERE ${legacyKeySql(sql.ref("tool_key"))})
57
+ + (SELECT count(*) FROM capybara.conversation_tool_grants
58
+ WHERE ${legacyKeySql(sql.ref("tool_key"))})
59
+ + (SELECT count(*) FROM capybara.approvals
60
+ WHERE status = 'pending' AND ${legacyKeySql(sql.ref("tool_key"))})
61
+ + (SELECT count(*) FROM capybara.questions
62
+ WHERE status = 'pending' AND ${legacyKeySql(sql.raw("(spec->>'toolKey')"))})
63
+ AS n
64
+ `.execute(db);
65
+ return Number(r.rows[0]?.n ?? 0);
66
+ }
67
+ /**
68
+ * The startup notice (spec §8.2): one WARN `tools.legacy_key_unmapped` with the count of rows
69
+ * still holding an rc key, only when there are any. A grant that no longer matches stops applying
70
+ * (the person is asked again), so this is a notice, not a failure.
71
+ */
72
+ export async function warnLegacyToolKeys(db, log) {
73
+ const count = await countLegacyToolKeys(db);
74
+ if (count > 0)
75
+ log.warn("tools.legacy_key_unmapped", { count });
76
+ }
@@ -0,0 +1,51 @@
1
+ import { type BuiltinName } from "./builtin-names.js";
2
+ /**
3
+ * The release-candidate builtin tool names (tool naming spec §8.1). FROZEN: it describes the names
4
+ * of the 0.1.0 release candidates and never grows. Old keys stay in logs, recordings and stored
5
+ * configuration; this map is how the kernel reads them. `check:terms` exempts this file.
6
+ */
7
+ export interface LegacyBuiltin {
8
+ /** The new name. */
9
+ name: BuiltinName;
10
+ /** Old parameter name -> new parameter name (only the renamed ones). */
11
+ params: Readonly<Record<string, string>>;
12
+ /** New parameters whose value is in milliseconds where the old one was in seconds (× 1000). */
13
+ msParams?: readonly string[];
14
+ }
15
+ export declare const LEGACY_BUILTINS: Readonly<Record<string, LegacyBuiltin>>;
16
+ /** Is `key` a release-candidate builtin name? */
17
+ export declare const isLegacyBuiltinKey: (key: string) => boolean;
18
+ /** What a connector slug / extension name can be, to read an old `<x>__<tool>` key. */
19
+ export interface LegacyScope {
20
+ connectorSlugs: ReadonlySet<string>;
21
+ extensionNames: ReadonlySet<string>;
22
+ /**
23
+ * Connector id -> slug, for reading a stored definition's connector refs when a key is
24
+ * ambiguous (a slug that is also an extension name); optional.
25
+ */
26
+ connectorSlugById?: ReadonlyMap<string, string>;
27
+ }
28
+ /**
29
+ * Is `key` an rc `<x>__<tool>` key, which only a {@link LegacyScope} can map? Keys in the current
30
+ * format (`mcp__…`, `plugin__…`) never are.
31
+ */
32
+ export declare const isLegacyPrefixedKey: (key: string) => boolean;
33
+ /**
34
+ * The current key of a release-candidate key: a builtin by the frozen map; `<x>__<tool>` becomes
35
+ * `mcp__x__tool` when `x` is only a connector slug in `scope`, `plugin__x__tool` when only an
36
+ * extension name, else null (ambiguous, unknown, or not an old key; a key in the current format
37
+ * is never mapped again).
38
+ */
39
+ export declare function legacyToolKey(key: string, scope?: LegacyScope): string | null;
40
+ /** The input of an old builtin call in the current parameter names (seconds -> milliseconds). */
41
+ export declare function legacyToolInput(oldKey: string, input: unknown): unknown;
42
+ /** The model-visible hint for a call to an old builtin key; null for any other key. */
43
+ export declare function legacyHint(key: string): string | null;
44
+ /**
45
+ * The current key(s) an rc key stands for, to name in a refusal when a definition is saved with
46
+ * it: a builtin's new name; for `<x>__<tool>`, the candidates among `known` (the agent's tool
47
+ * keys), else both `mcp__<x>__<tool>` and `plugin__<x>__<tool>`. Empty when `key` is no rc key.
48
+ */
49
+ export declare function legacyKeyCandidates(key: string, known?: ReadonlySet<string>): string[];
50
+ /** The refusal text for saving rc key `key` (null when it is none): names the new key(s). */
51
+ export declare function legacyKeySaveText(key: string, known?: ReadonlySet<string>): string | null;
@@ -0,0 +1,115 @@
1
+ import { BUILTIN } from "./builtin-names.js";
2
+ export const LEGACY_BUILTINS = Object.freeze({
3
+ sandbox_bash: {
4
+ name: BUILTIN.Bash,
5
+ params: { timeoutSeconds: "timeout" },
6
+ msParams: ["timeout"],
7
+ },
8
+ sandbox_read: { name: BUILTIN.Read, params: { path: "file_path" } },
9
+ sandbox_write: { name: BUILTIN.Write, params: { path: "file_path" } },
10
+ sandbox_edit: {
11
+ name: BUILTIN.Edit,
12
+ params: {
13
+ path: "file_path",
14
+ oldText: "old_string",
15
+ newText: "new_string",
16
+ replaceAll: "replace_all",
17
+ },
18
+ },
19
+ sandbox_glob: { name: BUILTIN.Glob, params: {} },
20
+ sandbox_grep: { name: BUILTIN.Grep, params: { ignoreCase: "-i" } },
21
+ sandbox_deliver: { name: BUILTIN.Deliver, params: { path: "file_path" } },
22
+ skill_load: { name: BUILTIN.Skill, params: { name: "skill" } },
23
+ skill_write: { name: BUILTIN.SkillWrite, params: {} },
24
+ ask_user: { name: BUILTIN.AskUserQuestion, params: {} },
25
+ read_tool_output: { name: BUILTIN.ReadToolOutput, params: {} },
26
+ tool_search: { name: BUILTIN.ToolSearch, params: { limit: "max_results" } },
27
+ agent: { name: BUILTIN.Agent, params: {} },
28
+ });
29
+ /** Is `key` a release-candidate builtin name? */
30
+ export const isLegacyBuiltinKey = (key) => Object.hasOwn(LEGACY_BUILTINS, key);
31
+ /** A key in the current format for connector and extension tools (`mcp__…`, `plugin__…`). */
32
+ const CURRENT_PREFIXED_RE = /^(mcp|plugin)__/;
33
+ /** An rc connector or extension key `<x>__<tool>` (the SQL of migration 0063 uses the same test). */
34
+ const LEGACY_PREFIXED_RE = /^[a-z0-9][a-z0-9_-]*__./;
35
+ /**
36
+ * Is `key` an rc `<x>__<tool>` key, which only a {@link LegacyScope} can map? Keys in the current
37
+ * format (`mcp__…`, `plugin__…`) never are.
38
+ */
39
+ export const isLegacyPrefixedKey = (key) => LEGACY_PREFIXED_RE.test(key) && !CURRENT_PREFIXED_RE.test(key);
40
+ /**
41
+ * The current key of a release-candidate key: a builtin by the frozen map; `<x>__<tool>` becomes
42
+ * `mcp__x__tool` when `x` is only a connector slug in `scope`, `plugin__x__tool` when only an
43
+ * extension name, else null (ambiguous, unknown, or not an old key; a key in the current format
44
+ * is never mapped again).
45
+ */
46
+ export function legacyToolKey(key, scope) {
47
+ if (isLegacyBuiltinKey(key))
48
+ return LEGACY_BUILTINS[key].name;
49
+ if (scope === undefined || !isLegacyPrefixedKey(key))
50
+ return null;
51
+ const i = key.indexOf("__");
52
+ if (i <= 0 || i + 2 >= key.length)
53
+ return null;
54
+ const head = key.slice(0, i);
55
+ const tool = key.slice(i + 2);
56
+ const connector = scope.connectorSlugs.has(head);
57
+ const extension = scope.extensionNames.has(head);
58
+ if (connector === extension)
59
+ return null;
60
+ return connector ? `mcp__${head}__${tool}` : `plugin__${head}__${tool}`;
61
+ }
62
+ /** The input of an old builtin call in the current parameter names (seconds -> milliseconds). */
63
+ export function legacyToolInput(oldKey, input) {
64
+ if (!isLegacyBuiltinKey(oldKey))
65
+ return input;
66
+ if (typeof input !== "object" || input === null || Array.isArray(input))
67
+ return input;
68
+ const { params, msParams } = LEGACY_BUILTINS[oldKey];
69
+ const out = {};
70
+ for (const [k, v] of Object.entries(input)) {
71
+ const next = Object.hasOwn(params, k) ? params[k] : k;
72
+ out[next] = msParams?.includes(next) === true && typeof v === "number" ? v * 1000 : v;
73
+ }
74
+ return out;
75
+ }
76
+ /** The new parameters of the builtins whose parameters were renamed (model-visible hint text). */
77
+ const HINT_PARAMS = {
78
+ Bash: "command, description, timeout in milliseconds",
79
+ Read: "file_path, offset, limit",
80
+ Write: "file_path, content",
81
+ Edit: "file_path, old_string, new_string, replace_all",
82
+ Grep: "pattern, path, glob, -i, output_mode, -n, -A, -B, -C, head_limit, offset",
83
+ Deliver: "file_path, name",
84
+ Skill: "skill, args",
85
+ ToolSearch: "query, max_results",
86
+ };
87
+ /** The model-visible hint for a call to an old builtin key; null for any other key. */
88
+ export function legacyHint(key) {
89
+ if (!isLegacyBuiltinKey(key))
90
+ return null;
91
+ const { name } = LEGACY_BUILTINS[key];
92
+ const params = HINT_PARAMS[name];
93
+ return `Tool "${key}" no longer exists; it is now "${name}"${params === undefined ? "" : ` (parameters: ${params})`}.`;
94
+ }
95
+ /**
96
+ * The current key(s) an rc key stands for, to name in a refusal when a definition is saved with
97
+ * it: a builtin's new name; for `<x>__<tool>`, the candidates among `known` (the agent's tool
98
+ * keys), else both `mcp__<x>__<tool>` and `plugin__<x>__<tool>`. Empty when `key` is no rc key.
99
+ */
100
+ export function legacyKeyCandidates(key, known) {
101
+ if (isLegacyBuiltinKey(key))
102
+ return [LEGACY_BUILTINS[key].name];
103
+ if (!isLegacyPrefixedKey(key))
104
+ return [];
105
+ const all = [`mcp__${key}`, `plugin__${key}`];
106
+ const hit = all.filter((k) => known?.has(k) === true);
107
+ return hit.length > 0 ? hit : all;
108
+ }
109
+ /** The refusal text for saving rc key `key` (null when it is none): names the new key(s). */
110
+ export function legacyKeySaveText(key, known) {
111
+ const c = legacyKeyCandidates(key, known);
112
+ if (c.length === 0)
113
+ return null;
114
+ return `"${key}" is a release-candidate tool key; use ${c.map((x) => `"${x}"`).join(" or ")}`;
115
+ }
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * 工具命名(Global Constraints):模型可见的工具 key 必须匹配 `^[a-zA-Z0-9_-]{1,64}$`;
3
- * 插件工具为 `<plugin>__<tool>`,连接器工具为 `<connectorSlug>__<tool>`,内置工具就是其名字本身。
3
+ * 插件工具为 `plugin__<plugin>__<tool>`,连接器工具为 `mcp__<connectorSlug>__<tool>`(拼与拆见 SDK 的 tool-key.ts),内置工具就是其名字本身。
4
4
  * 超长或含非法字符的 key 一律报出来,不截断、不猜。
5
5
  */
6
6
  export declare const TOOL_KEY_RE: RegExp;
7
7
  export declare const TOOL_KEY_MAX = 64;
8
8
  /** 连接器 slug:小写字母开头,小写字母 / 数字 / 下划线,最长 24。 */
9
9
  export declare const APP_SLUG_RE: RegExp;
10
- /** 前缀与工具名之间的分隔符。 */
11
- export declare const KEY_SEPARATOR = "__";
12
10
  /**
13
11
  * slug 是否合法:除正则外,不得含连续下划线、不得以下划线结尾——否则 `a__b` + `c` 与 `a` + `b__c`
14
12
  * 会拼出同一个 key。
@@ -21,7 +19,5 @@ export declare const SLUG_RULE = "Slug must start with a lowercase letter, conta
21
19
  * 截到 24 位(再去掉尾部下划线)。推导不出合法 slug(如名称全是中文)时返回 null,由调用方要求显式给出。
22
20
  */
23
21
  export declare function deriveSlug(name: string): string | null;
24
- /** 拼 `<prefix>__<name>`。 */
25
- export declare function toolKey(prefix: string, name: string): string;
26
22
  /** key 不合法时返回英文原因,合法时返回 null。 */
27
23
  export declare function toolKeyIssue(key: string): string | null;
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * 工具命名(Global Constraints):模型可见的工具 key 必须匹配 `^[a-zA-Z0-9_-]{1,64}$`;
3
- * 插件工具为 `<plugin>__<tool>`,连接器工具为 `<connectorSlug>__<tool>`,内置工具就是其名字本身。
3
+ * 插件工具为 `plugin__<plugin>__<tool>`,连接器工具为 `mcp__<connectorSlug>__<tool>`(拼与拆见 SDK 的 tool-key.ts),内置工具就是其名字本身。
4
4
  * 超长或含非法字符的 key 一律报出来,不截断、不猜。
5
5
  */
6
6
  export const TOOL_KEY_RE = /^[a-zA-Z0-9_-]{1,64}$/;
7
7
  export const TOOL_KEY_MAX = 64;
8
8
  /** 连接器 slug:小写字母开头,小写字母 / 数字 / 下划线,最长 24。 */
9
9
  export const APP_SLUG_RE = /^[a-z][a-z0-9_]{0,23}$/;
10
- /** 前缀与工具名之间的分隔符。 */
11
- export const KEY_SEPARATOR = "__";
12
10
  /**
13
11
  * slug 是否合法:除正则外,不得含连续下划线、不得以下划线结尾——否则 `a__b` + `c` 与 `a` + `b__c`
14
12
  * 会拼出同一个 key。
@@ -31,10 +29,6 @@ export function deriveSlug(name) {
31
29
  .replace(/_+$/, "");
32
30
  return isValidSlug(s) ? s : null;
33
31
  }
34
- /** 拼 `<prefix>__<name>`。 */
35
- export function toolKey(prefix, name) {
36
- return `${prefix}${KEY_SEPARATOR}${name}`;
37
- }
38
32
  /** key 不合法时返回英文原因,合法时返回 null。 */
39
33
  export function toolKeyIssue(key) {
40
34
  if (key.length > TOOL_KEY_MAX) {
@@ -0,0 +1,16 @@
1
+ import { ApiError } from "../../errors.js";
2
+ /** 授权回调的路径(`http.publicUrl` + 它 = 注册给授权服务器的 redirect_uri)。 */
3
+ export declare const OAUTH_CALLBACK_PATH = "/api/v1/oauth/callback";
4
+ /** state 的有效期(秒)。 */
5
+ export declare const OAUTH_STATE_TTL_SECONDS = 600;
6
+ /** 浏览器绑定 Cookie:回调必须来自发起连接的同一个浏览器。 */
7
+ export declare const OAUTH_BINDING_COOKIE = "cap_oauth";
8
+ /** 回调失败、或连接时没给回跳页面时回到的网页(next-intl 会补语言前缀)。 */
9
+ export declare const DEFAULT_RETURN_PATH = "/settings/connections";
10
+ /** OAuth 连接器需要 `http.publicUrl`(回调地址);未配置 → 这条校验错误。 */
11
+ export declare const publicUrlRequired: () => ApiError;
12
+ export declare function callbackUrl(publicUrl: string): string;
13
+ /**
14
+ * 回跳页面只接受站内相对路径(防开放重定向):以单个 `/` 开头,不含 `\` 与控制字符,解析后仍在同一个源。
15
+ */
16
+ export declare function isSafeReturnPath(p: string): boolean;
@@ -0,0 +1,38 @@
1
+ import { ApiError } from "../../errors.js";
2
+ // The OAuth connect flow's paths and URL rules: a leaf module (no service imports), so the
3
+ // connectors service can use them without an import cycle through the flow.
4
+ /** 授权回调的路径(`http.publicUrl` + 它 = 注册给授权服务器的 redirect_uri)。 */
5
+ export const OAUTH_CALLBACK_PATH = "/api/v1/oauth/callback";
6
+ /** state 的有效期(秒)。 */
7
+ export const OAUTH_STATE_TTL_SECONDS = 600;
8
+ /** 浏览器绑定 Cookie:回调必须来自发起连接的同一个浏览器。 */
9
+ export const OAUTH_BINDING_COOKIE = "cap_oauth";
10
+ /** 回调失败、或连接时没给回跳页面时回到的网页(next-intl 会补语言前缀)。 */
11
+ export const DEFAULT_RETURN_PATH = "/settings/connections";
12
+ /** OAuth 连接器需要 `http.publicUrl`(回调地址);未配置 → 这条校验错误。 */
13
+ export const publicUrlRequired = () => new ApiError("validation_failed", "Request validation failed", [
14
+ {
15
+ path: "auth",
16
+ message: "OAuth connectors require http.publicUrl to be configured (it is used to build the OAuth callback URL)",
17
+ },
18
+ ]);
19
+ export function callbackUrl(publicUrl) {
20
+ return `${publicUrl.replace(/\/+$/, "")}${OAUTH_CALLBACK_PATH}`;
21
+ }
22
+ /**
23
+ * 回跳页面只接受站内相对路径(防开放重定向):以单个 `/` 开头,不含 `\` 与控制字符,解析后仍在同一个源。
24
+ */
25
+ export function isSafeReturnPath(p) {
26
+ if (p.length > 500 || !p.startsWith("/") || p.startsWith("//"))
27
+ return false;
28
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: 正是要拒绝控制字符
29
+ if (/[\\\u0000-\u001f\u007f]/.test(p))
30
+ return false;
31
+ const base = "https://return.invalid";
32
+ try {
33
+ return new URL(p, base).origin === base;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
@@ -1,46 +1,40 @@
1
1
  import type { Logger } from "@capybara-hq/plugin-sdk";
2
2
  import type { Redis } from "ioredis";
3
- import type { KernelConfig } from "../../config/schema.js";
4
- import type { KernelDb } from "../../db/kernel-schema.js";
5
- import { ApiError } from "../../errors.js";
6
- import type { Credentials } from "../credentials.js";
7
- /** 授权回调的路径(`http.publicUrl` + 它 = 注册给授权服务器的 redirect_uri)。 */
8
- export declare const OAUTH_CALLBACK_PATH = "/api/v1/oauth/callback";
9
- /** state 的有效期(秒)。 */
10
- export declare const OAUTH_STATE_TTL_SECONDS = 600;
11
- /** 浏览器绑定 Cookie:回调必须来自发起连接的同一个浏览器。 */
12
- export declare const OAUTH_BINDING_COOKIE = "cap_oauth";
13
- /** 回调失败、或连接时没给回跳页面时回到的网页(next-intl 会补语言前缀)。 */
14
- export declare const DEFAULT_RETURN_PATH = "/settings/connections";
15
- /** OAuth 连接器需要 `http.publicUrl`(回调地址);未配置 → 这条校验错误。 */
16
- export declare const publicUrlRequired: () => ApiError;
17
- export declare function callbackUrl(publicUrl: string): string;
18
- /**
19
- * 回跳页面只接受站内相对路径(防开放重定向):以单个 `/` 开头,不含 `\` 与控制字符,解析后仍在同一个源。
20
- */
21
- export declare function isSafeReturnPath(p: string): boolean;
3
+ import { KernelConfigService } from "../../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../../infra/database/kernel-db.js";
5
+ import { TransactionHost } from "../../infra/database/transaction-host.js";
6
+ import { OrgLock } from "../../orgs/org-lock.js";
7
+ import { ConnectorsService } from "../connectors.service.js";
8
+ import { Credentials } from "../credentials.js";
9
+ export { callbackUrl, DEFAULT_RETURN_PATH, isSafeReturnPath, OAUTH_BINDING_COOKIE, OAUTH_CALLBACK_PATH, OAUTH_STATE_TTL_SECONDS, publicUrlRequired, } from "./flow-paths.js";
22
10
  /** 一个有效的浏览器绑定值(复用请求里已有的,否则新生成)。 */
23
11
  export declare function browserBinding(existing: string | undefined): string;
24
12
  /** 回调失败的原因码(放进回跳 URL 的 `oauth_error`;不回显授权服务器的任何文本)。 */
25
13
  export type OAuthCallbackError = "state_invalid" | "session_mismatch" | "access_denied" | "provider_error" | "token_exchange_failed" | "issuer_mismatch" | "connector_unavailable";
26
14
  /** 首次连接后刷新工具清单最多等这么久再 302(超时则在后台继续,结果照常写入)。 */
27
15
  export declare const FIRST_CONNECT_REFRESH_WAIT_MS = 15000;
28
- export interface OAuthFlowDeps {
29
- db: KernelDb;
30
- redis: Redis;
31
- credentials: Credentials;
32
- config: () => KernelConfig;
33
- log: Logger;
34
- /** 某成员首次成功连接、而连接器还没有工具快照时调用(A16:用该成员的 token 刷新工具清单)。 */
35
- onFirstConnect: (orgId: string, connectorId: string, accountId: string) => Promise<void>;
36
- }
37
16
  /**
38
17
  * 授权码 + PKCE(S256)连接流程。state 是 32 字节随机串,存 Redis `capk:oauth-state:<state>` 10 分钟、单次有效
39
18
  * (GETDEL),内含组织、连接器、发起人、PKCE verifier、redirect_uri、回跳页面与浏览器绑定值的哈希。
40
19
  */
41
20
  export declare class OAuthFlow {
42
- private readonly deps;
43
- constructor(deps: OAuthFlowDeps);
21
+ private readonly db;
22
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
23
+ private readonly orgLock;
24
+ private readonly redis;
25
+ private readonly credentials;
26
+ private readonly config;
27
+ private readonly log;
28
+ /** A member's first connection without a tool snapshot refreshes the tools (A16). */
29
+ private readonly connectors;
30
+ readonly txHost: TransactionHost;
31
+ constructor(db: KernelDb,
32
+ /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
33
+ orgLock: Pick<OrgLock, "lockAndAuthorize">, redis: Pick<Redis, "set" | "getdel">, credentials: Credentials, config: Pick<KernelConfigService, "get">, log: Logger,
34
+ /** A member's first connection without a tool snapshot refreshes the tools (A16). */
35
+ connectors: Pick<ConnectorsService, "refresh">, txHost: TransactionHost);
36
+ /** 某成员首次成功连接、而连接器还没有工具快照时(A16:用该成员的 token 刷新工具清单)。 */
37
+ private onFirstConnect;
44
38
  private app;
45
39
  /** 生成授权 URL。`binding` 为本浏览器的绑定值(由 controller 写入 Cookie)。 */
46
40
  start(orgId: string, connectorId: string, accountId: string, returnTo: string | undefined, binding: string): Promise<{
@@ -60,4 +54,10 @@ export declare class OAuthFlow {
60
54
  error?: string | undefined;
61
55
  iss?: string | undefined;
62
56
  }, binding: string | undefined): Promise<string>;
57
+ /**
58
+ * In the org row lock: re-checks that the member may still use connectors and the connector
59
+ * exists, stores the member's tokens with the audit row; true when the connector has no tool
60
+ * snapshot yet (the first connection).
61
+ */
62
+ private storeTokens;
63
63
  }