@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
@@ -0,0 +1,37 @@
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 { Controller, Get, Header, Inject } from "@nestjs/common";
11
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
12
+ import { OrgExtensionTools } from "./info.js";
13
+ /**
14
+ * `GET /api/v1/orgs/:orgId/tools/extensions` (`agents.use`) → `{ extensions }`: the tools of the
15
+ * extensions enabled in the org, grouped by extension, for the agent form's Tools section (it adds
16
+ * or removes `{kind:"plugin",plugin,name}` references). Display only; nothing here is model-visible.
17
+ */
18
+ let ExtensionToolsController = class ExtensionToolsController {
19
+ tools;
20
+ constructor(tools) {
21
+ this.tools = tools;
22
+ }
23
+ async extensions(org) {
24
+ return { extensions: await this.tools.list(org.orgId) };
25
+ }
26
+ };
27
+ __decorate([
28
+ Get("extensions"),
29
+ Header("cache-control", "private, no-store"),
30
+ OrgAction("agents.use"),
31
+ __param(0, CurrentOrg())
32
+ ], ExtensionToolsController.prototype, "extensions", null);
33
+ ExtensionToolsController = __decorate([
34
+ Controller("api/v1/orgs/:orgId/tools"),
35
+ __param(0, Inject(OrgExtensionTools))
36
+ ], ExtensionToolsController);
37
+ export { ExtensionToolsController };
@@ -1,7 +1,8 @@
1
- import { type LocalizedName } from "@capybara-hq/plugin-sdk";
1
+ import { type LocalizedName, type ToolAnnotations } from "@capybara-hq/plugin-sdk";
2
2
  import { ConversationAccess } from "../conversations/access.js";
3
3
  import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
4
  import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { OrgToolSwitches } from "./org-tool-switches.js";
5
6
  import { ToolRegistry } from "./registry.js";
6
7
  /**
7
8
  * Tool presentation metadata for the conversation page (UI refresh B, design spec §6.16.9): the
@@ -84,3 +85,43 @@ export declare class ConversationToolInfo {
84
85
  access: Pick<ConversationAccess, "isAccessible">);
85
86
  get(orgId: string, conversationId: string, viewerAccountId: string, keys: readonly string[]): Promise<ToolInfo[]>;
86
87
  }
88
+ /** One tool of {@link OrgExtensionTools}. Display only, for the agent form. */
89
+ export interface ExtensionToolOffer {
90
+ /** The tool's registered name (the `name` of a `{kind:"plugin"}` reference). */
91
+ name: string;
92
+ /** The model-visible key, `plugin__<plugin>__<name>` (the `toolPolicies` key). */
93
+ key: string;
94
+ /** The declared display title (`ToolSpec.title`), or null. */
95
+ title: string | null;
96
+ /** The first non-empty line of the tool's description (English, model-facing text). */
97
+ description: string;
98
+ annotations: ToolAnnotations;
99
+ /** The tool's default policy: its `defaultPolicy`, else derived from the annotations. */
100
+ defaultPolicy: "allow" | "ask";
101
+ /**
102
+ * The org turned this tool off (layering spec A §7): still listed, so the form shows it as
103
+ * unavailable in the agents that selected it.
104
+ */
105
+ switchedOff: boolean;
106
+ }
107
+ /** One extension of {@link OrgExtensionTools} with its tools, in registration order. */
108
+ export interface ExtensionToolsOffer {
109
+ plugin: string;
110
+ /** The plugin's catalog display name, else its name. */
111
+ displayName: LocalizedName;
112
+ tools: ExtensionToolOffer[];
113
+ }
114
+ /**
115
+ * `GET /orgs/:orgId/tools/extensions`: the tools an agent of this org can reference by
116
+ * `{kind:"plugin"}` and get at run time, grouped by extension: the extensions loaded on this
117
+ * replica and enabled in the org (`enabled.ts`, through the host), each with the tools it
118
+ * registered whose key is valid (`ToolRegistry.forAgent` reports the others unavailable); a tool
119
+ * the org turned off is listed with `switchedOff`.
120
+ */
121
+ export declare class OrgExtensionTools {
122
+ private readonly db;
123
+ private readonly registry;
124
+ private readonly switches;
125
+ constructor(db: KernelDb, registry: Pick<ToolRegistry, "extensionToolSpecs" | "enabledExtensions">, switches: Pick<OrgToolSwitches, "offKeys">);
126
+ list(orgId: string): Promise<ExtensionToolsOffer[]>;
127
+ }
@@ -16,7 +16,9 @@ import { UUID_RE } from "../ui/registry.js";
16
16
  import { BUILTIN_TOOL_KINDS, SANDBOX_TOOL_NAMES } from "./builtin-names.js";
17
17
  import { pluginDisplayNames } from "./display-names.js";
18
18
  import { isLegacyBuiltinKey, LEGACY_BUILTINS } from "./legacy-keys.js";
19
- import { ToolRegistry } from "./registry.js";
19
+ import { toolKeyIssue } from "./naming.js";
20
+ import { OrgToolSwitches } from "./org-tool-switches.js";
21
+ import { policyFromAnnotations, ToolRegistry } from "./registry.js";
20
22
  export { BUILTIN_TOOL_KINDS } from "./builtin-names.js";
21
23
  /** At most this many keys per request, each at most {@link TOOL_INFO_KEY_MAX} characters. */
22
24
  export const TOOL_INFO_MAX_KEYS = 100;
@@ -160,3 +162,64 @@ ConversationToolInfo = __decorate([
160
162
  __param(2, Inject(ConversationAccess))
161
163
  ], ConversationToolInfo);
162
164
  export { ConversationToolInfo };
165
+ /**
166
+ * `GET /orgs/:orgId/tools/extensions`: the tools an agent of this org can reference by
167
+ * `{kind:"plugin"}` and get at run time, grouped by extension: the extensions loaded on this
168
+ * replica and enabled in the org (`enabled.ts`, through the host), each with the tools it
169
+ * registered whose key is valid (`ToolRegistry.forAgent` reports the others unavailable); a tool
170
+ * the org turned off is listed with `switchedOff`.
171
+ */
172
+ let OrgExtensionTools = class OrgExtensionTools {
173
+ db;
174
+ registry;
175
+ switches;
176
+ constructor(db, registry, switches) {
177
+ this.db = db;
178
+ this.registry = registry;
179
+ this.switches = switches;
180
+ }
181
+ async list(orgId) {
182
+ const [enabled, off] = await Promise.all([
183
+ this.registry.enabledExtensions(orgId),
184
+ this.switches.offKeys(orgId),
185
+ ]);
186
+ const groups = new Map();
187
+ for (const t of this.registry.extensionToolSpecs()) {
188
+ if (!enabled.has(t.plugin))
189
+ continue;
190
+ const key = extensionToolKey(t.plugin, t.spec.name);
191
+ if (toolKeyIssue(key) !== null)
192
+ continue;
193
+ const tools = groups.get(t.plugin) ?? [];
194
+ if (tools.some((x) => x.name === t.spec.name))
195
+ continue;
196
+ tools.push({
197
+ name: t.spec.name,
198
+ key,
199
+ title: display(t.spec).title,
200
+ description: firstLine(t.spec.description),
201
+ annotations: { ...(t.spec.annotations ?? {}) },
202
+ defaultPolicy: t.spec.defaultPolicy ?? policyFromAnnotations(t.spec.annotations),
203
+ switchedOff: off.has(key),
204
+ });
205
+ groups.set(t.plugin, tools);
206
+ }
207
+ const names = await pluginDisplayNames(this.db.db, [...groups.keys()]);
208
+ return [...groups].map(([plugin, tools]) => ({
209
+ plugin,
210
+ displayName: names.get(plugin) ?? { zh: plugin, en: plugin },
211
+ tools,
212
+ }));
213
+ }
214
+ };
215
+ OrgExtensionTools = __decorate([
216
+ Injectable(),
217
+ __param(0, Inject(KernelDb)),
218
+ __param(1, Inject(ToolRegistry)),
219
+ __param(2, Inject(OrgToolSwitches))
220
+ ], OrgExtensionTools);
221
+ export { OrgExtensionTools };
222
+ const firstLine = (s) => (typeof s === "string" ? s : "")
223
+ .split("\n")
224
+ .map((l) => l.trim())
225
+ .find((l) => l !== "") ?? "";
@@ -6,7 +6,7 @@ export declare const OAUTH_STATE_TTL_SECONDS = 600;
6
6
  /** 浏览器绑定 Cookie:回调必须来自发起连接的同一个浏览器。 */
7
7
  export declare const OAUTH_BINDING_COOKIE = "cap_oauth";
8
8
  /** 回调失败、或连接时没给回跳页面时回到的网页(next-intl 会补语言前缀)。 */
9
- export declare const DEFAULT_RETURN_PATH = "/settings/connections";
9
+ export declare const DEFAULT_RETURN_PATH = "/account/connections";
10
10
  /** OAuth 连接器需要 `http.publicUrl`(回调地址);未配置 → 这条校验错误。 */
11
11
  export declare const publicUrlRequired: () => ApiError;
12
12
  export declare function callbackUrl(publicUrl: string): string;
@@ -8,7 +8,7 @@ export const OAUTH_STATE_TTL_SECONDS = 600;
8
8
  /** 浏览器绑定 Cookie:回调必须来自发起连接的同一个浏览器。 */
9
9
  export const OAUTH_BINDING_COOKIE = "cap_oauth";
10
10
  /** 回调失败、或连接时没给回跳页面时回到的网页(next-intl 会补语言前缀)。 */
11
- export const DEFAULT_RETURN_PATH = "/settings/connections";
11
+ export const DEFAULT_RETURN_PATH = "/account/connections";
12
12
  /** OAuth 连接器需要 `http.publicUrl`(回调地址);未配置 → 这条校验错误。 */
13
13
  export const publicUrlRequired = () => new ApiError("validation_failed", "Request validation failed", [
14
14
  {
@@ -0,0 +1,74 @@
1
+ import { ExtensionHost } from "../extensions/host.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
+ import { OrgLock } from "../orgs/org-lock.js";
5
+ /** One tool of an extension with its switch in the org. */
6
+ export interface OrgToolSwitch {
7
+ tool: string;
8
+ enabled: boolean;
9
+ }
10
+ /** An org agent whose current version selects the tool being switched off. */
11
+ export interface AffectedAgent {
12
+ id: string;
13
+ name: string;
14
+ }
15
+ /**
16
+ * The result of {@link OrgToolSwitches.set}: the PCM §5 rule 8 preview of a switch-off (the org's
17
+ * agents that selected the tool and the hash to confirm it with), or the switch applied.
18
+ */
19
+ export type OrgToolSwitchResult = {
20
+ applied: false;
21
+ affectedAgents: AffectedAgent[];
22
+ confirm: string;
23
+ } | {
24
+ applied: true;
25
+ };
26
+ /** Model-visible (English): why a turned-off extension tool is not offered. */
27
+ export declare const toolTurnedOffReason: (key: string) => string;
28
+ /**
29
+ * Per-org switches of single extension tools (layering spec A §7, table `org_tool_switches`): an
30
+ * org admin turns off one tool an extension registers (`ctx.tools.register`); it is then not
31
+ * offered to any agent of the org (`ToolRegistry.forAgent`) and refused if called
32
+ * (`ToolPipeline`). No row means on. A row of a tool the extension stops registering is kept and
33
+ * applies again if the tool comes back. Builtin and connector tools are out of scope. Read from PG
34
+ * on every use, no in-process state.
35
+ */
36
+ export declare class OrgToolSwitches {
37
+ private readonly kdb;
38
+ readonly txHost: TransactionHost;
39
+ private readonly host;
40
+ /** The org row lock: re-checks `org.extensions.manage` under the lock. */
41
+ private readonly orgLock;
42
+ constructor(kdb: KernelDb, txHost: TransactionHost, host: Pick<ExtensionHost, "tools">,
43
+ /** The org row lock: re-checks `org.extensions.manage` under the lock. */
44
+ orgLock: Pick<OrgLock, "lockAndAuthorize">);
45
+ private get db();
46
+ /** The tool names `plugin` registers on this replica, in registration order. */
47
+ private registered;
48
+ /**
49
+ * The tools of an extension the org sees: running here and visible under plugin scope, else 404
50
+ * `extension.not_found` (an invisible one is answered like an unknown one).
51
+ */
52
+ private toolsFor;
53
+ /** The stored switches of the org (all extensions, or one), `false` ones only matter. */
54
+ private offRows;
55
+ /** Every tool the extension registers on this replica with its switch (default on). */
56
+ list(orgId: string, plugin: string): Promise<OrgToolSwitch[]>;
57
+ /** The model-visible keys (`plugin__<extension>__<tool>`) of the tools turned off in the org. */
58
+ offKeys(orgId: string): Promise<Set<string>>;
59
+ /** Whether the org turned off this tool. */
60
+ isToolOff(orgId: string, plugin: string, tool: string): Promise<boolean>;
61
+ /**
62
+ * Switches one tool in the org. On applies at once. Off, while the tool is on: without
63
+ * `confirm` the preview (the org's agents whose current version selects the tool) and its hash,
64
+ * with the current hash the switch is written (a changed preview -> 409 `plugin.switch_stale`).
65
+ * A tool the extension does not register -> 404 `extension.tool_not_found`. A change writes the
66
+ * audit row `extension.tool_switched`.
67
+ */
68
+ set(orgId: string, plugin: string, tool: string, enabled: boolean, actor: {
69
+ accountId: string;
70
+ tokenId?: string | undefined;
71
+ }, confirm?: string): Promise<OrgToolSwitchResult>;
72
+ /** The org's live agents whose current version selects `{kind:"plugin", plugin, name: tool}`. */
73
+ private agentsSelecting;
74
+ }
@@ -0,0 +1,184 @@
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 { createHash } from "node:crypto";
11
+ import { extensionToolKey } from "@capybara-hq/plugin-sdk";
12
+ import { Inject, Injectable } from "@nestjs/common";
13
+ import { sql } from "kysely";
14
+ import { ApiError } from "../errors.js";
15
+ import { ExtensionHost } from "../extensions/host.js";
16
+ import { extensionVisibleTo } from "../extensions/org-config.js";
17
+ import { audit } from "../identity/audit.js";
18
+ import { KernelDb } from "../infra/database/kernel-db.js";
19
+ import { TransactionHost } from "../infra/database/transaction-host.js";
20
+ import { Transactional } from "../infra/database/transactional.decorator.js";
21
+ import { OrgLock } from "../orgs/org-lock.js";
22
+ /** Model-visible (English): why a turned-off extension tool is not offered. */
23
+ export const toolTurnedOffReason = (key) => `Tool ${key} is turned off in this organization`;
24
+ /** The confirm hash of a switch-off preview. */
25
+ function switchOffHash(orgId, plugin, tool, agents) {
26
+ return createHash("sha256")
27
+ .update(JSON.stringify({ orgId, plugin, tool, agents: agents.map((a) => a.id) }))
28
+ .digest("hex");
29
+ }
30
+ /**
31
+ * Per-org switches of single extension tools (layering spec A §7, table `org_tool_switches`): an
32
+ * org admin turns off one tool an extension registers (`ctx.tools.register`); it is then not
33
+ * offered to any agent of the org (`ToolRegistry.forAgent`) and refused if called
34
+ * (`ToolPipeline`). No row means on. A row of a tool the extension stops registering is kept and
35
+ * applies again if the tool comes back. Builtin and connector tools are out of scope. Read from PG
36
+ * on every use, no in-process state.
37
+ */
38
+ let OrgToolSwitches = class OrgToolSwitches {
39
+ kdb;
40
+ txHost;
41
+ host;
42
+ orgLock;
43
+ constructor(kdb, txHost, host,
44
+ /** The org row lock: re-checks `org.extensions.manage` under the lock. */
45
+ orgLock) {
46
+ this.kdb = kdb;
47
+ this.txHost = txHost;
48
+ this.host = host;
49
+ this.orgLock = orgLock;
50
+ }
51
+ get db() {
52
+ return this.kdb.db;
53
+ }
54
+ /** The tool names `plugin` registers on this replica, in registration order. */
55
+ registered(plugin) {
56
+ return [
57
+ ...new Set(this.host
58
+ .tools()
59
+ .filter((t) => t.plugin === plugin)
60
+ .map((t) => t.spec.name)),
61
+ ];
62
+ }
63
+ /**
64
+ * The tools of an extension the org sees: running here and visible under plugin scope, else 404
65
+ * `extension.not_found` (an invisible one is answered like an unknown one).
66
+ */
67
+ async toolsFor(orgId, plugin) {
68
+ const tools = this.registered(plugin);
69
+ if (tools.length === 0 || !(await extensionVisibleTo(this.db, orgId, plugin))) {
70
+ throw new ApiError("extension.not_found", `Extension ${plugin} is not installed`);
71
+ }
72
+ return tools;
73
+ }
74
+ /** The stored switches of the org (all extensions, or one), `false` ones only matter. */
75
+ async offRows(orgId, plugin) {
76
+ let q = this.db
77
+ .selectFrom("org_tool_switches")
78
+ .select(["plugin", "tool"])
79
+ .where("org_id", "=", orgId)
80
+ .where("enabled", "=", false);
81
+ if (plugin !== undefined)
82
+ q = q.where("plugin", "=", plugin);
83
+ return q.execute();
84
+ }
85
+ /** Every tool the extension registers on this replica with its switch (default on). */
86
+ async list(orgId, plugin) {
87
+ const tools = await this.toolsFor(orgId, plugin);
88
+ const off = new Set((await this.offRows(orgId, plugin)).map((r) => r.tool));
89
+ return tools.map((tool) => ({ tool, enabled: !off.has(tool) }));
90
+ }
91
+ /** The model-visible keys (`plugin__<extension>__<tool>`) of the tools turned off in the org. */
92
+ async offKeys(orgId) {
93
+ return new Set((await this.offRows(orgId)).map((r) => extensionToolKey(r.plugin, r.tool)));
94
+ }
95
+ /** Whether the org turned off this tool. */
96
+ async isToolOff(orgId, plugin, tool) {
97
+ const row = await this.db
98
+ .selectFrom("org_tool_switches")
99
+ .select("enabled")
100
+ .where("org_id", "=", orgId)
101
+ .where("plugin", "=", plugin)
102
+ .where("tool", "=", tool)
103
+ .executeTakeFirst();
104
+ return row?.enabled === false;
105
+ }
106
+ /**
107
+ * Switches one tool in the org. On applies at once. Off, while the tool is on: without
108
+ * `confirm` the preview (the org's agents whose current version selects the tool) and its hash,
109
+ * with the current hash the switch is written (a changed preview -> 409 `plugin.switch_stale`).
110
+ * A tool the extension does not register -> 404 `extension.tool_not_found`. A change writes the
111
+ * audit row `extension.tool_switched`.
112
+ */
113
+ async set(orgId, plugin, tool, enabled, actor, confirm) {
114
+ await this.orgLock.lockAndAuthorize(orgId, actor.accountId, "org.extensions.manage");
115
+ const tools = await this.toolsFor(orgId, plugin);
116
+ if (!tools.includes(tool)) {
117
+ throw new ApiError("extension.tool_not_found", `Extension ${plugin} does not register a tool named ${tool}`);
118
+ }
119
+ const from = !(await this.isToolOff(orgId, plugin, tool));
120
+ if (from === enabled)
121
+ return { applied: true };
122
+ if (!enabled) {
123
+ const affectedAgents = await this.agentsSelecting(orgId, plugin, tool);
124
+ const hash = switchOffHash(orgId, plugin, tool, affectedAgents);
125
+ if (confirm === undefined)
126
+ return { applied: false, affectedAgents, confirm: hash };
127
+ if (confirm !== hash) {
128
+ throw new ApiError("plugin.switch_stale", "What switching this tool off affects has changed; review it and confirm again");
129
+ }
130
+ }
131
+ await this.db
132
+ .insertInto("org_tool_switches")
133
+ .values({ org_id: orgId, plugin, tool, enabled, updated_by: actor.accountId })
134
+ .onConflict((oc) => oc.columns(["org_id", "plugin", "tool"]).doUpdateSet({
135
+ enabled,
136
+ updated_by: actor.accountId,
137
+ updated_at: sql `now()`,
138
+ }))
139
+ .execute();
140
+ await audit(this.db, {
141
+ actorAccountId: actor.accountId,
142
+ ...(actor.tokenId !== undefined && { actorTokenId: actor.tokenId }),
143
+ orgId,
144
+ action: "extension.tool_switched",
145
+ target: extensionToolKey(plugin, tool),
146
+ detail: { plugin, tool, from, to: enabled },
147
+ });
148
+ return { applied: true };
149
+ }
150
+ /** The org's live agents whose current version selects `{kind:"plugin", plugin, name: tool}`. */
151
+ async agentsSelecting(orgId, plugin, tool) {
152
+ const rows = await this.db
153
+ .selectFrom("agents as a")
154
+ .innerJoin("agent_versions as v", (j) => j.onRef("v.agent_id", "=", "a.id").onRef("v.version", "=", "a.current_version"))
155
+ .select(["a.id", "v.definition"])
156
+ .where("a.org_id", "=", orgId)
157
+ .where("a.deleted_at", "is", null)
158
+ .orderBy("a.id")
159
+ .execute();
160
+ const out = [];
161
+ for (const r of rows) {
162
+ const def = r.definition;
163
+ const refs = Array.isArray(def?.tools) ? def.tools : [];
164
+ const selects = refs.some((x) => {
165
+ const ref = x;
166
+ return ref?.kind === "plugin" && ref.plugin === plugin && ref.name === tool;
167
+ });
168
+ if (selects)
169
+ out.push({ id: r.id, name: typeof def?.name === "string" ? def.name : r.id });
170
+ }
171
+ return out;
172
+ }
173
+ };
174
+ __decorate([
175
+ Transactional()
176
+ ], OrgToolSwitches.prototype, "set", null);
177
+ OrgToolSwitches = __decorate([
178
+ Injectable(),
179
+ __param(0, Inject(KernelDb)),
180
+ __param(1, Inject(TransactionHost)),
181
+ __param(2, Inject(ExtensionHost)),
182
+ __param(3, Inject(OrgLock))
183
+ ], OrgToolSwitches);
184
+ export { OrgToolSwitches };
@@ -1,7 +1,8 @@
1
1
  import { type FormAnswer, type InputForm, type Logger } from "@capybara-hq/plugin-sdk";
2
- import { type AgentDefinition } from "../agents/definition.js";
2
+ import type { AgentDefinition } from "../agents/definition.js";
3
3
  import { EventLog } from "../conversations/event-log.js";
4
4
  import type { KernelSchemaDb } from "../db/kernel-schema.js";
5
+ import { EffectiveConfigs } from "../extensions/effective-config.js";
5
6
  import { ExtensionHost } from "../extensions/host.js";
6
7
  import { KernelConfigService } from "../infra/config/kernel-config.service.js";
7
8
  import { KernelDb } from "../infra/database/kernel-db.js";
@@ -9,16 +10,17 @@ import { TransactionHost } from "../infra/database/transaction-host.js";
9
10
  import type { OrgRole } from "../orgs/roles.js";
10
11
  import { type ConversationKindForHooks, type HookRunner } from "../runtime/hook-calls.js";
11
12
  import { type SubagentParent, type WaitingFor } from "../runtime/loop.js";
12
- import type { DispatchOutcome } from "../runtime/subagents/dispatch.js";
13
+ import type { DispatchArgs, DispatchOutcome } from "../runtime/subagents/dispatch.js";
14
+ import { SubagentMessages } from "../runtime/subagents/messages.js";
13
15
  import { SubagentsService } from "../runtime/subagents/subagents.service.js";
14
16
  import { ApprovalsService } from "./approvals.service.js";
15
17
  import { Breaker } from "./breaker.js";
16
- import { type AgentToolInputT } from "./builtins/agent.js";
17
18
  import { Credentials } from "./credentials.js";
18
19
  import { ToolDrift } from "./drift.js";
20
+ import { OrgToolSwitches } from "./org-tool-switches.js";
19
21
  import { ToolOutputs } from "./outputs.js";
20
22
  import { QuestionsService } from "./questions.service.js";
21
- import { type ResolvedTool, ToolRegistry } from "./registry.js";
23
+ import { type CallPolicy, type ResolvedTool, ToolRegistry } from "./registry.js";
22
24
  /** 审批被拒绝。 */
23
25
  export declare const APPROVAL_DENIED_TEXT = "The user denied this tool call.";
24
26
  /**
@@ -85,16 +87,26 @@ export interface PolicyContext {
85
87
  conversationId: string;
86
88
  runId: string;
87
89
  /**
88
- * A sub-agent's call: its parent conversation, where "approve for this conversation" grants are
89
- * looked up (sub-agents spec §9).
90
+ * A sub-agent's call: its parent conversation, whose agent's current policies apply on top
91
+ * (sub-agents spec §5.5).
90
92
  */
91
93
  parentConversationId?: string;
94
+ /**
95
+ * A sub-agent's call: the root conversation of its tree, where "approve for this conversation"
96
+ * grants are stored and looked up (agent map spec §7), so every agent of the tree uses them.
97
+ */
98
+ rootConversationId?: string;
92
99
  /**
93
100
  * False when the sub-agent runs its parent conversation's agent (a template or general-purpose
94
101
  * child): the parent agent's policies were already read as its own, so no second read. Unset:
95
102
  * read and compare.
96
103
  */
97
104
  parentAgentDiffers?: boolean;
105
+ /**
106
+ * The call's per-call policy ({@link ResolvedTool.callPolicy} of the validated input), or
107
+ * null / unset: policies, grants and approvals use the tool key.
108
+ */
109
+ callPolicy?: CallPolicy | null;
98
110
  }
99
111
  /** 管线第 3 阶段:策略判定。 */
100
112
  export type DecidePolicy = (tool: ResolvedTool, agentDef: AgentDefinition, ctx: PolicyContext) => Promise<PolicyDecision>;
@@ -131,6 +143,13 @@ interface PipelineDeps {
131
143
  * `RecordedToolPipeline`, which never runs hooks. Also needs `conversationKind: "chat"` (P-18).
132
144
  */
133
145
  readonly pluginHooks: HookRunner | undefined;
146
+ /**
147
+ * The effective deployment config of an extension for an org (layering spec A §6): a plugin
148
+ * tool's handler gets it as `ToolCallContext.config`, and is not called when it is not valid.
149
+ */
150
+ readonly effective: Pick<EffectiveConfigs, "get">;
151
+ /** The org's switches of single extension tools: a turned-off one is not called (spec A §7). */
152
+ readonly switches: Pick<OrgToolSwitches, "isToolOff">;
134
153
  /**
135
154
  * Ids of an extension's `inline` ui contributions (read live, no alias): a plugin tool's
136
155
  * `ToolResult.card` must name one of them, otherwise it is dropped with a warning.
@@ -146,12 +165,13 @@ interface PipelineDeps {
146
165
  * it, `Agent` calls reach the builtin's guard, which refuses them.
147
166
  */
148
167
  readonly subagents: {
149
- dispatch(a: {
150
- ctx: ToolStepContext;
151
- callId: string;
152
- input: AgentToolInputT;
153
- }): Promise<DispatchOutcome>;
168
+ dispatch(a: DispatchArgs): Promise<DispatchOutcome>;
154
169
  } | undefined;
170
+ /**
171
+ * `SendMessage` and `SubagentHandback` (agent map spec §4.2, §4.3; `SubagentMessages`). Without
172
+ * it, their calls reach the builtins' guards, which refuse them.
173
+ */
174
+ readonly messages: Pick<SubagentMessages, "toChild" | "toParent"> | undefined;
155
175
  }
156
176
  /** The sub-agent dispatch the pipeline calls (`SubagentsService.dispatch`). */
157
177
  export type SubagentDispatch = NonNullable<PipelineDeps["subagents"]>["dispatch"];
@@ -174,8 +194,8 @@ export interface ToolStepContext {
174
194
  /** Hooks fire only for `chat` conversations. */
175
195
  conversationKind?: ConversationKindForHooks;
176
196
  /**
177
- * Set when the run is a sub-agent's: its builtin tools use the parent conversation's sandbox
178
- * (spec §10.1) and it cannot dispatch sub-agents.
197
+ * Set when the run is a sub-agent's: its builtin tools use the root conversation's sandbox
198
+ * (spec §10.1, agent map spec §6), and it dispatches sub-agents only below `subagents.maxDepth`.
179
199
  */
180
200
  parent?: SubagentParent;
181
201
  }
@@ -230,9 +250,11 @@ export declare class ToolPipeline {
230
250
  private readonly deps;
231
251
  constructor(kdb: KernelDb, eventLog: EventLog,
232
252
  /** The `Agent` tool's sub-agent dispatch; absent (tests): `Agent` calls are refused. */
233
- subagents: Pick<SubagentsService, "dispatch"> | undefined, registry: Pick<ToolRegistry, "forAgent" | "findConnector" | "handler">, credentials: Pick<Credentials, "injection" | "onUnauthorized">, breaker: Pick<Breaker, "check" | "failure" | "success">, outputs: Pick<ToolOutputs, "save" | "load">, approvals: Pick<ApprovalsService, "request" | "forCall">, questions: Pick<QuestionsService, "ask" | "forCall">, config: Pick<KernelConfigService, "get">, log: Logger,
253
+ subagents: Pick<SubagentsService, "dispatch"> | undefined,
254
+ /** The message tools between agents; absent (tests): their calls are refused. */
255
+ messages: Pick<SubagentMessages, "toChild" | "toParent"> | undefined, registry: Pick<ToolRegistry, "forAgent" | "findConnector" | "handler">, credentials: Pick<Credentials, "injection" | "onUnauthorized">, breaker: Pick<Breaker, "check" | "failure" | "success">, outputs: Pick<ToolOutputs, "save" | "load">, approvals: Pick<ApprovalsService, "request" | "forCall">, questions: Pick<QuestionsService, "ask" | "forCall">, config: Pick<KernelConfigService, "get">, log: Logger,
234
256
  /** Plugin hooks and inline ui contributions; absent (tests): no hooks, cards dropped. */
235
- host: Pick<ExtensionHost, "hooks" | "current"> | undefined, drift: Pick<ToolDrift, "onToolsChanged"> | undefined, txHost: TransactionHost, hooks?: ToolPipelineHooks);
257
+ host: Pick<ExtensionHost, "hooks" | "current"> | undefined, drift: Pick<ToolDrift, "onToolsChanged"> | undefined, effective: Pick<EffectiveConfigs, "get">, switches: Pick<OrgToolSwitches, "isToolOff">, txHost: TransactionHost, hooks?: ToolPipelineHooks);
236
258
  /**
237
259
  * tools 节点:按顺序处理本步 assistant 消息里的全部 `tool_call`,每个调用都以一条 `tool_result` 结束
238
260
  * (之后才回到 prepare 构建下一次请求,保持「已记录调用、未记录结果之间不构建请求」的不变式)。
@@ -242,32 +264,14 @@ export declare class ToolPipeline {
242
264
  */
243
265
  runStep(ctx: ToolStepContext): Promise<ToolStepOutcome>;
244
266
  /**
245
- * An `Agent` call that was dispatched (spec §7.1 "already dispatched"): when its child run is
246
- * terminal, writes the parent's `subagent_finished` (if the child's finisher did not) and the
247
- * call's `tool_result` from the child's log, and returns true; else false (still open).
248
- *
249
- * The call ran like any tool, so the result is audited `tool.called` (duration = the child's;
250
- * the authorization is known only when an approval let it run: a policy or remembered grant at
251
- * dispatch time is not recorded, so nothing is guessed) and fires `tool.postExecute` with the
252
- * result, from the replica that writes it (spec §11).
253
- */
254
- private finishAgentCall;
255
- /** {@link stopOpenAgentCalls} in a transaction of its own (a stop seen by the tools node). */
256
- private stopOpenAgentCallsNow;
257
- /**
258
- * Writes, in the caller's transaction (`mandatory`), the `tool_result` of every open `Agent` call
259
- * of a run that is being stopped
260
- * (sub-agents spec §12: a person stopped it while it waited on sub-agents, or its deadline or a
261
- * stop hit its tools node after a dispatch). A call whose child already ended gets the child's
262
- * result (and the missing `subagent_finished`); one whose child is still active gets
263
- * {@link AGENT_STOPPED_WITH_RUN_TEXT}. The caller stops those children after its commit.
264
- *
265
- * Like every `Agent` result (see {@link finishAgentCall}), each is audited `tool.called` in it
266
- * (duration: the child's, or the time since the dispatch) and fires `tool.postExecute`, through
267
- * `fire()`, which the caller runs after its commit. Returns the steps and calls written (the
268
- * caller must not write a "not executed" result for them) and the highest seq written.
267
+ * Writes, in the caller's transaction (`mandatory`), what a run that is being stopped (a person,
268
+ * its deadline, a failure, the wait sweep) still owes its log: the report of its fork invocation
269
+ * (phase D, `pairStoppedForks`; a still active fork child is stopped by the caller after its
270
+ * commit). An `Agent` call has its result from its dispatch (agent map spec §4.1), so there is
271
+ * nothing to write for it. Returns the fork's call id (the caller must not write a "not executed"
272
+ * result for it), the highest seq written, and `fire`, a no-op kept for the callers' hook phase.
269
273
  */
270
- stopOpenAgentCalls(runId: string, agent?: AgentDefinition): Promise<{
274
+ stopOpenAgentCalls(runId: string): Promise<{
271
275
  steps: number[];
272
276
  callIds: Set<string>;
273
277
  toSeq: number | null;
@@ -280,6 +284,8 @@ export declare class ToolPipeline {
280
284
  */
281
285
  private processCall;
282
286
  private runCall;
287
+ /** Appends a sub-agent's connect card to its root conversation ({@link rootSurfaceOf}). */
288
+ private surfaceConnectInRoot;
283
289
  /**
284
290
  * Every tool key the request that issued this step's calls offered (`request.tools` plus the
285
291
  * `catalog` keys), in any mode; null when its model_call is not found. Used to tell a call to an