@capybara-hq/kernel 0.1.0-rc.4 → 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 (507) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +39 -13
  3. package/dist/admin/admin.controller.js +33 -17
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  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 +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +51 -22
  19. package/dist/agents/agents.service.js +172 -70
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/org-templates.d.ts +176 -0
  27. package/dist/agents/org-templates.js +827 -0
  28. package/dist/agents/pending-connector-requests.d.ts +77 -0
  29. package/dist/agents/pending-connector-requests.js +215 -0
  30. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  31. package/dist/agents/pending-connectors.controller.js +91 -0
  32. package/dist/agents/pending-connectors.service.d.ts +62 -0
  33. package/dist/agents/pending-connectors.service.js +282 -0
  34. package/dist/agents/templates.controller.d.ts +86 -5
  35. package/dist/agents/templates.controller.js +171 -7
  36. package/dist/agents/templates.d.ts +127 -23
  37. package/dist/agents/templates.js +475 -52
  38. package/dist/background/background.module.js +8 -1
  39. package/dist/background/finish.d.ts +3 -2
  40. package/dist/background/launch-lock.d.ts +4 -3
  41. package/dist/background/launch-lock.js +4 -3
  42. package/dist/background/poll.job.d.ts +9 -6
  43. package/dist/background/poll.job.js +30 -22
  44. package/dist/background/session.d.ts +13 -2
  45. package/dist/background/session.js +13 -0
  46. package/dist/background/stop.d.ts +12 -6
  47. package/dist/background/stop.js +57 -39
  48. package/dist/background/store.d.ts +18 -6
  49. package/dist/background/store.js +12 -6
  50. package/dist/background/tasks.service.d.ts +15 -5
  51. package/dist/background/tasks.service.js +42 -17
  52. package/dist/background/wake-rules.d.ts +27 -18
  53. package/dist/background/wake-rules.js +52 -22
  54. package/dist/background/wake.d.ts +13 -11
  55. package/dist/background/wake.js +20 -14
  56. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  57. package/dist/catalog/admin-catalog.controller.js +213 -42
  58. package/dist/catalog/catalog-content.d.ts +58 -32
  59. package/dist/catalog/catalog-content.js +34 -8
  60. package/dist/catalog/catalog-import.module.d.ts +7 -0
  61. package/dist/catalog/catalog-import.module.js +60 -0
  62. package/dist/catalog/catalog-items.d.ts +111 -7
  63. package/dist/catalog/catalog-items.js +279 -13
  64. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  65. package/dist/catalog/catalog-scope.service.js +1116 -0
  66. package/dist/catalog/catalog.module.d.ts +7 -9
  67. package/dist/catalog/catalog.module.js +41 -31
  68. package/dist/catalog/catalog.service.d.ts +101 -29
  69. package/dist/catalog/catalog.service.js +104 -106
  70. package/dist/catalog/cli.d.ts +11 -1
  71. package/dist/catalog/cli.js +26 -1
  72. package/dist/catalog/component-promotion.d.ts +96 -0
  73. package/dist/catalog/component-promotion.js +395 -0
  74. package/dist/catalog/component-scope.controller.d.ts +152 -0
  75. package/dist/catalog/component-scope.controller.js +287 -0
  76. package/dist/catalog/component-scope.service.d.ts +303 -0
  77. package/dist/catalog/component-scope.service.js +936 -0
  78. package/dist/catalog/component-state.d.ts +174 -0
  79. package/dist/catalog/component-state.js +437 -0
  80. package/dist/catalog/job-ids.d.ts +30 -0
  81. package/dist/catalog/job-ids.js +25 -0
  82. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  83. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  84. package/dist/catalog/marketplaces.controller.js +56 -7
  85. package/dist/catalog/marketplaces.service.d.ts +54 -14
  86. package/dist/catalog/marketplaces.service.js +71 -22
  87. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  88. package/dist/catalog/org-catalog.controller.js +181 -65
  89. package/dist/catalog/org-catalog.service.d.ts +65 -33
  90. package/dist/catalog/org-catalog.service.js +324 -157
  91. package/dist/catalog/org-extension-switch.d.ts +41 -0
  92. package/dist/catalog/org-extension-switch.js +115 -0
  93. package/dist/catalog/org-extension.controller.d.ts +119 -0
  94. package/dist/catalog/org-extension.controller.js +266 -0
  95. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  96. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  97. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  98. package/dist/catalog/org-plugin-uploads.js +116 -0
  99. package/dist/catalog/owned-items.d.ts +184 -0
  100. package/dist/catalog/owned-items.js +789 -0
  101. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  102. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  103. package/dist/catalog/ownership.d.ts +172 -0
  104. package/dist/catalog/ownership.js +326 -0
  105. package/dist/catalog/platform-components.d.ts +221 -0
  106. package/dist/catalog/platform-components.js +761 -0
  107. package/dist/catalog/platform-migration.d.ts +115 -0
  108. package/dist/catalog/platform-migration.js +582 -0
  109. package/dist/catalog/plugin-import.d.ts +178 -34
  110. package/dist/catalog/plugin-import.js +622 -82
  111. package/dist/catalog/plugin-install.d.ts +185 -41
  112. package/dist/catalog/plugin-install.js +758 -126
  113. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  114. package/dist/catalog/plugin-upgrade.js +1147 -1136
  115. package/dist/catalog/request-rules.d.ts +65 -0
  116. package/dist/catalog/request-rules.js +217 -0
  117. package/dist/catalog/requests.service.d.ts +193 -118
  118. package/dist/catalog/requests.service.js +526 -343
  119. package/dist/catalog/reserved-names.d.ts +8 -0
  120. package/dist/catalog/reserved-names.js +42 -0
  121. package/dist/catalog/scope-orgs.d.ts +21 -0
  122. package/dist/catalog/scope-orgs.js +67 -0
  123. package/dist/catalog/scope-state.d.ts +35 -0
  124. package/dist/catalog/scope-state.js +87 -0
  125. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  126. package/dist/catalog/scope-sync-workers.js +29 -0
  127. package/dist/catalog/scope-sync.d.ts +176 -0
  128. package/dist/catalog/scope-sync.js +576 -0
  129. package/dist/catalog/scope.d.ts +42 -0
  130. package/dist/catalog/scope.js +42 -0
  131. package/dist/catalog/unshare.d.ts +22 -0
  132. package/dist/catalog/unshare.js +118 -0
  133. package/dist/channels/actions.js +1 -0
  134. package/dist/channels/cards.js +20 -2
  135. package/dist/channels/channels.module.js +2 -0
  136. package/dist/channels/inbound.d.ts +9 -1
  137. package/dist/channels/inbound.js +67 -5
  138. package/dist/channels/phrases.d.ts +35 -0
  139. package/dist/channels/phrases.js +29 -0
  140. package/dist/config/docs.js +3 -1
  141. package/dist/config/schema.d.ts +6 -2
  142. package/dist/config/schema.js +46 -22
  143. package/dist/conversations/access.d.ts +6 -4
  144. package/dist/conversations/access.js +27 -5
  145. package/dist/conversations/agent-tree.d.ts +46 -0
  146. package/dist/conversations/agent-tree.js +92 -0
  147. package/dist/conversations/conversations.controller.d.ts +43 -18
  148. package/dist/conversations/conversations.controller.js +79 -38
  149. package/dist/conversations/conversations.module.d.ts +1 -1
  150. package/dist/conversations/conversations.module.js +7 -7
  151. package/dist/conversations/conversations.service.d.ts +69 -12
  152. package/dist/conversations/conversations.service.js +106 -27
  153. package/dist/conversations/environment-status.d.ts +24 -0
  154. package/dist/conversations/environment-status.js +71 -0
  155. package/dist/conversations/event-log.d.ts +20 -5
  156. package/dist/conversations/event-log.js +60 -0
  157. package/dist/conversations/events.d.ts +84 -2
  158. package/dist/conversations/events.js +91 -17
  159. package/dist/conversations/queue.service.d.ts +1 -1
  160. package/dist/conversations/queue.service.js +5 -0
  161. package/dist/conversations/titles.d.ts +5 -3
  162. package/dist/conversations/titles.js +21 -8
  163. package/dist/conversations/tree.d.ts +17 -0
  164. package/dist/conversations/tree.js +42 -0
  165. package/dist/ctx/create-ctx.d.ts +5 -0
  166. package/dist/ctx/create-ctx.js +15 -5
  167. package/dist/db/kernel-schema.d.ts +362 -18
  168. package/dist/environments/access.d.ts +41 -0
  169. package/dist/environments/access.js +77 -0
  170. package/dist/environments/conversation-environments.d.ts +61 -0
  171. package/dist/environments/conversation-environments.js +170 -0
  172. package/dist/environments/dto.d.ts +25 -0
  173. package/dist/environments/dto.js +12 -0
  174. package/dist/environments/environments.controller.d.ts +33 -0
  175. package/dist/environments/environments.controller.js +110 -0
  176. package/dist/environments/environments.module.d.ts +8 -0
  177. package/dist/environments/environments.module.js +27 -0
  178. package/dist/environments/environments.service.d.ts +153 -0
  179. package/dist/environments/environments.service.js +541 -0
  180. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  181. package/dist/environments/legacy-cleanup.job.js +141 -0
  182. package/dist/errors.d.ts +82 -2
  183. package/dist/errors.js +82 -2
  184. package/dist/evals/reconstruct.d.ts +18 -9
  185. package/dist/evals/reconstruct.js +26 -7
  186. package/dist/evals/run-replay.d.ts +4 -2
  187. package/dist/evals/run-replay.js +16 -4
  188. package/dist/evals/step-replay.d.ts +2 -5
  189. package/dist/evals/step-replay.js +1 -1
  190. package/dist/evals/trajectory.service.d.ts +8 -3
  191. package/dist/evals/trajectory.service.js +26 -14
  192. package/dist/evals/worker.d.ts +5 -5
  193. package/dist/evals/worker.js +9 -3
  194. package/dist/extensions/admin-ops.d.ts +36 -10
  195. package/dist/extensions/admin-ops.js +65 -42
  196. package/dist/extensions/admin-view.d.ts +37 -10
  197. package/dist/extensions/admin-view.js +103 -20
  198. package/dist/extensions/bootstrap.d.ts +17 -4
  199. package/dist/extensions/bootstrap.js +70 -9
  200. package/dist/extensions/cli.d.ts +12 -0
  201. package/dist/extensions/cli.js +11 -2
  202. package/dist/extensions/deployment-config.d.ts +28 -5
  203. package/dist/extensions/deployment-config.js +48 -7
  204. package/dist/extensions/effective-config.d.ts +127 -0
  205. package/dist/extensions/effective-config.js +368 -0
  206. package/dist/extensions/extensions.module.js +8 -2
  207. package/dist/extensions/hooks.d.ts +37 -4
  208. package/dist/extensions/hooks.js +82 -16
  209. package/dist/extensions/host.d.ts +19 -1
  210. package/dist/extensions/host.js +30 -7
  211. package/dist/extensions/installs.d.ts +20 -8
  212. package/dist/extensions/installs.js +37 -15
  213. package/dist/extensions/org-config.d.ts +75 -6
  214. package/dist/extensions/org-config.js +184 -32
  215. package/dist/extensions/org-levels.d.ts +37 -0
  216. package/dist/extensions/org-levels.js +71 -0
  217. package/dist/extensions/org-overrides.d.ts +151 -0
  218. package/dist/extensions/org-overrides.js +524 -0
  219. package/dist/extensions/permission-view.d.ts +16 -4
  220. package/dist/extensions/permission-view.js +4 -4
  221. package/dist/extensions/plugin-items.d.ts +21 -0
  222. package/dist/extensions/plugin-items.js +42 -0
  223. package/dist/extensions/point-defaults.d.ts +12 -5
  224. package/dist/extensions/point-defaults.js +37 -9
  225. package/dist/extensions/resolve.d.ts +5 -1
  226. package/dist/extensions/resolve.js +15 -2
  227. package/dist/files/previewers.d.ts +8 -1
  228. package/dist/files/previewers.js +35 -6
  229. package/dist/http/api.module.js +23 -3
  230. package/dist/http/app.d.ts +11 -2
  231. package/dist/http/app.js +31 -5
  232. package/dist/identity/accounts.d.ts +29 -29
  233. package/dist/identity/accounts.js +47 -47
  234. package/dist/identity/audit.d.ts +2 -1
  235. package/dist/identity/auth.guard.d.ts +13 -5
  236. package/dist/identity/auth.guard.js +26 -9
  237. package/dist/identity/identity.module.d.ts +1 -1
  238. package/dist/identity/identity.module.js +4 -4
  239. package/dist/identity/me.controller.js +1 -1
  240. package/dist/identity/principal.d.ts +3 -3
  241. package/dist/identity/principal.js +3 -3
  242. package/dist/identity/settings.d.ts +22 -11
  243. package/dist/identity/settings.js +53 -18
  244. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  245. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  246. package/dist/inbox/inbox.module.d.ts +4 -1
  247. package/dist/inbox/inbox.module.js +7 -3
  248. package/dist/inbox/inbox.service.d.ts +62 -3
  249. package/dist/inbox/inbox.service.js +74 -4
  250. package/dist/inbox/org-notices.d.ts +63 -0
  251. package/dist/inbox/org-notices.js +91 -0
  252. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  253. package/dist/inbox/platform-inbox.controller.js +58 -0
  254. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  255. package/dist/inbox/platform-inbox.service.js +263 -0
  256. package/dist/inbox/platform-notices.d.ts +19 -0
  257. package/dist/inbox/platform-notices.js +9 -0
  258. package/dist/index.d.ts +1 -1
  259. package/dist/index.js +1 -1
  260. package/dist/infra/cli/kernel-cli.module.js +9 -1
  261. package/dist/infra/config/kernel-config.service.js +21 -1
  262. package/dist/infra/database/xact-lock.d.ts +1 -1
  263. package/dist/infra/database/xact-lock.js +1 -1
  264. package/dist/infra/events/kernel-events.d.ts +11 -2
  265. package/dist/infra/queue/add-job-once.d.ts +14 -0
  266. package/dist/infra/queue/add-job-once.js +16 -0
  267. package/dist/kernel.module.js +6 -0
  268. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  269. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  270. package/dist/models/prices.d.ts +5 -5
  271. package/dist/models/prices.js +4 -4
  272. package/dist/models/purposes.controller.d.ts +6 -4
  273. package/dist/models/purposes.controller.js +13 -7
  274. package/dist/models/purposes.d.ts +20 -9
  275. package/dist/models/purposes.js +17 -8
  276. package/dist/orgs/directory-sync.d.ts +14 -5
  277. package/dist/orgs/directory-sync.js +41 -17
  278. package/dist/orgs/offboarding.d.ts +9 -7
  279. package/dist/orgs/offboarding.js +28 -17
  280. package/dist/orgs/org-lock.d.ts +5 -0
  281. package/dist/orgs/org-lock.js +13 -0
  282. package/dist/orgs/org.guard.d.ts +10 -0
  283. package/dist/orgs/org.guard.js +43 -32
  284. package/dist/orgs/orgs.module.js +3 -0
  285. package/dist/orgs/orgs.service.d.ts +20 -7
  286. package/dist/orgs/orgs.service.js +32 -12
  287. package/dist/orgs/roles.d.ts +1 -1
  288. package/dist/orgs/roles.js +5 -1
  289. package/dist/orgs/settings.controller.d.ts +1 -1
  290. package/dist/orgs/settings.service.d.ts +15 -3
  291. package/dist/orgs/settings.service.js +6 -2
  292. package/dist/overrides.d.ts +3 -0
  293. package/dist/overrides.js +2 -0
  294. package/dist/platform/actor.d.ts +48 -0
  295. package/dist/platform/actor.js +100 -0
  296. package/dist/platform/agent-docs.d.ts +18 -0
  297. package/dist/platform/agent-docs.js +59 -0
  298. package/dist/platform/availability.d.ts +14 -0
  299. package/dist/platform/availability.js +43 -0
  300. package/dist/platform/errors.d.ts +11 -0
  301. package/dist/platform/errors.js +26 -0
  302. package/dist/platform/exclusions.d.ts +12 -0
  303. package/dist/platform/exclusions.js +1387 -0
  304. package/dist/platform/method.d.ts +6 -0
  305. package/dist/platform/method.js +15 -0
  306. package/dist/platform/operation.d.ts +92 -0
  307. package/dist/platform/operation.js +35 -0
  308. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  309. package/dist/platform/ops/agent-templates.ops.js +92 -0
  310. package/dist/platform/ops/agents.ops.d.ts +19 -0
  311. package/dist/platform/ops/agents.ops.js +294 -0
  312. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  313. package/dist/platform/ops/connectors.ops.js +126 -0
  314. package/dist/platform/ops/errors.d.ts +11 -0
  315. package/dist/platform/ops/errors.js +22 -0
  316. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  317. package/dist/platform/ops/extensions.ops.js +116 -0
  318. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  319. package/dist/platform/ops/marketplaces.ops.js +157 -0
  320. package/dist/platform/ops/paging.d.ts +14 -0
  321. package/dist/platform/ops/paging.js +20 -0
  322. package/dist/platform/ops/platform.ops.d.ts +23 -0
  323. package/dist/platform/ops/platform.ops.js +158 -0
  324. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  325. package/dist/platform/ops/plugins.ops.js +377 -0
  326. package/dist/platform/ops/requests.ops.d.ts +14 -0
  327. package/dist/platform/ops/requests.ops.js +153 -0
  328. package/dist/platform/ops/role.d.ts +4 -0
  329. package/dist/platform/ops/role.js +10 -0
  330. package/dist/platform/ops/skills.ops.d.ts +13 -0
  331. package/dist/platform/ops/skills.ops.js +98 -0
  332. package/dist/platform/ops/summary.d.ts +10 -0
  333. package/dist/platform/ops/summary.js +18 -0
  334. package/dist/platform/platform-ops.module.d.ts +7 -0
  335. package/dist/platform/platform-ops.module.js +55 -0
  336. package/dist/platform/platform.module.d.ts +8 -0
  337. package/dist/platform/platform.module.js +25 -0
  338. package/dist/platform/redact-orgs.d.ts +7 -0
  339. package/dist/platform/redact-orgs.js +52 -0
  340. package/dist/platform/registry.d.ts +30 -0
  341. package/dist/platform/registry.js +111 -0
  342. package/dist/roles/worker-role.d.ts +6 -4
  343. package/dist/roles/worker-role.js +14 -7
  344. package/dist/roles/worker.module.d.ts +1 -1
  345. package/dist/roles/worker.module.js +9 -1
  346. package/dist/runtime/context/build.d.ts +6 -4
  347. package/dist/runtime/context/build.js +26 -7
  348. package/dist/runtime/context/claude-tools.d.ts +2 -1
  349. package/dist/runtime/context/claude-tools.js +5 -4
  350. package/dist/runtime/context/compaction.js +9 -0
  351. package/dist/runtime/context/reminders.d.ts +2 -0
  352. package/dist/runtime/context/reminders.js +2 -0
  353. package/dist/runtime/context/skills.js +9 -2
  354. package/dist/runtime/context/tool-changes.d.ts +27 -0
  355. package/dist/runtime/context/tool-changes.js +60 -0
  356. package/dist/runtime/hook-calls.js +2 -0
  357. package/dist/runtime/langgraph-loop.d.ts +3 -1
  358. package/dist/runtime/langgraph-loop.js +35 -17
  359. package/dist/runtime/loop.d.ts +32 -4
  360. package/dist/runtime/maintenance.d.ts +7 -4
  361. package/dist/runtime/maintenance.js +23 -8
  362. package/dist/runtime/model-call.d.ts +30 -8
  363. package/dist/runtime/model-call.js +69 -19
  364. package/dist/runtime/run-control.d.ts +11 -1
  365. package/dist/runtime/run-control.js +12 -0
  366. package/dist/runtime/run-drafts.d.ts +85 -0
  367. package/dist/runtime/run-drafts.js +230 -0
  368. package/dist/runtime/run-jobs.d.ts +3 -5
  369. package/dist/runtime/run-jobs.js +3 -7
  370. package/dist/runtime/run-queue.d.ts +37 -3
  371. package/dist/runtime/run-queue.js +188 -11
  372. package/dist/runtime/run-worker.d.ts +11 -5
  373. package/dist/runtime/run-worker.js +54 -31
  374. package/dist/runtime/runtime.module.js +3 -0
  375. package/dist/runtime/step-log.d.ts +9 -4
  376. package/dist/runtime/step-log.js +8 -5
  377. package/dist/runtime/stream.controller.d.ts +23 -1
  378. package/dist/runtime/stream.controller.js +60 -3
  379. package/dist/runtime/stream.d.ts +4 -1
  380. package/dist/runtime/stream.js +27 -3
  381. package/dist/runtime/subagents/child.d.ts +55 -7
  382. package/dist/runtime/subagents/child.js +105 -7
  383. package/dist/runtime/subagents/definition.d.ts +12 -3
  384. package/dist/runtime/subagents/definition.js +43 -29
  385. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  386. package/dist/runtime/subagents/deliveries.js +228 -0
  387. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  388. package/dist/runtime/subagents/dispatch.js +212 -141
  389. package/dist/runtime/subagents/limits.d.ts +24 -5
  390. package/dist/runtime/subagents/limits.js +40 -6
  391. package/dist/runtime/subagents/messages.d.ts +95 -0
  392. package/dist/runtime/subagents/messages.js +328 -0
  393. package/dist/runtime/subagents/preamble.d.ts +4 -4
  394. package/dist/runtime/subagents/preamble.js +9 -7
  395. package/dist/runtime/subagents/progress.d.ts +8 -6
  396. package/dist/runtime/subagents/progress.js +11 -6
  397. package/dist/runtime/subagents/render.d.ts +30 -0
  398. package/dist/runtime/subagents/render.js +53 -0
  399. package/dist/runtime/subagents/roster.d.ts +24 -7
  400. package/dist/runtime/subagents/roster.js +47 -11
  401. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  402. package/dist/runtime/subagents/skill-fork.js +8 -4
  403. package/dist/runtime/subagents/status.d.ts +14 -0
  404. package/dist/runtime/subagents/status.js +23 -0
  405. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  406. package/dist/runtime/subagents/subagents.service.js +11 -6
  407. package/dist/runtime/usage-report.js +17 -12
  408. package/dist/runtime/waits.d.ts +140 -37
  409. package/dist/runtime/waits.js +394 -106
  410. package/dist/sandbox/jobs.d.ts +40 -13
  411. package/dist/sandbox/jobs.js +57 -20
  412. package/dist/sandbox/leases.d.ts +37 -54
  413. package/dist/sandbox/leases.js +71 -115
  414. package/dist/sandbox/providers.d.ts +2 -2
  415. package/dist/sandbox/providers.js +1 -1
  416. package/dist/sandbox/sandbox.module.d.ts +3 -2
  417. package/dist/sandbox/sandbox.module.js +4 -3
  418. package/dist/sandbox/sandbox.service.d.ts +229 -134
  419. package/dist/sandbox/sandbox.service.js +630 -409
  420. package/dist/skills/catalog.d.ts +3 -2
  421. package/dist/skills/catalog.js +21 -43
  422. package/dist/skills/changes.controller.d.ts +7 -0
  423. package/dist/skills/changes.controller.js +19 -1
  424. package/dist/skills/invoke.js +8 -3
  425. package/dist/skills/package.d.ts +20 -1
  426. package/dist/skills/package.js +28 -1
  427. package/dist/skills/skills.controller.d.ts +39 -4
  428. package/dist/skills/skills.controller.js +88 -10
  429. package/dist/skills/skills.module.js +10 -1
  430. package/dist/skills/skills.service.d.ts +106 -26
  431. package/dist/skills/skills.service.js +421 -75
  432. package/dist/skills/usable.d.ts +81 -0
  433. package/dist/skills/usable.js +379 -0
  434. package/dist/tools/approvals.service.d.ts +20 -2
  435. package/dist/tools/approvals.service.js +23 -4
  436. package/dist/tools/builtin-names.d.ts +21 -5
  437. package/dist/tools/builtin-names.js +30 -5
  438. package/dist/tools/builtins/agent.d.ts +23 -21
  439. package/dist/tools/builtins/agent.js +62 -55
  440. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  441. package/dist/tools/builtins/builtin-tools.js +37 -12
  442. package/dist/tools/builtins/handback.d.ts +28 -0
  443. package/dist/tools/builtins/handback.js +53 -0
  444. package/dist/tools/builtins/platform.d.ts +34 -0
  445. package/dist/tools/builtins/platform.js +362 -0
  446. package/dist/tools/builtins/sandbox/bash.js +13 -3
  447. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  448. package/dist/tools/builtins/sandbox/common.js +80 -45
  449. package/dist/tools/builtins/sandbox/edit.js +2 -2
  450. package/dist/tools/builtins/sandbox/glob.js +2 -2
  451. package/dist/tools/builtins/sandbox/grep.js +2 -4
  452. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  453. package/dist/tools/builtins/sandbox/index.js +1 -1
  454. package/dist/tools/builtins/sandbox/read.js +1 -1
  455. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  456. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  457. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  458. package/dist/tools/builtins/sandbox/write.js +2 -2
  459. package/dist/tools/builtins/send-message.d.ts +56 -0
  460. package/dist/tools/builtins/send-message.js +100 -0
  461. package/dist/tools/builtins/skill-load.d.ts +22 -14
  462. package/dist/tools/builtins/skill-load.js +86 -57
  463. package/dist/tools/builtins/skill-write.js +1 -1
  464. package/dist/tools/builtins/web/extract.js +5 -1
  465. package/dist/tools/builtins/web/fetch.js +1 -0
  466. package/dist/tools/builtins/web/search.js +1 -0
  467. package/dist/tools/connectors.controller.d.ts +10 -0
  468. package/dist/tools/connectors.controller.js +12 -0
  469. package/dist/tools/connectors.service.d.ts +46 -5
  470. package/dist/tools/connectors.service.js +94 -15
  471. package/dist/tools/extension-tools.controller.d.ts +14 -0
  472. package/dist/tools/extension-tools.controller.js +37 -0
  473. package/dist/tools/info.d.ts +42 -1
  474. package/dist/tools/info.js +64 -1
  475. package/dist/tools/org-tool-switches.d.ts +74 -0
  476. package/dist/tools/org-tool-switches.js +184 -0
  477. package/dist/tools/pipeline.d.ts +46 -40
  478. package/dist/tools/pipeline.js +187 -364
  479. package/dist/tools/policy.d.ts +1 -1
  480. package/dist/tools/policy.js +36 -16
  481. package/dist/tools/registry.d.ts +98 -5
  482. package/dist/tools/registry.js +87 -9
  483. package/dist/tools/tools.module.js +12 -2
  484. package/dist/ui/views.d.ts +2 -1
  485. package/dist/ui/views.js +17 -3
  486. package/package.json +3 -3
  487. package/src/migrations/0074_subagent_tree.sql +50 -0
  488. package/src/migrations/0075_plugin_scope.sql +61 -0
  489. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  490. package/src/migrations/0077_scope_requests.sql +52 -0
  491. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  492. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  493. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  494. package/src/migrations/0081_platform_components.sql +129 -0
  495. package/src/migrations/0082_platform_migration.sql +33 -0
  496. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  497. package/src/migrations/0084_org_owned_items.sql +85 -0
  498. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  499. package/src/migrations/0086_org_layering.sql +30 -0
  500. package/src/migrations/0087_approval_summary.sql +6 -0
  501. package/src/migrations/0088_environments.sql +80 -0
  502. package/dist/catalog/upgrade-targets.d.ts +0 -56
  503. package/dist/catalog/upgrade-targets.js +0 -90
  504. package/dist/conversations/sandbox-status.d.ts +0 -24
  505. package/dist/conversations/sandbox-status.js +0 -52
  506. package/dist/extensions/org-config.controller.d.ts +0 -32
  507. package/dist/extensions/org-config.controller.js +0 -70
@@ -0,0 +1,158 @@
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 { extensionToolKey } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { z } from "zod";
13
+ import { AgentsService } from "../../agents/agents.service.js";
14
+ import { can } from "../../orgs/roles.js";
15
+ import { effectiveSandboxEgress, OrgSettingsService } from "../../orgs/settings.service.js";
16
+ import { SANDBOX_TOOL_NAMES } from "../../tools/builtin-names.js";
17
+ import { ToolRegistry } from "../../tools/registry.js";
18
+ import { PlatformActor } from "../actor.js";
19
+ import { defineOperation } from "../operation.js";
20
+ import { PlatformOperations } from "../registry.js";
21
+ import { asToolError } from "./errors.js";
22
+ /** What a role may build, as the model says it to the person: the action and its plain words. */
23
+ const BUILDS = [
24
+ { action: "agents.create", what: "create private agents and edit the agents you own" },
25
+ { action: "skills.manage", what: "create org skills" },
26
+ { action: "agents.manage", what: "manage other people's agents and save org agent templates" },
27
+ { action: "connectors.manage", what: "set up connectors" },
28
+ { action: "org.extensions.manage", what: "manage extensions" },
29
+ ];
30
+ const FAMILIES = [
31
+ "Platform: this tool, for the org's skills, agents, agent templates, plugins, connectors and requests.",
32
+ "Skill and SkillWrite: use and write the skills of this agent.",
33
+ "Agent, SendMessage, SubagentHandback: dispatch and talk to sub-agents.",
34
+ "Bash, Read, Write, Edit, Glob, Grep, Deliver: work in the conversation's sandbox.",
35
+ "WebSearch, WebFetch: reach the web through the org's providers.",
36
+ "Plugin and connector tools, named plugin__<plugin>__<tool> and mcp__<connector>__<tool>.",
37
+ ];
38
+ const EMPTY = z.object({}).strict();
39
+ /** The `platform` domain: orientation, and what this agent is (spec §7). Synthetic, no route. */
40
+ let PlatformOperationsProvider = class PlatformOperationsProvider {
41
+ registry;
42
+ actor;
43
+ agents;
44
+ settings;
45
+ tools;
46
+ constructor(registry, actor, agents, settings, tools) {
47
+ this.registry = registry;
48
+ this.actor = actor;
49
+ this.agents = agents;
50
+ this.settings = settings;
51
+ this.tools = tools;
52
+ }
53
+ /**
54
+ * The agent's tools by the keys the model sees: builtins by name, plugin tools as
55
+ * `plugin__<plugin>__<tool>`, and each connector reference expanded to its live tools'
56
+ * `mcp__<slug>__<tool>` keys as the registry resolves them for a run; connector tools that
57
+ * cannot load now are listed with the registry's reason.
58
+ */
59
+ async toolKeys(orgId, d) {
60
+ const connectors = d.tools.filter((r) => r.kind === "connector");
61
+ const resolved = connectors.length === 0
62
+ ? { tools: [], unavailable: [] }
63
+ : await this.tools.forAgent(orgId, { tools: connectors });
64
+ const live = new Map();
65
+ for (const t of resolved.tools) {
66
+ if (t.source.kind !== "connector")
67
+ continue;
68
+ live.set(t.source.connectorId, [...(live.get(t.source.connectorId) ?? []), t.key]);
69
+ }
70
+ const keys = d.tools.flatMap((r) => r.kind === "connector"
71
+ ? (live.get(r.connectorId) ?? [])
72
+ : [r.kind === "builtin" ? r.name : extensionToolKey(r.plugin, r.name)]);
73
+ return {
74
+ keys: [...new Set(keys)],
75
+ unavailable: resolved.unavailable.map((u) => ({ tool: u.ref, reason: u.reason })),
76
+ };
77
+ }
78
+ onModuleInit() {
79
+ this.registry.register([
80
+ defineOperation({
81
+ id: "platform.overview",
82
+ description: "Explain what the platform is, the tool families you have, your role in this org and what that role may build, and the operation domains to browse. Start here when asked what you can do on the platform.",
83
+ input: EMPTY,
84
+ example: {},
85
+ authz: { orgAction: "org.read" },
86
+ mirrors: [],
87
+ confirm: "read",
88
+ run: async (_input, ctx) => {
89
+ const facts = await this.actor.facts({
90
+ orgId: ctx.orgId,
91
+ accountId: ctx.actorAccountId,
92
+ agentId: ctx.agentId,
93
+ conversationId: ctx.conversationId,
94
+ runId: ctx.runId,
95
+ });
96
+ const role = facts.role;
97
+ return {
98
+ platform: "Capybara is an enterprise agent platform: orgs of people build and use agents that work with skills, tools and connectors. Everything it can do is offered by extensions and plugins.",
99
+ toolFamilies: FAMILIES,
100
+ you: {
101
+ role,
102
+ isSuperAdmin: facts.isSuperAdmin,
103
+ canBuild: role === null ? [] : BUILDS.filter((b) => can(role, b.action)).map((b) => b.what),
104
+ platformToolSetting: facts.setting,
105
+ personPresent: facts.personPresent,
106
+ },
107
+ domains: this.registry.domains(),
108
+ next: 'Use action "browse" with a domain to see its operations, then "describe" before "call".',
109
+ };
110
+ },
111
+ }),
112
+ defineOperation({
113
+ id: "platform.me",
114
+ description: "Show this agent as configured: its model, tools by the keys you call them by (connector tools as mcp__<connector>__<tool>, with those that cannot load now and why), skills (org and pinned), sub-agents, whether it runs in a sandbox, and the sandbox network mode. Secrets are never shown.",
115
+ input: EMPTY,
116
+ example: {},
117
+ authz: { orgAction: "agents.use" },
118
+ mirrors: [],
119
+ confirm: "read",
120
+ run: async (_input, ctx) => asToolError(async () => {
121
+ const agent = await this.agents.get(ctx.orgId, ctx.agentId, ctx.actorAccountId);
122
+ const d = agent.definition;
123
+ const { keys: toolKeys, unavailable } = await this.toolKeys(ctx.orgId, d);
124
+ const sandbox = toolKeys.some((k) => SANDBOX_TOOL_NAMES.includes(k));
125
+ const org = await this.settings.get(ctx.orgId);
126
+ const dep = this.settings.deployment().sandboxEgress;
127
+ const egress = effectiveSandboxEgress({ egress: dep.mode, allowHosts: dep.allowHosts }, org.sandboxEgress);
128
+ return {
129
+ id: agent.id,
130
+ name: d.name,
131
+ visibility: agent.visibility,
132
+ version: agent.currentVersion,
133
+ model: d.model,
134
+ fallback: d.fallback,
135
+ tools: toolKeys,
136
+ ...(unavailable.length > 0 && { unavailableTools: unavailable }),
137
+ toolPolicies: d.toolPolicies,
138
+ skills: {
139
+ orgSkills: d.skills?.orgSkills ?? [],
140
+ pinned: d.skills?.pinned ?? [],
141
+ },
142
+ subagents: d.subagents ?? null,
143
+ sandbox: sandbox ? { enabled: true, egress: egress.egress } : { enabled: false },
144
+ };
145
+ }),
146
+ }),
147
+ ]);
148
+ }
149
+ };
150
+ PlatformOperationsProvider = __decorate([
151
+ Injectable(),
152
+ __param(0, Inject(PlatformOperations)),
153
+ __param(1, Inject(PlatformActor)),
154
+ __param(2, Inject(AgentsService)),
155
+ __param(3, Inject(OrgSettingsService)),
156
+ __param(4, Inject(ToolRegistry))
157
+ ], PlatformOperationsProvider);
158
+ export { PlatformOperationsProvider };
@@ -0,0 +1,33 @@
1
+ import { type OnModuleInit } from "@nestjs/common";
2
+ import { CatalogService } from "../../catalog/catalog.service.js";
3
+ import { OrgCatalogService } from "../../catalog/org-catalog.service.js";
4
+ import { PluginInstaller } from "../../catalog/plugin-install.js";
5
+ import { PlatformPluginUpdater } from "../../catalog/plugin-upgrade.js";
6
+ import { OrgExtensionConfigs } from "../../extensions/org-config.js";
7
+ import { KernelDb } from "../../infra/database/kernel-db.js";
8
+ import { PlatformOperations } from "../registry.js";
9
+ export declare const OTHER_ORG = "This plugin belongs to another org; use the admin console.";
10
+ export declare const NEEDS_INPUT = "This plugin needs configuration a person must enter; ask them to enable it on the \u63D2\u4EF6 page.";
11
+ /**
12
+ * Plugin operations of the `Platform` tool (spec §7): the org's view (list, get, switch on or off)
13
+ * and the super admin's platform view (list, get, update with its preview). Every platform result
14
+ * goes through {@link redactOrgs}: other orgs only as counts (spec §6.1).
15
+ */
16
+ export declare class PluginsOperations implements OnModuleInit {
17
+ private readonly registry;
18
+ private readonly orgCatalog;
19
+ private readonly catalog;
20
+ private readonly updater;
21
+ private readonly installer;
22
+ private readonly extensions;
23
+ private readonly kdb;
24
+ constructor(registry: PlatformOperations, orgCatalog: OrgCatalogService, catalog: CatalogService, updater: PlatformPluginUpdater, installer: PluginInstaller, extensions: OrgExtensionConfigs, kdb: KernelDb);
25
+ /**
26
+ * Refuses a super-admin operation on an item another org owns: its results would describe that
27
+ * org's private plugin in this org's log (spec §6.1). Platform items and the org's own pass.
28
+ */
29
+ private assertNotOtherOrgs;
30
+ /** How many live catalog items other orgs own (left out of the platform list). */
31
+ private otherOrgItems;
32
+ onModuleInit(): void;
33
+ }
@@ -0,0 +1,377 @@
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 { ToolError } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { z } from "zod";
13
+ import { CatalogService } from "../../catalog/catalog.service.js";
14
+ import { OrgCatalogService } from "../../catalog/org-catalog.service.js";
15
+ import { PluginInstaller, uninstallPreviewHash } from "../../catalog/plugin-install.js";
16
+ import { PlatformPluginUpdater } from "../../catalog/plugin-upgrade.js";
17
+ import { OrgExtensionConfigs } from "../../extensions/org-config.js";
18
+ import { KernelDb } from "../../infra/database/kernel-db.js";
19
+ import { defineOperation } from "../operation.js";
20
+ import { redactOrgs } from "../redact-orgs.js";
21
+ import { PlatformOperations } from "../registry.js";
22
+ import { asToolError, viaAgent } from "./errors.js";
23
+ import { Cursor, pageOf, startOf } from "./paging.js";
24
+ import { localized } from "./summary.js";
25
+ const Id = z.string().min(1).max(100);
26
+ const Version = z.string().min(1).max(100);
27
+ const Hash = z.string().min(1).max(200);
28
+ /** Entries per page of the paged lists (the tool caps a bare list at 50). */
29
+ const PAGE = 50;
30
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
31
+ export const OTHER_ORG = "This plugin belongs to another org; use the admin console.";
32
+ const LOCKED = "This plugin is on for every org (or shipped with the platform) and cannot be switched off in one org.";
33
+ /** The confirm value of switching off a plugin with nothing installed in the org. */
34
+ const NOTHING_INSTALLED = "nothing-installed";
35
+ export const NEEDS_INPUT = "This plugin needs configuration a person must enter; ask them to enable it on the 插件 page.";
36
+ /** An org's view of a plugin, as the list shows it. */
37
+ const brief = (i) => ({
38
+ id: i.id,
39
+ name: i.name,
40
+ displayName: i.displayName,
41
+ description: i.description,
42
+ scope: i.scope,
43
+ state: i.state,
44
+ switchable: i.switchable,
45
+ builtin: i.builtin,
46
+ notDeployed: i.notDeployed,
47
+ latestVersion: i.latestVersion,
48
+ installedVersion: i.installed?.version ?? null,
49
+ componentCounts: i.componentCounts,
50
+ owner: i.owner,
51
+ request: i.request,
52
+ });
53
+ const hasConfigFields = (schema) => {
54
+ const props = schema?.properties;
55
+ return typeof props === "object" && props !== null && Object.keys(props).length > 0;
56
+ };
57
+ /**
58
+ * Whether switching the plugin on needs input a person enters (the web's install wizard, the
59
+ * web's `needsInput`): an org config still missing (`needs_config`), connector templates, or the
60
+ * org config form of its extension while that extension is off in the org.
61
+ */
62
+ function needsInput(item, extensions) {
63
+ if (item.state === "needs_config")
64
+ return true;
65
+ if (item.installed !== null)
66
+ return false;
67
+ if (item.componentCounts.connectorTemplates > 0)
68
+ return true;
69
+ if (item.componentCounts.extension === 0)
70
+ return false;
71
+ const own = extensions.find((e) => e.catalogItem?.itemId === item.id);
72
+ return own !== undefined && !own.enabled && hasConfigFields(own.orgConfigSchema);
73
+ }
74
+ /**
75
+ * Plugin operations of the `Platform` tool (spec §7): the org's view (list, get, switch on or off)
76
+ * and the super admin's platform view (list, get, update with its preview). Every platform result
77
+ * goes through {@link redactOrgs}: other orgs only as counts (spec §6.1).
78
+ */
79
+ let PluginsOperations = class PluginsOperations {
80
+ registry;
81
+ orgCatalog;
82
+ catalog;
83
+ updater;
84
+ installer;
85
+ extensions;
86
+ kdb;
87
+ constructor(registry, orgCatalog, catalog, updater, installer, extensions, kdb) {
88
+ this.registry = registry;
89
+ this.orgCatalog = orgCatalog;
90
+ this.catalog = catalog;
91
+ this.updater = updater;
92
+ this.installer = installer;
93
+ this.extensions = extensions;
94
+ this.kdb = kdb;
95
+ }
96
+ /**
97
+ * Refuses a super-admin operation on an item another org owns: its results would describe that
98
+ * org's private plugin in this org's log (spec §6.1). Platform items and the org's own pass.
99
+ */
100
+ async assertNotOtherOrgs(itemId, orgId) {
101
+ if (!UUID_RE.test(itemId))
102
+ return;
103
+ const row = await this.kdb.db
104
+ .selectFrom("catalog_items")
105
+ .select("owner_org_id")
106
+ .where("id", "=", itemId)
107
+ .executeTakeFirst();
108
+ if (row?.owner_org_id != null && row.owner_org_id !== orgId)
109
+ throw new ToolError(OTHER_ORG);
110
+ }
111
+ /** How many live catalog items other orgs own (left out of the platform list). */
112
+ async otherOrgItems(orgId) {
113
+ const r = await this.kdb.db
114
+ .selectFrom("catalog_items")
115
+ .select((eb) => eb.fn.countAll().as("n"))
116
+ .where("deleted_at", "is", null)
117
+ .where("owner_org_id", "is not", null)
118
+ .where("owner_org_id", "!=", orgId)
119
+ .executeTakeFirstOrThrow();
120
+ return Number(r.n);
121
+ }
122
+ onModuleInit() {
123
+ this.registry.register([
124
+ defineOperation({
125
+ id: "plugins.list",
126
+ description: "List the plugins this org can see, with their state here (on, off, needs_config, unavailable, not_offered), whether an org admin can switch them, and the org's pending request. Pages by 50: pass the returned next as params.cursor.",
127
+ input: z.object({ cursor: Cursor.optional() }).strict(),
128
+ example: {},
129
+ authz: { orgAction: "catalog.read" },
130
+ mirrors: ["GET /api/v1/orgs/:orgId/catalog"],
131
+ confirm: "read",
132
+ run: async (input, ctx) => {
133
+ const all = await this.orgCatalog.list(ctx.orgId, ctx.actorAccountId);
134
+ return pageOf(all.map(brief), startOf(input.cursor), PAGE);
135
+ },
136
+ }),
137
+ defineOperation({
138
+ id: "plugins.get",
139
+ description: "Read one plugin as this org sees it: its state, extension, connector templates (presets only, never credentials), dependencies, skills and agent templates.",
140
+ input: z.object({ itemId: Id }).strict(),
141
+ example: { itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c" },
142
+ authz: { orgAction: "catalog.read" },
143
+ mirrors: ["GET /api/v1/orgs/:orgId/catalog/:itemId"],
144
+ confirm: "read",
145
+ errors: [
146
+ { code: "catalog.item_not_found", next: "Check the plugin id with plugins.list." },
147
+ ],
148
+ run: async (input, ctx) => asToolError(async () => {
149
+ const d = await this.orgCatalog.detail(ctx.orgId, ctx.actorAccountId, input.itemId);
150
+ return { ...d, item: brief(d.item) };
151
+ }),
152
+ }),
153
+ defineOperation({
154
+ id: "plugins.disable-preview",
155
+ description: "Preview switching a plugin off in this org (org admins): what it would remove and which agents use it, and the confirm value plugins.set-enabled needs to switch it off. Show the preview to the person before switching off.",
156
+ input: z.object({ itemId: Id }).strict(),
157
+ example: { itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c" },
158
+ // the web previews through the switch route itself (no confirm); writes nothing here
159
+ authz: { orgAction: "org.extensions.manage" },
160
+ mirrors: [],
161
+ confirm: "read",
162
+ errors: [
163
+ { code: "catalog.item_not_found", next: "Check the plugin id with plugins.list." },
164
+ ],
165
+ run: async (input, ctx) => asToolError(async () => {
166
+ const d = await this.orgCatalog.detail(ctx.orgId, ctx.actorAccountId, input.itemId);
167
+ if (!d.item.switchable)
168
+ throw new ToolError(LOCKED);
169
+ const live = d.item.installed;
170
+ if (live === null) {
171
+ return {
172
+ preview: null,
173
+ confirm: NOTHING_INSTALLED,
174
+ next: "Nothing is installed in the org, so switching off removes nothing; pass this confirm value.",
175
+ };
176
+ }
177
+ const preview = await this.installer.previewUninstall(ctx.orgId, live.pluginInstallId);
178
+ return { preview, confirm: uninstallPreviewHash(preview) };
179
+ }),
180
+ }),
181
+ defineOperation({
182
+ id: "plugins.set-enabled",
183
+ description: "Switch a plugin on or off in this org. Switching on installs it; a plugin whose enabling needs configuration a person enters (connector credentials, extension config) is refused, so point the person to the 插件 page. Switching off removes what the plugin brought and needs confirm: the value plugins.disable-preview returned with the preview the person saw.",
184
+ input: z.discriminatedUnion("enabled", [
185
+ z.object({ itemId: Id, enabled: z.literal(true) }).strict(),
186
+ z.object({ itemId: Id, enabled: z.literal(false), confirm: Hash }).strict(),
187
+ ]),
188
+ example: { itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c", enabled: true },
189
+ // the route needs catalog.read; setSwitch requires an org admin (any of skills.manage,
190
+ // connectors.manage, org.extensions.manage, all the admin role)
191
+ authz: { orgAction: "org.extensions.manage" },
192
+ authzNote: "service-enforced",
193
+ mirrors: ["PUT /api/v1/orgs/:orgId/catalog/:itemId/switch"],
194
+ confirm: "org",
195
+ errors: [
196
+ {
197
+ code: "plugin.switch_stale",
198
+ next: "The uninstall preview changed: call plugins.disable-preview again, show it, and call again with the new confirm value.",
199
+ },
200
+ {
201
+ code: "plugin.scope_locked",
202
+ next: "The plugin is on for every org and cannot be switched off in one org.",
203
+ },
204
+ {
205
+ code: "plugin.disabled",
206
+ next: "The super admin stopped this plugin on the platform; ask them.",
207
+ },
208
+ {
209
+ code: "catalog.approval_required",
210
+ next: "The plugin is not offered to this org: create an access request with requests.create.",
211
+ },
212
+ {
213
+ code: "plugin.skill_conflict",
214
+ next: "An org skill has the name of one of the plugin's skills; the person resolves it on the web.",
215
+ },
216
+ ],
217
+ summary: async (i, ctx) => {
218
+ const [item] = await this.orgCatalog.list(ctx.orgId, ctx.actorAccountId, i.itemId);
219
+ if (item === undefined)
220
+ throw new Error("no such plugin");
221
+ const n = localized(item.displayName, item.name);
222
+ if (i.enabled) {
223
+ return { zh: `在本组织启用插件「${n.zh}」`, en: `Enable plugin "${n.en}" in the org` };
224
+ }
225
+ const live = item.installed;
226
+ if (live === null) {
227
+ return {
228
+ zh: `在本组织停用插件「${n.zh}」(本组织未安装任何内容)`,
229
+ en: `Disable plugin "${n.en}" in the org (nothing is installed here)`,
230
+ };
231
+ }
232
+ // the preview the confirm value binds: what goes, and the agents that lose it
233
+ const p = await this.installer.previewUninstall(ctx.orgId, live.pluginInstallId);
234
+ return {
235
+ zh: `在本组织停用插件「${n.zh}」:移除 ${p.components.length} 个组件,${p.agents.length} 个智能体在用`,
236
+ en: `Disable plugin "${n.en}" in the org: removes ${p.components.length} components; ${p.agents.length} agents use it`,
237
+ };
238
+ },
239
+ run: async (input, ctx) => asToolError(async () => {
240
+ if (input.enabled) {
241
+ const [item] = await this.orgCatalog.list(ctx.orgId, ctx.actorAccountId, input.itemId);
242
+ if (item && needsInput(item, await this.extensions.list(ctx.orgId))) {
243
+ throw new ToolError(NEEDS_INPUT);
244
+ }
245
+ }
246
+ const r = await this.orgCatalog.setSwitch(ctx.orgId, ctx.actorAccountId, input.itemId, input.enabled ? { enabled: true } : { enabled: false, confirm: input.confirm }, undefined, viaAgent("plugins.set-enabled", ctx));
247
+ if (r.kind === "done")
248
+ return { item: brief(r.item) };
249
+ // unreachable: confirm is required when switching off
250
+ return { preview: r.preview, confirm: r.confirm };
251
+ }),
252
+ }),
253
+ defineOperation({
254
+ id: "plugins.platform-list",
255
+ description: "List the platform's plugins and this org's own (super admin): scope, disabled, versions, pending confirmation and how many orgs use it. Plugins other orgs own are only counted (otherOrgItems); orgs are given as counts. Pages by 50: pass the returned next as params.cursor.",
256
+ input: z.object({ cursor: Cursor.optional() }).strict(),
257
+ example: {},
258
+ authz: { superAdmin: true },
259
+ mirrors: ["GET /api/v1/admin/catalog/items"],
260
+ confirm: "read",
261
+ run: async (input, ctx) => {
262
+ const p = await this.catalog.page({ limit: PAGE, offset: startOf(input.cursor) });
263
+ return redactOrgs({
264
+ items: p.items.filter((i) => i.owner.kind !== "org" || i.owner.orgId === ctx.orgId),
265
+ otherOrgItems: await this.otherOrgItems(ctx.orgId),
266
+ next: p.nextOffset === null ? null : String(p.nextOffset),
267
+ });
268
+ },
269
+ }),
270
+ defineOperation({
271
+ id: "plugins.platform-get",
272
+ description: "Read one platform catalog plugin (super admin): the item, its platform version and every version with its source. Orgs are given as counts only.",
273
+ input: z.object({ itemId: Id }).strict(),
274
+ example: { itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c" },
275
+ authz: { superAdmin: true },
276
+ mirrors: ["GET /api/v1/admin/catalog/items/:id"],
277
+ confirm: "read",
278
+ errors: [
279
+ {
280
+ code: "catalog.item_not_found",
281
+ next: "Check the plugin id with plugins.platform-list.",
282
+ },
283
+ ],
284
+ run: async (input, ctx) => asToolError(async () => {
285
+ await this.assertNotOtherOrgs(input.itemId, ctx.orgId);
286
+ const d = await this.catalog.get(input.itemId);
287
+ return redactOrgs({
288
+ item: d.item,
289
+ versions: d.versions.map((v) => ({
290
+ version: v.version,
291
+ source: v.source,
292
+ sourceRef: v.sourceRef,
293
+ sourceFormat: v.sourceFormat,
294
+ importedAt: v.importedAt,
295
+ ...(v.version === d.item.platformVersion && { manifest: v.manifest }),
296
+ })),
297
+ });
298
+ }),
299
+ }),
300
+ defineOperation({
301
+ id: "plugins.update-preview",
302
+ description: "Preview updating a platform plugin to another imported version (super admin): every component's change, the extension step and the org connectors it touches, with the diffHash plugins.update takes. Orgs are given as counts only; the admin console shows which.",
303
+ input: z.object({ itemId: Id, version: Version }).strict(),
304
+ example: { itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c", version: "1.2.0" },
305
+ authz: { superAdmin: true },
306
+ mirrors: ["POST /api/v1/admin/catalog/items/:id/update/preview"],
307
+ confirm: "read",
308
+ errors: [
309
+ {
310
+ code: "catalog.item_not_found",
311
+ next: "Check the plugin id and its versions with plugins.platform-get.",
312
+ },
313
+ ],
314
+ run: async (input, ctx) => asToolError(async () => {
315
+ await this.assertNotOtherOrgs(input.itemId, ctx.orgId);
316
+ return redactOrgs(await this.updater.preview(input.itemId, input.version));
317
+ }),
318
+ }),
319
+ defineOperation({
320
+ id: "plugins.update",
321
+ description: "Update a platform plugin to the version previewed (super admin), for every org at once: pass the version and the diffHash plugins.update-preview returned. A preview that is out of date is refused; preview again.",
322
+ input: z.object({ itemId: Id, version: Version, diffHash: Hash }).strict(),
323
+ example: {
324
+ itemId: "3f1c2a9e-5b7d-4e21-9c0a-1d2e3f4a5b6c",
325
+ version: "1.2.0",
326
+ diffHash: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
327
+ },
328
+ authz: { superAdmin: true },
329
+ mirrors: ["PUT /api/v1/admin/catalog/items/:id/update"],
330
+ confirm: "platform",
331
+ errors: [
332
+ {
333
+ code: "plugin.upgrade_stale",
334
+ next: "Call plugins.update-preview again and use its new diffHash.",
335
+ },
336
+ {
337
+ code: "plugin.install_in_progress",
338
+ next: "Another update of this plugin is running; try again in a minute.",
339
+ },
340
+ ],
341
+ summary: async (i, ctx) => {
342
+ await this.assertNotOtherOrgs(i.itemId, ctx.orgId);
343
+ const [{ item }, p] = await Promise.all([
344
+ this.catalog.get(i.itemId),
345
+ this.updater.preview(i.itemId, i.version),
346
+ ]);
347
+ const n = localized(item.displayName, item.name);
348
+ const count = (...changes) => p.components.filter((c) => changes.includes(c.change)).length;
349
+ const changed = count("upgrade", "downgrade");
350
+ const added = count("added");
351
+ const removed = count("removed");
352
+ // one version for every org: the orgs it is on in, as a count (spec §6.1)
353
+ const orgs = item.enabledOrgs;
354
+ return {
355
+ zh: `把平台插件「${n.zh}」从 ${p.from ?? "无"} 更新到 ${p.to}:组件 ${changed} 个更新、${added} 个新增、${removed} 个移除,影响 ${orgs} 个组织`,
356
+ en: `Update platform plugin "${n.en}" from ${p.from ?? "none"} to ${p.to}: components ${changed} updated, ${added} added, ${removed} removed; ${orgs} orgs affected`,
357
+ };
358
+ },
359
+ run: async (input, ctx) => asToolError(async () => {
360
+ await this.assertNotOtherOrgs(input.itemId, ctx.orgId);
361
+ return redactOrgs(await this.updater.update(ctx.actorAccountId, input.itemId, { version: input.version, diffHash: input.diffHash }, { auditDetail: viaAgent("plugins.update", ctx) }));
362
+ }),
363
+ }),
364
+ ]);
365
+ }
366
+ };
367
+ PluginsOperations = __decorate([
368
+ Injectable(),
369
+ __param(0, Inject(PlatformOperations)),
370
+ __param(1, Inject(OrgCatalogService)),
371
+ __param(2, Inject(CatalogService)),
372
+ __param(3, Inject(PlatformPluginUpdater)),
373
+ __param(4, Inject(PluginInstaller)),
374
+ __param(5, Inject(OrgExtensionConfigs)),
375
+ __param(6, Inject(KernelDb))
376
+ ], PluginsOperations);
377
+ export { PluginsOperations };
@@ -0,0 +1,14 @@
1
+ import { type OnModuleInit } from "@nestjs/common";
2
+ import { CatalogRequestsService } from "../../catalog/requests.service.js";
3
+ import { PlatformOperations } from "../registry.js";
4
+ /**
5
+ * Request operations of the `Platform` tool (spec §7): a member asks the org admins to switch a
6
+ * plugin on, an org admin asks the super admin for access to a plugin or for an import from a
7
+ * marketplace. Deciding a request is human-only (spec §6.4) and not offered.
8
+ */
9
+ export declare class RequestsOperations implements OnModuleInit {
10
+ private readonly registry;
11
+ private readonly requests;
12
+ constructor(registry: PlatformOperations, requests: CatalogRequestsService);
13
+ onModuleInit(): void;
14
+ }