@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,41 @@
1
+ import { OrgExtensionConfigs, type OrgExtensionInput, type OrgExtensionView } from "../extensions/org-config.js";
2
+ import { OrgCatalogService } from "./org-catalog.service.js";
3
+ import type { UninstallPreview } from "./plugin-install.js";
4
+ /** The result of {@link OrgExtensionSwitch.put}: the extension, or the plugin uninstall preview. */
5
+ export type OrgExtensionPutResult = {
6
+ kind: "done";
7
+ view: OrgExtensionView;
8
+ } | {
9
+ kind: "preview";
10
+ preview: UninstallPreview;
11
+ confirm: string;
12
+ };
13
+ /**
14
+ * `PUT orgs/:orgId/extensions/:extension`: for an extension that ships in a catalog plugin, `enabled`
15
+ * is the plugin's org switch ({@link OrgCatalogService.setSwitch}); anything else is the direct
16
+ * {@link OrgExtensionConfigs.put}. Lives in the catalog module because the catalog depends on the
17
+ * extensions, not the other way round. No in-process state.
18
+ *
19
+ * Order: the config is validated first (`validateOnly`: no side effect), so an invalid config fails
20
+ * before the plugin switches with the plain 400 `extension.config_invalid`. Switching on validates
21
+ * the effective config (the stored one with its secrets, or the given `config` merged with them),
22
+ * and the install receives the given `config` as its `extensionConfig`, so the extension is enabled
23
+ * with it. A config write that fails for another reason after the switch succeeded returns that
24
+ * error with the switch done (the two writes are separate transactions).
25
+ */
26
+ export declare class OrgExtensionSwitch {
27
+ private readonly configs;
28
+ private readonly catalog;
29
+ constructor(configs: OrgExtensionConfigs, catalog: OrgCatalogService);
30
+ /**
31
+ * - `enabled` on an extension of one catalog plugin: that plugin's switch; off without `confirm`
32
+ * returns the preview and its hash, with the hash uninstalls; a builtin plugin (any of several
33
+ * source items) -> 409 `plugin.scope_locked` (an `all` one may go off, layering spec §4).
34
+ * - A required bootstrap plugin, a config-declared extension and one sourced from several items
35
+ * keep the direct write.
36
+ * - `config` is always written directly, after the switch.
37
+ */
38
+ put(orgId: string, actor: string, extension: string, body: OrgExtensionInput & {
39
+ confirm?: string | undefined;
40
+ }, actorTokenId?: string): Promise<OrgExtensionPutResult>;
41
+ }
@@ -0,0 +1,115 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { ApiError } from "../errors.js";
12
+ import { OrgExtensionConfigs, } from "../extensions/org-config.js";
13
+ import { OrgCatalogService } from "./org-catalog.service.js";
14
+ /**
15
+ * `PUT orgs/:orgId/extensions/:extension`: for an extension that ships in a catalog plugin, `enabled`
16
+ * is the plugin's org switch ({@link OrgCatalogService.setSwitch}); anything else is the direct
17
+ * {@link OrgExtensionConfigs.put}. Lives in the catalog module because the catalog depends on the
18
+ * extensions, not the other way round. No in-process state.
19
+ *
20
+ * Order: the config is validated first (`validateOnly`: no side effect), so an invalid config fails
21
+ * before the plugin switches with the plain 400 `extension.config_invalid`. Switching on validates
22
+ * the effective config (the stored one with its secrets, or the given `config` merged with them),
23
+ * and the install receives the given `config` as its `extensionConfig`, so the extension is enabled
24
+ * with it. A config write that fails for another reason after the switch succeeded returns that
25
+ * error with the switch done (the two writes are separate transactions).
26
+ */
27
+ let OrgExtensionSwitch = class OrgExtensionSwitch {
28
+ configs;
29
+ catalog;
30
+ constructor(configs, catalog) {
31
+ this.configs = configs;
32
+ this.catalog = catalog;
33
+ }
34
+ /**
35
+ * - `enabled` on an extension of one catalog plugin: that plugin's switch; off without `confirm`
36
+ * returns the preview and its hash, with the hash uninstalls; a builtin plugin (any of several
37
+ * source items) -> 409 `plugin.scope_locked` (an `all` one may go off, layering spec §4).
38
+ * - A required bootstrap plugin, a config-declared extension and one sourced from several items
39
+ * keep the direct write.
40
+ * - `config` is always written directly, after the switch.
41
+ */
42
+ async put(orgId, actor, extension, body, actorTokenId) {
43
+ const { confirm, ...input } = body;
44
+ const plan = input.enabled === undefined
45
+ ? { kind: "direct" }
46
+ : await this.configs.switchPlan(extension, input.enabled);
47
+ if (plan.kind === "locked") {
48
+ throw new ApiError("plugin.scope_locked", "This plugin is built in: it is on for every organization and cannot be switched off here");
49
+ }
50
+ if (plan.kind === "direct") {
51
+ return {
52
+ kind: "done",
53
+ view: await this.configs.put(orgId, extension, input, actor, actorTokenId),
54
+ };
55
+ }
56
+ const { enabled } = input;
57
+ const config = input.config !== undefined ? { config: input.config } : {};
58
+ // Fail before the switch when the config would be refused: switching on checks the effective
59
+ // config (a required field never saved is refused here, not as a failed install)
60
+ if (enabled || input.config !== undefined) {
61
+ await this.configs.put(orgId, extension, { ...config, ...(enabled && { enabled: true }) }, actor, actorTokenId, { validateOnly: true });
62
+ }
63
+ const r = await this.catalog
64
+ .setSwitch(orgId, actor, plan.itemId, enabled
65
+ ? {
66
+ enabled: true,
67
+ ...(input.config !== undefined && { inputs: { extensionConfig: input.config } }),
68
+ }
69
+ : { enabled: false, ...(confirm !== undefined && { confirm }) }, actorTokenId)
70
+ .catch((e) => {
71
+ throw configInvalidOf(e) ?? e;
72
+ });
73
+ if (r.kind === "preview")
74
+ return r;
75
+ if (input.config === undefined) {
76
+ if (!enabled) {
77
+ const view = (await this.configs.list(orgId)).find((v) => v.plugin === extension);
78
+ if (view)
79
+ return { kind: "done", view };
80
+ }
81
+ // Switching on: the install enabled it already (no second write)
82
+ return {
83
+ kind: "done",
84
+ view: await this.configs.put(orgId, extension, { enabled: true }, actor, actorTokenId, {
85
+ ifDisabled: { skipped: false },
86
+ }),
87
+ };
88
+ }
89
+ return {
90
+ kind: "done",
91
+ view: await this.configs.put(orgId, extension, { config: input.config, ...(enabled && { enabled: true }) }, actor, actorTokenId),
92
+ };
93
+ }
94
+ };
95
+ OrgExtensionSwitch = __decorate([
96
+ Injectable(),
97
+ __param(0, Inject(OrgExtensionConfigs)),
98
+ __param(1, Inject(OrgCatalogService))
99
+ ], OrgExtensionSwitch);
100
+ export { OrgExtensionSwitch };
101
+ /**
102
+ * An install that failed only at its own extension step on the org config (it was valid when
103
+ * checked, then changed concurrently): the plain 400 `extension.config_invalid` with the field
104
+ * issues, as when saving the config; the install was rolled back. Anything else: undefined.
105
+ */
106
+ function configInvalidOf(e) {
107
+ if (!(e instanceof ApiError) || e.code !== "plugin.install_failed")
108
+ return undefined;
109
+ const [d] = (e.details ?? []);
110
+ if (d?.step !== "extension" || d.code !== "extension.config_invalid")
111
+ return undefined;
112
+ if (d.dependency !== undefined || d.rolledBack !== true)
113
+ return undefined;
114
+ return new ApiError("extension.config_invalid", d.message ?? "Invalid organization config", d.causeDetails);
115
+ }
@@ -0,0 +1,119 @@
1
+ import type { LocalizedName } from "@capybara-hq/plugin-sdk";
2
+ import { z } from "zod";
3
+ import { ExtensionDisplayNames } from "../extensions/display-name.js";
4
+ import { OrgExtensionConfigs, type OrgExtensionView } from "../extensions/org-config.js";
5
+ import { OrgOverrides, type OrgOverrideView } from "../extensions/org-overrides.js";
6
+ import { type Principal } from "../identity/principal.js";
7
+ import { type OrgContext } from "../orgs/org.guard.js";
8
+ import { type OrgToolSwitch, OrgToolSwitches, type OrgToolSwitchResult } from "../tools/org-tool-switches.js";
9
+ import { OrgExtensionSwitch } from "./org-extension-switch.js";
10
+ import type { UninstallPreview } from "./plugin-install.js";
11
+ declare const PutBody: z.ZodObject<{
12
+ enabled: z.ZodOptional<z.ZodBoolean>;
13
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ force: z.ZodOptional<z.ZodBoolean>;
15
+ confirm: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strict>;
17
+ declare const OverridesPut: z.ZodObject<{
18
+ values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
19
+ secretEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
20
+ path: z.ZodString;
21
+ key: z.ZodString;
22
+ value: z.ZodOptional<z.ZodNullable<z.ZodString>>;
23
+ renameFrom: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strict>>>;
25
+ }, z.core.$strict>;
26
+ declare const OverridesTake: z.ZodObject<{
27
+ paths: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strict>;
29
+ declare const ToolSwitchPut: z.ZodObject<{
30
+ enabled: z.ZodBoolean;
31
+ confirm: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strict>;
33
+ /** Route parameters of the overrides and tool switch routes (decision R20). */
34
+ declare const ExtensionParams: z.ZodObject<{
35
+ extension: z.ZodString;
36
+ }, z.core.$strip>;
37
+ declare const ToolParams: z.ZodObject<{
38
+ extension: z.ZodString;
39
+ tool: z.ZodString;
40
+ }, z.core.$strip>;
41
+ /**
42
+ * One extension of the org list: the org view plus the plugin's display name and the extension
43
+ * points it provides (`channel@1`, `web-search@1`, … the names only, also for members).
44
+ */
45
+ export type OrgExtensionItem = OrgExtensionView & {
46
+ displayName: LocalizedName | null;
47
+ provides: string[];
48
+ };
49
+ /**
50
+ * What a member sees of an extension: its state and the points it provides (names only, what the
51
+ * 扩展 page sorts by), never the org config, the secrets' state, the config schema or the
52
+ * permission list.
53
+ */
54
+ export type OrgExtensionMemberItem = Omit<OrgExtensionItem, "config" | "secrets" | "orgConfigSchema" | "permissions">;
55
+ /**
56
+ * Org-level extension enablement and config (`/api/v1/orgs/:orgId/extensions`); responses echo only
57
+ * non-secret config and whether each secret is set.
58
+ */
59
+ export declare class OrgExtensionConfigsController {
60
+ private readonly configs;
61
+ private readonly displayNames;
62
+ private readonly extSwitch;
63
+ constructor(configs: OrgExtensionConfigs, displayNames: ExtensionDisplayNames, extSwitch: OrgExtensionSwitch);
64
+ /**
65
+ * The org's extensions (also the channel plugin options: those providing `channel@1`). Members
66
+ * get the projection {@link OrgExtensionMemberItem}; admins the full view.
67
+ */
68
+ list(org: OrgContext): Promise<{
69
+ extensions: OrgExtensionItem[] | OrgExtensionMemberItem[];
70
+ }>;
71
+ /**
72
+ * Writes enablement and / or config; see {@link OrgExtensionSwitch.put} for how `enabled` follows
73
+ * the extension's plugin (off answers `{ preview, confirm }` until `confirm` carries the hash).
74
+ */
75
+ put(principal: Principal, org: OrgContext, extension: string, body: z.infer<typeof PutBody>): Promise<{
76
+ extension: OrgExtensionItem;
77
+ } | {
78
+ preview: UninstallPreview;
79
+ confirm: string;
80
+ }>;
81
+ }
82
+ /**
83
+ * The org's two-level deployment config of an extension (spec A §5.3 to §5.6): following or a copy,
84
+ * the read-only and overridable fields (hidden ones are never sent), secrets as set or not.
85
+ */
86
+ export declare class OrgExtensionOverridesController {
87
+ private readonly overrides;
88
+ constructor(overrides: OrgOverrides);
89
+ view(org: OrgContext, { extension }: z.infer<typeof ExtensionParams>): Promise<OrgOverrideView>;
90
+ /**
91
+ * Saves overridable fields; the first save makes the copy, which must be valid on its own (the
92
+ * org's own secrets in the same save). A read-only, hidden or unknown field -> 400
93
+ * `extension.field_not_overridable`; invalid -> 400 `extension.config_invalid`.
94
+ */
95
+ save(principal: Principal, org: OrgContext, { extension }: z.infer<typeof ExtensionParams>, body: z.infer<typeof OverridesPut>): Promise<OrgOverrideView>;
96
+ /** Drops the copy (its secrets too): the org follows the platform again. */
97
+ reset(principal: Principal, org: OrgContext, { extension }: z.infer<typeof ExtensionParams>): Promise<OrgOverrideView>;
98
+ /** Takes the platform's current values of non-secret overridable fields into the copy. */
99
+ take(principal: Principal, org: OrgContext, { extension }: z.infer<typeof ExtensionParams>, body: z.infer<typeof OverridesTake>): Promise<OrgOverrideView>;
100
+ }
101
+ /**
102
+ * The org's switches of an extension's single tools (layering spec A §7): members read them, org
103
+ * admins turn a tool off (previewed with the agents that selected it, PCM §5 rule 8) or on.
104
+ */
105
+ export declare class OrgExtensionToolSwitchesController {
106
+ private readonly switches;
107
+ constructor(switches: OrgToolSwitches);
108
+ /** Every tool the extension registers, with its switch (on unless the org turned it off). */
109
+ list(org: OrgContext, { extension }: z.infer<typeof ExtensionParams>): Promise<{
110
+ tools: OrgToolSwitch[];
111
+ }>;
112
+ /**
113
+ * Switches one tool: on applies at once; off answers `{ applied: false, affectedAgents, confirm }`
114
+ * until `confirm` carries the hash (a changed preview -> 409 `plugin.switch_stale`). A tool the
115
+ * extension does not register -> 404 `extension.tool_not_found`.
116
+ */
117
+ set(principal: Principal, org: OrgContext, { extension, tool }: z.infer<typeof ToolParams>, body: z.infer<typeof ToolSwitchPut>): Promise<OrgToolSwitchResult>;
118
+ }
119
+ export {};
@@ -0,0 +1,266 @@
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, Delete, Get, HttpCode, Inject, Param, Post, Put } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { ExtensionDisplayNames } from "../extensions/display-name.js";
13
+ import { OrgExtensionConfigs, providesOf, } from "../extensions/org-config.js";
14
+ import { OrgOverrides } from "../extensions/org-overrides.js";
15
+ import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
16
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
17
+ import { ZBody, ZParam } from "../infra/validation/zod-params.js";
18
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
19
+ import { roleAtLeast } from "../orgs/roles.js";
20
+ import { OrgToolSwitches, } from "../tools/org-tool-switches.js";
21
+ import { OrgExtensionSwitch } from "./org-extension-switch.js";
22
+ const PutBody = z
23
+ .object({
24
+ enabled: z.boolean().optional(),
25
+ config: z.record(z.string(), z.unknown()).optional(),
26
+ force: z.boolean().optional(),
27
+ /** The hash of the plugin uninstall preview, to confirm switching the extension's plugin off. */
28
+ confirm: z.string().optional(),
29
+ })
30
+ .strict();
31
+ class OrgExtensionPutBody extends createZodDto(PutBody, "OrgExtensionPutBody") {
32
+ }
33
+ const OverrideSecretEntry = z
34
+ .object({
35
+ /** A secret record field of the copy some `x-ui.secrets[].path` names. */
36
+ path: z.string().min(1).max(256),
37
+ key: z.string().min(1).max(256),
38
+ /** A string sets the key, `null` removes it. */
39
+ value: z.string().max(65_536).nullable().optional(),
40
+ /** Moves the value at this key to `key` first. */
41
+ renameFrom: z.string().min(1).max(256).optional(),
42
+ })
43
+ .strict()
44
+ .refine((e) => e.value !== undefined || e.renameFrom !== undefined, {
45
+ message: "an entry needs value or renameFrom",
46
+ })
47
+ .refine((e) => e.key !== "__proto__" && e.renameFrom !== "__proto__", {
48
+ message: "__proto__ is not a valid key",
49
+ });
50
+ const OverridesPut = z
51
+ .object({
52
+ /** Overridable field dot path -> new value (`null` clears); secret fields too. */
53
+ values: z.record(z.string().min(1).max(256), z.unknown()),
54
+ secretEntries: z.array(OverrideSecretEntry).max(200).optional(),
55
+ })
56
+ .strict();
57
+ const OverridesTake = z
58
+ .object({ paths: z.array(z.string().min(1).max(256)).min(1).max(200) })
59
+ .strict();
60
+ const ToolSwitchPut = z
61
+ .object({
62
+ enabled: z.boolean(),
63
+ /** The hash of the switch-off preview, to confirm turning the tool off. */
64
+ confirm: z.string().min(1).max(128).optional(),
65
+ })
66
+ .strict();
67
+ class OrgToolSwitchPutBody extends createZodDto(ToolSwitchPut, "OrgToolSwitchPutBody") {
68
+ }
69
+ /** Route parameters of the overrides and tool switch routes (decision R20). */
70
+ const ExtensionParams = z.object({ extension: z.string().min(1).max(64) });
71
+ const ToolParams = ExtensionParams.extend({ tool: z.string().min(1).max(64) });
72
+ class OrgExtensionParamsDto extends createZodDto(ExtensionParams, "OrgExtensionParams") {
73
+ }
74
+ class OrgExtensionToolParamsDto extends createZodDto(ToolParams, "OrgExtensionToolParams") {
75
+ }
76
+ class OrgOverridesPutBody extends createZodDto(OverridesPut, "OrgOverridesPutBody") {
77
+ }
78
+ class OrgOverridesTakeBody extends createZodDto(OverridesTake, "OrgOverridesTakeBody") {
79
+ }
80
+ /**
81
+ * Org-level extension enablement and config (`/api/v1/orgs/:orgId/extensions`); responses echo only
82
+ * non-secret config and whether each secret is set.
83
+ */
84
+ let OrgExtensionConfigsController = class OrgExtensionConfigsController {
85
+ configs;
86
+ displayNames;
87
+ extSwitch;
88
+ constructor(configs, displayNames, extSwitch) {
89
+ this.configs = configs;
90
+ this.displayNames = displayNames;
91
+ this.extSwitch = extSwitch;
92
+ }
93
+ /**
94
+ * The org's extensions (also the channel plugin options: those providing `channel@1`). Members
95
+ * get the projection {@link OrgExtensionMemberItem}; admins the full view.
96
+ */
97
+ async list(org) {
98
+ const views = await this.configs.list(org.orgId);
99
+ const names = await this.displayNames.many(views.map((v) => v.plugin));
100
+ const items = views.map((v) => ({
101
+ ...v,
102
+ displayName: names.get(v.plugin) ?? null,
103
+ provides: providesOf(v),
104
+ }));
105
+ if (roleAtLeast(org.role, "admin"))
106
+ return { extensions: items };
107
+ return {
108
+ extensions: items.map(({ config: _c, secrets: _s, orgConfigSchema: _o, permissions: _p, ...rest }) => rest),
109
+ };
110
+ }
111
+ /**
112
+ * Writes enablement and / or config; see {@link OrgExtensionSwitch.put} for how `enabled` follows
113
+ * the extension's plugin (off answers `{ preview, confirm }` until `confirm` carries the hash).
114
+ */
115
+ async put(principal, org, extension, body) {
116
+ const p = requireUser(principal);
117
+ const r = await this.extSwitch.put(org.orgId, p.account.id, extension, body, patTokenId(p));
118
+ if (r.kind === "preview")
119
+ return { preview: r.preview, confirm: r.confirm };
120
+ return {
121
+ extension: {
122
+ ...r.view,
123
+ displayName: await this.displayNames.get(r.view.plugin),
124
+ provides: providesOf(r.view),
125
+ },
126
+ };
127
+ }
128
+ };
129
+ __decorate([
130
+ Get(),
131
+ OrgAction("org.extensions.read"),
132
+ __param(0, CurrentOrg())
133
+ ], OrgExtensionConfigsController.prototype, "list", null);
134
+ __decorate([
135
+ Put(":extension"),
136
+ OrgAction("org.extensions.manage"),
137
+ __param(0, CurrentPrincipal()),
138
+ __param(1, CurrentOrg()),
139
+ __param(2, Param("extension")),
140
+ __param(3, ZBody(OrgExtensionPutBody))
141
+ ], OrgExtensionConfigsController.prototype, "put", null);
142
+ OrgExtensionConfigsController = __decorate([
143
+ Controller("api/v1/orgs/:orgId/extensions"),
144
+ __param(0, Inject(OrgExtensionConfigs)),
145
+ __param(1, Inject(ExtensionDisplayNames)),
146
+ __param(2, Inject(OrgExtensionSwitch))
147
+ ], OrgExtensionConfigsController);
148
+ export { OrgExtensionConfigsController };
149
+ /**
150
+ * The org's two-level deployment config of an extension (spec A §5.3 to §5.6): following or a copy,
151
+ * the read-only and overridable fields (hidden ones are never sent), secrets as set or not.
152
+ */
153
+ let OrgExtensionOverridesController = class OrgExtensionOverridesController {
154
+ overrides;
155
+ constructor(overrides) {
156
+ this.overrides = overrides;
157
+ }
158
+ view(org, { extension }) {
159
+ return this.overrides.view(org.orgId, extension);
160
+ }
161
+ /**
162
+ * Saves overridable fields; the first save makes the copy, which must be valid on its own (the
163
+ * org's own secrets in the same save). A read-only, hidden or unknown field -> 400
164
+ * `extension.field_not_overridable`; invalid -> 400 `extension.config_invalid`.
165
+ */
166
+ save(principal, org, { extension }, body) {
167
+ const p = requireUser(principal);
168
+ return this.overrides.save(org.orgId, extension, body.values, body.secretEntries ?? [], {
169
+ accountId: p.account.id,
170
+ tokenId: patTokenId(p),
171
+ });
172
+ }
173
+ /** Drops the copy (its secrets too): the org follows the platform again. */
174
+ reset(principal, org, { extension }) {
175
+ const p = requireUser(principal);
176
+ return this.overrides.reset(org.orgId, extension, {
177
+ accountId: p.account.id,
178
+ tokenId: patTokenId(p),
179
+ });
180
+ }
181
+ /** Takes the platform's current values of non-secret overridable fields into the copy. */
182
+ take(principal, org, { extension }, body) {
183
+ const p = requireUser(principal);
184
+ return this.overrides.take(org.orgId, extension, body.paths, {
185
+ accountId: p.account.id,
186
+ tokenId: patTokenId(p),
187
+ });
188
+ }
189
+ };
190
+ __decorate([
191
+ Get(),
192
+ OrgAction("org.extensions.manage"),
193
+ __param(0, CurrentOrg()),
194
+ __param(1, ZParam(OrgExtensionParamsDto))
195
+ ], OrgExtensionOverridesController.prototype, "view", null);
196
+ __decorate([
197
+ Put(),
198
+ OrgAction("org.extensions.manage"),
199
+ __param(0, CurrentPrincipal()),
200
+ __param(1, CurrentOrg()),
201
+ __param(2, ZParam(OrgExtensionParamsDto)),
202
+ __param(3, ZBody(OrgOverridesPutBody))
203
+ ], OrgExtensionOverridesController.prototype, "save", null);
204
+ __decorate([
205
+ Delete(),
206
+ OrgAction("org.extensions.manage"),
207
+ __param(0, CurrentPrincipal()),
208
+ __param(1, CurrentOrg()),
209
+ __param(2, ZParam(OrgExtensionParamsDto))
210
+ ], OrgExtensionOverridesController.prototype, "reset", null);
211
+ __decorate([
212
+ Post("take"),
213
+ HttpCode(200),
214
+ OrgAction("org.extensions.manage"),
215
+ __param(0, CurrentPrincipal()),
216
+ __param(1, CurrentOrg()),
217
+ __param(2, ZParam(OrgExtensionParamsDto)),
218
+ __param(3, ZBody(OrgOverridesTakeBody))
219
+ ], OrgExtensionOverridesController.prototype, "take", null);
220
+ OrgExtensionOverridesController = __decorate([
221
+ Controller("api/v1/orgs/:orgId/extensions/:extension/overrides"),
222
+ __param(0, Inject(OrgOverrides))
223
+ ], OrgExtensionOverridesController);
224
+ export { OrgExtensionOverridesController };
225
+ /**
226
+ * The org's switches of an extension's single tools (layering spec A §7): members read them, org
227
+ * admins turn a tool off (previewed with the agents that selected it, PCM §5 rule 8) or on.
228
+ */
229
+ let OrgExtensionToolSwitchesController = class OrgExtensionToolSwitchesController {
230
+ switches;
231
+ constructor(switches) {
232
+ this.switches = switches;
233
+ }
234
+ /** Every tool the extension registers, with its switch (on unless the org turned it off). */
235
+ async list(org, { extension }) {
236
+ return { tools: await this.switches.list(org.orgId, extension) };
237
+ }
238
+ /**
239
+ * Switches one tool: on applies at once; off answers `{ applied: false, affectedAgents, confirm }`
240
+ * until `confirm` carries the hash (a changed preview -> 409 `plugin.switch_stale`). A tool the
241
+ * extension does not register -> 404 `extension.tool_not_found`.
242
+ */
243
+ set(principal, org, { extension, tool }, body) {
244
+ const p = requireUser(principal);
245
+ return this.switches.set(org.orgId, extension, tool, body.enabled, { accountId: p.account.id, tokenId: patTokenId(p) }, body.confirm);
246
+ }
247
+ };
248
+ __decorate([
249
+ Get(),
250
+ OrgAction("org.extensions.read"),
251
+ __param(0, CurrentOrg()),
252
+ __param(1, ZParam(OrgExtensionParamsDto))
253
+ ], OrgExtensionToolSwitchesController.prototype, "list", null);
254
+ __decorate([
255
+ Put(":tool"),
256
+ OrgAction("org.extensions.manage"),
257
+ __param(0, CurrentPrincipal()),
258
+ __param(1, CurrentOrg()),
259
+ __param(2, ZParam(OrgExtensionToolParamsDto)),
260
+ __param(3, ZBody(OrgToolSwitchPutBody))
261
+ ], OrgExtensionToolSwitchesController.prototype, "set", null);
262
+ OrgExtensionToolSwitchesController = __decorate([
263
+ Controller("api/v1/orgs/:orgId/extensions/:extension/tools"),
264
+ __param(0, Inject(OrgToolSwitches))
265
+ ], OrgExtensionToolSwitchesController);
266
+ export { OrgExtensionToolSwitchesController };
@@ -0,0 +1,98 @@
1
+ import { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { type OrgContext } from "../orgs/org.guard.js";
4
+ import type { CatalogItemView } from "./catalog.service.js";
5
+ import { CatalogScopeService } from "./catalog-scope.service.js";
6
+ import { OrgPluginUploads, type OrgUploadOutcome, type OrgUploadReview } from "./org-plugin-uploads.js";
7
+ import { type OwnedDeletePreview, OwnedItems } from "./owned-items.js";
8
+ declare const StagingParams: z.ZodObject<{
9
+ stagingId: z.ZodString;
10
+ }, z.core.$strip>;
11
+ declare const OwnedParams: z.ZodObject<{
12
+ id: z.ZodString;
13
+ }, z.core.$strip>;
14
+ declare const ConfirmBody: z.ZodObject<{
15
+ reviewHash: z.ZodString;
16
+ shareable: z.ZodOptional<z.ZodBoolean>;
17
+ pinnedSuggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ }, z.core.$strict>;
19
+ declare const ShareableBody: z.ZodObject<{
20
+ shareable: z.ZodBoolean;
21
+ }, z.core.$strict>;
22
+ declare const DeleteBody: z.ZodObject<{
23
+ previewHash: z.ZodString;
24
+ }, z.core.$strict>;
25
+ /**
26
+ * An org admin's plugin uploads (`/api/v1/orgs/:orgId/catalog/uploads/*`, spec §14, rulings P3-7,
27
+ * P3-8): a `.tgz` without an extension, prepared (one review) and confirmed like the super admin's
28
+ * import, owned by the org. Writes re-check the org admin under the org row lock.
29
+ */
30
+ export declare class OrgPluginUploadsController {
31
+ private readonly uploads;
32
+ constructor(uploads: OrgPluginUploads);
33
+ /**
34
+ * Prepares an upload (the tgz as the raw body, `application/octet-stream`, at most
35
+ * `packages.maxBytes`): `{ stagingId, review, update }`, the staging kept 24 hours for this org.
36
+ * The checks of the platform import, plus: `customSkills` = deny with skills or agent templates,
37
+ * or `customConnectors` = deny with connector templates -> 403 `catalog.custom_disabled`
38
+ * (ruling P3-15'); a name live for another owner -> 409 `plugin.name_taken` (details
39
+ * `[{ owner }]`); a dependency the org cannot use -> 409 `plugin.dependency_unavailable`
40
+ * (details `[{ dependencies }]`).
41
+ */
42
+ upload(principal: Principal, org: OrgContext, req: {
43
+ body?: unknown;
44
+ }): Promise<OrgUploadReview>;
45
+ /** The org's staged upload; unknown, expired, confirmed, another org's or the platform's -> 404. */
46
+ staged(org: OrgContext, params: z.infer<typeof StagingParams>): Promise<OrgUploadReview>;
47
+ /**
48
+ * Confirms the org's staged upload (201 `{ item, outcome }`): a new item owned by the org, scope
49
+ * `named: [org]`, not shown to other orgs, `shareable` as sent (default false), installed in the
50
+ * org by the scope sync (`installed`); a new version of its own item (`updated`). The checks of
51
+ * prepare run again under the item name's lock (the first confirm of a name wins). A package
52
+ * with an extension waits for the super admin (`pending`, ruling P3-10): stored, its extension
53
+ * name claimed (another package's -> 409 `extension.name_conflict` naming the owner), nothing
54
+ * installed or usable until confirmed in 待确认; a later upload replaces the pending version
55
+ * (P3-11). A version without an extension for an item whose first version still waits replaces
56
+ * that upload and is installed at once (`installed`).
57
+ */
58
+ confirm(principal: Principal, org: OrgContext, params: z.infer<typeof StagingParams>, body: z.infer<typeof ConfirmBody>): Promise<{
59
+ item: CatalogItemView;
60
+ outcome: OrgUploadOutcome;
61
+ }>;
62
+ }
63
+ /**
64
+ * The org's own plugins (`/api/v1/orgs/:orgId/owned-plugins/*`, spec §14, P3-17 to P3-19): the
65
+ * owner org's admin withdraws a pending upload, toggles 可共享 and deletes the plugin after a
66
+ * preview. Another org's or a platform plugin -> 404. Writes re-check the org admin under the org
67
+ * row lock.
68
+ */
69
+ export declare class OrgOwnedPluginsController {
70
+ private readonly scope;
71
+ private readonly owned;
72
+ constructor(scope: CatalogScopeService, owned: OwnedItems);
73
+ /**
74
+ * Sets 可共享 (ruling P3-2: the plugin and its component rows in one transaction; turning it
75
+ * off keeps the orgs already associated and hides it from new ones, ruling P3-25). 204.
76
+ */
77
+ setShareable(principal: Principal, org: OrgContext, params: z.infer<typeof OwnedParams>, body: z.infer<typeof ShareableBody>): Promise<void>;
78
+ /**
79
+ * What deleting the plugin does (P3-19, nothing written): `outcome` `removed` (no other org
80
+ * uses it) or `transferred` (to the platform), `orgs` the other orgs using it, `agents` the
81
+ * org's agents that lose it, and the `previewHash` to confirm.
82
+ */
83
+ previewDelete(org: OrgContext, params: z.infer<typeof OwnedParams>): Promise<OwnedDeletePreview>;
84
+ /**
85
+ * Deletes the plugin after its preview: removed, or transferred to the platform when another
86
+ * org uses it (platform notice `ownership_transferred`). A preview that changed meanwhile ->
87
+ * 409 `catalog.preview_stale`. 204.
88
+ */
89
+ delete(principal: Principal, org: OrgContext, params: z.infer<typeof OwnedParams>, body: z.infer<typeof DeleteBody>): Promise<void>;
90
+ /**
91
+ * Withdraws the org's pending upload of the plugin (ruling P3-10, no notice): a first version
92
+ * is removed (its name free again), a new version's pending state cleared (the platform version
93
+ * keeps running). Another org's or a platform plugin -> 404; nothing pending -> 409
94
+ * `extension.not_pending`. 204.
95
+ */
96
+ withdraw(principal: Principal, org: OrgContext, params: z.infer<typeof OwnedParams>): Promise<void>;
97
+ }
98
+ export {};