@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,12 +1,29 @@
1
- import { TOOL_TITLE_MAX, ToolError, validateToolPresentation, } from "@capybara-hq/plugin-sdk";
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 { connectorToolKey, TOOL_TITLE_MAX, ToolError, validateToolPresentation, } from "@capybara-hq/plugin-sdk";
11
+ import { getQueueToken } from "@nestjs/bullmq";
12
+ import { Inject, Injectable } from "@nestjs/common";
2
13
  import { sql } from "kysely";
3
14
  import { ApiError } from "../errors.js";
4
15
  import { audit } from "../identity/audit.js";
16
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
17
+ import { KernelDb } from "../infra/database/kernel-db.js";
18
+ import { TransactionHost } from "../infra/database/transaction-host.js";
19
+ import { Transactional } from "../infra/database/transactional.decorator.js";
20
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
21
+ import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
5
22
  import { HIDDEN_FORMAT_RE } from "../text.js";
6
- import { CredentialMissing, isOAuth } from "./credentials.js";
7
- import { toolKey, toolKeyIssue } from "./naming.js";
23
+ import { CredentialMissing, Credentials, isOAuth } from "./credentials.js";
24
+ import { toolKeyIssue } from "./naming.js";
8
25
  import { redactDeep, redactorFor } from "./redact.js";
9
- import { canonicalJson, policyFromAnnotations, specHash } from "./registry.js";
26
+ import { canonicalJson, policyFromAnnotations, specHash, ToolRegistry } from "./registry.js";
10
27
  import { resourceToolSpecs } from "./resources.js";
11
28
  import { recordToolSpecs } from "./specs.js";
12
29
  /**
@@ -20,15 +37,12 @@ import { recordToolSpecs } from "./specs.js";
20
37
  * 连接器从未拍过快照(`tools_synced_at` 为空且没有工具行,即 OAuth 授权码连接器安装时不 listTools,A16)时,
21
38
  * 首个快照按安装处理(直接启用)。
22
39
  *
23
- * 触发:维护队列的周期扫描(`tools.driftIntervalHours`)、连接器在会话中报告工具清单变了(MCP
40
+ * 触发:周期扫描(`drift-scan`,每 `tools.driftIntervalHours` 一次的 `@LockedInterval`,见 jobs.ts)、连接器在会话中报告工具清单变了(MCP
24
41
  * `notifications/tools/list_changed`)、管理员手动刷新(`ConnectorsService.refresh`,走同一套比对)。
25
42
  * 授权(`tool_grants` / `conversation_tool_grants`)按 spec_hash 比对(D8),复核通过采用新指纹后旧授权自然失效。
26
43
  */
27
- /** 周期扫描:任务名与 job scheduler id(不含 `:`)。 */
28
- export const DRIFT_SCAN_JOB = "drift-scan";
29
- export const DRIFT_SCHEDULER_ID = "drift-scan-interval";
30
- /** 单个连接器的漂移检查任务名。 */
31
- export const DRIFT_CONNECTOR_JOB = "drift-connector";
44
+ import { DRIFT_CONNECTOR_JOB } from "./job-ids.js";
45
+ export { DRIFT_CONNECTOR_JOB, DRIFT_SCAN_JOB, DRIFT_SCHEDULER_ID } from "./job-ids.js";
32
46
  /**
33
47
  * list_changed 触发的检查:jobId 按连接器与分钟桶去重(同一分钟内多次通知只检查一次;connectorId 为 UUID,不含 `:`)。
34
48
  */
@@ -91,7 +105,7 @@ export function snapshot(slug, specs, resources) {
91
105
  ...(isObj(s.connectorData) && { connectorData: s.connectorData }),
92
106
  ...displayFields(s),
93
107
  };
94
- let issue = toolKeyIssue(toolKey(slug, name));
108
+ let issue = toolKeyIssue(connectorToolKey(slug, name));
95
109
  if (!issue && !isObj(s.inputSchema))
96
110
  issue = "Tool inputSchema must be an object";
97
111
  if (issue)
@@ -108,7 +122,7 @@ export function snapshot(slug, specs, resources) {
108
122
  });
109
123
  continue;
110
124
  }
111
- const issue = toolKeyIssue(toolKey(slug, spec.name));
125
+ const issue = toolKeyIssue(connectorToolKey(slug, spec.name));
112
126
  if (issue)
113
127
  issues.push({ name: spec.name, reason: issue });
114
128
  rows.push({ name: spec.name, spec, specHash: specHash(spec), issue, source: "resources" });
@@ -158,7 +172,7 @@ const displayOf = (spec) => {
158
172
  };
159
173
  /** 工具当前不能启用的原因(视图、启用与复核校验共用)。 */
160
174
  export function toolIssue(slug, spec) {
161
- const keyIssue = toolKeyIssue(toolKey(slug, spec.name));
175
+ const keyIssue = toolKeyIssue(connectorToolKey(slug, spec.name));
162
176
  if (keyIssue)
163
177
  return keyIssue;
164
178
  if (!isObj(spec.inputSchema))
@@ -167,30 +181,28 @@ export function toolIssue(slug, spec) {
167
181
  }
168
182
  /** 任务保留时长:完成的 jobId 留一段时间,同一桶内的重复投递被 BullMQ 按 jobId 去重。 */
169
183
  const KEEP_FAILED = { age: 86_400 };
170
- export class ToolDrift {
171
- d;
172
- constructor(d) {
173
- this.d = d;
174
- const m = d.maintenance;
175
- if (m) {
176
- m.schedule({
177
- id: DRIFT_SCHEDULER_ID,
178
- name: DRIFT_SCAN_JOB,
179
- everyMs: () => this.intervalMs(),
180
- });
181
- m.handle(DRIFT_SCAN_JOB, async () => {
182
- const n = await this.scan();
183
- if (n > 0)
184
- d.log.info("tool drift checks enqueued", { count: n });
185
- });
186
- m.handle(DRIFT_CONNECTOR_JOB, async (job) => {
187
- const { orgId, connectorId, trigger } = job.data;
188
- await this.check(orgId, connectorId, trigger);
189
- });
190
- }
184
+ let ToolDrift = class ToolDrift {
185
+ db;
186
+ registry;
187
+ credentials;
188
+ config;
189
+ log;
190
+ queue;
191
+ txHost;
192
+ constructor(db, registry, credentials, config, log,
193
+ /** The maintenance queue's producer (`drift-connector` jobs). */
194
+ queue, txHost) {
195
+ this.db = db;
196
+ this.registry = registry;
197
+ this.credentials = credentials;
198
+ this.config = config;
199
+ this.log = log;
200
+ this.queue = queue;
201
+ this.txHost = txHost;
191
202
  }
203
+ /** The scan period (`tools.driftIntervalHours`). */
192
204
  intervalMs() {
193
- return this.d.config().tools.driftIntervalHours * 3_600_000;
205
+ return this.config.get().tools.driftIntervalHours * 3_600_000;
194
206
  }
195
207
  /**
196
208
  * 打开一次会话拉工具清单,无论成败都关闭会话;会话带 `listResources` 即视为支持 resources。
@@ -200,11 +212,11 @@ export class ToolDrift {
200
212
  async listTools(connector, endpoint, auth, logCtx,
201
213
  /** 收到 401:OAuth 连接器在刷新锁内刷新(参数为最后一次注入的鉴权)。 */
202
214
  onUnauthorized = async () => { }) {
203
- const c = this.d.registry.findConnector(connector);
215
+ const c = this.registry.findConnector(connector);
204
216
  if (!c) {
205
217
  throw new ApiError("connector.connect_failed", `The connector ${connector} is not installed`);
206
218
  }
207
- const signal = AbortSignal.timeout(this.d.config().tools.timeoutMs);
219
+ const signal = AbortSignal.timeout(this.config.get().tools.timeoutMs);
208
220
  const injected = [];
209
221
  const tracked = async () => {
210
222
  const inj = await auth();
@@ -230,20 +242,21 @@ export class ToolDrift {
230
242
  if (e instanceof CredentialMissing)
231
243
  throw e;
232
244
  // 日志经 logger 打码(凭据值已在构造注入时登记)
233
- this.d.log.warn("connector listTools failed", { ...logCtx, connector, err: e });
245
+ this.log.warn("connector listTools failed", { ...logCtx, connector, err: e });
234
246
  throw new ApiError("connector.connect_failed", connectFailedMessage(e, redactorFor(injected)));
235
247
  }
236
248
  finally {
237
249
  await session?.close().catch((e) => {
238
- this.d.log.warn("connector session close failed", { ...logCtx, connector, err: e });
250
+ this.log.warn("connector session close failed", { ...logCtx, connector, err: e });
239
251
  });
240
252
  }
241
253
  }
242
254
  /**
243
- * 把新快照与当前工具行比对并写入(调用方已在事务内锁住连接器行);返回按名排序的变化。
255
+ * 把新快照与当前工具行比对并写入(调用方已在事务内锁住连接器行:`mandatory`);返回按名排序的变化。
244
256
  * 规则见文件头。待复核的新定义也写进 `tool_specs`(内容寻址,只增不改)。
245
257
  */
246
- async apply(t, app, rows) {
258
+ async apply(app, rows) {
259
+ const t = this.db.db;
247
260
  const current = await t
248
261
  .selectFrom("connector_tools")
249
262
  .select([
@@ -341,7 +354,7 @@ export class ToolDrift {
341
354
  .where("name", "=", r.name)
342
355
  .execute();
343
356
  // No audit row (the model sees nothing new), but leave a trace for operators.
344
- this.d.log.info("connector tool display updated", {
357
+ this.log.info("connector tool display updated", {
345
358
  event: "connector.tool_display_updated",
346
359
  connectorId: app.id,
347
360
  tool: r.name,
@@ -393,8 +406,8 @@ export class ToolDrift {
393
406
  * 连不上 / 都失败 → 跳过(不改快照,下个周期或下次通知再查)。
394
407
  */
395
408
  async check(orgId, connectorId, trigger) {
396
- const { db, log } = this.d;
397
- const app = (await db
409
+ const log = this.log;
410
+ const app = (await this.db
398
411
  .selectFrom("connectors")
399
412
  .select([
400
413
  "id",
@@ -415,7 +428,7 @@ export class ToolDrift {
415
428
  return { status: "skipped", reason: "not_found" };
416
429
  if (app.status !== "active")
417
430
  return { status: "skipped", reason: "inactive" };
418
- if (!this.d.registry.findConnector(app.connector)) {
431
+ if (!this.registry.findConnector(app.connector)) {
419
432
  log.warn("tool drift check skipped: connector not installed", {
420
433
  orgId,
421
434
  connectorId,
@@ -427,7 +440,7 @@ export class ToolDrift {
427
440
  const personal = auth.type !== "none" && !isOAuth(auth) && auth.ownership === "personal";
428
441
  const personalOAuth = auth.type === "oauth_code";
429
442
  const accounts = personal || personalOAuth
430
- ? await this.d.credentials.personalHolders(orgId, connectorId, PERSONAL_CANDIDATES)
443
+ ? await this.credentials.personalHolders(orgId, connectorId, PERSONAL_CANDIDATES)
431
444
  : [app.created_by];
432
445
  if (accounts.length === 0) {
433
446
  log.info("tool drift check skipped: no member credential", { orgId, connectorId });
@@ -437,7 +450,7 @@ export class ToolDrift {
437
450
  let reason = "no_credential";
438
451
  for (const accountId of accounts) {
439
452
  try {
440
- listed = await this.listTools(app.connector, app.endpoint, () => this.d.credentials.injection(orgId, connectorId, auth, accountId), { orgId, connectorId, trigger }, (last) => this.d.credentials.onUnauthorized(orgId, connectorId, auth, accountId, last));
453
+ listed = await this.listTools(app.connector, app.endpoint, () => this.credentials.injection(orgId, connectorId, auth, accountId), { orgId, connectorId, trigger }, (last) => this.credentials.onUnauthorized(orgId, connectorId, auth, accountId, last));
441
454
  break;
442
455
  }
443
456
  catch (e) {
@@ -455,53 +468,57 @@ export class ToolDrift {
455
468
  return { status: "skipped", reason };
456
469
  }
457
470
  const { rows } = snapshot(app.slug, listed.specs, listed.resources);
458
- const changes = await db.transaction().execute(async (t) => {
459
- const locked = await t
460
- .selectFrom("connectors")
461
- .select(["id", "tools_synced_at"])
462
- .where("id", "=", connectorId)
463
- .where("deleted_at", "is", null)
464
- .where("status", "=", "active")
465
- .forUpdate()
466
- .executeTakeFirst();
467
- if (!locked)
468
- return null;
469
- const c = await this.apply(t, locked, rows);
470
- if (c.added.length + c.changed.length + c.removed.length > 0) {
471
- await audit(t, {
472
- orgId,
473
- action: "connector.tools_drifted",
474
- target: connectorId,
475
- detail: {
476
- added: c.added.length,
477
- changed: c.changed.length,
478
- removed: c.removed.length,
479
- trigger,
480
- },
481
- });
482
- }
483
- return c;
484
- });
471
+ const changes = await this.applyChecked(orgId, connectorId, trigger, rows);
485
472
  if (!changes)
486
473
  return { status: "skipped", reason: "inactive" };
487
474
  return { status: "checked", changes };
488
475
  }
476
+ /** The locked compare-and-write of {@link check}, audited when something changed. */
477
+ async applyChecked(orgId, connectorId, trigger, rows) {
478
+ const t = this.db.db;
479
+ const locked = await t
480
+ .selectFrom("connectors")
481
+ .select(["id", "tools_synced_at"])
482
+ .where("id", "=", connectorId)
483
+ .where("deleted_at", "is", null)
484
+ .where("status", "=", "active")
485
+ .forUpdate()
486
+ .executeTakeFirst();
487
+ if (!locked)
488
+ return null;
489
+ const c = await this.apply(locked, rows);
490
+ if (c.added.length + c.changed.length + c.removed.length > 0) {
491
+ await audit(t, {
492
+ orgId,
493
+ action: "connector.tools_drifted",
494
+ target: connectorId,
495
+ detail: {
496
+ added: c.added.length,
497
+ changed: c.changed.length,
498
+ removed: c.removed.length,
499
+ trigger,
500
+ },
501
+ });
502
+ }
503
+ return c;
504
+ }
489
505
  /**
490
506
  * 连接器在会话中报告工具清单变了:投递一次该连接器的检查(jobId 按分钟桶去重)。投递失败只记日志。
491
507
  */
492
508
  async onToolsChanged(orgId, connectorId) {
493
- const m = this.d.maintenance;
494
- if (!m || connectorId.includes(":"))
509
+ if (connectorId.includes(":"))
495
510
  return;
496
511
  try {
497
- await m.add(DRIFT_CONNECTOR_JOB, { orgId, connectorId, trigger: "list_changed" }, {
512
+ await this.queue.add(DRIFT_CONNECTOR_JOB, { orgId, connectorId, trigger: "list_changed" }, {
498
513
  jobId: listChangedJobId(connectorId),
514
+ // a check runs once: a failure waits for the next trigger (the queue default retries)
515
+ attempts: 1,
499
516
  removeOnComplete: { age: 3_600 },
500
517
  removeOnFail: KEEP_FAILED,
501
518
  });
502
519
  }
503
520
  catch (err) {
504
- this.d.log.warn("cannot enqueue tool drift check", { orgId, connectorId, err });
521
+ this.log.warn("cannot enqueue tool drift check", { orgId, connectorId, err });
505
522
  }
506
523
  }
507
524
  /**
@@ -509,12 +526,9 @@ export class ToolDrift {
509
526
  * jobId 按周期桶去重——即使扫描在多个副本上重复执行,每个连接器每周期也只检查一次。返回投递数。
510
527
  */
511
528
  async scan() {
512
- const m = this.d.maintenance;
513
- if (!m)
514
- return 0;
515
529
  const interval = this.intervalMs();
516
530
  const bucket = Math.floor(Date.now() / interval);
517
- const apps = await this.d.db
531
+ const apps = await this.db
518
532
  .selectFrom("connectors")
519
533
  .select(["id", "org_id"])
520
534
  .where("deleted_at", "is", null)
@@ -528,12 +542,30 @@ export class ToolDrift {
528
542
  for (const a of apps) {
529
543
  if (a.id.includes(":"))
530
544
  continue;
531
- await m.add(DRIFT_CONNECTOR_JOB, { orgId: a.org_id, connectorId: a.id, trigger: "schedule" }, {
545
+ await this.queue.add(DRIFT_CONNECTOR_JOB, { orgId: a.org_id, connectorId: a.id, trigger: "schedule" }, {
532
546
  jobId: driftScanJobId(a.id, bucket),
547
+ attempts: 1,
533
548
  removeOnComplete: { age: Math.ceil(interval / 1000) },
534
549
  removeOnFail: KEEP_FAILED,
535
550
  });
536
551
  }
537
552
  return apps.length;
538
553
  }
539
- }
554
+ };
555
+ __decorate([
556
+ Transactional({ propagation: "mandatory" })
557
+ ], ToolDrift.prototype, "apply", null);
558
+ __decorate([
559
+ Transactional()
560
+ ], ToolDrift.prototype, "applyChecked", null);
561
+ ToolDrift = __decorate([
562
+ Injectable(),
563
+ __param(0, Inject(KernelDb)),
564
+ __param(1, Inject(ToolRegistry)),
565
+ __param(2, Inject(Credentials)),
566
+ __param(3, Inject(KernelConfigService)),
567
+ __param(4, Inject(KERNEL_LOGGER)),
568
+ __param(5, Inject(getQueueToken(MAINTENANCE_QUEUE_NAME))),
569
+ __param(6, Inject(TransactionHost))
570
+ ], ToolDrift);
571
+ export { ToolDrift };
@@ -33,7 +33,7 @@ export class ElicitationSuspended extends Error {
33
33
  }
34
34
  /** 不能展示的 elicitation 被拒绝时附在工具结果后的说明(模型可见,英文)。 */
35
35
  export const UNSUPPORTED_ELICITATION_NOTE = "The app asked the user for input that cannot be shown in this client, so the request was declined";
36
- const unsupportedNote = (why) => `[${UNSUPPORTED_ELICITATION_NOTE} (${why}). If the call needs that input, ask the user for it with ask_user and pass it as tool arguments, or try another approach.]`;
36
+ const unsupportedNote = (why) => `[${UNSUPPORTED_ELICITATION_NOTE} (${why}). If the call needs that input, ask the user for it with AskUserQuestion and pass it as tool arguments, or try another approach.]`;
37
37
  /** URL 模式表单里「已完成」开关的字段名。 */
38
38
  export const URL_COMPLETED_FIELD = "completed";
39
39
  /** 表单标题(远端给的 message)最多字符数。 */
@@ -1,5 +1,8 @@
1
- import type { KernelDb } from "../db/kernel-schema.js";
2
- import type { ToolRegistry } from "./registry.js";
1
+ import { type LocalizedName } from "@capybara-hq/plugin-sdk";
2
+ import { ConversationAccess } from "../conversations/access.js";
3
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { ToolRegistry } from "./registry.js";
3
6
  /**
4
7
  * Tool presentation metadata for the conversation page (UI refresh B, design spec §6.16.9): the
5
8
  * kind picks the row verb and the group counts, the title and key arguments the row's wording.
@@ -9,16 +12,32 @@ export type ToolKind = "command" | "read" | "edit" | "search" | "connector" | "m
9
12
  export interface ToolInfo {
10
13
  /** The model-visible tool key, as asked for. */
11
14
  key: string;
15
+ /**
16
+ * Set only for a release-candidate builtin key (old history, tool naming spec §9): the current
17
+ * tool it stands for. Everything else describes that tool, with `keyArgs` in the old parameter
18
+ * names the logged input carries. Pages map a call's name through it (the `Agent` row, labels).
19
+ */
20
+ aliasOf?: string;
12
21
  /** The declared display title (`ToolSpec.title`), or null. */
13
22
  title: string | null;
14
23
  kind: ToolKind;
24
+ /** True exactly for the builtin tools that run in the conversation's sandbox. */
25
+ sandbox: boolean;
15
26
  /** The declared key arguments (`ToolSpec.keyArgs`), or []. */
16
27
  keyArgs: string[];
28
+ /**
29
+ * The local tool name parsed from a connector or extension key (`mcp__crm__delete` -> `delete`),
30
+ * shown in brackets after the source's display name; null for builtins and unparsable keys.
31
+ */
32
+ tool: string | null;
17
33
  source: {
18
34
  kind: "builtin";
19
- } | {
35
+ }
36
+ /** `displayName`: the plugin's catalog display name, else its name. */
37
+ | {
20
38
  kind: "extension";
21
39
  name: string;
40
+ displayName: LocalizedName;
22
41
  } | {
23
42
  kind: "connector";
24
43
  id: string;
@@ -29,18 +48,17 @@ export interface ToolInfo {
29
48
  kind: "unknown";
30
49
  };
31
50
  }
32
- /** Kinds of the kernel builtin tools; a builtin missing here is a plain `tool`. */
33
- export declare const BUILTIN_TOOL_KINDS: Readonly<Record<string, ToolKind>>;
51
+ export { BUILTIN_TOOL_KINDS } from "./builtin-names.js";
34
52
  /** At most this many keys per request, each at most {@link TOOL_INFO_KEY_MAX} characters. */
35
53
  export declare const TOOL_INFO_MAX_KEYS = 100;
36
54
  export declare const TOOL_INFO_KEY_MAX = 200;
37
55
  export interface ToolInfoDeps {
38
- db: KernelDb;
56
+ db: KernelSchemaDb;
39
57
  registry: Pick<ToolRegistry, "builtinSpecs" | "extensionToolSpecs">;
40
58
  }
41
59
  /**
42
60
  * Presentation metadata for `keys` in this org, in request order with repeats dropped. Builtins
43
- * by name; `<prefix>__<tool>` keys first as a loaded extension's registration, then as a live
61
+ * by name (a release-candidate builtin key as its current tool, with `aliasOf`); `plugin__<plugin>__<tool>` keys as a loaded extension's registration, and `mcp__<slug>__<tool>` keys as a live
44
62
  * connector's current stored tool (its reviewed definition, never a pending one). Anything else
45
63
  * comes back as an unknown plain tool.
46
64
  *
@@ -55,13 +73,14 @@ export interface ToolInfoDeps {
55
73
  * here it only changes the label.
56
74
  */
57
75
  export declare function toolInfo(deps: ToolInfoDeps, orgId: string, keys: readonly string[]): Promise<ToolInfo[]>;
58
- export interface ConversationToolInfoDeps extends ToolInfoDeps {
59
- /** Conversation visibility (the same rule as the events API: `ConversationsService.isAccessible`). */
60
- isAccessible(orgId: string, conversationId: string, viewerAccountId: string): Promise<boolean>;
61
- }
62
76
  /** `GET /conversations/:id/tools`: {@link toolInfo} for a conversation the viewer can read. */
63
77
  export declare class ConversationToolInfo {
64
- private readonly d;
65
- constructor(d: ConversationToolInfoDeps);
78
+ private readonly db;
79
+ private readonly registry;
80
+ /** Conversation visibility (the same rule as the events API). */
81
+ private readonly access;
82
+ constructor(db: KernelDb, registry: Pick<ToolRegistry, "builtinSpecs" | "extensionToolSpecs">,
83
+ /** Conversation visibility (the same rule as the events API). */
84
+ access: Pick<ConversationAccess, "isAccessible">);
66
85
  get(orgId: string, conversationId: string, viewerAccountId: string, keys: readonly string[]): Promise<ToolInfo[]>;
67
86
  }
@@ -1,21 +1,23 @@
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 { connectorToolKey, extensionToolKey, parseToolKey, } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { ConversationAccess } from "../conversations/access.js";
1
13
  import { ApiError } from "../errors.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
15
  import { UUID_RE } from "../ui/registry.js";
3
- import { KEY_SEPARATOR, toolKey } from "./naming.js";
4
- /** Kinds of the kernel builtin tools; a builtin missing here is a plain `tool`. */
5
- export const BUILTIN_TOOL_KINDS = {
6
- sandbox_bash: "command",
7
- sandbox_read: "read",
8
- sandbox_write: "edit",
9
- sandbox_edit: "edit",
10
- sandbox_glob: "search",
11
- sandbox_grep: "search",
12
- sandbox_deliver: "tool",
13
- tool_search: "meta",
14
- skill_load: "meta",
15
- skill_write: "meta",
16
- read_tool_output: "meta",
17
- ask_user: "meta",
18
- };
16
+ import { BUILTIN_TOOL_KINDS, SANDBOX_TOOL_NAMES } from "./builtin-names.js";
17
+ import { pluginDisplayNames } from "./display-names.js";
18
+ import { isLegacyBuiltinKey, LEGACY_BUILTINS } from "./legacy-keys.js";
19
+ import { ToolRegistry } from "./registry.js";
20
+ export { BUILTIN_TOOL_KINDS } from "./builtin-names.js";
19
21
  /** At most this many keys per request, each at most {@link TOOL_INFO_KEY_MAX} characters. */
20
22
  export const TOOL_INFO_MAX_KEYS = 100;
21
23
  export const TOOL_INFO_KEY_MAX = 200;
@@ -25,7 +27,7 @@ const display = (spec) => ({
25
27
  });
26
28
  /**
27
29
  * Presentation metadata for `keys` in this org, in request order with repeats dropped. Builtins
28
- * by name; `<prefix>__<tool>` keys first as a loaded extension's registration, then as a live
30
+ * by name (a release-candidate builtin key as its current tool, with `aliasOf`); `plugin__<plugin>__<tool>` keys as a loaded extension's registration, and `mcp__<slug>__<tool>` keys as a live
29
31
  * connector's current stored tool (its reviewed definition, never a pending one). Anything else
30
32
  * comes back as an unknown plain tool.
31
33
  *
@@ -42,17 +44,13 @@ const display = (spec) => ({
42
44
  export async function toolInfo(deps, orgId, keys) {
43
45
  const unique = [...new Set(keys)];
44
46
  const builtins = new Map(deps.registry.builtinSpecs().map((s) => [s.name, s]));
45
- const extensions = new Map(deps.registry.extensionToolSpecs().map((t) => [toolKey(t.plugin, t.spec.name), t]));
46
- const split = (key) => {
47
- const i = key.indexOf(KEY_SEPARATOR);
48
- return i > 0 ? [key.slice(0, i), key.slice(i + KEY_SEPARATOR.length)] : null;
49
- };
47
+ const extensions = new Map(deps.registry.extensionToolSpecs().map((t) => [extensionToolKey(t.plugin, t.spec.name), t]));
50
48
  const slugs = [
51
49
  ...new Set(unique.flatMap((k) => {
52
50
  if (builtins.has(k) || extensions.has(k))
53
51
  return [];
54
- const p = split(k);
55
- return p ? [p[0]] : [];
52
+ const p = parseToolKey(k);
53
+ return p?.kind === "connector" ? [p.slug] : [];
56
54
  })),
57
55
  ];
58
56
  const connectorRows = slugs.length === 0
@@ -65,15 +63,37 @@ export async function toolInfo(deps, orgId, keys) {
65
63
  .where("c.deleted_at", "is", null)
66
64
  .where("c.slug", "in", slugs)
67
65
  .execute();
68
- const connectorTools = new Map(connectorRows.map((r) => [toolKey(r.slug, r.tool), r]));
66
+ const connectorTools = new Map(connectorRows.map((r) => [connectorToolKey(r.slug, r.tool), r]));
67
+ const displayNames = await pluginDisplayNames(deps.db, unique.flatMap((k) => {
68
+ const e = extensions.get(k);
69
+ return e ? [e.plugin] : [];
70
+ }));
71
+ const localTool = (key) => {
72
+ const p = parseToolKey(key);
73
+ return p && p.kind !== "builtin" ? p.tool : null;
74
+ };
75
+ const builtinInfo = (key, name, spec) => ({
76
+ key,
77
+ ...display(spec),
78
+ kind: BUILTIN_TOOL_KINDS[name] ?? "tool",
79
+ sandbox: SANDBOX_TOOL_NAMES.includes(name),
80
+ tool: null,
81
+ source: { kind: "builtin" },
82
+ });
69
83
  return unique.map((key) => {
70
84
  const b = builtins.get(key);
71
- if (b) {
85
+ if (b)
86
+ return builtinInfo(key, key, b);
87
+ const legacy = isLegacyBuiltinKey(key) ? LEGACY_BUILTINS[key] : undefined;
88
+ const current = legacy && builtins.get(legacy.name);
89
+ if (legacy && current) {
90
+ // the logged input of an rc call names the old parameters: key arguments in those names
91
+ const oldName = new Map(Object.entries(legacy.params).map(([o, n]) => [n, o]));
92
+ const info = builtinInfo(key, legacy.name, current);
72
93
  return {
73
- key,
74
- ...display(b),
75
- kind: BUILTIN_TOOL_KINDS[key] ?? "tool",
76
- source: { kind: "builtin" },
94
+ ...info,
95
+ aliasOf: legacy.name,
96
+ keyArgs: info.keyArgs.map((a) => oldName.get(a) ?? a),
77
97
  };
78
98
  }
79
99
  const e = extensions.get(key);
@@ -82,7 +102,13 @@ export async function toolInfo(deps, orgId, keys) {
82
102
  key,
83
103
  ...display(e.spec),
84
104
  kind: "tool",
85
- source: { kind: "extension", name: e.plugin },
105
+ sandbox: false,
106
+ tool: e.spec.name,
107
+ source: {
108
+ kind: "extension",
109
+ name: e.plugin,
110
+ displayName: displayNames.get(e.plugin) ?? { zh: e.plugin, en: e.plugin },
111
+ },
86
112
  };
87
113
  const c = connectorTools.get(key);
88
114
  if (c) {
@@ -91,23 +117,46 @@ export async function toolInfo(deps, orgId, keys) {
91
117
  key,
92
118
  ...display(c.spec),
93
119
  kind: "connector",
120
+ sandbox: false,
121
+ tool: c.tool,
94
122
  source: { kind: "connector", id: c.id, name: c.name },
95
123
  };
96
124
  }
97
- return { key, title: null, kind: "tool", keyArgs: [], source: { kind: "unknown" } };
125
+ return {
126
+ key,
127
+ title: null,
128
+ kind: "tool",
129
+ sandbox: false,
130
+ keyArgs: [],
131
+ tool: localTool(key),
132
+ source: { kind: "unknown" },
133
+ };
98
134
  });
99
135
  }
100
136
  /** `GET /conversations/:id/tools`: {@link toolInfo} for a conversation the viewer can read. */
101
- export class ConversationToolInfo {
102
- d;
103
- constructor(d) {
104
- this.d = d;
137
+ let ConversationToolInfo = class ConversationToolInfo {
138
+ db;
139
+ registry;
140
+ access;
141
+ constructor(db, registry,
142
+ /** Conversation visibility (the same rule as the events API). */
143
+ access) {
144
+ this.db = db;
145
+ this.registry = registry;
146
+ this.access = access;
105
147
  }
106
148
  async get(orgId, conversationId, viewerAccountId, keys) {
107
149
  if (!UUID_RE.test(conversationId) ||
108
- !(await this.d.isAccessible(orgId, conversationId, viewerAccountId))) {
150
+ !(await this.access.isAccessible(orgId, conversationId, viewerAccountId))) {
109
151
  throw new ApiError("conversation.not_found", "Conversation not found");
110
152
  }
111
- return toolInfo(this.d, orgId, keys);
153
+ return toolInfo({ db: this.db.db, registry: this.registry }, orgId, keys);
112
154
  }
113
- }
155
+ };
156
+ ConversationToolInfo = __decorate([
157
+ Injectable(),
158
+ __param(0, Inject(KernelDb)),
159
+ __param(1, Inject(ToolRegistry)),
160
+ __param(2, Inject(ConversationAccess))
161
+ ], ConversationToolInfo);
162
+ export { ConversationToolInfo };
@@ -0,0 +1,13 @@
1
+ /** The periodic drift scan (`@LockedInterval`, tools/jobs.ts). */
2
+ export declare const DRIFT_SCAN_JOB = "drift-scan";
3
+ /** The BullMQ repeatable scheduler the scan had before it became `@LockedInterval` (retired). */
4
+ export declare const DRIFT_SCHEDULER_ID = "drift-scan-interval";
5
+ /**
6
+ * 单个连接器的漂移检查任务名(维护队列上的一次性任务:生产方是 `ToolDrift`,消费方是
7
+ * `MaintenanceProcessor`)。
8
+ */
9
+ export declare const DRIFT_CONNECTOR_JOB = "drift-connector";
10
+ /** The hourly cleanup of expired tool output archives (`@LockedCron`, tools/jobs.ts). */
11
+ export declare const OUTPUT_CLEANUP_JOB = "output-cleanup";
12
+ /** The BullMQ repeatable scheduler the cleanup had before it became `@LockedCron` (retired). */
13
+ export declare const OUTPUT_CLEANUP_SCHEDULER_ID = "output-cleanup-hourly";