@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,282 @@
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 { connectorToolKey } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { sql } from "kysely";
13
+ import { ApiError } from "../errors.js";
14
+ import { audit } from "../identity/audit.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ import { TransactionHost } from "../infra/database/transaction-host.js";
17
+ import { Transactional } from "../infra/database/transactional.decorator.js";
18
+ import { roleAtLeast } from "../orgs/roles.js";
19
+ import { AgentLookup, isAgentVisibleTo } from "./agent-lookup.js";
20
+ import { AgentsService } from "./agents.service.js";
21
+ import { normalizeStoredDefinition, } from "./definition.js";
22
+ import { PendingConnectorRequests } from "./pending-connector-requests.js";
23
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
24
+ const RANK = { ask: 1, deny: 2 };
25
+ const MISMATCH = {
26
+ template: "The connector was not made from the connector template this entry needs",
27
+ protocol: "The connector's protocol is not the one this entry needs",
28
+ tools: "The connector offers none of the tools this entry needs",
29
+ not_synced: "The connector has not listed its tools yet; authorize the connector first, then bind it",
30
+ };
31
+ const mismatch = (reason) => new ApiError("agent.pending_connector_mismatch", MISMATCH[reason], [{ reason }]);
32
+ const connectorNotFound = () => new ApiError("connector.not_found", "Connector not found");
33
+ /**
34
+ * Resolving an agent's pending connectors (rulings P4-6, P4-7): binding a connector of the org to a
35
+ * pending entry, and the agent's connector setup request (re-opening it, reading the latest).
36
+ * Writes run under the org row lock and the agent row lock ({@link AgentsService.lockForWrite}: the
37
+ * owner or an org admin+).
38
+ */
39
+ let PendingConnectorsService = class PendingConnectorsService {
40
+ kdb;
41
+ agents;
42
+ lookup;
43
+ requests;
44
+ txHost;
45
+ constructor(kdb, agents, lookup, requests, txHost) {
46
+ this.kdb = kdb;
47
+ this.agents = agents;
48
+ this.lookup = lookup;
49
+ this.requests = requests;
50
+ this.txHost = txHost;
51
+ }
52
+ /** The current version's definition of a locked agent. */
53
+ async currentDefinition(agentId, version) {
54
+ const row = await this.kdb.db
55
+ .selectFrom("agent_versions")
56
+ .select("definition")
57
+ .where("agent_id", "=", agentId)
58
+ .where("version", "=", version)
59
+ .executeTakeFirstOrThrow();
60
+ return normalizeStoredDefinition(row.definition);
61
+ }
62
+ /**
63
+ * Binds connector `connectorId` to the agent's pending entry `key` (ruling P4-6; P4-T6-1,
64
+ * P4-T6-2): a new agent version with a connector ref to it (merged into an existing ref of that
65
+ * connector) for the entry's tools the connector offers (all of them when the entry names none),
66
+ * the entry's policies on those tools (the tighter one wins), and without the entry; then the
67
+ * setup request narrows or closes (`approved`). Refused: no entry `key` -> 404
68
+ * `agent.pending_connector_not_found`; a connector that is missing, deleted or of another org ->
69
+ * 404 `connector.not_found`; another connector template (a `template` entry), another protocol
70
+ * (a `needs` entry), no tool snapshot yet (`not_synced`: an authorization-code connector nobody
71
+ * authorized) or none of the entry's tools -> 400 `agent.pending_connector_mismatch`.
72
+ * Audits `agent.pending_connector_bound`.
73
+ */
74
+ async bind(orgId, agentId, key, connectorId, actor, actorTokenId) {
75
+ const t = this.kdb.db;
76
+ const before = await this.agents.lockForWrite(orgId, agentId, actor);
77
+ const def = await this.currentDefinition(agentId, before.current_version);
78
+ const pending = def.pendingConnectors ?? [];
79
+ const entry = pending.find((c) => c.key === key);
80
+ if (!entry) {
81
+ throw new ApiError("agent.pending_connector_not_found", "The agent has no pending connector with this key");
82
+ }
83
+ if (!UUID_RE.test(connectorId))
84
+ throw connectorNotFound();
85
+ const c = await t
86
+ .selectFrom("connectors")
87
+ .select(["id", "slug", "connector", "platform_template_id", "tools_synced_at"])
88
+ .where("id", "=", connectorId)
89
+ .where("org_id", "=", orgId)
90
+ .where("deleted_at", "is", null)
91
+ .executeTakeFirst();
92
+ if (!c)
93
+ throw connectorNotFound();
94
+ if ("template" in entry.source) {
95
+ if (c.platform_template_id !== entry.source.template)
96
+ throw mismatch("template");
97
+ }
98
+ else if (c.connector !== entry.source.needs.protocol) {
99
+ throw mismatch("protocol");
100
+ }
101
+ // an authorization-code connector before its first snapshot has no tools to pick from: never
102
+ // bind "all" blind and drop the entry's policies; the entry stays pending (fix round 1)
103
+ if (c.tools_synced_at === null)
104
+ throw mismatch("not_synced");
105
+ const rows = await t
106
+ .selectFrom("connector_tools")
107
+ .select(["name", "status"])
108
+ .where("connector_id", "=", c.id)
109
+ .orderBy("name")
110
+ .execute();
111
+ const offered = rows.map((r) => r.name);
112
+ const dropped = [];
113
+ // an entry naming no tools takes them all (P4-T6-2)
114
+ let names = "all";
115
+ if (entry.tools !== undefined && entry.tools.length > 0) {
116
+ const present = entry.tools.filter((n) => offered.includes(n));
117
+ if (present.length === 0)
118
+ throw mismatch("tools");
119
+ for (const n of entry.tools)
120
+ if (!present.includes(n))
121
+ dropped.push(`tools.${n}`);
122
+ // naming every enabled tool of this connector is "all": 另存为模板 writes an agent's
123
+ // 全部工具 as the enabled names (P4-11), and binding gives it back as 全部工具 (P4-T6-12)
124
+ const enabled = rows.filter((r) => r.status === "enabled").map((r) => r.name);
125
+ const coversAll = enabled.length > 0 && enabled.every((n) => present.includes(n));
126
+ names = coversAll ? "all" : present;
127
+ }
128
+ const kept = names === "all" ? offered : names;
129
+ const toolPolicies = { ...def.toolPolicies };
130
+ for (const [n, p] of Object.entries(entry.policies ?? {})) {
131
+ if (!kept.includes(n)) {
132
+ dropped.push(`policies.${n}`);
133
+ continue;
134
+ }
135
+ const k = connectorToolKey(c.slug, n);
136
+ const prev = toolPolicies[k];
137
+ if (prev === undefined || RANK[p] > RANK[prev])
138
+ toolPolicies[k] = p;
139
+ }
140
+ let merged = false;
141
+ const tools = def.tools.map((r) => {
142
+ if (r.kind !== "connector" || r.connectorId !== c.id || merged)
143
+ return r;
144
+ merged = true;
145
+ if (r.tools === "all")
146
+ return r;
147
+ return {
148
+ ...r,
149
+ tools: names === "all" ? "all" : [...new Set([...r.tools, ...names])],
150
+ };
151
+ });
152
+ if (!merged)
153
+ tools.push({ kind: "connector", connectorId: c.id, tools: names });
154
+ const left = pending.filter((x) => x.key !== key);
155
+ const { pendingConnectors: _old, ...rest } = def;
156
+ const next = {
157
+ ...rest,
158
+ tools,
159
+ toolPolicies,
160
+ ...(left.length > 0 && { pendingConnectors: left }),
161
+ };
162
+ const toVersion = before.current_version + 1;
163
+ await t
164
+ .insertInto("agent_versions")
165
+ .values({
166
+ agent_id: agentId,
167
+ version: toVersion,
168
+ definition: JSON.stringify(next),
169
+ created_by: actor,
170
+ })
171
+ .execute();
172
+ await t
173
+ .updateTable("agents")
174
+ .set({ current_version: toVersion, updated_at: sql `now()` })
175
+ .where("id", "=", agentId)
176
+ .execute();
177
+ await audit(t, {
178
+ actorAccountId: actor,
179
+ ...(actorTokenId !== undefined && { actorTokenId }),
180
+ orgId,
181
+ action: "agent.pending_connector_bound",
182
+ target: agentId,
183
+ detail: { key, connectorId: c.id, fromVersion: before.current_version, toVersion },
184
+ });
185
+ await this.requests.settleIn({
186
+ orgId,
187
+ agentId,
188
+ keys: left.map((x) => x.key),
189
+ close: "approved",
190
+ actor,
191
+ actorTokenId,
192
+ });
193
+ return { agent: await this.lookup.view(agentId), dropped };
194
+ }
195
+ /**
196
+ * (Re-)opens the agent's connector setup request (ruling P4-T6-7; the owner or an org admin+):
197
+ * the pending one when it has one (`created` false), else a new one for the current pending
198
+ * keys, requested by the agent's owner (P4-T6-4). No pending connectors -> 409
199
+ * `agent.no_pending_connectors`.
200
+ */
201
+ async reopen(orgId, agentId, actor, actorTokenId) {
202
+ const before = await this.agents.lockForWrite(orgId, agentId, actor);
203
+ const def = await this.currentDefinition(agentId, before.current_version);
204
+ const keys = (def.pendingConnectors ?? []).map((c) => c.key);
205
+ if (keys.length === 0) {
206
+ throw new ApiError("agent.no_pending_connectors", "The agent has no connectors waiting to be configured");
207
+ }
208
+ const owner = await this.kdb.db
209
+ .selectFrom("agents")
210
+ .select("owner_account_id")
211
+ .where("id", "=", agentId)
212
+ .executeTakeFirstOrThrow();
213
+ const r = await this.requests.open({
214
+ orgId,
215
+ agentId,
216
+ requestedBy: owner.owner_account_id,
217
+ actor,
218
+ actorTokenId,
219
+ });
220
+ // the agent row is locked above, so the keys read there are still pending
221
+ if (r === null)
222
+ throw new Error(`agent ${agentId} lost its pending connectors under its lock`);
223
+ return r;
224
+ }
225
+ /**
226
+ * The id of the agent's latest connector setup request (any status), or null. Authorized as the
227
+ * writes are (fix round 1): the agent's owner or an org admin+, whether or not the agent is
228
+ * visible to them; a member who sees the agent otherwise -> 403 `forbidden`; anyone else, or a
229
+ * deleted agent -> 404 `agent.not_found`.
230
+ */
231
+ async latestRequest(orgId, agentId, viewer) {
232
+ const t = this.kdb.db;
233
+ const [agent, member] = await Promise.all([
234
+ t
235
+ .selectFrom("agents")
236
+ .select("owner_account_id")
237
+ .where("id", "=", agentId)
238
+ .where("org_id", "=", orgId)
239
+ .where("deleted_at", "is", null)
240
+ .executeTakeFirst(),
241
+ t
242
+ .selectFrom("memberships")
243
+ .select("role")
244
+ .where("org_id", "=", orgId)
245
+ .where("account_id", "=", viewer)
246
+ .executeTakeFirst(),
247
+ ]);
248
+ if (!agent || !member)
249
+ throw new ApiError("agent.not_found", "Agent not found");
250
+ if (agent.owner_account_id !== viewer && !roleAtLeast(member.role, "admin")) {
251
+ if (await isAgentVisibleTo(t, agentId, viewer)) {
252
+ throw new ApiError("forbidden", "Only the agent owner or an organization admin can see its connector setup request");
253
+ }
254
+ throw new ApiError("agent.not_found", "Agent not found");
255
+ }
256
+ const row = await this.kdb.db
257
+ .selectFrom("catalog_requests")
258
+ .select("id")
259
+ .where("org_id", "=", orgId)
260
+ .where("agent_id", "=", agentId)
261
+ .where("kind", "=", "connector_setup")
262
+ .orderBy("created_at", "desc")
263
+ .orderBy("id", "desc")
264
+ .executeTakeFirst();
265
+ return row?.id ?? null;
266
+ }
267
+ };
268
+ __decorate([
269
+ Transactional()
270
+ ], PendingConnectorsService.prototype, "bind", null);
271
+ __decorate([
272
+ Transactional()
273
+ ], PendingConnectorsService.prototype, "reopen", null);
274
+ PendingConnectorsService = __decorate([
275
+ Injectable(),
276
+ __param(0, Inject(KernelDb)),
277
+ __param(1, Inject(AgentsService)),
278
+ __param(2, Inject(AgentLookup)),
279
+ __param(3, Inject(PendingConnectorRequests)),
280
+ __param(4, Inject(TransactionHost))
281
+ ], PendingConnectorsService);
282
+ export { PendingConnectorsService };
@@ -1,15 +1,96 @@
1
+ import { z } from "zod";
2
+ import { OwnedItems, type OwnedSkillDeletePreview } from "../catalog/owned-items.js";
3
+ import { type Principal } from "../identity/principal.js";
1
4
  import { type OrgContext } from "../orgs/org.guard.js";
5
+ import { type AgentTemplateDetail, OrgAgentTemplates, type SaveAsOmission } from "./org-templates.js";
2
6
  import { AgentTemplatesService, type AgentTemplateView } from "./templates.js";
7
+ declare const IdParams: z.ZodObject<{
8
+ id: z.ZodString;
9
+ }, z.core.$strip>;
10
+ declare const AgentIdParams: z.ZodObject<{
11
+ agentId: z.ZodString;
12
+ }, z.core.$strip>;
13
+ declare const ShareableBody: z.ZodObject<{
14
+ shareable: z.ZodBoolean;
15
+ }, z.core.$strict>;
16
+ declare const SaveAsBody: z.ZodObject<{
17
+ name: z.ZodString;
18
+ description: z.ZodString;
19
+ }, z.core.$strict>;
20
+ declare const UpdateBody: z.ZodObject<{
21
+ definition: z.ZodRecord<z.ZodString, z.ZodUnknown>;
22
+ expectedVersion: z.ZodNumber;
23
+ }, z.core.$strict>;
3
24
  /**
4
- * The org's agent templates installed from plugins (`/api/v1/orgs/:orgId/agent-templates`, phase C
5
- * spec §17): the agent page lists them to select as sub-agents. Read with `agents.create`, the
6
- * permission of its only consumer, the agent editor (members, people only); a template carries no
7
- * secret, but guests and service tokens have no use for the list.
25
+ * The org's agent templates (`/api/v1/orgs/:orgId/agent-templates`, phase C spec §17; plugin scope
26
+ * phase 4, rulings P4-9 to P4-13). Reads with `agents.create` (members, people only): the list
27
+ * the agent editor and the 模板 tab show, and one template's detail with its definition. The org's
28
+ * own templates (saved from an agent, `POST orgs/:orgId/agents/:agentId/save-as-template`) are
29
+ * edited, deleted and made 可共享 by the owner org's admins (`agents.manage`, the action that
30
+ * manages agent templates).
8
31
  */
9
32
  export declare class AgentTemplatesController {
10
33
  private readonly templates;
11
- constructor(templates: AgentTemplatesService);
34
+ private readonly orgTemplates;
35
+ private readonly owned;
36
+ constructor(templates: AgentTemplatesService, orgTemplates: OrgAgentTemplates, owned: OwnedItems);
12
37
  list(org: OrgContext): Promise<{
13
38
  templates: AgentTemplateView[];
14
39
  }>;
40
+ /**
41
+ * One template usable in the org (an org template, a linked copy, a platform template on in
42
+ * the org) with its definition, owner and the org's flags (`owned`, `shareable`, `promoted`).
43
+ * Not usable here -> 404 `component.not_found`.
44
+ */
45
+ get(principal: Principal, org: OrgContext, params: z.infer<typeof IdParams>): Promise<{
46
+ template: AgentTemplateDetail;
47
+ }>;
48
+ /**
49
+ * A new version of the org's own template (ruling P4-12): `{ definition, expectedVersion }` ->
50
+ * 200 `{ template }`; a stale version -> 409 `agent_template.version_conflict`; a template the
51
+ * org does not own -> 409 `catalog.not_owned`.
52
+ */
53
+ update(principal: Principal, org: OrgContext, params: z.infer<typeof IdParams>, body: z.infer<typeof UpdateBody>): Promise<{
54
+ template: AgentTemplateDetail;
55
+ }>;
56
+ /**
57
+ * What deleting the org's own template does (nothing written): `outcome` `transferred` when it
58
+ * was shared and another org uses it (`orgs`), else `removed`; `agents` the org's agents whose
59
+ * roster loses it.
60
+ */
61
+ deletePreview(principal: Principal, org: OrgContext, params: z.infer<typeof IdParams>): Promise<OwnedSkillDeletePreview>;
62
+ /**
63
+ * Deletes the org's own template (the P3 owner rules, ruling P4-12): one it shared that another
64
+ * org uses becomes the platform's (platform notice `ownership_transferred`). 200 `{ outcome }`.
65
+ */
66
+ remove(principal: Principal, org: OrgContext, params: z.infer<typeof IdParams>): Promise<{
67
+ outcome: "transferred" | "removed";
68
+ }>;
69
+ /**
70
+ * Sets 可共享 on the org's own agent template (`{ shareable }` -> 200 `{ id, shareable }`; an org
71
+ * template, ruling P4-13): a plugin's template or a copy of another owner's platform template
72
+ * -> 409 `catalog.not_owned`; one the org promoted writes its platform row too (ruling P3-2).
73
+ */
74
+ setShareable(principal: Principal, org: OrgContext, params: z.infer<typeof IdParams>, body: z.infer<typeof ShareableBody>): Promise<{
75
+ id: string;
76
+ shareable: boolean;
77
+ }>;
78
+ }
79
+ /**
80
+ * 另存为模板 (ruling P4-9; `agents.manage`, org admins): `POST
81
+ * /api/v1/orgs/:orgId/agents/:agentId/save-as-template { name, description }` -> 201
82
+ * `{ template, omitted }`. `template` is the new org template's detail (version 1, the bare
83
+ * `name`); `omitted` lists what the template leaves out (`SaveAsOmission`: allowlisted org agents
84
+ * in the roster, the agent's own skills, connectors and sub-agents no longer usable, entries past
85
+ * a limit). A name the org can already use as a type -> 409 `agent_template.name_taken` (details
86
+ * `[{ owner, templateId }]`). Its own controller: the agents controller is the agent CRUD.
87
+ */
88
+ export declare class AgentSaveAsTemplateController {
89
+ private readonly orgTemplates;
90
+ constructor(orgTemplates: OrgAgentTemplates);
91
+ saveAs(principal: Principal, org: OrgContext, params: z.infer<typeof AgentIdParams>, body: z.infer<typeof SaveAsBody>): Promise<{
92
+ template: AgentTemplateDetail;
93
+ omitted: SaveAsOmission[];
94
+ }>;
15
95
  }
96
+ export {};
@@ -7,31 +7,195 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
- import { Controller, Get, Inject } from "@nestjs/common";
10
+ import { AGENT_TEMPLATE_NAME_RE } from "@capybara-hq/plugin-sdk";
11
+ import { Controller, Delete, Get, Inject, Post, Put } from "@nestjs/common";
12
+ import { z } from "zod";
13
+ import { OwnedItems } from "../catalog/owned-items.js";
14
+ import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
15
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
+ import { ZBody, ZParam } from "../infra/validation/zod-params.js";
11
17
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
18
+ import { OrgAgentTemplates, } from "./org-templates.js";
12
19
  import { AgentTemplatesService } from "./templates.js";
20
+ const IdParams = z.object({ id: z.string().min(1).max(100) });
21
+ const AgentIdParams = z.object({ agentId: z.string().min(1).max(100) });
22
+ const ShareableBody = z.object({ shareable: z.boolean() }).strict();
23
+ const SaveAsBody = z
24
+ .object({
25
+ /** The bare template name (the template name rule); unique in the org's usable set. */
26
+ name: z.string().regex(AGENT_TEMPLATE_NAME_RE),
27
+ /** When to use it (trimmed, as a template file's). */
28
+ description: z.string().trim().min(1).max(4096),
29
+ })
30
+ .strict();
31
+ const UpdateBody = z
32
+ .object({
33
+ /** The whole definition (the `AgentTemplate` shape), validated like a template file. */
34
+ definition: z.record(z.string(), z.unknown()),
35
+ /** The `version` the editor read; another one -> 409 `agent_template.version_conflict`. */
36
+ expectedVersion: z.number().int().min(1),
37
+ })
38
+ .strict();
39
+ class AgentTemplateIdParams extends createZodDto(IdParams, "AgentTemplateIdParams") {
40
+ }
41
+ class SaveAsAgentIdParams extends createZodDto(AgentIdParams, "SaveAsAgentIdParams") {
42
+ }
43
+ class AgentTemplateShareableBody extends createZodDto(ShareableBody, "AgentTemplateShareableBody") {
44
+ }
45
+ class SaveAsTemplateBody extends createZodDto(SaveAsBody, "SaveAsTemplateBody") {
46
+ }
47
+ class AgentTemplateUpdateBody extends createZodDto(UpdateBody, "AgentTemplateUpdateBody") {
48
+ }
49
+ const actorOpts = (p) => {
50
+ const tokenId = patTokenId(p);
51
+ return tokenId !== undefined ? { actorTokenId: tokenId } : {};
52
+ };
13
53
  /**
14
- * The org's agent templates installed from plugins (`/api/v1/orgs/:orgId/agent-templates`, phase C
15
- * spec §17): the agent page lists them to select as sub-agents. Read with `agents.create`, the
16
- * permission of its only consumer, the agent editor (members, people only); a template carries no
17
- * secret, but guests and service tokens have no use for the list.
54
+ * The org's agent templates (`/api/v1/orgs/:orgId/agent-templates`, phase C spec §17; plugin scope
55
+ * phase 4, rulings P4-9 to P4-13). Reads with `agents.create` (members, people only): the list
56
+ * the agent editor and the 模板 tab show, and one template's detail with its definition. The org's
57
+ * own templates (saved from an agent, `POST orgs/:orgId/agents/:agentId/save-as-template`) are
58
+ * edited, deleted and made 可共享 by the owner org's admins (`agents.manage`, the action that
59
+ * manages agent templates).
18
60
  */
19
61
  let AgentTemplatesController = class AgentTemplatesController {
20
62
  templates;
21
- constructor(templates) {
63
+ orgTemplates;
64
+ owned;
65
+ constructor(templates, orgTemplates, owned) {
22
66
  this.templates = templates;
67
+ this.orgTemplates = orgTemplates;
68
+ this.owned = owned;
23
69
  }
24
70
  async list(org) {
25
71
  return { templates: await this.templates.listForOrg(org.orgId) };
26
72
  }
73
+ /**
74
+ * One template usable in the org (an org template, a linked copy, a platform template on in
75
+ * the org) with its definition, owner and the org's flags (`owned`, `shareable`, `promoted`).
76
+ * Not usable here -> 404 `component.not_found`.
77
+ */
78
+ async get(principal, org, params) {
79
+ requireUser(principal);
80
+ return { template: await this.orgTemplates.detail(org.orgId, params.id) };
81
+ }
82
+ /**
83
+ * A new version of the org's own template (ruling P4-12): `{ definition, expectedVersion }` ->
84
+ * 200 `{ template }`; a stale version -> 409 `agent_template.version_conflict`; a template the
85
+ * org does not own -> 409 `catalog.not_owned`.
86
+ */
87
+ async update(principal, org, params, body) {
88
+ const p = requireUser(principal);
89
+ const template = await this.orgTemplates.update(org.orgId, p.account.id, params.id, body, patTokenId(p));
90
+ return { template };
91
+ }
92
+ /**
93
+ * What deleting the org's own template does (nothing written): `outcome` `transferred` when it
94
+ * was shared and another org uses it (`orgs`), else `removed`; `agents` the org's agents whose
95
+ * roster loses it.
96
+ */
97
+ async deletePreview(principal, org, params) {
98
+ requireUser(principal);
99
+ return this.owned.previewAgentTemplateDelete(org.orgId, params.id);
100
+ }
101
+ /**
102
+ * Deletes the org's own template (the P3 owner rules, ruling P4-12): one it shared that another
103
+ * org uses becomes the platform's (platform notice `ownership_transferred`). 200 `{ outcome }`.
104
+ */
105
+ async remove(principal, org, params) {
106
+ const p = requireUser(principal);
107
+ const outcome = await this.owned.deleteAgentTemplate(org.orgId, p.account.id, params.id, actorOpts(p));
108
+ return { outcome };
109
+ }
110
+ /**
111
+ * Sets 可共享 on the org's own agent template (`{ shareable }` -> 200 `{ id, shareable }`; an org
112
+ * template, ruling P4-13): a plugin's template or a copy of another owner's platform template
113
+ * -> 409 `catalog.not_owned`; one the org promoted writes its platform row too (ruling P3-2).
114
+ */
115
+ async setShareable(principal, org, params, body) {
116
+ const p = requireUser(principal);
117
+ await this.owned.setShareable(org.orgId, p.account.id, { kind: "agent_template", id: params.id }, body.shareable, actorOpts(p));
118
+ return { id: params.id, shareable: body.shareable };
119
+ }
27
120
  };
28
121
  __decorate([
29
122
  Get(),
30
123
  OrgAction("agents.create"),
31
124
  __param(0, CurrentOrg())
32
125
  ], AgentTemplatesController.prototype, "list", null);
126
+ __decorate([
127
+ Get(":id"),
128
+ OrgAction("agents.create"),
129
+ __param(0, CurrentPrincipal()),
130
+ __param(1, CurrentOrg()),
131
+ __param(2, ZParam(AgentTemplateIdParams))
132
+ ], AgentTemplatesController.prototype, "get", null);
133
+ __decorate([
134
+ Put(":id"),
135
+ OrgAction("agents.manage"),
136
+ __param(0, CurrentPrincipal()),
137
+ __param(1, CurrentOrg()),
138
+ __param(2, ZParam(AgentTemplateIdParams)),
139
+ __param(3, ZBody(AgentTemplateUpdateBody))
140
+ ], AgentTemplatesController.prototype, "update", null);
141
+ __decorate([
142
+ Get(":id/delete-preview"),
143
+ OrgAction("agents.manage"),
144
+ __param(0, CurrentPrincipal()),
145
+ __param(1, CurrentOrg()),
146
+ __param(2, ZParam(AgentTemplateIdParams))
147
+ ], AgentTemplatesController.prototype, "deletePreview", null);
148
+ __decorate([
149
+ Delete(":id"),
150
+ OrgAction("agents.manage"),
151
+ __param(0, CurrentPrincipal()),
152
+ __param(1, CurrentOrg()),
153
+ __param(2, ZParam(AgentTemplateIdParams))
154
+ ], AgentTemplatesController.prototype, "remove", null);
155
+ __decorate([
156
+ Put(":id/shareable"),
157
+ OrgAction("agents.manage"),
158
+ __param(0, CurrentPrincipal()),
159
+ __param(1, CurrentOrg()),
160
+ __param(2, ZParam(AgentTemplateIdParams)),
161
+ __param(3, ZBody(AgentTemplateShareableBody))
162
+ ], AgentTemplatesController.prototype, "setShareable", null);
33
163
  AgentTemplatesController = __decorate([
34
164
  Controller("api/v1/orgs/:orgId/agent-templates"),
35
- __param(0, Inject(AgentTemplatesService))
165
+ __param(0, Inject(AgentTemplatesService)),
166
+ __param(1, Inject(OrgAgentTemplates)),
167
+ __param(2, Inject(OwnedItems))
36
168
  ], AgentTemplatesController);
37
169
  export { AgentTemplatesController };
170
+ /**
171
+ * 另存为模板 (ruling P4-9; `agents.manage`, org admins): `POST
172
+ * /api/v1/orgs/:orgId/agents/:agentId/save-as-template { name, description }` -> 201
173
+ * `{ template, omitted }`. `template` is the new org template's detail (version 1, the bare
174
+ * `name`); `omitted` lists what the template leaves out (`SaveAsOmission`: allowlisted org agents
175
+ * in the roster, the agent's own skills, connectors and sub-agents no longer usable, entries past
176
+ * a limit). A name the org can already use as a type -> 409 `agent_template.name_taken` (details
177
+ * `[{ owner, templateId }]`). Its own controller: the agents controller is the agent CRUD.
178
+ */
179
+ let AgentSaveAsTemplateController = class AgentSaveAsTemplateController {
180
+ orgTemplates;
181
+ constructor(orgTemplates) {
182
+ this.orgTemplates = orgTemplates;
183
+ }
184
+ async saveAs(principal, org, params, body) {
185
+ const p = requireUser(principal);
186
+ return this.orgTemplates.saveAs(org.orgId, p.account.id, params.agentId, body, patTokenId(p));
187
+ }
188
+ };
189
+ __decorate([
190
+ Post(":agentId/save-as-template"),
191
+ OrgAction("agents.manage"),
192
+ __param(0, CurrentPrincipal()),
193
+ __param(1, CurrentOrg()),
194
+ __param(2, ZParam(SaveAsAgentIdParams)),
195
+ __param(3, ZBody(SaveAsTemplateBody))
196
+ ], AgentSaveAsTemplateController.prototype, "saveAs", null);
197
+ AgentSaveAsTemplateController = __decorate([
198
+ Controller("api/v1/orgs/:orgId/agents"),
199
+ __param(0, Inject(OrgAgentTemplates))
200
+ ], AgentSaveAsTemplateController);
201
+ export { AgentSaveAsTemplateController };