@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
@@ -18,9 +18,25 @@ export interface AgentView {
18
18
  memberIds: string[] | null;
19
19
  /** 负责人离职后被转给组织所有者、等待管理员重新指派。 */
20
20
  needsReassignment: boolean;
21
+ /**
22
+ * The template the agent was created from (ruling P4-8; set once, never versioned), null for an
23
+ * agent created otherwise. `name` and `version` are the snapshot taken at create.
24
+ */
25
+ createdFrom: AgentProvenance | null;
21
26
  createdAt: Date;
22
27
  updatedAt: Date;
23
28
  }
29
+ /** {@link AgentView.createdFrom}. */
30
+ export interface AgentProvenance {
31
+ templateId: string;
32
+ version: number;
33
+ name: string;
34
+ /**
35
+ * The template is still usable in the org (the agent page links it only then). Set on the
36
+ * agents API's responses only (`AgentsService.withTemplateLinks`), never on internal reads.
37
+ */
38
+ available?: boolean;
39
+ }
24
40
  /**
25
41
  * 可见性判定(`canUse`)的 SQL 条件:agent 未删除、所属组织未删除,且
26
42
  * - viewer 为账号:仍是该组织成员(含访客),并且是负责人 / visibility='org' / 在 agent_members 名单中;
@@ -136,6 +136,9 @@ let AgentLookup = class AgentLookup {
136
136
  "agents.profile_description",
137
137
  "agents.profile_quick_actions",
138
138
  "agents.profile_updated_at",
139
+ "agents.created_from_template_id",
140
+ "agents.created_from_template_version",
141
+ "agents.created_from_template_name",
139
142
  "agent_versions.definition",
140
143
  ])
141
144
  .where("agents.id", "in", ids)
@@ -158,6 +161,7 @@ let AgentLookup = class AgentLookup {
158
161
  const r = byId.get(id);
159
162
  if (!r)
160
163
  return [];
164
+ const fromId = r.created_from_template_id;
161
165
  return [
162
166
  {
163
167
  id: r.id,
@@ -176,6 +180,13 @@ let AgentLookup = class AgentLookup {
176
180
  ? memberRows.filter((m) => m.agent_id === id).map((m) => m.account_id)
177
181
  : null,
178
182
  needsReassignment: r.needs_reassignment,
183
+ createdFrom: fromId === null
184
+ ? null
185
+ : {
186
+ templateId: fromId,
187
+ version: r.created_from_template_version ?? 1,
188
+ name: r.created_from_template_name ?? "",
189
+ },
179
190
  createdAt: r.created_at,
180
191
  updatedAt: r.updated_at,
181
192
  },
@@ -5,6 +5,7 @@ import { type Principal } from "../identity/principal.js";
5
5
  import { type OrgContext } from "../orgs/org.guard.js";
6
6
  import { AgentProfileService } from "./agent-profile.service.js";
7
7
  import { AgentsService, type AgentVersionSummary, type AgentView, type AgentWarning } from "./agents.service.js";
8
+ import { AgentsFromTemplate, type TemplatePreview } from "./from-template.service.js";
8
9
  import { type AgentProfile } from "./profile.js";
9
10
  declare const OwnerBody: z.ZodObject<{
10
11
  accountId: z.ZodString;
@@ -234,6 +235,28 @@ declare const UpdateBody: z.ZodObject<{
234
235
  }, z.core.$strict>>>;
235
236
  dispatchable: z.ZodOptional<z.ZodBoolean>;
236
237
  }, z.core.$strict>>;
238
+ pendingConnectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
239
+ key: z.ZodString;
240
+ label: z.ZodString;
241
+ source: z.ZodUnion<readonly [z.ZodObject<{
242
+ template: z.ZodString;
243
+ }, z.core.$strict>, z.ZodObject<{
244
+ needs: z.ZodObject<{
245
+ protocol: z.ZodEnum<{
246
+ mcp: "mcp";
247
+ openapi: "openapi";
248
+ }>;
249
+ endpoint: z.ZodString;
250
+ tools: z.ZodArray<z.ZodString>;
251
+ label: z.ZodString;
252
+ }, z.core.$strict>;
253
+ }, z.core.$strict>]>;
254
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
255
+ policies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
256
+ ask: "ask";
257
+ deny: "deny";
258
+ }>>>;
259
+ }, z.core.$strict>>>;
237
260
  instructions: z.ZodOptional<z.ZodString>;
238
261
  }, z.core.$strip>>;
239
262
  visibility: z.ZodOptional<z.ZodEnum<{
@@ -244,6 +267,39 @@ declare const UpdateBody: z.ZodObject<{
244
267
  memberIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
245
268
  expectedVersion: z.ZodOptional<z.ZodNumber>;
246
269
  }, z.core.$strict>;
270
+ declare const FromTemplatePreviewBody: z.ZodObject<{
271
+ templateId: z.ZodString;
272
+ }, z.core.$strict>;
273
+ declare const FromTemplateBody: z.ZodObject<{
274
+ templateId: z.ZodString;
275
+ name: z.ZodString;
276
+ visibility: z.ZodOptional<z.ZodEnum<{
277
+ members: "members";
278
+ org: "org";
279
+ private: "private";
280
+ }>>;
281
+ members: z.ZodOptional<z.ZodArray<z.ZodString>>;
282
+ model: z.ZodOptional<z.ZodObject<{
283
+ provider: z.ZodString;
284
+ model: z.ZodString;
285
+ }, z.core.$strict>>;
286
+ avatar: z.ZodOptional<z.ZodObject<{
287
+ kind: z.ZodLiteral<"preset">;
288
+ id: z.ZodEnum<{
289
+ "black-bear": "black-bear";
290
+ capybara: "capybara";
291
+ elephant: "elephant";
292
+ fox: "fox";
293
+ owl: "owl";
294
+ panda: "panda";
295
+ penguin: "penguin";
296
+ rabbit: "rabbit";
297
+ turtle: "turtle";
298
+ whale: "whale";
299
+ }>;
300
+ }, z.core.$strict>>;
301
+ previewHash: z.ZodString;
302
+ }, z.core.$strict>;
247
303
  /**
248
304
  * Agent 定义(`/api/v1/orgs/:orgId/agents`)。读用 `agents.use`(访客与服务令牌可用),
249
305
  * 写用 `agents.create`(member 以上、HUMAN_ONLY),修改 / 删除的负责人或管理员判定在服务的组织行锁内完成。
@@ -252,7 +308,26 @@ export declare class AgentsController {
252
308
  private readonly agents;
253
309
  private readonly profiles;
254
310
  private readonly attachments;
255
- constructor(agents: AgentsService, profiles: AgentProfileService, attachments: AttachmentsService);
311
+ private readonly fromTemplate;
312
+ constructor(agents: AgentsService, profiles: AgentProfileService, attachments: AttachmentsService, fromTemplate: AgentsFromTemplate);
313
+ /** A response's view with its provenance link (`createdFrom.available`, ruling P4-8). */
314
+ private linked;
315
+ /**
316
+ * What creating an agent from a template would carry over (rulings P4-3, P4-5): the items
317
+ * (carried / pending / unavailable, with reasons), the model the dialog preselects (P4-4), the
318
+ * template fields with no place in the agent, and the `previewHash` the create must send. A
319
+ * template not usable in the org → 404 `component.not_found`.
320
+ */
321
+ previewFromTemplate(org: OrgContext, body: z.infer<typeof FromTemplatePreviewBody>): Promise<TemplatePreview>;
322
+ /**
323
+ * Creates an agent from a template (ruling P4-3): private by default; another visibility without
324
+ * `agents.manage` → 403 `agent.visibility_forbidden`; a plan that no longer matches the preview →
325
+ * 409 `agent.template_preview_stale`. The agent records its provenance (P4-8) and carries the
326
+ * template's missing connectors as `pendingConnectors` (P4-6).
327
+ */
328
+ createFromTemplate(principal: Principal, org: OrgContext, body: z.infer<typeof FromTemplateBody>): Promise<{
329
+ agent: AgentView;
330
+ }>;
256
331
  create(principal: Principal, org: OrgContext, body: z.infer<typeof CreateBody>): Promise<{
257
332
  agent: AgentView;
258
333
  warnings: AgentWarning[];
@@ -18,8 +18,9 @@ import { ZBody } from "../infra/validation/zod-params.js";
18
18
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
19
19
  import { AgentProfileService } from "./agent-profile.service.js";
20
20
  import { AGENT_VISIBILITIES, AgentsService, } from "./agents.service.js";
21
- import { AgentDefinitionSchema, AgentToolRef, DEFAULT_AGENT_TOOLS } from "./definition.js";
22
- import { ProfileInputSchema } from "./profile.js";
21
+ import { AgentDefinitionSchema, AgentToolRef, DEFAULT_AGENT_TOOLS, ModelRef, } from "./definition.js";
22
+ import { AgentsFromTemplate } from "./from-template.service.js";
23
+ import { PRESET_IDS, ProfileInputSchema } from "./profile.js";
23
24
  const MemberIds = z.array(z.string().min(1).max(100)).max(1000);
24
25
  const OwnerBody = z.object({ accountId: z.string().min(1).max(100) }).strict();
25
26
  /** 创建时未给 `tools` → 默认工具(Ruling P7);修改请求不注入默认值,版本里总是存显式的 tools。 */
@@ -28,7 +29,8 @@ const OwnerBody = z.object({ accountId: z.string().min(1).max(100) }).strict();
28
29
  * new agent given neither gets the `AGENTS.md` starter (`deriveInstructions`).
29
30
  */
30
31
  const RequestInstructions = z.string().max(100_000).optional();
31
- const CreateDefinition = AgentDefinitionSchema.extend({
32
+ /** Pending connectors come only from a template (ruling P4-6): a create request's are dropped. */
33
+ const CreateDefinition = AgentDefinitionSchema.omit({ pendingConnectors: true }).extend({
32
34
  instructions: RequestInstructions,
33
35
  tools: z.array(AgentToolRef).default(() => structuredClone(DEFAULT_AGENT_TOOLS)),
34
36
  });
@@ -69,6 +71,27 @@ const UpdateBody = z
69
71
  expectedVersion: z.number().int().positive().optional(),
70
72
  })
71
73
  .strict();
74
+ const TemplateId = z.string().min(1).max(100);
75
+ const FromTemplatePreviewBody = z.object({ templateId: TemplateId }).strict();
76
+ const FromTemplateBody = z
77
+ .object({
78
+ templateId: TemplateId,
79
+ name: z.string().min(1).max(80),
80
+ /** Default `private`; anything else needs `agents.manage` (ruling P4-3). */
81
+ visibility: z.enum(AGENT_VISIBILITIES).optional(),
82
+ /** The accounts of a `members` agent. */
83
+ members: MemberIds.optional(),
84
+ /** The person's choice; absent = the template's model resolution (P4-4). */
85
+ model: ModelRef.strict().optional(),
86
+ /** A preset avatar; absent = a random one. */
87
+ avatar: z
88
+ .object({ kind: z.literal("preset"), id: z.enum(PRESET_IDS) })
89
+ .strict()
90
+ .optional(),
91
+ /** The preview's `previewHash`; another one → 409 `agent.template_preview_stale`. */
92
+ previewHash: z.string().regex(/^[0-9a-f]{64}\.[0-9a-f]{16}$/),
93
+ })
94
+ .strict();
72
95
  /** 服务令牌没有账号:以 null 作为 viewer,只看到 visibility='org' 的 agent。 */
73
96
  const viewerOf = (p) => (p.kind === "user" ? p.account.id : null);
74
97
  class AgentCreateBodyDto extends createZodDto(CreateBody, "AgentCreateBody") {
@@ -81,6 +104,10 @@ class AgentAvatarUploadBodyDto extends createZodDto(AvatarUploadBody, "AgentAvat
81
104
  }
82
105
  class AgentOwnerBodyDto extends createZodDto(OwnerBody, "AgentOwnerBody") {
83
106
  }
107
+ class AgentFromTemplatePreviewBodyDto extends createZodDto(FromTemplatePreviewBody, "AgentFromTemplatePreviewBody") {
108
+ }
109
+ class AgentFromTemplateBodyDto extends createZodDto(FromTemplateBody, "AgentFromTemplateBody") {
110
+ }
84
111
  /**
85
112
  * Agent 定义(`/api/v1/orgs/:orgId/agents`)。读用 `agents.use`(访客与服务令牌可用),
86
113
  * 写用 `agents.create`(member 以上、HUMAN_ONLY),修改 / 删除的负责人或管理员判定在服务的组织行锁内完成。
@@ -89,10 +116,44 @@ let AgentsController = class AgentsController {
89
116
  agents;
90
117
  profiles;
91
118
  attachments;
92
- constructor(agents, profiles, attachments) {
119
+ fromTemplate;
120
+ constructor(agents, profiles, attachments, fromTemplate) {
93
121
  this.agents = agents;
94
122
  this.profiles = profiles;
95
123
  this.attachments = attachments;
124
+ this.fromTemplate = fromTemplate;
125
+ }
126
+ /** A response's view with its provenance link (`createdFrom.available`, ruling P4-8). */
127
+ async linked(orgId, view) {
128
+ return (await this.agents.withTemplateLinks(orgId, [view]))[0];
129
+ }
130
+ /**
131
+ * What creating an agent from a template would carry over (rulings P4-3, P4-5): the items
132
+ * (carried / pending / unavailable, with reasons), the model the dialog preselects (P4-4), the
133
+ * template fields with no place in the agent, and the `previewHash` the create must send. A
134
+ * template not usable in the org → 404 `component.not_found`.
135
+ */
136
+ async previewFromTemplate(org, body) {
137
+ return this.fromTemplate.preview(org.orgId, body.templateId);
138
+ }
139
+ /**
140
+ * Creates an agent from a template (ruling P4-3): private by default; another visibility without
141
+ * `agents.manage` → 403 `agent.visibility_forbidden`; a plan that no longer matches the preview →
142
+ * 409 `agent.template_preview_stale`. The agent records its provenance (P4-8) and carries the
143
+ * template's missing connectors as `pendingConnectors` (P4-6).
144
+ */
145
+ async createFromTemplate(principal, org, body) {
146
+ const p = requireUser(principal);
147
+ const { agent } = await this.fromTemplate.create(org.orgId, p.account.id, {
148
+ templateId: body.templateId,
149
+ name: body.name,
150
+ previewHash: body.previewHash,
151
+ ...(body.visibility !== undefined && { visibility: body.visibility }),
152
+ ...(body.members !== undefined && { members: body.members }),
153
+ ...(body.model !== undefined && { model: body.model }),
154
+ ...(body.avatar !== undefined && { avatar: body.avatar }),
155
+ }, patTokenId(p));
156
+ return { agent: await this.linked(org.orgId, agent) };
96
157
  }
97
158
  async create(principal, org, body) {
98
159
  const p = requireUser(principal);
@@ -104,14 +165,18 @@ let AgentsController = class AgentsController {
104
165
  }, patTokenId(p));
105
166
  }
106
167
  async list(principal, org) {
107
- return { agents: await this.agents.listVisible(org.orgId, viewerOf(principal)) };
168
+ const agents = await this.agents.listVisible(org.orgId, viewerOf(principal));
169
+ return { agents: await this.agents.withTemplateLinks(org.orgId, agents) };
108
170
  }
109
171
  async get(principal, org, agentId) {
110
- return { agent: await this.agents.get(org.orgId, agentId, viewerOf(principal)) };
172
+ return {
173
+ agent: await this.linked(org.orgId, await this.agents.get(org.orgId, agentId, viewerOf(principal))),
174
+ };
111
175
  }
112
176
  async update(principal, org, agentId, body) {
113
177
  const p = requireUser(principal);
114
- return this.agents.update(org.orgId, agentId, p.account.id, body, patTokenId(p));
178
+ const r = await this.agents.update(org.orgId, agentId, p.account.id, body, patTokenId(p));
179
+ return { ...r, agent: await this.linked(org.orgId, r.agent) };
115
180
  }
116
181
  /** Display data only: no agent version. Same permission as `PATCH :agentId`. */
117
182
  async updateProfile(principal, org, agentId, body) {
@@ -166,15 +231,28 @@ let AgentsController = class AgentsController {
166
231
  /** 重新指派负责人(admin,如负责人离职后);清除 `needsReassignment`。 */
167
232
  async reassign(principal, org, agentId, body) {
168
233
  const p = requireUser(principal);
169
- return {
170
- agent: await this.agents.reassignOwner(org.orgId, agentId, body.accountId, p.account.id, patTokenId(p)),
171
- };
234
+ const agent = await this.agents.reassignOwner(org.orgId, agentId, body.accountId, p.account.id, patTokenId(p));
235
+ return { agent: await this.linked(org.orgId, agent) };
172
236
  }
173
237
  async versions(principal, org, agentId) {
174
238
  await this.agents.get(org.orgId, agentId, viewerOf(principal));
175
239
  return { versions: await this.agents.listVersions(agentId) };
176
240
  }
177
241
  };
242
+ __decorate([
243
+ Post("from-template/preview"),
244
+ HttpCode(200),
245
+ OrgAction("agents.create"),
246
+ __param(0, CurrentOrg()),
247
+ __param(1, ZBody(AgentFromTemplatePreviewBodyDto))
248
+ ], AgentsController.prototype, "previewFromTemplate", null);
249
+ __decorate([
250
+ Post("from-template"),
251
+ OrgAction("agents.create"),
252
+ __param(0, CurrentPrincipal()),
253
+ __param(1, CurrentOrg()),
254
+ __param(2, ZBody(AgentFromTemplateBodyDto))
255
+ ], AgentsController.prototype, "createFromTemplate", null);
178
256
  __decorate([
179
257
  Post(),
180
258
  OrgAction("agents.create"),
@@ -255,6 +333,7 @@ AgentsController = __decorate([
255
333
  Controller("api/v1/orgs/:orgId/agents"),
256
334
  __param(0, Inject(AgentsService)),
257
335
  __param(1, Inject(AgentProfileService)),
258
- __param(2, Inject(AttachmentsService))
336
+ __param(2, Inject(AttachmentsService)),
337
+ __param(3, Inject(AgentsFromTemplate))
259
338
  ], AgentsController);
260
339
  export { AgentsController };
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Agents: the one {@link AgentsService} (definitions, versions, visibility; writes under the org
3
- * row lock) and the plugin agent templates. Reads for a viewer are {@link AgentLookupModule}'s
3
+ * row lock), the agent templates (the plugin ones, and the org's own: `OrgAgentTemplates`),
4
+ * creating agents from templates (`AgentsFromTemplate`) with its pending connector request seam
5
+ * (`PendingConnectorRequests`, ruling P4-7), and binding pending connectors
6
+ * (`PendingConnectorsService`, P4-6). Reads for a viewer are {@link AgentLookupModule}'s
4
7
  * (re-exported), which the conversations and the skill invoker use without this module.
5
8
  */
6
9
  export declare class AgentsModule {
@@ -7,18 +7,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Module } from "@nestjs/common";
8
8
  import { AttachmentsModule } from "../conversations/attachments.module.js";
9
9
  import { EvalBudgetModule } from "../evals/budget.js";
10
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
11
+ import { ModelsModule } from "../models/models.module.js";
10
12
  import { OrgLockModule } from "../orgs/org-lock.js";
11
13
  import { ProvidersModule } from "../runtime/providers.js";
12
- import { SandboxModule } from "../sandbox/sandbox.module.js";
13
14
  import { SkillsModule } from "../skills/skills.module.js";
14
15
  import { ToolsModule } from "../tools/tools.module.js";
15
16
  import { AgentLookupModule } from "./agent-lookup.js";
16
17
  import { AgentProfileService } from "./agent-profile.service.js";
17
18
  import { AgentsService } from "./agents.service.js";
19
+ import { AgentsFromTemplate } from "./from-template.service.js";
20
+ import { OrgAgentTemplates } from "./org-templates.js";
21
+ import { PendingConnectorRequests } from "./pending-connector-requests.js";
22
+ import { PendingConnectorsService } from "./pending-connectors.service.js";
18
23
  import { AgentTemplatesService } from "./templates.js";
19
24
  /**
20
25
  * Agents: the one {@link AgentsService} (definitions, versions, visibility; writes under the org
21
- * row lock) and the plugin agent templates. Reads for a viewer are {@link AgentLookupModule}'s
26
+ * row lock), the agent templates (the plugin ones, and the org's own: `OrgAgentTemplates`),
27
+ * creating agents from templates (`AgentsFromTemplate`) with its pending connector request seam
28
+ * (`PendingConnectorRequests`, ruling P4-7), and binding pending connectors
29
+ * (`PendingConnectorsService`, P4-6). Reads for a viewer are {@link AgentLookupModule}'s
22
30
  * (re-exported), which the conversations and the skill invoker use without this module.
23
31
  */
24
32
  let AgentsModule = class AgentsModule {
@@ -33,13 +41,31 @@ AgentsModule = __decorate([
33
41
  ProvidersModule,
34
42
  SkillsModule,
35
43
  ToolsModule,
36
- // the producer of sandbox-destroy-for jobs after a delete
37
- SandboxModule,
38
44
  // cancels the deleted agent's eval runs
39
45
  EvalBudgetModule,
46
+ // creating from a template: the extension tools and the tier purposes (rulings P4-4, P4-5)
47
+ ExtensionsModule,
48
+ ModelsModule,
49
+ ],
50
+ providers: [
51
+ AgentsService,
52
+ AgentProfileService,
53
+ AgentTemplatesService,
54
+ OrgAgentTemplates,
55
+ AgentsFromTemplate,
56
+ PendingConnectorRequests,
57
+ PendingConnectorsService,
58
+ ],
59
+ exports: [
60
+ AgentLookupModule,
61
+ AgentsService,
62
+ AgentProfileService,
63
+ AgentTemplatesService,
64
+ OrgAgentTemplates,
65
+ AgentsFromTemplate,
66
+ PendingConnectorRequests,
67
+ PendingConnectorsService,
40
68
  ],
41
- providers: [AgentsService, AgentProfileService, AgentTemplatesService],
42
- exports: [AgentLookupModule, AgentsService, AgentProfileService, AgentTemplatesService],
43
69
  })
44
70
  ], AgentsModule);
45
71
  export { AgentsModule };
@@ -2,15 +2,15 @@ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
2
  import { EvalBudget } from "../evals/budget.js";
3
3
  import { KernelDb } from "../infra/database/kernel-db.js";
4
4
  import { TransactionHost } from "../infra/database/transaction-host.js";
5
- import type { KernelLogger } from "../log.js";
6
5
  import { OrgLock } from "../orgs/org-lock.js";
6
+ import { type OrgRole } from "../orgs/roles.js";
7
7
  import { ProviderRegistry } from "../runtime/providers.js";
8
- import { SandboxJobs } from "../sandbox/jobs.js";
9
8
  import { SkillChangesService } from "../skills/changes.service.js";
10
9
  import { ToolRegistry } from "../tools/registry.js";
11
10
  import { AgentLookup, type AgentView, type AgentVisibility } from "./agent-lookup.js";
12
- import { type AgentDefinition } from "./definition.js";
11
+ import { type AgentDefinition, type PendingConnector } from "./definition.js";
13
12
  import { type AgentDefinitionInput } from "./instruction-files.js";
13
+ import { PendingConnectorRequests } from "./pending-connector-requests.js";
14
14
  import { type ProfileInput } from "./profile.js";
15
15
  export { AGENT_VISIBILITIES, type AgentView, type AgentVisibility, isAgentVisibleTo, visibleTo, } from "./agent-lookup.js";
16
16
  export { paramIssues, SUBAGENT_ROSTER_MAX } from "./definition.js";
@@ -25,14 +25,29 @@ export type AgentVersionSummary = Omit<AgentVersion, "definition">;
25
25
  export type AgentWarning = "fallback_same_provider";
26
26
  /** A new agent has no id to bind an upload to yet: a client can only choose a preset on create. */
27
27
  export declare function assertProfileWritable(profile: ProfileInput | undefined): void;
28
+ /**
29
+ * The pending connectors of a saved definition (ruling P4-6): absent from the request = the current
30
+ * version's (an editor that does not know them never drops them); given = a subset of the current
31
+ * ones, unchanged (only creating from a template adds them, only binding resolves them); `[]`
32
+ * removes them all. Another entry → 400 `validation_failed` at `pendingConnectors.<i>`.
33
+ */
34
+ export declare function keepPendingConnectors(definition: AgentDefinition, given: readonly PendingConnector[] | undefined, current: readonly PendingConnector[] | undefined): AgentDefinition;
35
+ /** Where an agent created from a template came from (ruling P4-8; set once, never versioned). */
36
+ export interface TemplateProvenance {
37
+ id: string;
38
+ version: number;
39
+ name: string;
40
+ }
28
41
  /** Why a `subagents` block is refused (`agent.subagents_invalid` details). */
29
42
  export type SubagentsProblem = "not_found" | "invalid_name" | "duplicate" | "tool_not_selected" | "skill_not_selected" | "agent_not_available" | "self" | "too_many";
30
43
  /**
31
44
  * Checks `subagents` of an agent definition in the caller's transaction (spec §5.2); throws 400
32
45
  * `agent.subagents_invalid` with one detail per problem (`{ reason, path, value? }`):
33
- * - `not_found`: a template id that is not a live agent template of the org;
46
+ * - `not_found`: a template id that is not a usable agent template of the org (its own, a linked
47
+ * copy, or a platform template on in the org);
34
48
  * - `invalid_name`: an inline name or `agents[].as` outside {@link SUBAGENT_NAME_RE}, or
35
- * `general-purpose`; `duplicate`: a roster type listed twice (a template id twice included);
49
+ * `general-purpose`; `duplicate`: a roster type listed twice (a template id twice included, a
50
+ * bare template type equal to an inline name, a template typed `general-purpose`);
36
51
  * - `tool_not_selected`: an inline template's `tools`, `disallowedTools` or `toolPolicies` key that
37
52
  * is not a tool key of this agent (`toolKeys`, from `ToolRegistry.checkRefs`);
38
53
  * - `skill_not_selected`: an inline skill id that is neither in `skills.orgSkills` nor a live
@@ -67,29 +82,22 @@ export declare class AgentsService {
67
82
  private readonly orgLock;
68
83
  /** Resolves the agent's models (and their parameter declarations) when it is saved. */
69
84
  private readonly providers;
70
- /**
71
- * The sandbox destruction after a delete (内核投递一次性维护任务 `sandbox-destroy-for`,worker
72
- * 在锁内逐个销毁,幂等).
73
- */
74
- private readonly sandboxJobs;
75
- private readonly log;
76
85
  readonly txHost: TransactionHost;
77
86
  /** Cancels the deleted agent's running eval runs (in the delete's transaction). */
78
87
  private readonly evalBudget;
88
+ /** Settles the agent's connector setup request when its pending connectors change (P4-7). */
89
+ private readonly setupRequests;
79
90
  constructor(db: KernelDb, lookup: AgentLookup, tools: Pick<ToolRegistry, "checkRefs">,
80
91
  /** 删除 agent 时取消它待处理的技能改动(T15)。 */
81
92
  skillChanges: Pick<SkillChangesService, "cancelPendingForAgent" | "finishCancel">,
82
93
  /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
83
94
  orgLock: Pick<OrgLock, "lockAndAuthorize">,
84
95
  /** Resolves the agent's models (and their parameter declarations) when it is saved. */
85
- providers: Pick<ProviderRegistry, "resolve">,
86
- /**
87
- * The sandbox destruction after a delete (内核投递一次性维护任务 `sandbox-destroy-for`,worker
88
- * 在锁内逐个销毁,幂等).
89
- */
90
- sandboxJobs: Pick<SandboxJobs, "destroy">, log: Pick<KernelLogger, "warn">, txHost: TransactionHost,
96
+ providers: Pick<ProviderRegistry, "resolve">, txHost: TransactionHost,
91
97
  /** Cancels the deleted agent's running eval runs (in the delete's transaction). */
92
- evalBudget: Pick<EvalBudget, "cancelRuns">);
98
+ evalBudget: Pick<EvalBudget, "cancelRuns">,
99
+ /** Settles the agent's connector setup request when its pending connectors change (P4-7). */
100
+ setupRequests: Pick<PendingConnectorRequests, "settleIn" | "retargetIn">);
93
101
  /**
94
102
  * 校验工具引用与工具策略:引用的内置 / 插件 / 连接器工具必须存在(见 `ToolRegistry.checkRefs`);
95
103
  * `toolPolicies` 的键必须是这些引用产生的工具 key(取值只能收紧,已由 schema 保证)。
@@ -113,10 +121,28 @@ export declare class AgentsService {
113
121
  visibility: AgentVisibility;
114
122
  memberIds?: string[];
115
123
  profile?: ProfileInput;
116
- }, actorTokenId?: string): Promise<{
124
+ }, actorTokenId?: string, auditDetail?: Record<string, unknown>): Promise<{
117
125
  agent: AgentView;
118
126
  warnings: AgentWarning[];
119
127
  }>;
128
+ /**
129
+ * Creates an agent from a planned template definition (rulings P4-3, P4-8): {@link create}'s
130
+ * checks, plus, under the org row lock, 403 `agent.visibility_forbidden` when the visibility is
131
+ * not `private` and the creator lacks `agents.manage`; the provenance columns are written once.
132
+ * Returns the creator's role read under the lock (the caller decides on the pending connector
133
+ * request after the commit).
134
+ */
135
+ createFromTemplate(orgId: string, actorAccountId: string, request: {
136
+ definition: AgentDefinitionInput;
137
+ visibility: AgentVisibility;
138
+ memberIds?: string[];
139
+ profile?: ProfileInput;
140
+ }, template: TemplateProvenance, actorTokenId?: string, auditDetail?: Record<string, unknown>): Promise<{
141
+ agent: AgentView;
142
+ warnings: AgentWarning[];
143
+ role: OrgRole;
144
+ }>;
145
+ private createChecked;
120
146
  private createIn;
121
147
  /**
122
148
  * 锁组织行并复核发起人,再锁 agent 行:发起人须仍具备 `agents.create`(member 以上),且是负责人或组织管理员以上;
@@ -139,7 +165,7 @@ export declare class AgentsService {
139
165
  * 不产生新版本,所以检测不到别人只改了可见范围(之后的保存会按本次给出的 visibility 覆盖)。
140
166
  */
141
167
  expectedVersion?: number | undefined;
142
- }, actorTokenId?: string): Promise<{
168
+ }, actorTokenId?: string, auditDetail?: Record<string, unknown>): Promise<{
143
169
  agent: AgentView;
144
170
  warnings: AgentWarning[];
145
171
  }>;
@@ -147,14 +173,17 @@ export declare class AgentsService {
147
173
  /** 软删除:权限同 update。待处理的技能改动与该 agent 评测集在执行的评测运行一并取消,提交后删除草稿(T15)。 */
148
174
  softDelete(orgId: string, agentId: string, actorAccountId: string, actorTokenId?: string): Promise<void>;
149
175
  private softDeleteIn;
150
- /** 提交后尽力而为:投递销毁这个 agent 各对话还没销毁的沙箱(失败只记日志,留给不活跃销毁扫描)。 */
151
- private destroySandboxes;
152
176
  /**
153
177
  * 重新指派负责人(`agents.manage`,admin):在组织行锁内授权;agent 不存在 / 已删除 → `agent.not_found`;
154
178
  * 新负责人不是该组织成员 → `member.not_found`;是匿名访客 → `member.anonymous_guest`。
155
179
  * 清除 `needs_reassignment`,审计 `agent.owner_changed`。
156
180
  */
157
181
  reassignOwner(orgId: string, agentId: string, newOwnerId: string, actorAccountId: string, actorTokenId?: string): Promise<AgentView>;
182
+ /**
183
+ * `views` with `createdFrom.available` set (ruling P4-8): whether each recorded template is
184
+ * still usable in the org. One template read for all of them; only the agents API calls it.
185
+ */
186
+ withTemplateLinks<T extends AgentView>(orgId: string, views: T[]): Promise<T[]>;
158
187
  /** 取对 viewer 可见的 agent;`viewerAccountId = null` 表示该组织的服务令牌。不可见 → `agent.not_found`。 */
159
188
  get(orgId: string, agentId: string, viewerAccountId: string | null): Promise<AgentView>;
160
189
  /** 组织内对 viewer 可见的全部 agent(按创建时间)。 */