@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,4 +1,15 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { createHmac, timingSafeEqual } from "node:crypto";
11
+ import { Inject, Injectable, Module, Optional } from "@nestjs/common";
12
+ import { KEYRING } from "../infra/tokens.js";
2
13
  import { ORG_ROLES } from "../orgs/roles.js";
3
14
  /** 嵌入令牌的有效期(秒)。网页在过期前 60 秒续期。 */
4
15
  export const EMBED_TOKEN_TTL_SECONDS = 300;
@@ -63,23 +74,26 @@ function parseClaims(v) {
63
74
  exp: c.exp,
64
75
  };
65
76
  }
77
+ /** Optional provider: the clock {@link EmbedTokens} issues and checks with (default `Date.now`; tests). */
78
+ export const EMBED_TOKEN_CLOCK = Symbol("EMBED_TOKEN_CLOCK");
66
79
  /**
67
80
  * 嵌入令牌:`base64url(JSON 声明).base64url(HMAC-SHA256(key, "capybara-embed/1." + 第一段))`。
68
81
  * - 格式固定、没有头(没有 alg 可混淆);密钥由主密钥环经 HKDF 派生,轮换后上一把主密钥签的令牌仍可校验到过期;
69
82
  * - 校验:严格 base64url、常量时间比较签名、逐字段核对声明、`exp` 容许 {@link EMBED_TOKEN_SKEW_SECONDS} 秒偏差、
70
83
  * `exp` 不得超过「现在 + 有效期 + 偏差」、`plugin` 必须是调用方插件;任何一项不过都返回 null(不说明原因)。
71
- * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。
84
+ * 无状态(不落库、不进 Redis):各副本用同一主密钥即可校验,不需要共享状态。One provider: the UI
85
+ * routes issue tokens with it and every extension's `ctx` verifies them with it.
72
86
  */
73
- export class EmbedTokens {
87
+ let EmbedTokens = class EmbedTokens {
88
+ now;
74
89
  current;
75
90
  keys;
76
- now;
77
- constructor(keyring, opts = {}) {
91
+ constructor(keyring, now = Date.now) {
92
+ this.now = now;
78
93
  const derived = keyring.deriveKey(EMBED_KEY_INFO);
79
94
  const ids = [derived.currentId, ...keyring.toJSON().previousIds];
80
95
  this.current = derived.current;
81
96
  this.keys = ids.map((id) => derived.byId(id)).filter((k) => k !== undefined);
82
- this.now = opts.now ?? Date.now;
83
97
  }
84
98
  /** 签发:`exp` = 现在 + {@link EMBED_TOKEN_TTL_SECONDS}。 */
85
99
  issue(c) {
@@ -126,7 +140,21 @@ export class EmbedTokens {
126
140
  return null;
127
141
  return claims;
128
142
  }
129
- }
143
+ };
144
+ EmbedTokens = __decorate([
145
+ Injectable(),
146
+ __param(0, Inject(KEYRING)),
147
+ __param(1, Optional()),
148
+ __param(1, Inject(EMBED_TOKEN_CLOCK))
149
+ ], EmbedTokens);
150
+ export { EmbedTokens };
130
151
  function mac(key, payload) {
131
152
  return createHmac("sha256", key).update(`${EMBED_KEY_INFO}.${payload}`).digest();
132
153
  }
154
+ /** {@link EmbedTokens} on its own: the extension host (`ctx`) and the UI routes import it. */
155
+ let EmbedTokensModule = class EmbedTokensModule {
156
+ };
157
+ EmbedTokensModule = __decorate([
158
+ Module({ providers: [EmbedTokens], exports: [EmbedTokens] })
159
+ ], EmbedTokensModule);
160
+ export { EmbedTokensModule };
@@ -1,37 +1,42 @@
1
1
  import type { Logger } from "@capybara-hq/plugin-sdk";
2
- import type { KernelConfig } from "../config/schema.js";
3
- import type { KernelDb } from "../db/kernel-schema.js";
4
2
  import type { CredentialCheck } from "../identity/credential-check.js";
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
5
6
  import { type OrgRole } from "../orgs/roles.js";
6
- import type { SseOutput, StreamBus, StreamHandle } from "../runtime/stream.js";
7
- export interface OrgUiStreamsDeps {
8
- bus: StreamBus;
9
- /**
10
- * 调用者此刻的组织角色(组织未删除、账号 active、仍有成员关系,否则 undefined):
11
- * 连接建立时与每 `sseRecheckMs` 复核一次;组织级刷新只服务组织页面,要 member 以上(A38)。
12
- */
13
- memberRole(orgId: string, accountId: string): Promise<OrgRole | undefined>;
14
- config: () => KernelConfig;
15
- log: Pick<Logger, "warn">;
16
- }
7
+ import { type SseOutput, type StreamBus, type StreamHandle } from "../runtime/stream.js";
17
8
  export interface OrgUiStreamParams {
18
9
  orgId: string;
19
10
  viewerAccountId: string;
20
11
  credential: CredentialCheck;
21
12
  }
22
- /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
23
- export declare function orgMembership(db: KernelDb): OrgUiStreamsDeps["memberRole"];
13
+ /** The org role the org UI stream re-checks. */
14
+ export declare class UiStreamMembership {
15
+ private readonly db;
16
+ constructor(db: KernelDb);
17
+ /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
18
+ role(orgId: string, accountId: string): Promise<OrgRole | undefined>;
19
+ }
24
20
  /**
25
21
  * 组织级界面刷新流(SSE):订阅内核主题 `org-ui.<orgId>`,把插件 `ctx.ui.invalidate`(不带对话)的刷新
26
22
  * 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
27
23
  * (订阅、心跳与复核定时器),停机时一并关闭。
28
24
  */
29
25
  export declare class OrgUiStreams {
30
- private readonly d;
31
26
  private readonly active;
32
- constructor(d: OrgUiStreamsDeps);
27
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
28
+ private closing;
29
+ private readonly d;
30
+ /**
31
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
32
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
33
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
34
+ * streams end with their connections.
35
+ */
36
+ constructor(bus: StreamBus, membership: Pick<UiStreamMembership, "role">, config: Pick<KernelConfigService, "get">, log: Pick<Logger, "warn">, shutdown?: Pick<GracefulShutdown, "signal">);
33
37
  /** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
34
38
  open(p: OrgUiStreamParams, out: SseOutput): Promise<StreamHandle>;
39
+ /** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
35
40
  closeAll(): void;
36
41
  get size(): number;
37
42
  }
@@ -1,10 +1,30 @@
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, Optional } from "@nestjs/common";
1
11
  import { ApiError } from "../errors.js";
12
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
13
+ import { KernelDb } from "../infra/database/kernel-db.js";
14
+ import { GracefulShutdown } from "../infra/lifecycle/graceful-shutdown.service.js";
15
+ import { KERNEL_BUS, KERNEL_LOGGER } from "../infra/tokens.js";
2
16
  import { roleAtLeast } from "../orgs/roles.js";
17
+ import { endedStream, } from "../runtime/stream.js";
3
18
  import { isUiBusMessage, orgUiTopic, PAGE_MIN_ROLE, uiFrame } from "./registry.js";
4
- /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
5
- export function orgMembership(db) {
6
- return async (orgId, accountId) => {
7
- const row = await db
19
+ /** The org role the org UI stream re-checks. */
20
+ let UiStreamMembership = class UiStreamMembership {
21
+ db;
22
+ constructor(db) {
23
+ this.db = db;
24
+ }
25
+ /** 组织成员角色(一条查询):组织未删除、账号 active、仍有成员关系。 */
26
+ async role(orgId, accountId) {
27
+ const row = await this.db
8
28
  .selectFrom("memberships")
9
29
  .innerJoin("orgs", "orgs.id", "memberships.org_id")
10
30
  .innerJoin("accounts", "accounts.id", "memberships.account_id")
@@ -15,8 +35,13 @@ export function orgMembership(db) {
15
35
  .where("accounts.status", "=", "active")
16
36
  .executeTakeFirst();
17
37
  return row?.role;
18
- };
19
- }
38
+ }
39
+ };
40
+ UiStreamMembership = __decorate([
41
+ Injectable(),
42
+ __param(0, Inject(KernelDb))
43
+ ], UiStreamMembership);
44
+ export { UiStreamMembership };
20
45
  async function authorize(d, p) {
21
46
  const denied = await p.credential();
22
47
  if (denied !== null)
@@ -33,17 +58,36 @@ const MAX_BACKLOG_BYTES = 1024 * 1024;
33
58
  * 转发为 `event: ui`(`data: {"plugin","contribution"}`)。跨副本只经 Redis bus;进程内只持有连接本身的资源
34
59
  * (订阅、心跳与复核定时器),停机时一并关闭。
35
60
  */
36
- export class OrgUiStreams {
37
- d;
61
+ let OrgUiStreams = class OrgUiStreams {
38
62
  active = new Set();
39
- constructor(d) {
40
- this.d = d;
63
+ /** Set by {@link closeAll}: streams opened afterwards end as soon as they begin. */
64
+ closing = false;
65
+ d;
66
+ /**
67
+ * Closes the streams when the shutdown begins (readiness answers 503 from that moment) and
68
+ * latches: streams opened afterwards end at once, so the HTTP phase of the stop never waits on
69
+ * an event stream. Without `GracefulShutdown` (a standalone HTTP application, tests only) the
70
+ * streams end with their connections.
71
+ */
72
+ constructor(bus, membership, config, log, shutdown) {
73
+ this.d = {
74
+ bus,
75
+ memberRole: (orgId, accountId) => membership.role(orgId, accountId),
76
+ config,
77
+ log,
78
+ };
79
+ if (shutdown?.signal.aborted)
80
+ this.closeAll();
81
+ else
82
+ shutdown?.signal.addEventListener("abort", () => this.closeAll(), { once: true });
41
83
  }
42
84
  /** 复核凭据与成员关系并订阅;失败时尚未写响应,调用方按普通错误返回。 */
43
85
  async open(p, out) {
44
86
  const denied = await authorize(this.d, p);
45
87
  if (denied !== null)
46
88
  throw new ApiError(denied, "Access denied");
89
+ if (this.closing)
90
+ return endedStream(out);
47
91
  const conn = new OrgUiConnection(this.d, p, out, () => this.active.delete(conn));
48
92
  this.active.add(conn);
49
93
  try {
@@ -53,16 +97,32 @@ export class OrgUiStreams {
53
97
  conn.close();
54
98
  throw e;
55
99
  }
100
+ if (this.closing) {
101
+ conn.close();
102
+ return endedStream(out);
103
+ }
56
104
  return conn;
57
105
  }
106
+ /** Closes every stream of this process (at shutdown) and latches, like `ConversationStreams`. */
58
107
  closeAll() {
108
+ this.closing = true;
59
109
  for (const c of [...this.active])
60
110
  c.close();
61
111
  }
62
112
  get size() {
63
113
  return this.active.size;
64
114
  }
65
- }
115
+ };
116
+ OrgUiStreams = __decorate([
117
+ Injectable(),
118
+ __param(0, Inject(KERNEL_BUS)),
119
+ __param(1, Inject(UiStreamMembership)),
120
+ __param(2, Inject(KernelConfigService)),
121
+ __param(3, Inject(KERNEL_LOGGER)),
122
+ __param(4, Optional()),
123
+ __param(4, Inject(GracefulShutdown))
124
+ ], OrgUiStreams);
125
+ export { OrgUiStreams };
66
126
  class OrgUiConnection {
67
127
  d;
68
128
  p;
@@ -94,7 +154,7 @@ class OrgUiConnection {
94
154
  if (this.closed)
95
155
  return;
96
156
  this.begun = true;
97
- const { sseHeartbeatMs, sseRecheckMs } = this.d.config().runtime;
157
+ const { sseHeartbeatMs, sseRecheckMs } = this.d.config.get().runtime;
98
158
  this.timers.push(setInterval(() => this.write(": ping\n\n"), sseHeartbeatMs), setInterval(() => void this.recheck(), sseRecheckMs));
99
159
  }
100
160
  close(mode = "end") {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
3
+ * ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
4
+ * provider) and the org UI refresh stream.
5
+ */
6
+ export declare class UiModule {
7
+ }
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Module } from "@nestjs/common";
8
+ import { ConversationsModule } from "../conversations/conversations.module.js";
9
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
10
+ import { FilesModule } from "../files/files.module.js";
11
+ import { EmbedTokensModule } from "./embed-token.js";
12
+ import { OrgUiStreams, UiStreamMembership } from "./ui-stream.js";
13
+ import { UiViews } from "./views.js";
14
+ /**
15
+ * Extension UI on the kernel side: the views and actions (`ctx.ui`), the embed tokens
16
+ * ({@link EmbedTokensModule}, re-exported; the extension host verifies them with the same
17
+ * provider) and the org UI refresh stream.
18
+ */
19
+ let UiModule = class UiModule {
20
+ };
21
+ UiModule = __decorate([
22
+ Module({
23
+ imports: [ExtensionsModule, ConversationsModule, FilesModule, EmbedTokensModule],
24
+ providers: [UiViews, UiStreamMembership, OrgUiStreams],
25
+ exports: [UiViews, OrgUiStreams, EmbedTokensModule],
26
+ })
27
+ ], UiModule);
28
+ export { UiModule };
@@ -1,14 +1,18 @@
1
1
  import { type UiActionResult, type UiView } from "@capybara-hq/plugin-sdk";
2
- import { type OnModuleDestroy } from "@nestjs/common";
3
2
  import type { FastifyReply, FastifyRequest } from "fastify";
4
3
  import { z } from "zod";
5
- import type { ApiTokenService } from "../identity/api-tokens.js";
4
+ import { ApiTokenService } from "../identity/api-tokens.js";
6
5
  import { type Principal } from "../identity/principal.js";
7
- import type { SessionService } from "../identity/sessions.js";
6
+ import { SessionService } from "../identity/sessions.js";
8
7
  import { type OrgContext } from "../orgs/org.guard.js";
9
- import { type EmbedTokens } from "./embed-token.js";
10
- import type { OrgUiStreams } from "./ui-stream.js";
11
- import type { UiContributionItem, UiViews } from "./views.js";
8
+ import { EmbedTokens } from "./embed-token.js";
9
+ import { OrgUiStreams } from "./ui-stream.js";
10
+ import { type UiContributionItem, UiViews } from "./views.js";
11
+ /** The contribution named in a view / action / embed path (`:plugin/:id`). */
12
+ declare const ContributionParams: z.ZodObject<{
13
+ plugin: z.ZodString;
14
+ id: z.ZodString;
15
+ }, z.core.$strip>;
12
16
  declare const ViewQuery: z.ZodObject<{
13
17
  conversationId: z.ZodOptional<z.ZodString>;
14
18
  locale: z.ZodDefault<z.ZodEnum<{
@@ -53,7 +57,7 @@ declare const EmbedTokenBody: z.ZodDefault<z.ZodObject<{
53
57
  * 角色(A38):组织页面(`place: "page"`,含组织级刷新流)只给 member 以上,guest 一律 404 `ui.not_found`、
54
58
  * 列表里也不出现;对话位置的贡献给能访问该对话的任何成员。插件收到的 `role` 来自 OrgGuard 查出的成员关系。
55
59
  */
56
- export declare class UiController implements OnModuleDestroy {
60
+ export declare class UiController {
57
61
  private readonly views;
58
62
  private readonly streams;
59
63
  private readonly sessions;
@@ -63,11 +67,11 @@ export declare class UiController implements OnModuleDestroy {
63
67
  contributions(principal: Principal, org: OrgContext): Promise<{
64
68
  items: UiContributionItem[];
65
69
  }>;
66
- view(principal: Principal, org: OrgContext, plugin: string, id: string, q: z.infer<typeof ViewQuery>): Promise<{
70
+ view(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, q: z.infer<typeof ViewQuery>): Promise<{
67
71
  view: UiView;
68
72
  }>;
69
- action(principal: Principal, org: OrgContext, plugin: string, id: string, body: z.infer<typeof ActionBody>): Promise<UiActionResult>;
70
- embedToken(principal: Principal, org: OrgContext, plugin: string, id: string, body: z.infer<typeof EmbedTokenBody>): Promise<{
73
+ action(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof ActionBody>): Promise<UiActionResult>;
74
+ embedToken(principal: Principal, org: OrgContext, { plugin, id }: z.infer<typeof ContributionParams>, body: z.infer<typeof EmbedTokenBody>): Promise<{
71
75
  token: string;
72
76
  src: string;
73
77
  expiresAt: string;
@@ -75,7 +79,5 @@ export declare class UiController implements OnModuleDestroy {
75
79
  }>;
76
80
  /** 组织级刷新流:与会话流一样用 `reply.hijack()` 直接写原始响应;心跳与复核间隔同 `runtime.sse*`。 */
77
81
  stream(principal: Principal, org: OrgContext, req: FastifyRequest, reply: FastifyReply): Promise<void>;
78
- /** 停机:关闭本进程的全部组织刷新流。 */
79
- onModuleDestroy(): void;
80
82
  }
81
83
  export {};
@@ -8,17 +8,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { UI_LIMITS } from "@capybara-hq/plugin-sdk";
11
- import { Body, Controller, Get, HttpCode, Inject, Param, Post, Query, Req, Res, } from "@nestjs/common";
11
+ import { Controller, Get, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
12
12
  import { z } from "zod";
13
- import { API_TOKENS, EMBED_TOKENS, ORG_UI_STREAMS, SESSIONS, UI_VIEWS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
13
+ import { ApiTokenService } from "../identity/api-tokens.js";
15
14
  import { credentialCheck } from "../identity/credential-check.js";
16
15
  import { CurrentPrincipal, requireUser } from "../identity/principal.js";
16
+ import { SessionService } from "../identity/sessions.js";
17
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
18
+ import { ZBody, ZParam, ZQuery } from "../infra/validation/zod-params.js";
17
19
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
18
- import { EMBED_TOKEN_TTL_SECONDS } from "./embed-token.js";
20
+ import { EMBED_TOKEN_TTL_SECONDS, EmbedTokens } from "./embed-token.js";
21
+ import { OrgUiStreams } from "./ui-stream.js";
22
+ import { UiViews } from "./views.js";
19
23
  const BEARER_RE = /^Bearer\s+(\S+)$/i;
20
24
  const Locale = z.enum(["zh", "en"]).default("en");
21
25
  const Id = z.string().min(1).max(100);
26
+ /** The contribution named in a view / action / embed path (`:plugin/:id`). */
27
+ const ContributionParams = z.object({ plugin: Id, id: Id });
22
28
  const ViewQuery = z
23
29
  .object({
24
30
  conversationId: z.string().min(1).max(100).optional(),
@@ -65,6 +71,14 @@ const EmbedTokenBody = z
65
71
  .default({});
66
72
  /** 嵌入页的同源代理前缀(网页 `/plugin-ui/<plugin>/<rest>` → 内核 `/plugins/<plugin>/ui/<rest>`)。 */
67
73
  const embedSrc = (plugin, path) => `/plugin-ui/${plugin}/${path.replace(/^\/ui\//, "")}`;
74
+ class UiContributionParamsDto extends createZodDto(ContributionParams, "UiContributionParams") {
75
+ }
76
+ class UiViewQueryDto extends createZodDto(ViewQuery, "UiViewQuery") {
77
+ }
78
+ class UiActionBodyDto extends createZodDto(ActionBody, "UiActionBody") {
79
+ }
80
+ class UiEmbedTokenBodyDto extends createZodDto(EmbedTokenBody, "UiEmbedTokenBody") {
81
+ }
68
82
  /**
69
83
  * 插件界面(第一档:渲染 schema;第二档:嵌入应用),会话鉴权、`ui.use`(只给人用,服务令牌 403):
70
84
  * - `GET /api/v1/orgs/:orgId/ui/contributions` → `{ items: { plugin, id, title, place, legacyPlace?, kind, path?, icon }[] }`
@@ -102,7 +116,7 @@ let UiController = class UiController {
102
116
  requireUser(principal);
103
117
  return { items: await this.views.contributions(org.orgId, org.role) };
104
118
  }
105
- async view(principal, org, plugin, id, q) {
119
+ async view(principal, org, { plugin, id }, q) {
106
120
  const p = requireUser(principal);
107
121
  const view = await this.views.render({
108
122
  orgId: org.orgId,
@@ -119,7 +133,7 @@ let UiController = class UiController {
119
133
  });
120
134
  return { view };
121
135
  }
122
- async action(principal, org, plugin, id, body) {
136
+ async action(principal, org, { plugin, id }, body) {
123
137
  const p = requireUser(principal);
124
138
  return this.views.act({
125
139
  orgId: org.orgId,
@@ -135,7 +149,7 @@ let UiController = class UiController {
135
149
  ...(body.answer !== undefined && { answer: body.answer }),
136
150
  });
137
151
  }
138
- async embedToken(principal, org, plugin, id, body) {
152
+ async embedToken(principal, org, { plugin, id }, body) {
139
153
  const p = requireUser(principal);
140
154
  const target = await this.views.embed({
141
155
  orgId: org.orgId,
@@ -202,10 +216,6 @@ let UiController = class UiController {
202
216
  res.flushHeaders();
203
217
  handle.begin();
204
218
  }
205
- /** 停机:关闭本进程的全部组织刷新流。 */
206
- onModuleDestroy() {
207
- this.streams.closeAll();
208
- }
209
219
  };
210
220
  __decorate([
211
221
  Get("contributions"),
@@ -218,9 +228,8 @@ __decorate([
218
228
  OrgAction("ui.use"),
219
229
  __param(0, CurrentPrincipal()),
220
230
  __param(1, CurrentOrg()),
221
- __param(2, Param("plugin", new ZodPipe(Id))),
222
- __param(3, Param("id", new ZodPipe(Id))),
223
- __param(4, Query(new ZodPipe(ViewQuery)))
231
+ __param(2, ZParam(UiContributionParamsDto)),
232
+ __param(3, ZQuery(UiViewQueryDto))
224
233
  ], UiController.prototype, "view", null);
225
234
  __decorate([
226
235
  Post("actions/:plugin/:id"),
@@ -228,9 +237,8 @@ __decorate([
228
237
  OrgAction("ui.use"),
229
238
  __param(0, CurrentPrincipal()),
230
239
  __param(1, CurrentOrg()),
231
- __param(2, Param("plugin", new ZodPipe(Id))),
232
- __param(3, Param("id", new ZodPipe(Id))),
233
- __param(4, Body(new ZodPipe(ActionBody)))
240
+ __param(2, ZParam(UiContributionParamsDto)),
241
+ __param(3, ZBody(UiActionBodyDto))
234
242
  ], UiController.prototype, "action", null);
235
243
  __decorate([
236
244
  Post("embeds/:plugin/:id/token"),
@@ -238,9 +246,8 @@ __decorate([
238
246
  OrgAction("ui.use"),
239
247
  __param(0, CurrentPrincipal()),
240
248
  __param(1, CurrentOrg()),
241
- __param(2, Param("plugin", new ZodPipe(Id))),
242
- __param(3, Param("id", new ZodPipe(Id))),
243
- __param(4, Body(new ZodPipe(EmbedTokenBody)))
249
+ __param(2, ZParam(UiContributionParamsDto)),
250
+ __param(3, ZBody(UiEmbedTokenBodyDto))
244
251
  ], UiController.prototype, "embedToken", null);
245
252
  __decorate([
246
253
  Get("stream"),
@@ -252,10 +259,10 @@ __decorate([
252
259
  ], UiController.prototype, "stream", null);
253
260
  UiController = __decorate([
254
261
  Controller("api/v1/orgs/:orgId/ui"),
255
- __param(0, Inject(UI_VIEWS)),
256
- __param(1, Inject(ORG_UI_STREAMS)),
257
- __param(2, Inject(SESSIONS)),
258
- __param(3, Inject(API_TOKENS)),
259
- __param(4, Inject(EMBED_TOKENS))
262
+ __param(0, Inject(UiViews)),
263
+ __param(1, Inject(OrgUiStreams)),
264
+ __param(2, Inject(SessionService)),
265
+ __param(3, Inject(ApiTokenService)),
266
+ __param(4, Inject(EmbedTokens))
260
267
  ], UiController);
261
268
  export { UiController };
@@ -1,7 +1,11 @@
1
1
  import { type FormAnswer, type Logger, type UiActionResult, type UiContribution, type UiIcon, type UiView } from "@capybara-hq/plugin-sdk";
2
- import type { KernelDb } from "../db/kernel-schema.js";
3
- import type { ExtensionHost } from "../extensions/host.js";
2
+ import { ConversationsService } from "../conversations/conversations.service.js";
3
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ import { ExtensionHost } from "../extensions/host.js";
5
+ import { PreviewerRegistry } from "../files/previewers.js";
6
+ import { KernelDb } from "../infra/database/kernel-db.js";
4
7
  import type { OrgRole } from "../orgs/roles.js";
8
+ export { callExtension } from "./call-extension.js";
5
9
  /** 插件 render / action 的时限(spec §4.2:慢的插件只让那个标签失败)。 */
6
10
  export declare const UI_CALL_TIMEOUT_MS = 5000;
7
11
  /** 列出贡献接口的一项。 */
@@ -29,42 +33,6 @@ export interface UiEmbedTarget {
29
33
  /** Only a `file-preview` embed: the one file the token is for. */
30
34
  fileId?: string;
31
35
  }
32
- export interface UiViewsDeps {
33
- host: Pick<ExtensionHost, "uiContributions">;
34
- /** Names of the extensions enabled in the organization (`extension_org_configs.enabled` plus required bootstrap plugins, `enabled.ts`), queried every time, not cached. */
35
- enabledPlugins(orgId: string): Promise<Set<string>>;
36
- /** 调用者能否访问这个对话(与会话 SSE 流同一判定)。 */
37
- canAccessConversation(orgId: string, conversationId: string, accountId: string): Promise<boolean>;
38
- /**
39
- * Throws unless the caller may write to the conversation: a sub-agent's is read-only (409
40
- * `conversation.read_only`, sub-agents spec §6.1). Checked before an action (final review m3).
41
- */
42
- checkWritable?(orgId: string, conversationId: string, accountId: string): Promise<void>;
43
- /**
44
- * A `file-preview` embed token: whether that extension's previewer with `embed: contribution`
45
- * takes this file of the conversation (the viewer must read it; not found throws 404).
46
- */
47
- previewEmbedAllowed?(t: {
48
- orgId: string;
49
- accountId: string;
50
- conversationId: string;
51
- fileId: string;
52
- plugin: string;
53
- contribution: string;
54
- }): Promise<boolean>;
55
- /**
56
- * The `card` a `tool_result` of this conversation recorded for `callId` (`ToolResult.card`), or
57
- * null. An inline card request is served only when it matches (the card is attested by the log).
58
- */
59
- recordedCard?(conversationId: string, callId: string): Promise<{
60
- plugin: string;
61
- view: string;
62
- key?: string;
63
- } | null>;
64
- log: Pick<Logger, "warn">;
65
- /** 默认 {@link UI_CALL_TIMEOUT_MS}(测试可调小)。 */
66
- timeoutMs?: number;
67
- }
68
36
  /** 取视图 / 执行动作的调用者与目标(身份来自内核鉴权)。 */
69
37
  export interface UiTarget {
70
38
  orgId: string;
@@ -87,7 +55,7 @@ export interface UiTarget {
87
55
  * The card a `tool_result` of the conversation recorded for `callId`, or null (the inline-card
88
56
  * attestation of {@link UiViewsDeps.recordedCard}). Scans one conversation's tool results.
89
57
  */
90
- export declare function recordedCard(db: KernelDb, conversationId: string, callId: string): Promise<{
58
+ export declare function recordedCard(db: KernelSchemaDb, conversationId: string, callId: string): Promise<{
91
59
  plugin: string;
92
60
  view: string;
93
61
  key?: string;
@@ -106,12 +74,11 @@ export declare function dropForeignOpens(view: UiView, panels: ReadonlySet<strin
106
74
  * - 调用带 5 秒时限与中止信号:render 抛错 502 `ui.render_failed`、action 抛错 502 `ui.action_failed`、
107
75
  * 超时 504 `ui.timeout`、返回非法视图 502
108
76
  * `ui.invalid_view`,都记告警日志、不写对话日志(这些不是模型可见的内容)。
109
- * 不依赖 Nest;不保存跨请求状态。
77
+ * 不保存跨请求状态。
110
78
  */
111
79
  export declare class UiViews {
112
80
  private readonly d;
113
- private readonly timeoutMs;
114
- constructor(d: UiViewsDeps);
81
+ constructor(host: ExtensionHost, conversations: ConversationsService, previewers: PreviewerRegistry, db: KernelDb, log: Pick<Logger, "warn">);
115
82
  /** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
116
83
  contributions(orgId: string, role: OrgRole): Promise<UiContributionItem[]>;
117
84
  /**
@@ -138,18 +105,3 @@ export declare class UiViews {
138
105
  /** 非法结果:记告警(列出前几条问题)并 502 `ui.invalid_view`。 */
139
106
  private check;
140
107
  }
141
- /**
142
- * Calls an extension with a time limit and an abort signal (plugin views, actions and file
143
- * previewers): over the limit the signal aborts and the call is 504 `ui.timeout`; a throw is
144
- * `failCode` (502) without echoing the extension's message. An `ApiError` thrown by `fn` passes.
145
- */
146
- export declare function callExtension<T>(o: {
147
- log: Pick<Logger, "warn">;
148
- plugin: string;
149
- what: string;
150
- fields: Record<string, unknown>;
151
- timeoutMs: number;
152
- failCode: "ui.render_failed" | "ui.action_failed";
153
- failMessage: string;
154
- fn: (signal: AbortSignal) => Promise<T>;
155
- }): Promise<T>;