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