@capybara-hq/kernel 0.1.0-rc.4 → 0.1.0-rc.6

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 (534) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +51 -14
  3. package/dist/admin/admin.controller.js +60 -19
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +54 -23
  19. package/dist/agents/agents.service.js +180 -76
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/models.controller.d.ts +34 -5
  27. package/dist/agents/models.controller.js +50 -6
  28. package/dist/agents/org-templates.d.ts +176 -0
  29. package/dist/agents/org-templates.js +827 -0
  30. package/dist/agents/pending-connector-requests.d.ts +77 -0
  31. package/dist/agents/pending-connector-requests.js +215 -0
  32. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  33. package/dist/agents/pending-connectors.controller.js +91 -0
  34. package/dist/agents/pending-connectors.service.d.ts +62 -0
  35. package/dist/agents/pending-connectors.service.js +282 -0
  36. package/dist/agents/readiness.controller.d.ts +5 -5
  37. package/dist/agents/readiness.controller.js +6 -6
  38. package/dist/agents/templates.controller.d.ts +86 -5
  39. package/dist/agents/templates.controller.js +171 -7
  40. package/dist/agents/templates.d.ts +127 -23
  41. package/dist/agents/templates.js +475 -52
  42. package/dist/background/background.module.js +8 -1
  43. package/dist/background/finish.d.ts +3 -2
  44. package/dist/background/launch-lock.d.ts +4 -3
  45. package/dist/background/launch-lock.js +4 -3
  46. package/dist/background/poll.job.d.ts +9 -6
  47. package/dist/background/poll.job.js +30 -22
  48. package/dist/background/session.d.ts +13 -2
  49. package/dist/background/session.js +13 -0
  50. package/dist/background/stop.d.ts +12 -6
  51. package/dist/background/stop.js +57 -39
  52. package/dist/background/store.d.ts +18 -6
  53. package/dist/background/store.js +12 -6
  54. package/dist/background/tasks.service.d.ts +15 -5
  55. package/dist/background/tasks.service.js +42 -17
  56. package/dist/background/wake-rules.d.ts +27 -18
  57. package/dist/background/wake-rules.js +52 -22
  58. package/dist/background/wake.d.ts +13 -11
  59. package/dist/background/wake.js +20 -14
  60. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  61. package/dist/catalog/admin-catalog.controller.js +213 -42
  62. package/dist/catalog/catalog-content.d.ts +58 -32
  63. package/dist/catalog/catalog-content.js +34 -8
  64. package/dist/catalog/catalog-import.module.d.ts +7 -0
  65. package/dist/catalog/catalog-import.module.js +60 -0
  66. package/dist/catalog/catalog-items.d.ts +111 -7
  67. package/dist/catalog/catalog-items.js +279 -13
  68. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  69. package/dist/catalog/catalog-scope.service.js +1116 -0
  70. package/dist/catalog/catalog.module.d.ts +7 -9
  71. package/dist/catalog/catalog.module.js +41 -31
  72. package/dist/catalog/catalog.service.d.ts +101 -29
  73. package/dist/catalog/catalog.service.js +104 -106
  74. package/dist/catalog/cli.d.ts +11 -1
  75. package/dist/catalog/cli.js +26 -1
  76. package/dist/catalog/component-promotion.d.ts +96 -0
  77. package/dist/catalog/component-promotion.js +395 -0
  78. package/dist/catalog/component-scope.controller.d.ts +152 -0
  79. package/dist/catalog/component-scope.controller.js +287 -0
  80. package/dist/catalog/component-scope.service.d.ts +303 -0
  81. package/dist/catalog/component-scope.service.js +936 -0
  82. package/dist/catalog/component-state.d.ts +174 -0
  83. package/dist/catalog/component-state.js +437 -0
  84. package/dist/catalog/job-ids.d.ts +30 -0
  85. package/dist/catalog/job-ids.js +25 -0
  86. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  87. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  88. package/dist/catalog/marketplaces.controller.js +56 -7
  89. package/dist/catalog/marketplaces.service.d.ts +54 -14
  90. package/dist/catalog/marketplaces.service.js +71 -22
  91. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  92. package/dist/catalog/org-catalog.controller.js +181 -65
  93. package/dist/catalog/org-catalog.service.d.ts +65 -33
  94. package/dist/catalog/org-catalog.service.js +324 -157
  95. package/dist/catalog/org-extension-switch.d.ts +41 -0
  96. package/dist/catalog/org-extension-switch.js +115 -0
  97. package/dist/catalog/org-extension.controller.d.ts +119 -0
  98. package/dist/catalog/org-extension.controller.js +266 -0
  99. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  100. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  101. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  102. package/dist/catalog/org-plugin-uploads.js +116 -0
  103. package/dist/catalog/owned-items.d.ts +184 -0
  104. package/dist/catalog/owned-items.js +789 -0
  105. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  106. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  107. package/dist/catalog/ownership.d.ts +172 -0
  108. package/dist/catalog/ownership.js +326 -0
  109. package/dist/catalog/platform-components.d.ts +221 -0
  110. package/dist/catalog/platform-components.js +761 -0
  111. package/dist/catalog/platform-migration.d.ts +115 -0
  112. package/dist/catalog/platform-migration.js +582 -0
  113. package/dist/catalog/plugin-import.d.ts +178 -34
  114. package/dist/catalog/plugin-import.js +622 -82
  115. package/dist/catalog/plugin-install.d.ts +185 -41
  116. package/dist/catalog/plugin-install.js +758 -126
  117. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  118. package/dist/catalog/plugin-upgrade.js +1147 -1136
  119. package/dist/catalog/request-rules.d.ts +65 -0
  120. package/dist/catalog/request-rules.js +217 -0
  121. package/dist/catalog/requests.service.d.ts +193 -118
  122. package/dist/catalog/requests.service.js +526 -343
  123. package/dist/catalog/reserved-names.d.ts +8 -0
  124. package/dist/catalog/reserved-names.js +42 -0
  125. package/dist/catalog/scope-orgs.d.ts +21 -0
  126. package/dist/catalog/scope-orgs.js +67 -0
  127. package/dist/catalog/scope-state.d.ts +35 -0
  128. package/dist/catalog/scope-state.js +87 -0
  129. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  130. package/dist/catalog/scope-sync-workers.js +29 -0
  131. package/dist/catalog/scope-sync.d.ts +176 -0
  132. package/dist/catalog/scope-sync.js +576 -0
  133. package/dist/catalog/scope.d.ts +42 -0
  134. package/dist/catalog/scope.js +42 -0
  135. package/dist/catalog/unshare.d.ts +22 -0
  136. package/dist/catalog/unshare.js +118 -0
  137. package/dist/channels/actions.js +1 -0
  138. package/dist/channels/cards.js +20 -2
  139. package/dist/channels/channels.module.js +2 -0
  140. package/dist/channels/inbound.d.ts +9 -1
  141. package/dist/channels/inbound.js +67 -5
  142. package/dist/channels/phrases.d.ts +35 -0
  143. package/dist/channels/phrases.js +29 -0
  144. package/dist/config/docs.js +3 -1
  145. package/dist/config/schema.d.ts +10 -2
  146. package/dist/config/schema.js +70 -22
  147. package/dist/conversations/access.d.ts +6 -4
  148. package/dist/conversations/access.js +27 -5
  149. package/dist/conversations/agent-tree.d.ts +46 -0
  150. package/dist/conversations/agent-tree.js +92 -0
  151. package/dist/conversations/conversations.controller.d.ts +43 -18
  152. package/dist/conversations/conversations.controller.js +79 -38
  153. package/dist/conversations/conversations.module.d.ts +1 -1
  154. package/dist/conversations/conversations.module.js +7 -7
  155. package/dist/conversations/conversations.service.d.ts +73 -15
  156. package/dist/conversations/conversations.service.js +115 -35
  157. package/dist/conversations/environment-status.d.ts +24 -0
  158. package/dist/conversations/environment-status.js +71 -0
  159. package/dist/conversations/event-log.d.ts +20 -5
  160. package/dist/conversations/event-log.js +60 -0
  161. package/dist/conversations/events.d.ts +84 -2
  162. package/dist/conversations/events.js +91 -17
  163. package/dist/conversations/queue.service.d.ts +1 -1
  164. package/dist/conversations/queue.service.js +5 -0
  165. package/dist/conversations/titles.d.ts +5 -3
  166. package/dist/conversations/titles.js +21 -8
  167. package/dist/conversations/tree.d.ts +17 -0
  168. package/dist/conversations/tree.js +42 -0
  169. package/dist/ctx/create-ctx.d.ts +20 -1
  170. package/dist/ctx/create-ctx.js +38 -7
  171. package/dist/db/kernel-schema.d.ts +386 -18
  172. package/dist/environments/access.d.ts +41 -0
  173. package/dist/environments/access.js +77 -0
  174. package/dist/environments/conversation-environments.d.ts +61 -0
  175. package/dist/environments/conversation-environments.js +170 -0
  176. package/dist/environments/dto.d.ts +25 -0
  177. package/dist/environments/dto.js +12 -0
  178. package/dist/environments/environments.controller.d.ts +33 -0
  179. package/dist/environments/environments.controller.js +110 -0
  180. package/dist/environments/environments.module.d.ts +8 -0
  181. package/dist/environments/environments.module.js +27 -0
  182. package/dist/environments/environments.service.d.ts +153 -0
  183. package/dist/environments/environments.service.js +541 -0
  184. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  185. package/dist/environments/legacy-cleanup.job.js +141 -0
  186. package/dist/errors.d.ts +85 -2
  187. package/dist/errors.js +85 -2
  188. package/dist/evals/reconstruct.d.ts +18 -9
  189. package/dist/evals/reconstruct.js +26 -7
  190. package/dist/evals/run-replay.d.ts +4 -2
  191. package/dist/evals/run-replay.js +20 -6
  192. package/dist/evals/runs.service.d.ts +2 -1
  193. package/dist/evals/runs.service.js +13 -12
  194. package/dist/evals/step-replay.d.ts +4 -6
  195. package/dist/evals/step-replay.js +4 -3
  196. package/dist/evals/trajectory.service.d.ts +8 -3
  197. package/dist/evals/trajectory.service.js +26 -14
  198. package/dist/evals/worker.d.ts +5 -5
  199. package/dist/evals/worker.js +9 -3
  200. package/dist/extensions/admin-ops.d.ts +36 -10
  201. package/dist/extensions/admin-ops.js +65 -42
  202. package/dist/extensions/admin-view.d.ts +37 -10
  203. package/dist/extensions/admin-view.js +103 -20
  204. package/dist/extensions/bootstrap.d.ts +17 -4
  205. package/dist/extensions/bootstrap.js +70 -9
  206. package/dist/extensions/cli.d.ts +12 -0
  207. package/dist/extensions/cli.js +11 -2
  208. package/dist/extensions/config-hash.d.ts +10 -0
  209. package/dist/extensions/config-hash.js +38 -0
  210. package/dist/extensions/deployment-config.d.ts +28 -5
  211. package/dist/extensions/deployment-config.js +48 -7
  212. package/dist/extensions/effective-config.d.ts +127 -0
  213. package/dist/extensions/effective-config.js +368 -0
  214. package/dist/extensions/extensions.module.js +11 -11
  215. package/dist/extensions/hooks.d.ts +37 -4
  216. package/dist/extensions/hooks.js +82 -16
  217. package/dist/extensions/host.d.ts +24 -10
  218. package/dist/extensions/host.js +49 -54
  219. package/dist/extensions/installs.d.ts +20 -8
  220. package/dist/extensions/installs.js +37 -15
  221. package/dist/extensions/org-config.d.ts +75 -6
  222. package/dist/extensions/org-config.js +184 -32
  223. package/dist/extensions/org-levels.d.ts +37 -0
  224. package/dist/extensions/org-levels.js +71 -0
  225. package/dist/extensions/org-overrides.d.ts +151 -0
  226. package/dist/extensions/org-overrides.js +524 -0
  227. package/dist/extensions/permission-view.d.ts +16 -4
  228. package/dist/extensions/permission-view.js +4 -4
  229. package/dist/extensions/plugin-items.d.ts +21 -0
  230. package/dist/extensions/plugin-items.js +42 -0
  231. package/dist/extensions/point-defaults.d.ts +12 -5
  232. package/dist/extensions/point-defaults.js +37 -9
  233. package/dist/extensions/resolve.d.ts +5 -1
  234. package/dist/extensions/resolve.js +15 -2
  235. package/dist/extensions/state.module.d.ts +9 -0
  236. package/dist/extensions/state.module.js +38 -0
  237. package/dist/files/previewers.d.ts +8 -1
  238. package/dist/files/previewers.js +35 -6
  239. package/dist/http/api.module.js +25 -3
  240. package/dist/http/app.d.ts +11 -2
  241. package/dist/http/app.js +31 -5
  242. package/dist/http/plugin-dispatch.d.ts +4 -1
  243. package/dist/http/plugin-dispatch.js +14 -2
  244. package/dist/identity/accounts.d.ts +29 -29
  245. package/dist/identity/accounts.js +47 -47
  246. package/dist/identity/audit.d.ts +2 -1
  247. package/dist/identity/auth.guard.d.ts +13 -5
  248. package/dist/identity/auth.guard.js +26 -9
  249. package/dist/identity/identity.module.d.ts +1 -1
  250. package/dist/identity/identity.module.js +4 -4
  251. package/dist/identity/me.controller.js +1 -1
  252. package/dist/identity/principal.d.ts +3 -3
  253. package/dist/identity/principal.js +3 -3
  254. package/dist/identity/settings.d.ts +22 -11
  255. package/dist/identity/settings.js +53 -18
  256. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  257. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  258. package/dist/inbox/inbox.module.d.ts +4 -1
  259. package/dist/inbox/inbox.module.js +7 -3
  260. package/dist/inbox/inbox.service.d.ts +62 -3
  261. package/dist/inbox/inbox.service.js +74 -4
  262. package/dist/inbox/org-notices.d.ts +63 -0
  263. package/dist/inbox/org-notices.js +91 -0
  264. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  265. package/dist/inbox/platform-inbox.controller.js +58 -0
  266. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  267. package/dist/inbox/platform-inbox.service.js +263 -0
  268. package/dist/inbox/platform-notices.d.ts +19 -0
  269. package/dist/inbox/platform-notices.js +9 -0
  270. package/dist/index.d.ts +1 -1
  271. package/dist/index.js +1 -1
  272. package/dist/infra/cli/kernel-cli.module.js +9 -1
  273. package/dist/infra/config/kernel-config.service.js +24 -1
  274. package/dist/infra/database/xact-lock.d.ts +1 -1
  275. package/dist/infra/database/xact-lock.js +1 -1
  276. package/dist/infra/events/kernel-events.d.ts +19 -2
  277. package/dist/infra/queue/add-job-once.d.ts +14 -0
  278. package/dist/infra/queue/add-job-once.js +16 -0
  279. package/dist/kernel.module.js +6 -0
  280. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  281. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  282. package/dist/models/embeddings.d.ts +82 -0
  283. package/dist/models/embeddings.js +326 -0
  284. package/dist/models/enablement.controller.d.ts +40 -0
  285. package/dist/models/enablement.controller.js +74 -0
  286. package/dist/models/enablement.d.ts +99 -0
  287. package/dist/models/enablement.js +263 -0
  288. package/dist/models/models.module.d.ts +5 -1
  289. package/dist/models/models.module.js +16 -4
  290. package/dist/models/prices.d.ts +5 -5
  291. package/dist/models/prices.js +4 -4
  292. package/dist/models/purposes.controller.d.ts +6 -4
  293. package/dist/models/purposes.controller.js +13 -7
  294. package/dist/models/purposes.d.ts +37 -12
  295. package/dist/models/purposes.js +63 -17
  296. package/dist/orgs/directory-sync.d.ts +14 -5
  297. package/dist/orgs/directory-sync.js +41 -17
  298. package/dist/orgs/offboarding.d.ts +9 -7
  299. package/dist/orgs/offboarding.js +28 -17
  300. package/dist/orgs/org-lock.d.ts +5 -0
  301. package/dist/orgs/org-lock.js +13 -0
  302. package/dist/orgs/org.guard.d.ts +10 -0
  303. package/dist/orgs/org.guard.js +43 -32
  304. package/dist/orgs/orgs.module.js +3 -0
  305. package/dist/orgs/orgs.service.d.ts +20 -7
  306. package/dist/orgs/orgs.service.js +32 -12
  307. package/dist/orgs/roles.d.ts +1 -1
  308. package/dist/orgs/roles.js +5 -1
  309. package/dist/orgs/settings.controller.d.ts +1 -1
  310. package/dist/orgs/settings.service.d.ts +15 -3
  311. package/dist/orgs/settings.service.js +6 -2
  312. package/dist/overrides.d.ts +3 -0
  313. package/dist/overrides.js +2 -0
  314. package/dist/platform/actor.d.ts +48 -0
  315. package/dist/platform/actor.js +100 -0
  316. package/dist/platform/agent-docs.d.ts +18 -0
  317. package/dist/platform/agent-docs.js +59 -0
  318. package/dist/platform/availability.d.ts +14 -0
  319. package/dist/platform/availability.js +43 -0
  320. package/dist/platform/errors.d.ts +11 -0
  321. package/dist/platform/errors.js +26 -0
  322. package/dist/platform/exclusions.d.ts +12 -0
  323. package/dist/platform/exclusions.js +1405 -0
  324. package/dist/platform/method.d.ts +6 -0
  325. package/dist/platform/method.js +15 -0
  326. package/dist/platform/operation.d.ts +92 -0
  327. package/dist/platform/operation.js +35 -0
  328. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  329. package/dist/platform/ops/agent-templates.ops.js +92 -0
  330. package/dist/platform/ops/agents.ops.d.ts +19 -0
  331. package/dist/platform/ops/agents.ops.js +294 -0
  332. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  333. package/dist/platform/ops/connectors.ops.js +126 -0
  334. package/dist/platform/ops/errors.d.ts +11 -0
  335. package/dist/platform/ops/errors.js +22 -0
  336. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  337. package/dist/platform/ops/extensions.ops.js +116 -0
  338. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  339. package/dist/platform/ops/marketplaces.ops.js +157 -0
  340. package/dist/platform/ops/paging.d.ts +14 -0
  341. package/dist/platform/ops/paging.js +20 -0
  342. package/dist/platform/ops/platform.ops.d.ts +23 -0
  343. package/dist/platform/ops/platform.ops.js +158 -0
  344. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  345. package/dist/platform/ops/plugins.ops.js +377 -0
  346. package/dist/platform/ops/requests.ops.d.ts +14 -0
  347. package/dist/platform/ops/requests.ops.js +153 -0
  348. package/dist/platform/ops/role.d.ts +4 -0
  349. package/dist/platform/ops/role.js +10 -0
  350. package/dist/platform/ops/skills.ops.d.ts +13 -0
  351. package/dist/platform/ops/skills.ops.js +98 -0
  352. package/dist/platform/ops/summary.d.ts +10 -0
  353. package/dist/platform/ops/summary.js +18 -0
  354. package/dist/platform/platform-ops.module.d.ts +7 -0
  355. package/dist/platform/platform-ops.module.js +55 -0
  356. package/dist/platform/platform.module.d.ts +8 -0
  357. package/dist/platform/platform.module.js +25 -0
  358. package/dist/platform/redact-orgs.d.ts +7 -0
  359. package/dist/platform/redact-orgs.js +52 -0
  360. package/dist/platform/registry.d.ts +30 -0
  361. package/dist/platform/registry.js +111 -0
  362. package/dist/roles/worker-role.d.ts +6 -4
  363. package/dist/roles/worker-role.js +14 -7
  364. package/dist/roles/worker.module.d.ts +1 -1
  365. package/dist/roles/worker.module.js +9 -1
  366. package/dist/runtime/context/build.d.ts +6 -4
  367. package/dist/runtime/context/build.js +26 -7
  368. package/dist/runtime/context/claude-tools.d.ts +2 -1
  369. package/dist/runtime/context/claude-tools.js +5 -4
  370. package/dist/runtime/context/compaction.js +9 -0
  371. package/dist/runtime/context/reminders.d.ts +2 -0
  372. package/dist/runtime/context/reminders.js +2 -0
  373. package/dist/runtime/context/skills.js +9 -2
  374. package/dist/runtime/context/tool-changes.d.ts +27 -0
  375. package/dist/runtime/context/tool-changes.js +60 -0
  376. package/dist/runtime/hook-calls.d.ts +8 -1
  377. package/dist/runtime/hook-calls.js +40 -7
  378. package/dist/runtime/langgraph-loop.d.ts +3 -1
  379. package/dist/runtime/langgraph-loop.js +35 -17
  380. package/dist/runtime/loop.d.ts +32 -4
  381. package/dist/runtime/maintenance.d.ts +7 -4
  382. package/dist/runtime/maintenance.js +23 -8
  383. package/dist/runtime/model-call.d.ts +38 -11
  384. package/dist/runtime/model-call.js +97 -24
  385. package/dist/runtime/providers.d.ts +146 -32
  386. package/dist/runtime/providers.js +321 -67
  387. package/dist/runtime/run-control.d.ts +11 -1
  388. package/dist/runtime/run-control.js +12 -0
  389. package/dist/runtime/run-drafts.d.ts +85 -0
  390. package/dist/runtime/run-drafts.js +230 -0
  391. package/dist/runtime/run-jobs.d.ts +3 -5
  392. package/dist/runtime/run-jobs.js +3 -7
  393. package/dist/runtime/run-queue.d.ts +37 -3
  394. package/dist/runtime/run-queue.js +188 -11
  395. package/dist/runtime/run-worker.d.ts +12 -6
  396. package/dist/runtime/run-worker.js +58 -35
  397. package/dist/runtime/runtime.module.js +3 -0
  398. package/dist/runtime/step-log.d.ts +9 -4
  399. package/dist/runtime/step-log.js +8 -5
  400. package/dist/runtime/stream.controller.d.ts +23 -1
  401. package/dist/runtime/stream.controller.js +60 -3
  402. package/dist/runtime/stream.d.ts +4 -1
  403. package/dist/runtime/stream.js +27 -3
  404. package/dist/runtime/subagents/child.d.ts +55 -7
  405. package/dist/runtime/subagents/child.js +105 -7
  406. package/dist/runtime/subagents/definition.d.ts +12 -3
  407. package/dist/runtime/subagents/definition.js +46 -32
  408. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  409. package/dist/runtime/subagents/deliveries.js +228 -0
  410. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  411. package/dist/runtime/subagents/dispatch.js +212 -141
  412. package/dist/runtime/subagents/limits.d.ts +24 -5
  413. package/dist/runtime/subagents/limits.js +40 -6
  414. package/dist/runtime/subagents/messages.d.ts +95 -0
  415. package/dist/runtime/subagents/messages.js +328 -0
  416. package/dist/runtime/subagents/preamble.d.ts +4 -4
  417. package/dist/runtime/subagents/preamble.js +9 -7
  418. package/dist/runtime/subagents/progress.d.ts +8 -6
  419. package/dist/runtime/subagents/progress.js +11 -6
  420. package/dist/runtime/subagents/render.d.ts +30 -0
  421. package/dist/runtime/subagents/render.js +53 -0
  422. package/dist/runtime/subagents/roster.d.ts +24 -7
  423. package/dist/runtime/subagents/roster.js +47 -11
  424. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  425. package/dist/runtime/subagents/skill-fork.js +8 -4
  426. package/dist/runtime/subagents/status.d.ts +14 -0
  427. package/dist/runtime/subagents/status.js +23 -0
  428. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  429. package/dist/runtime/subagents/subagents.service.js +11 -6
  430. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  431. package/dist/runtime/usage-report-jobs.js +158 -0
  432. package/dist/runtime/usage-report.d.ts +33 -38
  433. package/dist/runtime/usage-report.js +169 -96
  434. package/dist/runtime/waits.d.ts +140 -37
  435. package/dist/runtime/waits.js +394 -106
  436. package/dist/sandbox/jobs.d.ts +40 -13
  437. package/dist/sandbox/jobs.js +57 -20
  438. package/dist/sandbox/leases.d.ts +37 -54
  439. package/dist/sandbox/leases.js +71 -115
  440. package/dist/sandbox/providers.d.ts +2 -2
  441. package/dist/sandbox/providers.js +1 -1
  442. package/dist/sandbox/sandbox.module.d.ts +3 -2
  443. package/dist/sandbox/sandbox.module.js +4 -3
  444. package/dist/sandbox/sandbox.service.d.ts +229 -134
  445. package/dist/sandbox/sandbox.service.js +630 -409
  446. package/dist/skills/catalog.d.ts +3 -2
  447. package/dist/skills/catalog.js +21 -43
  448. package/dist/skills/changes.controller.d.ts +7 -0
  449. package/dist/skills/changes.controller.js +19 -1
  450. package/dist/skills/invoke.js +8 -3
  451. package/dist/skills/package.d.ts +20 -1
  452. package/dist/skills/package.js +28 -1
  453. package/dist/skills/skills.controller.d.ts +39 -4
  454. package/dist/skills/skills.controller.js +88 -10
  455. package/dist/skills/skills.module.js +10 -1
  456. package/dist/skills/skills.service.d.ts +106 -26
  457. package/dist/skills/skills.service.js +421 -75
  458. package/dist/skills/usable.d.ts +81 -0
  459. package/dist/skills/usable.js +379 -0
  460. package/dist/tools/approvals.service.d.ts +20 -2
  461. package/dist/tools/approvals.service.js +23 -4
  462. package/dist/tools/builtin-names.d.ts +21 -5
  463. package/dist/tools/builtin-names.js +30 -5
  464. package/dist/tools/builtins/agent.d.ts +23 -21
  465. package/dist/tools/builtins/agent.js +62 -55
  466. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  467. package/dist/tools/builtins/builtin-tools.js +37 -12
  468. package/dist/tools/builtins/handback.d.ts +28 -0
  469. package/dist/tools/builtins/handback.js +53 -0
  470. package/dist/tools/builtins/platform.d.ts +34 -0
  471. package/dist/tools/builtins/platform.js +362 -0
  472. package/dist/tools/builtins/sandbox/bash.js +13 -3
  473. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  474. package/dist/tools/builtins/sandbox/common.js +80 -45
  475. package/dist/tools/builtins/sandbox/edit.js +2 -2
  476. package/dist/tools/builtins/sandbox/glob.js +2 -2
  477. package/dist/tools/builtins/sandbox/grep.js +2 -4
  478. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  479. package/dist/tools/builtins/sandbox/index.js +1 -1
  480. package/dist/tools/builtins/sandbox/read.js +1 -1
  481. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  482. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  483. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  484. package/dist/tools/builtins/sandbox/write.js +2 -2
  485. package/dist/tools/builtins/send-message.d.ts +56 -0
  486. package/dist/tools/builtins/send-message.js +100 -0
  487. package/dist/tools/builtins/skill-load.d.ts +22 -14
  488. package/dist/tools/builtins/skill-load.js +86 -57
  489. package/dist/tools/builtins/skill-write.js +1 -1
  490. package/dist/tools/builtins/web/extract.js +5 -1
  491. package/dist/tools/builtins/web/fetch.js +1 -0
  492. package/dist/tools/builtins/web/search.js +1 -0
  493. package/dist/tools/connectors.controller.d.ts +10 -0
  494. package/dist/tools/connectors.controller.js +12 -0
  495. package/dist/tools/connectors.service.d.ts +46 -5
  496. package/dist/tools/connectors.service.js +94 -15
  497. package/dist/tools/extension-tools.controller.d.ts +14 -0
  498. package/dist/tools/extension-tools.controller.js +37 -0
  499. package/dist/tools/info.d.ts +42 -1
  500. package/dist/tools/info.js +64 -1
  501. package/dist/tools/org-tool-switches.d.ts +74 -0
  502. package/dist/tools/org-tool-switches.js +184 -0
  503. package/dist/tools/pipeline.d.ts +46 -40
  504. package/dist/tools/pipeline.js +193 -364
  505. package/dist/tools/policy.d.ts +1 -1
  506. package/dist/tools/policy.js +36 -16
  507. package/dist/tools/registry.d.ts +98 -5
  508. package/dist/tools/registry.js +87 -9
  509. package/dist/tools/tools.module.js +12 -2
  510. package/dist/ui/views.d.ts +2 -1
  511. package/dist/ui/views.js +17 -3
  512. package/package.json +3 -3
  513. package/src/migrations/0074_subagent_tree.sql +50 -0
  514. package/src/migrations/0075_plugin_scope.sql +61 -0
  515. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  516. package/src/migrations/0077_scope_requests.sql +52 -0
  517. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  518. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  519. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  520. package/src/migrations/0081_platform_components.sql +129 -0
  521. package/src/migrations/0082_platform_migration.sql +33 -0
  522. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  523. package/src/migrations/0084_org_owned_items.sql +85 -0
  524. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  525. package/src/migrations/0086_org_layering.sql +30 -0
  526. package/src/migrations/0087_approval_summary.sql +6 -0
  527. package/src/migrations/0088_environments.sql +80 -0
  528. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  529. package/dist/catalog/upgrade-targets.d.ts +0 -56
  530. package/dist/catalog/upgrade-targets.js +0 -90
  531. package/dist/conversations/sandbox-status.d.ts +0 -24
  532. package/dist/conversations/sandbox-status.js +0 -52
  533. package/dist/extensions/org-config.controller.d.ts +0 -32
  534. package/dist/extensions/org-config.controller.js +0 -70
@@ -0,0 +1,77 @@
1
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
+ /**
5
+ * Moves the agents' setup requests that still concern their owner (pending, or decided and not
6
+ * dismissed) to the new owner `owner` (an owner change: `AgentsService.reassignOwner`, member
7
+ * offboarding). Runs through `db` (the caller's transaction).
8
+ */
9
+ export declare function retargetSetupRequests(db: KernelSchemaDb, agentIds: readonly string[], owner: string): Promise<void>;
10
+ /** What {@link PendingConnectorRequests.openFor} receives: plain values, no transaction. */
11
+ export interface PendingConnectorRequestArgs {
12
+ orgId: string;
13
+ agentId: string;
14
+ ownerAccountId: string;
15
+ /** The `pendingConnectors[].key`s of the new agent's version 1. */
16
+ keys: string[];
17
+ }
18
+ /** How a request ends when no key is left (ruling P4-T6-3). */
19
+ export type PendingRequestClose = "approved" | "cancelled";
20
+ /**
21
+ * The org inbox requests for an agent's pending connectors (ruling P4-7: one `connector_setup`
22
+ * request per agent, visible to org admins, kept unique by the partial index
23
+ * `catalog_requests_pending_setup_uq`). Creating an agent from a template calls {@link openFor}
24
+ * after the commit when the creator lacks `connectors.manage`; the agent's owner or an admin
25
+ * re-opens one (`PendingConnectorsService.reopen`); every definition write that changes the
26
+ * agent's pending connectors settles the pending request in its transaction ({@link settleIn}):
27
+ * the keys narrow, and with none left it closes (`approved` after a bind, `cancelled` after an
28
+ * edit removed them or the agent was deleted; ruling P4-T6-3). Rejecting is the org admins' (the
29
+ * catalog requests' decide route). No in-process state.
30
+ */
31
+ export declare class PendingConnectorRequests {
32
+ private readonly kdb;
33
+ readonly txHost: TransactionHost;
34
+ constructor(kdb: KernelDb, txHost: TransactionHost);
35
+ /**
36
+ * The request for a new agent, requested by its owner (ruling P4-T6-4). `args.keys` are what the
37
+ * create saw; {@link open} reads the agent's pending keys again under its row.
38
+ */
39
+ openFor(args: PendingConnectorRequestArgs): Promise<void>;
40
+ /**
41
+ * Opens a pending `connector_setup` request for the agent's current pending connector keys (read
42
+ * under the agent row, `FOR NO KEY UPDATE` as `AgentsService.lockForWrite` takes it) unless the
43
+ * agent has one (then that one, unchanged). Null when the agent is gone (deleted, another org)
44
+ * or has no pending connectors (fix round 1, item 7). Audits `catalog.requested` for a new one.
45
+ * Joins the caller's transaction.
46
+ */
47
+ open(a: {
48
+ orgId: string;
49
+ agentId: string;
50
+ requestedBy: string;
51
+ actor: string;
52
+ actorTokenId?: string | undefined;
53
+ }): Promise<{
54
+ id: string;
55
+ created: boolean;
56
+ } | null>;
57
+ /**
58
+ * The agent's new owner receives its setup request's decision (fix round 1, item 4): the pending
59
+ * request and the decided ones not dismissed move to `owner`. In the caller's transaction.
60
+ */
61
+ retargetIn(agentIds: readonly string[], owner: string): Promise<void>;
62
+ /**
63
+ * Settles the agent's pending request after a definition write, in the caller's transaction
64
+ * (it holds the agent row lock): `keys` are the agent's pending connector keys now. The request
65
+ * keeps the ones still pending; with none left it closes as `close`, decided by `actor` (a close
66
+ * the requester made themself needs no notice: it is dismissed at once). Audits
67
+ * `catalog.request_closed` on a close.
68
+ */
69
+ settleIn(a: {
70
+ orgId: string;
71
+ agentId: string;
72
+ keys: readonly string[];
73
+ close: PendingRequestClose;
74
+ actor: string;
75
+ actorTokenId?: string | undefined;
76
+ }): Promise<void>;
77
+ }
@@ -0,0 +1,215 @@
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 { randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { sql } from "kysely";
13
+ import { audit } from "../identity/audit.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
+ import { TransactionHost } from "../infra/database/transaction-host.js";
16
+ import { Transactional } from "../infra/database/transactional.decorator.js";
17
+ /**
18
+ * Moves the agents' setup requests that still concern their owner (pending, or decided and not
19
+ * dismissed) to the new owner `owner` (an owner change: `AgentsService.reassignOwner`, member
20
+ * offboarding). Runs through `db` (the caller's transaction).
21
+ */
22
+ export async function retargetSetupRequests(db, agentIds, owner) {
23
+ if (agentIds.length === 0)
24
+ return;
25
+ await db
26
+ .updateTable("catalog_requests")
27
+ .set({ requested_by: owner })
28
+ .where("kind", "=", "connector_setup")
29
+ .where("agent_id", "in", [...agentIds])
30
+ .where((eb) => eb.or([
31
+ eb("status", "=", "pending"),
32
+ eb.and([eb("status", "in", ["approved", "rejected"]), eb("dismissed_at", "is", null)]),
33
+ ]))
34
+ .execute();
35
+ }
36
+ /**
37
+ * The org inbox requests for an agent's pending connectors (ruling P4-7: one `connector_setup`
38
+ * request per agent, visible to org admins, kept unique by the partial index
39
+ * `catalog_requests_pending_setup_uq`). Creating an agent from a template calls {@link openFor}
40
+ * after the commit when the creator lacks `connectors.manage`; the agent's owner or an admin
41
+ * re-opens one (`PendingConnectorsService.reopen`); every definition write that changes the
42
+ * agent's pending connectors settles the pending request in its transaction ({@link settleIn}):
43
+ * the keys narrow, and with none left it closes (`approved` after a bind, `cancelled` after an
44
+ * edit removed them or the agent was deleted; ruling P4-T6-3). Rejecting is the org admins' (the
45
+ * catalog requests' decide route). No in-process state.
46
+ */
47
+ let PendingConnectorRequests = class PendingConnectorRequests {
48
+ kdb;
49
+ txHost;
50
+ constructor(kdb, txHost) {
51
+ this.kdb = kdb;
52
+ this.txHost = txHost;
53
+ }
54
+ /**
55
+ * The request for a new agent, requested by its owner (ruling P4-T6-4). `args.keys` are what the
56
+ * create saw; {@link open} reads the agent's pending keys again under its row.
57
+ */
58
+ async openFor(args) {
59
+ await this.open({
60
+ orgId: args.orgId,
61
+ agentId: args.agentId,
62
+ requestedBy: args.ownerAccountId,
63
+ actor: args.ownerAccountId,
64
+ });
65
+ }
66
+ /**
67
+ * Opens a pending `connector_setup` request for the agent's current pending connector keys (read
68
+ * under the agent row, `FOR NO KEY UPDATE` as `AgentsService.lockForWrite` takes it) unless the
69
+ * agent has one (then that one, unchanged). Null when the agent is gone (deleted, another org)
70
+ * or has no pending connectors (fix round 1, item 7). Audits `catalog.requested` for a new one.
71
+ * Joins the caller's transaction.
72
+ */
73
+ async open(a) {
74
+ const t = this.kdb.db;
75
+ const agent = await t
76
+ .selectFrom("agents")
77
+ .select("current_version")
78
+ .where("id", "=", a.agentId)
79
+ .where("org_id", "=", a.orgId)
80
+ .where("deleted_at", "is", null)
81
+ .forNoKeyUpdate()
82
+ .executeTakeFirst();
83
+ if (!agent)
84
+ return null;
85
+ const version = await t
86
+ .selectFrom("agent_versions")
87
+ .select("definition")
88
+ .where("agent_id", "=", a.agentId)
89
+ .where("version", "=", agent.current_version)
90
+ .executeTakeFirstOrThrow();
91
+ const keys = (version.definition.pendingConnectors ?? []).map((c) => c.key);
92
+ if (keys.length === 0)
93
+ return null;
94
+ // a pending request decided between the conflict and the read: insert again (twice at most)
95
+ for (let attempt = 0; attempt < 2; attempt++) {
96
+ const id = randomUUID();
97
+ const inserted = await t
98
+ .insertInto("catalog_requests")
99
+ .values({
100
+ id,
101
+ org_id: a.orgId,
102
+ item_id: null,
103
+ kind: "connector_setup",
104
+ // still written for the old NOT NULL / CHECK, never read
105
+ stage: "org",
106
+ agent_id: a.agentId,
107
+ pending_keys: JSON.stringify(keys),
108
+ requested_by: a.requestedBy,
109
+ note: "",
110
+ })
111
+ // the partial index of pending setup requests (a literal predicate: inference needs it)
112
+ .onConflict((oc) => oc
113
+ .column("agent_id")
114
+ .where(sql `kind = 'connector_setup' AND status = 'pending'`)
115
+ .doNothing())
116
+ .returning("id")
117
+ .executeTakeFirst();
118
+ if (inserted !== undefined) {
119
+ await audit(t, {
120
+ actorAccountId: a.actor,
121
+ ...(a.actorTokenId !== undefined && { actorTokenId: a.actorTokenId }),
122
+ orgId: a.orgId,
123
+ action: "catalog.requested",
124
+ target: id,
125
+ detail: { kind: "connector_setup", agentId: a.agentId, keys },
126
+ });
127
+ return { id, created: true };
128
+ }
129
+ const existing = await t
130
+ .selectFrom("catalog_requests")
131
+ .select("id")
132
+ .where("agent_id", "=", a.agentId)
133
+ .where("kind", "=", "connector_setup")
134
+ .where("status", "=", "pending")
135
+ .executeTakeFirst();
136
+ if (existing)
137
+ return { id: existing.id, created: false };
138
+ }
139
+ throw new Error(`cannot open the connector setup request of agent ${a.agentId}`);
140
+ }
141
+ /**
142
+ * The agent's new owner receives its setup request's decision (fix round 1, item 4): the pending
143
+ * request and the decided ones not dismissed move to `owner`. In the caller's transaction.
144
+ */
145
+ async retargetIn(agentIds, owner) {
146
+ await retargetSetupRequests(this.kdb.db, agentIds, owner);
147
+ }
148
+ /**
149
+ * Settles the agent's pending request after a definition write, in the caller's transaction
150
+ * (it holds the agent row lock): `keys` are the agent's pending connector keys now. The request
151
+ * keeps the ones still pending; with none left it closes as `close`, decided by `actor` (a close
152
+ * the requester made themself needs no notice: it is dismissed at once). Audits
153
+ * `catalog.request_closed` on a close.
154
+ */
155
+ async settleIn(a) {
156
+ const t = this.kdb.db;
157
+ const row = await t
158
+ .selectFrom("catalog_requests")
159
+ .select(["id", "pending_keys", "requested_by"])
160
+ .where("agent_id", "=", a.agentId)
161
+ .where("kind", "=", "connector_setup")
162
+ .where("status", "=", "pending")
163
+ .forUpdate()
164
+ .executeTakeFirst();
165
+ if (!row)
166
+ return;
167
+ const before = row.pending_keys ?? [];
168
+ const left = before.filter((k) => a.keys.includes(k));
169
+ if (left.length > 0) {
170
+ if (left.length !== before.length) {
171
+ await t
172
+ .updateTable("catalog_requests")
173
+ .set({ pending_keys: JSON.stringify(left) })
174
+ .where("id", "=", row.id)
175
+ .execute();
176
+ }
177
+ return;
178
+ }
179
+ await t
180
+ .updateTable("catalog_requests")
181
+ .set({
182
+ status: a.close,
183
+ pending_keys: JSON.stringify([]),
184
+ decided_by: a.actor,
185
+ decided_at: sql `now()`,
186
+ ...(a.close === "approved" &&
187
+ row.requested_by === a.actor && { dismissed_at: sql `now()` }),
188
+ })
189
+ .where("id", "=", row.id)
190
+ .execute();
191
+ await audit(t, {
192
+ actorAccountId: a.actor,
193
+ ...(a.actorTokenId !== undefined && { actorTokenId: a.actorTokenId }),
194
+ orgId: a.orgId,
195
+ action: "catalog.request_closed",
196
+ target: row.id,
197
+ detail: { kind: "connector_setup", agentId: a.agentId, status: a.close },
198
+ });
199
+ }
200
+ };
201
+ __decorate([
202
+ Transactional()
203
+ ], PendingConnectorRequests.prototype, "open", null);
204
+ __decorate([
205
+ Transactional({ propagation: "mandatory" })
206
+ ], PendingConnectorRequests.prototype, "retargetIn", null);
207
+ __decorate([
208
+ Transactional({ propagation: "mandatory" })
209
+ ], PendingConnectorRequests.prototype, "settleIn", null);
210
+ PendingConnectorRequests = __decorate([
211
+ Injectable(),
212
+ __param(0, Inject(KernelDb)),
213
+ __param(1, Inject(TransactionHost))
214
+ ], PendingConnectorRequests);
215
+ export { PendingConnectorRequests };
@@ -0,0 +1,39 @@
1
+ import type { FastifyReply } from "fastify";
2
+ import { z } from "zod";
3
+ import { CatalogRequestsService, type CatalogRequestView } from "../catalog/requests.service.js";
4
+ import { type Principal } from "../identity/principal.js";
5
+ import { type OrgContext } from "../orgs/org.guard.js";
6
+ import type { AgentView } from "./agent-lookup.js";
7
+ import { AgentsService } from "./agents.service.js";
8
+ import { PendingConnectorsService } from "./pending-connectors.service.js";
9
+ declare const BindBody: z.ZodObject<{
10
+ connectorId: z.ZodString;
11
+ }, z.core.$strict>;
12
+ /**
13
+ * An agent's pending connectors (`/api/v1/orgs/:orgId/agents/:agentId/pending-connectors`,
14
+ * rulings P4-6, P4-7; human users only):
15
+ * - `POST :key/bind { connectorId }` (`agents.create`; the service allows the owner or an org
16
+ * admin+) -> 200 `{ agent, dropped }`: a new version with the connector's tools, the entry gone;
17
+ * - `POST request` (same) -> 201 `{ request }` a new `connector_setup` request, 200 `{ request }`
18
+ * the pending one;
19
+ * - `GET request` (`agents.use`; the service allows only the agent's owner or an org admin+:
20
+ * another member who sees the agent -> 403 `forbidden`, anyone else 404 `agent.not_found`) ->
21
+ * 200 `{ request }`: the latest `connector_setup` request of the agent, any status, or null.
22
+ */
23
+ export declare class PendingConnectorsController {
24
+ private readonly pending;
25
+ private readonly agents;
26
+ private readonly requests;
27
+ constructor(pending: PendingConnectorsService, agents: AgentsService, requests: CatalogRequestsService);
28
+ bind(principal: Principal, org: OrgContext, agentId: string, key: string, body: z.infer<typeof BindBody>): Promise<{
29
+ agent: AgentView;
30
+ dropped: string[];
31
+ }>;
32
+ reopen(principal: Principal, org: OrgContext, agentId: string, reply: FastifyReply): Promise<{
33
+ request: CatalogRequestView;
34
+ }>;
35
+ latest(principal: Principal, org: OrgContext, agentId: string): Promise<{
36
+ request: CatalogRequestView | null;
37
+ }>;
38
+ }
39
+ export {};
@@ -0,0 +1,91 @@
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, HttpCode, Inject, Param, Post, Res } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { CatalogRequestsService } from "../catalog/requests.service.js";
13
+ import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
14
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
15
+ import { ZBody } from "../infra/validation/zod-params.js";
16
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
17
+ import { AgentsService } from "./agents.service.js";
18
+ import { PendingConnectorsService } from "./pending-connectors.service.js";
19
+ const BindBody = z.object({ connectorId: z.string().min(1).max(100) }).strict();
20
+ class PendingConnectorBindBody extends createZodDto(BindBody, "PendingConnectorBindBody") {
21
+ }
22
+ /**
23
+ * An agent's pending connectors (`/api/v1/orgs/:orgId/agents/:agentId/pending-connectors`,
24
+ * rulings P4-6, P4-7; human users only):
25
+ * - `POST :key/bind { connectorId }` (`agents.create`; the service allows the owner or an org
26
+ * admin+) -> 200 `{ agent, dropped }`: a new version with the connector's tools, the entry gone;
27
+ * - `POST request` (same) -> 201 `{ request }` a new `connector_setup` request, 200 `{ request }`
28
+ * the pending one;
29
+ * - `GET request` (`agents.use`; the service allows only the agent's owner or an org admin+:
30
+ * another member who sees the agent -> 403 `forbidden`, anyone else 404 `agent.not_found`) ->
31
+ * 200 `{ request }`: the latest `connector_setup` request of the agent, any status, or null.
32
+ */
33
+ let PendingConnectorsController = class PendingConnectorsController {
34
+ pending;
35
+ agents;
36
+ requests;
37
+ constructor(pending, agents, requests) {
38
+ this.pending = pending;
39
+ this.agents = agents;
40
+ this.requests = requests;
41
+ }
42
+ async bind(principal, org, agentId, key, body) {
43
+ const p = requireUser(principal);
44
+ const r = await this.pending.bind(org.orgId, agentId, key, body.connectorId, p.account.id, patTokenId(p));
45
+ const [agent] = await this.agents.withTemplateLinks(org.orgId, [r.agent]);
46
+ return { agent: agent, dropped: r.dropped };
47
+ }
48
+ async reopen(principal, org, agentId, reply) {
49
+ const p = requireUser(principal);
50
+ const r = await this.pending.reopen(org.orgId, agentId, p.account.id, patTokenId(p));
51
+ reply.status(r.created ? 201 : 200);
52
+ return { request: await this.requests.view(r.id) };
53
+ }
54
+ async latest(principal, org, agentId) {
55
+ const p = requireUser(principal);
56
+ const id = await this.pending.latestRequest(org.orgId, agentId, p.account.id);
57
+ return { request: id === null ? null : await this.requests.view(id) };
58
+ }
59
+ };
60
+ __decorate([
61
+ Post(":key/bind"),
62
+ HttpCode(200),
63
+ OrgAction("agents.create"),
64
+ __param(0, CurrentPrincipal()),
65
+ __param(1, CurrentOrg()),
66
+ __param(2, Param("agentId")),
67
+ __param(3, Param("key")),
68
+ __param(4, ZBody(PendingConnectorBindBody))
69
+ ], PendingConnectorsController.prototype, "bind", null);
70
+ __decorate([
71
+ Post("request"),
72
+ OrgAction("agents.create"),
73
+ __param(0, CurrentPrincipal()),
74
+ __param(1, CurrentOrg()),
75
+ __param(2, Param("agentId")),
76
+ __param(3, Res({ passthrough: true }))
77
+ ], PendingConnectorsController.prototype, "reopen", null);
78
+ __decorate([
79
+ Get("request"),
80
+ OrgAction("agents.use"),
81
+ __param(0, CurrentPrincipal()),
82
+ __param(1, CurrentOrg()),
83
+ __param(2, Param("agentId"))
84
+ ], PendingConnectorsController.prototype, "latest", null);
85
+ PendingConnectorsController = __decorate([
86
+ Controller("api/v1/orgs/:orgId/agents/:agentId/pending-connectors"),
87
+ __param(0, Inject(PendingConnectorsService)),
88
+ __param(1, Inject(AgentsService)),
89
+ __param(2, Inject(CatalogRequestsService))
90
+ ], PendingConnectorsController);
91
+ export { PendingConnectorsController };
@@ -0,0 +1,62 @@
1
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
+ import { AgentLookup, type AgentView } from "./agent-lookup.js";
4
+ import { AgentsService } from "./agents.service.js";
5
+ import { PendingConnectorRequests } from "./pending-connector-requests.js";
6
+ /** Why a connector does not fit a pending entry (ruling P4-T6-1). */
7
+ export type PendingMismatch = "template" | "protocol" | "tools" | "not_synced";
8
+ /** What binding a pending connector did. */
9
+ export interface BindResult {
10
+ agent: AgentView;
11
+ /**
12
+ * What the entry named and the connector does not offer, left out: `tools.<name>`,
13
+ * `policies.<name>`.
14
+ */
15
+ dropped: string[];
16
+ }
17
+ /**
18
+ * Resolving an agent's pending connectors (rulings P4-6, P4-7): binding a connector of the org to a
19
+ * pending entry, and the agent's connector setup request (re-opening it, reading the latest).
20
+ * Writes run under the org row lock and the agent row lock ({@link AgentsService.lockForWrite}: the
21
+ * owner or an org admin+).
22
+ */
23
+ export declare class PendingConnectorsService {
24
+ private readonly kdb;
25
+ private readonly agents;
26
+ private readonly lookup;
27
+ private readonly requests;
28
+ readonly txHost: TransactionHost;
29
+ constructor(kdb: KernelDb, agents: Pick<AgentsService, "lockForWrite">, lookup: Pick<AgentLookup, "view">, requests: Pick<PendingConnectorRequests, "open" | "settleIn">, txHost: TransactionHost);
30
+ /** The current version's definition of a locked agent. */
31
+ private currentDefinition;
32
+ /**
33
+ * Binds connector `connectorId` to the agent's pending entry `key` (ruling P4-6; P4-T6-1,
34
+ * P4-T6-2): a new agent version with a connector ref to it (merged into an existing ref of that
35
+ * connector) for the entry's tools the connector offers (all of them when the entry names none),
36
+ * the entry's policies on those tools (the tighter one wins), and without the entry; then the
37
+ * setup request narrows or closes (`approved`). Refused: no entry `key` -> 404
38
+ * `agent.pending_connector_not_found`; a connector that is missing, deleted or of another org ->
39
+ * 404 `connector.not_found`; another connector template (a `template` entry), another protocol
40
+ * (a `needs` entry), no tool snapshot yet (`not_synced`: an authorization-code connector nobody
41
+ * authorized) or none of the entry's tools -> 400 `agent.pending_connector_mismatch`.
42
+ * Audits `agent.pending_connector_bound`.
43
+ */
44
+ bind(orgId: string, agentId: string, key: string, connectorId: string, actor: string, actorTokenId?: string): Promise<BindResult>;
45
+ /**
46
+ * (Re-)opens the agent's connector setup request (ruling P4-T6-7; the owner or an org admin+):
47
+ * the pending one when it has one (`created` false), else a new one for the current pending
48
+ * keys, requested by the agent's owner (P4-T6-4). No pending connectors -> 409
49
+ * `agent.no_pending_connectors`.
50
+ */
51
+ reopen(orgId: string, agentId: string, actor: string, actorTokenId?: string): Promise<{
52
+ id: string;
53
+ created: boolean;
54
+ }>;
55
+ /**
56
+ * The id of the agent's latest connector setup request (any status), or null. Authorized as the
57
+ * writes are (fix round 1): the agent's owner or an org admin+, whether or not the agent is
58
+ * visible to them; a member who sees the agent otherwise -> 403 `forbidden`; anyone else, or a
59
+ * deleted agent -> 404 `agent.not_found`.
60
+ */
61
+ latestRequest(orgId: string, agentId: string, viewer: string): Promise<string | null>;
62
+ }