@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -7,30 +7,61 @@ 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, Delete, Get, HttpCode, Inject, Param, Patch, Post } from "@nestjs/common";
10
+ import { hasControlChars, MEDIA_NAME_MAX_CHARS } from "@capybara-hq/plugin-sdk";
11
+ import { Controller, Delete, Get, HttpCode, Inject, Param, Patch, Post, Res } from "@nestjs/common";
11
12
  import { z } from "zod";
13
+ import { AGENT_AVATAR_CONTENT_TYPES, AGENT_AVATAR_DOWNLOAD_TTL_SECONDS, AGENT_AVATAR_MAX_BYTES, AttachmentsService, } from "../conversations/attachments.service.js";
14
+ import { ApiError } from "../errors.js";
12
15
  import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
13
16
  import { createZodDto } from "../infra/validation/create-zod-dto.js";
14
17
  import { ZBody } from "../infra/validation/zod-params.js";
15
18
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
19
+ import { AgentProfileService } from "./agent-profile.service.js";
16
20
  import { AGENT_VISIBILITIES, AgentsService, } from "./agents.service.js";
17
- import { AgentDefinitionSchema, AgentToolRef, DEFAULT_AGENT_TOOLS } from "./definition.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";
18
24
  const MemberIds = z.array(z.string().min(1).max(100)).max(1000);
19
25
  const OwnerBody = z.object({ accountId: z.string().min(1).max(100) }).strict();
20
26
  /** 创建时未给 `tools` → 默认工具(Ruling P7);修改请求不注入默认值,版本里总是存显式的 tools。 */
21
- const CreateDefinition = AgentDefinitionSchema.extend({
27
+ /**
28
+ * `instructions` has no default in a request: with `instructionFiles` the kernel derives it, and a
29
+ * new agent given neither gets the `AGENTS.md` starter (`deriveInstructions`).
30
+ */
31
+ const RequestInstructions = z.string().max(100_000).optional();
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({
34
+ instructions: RequestInstructions,
22
35
  tools: z.array(AgentToolRef).default(() => structuredClone(DEFAULT_AGENT_TOOLS)),
23
36
  });
37
+ const UpdateDefinition = AgentDefinitionSchema.extend({ instructions: RequestInstructions });
24
38
  const CreateBody = z
25
39
  .object({
26
40
  definition: CreateDefinition,
27
41
  visibility: z.enum(AGENT_VISIBILITIES),
28
42
  memberIds: MemberIds.optional(),
43
+ /** Without an avatar the agent gets a random preset. */
44
+ profile: ProfileInputSchema.optional(),
45
+ })
46
+ .strict();
47
+ const ProfileBody = ProfileInputSchema.extend({
48
+ /** The `profile.updatedAt` the client read; a different one → 409 `agent.profile_conflict`. */
49
+ expectedUpdatedAt: z.string().min(1).max(40),
50
+ }).strict();
51
+ const AvatarUploadBody = z
52
+ .object({
53
+ name: z
54
+ .string()
55
+ .min(1)
56
+ .max(MEDIA_NAME_MAX_CHARS)
57
+ .refine((s) => !hasControlChars(s), "name must not contain control characters"),
58
+ contentType: z.enum(AGENT_AVATAR_CONTENT_TYPES),
59
+ size: z.number().int().min(1).max(AGENT_AVATAR_MAX_BYTES),
29
60
  })
30
61
  .strict();
31
62
  const UpdateBody = z
32
63
  .object({
33
- definition: AgentDefinitionSchema.optional(),
64
+ definition: UpdateDefinition.optional(),
34
65
  visibility: z.enum(AGENT_VISIBILITIES).optional(),
35
66
  memberIds: MemberIds.optional(),
36
67
  /**
@@ -40,22 +71,89 @@ const UpdateBody = z
40
71
  expectedVersion: z.number().int().positive().optional(),
41
72
  })
42
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();
43
95
  /** 服务令牌没有账号:以 null 作为 viewer,只看到 visibility='org' 的 agent。 */
44
96
  const viewerOf = (p) => (p.kind === "user" ? p.account.id : null);
45
97
  class AgentCreateBodyDto extends createZodDto(CreateBody, "AgentCreateBody") {
46
98
  }
47
99
  class AgentUpdateBodyDto extends createZodDto(UpdateBody, "AgentUpdateBody") {
48
100
  }
101
+ class AgentProfileBodyDto extends createZodDto(ProfileBody, "AgentProfileBody") {
102
+ }
103
+ class AgentAvatarUploadBodyDto extends createZodDto(AvatarUploadBody, "AgentAvatarUploadBody") {
104
+ }
49
105
  class AgentOwnerBodyDto extends createZodDto(OwnerBody, "AgentOwnerBody") {
50
106
  }
107
+ class AgentFromTemplatePreviewBodyDto extends createZodDto(FromTemplatePreviewBody, "AgentFromTemplatePreviewBody") {
108
+ }
109
+ class AgentFromTemplateBodyDto extends createZodDto(FromTemplateBody, "AgentFromTemplateBody") {
110
+ }
51
111
  /**
52
112
  * Agent 定义(`/api/v1/orgs/:orgId/agents`)。读用 `agents.use`(访客与服务令牌可用),
53
113
  * 写用 `agents.create`(member 以上、HUMAN_ONLY),修改 / 删除的负责人或管理员判定在服务的组织行锁内完成。
54
114
  */
55
115
  let AgentsController = class AgentsController {
56
116
  agents;
57
- constructor(agents) {
117
+ profiles;
118
+ attachments;
119
+ fromTemplate;
120
+ constructor(agents, profiles, attachments, fromTemplate) {
58
121
  this.agents = agents;
122
+ this.profiles = profiles;
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) };
59
157
  }
60
158
  async create(principal, org, body) {
61
159
  const p = requireUser(principal);
@@ -63,17 +161,68 @@ let AgentsController = class AgentsController {
63
161
  definition: body.definition,
64
162
  visibility: body.visibility,
65
163
  ...(body.memberIds !== undefined && { memberIds: body.memberIds }),
164
+ ...(body.profile !== undefined && { profile: body.profile }),
66
165
  }, patTokenId(p));
67
166
  }
68
167
  async list(principal, org) {
69
- 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) };
70
170
  }
71
171
  async get(principal, org, agentId) {
72
- 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
+ };
73
175
  }
74
176
  async update(principal, org, agentId, body) {
75
177
  const p = requireUser(principal);
76
- 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) };
180
+ }
181
+ /** Display data only: no agent version. Same permission as `PATCH :agentId`. */
182
+ async updateProfile(principal, org, agentId, body) {
183
+ const p = requireUser(principal);
184
+ const { expectedUpdatedAt, ...patch } = body;
185
+ return {
186
+ profile: await this.profiles.update(org.orgId, agentId, p.account.id, patch, expectedUpdatedAt, patTokenId(p)),
187
+ };
188
+ }
189
+ /**
190
+ * Registers an avatar image upload (presigned, like chat attachments and skill packages): the
191
+ * browser uploads straight to the object store, then saves `{ kind: "upload", uploadId }` with
192
+ * the profile PATCH, which finalizes it. 503 `storage.unavailable` without an object store.
193
+ */
194
+ async createAvatarUpload(principal, org, agentId, body) {
195
+ const p = requireUser(principal);
196
+ // the agent must exist and be visible to the caller (writing is checked when it is saved)
197
+ await this.agents.get(org.orgId, agentId, viewerOf(p));
198
+ return this.attachments.create(org.orgId, p.account.id, body, "agent-avatar");
199
+ }
200
+ /**
201
+ * The avatar image: 302 to a short-lived presigned URL for an upload avatar, or to the stored
202
+ * URL of an external avatar when it is https; 404 for presets, no avatar, or an agent the
203
+ * reader cannot see.
204
+ */
205
+ async avatar(principal, org, agentId, reply) {
206
+ const view = await this.agents.get(org.orgId, agentId, viewerOf(principal));
207
+ const avatar = view.profile.avatar;
208
+ let location = null;
209
+ if (avatar?.kind === "upload") {
210
+ location = await this.attachments.agentAvatarUrl(org.orgId, agentId, avatar.uploadId);
211
+ }
212
+ else if (avatar?.kind === "external") {
213
+ try {
214
+ if (new URL(avatar.url).protocol === "https:")
215
+ location = avatar.url;
216
+ }
217
+ catch {
218
+ // a malformed migrated URL: no image
219
+ }
220
+ }
221
+ if (location === null)
222
+ throw new ApiError("agent.not_found", "The agent has no avatar image");
223
+ await reply
224
+ .header("cache-control", `private, max-age=${Math.floor(AGENT_AVATAR_DOWNLOAD_TTL_SECONDS / 5)}`)
225
+ .redirect(location, 302);
77
226
  }
78
227
  async remove(principal, org, agentId) {
79
228
  const p = requireUser(principal);
@@ -82,15 +231,28 @@ let AgentsController = class AgentsController {
82
231
  /** 重新指派负责人(admin,如负责人离职后);清除 `needsReassignment`。 */
83
232
  async reassign(principal, org, agentId, body) {
84
233
  const p = requireUser(principal);
85
- return {
86
- agent: await this.agents.reassignOwner(org.orgId, agentId, body.accountId, p.account.id, patTokenId(p)),
87
- };
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) };
88
236
  }
89
237
  async versions(principal, org, agentId) {
90
238
  await this.agents.get(org.orgId, agentId, viewerOf(principal));
91
239
  return { versions: await this.agents.listVersions(agentId) };
92
240
  }
93
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);
94
256
  __decorate([
95
257
  Post(),
96
258
  OrgAction("agents.create"),
@@ -119,6 +281,30 @@ __decorate([
119
281
  __param(2, Param("agentId")),
120
282
  __param(3, ZBody(AgentUpdateBodyDto))
121
283
  ], AgentsController.prototype, "update", null);
284
+ __decorate([
285
+ Patch(":agentId/profile"),
286
+ OrgAction("agents.create"),
287
+ __param(0, CurrentPrincipal()),
288
+ __param(1, CurrentOrg()),
289
+ __param(2, Param("agentId")),
290
+ __param(3, ZBody(AgentProfileBodyDto))
291
+ ], AgentsController.prototype, "updateProfile", null);
292
+ __decorate([
293
+ Post(":agentId/avatar/uploads"),
294
+ OrgAction("agents.create"),
295
+ __param(0, CurrentPrincipal()),
296
+ __param(1, CurrentOrg()),
297
+ __param(2, Param("agentId")),
298
+ __param(3, ZBody(AgentAvatarUploadBodyDto))
299
+ ], AgentsController.prototype, "createAvatarUpload", null);
300
+ __decorate([
301
+ Get(":agentId/avatar"),
302
+ OrgAction("agents.use"),
303
+ __param(0, CurrentPrincipal()),
304
+ __param(1, CurrentOrg()),
305
+ __param(2, Param("agentId")),
306
+ __param(3, Res())
307
+ ], AgentsController.prototype, "avatar", null);
122
308
  __decorate([
123
309
  Delete(":agentId"),
124
310
  HttpCode(204),
@@ -145,6 +331,9 @@ __decorate([
145
331
  ], AgentsController.prototype, "versions", null);
146
332
  AgentsController = __decorate([
147
333
  Controller("api/v1/orgs/:orgId/agents"),
148
- __param(0, Inject(AgentsService))
334
+ __param(0, Inject(AgentsService)),
335
+ __param(1, Inject(AgentProfileService)),
336
+ __param(2, Inject(AttachmentsService)),
337
+ __param(3, Inject(AgentsFromTemplate))
149
338
  ], AgentsController);
150
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 {
@@ -5,18 +5,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Module } from "@nestjs/common";
8
+ import { AttachmentsModule } from "../conversations/attachments.module.js";
8
9
  import { EvalBudgetModule } from "../evals/budget.js";
10
+ import { ExtensionsModule } from "../extensions/extensions.module.js";
11
+ import { ModelsModule } from "../models/models.module.js";
9
12
  import { OrgLockModule } from "../orgs/org-lock.js";
10
13
  import { ProvidersModule } from "../runtime/providers.js";
11
- import { SandboxModule } from "../sandbox/sandbox.module.js";
12
14
  import { SkillsModule } from "../skills/skills.module.js";
13
15
  import { ToolsModule } from "../tools/tools.module.js";
14
16
  import { AgentLookupModule } from "./agent-lookup.js";
17
+ import { AgentProfileService } from "./agent-profile.service.js";
15
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";
16
23
  import { AgentTemplatesService } from "./templates.js";
17
24
  /**
18
25
  * Agents: the one {@link AgentsService} (definitions, versions, visibility; writes under the org
19
- * 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
20
30
  * (re-exported), which the conversations and the skill invoker use without this module.
21
31
  */
22
32
  let AgentsModule = class AgentsModule {
@@ -25,17 +35,37 @@ AgentsModule = __decorate([
25
35
  Module({
26
36
  imports: [
27
37
  AgentLookupModule,
38
+ // avatar uploads
39
+ AttachmentsModule,
28
40
  OrgLockModule,
29
41
  ProvidersModule,
30
42
  SkillsModule,
31
43
  ToolsModule,
32
- // the producer of sandbox-destroy-for jobs after a delete
33
- SandboxModule,
34
44
  // cancels the deleted agent's eval runs
35
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,
36
68
  ],
37
- providers: [AgentsService, AgentTemplatesService],
38
- exports: [AgentLookupModule, AgentsService, AgentTemplatesService],
39
69
  })
40
70
  ], AgentsModule);
41
71
  export { AgentsModule };
@@ -2,14 +2,16 @@ 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";
12
+ import { type AgentDefinitionInput } from "./instruction-files.js";
13
+ import { PendingConnectorRequests } from "./pending-connector-requests.js";
14
+ import { type ProfileInput } from "./profile.js";
13
15
  export { AGENT_VISIBILITIES, type AgentView, type AgentVisibility, isAgentVisibleTo, visibleTo, } from "./agent-lookup.js";
14
16
  export { paramIssues, SUBAGENT_ROSTER_MAX } from "./definition.js";
15
17
  export interface AgentVersion {
@@ -21,14 +23,31 @@ export interface AgentVersion {
21
23
  export type AgentVersionSummary = Omit<AgentVersion, "definition">;
22
24
  /** 创建 / 修改的提示(不拒绝):`fallback_same_provider` = 兜底与主模型同一供应商(spec 4.5)。 */
23
25
  export type AgentWarning = "fallback_same_provider";
26
+ /** A new agent has no id to bind an upload to yet: a client can only choose a preset on create. */
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
+ }
24
41
  /** Why a `subagents` block is refused (`agent.subagents_invalid` details). */
25
42
  export type SubagentsProblem = "not_found" | "invalid_name" | "duplicate" | "tool_not_selected" | "skill_not_selected" | "agent_not_available" | "self" | "too_many";
26
43
  /**
27
44
  * Checks `subagents` of an agent definition in the caller's transaction (spec §5.2); throws 400
28
45
  * `agent.subagents_invalid` with one detail per problem (`{ reason, path, value? }`):
29
- * - `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);
30
48
  * - `invalid_name`: an inline name or `agents[].as` outside {@link SUBAGENT_NAME_RE}, or
31
- * `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`);
32
51
  * - `tool_not_selected`: an inline template's `tools`, `disallowedTools` or `toolPolicies` key that
33
52
  * is not a tool key of this agent (`toolKeys`, from `ToolRegistry.checkRefs`);
34
53
  * - `skill_not_selected`: an inline skill id that is neither in `skills.orgSkills` nor a live
@@ -63,29 +82,22 @@ export declare class AgentsService {
63
82
  private readonly orgLock;
64
83
  /** Resolves the agent's models (and their parameter declarations) when it is saved. */
65
84
  private readonly providers;
66
- /**
67
- * The sandbox destruction after a delete (内核投递一次性维护任务 `sandbox-destroy-for`,worker
68
- * 在锁内逐个销毁,幂等).
69
- */
70
- private readonly sandboxJobs;
71
- private readonly log;
72
85
  readonly txHost: TransactionHost;
73
86
  /** Cancels the deleted agent's running eval runs (in the delete's transaction). */
74
87
  private readonly evalBudget;
88
+ /** Settles the agent's connector setup request when its pending connectors change (P4-7). */
89
+ private readonly setupRequests;
75
90
  constructor(db: KernelDb, lookup: AgentLookup, tools: Pick<ToolRegistry, "checkRefs">,
76
91
  /** 删除 agent 时取消它待处理的技能改动(T15)。 */
77
92
  skillChanges: Pick<SkillChangesService, "cancelPendingForAgent" | "finishCancel">,
78
93
  /** The org row lock (orgs/org-lock.ts): joins the caller's transaction. */
79
94
  orgLock: Pick<OrgLock, "lockAndAuthorize">,
80
95
  /** Resolves the agent's models (and their parameter declarations) when it is saved. */
81
- providers: Pick<ProviderRegistry, "resolve">,
82
- /**
83
- * The sandbox destruction after a delete (内核投递一次性维护任务 `sandbox-destroy-for`,worker
84
- * 在锁内逐个销毁,幂等).
85
- */
86
- sandboxJobs: Pick<SandboxJobs, "destroy">, log: Pick<KernelLogger, "warn">, txHost: TransactionHost,
96
+ providers: Pick<ProviderRegistry, "resolve">, txHost: TransactionHost,
87
97
  /** Cancels the deleted agent's running eval runs (in the delete's transaction). */
88
- 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">);
89
101
  /**
90
102
  * 校验工具引用与工具策略:引用的内置 / 插件 / 连接器工具必须存在(见 `ToolRegistry.checkRefs`);
91
103
  * `toolPolicies` 的键必须是这些引用产生的工具 key(取值只能收紧,已由 schema 保证)。
@@ -104,26 +116,48 @@ export declare class AgentsService {
104
116
  * 新建 agent(版本 1):在组织行锁内授权 `agents.create`;主模型与兜底都必须可解析
105
117
  * (`agent.model_unavailable`);兜底与主模型同一供应商只提示 `fallback_same_provider`。
106
118
  */
107
- create(orgId: string, actorAccountId: string, input: {
108
- definition: AgentDefinition;
119
+ create(orgId: string, actorAccountId: string, request: {
120
+ definition: AgentDefinitionInput;
109
121
  visibility: AgentVisibility;
110
122
  memberIds?: string[];
111
- }, actorTokenId?: string): Promise<{
123
+ profile?: ProfileInput;
124
+ }, actorTokenId?: string, auditDetail?: Record<string, unknown>): Promise<{
112
125
  agent: AgentView;
113
126
  warnings: AgentWarning[];
114
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;
115
146
  private createIn;
116
147
  /**
117
148
  * 锁组织行并复核发起人,再锁 agent 行:发起人须仍具备 `agents.create`(member 以上),且是负责人或组织管理员以上;
118
149
  * 对发起人不可见的 agent(非管理员)→ `agent.not_found`,可见但无权 → `forbidden`。
119
150
  */
120
- private lockForWrite;
151
+ lockForWrite(orgId: string, agentId: string, actorAccountId: string): Promise<{
152
+ visibility: AgentVisibility;
153
+ current_version: number;
154
+ }>;
121
155
  /**
122
156
  * 修改 agent:`definition` 变化时写新版本(`current_version + 1`),只改 visibility / memberIds 不产生新版本。
123
157
  * 只有负责人或组织管理员以上可改,在组织行锁内复核。
124
158
  */
125
- update(orgId: string, agentId: string, actorAccountId: string, patch: {
126
- definition?: AgentDefinition | undefined;
159
+ update(orgId: string, agentId: string, actorAccountId: string, request: {
160
+ definition?: AgentDefinitionInput | undefined;
127
161
  visibility?: AgentVisibility | undefined;
128
162
  memberIds?: string[] | undefined;
129
163
  /**
@@ -131,7 +165,7 @@ export declare class AgentsService {
131
165
  * 不产生新版本,所以检测不到别人只改了可见范围(之后的保存会按本次给出的 visibility 覆盖)。
132
166
  */
133
167
  expectedVersion?: number | undefined;
134
- }, actorTokenId?: string): Promise<{
168
+ }, actorTokenId?: string, auditDetail?: Record<string, unknown>): Promise<{
135
169
  agent: AgentView;
136
170
  warnings: AgentWarning[];
137
171
  }>;
@@ -139,14 +173,17 @@ export declare class AgentsService {
139
173
  /** 软删除:权限同 update。待处理的技能改动与该 agent 评测集在执行的评测运行一并取消,提交后删除草稿(T15)。 */
140
174
  softDelete(orgId: string, agentId: string, actorAccountId: string, actorTokenId?: string): Promise<void>;
141
175
  private softDeleteIn;
142
- /** 提交后尽力而为:投递销毁这个 agent 各对话还没销毁的沙箱(失败只记日志,留给不活跃销毁扫描)。 */
143
- private destroySandboxes;
144
176
  /**
145
177
  * 重新指派负责人(`agents.manage`,admin):在组织行锁内授权;agent 不存在 / 已删除 → `agent.not_found`;
146
178
  * 新负责人不是该组织成员 → `member.not_found`;是匿名访客 → `member.anonymous_guest`。
147
179
  * 清除 `needs_reassignment`,审计 `agent.owner_changed`。
148
180
  */
149
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[]>;
150
187
  /** 取对 viewer 可见的 agent;`viewerAccountId = null` 表示该组织的服务令牌。不可见 → `agent.not_found`。 */
151
188
  get(orgId: string, agentId: string, viewerAccountId: string | null): Promise<AgentView>;
152
189
  /** 组织内对 viewer 可见的全部 agent(按创建时间)。 */