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

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 (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -34,7 +34,7 @@ export declare function isFixedAsk(tool: ResolvedTool, visibility?: "private" |
34
34
  * - a sub-agent (template or general-purpose): `agentDef` is its frozen effective definition (the
35
35
  * parent's policies with the template's on top) and `ctx.agentId` is the parent's agent, so the
36
36
  * parent's current version still tightens it (sub-agents spec §5.3, §9); its "this conversation"
37
- * grants are the parent conversation's; an org agent sub-agent (§5.5): `ctx.agentId` is the
37
+ * grants are the root conversation's (agent map spec §7); an org agent sub-agent (§5.5): `ctx.agentId` is the
38
38
  * dispatched agent (its current version, its "always" grants) and the parent agent's current
39
39
  * policies apply on top ({@link parentAgentOverride});
40
40
  * - 授权表(`conversation_tool_grants` / `tool_grants`),`spec_hash` 与当前定义不一致视为无效(D8),
@@ -36,6 +36,17 @@ export function isFixedAsk(tool, visibility, skillWritePolicy) {
36
36
  return !(builtinOnly && visibility === "private" && skillWritePolicy !== "ask");
37
37
  }
38
38
  const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
39
+ /**
40
+ * An agent's tightening for a call: its policy on the tool key and, for a per-call key
41
+ * (`Platform:<operation>`), on that key, the stricter of the two (a policy can only tighten).
42
+ */
43
+ function overrideOf(policies, toolKey, policyKey) {
44
+ const own = asOverride(policies?.[toolKey]);
45
+ if (policyKey === toolKey)
46
+ return own;
47
+ const s = stricter(own ?? "allow", asOverride(policies?.[policyKey]));
48
+ return s === "allow" ? undefined : s;
49
+ }
39
50
  /**
40
51
  * 执行时的策略判定(spec 3.6 R5:在动作执行那一刻判定)。每次调用都实时读取:
41
52
  * - 沙箱工具(bash / write / edit / deliver)的组织设置 `sandboxToolPolicy`(为 ask 时组织默认至少 ask);
@@ -45,7 +56,7 @@ const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
45
56
  * - a sub-agent (template or general-purpose): `agentDef` is its frozen effective definition (the
46
57
  * parent's policies with the template's on top) and `ctx.agentId` is the parent's agent, so the
47
58
  * parent's current version still tightens it (sub-agents spec §5.3, §9); its "this conversation"
48
- * grants are the parent conversation's; an org agent sub-agent (§5.5): `ctx.agentId` is the
59
+ * grants are the root conversation's (agent map spec §7); an org agent sub-agent (§5.5): `ctx.agentId` is the
49
60
  * dispatched agent (its current version, its "always" grants) and the parent agent's current
50
61
  * policies apply on top ({@link parentAgentOverride});
51
62
  * - 授权表(`conversation_tool_grants` / `tool_grants`),`spec_hash` 与当前定义不一致视为无效(D8),
@@ -57,7 +68,11 @@ const asOverride = (v) => v === "ask" || v === "deny" ? v : undefined;
57
68
  */
58
69
  export function createDecidePolicy(db) {
59
70
  return async (tool, agentDef, ctx) => {
60
- let connectorDefault = tool.defaultPolicy;
71
+ // a per-call policy (Platform tool spec §6.2): its key replaces the tool key for policies,
72
+ // grants and approvals, and its policy replaces the tool's default
73
+ const call = ctx.callPolicy ?? null;
74
+ const policyKey = call?.key ?? tool.key;
75
+ let connectorDefault = call?.policy ?? tool.defaultPolicy;
61
76
  let connectorId = null;
62
77
  let hashCurrent = true;
63
78
  if (tool.source.kind === "connector") {
@@ -101,7 +116,7 @@ export function createDecidePolicy(db) {
101
116
  }
102
117
  }
103
118
  // 运行所用版本可能是加 toolPolicies 字段之前保存的:缺省为空
104
- const runOverride = asOverride(agentDef.toolPolicies?.[tool.key]);
119
+ const runOverride = overrideOf(agentDef.toolPolicies, tool.key, policyKey);
105
120
  const current = await db
106
121
  .selectFrom("agents")
107
122
  .innerJoin("agent_versions", (j) => j
@@ -115,10 +130,10 @@ export function createDecidePolicy(db) {
115
130
  ? undefined
116
131
  : await normalizeStoredDefinitionIn(db, ctx.orgId, current.definition);
117
132
  const currentPolicies = currentDef?.toolPolicies;
118
- const currentOverride = asOverride(currentPolicies?.[tool.key]);
133
+ const currentOverride = overrideOf(currentPolicies, tool.key, policyKey);
119
134
  let strictest = stricter(runOverride ?? "allow", currentOverride);
120
135
  if (ctx.parentConversationId !== undefined && ctx.parentAgentDiffers !== false) {
121
- strictest = stricter(strictest, await parentAgentOverride(db, tool.key, ctx));
136
+ strictest = stricter(strictest, await parentAgentOverride(db, tool.key, policyKey, ctx));
122
137
  }
123
138
  const agentOverride = strictest === "allow" ? undefined : strictest;
124
139
  let escalateTo = null;
@@ -137,7 +152,10 @@ export function createDecidePolicy(db) {
137
152
  // 可见性实时读(R5):共享 agent 的 SkillWrite 固定 ask,私有 agent 不问(见 R3_SHARED_AGENT_ONLY_TOOL_KEYS)
138
153
  // 当前版本的 skills.writePolicy 同样实时读(R5):运行中改为 ask,下一次调用即生效;固定 ask 时授权不放行
139
154
  const writePolicy = currentDef?.skills?.writePolicy;
140
- const fixedAsk = isFixedAsk(tool, current?.visibility, writePolicy);
155
+ // `remember: false` on a call that is not a plain allow (an org / platform operation, or a read
156
+ // an agent tightened to ask): every call asks, grants never apply. A read (`allow`) never asks.
157
+ const fixedAsk = isFixedAsk(tool, current?.visibility, writePolicy) ||
158
+ (call !== null && !call.remember && (call.policy !== "allow" || agentOverride !== undefined));
141
159
  const input = {
142
160
  connectorDefault,
143
161
  ...(agentOverride !== undefined && { agentOverride }),
@@ -148,7 +166,7 @@ export function createDecidePolicy(db) {
148
166
  if (pre === "deny")
149
167
  return "deny";
150
168
  if (pre === "ask" && !fixedAsk && escalateTo === null && hashCurrent) {
151
- input.grant = await findGrant(db, tool, connectorId, ctx);
169
+ input.grant = await findGrant(db, tool, policyKey, connectorId, ctx);
152
170
  }
153
171
  const result = decide(input);
154
172
  if (result === "allow" && escalateTo === null) {
@@ -156,7 +174,7 @@ export function createDecidePolicy(db) {
156
174
  return pre === "ask" && input.grant !== null ? { grant: input.grant } : "allow";
157
175
  }
158
176
  const ask = {
159
- toolKey: tool.key,
177
+ toolKey: policyKey,
160
178
  specHash: tool.specHash,
161
179
  connectorId,
162
180
  requestedFor: escalateTo === null ? ctx.accountId : null,
@@ -185,7 +203,7 @@ export function createDecidePolicy(db) {
185
203
  * policy for the same key applies on top, so the parent's owner can tighten a running child too.
186
204
  * For a template or general-purpose child the parent conversation has the same agent, already read.
187
205
  */
188
- async function parentAgentOverride(db, toolKey, ctx) {
206
+ async function parentAgentOverride(db, toolKey, policyKey, ctx) {
189
207
  const row = await db
190
208
  .selectFrom("conversations as c")
191
209
  .innerJoin("agents as a", "a.id", "c.agent_id")
@@ -198,21 +216,23 @@ async function parentAgentOverride(db, toolKey, ctx) {
198
216
  // stored raw: an rc version's keys read as current keys, so its deny keeps applying (§8.3)
199
217
  const policies = (await normalizeStoredDefinitionIn(db, ctx.orgId, row.definition))
200
218
  .toolPolicies;
201
- return asOverride(policies?.[toolKey]);
219
+ return overrideOf(policies, toolKey, policyKey);
202
220
  }
203
221
  /**
204
- * A grant matching the current definition hash and source connector: this conversation's first,
222
+ * A grant matching the current definition hash and source connector, keyed by the call's policy key
223
+ * (the tool key, or a per-call key such as `Platform:<operation>`): this conversation's first,
205
224
  * then "always". `connectorId` is the tool's source connector (null for plugin and builtin tools,
206
225
  * which match only grants without a connector). A sub-agent's "this conversation" grants live on
207
- * its parent conversation (sub-agents spec §9), so parallel children are approved once.
226
+ * the root conversation of its tree (agent map spec §7), so the root and every sub-agent at any
227
+ * depth are approved once.
208
228
  */
209
- async function findGrant(db, tool, connectorId, ctx) {
229
+ async function findGrant(db, tool, policyKey, connectorId, ctx) {
210
230
  const sameConnector = sql `connector_id IS NOT DISTINCT FROM ${connectorId}`;
211
231
  const session = await db
212
232
  .selectFrom("conversation_tool_grants")
213
233
  .select("spec_hash")
214
- .where("conversation_id", "=", ctx.parentConversationId ?? ctx.conversationId)
215
- .where("tool_key", "=", tool.key)
234
+ .where("conversation_id", "=", ctx.rootConversationId ?? ctx.conversationId)
235
+ .where("tool_key", "=", policyKey)
216
236
  .where(sameConnector)
217
237
  .executeTakeFirst();
218
238
  if (session?.spec_hash === tool.specHash)
@@ -223,7 +243,7 @@ async function findGrant(db, tool, connectorId, ctx) {
223
243
  .where("org_id", "=", ctx.orgId)
224
244
  .where("account_id", "=", ctx.accountId)
225
245
  .where("agent_id", "=", ctx.agentId)
226
- .where("tool_key", "=", tool.key)
246
+ .where("tool_key", "=", policyKey)
227
247
  .where(sameConnector)
228
248
  .executeTakeFirst();
229
249
  return always?.spec_hash === tool.specHash ? "always" : null;
@@ -1,12 +1,15 @@
1
- import type { Connector, InputRequired, ToolAnnotations, ToolCallContext, ToolResult, ToolSpec } from "@capybara-hq/plugin-sdk";
1
+ import type { Connector, HookParentScope, InputRequired, ToolAnnotations, ToolCallContext, ToolResult, ToolSpec } from "@capybara-hq/plugin-sdk";
2
2
  import type { AgentDefinition } from "../agents/definition.js";
3
3
  import type { ToolView } from "../conversations/events.js";
4
+ import { EffectiveConfigs } from "../extensions/effective-config.js";
4
5
  import { ExtensionHost } from "../extensions/host.js";
5
6
  import { ExtensionRegistry } from "../extensions/registry.js";
6
7
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
7
8
  import { KernelDb } from "../infra/database/kernel-db.js";
8
9
  import type { OrgRole } from "../orgs/roles.js";
10
+ import type { ConversationKindForHooks } from "../runtime/hook-calls.js";
9
11
  import { BuiltinTools } from "./builtins/builtin-tools.js";
12
+ import { OrgToolSwitches } from "./org-tool-switches.js";
10
13
  export { BUILTIN_TOOL_NAMES } from "./builtin-names.js";
11
14
  export { canonicalJson } from "./canonical-json.js";
12
15
  /** 保存 agent 时引用校验的问题(`path` 为 `tools.<i>`)。 */
@@ -28,10 +31,28 @@ export interface BuiltinCallContext extends ToolCallContext {
28
31
  */
29
32
  runDeadline?: number;
30
33
  /**
31
- * The conversation whose sandbox this call uses (sub-agents spec §10.1): the parent conversation
32
- * for a sub-agent's call, the conversation itself otherwise (the default when absent).
34
+ * The conversation whose sandbox this call uses (sub-agents spec §10.1, agent map spec §6): the
35
+ * root conversation for a sub-agent's call at any depth, the conversation itself otherwise (the
36
+ * default when absent).
33
37
  */
34
38
  sandboxConversationId?: string;
39
+ /** The parent run of a sub-agent's run (absent for a top-level run). */
40
+ parentRunId?: string;
41
+ /**
42
+ * A sub-agent's run: the tree's budget window of this run (`SubagentParent.budgetRunId`), which
43
+ * a builtin's own model call (the `WebFetch` extraction) counts its tokens on.
44
+ */
45
+ budgetRunId?: string;
46
+ /**
47
+ * The rest of the run's hook scope, for a builtin that makes a model call of its own (the
48
+ * `WebFetch` extraction fires `model.request` / `model.response`): the step of the call, the
49
+ * agent version of the run, the conversation kind (hooks fire for `chat` and `subagent` only)
50
+ * and, for a sub-agent, where it was dispatched from.
51
+ */
52
+ step?: number;
53
+ agentVersion?: number;
54
+ conversationKind?: ConversationKindForHooks;
55
+ parent?: HookParentScope;
35
56
  }
36
57
  /**
37
58
  * 内置工具的结果:`ToolResult` 之外可带 `loadedTools`(`ToolSearch` 加载的工具 key,
@@ -58,8 +79,58 @@ export interface BuiltinTool {
58
79
  timeoutMs?: (input: unknown) => number;
59
80
  /** 结果转存阈值(字符):与 `tools.outputSpillChars` 取小者。缺省只用配置。 */
60
81
  spillChars?: number;
61
- /** 本部署当前不可用时返回事实原因(英文、可执行,进「工具不可用」提醒);可用返回 null。 */
62
- unavailable?: () => string | null;
82
+ /**
83
+ * The factual reason this tool is unavailable for the org right now (English, actionable; it goes
84
+ * into the "tool unavailable" reminder), or null when it is available. May be async (e.g. a
85
+ * per-org extension-point default).
86
+ */
87
+ unavailable?: (ctx: {
88
+ orgId: string;
89
+ }) => Promise<string | null> | string | null;
90
+ /**
91
+ * A policy key derived from the validated input (Platform tool spec §6.2), or null to use the
92
+ * tool key. With a key, agent and parent policies, grants and approvals are keyed by it (an
93
+ * agent's policy on the tool key still applies on top); the model-visible key stays the tool key.
94
+ * May be async (the `Platform` tool reads the actor's facts); it never throws for bad input:
95
+ * an input that cannot run is a `deny` with a `denyReason`.
96
+ */
97
+ callPolicy?: CallPolicyFn;
98
+ }
99
+ /** Where a call happens, for {@link BuiltinTool.callPolicy}: the runtime's context, never input. */
100
+ export interface CallPolicyContext {
101
+ orgId: string;
102
+ /** The run's trigger account. */
103
+ accountId: string;
104
+ agentId: string;
105
+ conversationId: string;
106
+ /** Null outside a run (a builtin called directly). */
107
+ runId: string | null;
108
+ /**
109
+ * The call's input as the model sent it, before `{"$output": id}` references were resolved
110
+ * (the approval card shows this form). Absent outside the pipeline.
111
+ */
112
+ rawInput?: unknown;
113
+ }
114
+ /** {@link BuiltinTool.callPolicy}. */
115
+ export type CallPolicyFn = (input: unknown, ctx: CallPolicyContext) => CallPolicy | null | Promise<CallPolicy | null>;
116
+ /** What {@link BuiltinTool.callPolicy} returns for one call. */
117
+ export interface CallPolicy {
118
+ /** The policy key, e.g. `Platform:skills.create`. */
119
+ key: string;
120
+ /** The default for this call (it replaces the tool's `defaultPolicy`). */
121
+ policy: ToolPolicy;
122
+ /**
123
+ * False: always confirm, only "once": the approval offers only "once" and remembered grants
124
+ * never apply.
125
+ */
126
+ remember: boolean;
127
+ /** The bilingual summary shown on the approval (rendered by the kernel, never by the model). */
128
+ summary?: {
129
+ zh: string;
130
+ en: string;
131
+ };
132
+ /** With `policy: "deny"`: the actionable English reason returned as the tool error. */
133
+ denyReason?: string;
63
134
  }
64
135
  /**
65
136
  * agent 定义里对工具的引用(Task 6 在 `AgentDefinitionSchema` 中落地同形的 zod schema)。
@@ -110,6 +181,8 @@ export interface ResolvedTool {
110
181
  * (推给持有该角色的人)。M3 的内置与连接器工具都不设。
111
182
  */
112
183
  requiredRole?: OrgRole;
184
+ /** A builtin's per-call policy key (see {@link BuiltinTool.callPolicy}). */
185
+ callPolicy?: CallPolicyFn;
113
186
  }
114
187
  /** 不可用的引用:`ref` 尽量写成模型认识的工具 key(`mcp__docs__search`、`mcp__docs__*`),否则 `app:<id>`。 */
115
188
  export interface UnavailableTool {
@@ -155,9 +228,11 @@ export interface AgentTools {
155
228
  *
156
229
  * Availability:
157
230
  * - builtin: in `builtins`;
158
- * - extension tools: the extension is loaded and registered the tool, and this org enabled the
231
+ * - extension tools: the extension is loaded and registered the tool, this org enabled the
159
232
  * extension (`extension_org_configs.enabled`, spec 2.2 "installed at deployment level, enabled at
160
- * org level"; required bootstrap plugins are enabled in every org, `enabled.ts`);
233
+ * org level"; required bootstrap plugins are enabled in every org, `enabled.ts`), and the
234
+ * extension's effective config for the org is valid (layering spec A §6) and the org did not
235
+ * turn the tool off (§7);
161
236
  * - connector tools: the connector belongs to this org, is not deleted or disabled, the connector is
162
237
  * installed, the tool status is `enabled` and the key is valid.
163
238
  * `tools: "all"` takes only enabled tools; disabled / pending-review ones count as deliberately
@@ -172,6 +247,13 @@ export declare class ToolRegistry {
172
247
  /** The installed connectors (`connector@1`, from the extension registry). */
173
248
  private readonly extensions;
174
249
  private readonly builtinTools;
250
+ /**
251
+ * The extensions' effective config per org (layering spec A §6): an extension tool is
252
+ * unavailable in an org whose effective config is not valid.
253
+ */
254
+ private readonly effective;
255
+ /** The org's switches of single extension tools (layering spec A §7). */
256
+ private readonly switches;
175
257
  /**
176
258
  * `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
177
259
  * offered and the sub-agent limits are the schema defaults.
@@ -182,6 +264,13 @@ export declare class ToolRegistry {
182
264
  host: Pick<ExtensionHost, "tools" | "enabledPlugins">,
183
265
  /** The installed connectors (`connector@1`, from the extension registry). */
184
266
  extensions: Pick<ExtensionRegistry, "list">, builtinTools: Pick<BuiltinTools, "list">,
267
+ /**
268
+ * The extensions' effective config per org (layering spec A §6): an extension tool is
269
+ * unavailable in an org whose effective config is not valid.
270
+ */
271
+ effective: Pick<EffectiveConfigs, "get">,
272
+ /** The org's switches of single extension tools (layering spec A §7). */
273
+ switches: Pick<OrgToolSwitches, "offKeys">,
185
274
  /**
186
275
  * `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
187
276
  * offered and the sub-agent limits are the schema defaults.
@@ -210,6 +299,17 @@ export declare class ToolRegistry {
210
299
  }[];
211
300
  /** 已安装连接器的 kind 列表(去重,按加载顺序)。 */
212
301
  connectorKinds(): string[];
302
+ /**
303
+ * The connector kinds `orgId` can create connectors of: the `connector@1` implementations loaded
304
+ * on this replica whose extension is enabled in the org (the first implementation of a kind, as
305
+ * {@link findConnector} picks it), sorted by kind.
306
+ */
307
+ connectorKindsFor(orgId: string): Promise<{
308
+ kind: string;
309
+ plugin: string;
310
+ }[]>;
311
+ /** True when `kind` is one of {@link connectorKindsFor}: loaded here and enabled in the org. */
312
+ connectorKindAvailable(orgId: string, kind: string): Promise<boolean>;
213
313
  /**
214
314
  * 保存 agent 时校验工具引用(只看「存在」,停用 / 待复核 / 插件未启用等运行时状态不拒绝,由 `forAgent` 报不可用):
215
315
  * - 内置:名字在 {@link BUILTIN_TOOL_NAMES} 中;
@@ -234,17 +334,29 @@ export declare class ToolRegistry {
234
334
  skillLoad?: boolean;
235
335
  /** The definition's sub-agent roster source: the `Agent` tool's description lists it. */
236
336
  subagents?: AgentDefinition["subagents"];
337
+ /**
338
+ * The run is a sub-agent's (it has a parent): it gets `SendMessage` (to reach its parent)
339
+ * and `SubagentHandback` whatever its definition names (agent map spec §4.2, §4.3).
340
+ */
341
+ child?: boolean;
342
+ /**
343
+ * The run is a fork invocation's child (phase D): its final reply is the skill's report, so
344
+ * it reaches its parent with neither tool (`SendMessage` only to its own sub-agents).
345
+ */
346
+ forkChild?: boolean;
237
347
  }): Promise<AgentTools>;
238
348
  /** 是否启用 `ToolSearch`(见 {@link forAgent});先比阈值,超过才读组织设置。 */
239
349
  private searchActive;
240
350
  private resolve;
241
351
  /**
242
- * `subagents.maxConcurrentPerRun` with the organization's override, for the `Agent` tool's
352
+ * `subagents.maxConcurrentPerConversation` with the organization's override, for the `Agent` tool's
243
353
  * description (§4.3). A change of the limit changes the tool's spec hash; replays read the
244
354
  * definition logged by hash, so no drift reason is involved. Without config (some tests): the
245
355
  * schema default.
246
356
  */
247
357
  private maxConcurrentSubagents;
358
+ /** The extensions enabled in the org (`extensions/enabled.ts`, through the host). */
359
+ enabledExtensions(orgId: string): Promise<Set<string>>;
248
360
  /** Plugins the organization enabled (built-in plugins always count as enabled, C14). */
249
361
  private enabledPlugins;
250
362
  private loadConnectors;
@@ -10,6 +10,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
10
10
  import { createHash } from "node:crypto";
11
11
  import { connectorToolKey, extensionToolKey } from "@capybara-hq/plugin-sdk";
12
12
  import { Inject, Injectable } from "@nestjs/common";
13
+ import { EffectiveConfigs, NEEDS_CONFIG_REASON } from "../extensions/effective-config.js";
13
14
  import { ExtensionHost } from "../extensions/host.js";
14
15
  import { ExtensionRegistry } from "../extensions/registry.js";
15
16
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
@@ -18,12 +19,13 @@ import { readOrgSettings } from "../orgs/settings.service.js";
18
19
  import { estimateTokens } from "../runtime/context/tokens.js";
19
20
  import { SUBAGENT_LIMIT_DEFAULTS, subagentLimits } from "../runtime/subagents/limits.js";
20
21
  import { resolveRoster } from "../runtime/subagents/roster.js";
21
- import { AGENT_TOOL, BUILTIN_TOOL_NAMES, SKILL_LOAD, TOOL_SEARCH } from "./builtin-names.js";
22
+ import { AGENT_TOOL, BASH_COMPANION_TOOLS, BUILTIN, BUILTIN_TOOL_NAMES, SEND_MESSAGE, SKILL_LOAD, SUBAGENT_HANDBACK, SUBAGENT_MESSAGE_TOOLS, TOOL_SEARCH, } from "./builtin-names.js";
22
23
  import { agentToolSpec } from "./builtins/agent.js";
23
24
  import { BuiltinTools } from "./builtins/builtin-tools.js";
24
25
  import { canonicalJson } from "./canonical-json.js";
25
26
  import { legacyKeySaveText } from "./legacy-keys.js";
26
27
  import { toolKeyIssue } from "./naming.js";
28
+ import { OrgToolSwitches, toolTurnedOffReason } from "./org-tool-switches.js";
27
29
  export { BUILTIN_TOOL_NAMES } from "./builtin-names.js";
28
30
  export { canonicalJson } from "./canonical-json.js";
29
31
  /** The first 16 hex digits of sha256(canonicalJson(v)): a fingerprint independent of key order. */
@@ -71,6 +73,17 @@ const sourceId = (s) => s.kind === "builtin"
71
73
  : s.kind === "plugin"
72
74
  ? `plugin:${s.plugin}:${s.name}`
73
75
  : `connector:${s.connectorId}:${s.name}`;
76
+ /** A builtin as a resolved tool (with `spec`, which `Agent` builds per definition). */
77
+ const builtinTool = (b, spec) => ({
78
+ key: b.spec.name,
79
+ source: { kind: "builtin", name: b.spec.name },
80
+ spec,
81
+ specHash: specHash(spec),
82
+ defaultPolicy: b.defaultPolicy,
83
+ ...(b.timeoutMs !== undefined && { timeoutMs: b.timeoutMs }),
84
+ ...(b.spillChars !== undefined && { spillChars: b.spillChars }),
85
+ ...(b.callPolicy !== undefined && { callPolicy: b.callPolicy }),
86
+ });
74
87
  /**
75
88
  * Tool registry: resolves the references in an agent definition into the tools available for this
76
89
  * run. Not cached (reads PG and the host live every time), so changes take effect right away across
@@ -78,9 +91,11 @@ const sourceId = (s) => s.kind === "builtin"
78
91
  *
79
92
  * Availability:
80
93
  * - builtin: in `builtins`;
81
- * - extension tools: the extension is loaded and registered the tool, and this org enabled the
94
+ * - extension tools: the extension is loaded and registered the tool, this org enabled the
82
95
  * extension (`extension_org_configs.enabled`, spec 2.2 "installed at deployment level, enabled at
83
- * org level"; required bootstrap plugins are enabled in every org, `enabled.ts`);
96
+ * org level"; required bootstrap plugins are enabled in every org, `enabled.ts`), and the
97
+ * extension's effective config for the org is valid (layering spec A §6) and the org did not
98
+ * turn the tool off (§7);
84
99
  * - connector tools: the connector belongs to this org, is not deleted or disabled, the connector is
85
100
  * installed, the tool status is `enabled` and the key is valid.
86
101
  * `tools: "all"` takes only enabled tools; disabled / pending-review ones count as deliberately
@@ -93,12 +108,21 @@ let ToolRegistry = class ToolRegistry {
93
108
  host;
94
109
  extensions;
95
110
  builtinTools;
111
+ effective;
112
+ switches;
96
113
  config;
97
114
  constructor(db,
98
115
  /** Extension tools and the organization's enabled extensions. */
99
116
  host,
100
117
  /** The installed connectors (`connector@1`, from the extension registry). */
101
118
  extensions, builtinTools,
119
+ /**
120
+ * The extensions' effective config per org (layering spec A §6): an extension tool is
121
+ * unavailable in an org whose effective config is not valid.
122
+ */
123
+ effective,
124
+ /** The org's switches of single extension tools (layering spec A §7). */
125
+ switches,
102
126
  /**
103
127
  * `tools.searchThreshold*` and the sub-agent limits. Absent (some tests): `ToolSearch` is never
104
128
  * offered and the sub-agent limits are the schema defaults.
@@ -108,6 +132,8 @@ let ToolRegistry = class ToolRegistry {
108
132
  this.host = host;
109
133
  this.extensions = extensions;
110
134
  this.builtinTools = builtinTools;
135
+ this.effective = effective;
136
+ this.switches = switches;
111
137
  this.config = config;
112
138
  }
113
139
  /** The kernel's builtin tools (`ToolSearch` is added by {@link forAgent}, not by definitions). */
@@ -163,6 +189,29 @@ let ToolRegistry = class ToolRegistry {
163
189
  connectorKinds() {
164
190
  return [...new Set(this.extensions.list("connector").map((e) => e.impl.kind))];
165
191
  }
192
+ /**
193
+ * The connector kinds `orgId` can create connectors of: the `connector@1` implementations loaded
194
+ * on this replica whose extension is enabled in the org (the first implementation of a kind, as
195
+ * {@link findConnector} picks it), sorted by kind.
196
+ */
197
+ async connectorKindsFor(orgId) {
198
+ const enabled = await this.enabledPlugins(orgId);
199
+ const out = new Map();
200
+ for (const e of this.extensions.list("connector")) {
201
+ const kind = e.impl?.kind;
202
+ if (typeof kind !== "string" || out.has(kind))
203
+ continue;
204
+ out.set(kind, e.plugin);
205
+ }
206
+ return [...out]
207
+ .filter(([, plugin]) => enabled.has(plugin))
208
+ .map(([kind, plugin]) => ({ kind, plugin }))
209
+ .sort((a, b) => a.kind.localeCompare(b.kind));
210
+ }
211
+ /** True when `kind` is one of {@link connectorKindsFor}: loaded here and enabled in the org. */
212
+ async connectorKindAvailable(orgId, kind) {
213
+ return (await this.connectorKindsFor(orgId)).some((k) => k.kind === kind);
214
+ }
166
215
  /**
167
216
  * 保存 agent 时校验工具引用(只看「存在」,停用 / 待复核 / 插件未启用等运行时状态不拒绝,由 `forAgent` 报不可用):
168
217
  * - 内置:名字在 {@link BUILTIN_TOOL_NAMES} 中;
@@ -201,6 +250,11 @@ let ToolRegistry = class ToolRegistry {
201
250
  return;
202
251
  }
203
252
  claim(path, ref.name, `builtin:${ref.name}`);
253
+ // offered with Bash (see resolve), so their policies validate too
254
+ if (ref.name === BUILTIN.Bash) {
255
+ for (const c of BASH_COMPANION_TOOLS)
256
+ claim(path, c, `builtin:${c}`);
257
+ }
204
258
  }
205
259
  else if (ref.kind === "plugin") {
206
260
  const key = extensionToolKey(ref.plugin, ref.name);
@@ -245,6 +299,18 @@ let ToolRegistry = class ToolRegistry {
245
299
  */
246
300
  async forAgent(orgId, def) {
247
301
  const { tools, unavailable, hidden } = await this.resolve(orgId, def);
302
+ // `SendMessage` to an agent that has `Agent` (to reach its sub-agents) or a parent;
303
+ // `SubagentHandback` to a sub-agent only; a fork invocation's child reports by its reply
304
+ const toParent = def.child === true && def.forkChild !== true;
305
+ const messageTools = [
306
+ ...(toParent || tools.some((t) => t.key === AGENT_TOOL) ? [SEND_MESSAGE] : []),
307
+ ...(toParent ? [SUBAGENT_HANDBACK] : []),
308
+ ];
309
+ for (const name of messageTools) {
310
+ const b = this.builtins.find((x) => x.spec.name === name);
311
+ if (b)
312
+ tools.push(builtinTool(b, b.spec));
313
+ }
248
314
  const sl = def.skillLoad === true && this.builtins.find((x) => x.spec.name === SKILL_LOAD);
249
315
  if (sl) {
250
316
  tools.push({
@@ -299,24 +365,36 @@ let ToolRegistry = class ToolRegistry {
299
365
  });
300
366
  }
301
367
  };
302
- const enabledPlugins = def.tools.some((r) => r.kind === "plugin")
303
- ? await this.enabledPlugins(orgId)
304
- : new Set();
368
+ const [enabledPlugins, offKeys] = def.tools.some((r) => r.kind === "plugin")
369
+ ? await Promise.all([this.enabledPlugins(orgId), this.switches.offKeys(orgId)])
370
+ : [new Set(), new Set()];
305
371
  const connectorIds = [
306
372
  ...new Set(def.tools.flatMap((r) => (r.kind === "connector" ? [r.connectorId] : []))),
307
373
  ];
308
374
  const apps = await this.loadConnectors(orgId, connectorIds);
309
375
  const pluginTools = this.host.tools();
376
+ // one effective config read per extension and resolution, however many of its tools are named
377
+ const configured = new Map();
378
+ const configuredIn = (plugin) => {
379
+ let ok = configured.get(plugin);
380
+ if (!ok) {
381
+ ok = this.effective.get(orgId, plugin).then((e) => e.ok);
382
+ configured.set(plugin, ok);
383
+ }
384
+ return ok;
385
+ };
310
386
  for (const ref of def.tools) {
311
387
  if (ref.kind === "builtin") {
312
388
  if (ref.name === TOOL_SEARCH || ref.name === SKILL_LOAD)
313
389
  continue;
390
+ if (SUBAGENT_MESSAGE_TOOLS.has(ref.name))
391
+ continue;
314
392
  const b = this.builtins.find((x) => x.spec.name === ref.name);
315
393
  if (!b) {
316
394
  unavailable.push({ ref: ref.name, reason: "Built-in tool does not exist" });
317
395
  continue;
318
396
  }
319
- const why = b.unavailable?.() ?? null;
397
+ const why = (await b.unavailable?.({ orgId })) ?? null;
320
398
  if (why !== null) {
321
399
  unavailable.push({ ref: ref.name, reason: why });
322
400
  continue;
@@ -330,15 +408,15 @@ let ToolRegistry = class ToolRegistry {
330
408
  continue;
331
409
  spec = agentToolSpec(roster, await this.maxConcurrentSubagents(orgId));
332
410
  }
333
- add({
334
- key: b.spec.name,
335
- source: { kind: "builtin", name: b.spec.name },
336
- spec,
337
- specHash: specHash(spec),
338
- defaultPolicy: b.defaultPolicy,
339
- ...(b.timeoutMs !== undefined && { timeoutMs: b.timeoutMs }),
340
- ...(b.spillChars !== undefined && { spillChars: b.spillChars }),
341
- });
411
+ add(builtinTool(b, spec));
412
+ // `TaskOutput` and `TaskStop` come with an available `Bash` (background Bash spec §2)
413
+ if (b.spec.name === BUILTIN.Bash) {
414
+ for (const name of BASH_COMPANION_TOOLS) {
415
+ const c = this.builtins.find((x) => x.spec.name === name);
416
+ if (c && ((await c.unavailable?.({ orgId })) ?? null) === null)
417
+ add(builtinTool(c, c.spec));
418
+ }
419
+ }
342
420
  }
343
421
  else if (ref.kind === "plugin") {
344
422
  const key = extensionToolKey(ref.plugin, ref.name);
@@ -354,6 +432,15 @@ let ToolRegistry = class ToolRegistry {
354
432
  });
355
433
  continue;
356
434
  }
435
+ // the pipeline refuses such calls too (a resumed step), this keeps them from the model
436
+ if (offKeys.has(key)) {
437
+ unavailable.push({ ref: key, reason: toolTurnedOffReason(key) });
438
+ continue;
439
+ }
440
+ if (!(await configuredIn(ref.plugin))) {
441
+ unavailable.push({ ref: key, reason: `Plugin ${ref.plugin} ${NEEDS_CONFIG_REASON}` });
442
+ continue;
443
+ }
357
444
  const issue = toolKeyIssue(key);
358
445
  if (issue) {
359
446
  unavailable.push({ ref: key, reason: issue });
@@ -432,7 +519,7 @@ let ToolRegistry = class ToolRegistry {
432
519
  return { tools, unavailable, hidden };
433
520
  }
434
521
  /**
435
- * `subagents.maxConcurrentPerRun` with the organization's override, for the `Agent` tool's
522
+ * `subagents.maxConcurrentPerConversation` with the organization's override, for the `Agent` tool's
436
523
  * description (§4.3). A change of the limit changes the tool's spec hash; replays read the
437
524
  * definition logged by hash, so no drift reason is involved. Without config (some tests): the
438
525
  * schema default.
@@ -440,7 +527,11 @@ let ToolRegistry = class ToolRegistry {
440
527
  async maxConcurrentSubagents(orgId) {
441
528
  const cfg = this.config;
442
529
  const config = cfg ?? { get: () => ({ subagents: SUBAGENT_LIMIT_DEFAULTS }) };
443
- return (await subagentLimits(this.db.db, config, orgId)).maxConcurrentPerRun;
530
+ return (await subagentLimits(this.db.db, config, orgId)).maxConcurrentPerConversation;
531
+ }
532
+ /** The extensions enabled in the org (`extensions/enabled.ts`, through the host). */
533
+ async enabledExtensions(orgId) {
534
+ return this.host.enabledPlugins(orgId);
444
535
  }
445
536
  /** Plugins the organization enabled (built-in plugins always count as enabled, C14). */
446
537
  async enabledPlugins(orgId) {
@@ -504,6 +595,8 @@ ToolRegistry = __decorate([
504
595
  __param(1, Inject(ExtensionHost)),
505
596
  __param(2, Inject(ExtensionRegistry)),
506
597
  __param(3, Inject(BuiltinTools)),
507
- __param(4, Inject(KernelConfigService))
598
+ __param(4, Inject(EffectiveConfigs)),
599
+ __param(5, Inject(OrgToolSwitches)),
600
+ __param(6, Inject(KernelConfigService))
508
601
  ], ToolRegistry);
509
602
  export { ToolRegistry };