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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +39 -13
  3. package/dist/admin/admin.controller.js +33 -17
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +51 -22
  19. package/dist/agents/agents.service.js +172 -70
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/org-templates.d.ts +176 -0
  27. package/dist/agents/org-templates.js +827 -0
  28. package/dist/agents/pending-connector-requests.d.ts +77 -0
  29. package/dist/agents/pending-connector-requests.js +215 -0
  30. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  31. package/dist/agents/pending-connectors.controller.js +91 -0
  32. package/dist/agents/pending-connectors.service.d.ts +62 -0
  33. package/dist/agents/pending-connectors.service.js +282 -0
  34. package/dist/agents/templates.controller.d.ts +86 -5
  35. package/dist/agents/templates.controller.js +171 -7
  36. package/dist/agents/templates.d.ts +127 -23
  37. package/dist/agents/templates.js +475 -52
  38. package/dist/background/background.module.js +8 -1
  39. package/dist/background/finish.d.ts +3 -2
  40. package/dist/background/launch-lock.d.ts +4 -3
  41. package/dist/background/launch-lock.js +4 -3
  42. package/dist/background/poll.job.d.ts +9 -6
  43. package/dist/background/poll.job.js +30 -22
  44. package/dist/background/session.d.ts +13 -2
  45. package/dist/background/session.js +13 -0
  46. package/dist/background/stop.d.ts +12 -6
  47. package/dist/background/stop.js +57 -39
  48. package/dist/background/store.d.ts +18 -6
  49. package/dist/background/store.js +12 -6
  50. package/dist/background/tasks.service.d.ts +15 -5
  51. package/dist/background/tasks.service.js +42 -17
  52. package/dist/background/wake-rules.d.ts +27 -18
  53. package/dist/background/wake-rules.js +52 -22
  54. package/dist/background/wake.d.ts +13 -11
  55. package/dist/background/wake.js +20 -14
  56. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  57. package/dist/catalog/admin-catalog.controller.js +213 -42
  58. package/dist/catalog/catalog-content.d.ts +58 -32
  59. package/dist/catalog/catalog-content.js +34 -8
  60. package/dist/catalog/catalog-import.module.d.ts +7 -0
  61. package/dist/catalog/catalog-import.module.js +60 -0
  62. package/dist/catalog/catalog-items.d.ts +111 -7
  63. package/dist/catalog/catalog-items.js +279 -13
  64. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  65. package/dist/catalog/catalog-scope.service.js +1116 -0
  66. package/dist/catalog/catalog.module.d.ts +7 -9
  67. package/dist/catalog/catalog.module.js +41 -31
  68. package/dist/catalog/catalog.service.d.ts +101 -29
  69. package/dist/catalog/catalog.service.js +104 -106
  70. package/dist/catalog/cli.d.ts +11 -1
  71. package/dist/catalog/cli.js +26 -1
  72. package/dist/catalog/component-promotion.d.ts +96 -0
  73. package/dist/catalog/component-promotion.js +395 -0
  74. package/dist/catalog/component-scope.controller.d.ts +152 -0
  75. package/dist/catalog/component-scope.controller.js +287 -0
  76. package/dist/catalog/component-scope.service.d.ts +303 -0
  77. package/dist/catalog/component-scope.service.js +936 -0
  78. package/dist/catalog/component-state.d.ts +174 -0
  79. package/dist/catalog/component-state.js +437 -0
  80. package/dist/catalog/job-ids.d.ts +30 -0
  81. package/dist/catalog/job-ids.js +25 -0
  82. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  83. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  84. package/dist/catalog/marketplaces.controller.js +56 -7
  85. package/dist/catalog/marketplaces.service.d.ts +54 -14
  86. package/dist/catalog/marketplaces.service.js +71 -22
  87. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  88. package/dist/catalog/org-catalog.controller.js +181 -65
  89. package/dist/catalog/org-catalog.service.d.ts +65 -33
  90. package/dist/catalog/org-catalog.service.js +324 -157
  91. package/dist/catalog/org-extension-switch.d.ts +41 -0
  92. package/dist/catalog/org-extension-switch.js +115 -0
  93. package/dist/catalog/org-extension.controller.d.ts +119 -0
  94. package/dist/catalog/org-extension.controller.js +266 -0
  95. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  96. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  97. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  98. package/dist/catalog/org-plugin-uploads.js +116 -0
  99. package/dist/catalog/owned-items.d.ts +184 -0
  100. package/dist/catalog/owned-items.js +789 -0
  101. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  102. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  103. package/dist/catalog/ownership.d.ts +172 -0
  104. package/dist/catalog/ownership.js +326 -0
  105. package/dist/catalog/platform-components.d.ts +221 -0
  106. package/dist/catalog/platform-components.js +761 -0
  107. package/dist/catalog/platform-migration.d.ts +115 -0
  108. package/dist/catalog/platform-migration.js +582 -0
  109. package/dist/catalog/plugin-import.d.ts +178 -34
  110. package/dist/catalog/plugin-import.js +622 -82
  111. package/dist/catalog/plugin-install.d.ts +185 -41
  112. package/dist/catalog/plugin-install.js +758 -126
  113. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  114. package/dist/catalog/plugin-upgrade.js +1147 -1136
  115. package/dist/catalog/request-rules.d.ts +65 -0
  116. package/dist/catalog/request-rules.js +217 -0
  117. package/dist/catalog/requests.service.d.ts +193 -118
  118. package/dist/catalog/requests.service.js +526 -343
  119. package/dist/catalog/reserved-names.d.ts +8 -0
  120. package/dist/catalog/reserved-names.js +42 -0
  121. package/dist/catalog/scope-orgs.d.ts +21 -0
  122. package/dist/catalog/scope-orgs.js +67 -0
  123. package/dist/catalog/scope-state.d.ts +35 -0
  124. package/dist/catalog/scope-state.js +87 -0
  125. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  126. package/dist/catalog/scope-sync-workers.js +29 -0
  127. package/dist/catalog/scope-sync.d.ts +176 -0
  128. package/dist/catalog/scope-sync.js +576 -0
  129. package/dist/catalog/scope.d.ts +42 -0
  130. package/dist/catalog/scope.js +42 -0
  131. package/dist/catalog/unshare.d.ts +22 -0
  132. package/dist/catalog/unshare.js +118 -0
  133. package/dist/channels/actions.js +1 -0
  134. package/dist/channels/cards.js +20 -2
  135. package/dist/channels/channels.module.js +2 -0
  136. package/dist/channels/inbound.d.ts +9 -1
  137. package/dist/channels/inbound.js +67 -5
  138. package/dist/channels/phrases.d.ts +35 -0
  139. package/dist/channels/phrases.js +29 -0
  140. package/dist/config/docs.js +3 -1
  141. package/dist/config/schema.d.ts +6 -2
  142. package/dist/config/schema.js +46 -22
  143. package/dist/conversations/access.d.ts +6 -4
  144. package/dist/conversations/access.js +27 -5
  145. package/dist/conversations/agent-tree.d.ts +46 -0
  146. package/dist/conversations/agent-tree.js +92 -0
  147. package/dist/conversations/conversations.controller.d.ts +43 -18
  148. package/dist/conversations/conversations.controller.js +79 -38
  149. package/dist/conversations/conversations.module.d.ts +1 -1
  150. package/dist/conversations/conversations.module.js +7 -7
  151. package/dist/conversations/conversations.service.d.ts +69 -12
  152. package/dist/conversations/conversations.service.js +106 -27
  153. package/dist/conversations/environment-status.d.ts +24 -0
  154. package/dist/conversations/environment-status.js +71 -0
  155. package/dist/conversations/event-log.d.ts +20 -5
  156. package/dist/conversations/event-log.js +60 -0
  157. package/dist/conversations/events.d.ts +84 -2
  158. package/dist/conversations/events.js +91 -17
  159. package/dist/conversations/queue.service.d.ts +1 -1
  160. package/dist/conversations/queue.service.js +5 -0
  161. package/dist/conversations/titles.d.ts +5 -3
  162. package/dist/conversations/titles.js +21 -8
  163. package/dist/conversations/tree.d.ts +17 -0
  164. package/dist/conversations/tree.js +42 -0
  165. package/dist/ctx/create-ctx.d.ts +5 -0
  166. package/dist/ctx/create-ctx.js +15 -5
  167. package/dist/db/kernel-schema.d.ts +362 -18
  168. package/dist/environments/access.d.ts +41 -0
  169. package/dist/environments/access.js +77 -0
  170. package/dist/environments/conversation-environments.d.ts +61 -0
  171. package/dist/environments/conversation-environments.js +170 -0
  172. package/dist/environments/dto.d.ts +25 -0
  173. package/dist/environments/dto.js +12 -0
  174. package/dist/environments/environments.controller.d.ts +33 -0
  175. package/dist/environments/environments.controller.js +110 -0
  176. package/dist/environments/environments.module.d.ts +8 -0
  177. package/dist/environments/environments.module.js +27 -0
  178. package/dist/environments/environments.service.d.ts +153 -0
  179. package/dist/environments/environments.service.js +541 -0
  180. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  181. package/dist/environments/legacy-cleanup.job.js +141 -0
  182. package/dist/errors.d.ts +82 -2
  183. package/dist/errors.js +82 -2
  184. package/dist/evals/reconstruct.d.ts +18 -9
  185. package/dist/evals/reconstruct.js +26 -7
  186. package/dist/evals/run-replay.d.ts +4 -2
  187. package/dist/evals/run-replay.js +16 -4
  188. package/dist/evals/step-replay.d.ts +2 -5
  189. package/dist/evals/step-replay.js +1 -1
  190. package/dist/evals/trajectory.service.d.ts +8 -3
  191. package/dist/evals/trajectory.service.js +26 -14
  192. package/dist/evals/worker.d.ts +5 -5
  193. package/dist/evals/worker.js +9 -3
  194. package/dist/extensions/admin-ops.d.ts +36 -10
  195. package/dist/extensions/admin-ops.js +65 -42
  196. package/dist/extensions/admin-view.d.ts +37 -10
  197. package/dist/extensions/admin-view.js +103 -20
  198. package/dist/extensions/bootstrap.d.ts +17 -4
  199. package/dist/extensions/bootstrap.js +70 -9
  200. package/dist/extensions/cli.d.ts +12 -0
  201. package/dist/extensions/cli.js +11 -2
  202. package/dist/extensions/deployment-config.d.ts +28 -5
  203. package/dist/extensions/deployment-config.js +48 -7
  204. package/dist/extensions/effective-config.d.ts +127 -0
  205. package/dist/extensions/effective-config.js +368 -0
  206. package/dist/extensions/extensions.module.js +8 -2
  207. package/dist/extensions/hooks.d.ts +37 -4
  208. package/dist/extensions/hooks.js +82 -16
  209. package/dist/extensions/host.d.ts +19 -1
  210. package/dist/extensions/host.js +30 -7
  211. package/dist/extensions/installs.d.ts +20 -8
  212. package/dist/extensions/installs.js +37 -15
  213. package/dist/extensions/org-config.d.ts +75 -6
  214. package/dist/extensions/org-config.js +184 -32
  215. package/dist/extensions/org-levels.d.ts +37 -0
  216. package/dist/extensions/org-levels.js +71 -0
  217. package/dist/extensions/org-overrides.d.ts +151 -0
  218. package/dist/extensions/org-overrides.js +524 -0
  219. package/dist/extensions/permission-view.d.ts +16 -4
  220. package/dist/extensions/permission-view.js +4 -4
  221. package/dist/extensions/plugin-items.d.ts +21 -0
  222. package/dist/extensions/plugin-items.js +42 -0
  223. package/dist/extensions/point-defaults.d.ts +12 -5
  224. package/dist/extensions/point-defaults.js +37 -9
  225. package/dist/extensions/resolve.d.ts +5 -1
  226. package/dist/extensions/resolve.js +15 -2
  227. package/dist/files/previewers.d.ts +8 -1
  228. package/dist/files/previewers.js +35 -6
  229. package/dist/http/api.module.js +23 -3
  230. package/dist/http/app.d.ts +11 -2
  231. package/dist/http/app.js +31 -5
  232. package/dist/identity/accounts.d.ts +29 -29
  233. package/dist/identity/accounts.js +47 -47
  234. package/dist/identity/audit.d.ts +2 -1
  235. package/dist/identity/auth.guard.d.ts +13 -5
  236. package/dist/identity/auth.guard.js +26 -9
  237. package/dist/identity/identity.module.d.ts +1 -1
  238. package/dist/identity/identity.module.js +4 -4
  239. package/dist/identity/me.controller.js +1 -1
  240. package/dist/identity/principal.d.ts +3 -3
  241. package/dist/identity/principal.js +3 -3
  242. package/dist/identity/settings.d.ts +22 -11
  243. package/dist/identity/settings.js +53 -18
  244. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  245. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  246. package/dist/inbox/inbox.module.d.ts +4 -1
  247. package/dist/inbox/inbox.module.js +7 -3
  248. package/dist/inbox/inbox.service.d.ts +62 -3
  249. package/dist/inbox/inbox.service.js +74 -4
  250. package/dist/inbox/org-notices.d.ts +63 -0
  251. package/dist/inbox/org-notices.js +91 -0
  252. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  253. package/dist/inbox/platform-inbox.controller.js +58 -0
  254. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  255. package/dist/inbox/platform-inbox.service.js +263 -0
  256. package/dist/inbox/platform-notices.d.ts +19 -0
  257. package/dist/inbox/platform-notices.js +9 -0
  258. package/dist/index.d.ts +1 -1
  259. package/dist/index.js +1 -1
  260. package/dist/infra/cli/kernel-cli.module.js +9 -1
  261. package/dist/infra/config/kernel-config.service.js +21 -1
  262. package/dist/infra/database/xact-lock.d.ts +1 -1
  263. package/dist/infra/database/xact-lock.js +1 -1
  264. package/dist/infra/events/kernel-events.d.ts +11 -2
  265. package/dist/infra/queue/add-job-once.d.ts +14 -0
  266. package/dist/infra/queue/add-job-once.js +16 -0
  267. package/dist/kernel.module.js +6 -0
  268. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  269. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  270. package/dist/models/prices.d.ts +5 -5
  271. package/dist/models/prices.js +4 -4
  272. package/dist/models/purposes.controller.d.ts +6 -4
  273. package/dist/models/purposes.controller.js +13 -7
  274. package/dist/models/purposes.d.ts +20 -9
  275. package/dist/models/purposes.js +17 -8
  276. package/dist/orgs/directory-sync.d.ts +14 -5
  277. package/dist/orgs/directory-sync.js +41 -17
  278. package/dist/orgs/offboarding.d.ts +9 -7
  279. package/dist/orgs/offboarding.js +28 -17
  280. package/dist/orgs/org-lock.d.ts +5 -0
  281. package/dist/orgs/org-lock.js +13 -0
  282. package/dist/orgs/org.guard.d.ts +10 -0
  283. package/dist/orgs/org.guard.js +43 -32
  284. package/dist/orgs/orgs.module.js +3 -0
  285. package/dist/orgs/orgs.service.d.ts +20 -7
  286. package/dist/orgs/orgs.service.js +32 -12
  287. package/dist/orgs/roles.d.ts +1 -1
  288. package/dist/orgs/roles.js +5 -1
  289. package/dist/orgs/settings.controller.d.ts +1 -1
  290. package/dist/orgs/settings.service.d.ts +15 -3
  291. package/dist/orgs/settings.service.js +6 -2
  292. package/dist/overrides.d.ts +3 -0
  293. package/dist/overrides.js +2 -0
  294. package/dist/platform/actor.d.ts +48 -0
  295. package/dist/platform/actor.js +100 -0
  296. package/dist/platform/agent-docs.d.ts +18 -0
  297. package/dist/platform/agent-docs.js +59 -0
  298. package/dist/platform/availability.d.ts +14 -0
  299. package/dist/platform/availability.js +43 -0
  300. package/dist/platform/errors.d.ts +11 -0
  301. package/dist/platform/errors.js +26 -0
  302. package/dist/platform/exclusions.d.ts +12 -0
  303. package/dist/platform/exclusions.js +1387 -0
  304. package/dist/platform/method.d.ts +6 -0
  305. package/dist/platform/method.js +15 -0
  306. package/dist/platform/operation.d.ts +92 -0
  307. package/dist/platform/operation.js +35 -0
  308. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  309. package/dist/platform/ops/agent-templates.ops.js +92 -0
  310. package/dist/platform/ops/agents.ops.d.ts +19 -0
  311. package/dist/platform/ops/agents.ops.js +294 -0
  312. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  313. package/dist/platform/ops/connectors.ops.js +126 -0
  314. package/dist/platform/ops/errors.d.ts +11 -0
  315. package/dist/platform/ops/errors.js +22 -0
  316. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  317. package/dist/platform/ops/extensions.ops.js +116 -0
  318. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  319. package/dist/platform/ops/marketplaces.ops.js +157 -0
  320. package/dist/platform/ops/paging.d.ts +14 -0
  321. package/dist/platform/ops/paging.js +20 -0
  322. package/dist/platform/ops/platform.ops.d.ts +23 -0
  323. package/dist/platform/ops/platform.ops.js +158 -0
  324. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  325. package/dist/platform/ops/plugins.ops.js +377 -0
  326. package/dist/platform/ops/requests.ops.d.ts +14 -0
  327. package/dist/platform/ops/requests.ops.js +153 -0
  328. package/dist/platform/ops/role.d.ts +4 -0
  329. package/dist/platform/ops/role.js +10 -0
  330. package/dist/platform/ops/skills.ops.d.ts +13 -0
  331. package/dist/platform/ops/skills.ops.js +98 -0
  332. package/dist/platform/ops/summary.d.ts +10 -0
  333. package/dist/platform/ops/summary.js +18 -0
  334. package/dist/platform/platform-ops.module.d.ts +7 -0
  335. package/dist/platform/platform-ops.module.js +55 -0
  336. package/dist/platform/platform.module.d.ts +8 -0
  337. package/dist/platform/platform.module.js +25 -0
  338. package/dist/platform/redact-orgs.d.ts +7 -0
  339. package/dist/platform/redact-orgs.js +52 -0
  340. package/dist/platform/registry.d.ts +30 -0
  341. package/dist/platform/registry.js +111 -0
  342. package/dist/roles/worker-role.d.ts +6 -4
  343. package/dist/roles/worker-role.js +14 -7
  344. package/dist/roles/worker.module.d.ts +1 -1
  345. package/dist/roles/worker.module.js +9 -1
  346. package/dist/runtime/context/build.d.ts +6 -4
  347. package/dist/runtime/context/build.js +26 -7
  348. package/dist/runtime/context/claude-tools.d.ts +2 -1
  349. package/dist/runtime/context/claude-tools.js +5 -4
  350. package/dist/runtime/context/compaction.js +9 -0
  351. package/dist/runtime/context/reminders.d.ts +2 -0
  352. package/dist/runtime/context/reminders.js +2 -0
  353. package/dist/runtime/context/skills.js +9 -2
  354. package/dist/runtime/context/tool-changes.d.ts +27 -0
  355. package/dist/runtime/context/tool-changes.js +60 -0
  356. package/dist/runtime/hook-calls.js +2 -0
  357. package/dist/runtime/langgraph-loop.d.ts +3 -1
  358. package/dist/runtime/langgraph-loop.js +35 -17
  359. package/dist/runtime/loop.d.ts +32 -4
  360. package/dist/runtime/maintenance.d.ts +7 -4
  361. package/dist/runtime/maintenance.js +23 -8
  362. package/dist/runtime/model-call.d.ts +30 -8
  363. package/dist/runtime/model-call.js +69 -19
  364. package/dist/runtime/run-control.d.ts +11 -1
  365. package/dist/runtime/run-control.js +12 -0
  366. package/dist/runtime/run-drafts.d.ts +85 -0
  367. package/dist/runtime/run-drafts.js +230 -0
  368. package/dist/runtime/run-jobs.d.ts +3 -5
  369. package/dist/runtime/run-jobs.js +3 -7
  370. package/dist/runtime/run-queue.d.ts +37 -3
  371. package/dist/runtime/run-queue.js +188 -11
  372. package/dist/runtime/run-worker.d.ts +11 -5
  373. package/dist/runtime/run-worker.js +54 -31
  374. package/dist/runtime/runtime.module.js +3 -0
  375. package/dist/runtime/step-log.d.ts +9 -4
  376. package/dist/runtime/step-log.js +8 -5
  377. package/dist/runtime/stream.controller.d.ts +23 -1
  378. package/dist/runtime/stream.controller.js +60 -3
  379. package/dist/runtime/stream.d.ts +4 -1
  380. package/dist/runtime/stream.js +27 -3
  381. package/dist/runtime/subagents/child.d.ts +55 -7
  382. package/dist/runtime/subagents/child.js +105 -7
  383. package/dist/runtime/subagents/definition.d.ts +12 -3
  384. package/dist/runtime/subagents/definition.js +43 -29
  385. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  386. package/dist/runtime/subagents/deliveries.js +228 -0
  387. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  388. package/dist/runtime/subagents/dispatch.js +212 -141
  389. package/dist/runtime/subagents/limits.d.ts +24 -5
  390. package/dist/runtime/subagents/limits.js +40 -6
  391. package/dist/runtime/subagents/messages.d.ts +95 -0
  392. package/dist/runtime/subagents/messages.js +328 -0
  393. package/dist/runtime/subagents/preamble.d.ts +4 -4
  394. package/dist/runtime/subagents/preamble.js +9 -7
  395. package/dist/runtime/subagents/progress.d.ts +8 -6
  396. package/dist/runtime/subagents/progress.js +11 -6
  397. package/dist/runtime/subagents/render.d.ts +30 -0
  398. package/dist/runtime/subagents/render.js +53 -0
  399. package/dist/runtime/subagents/roster.d.ts +24 -7
  400. package/dist/runtime/subagents/roster.js +47 -11
  401. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  402. package/dist/runtime/subagents/skill-fork.js +8 -4
  403. package/dist/runtime/subagents/status.d.ts +14 -0
  404. package/dist/runtime/subagents/status.js +23 -0
  405. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  406. package/dist/runtime/subagents/subagents.service.js +11 -6
  407. package/dist/runtime/usage-report.js +17 -12
  408. package/dist/runtime/waits.d.ts +140 -37
  409. package/dist/runtime/waits.js +394 -106
  410. package/dist/sandbox/jobs.d.ts +40 -13
  411. package/dist/sandbox/jobs.js +57 -20
  412. package/dist/sandbox/leases.d.ts +37 -54
  413. package/dist/sandbox/leases.js +71 -115
  414. package/dist/sandbox/providers.d.ts +2 -2
  415. package/dist/sandbox/providers.js +1 -1
  416. package/dist/sandbox/sandbox.module.d.ts +3 -2
  417. package/dist/sandbox/sandbox.module.js +4 -3
  418. package/dist/sandbox/sandbox.service.d.ts +229 -134
  419. package/dist/sandbox/sandbox.service.js +630 -409
  420. package/dist/skills/catalog.d.ts +3 -2
  421. package/dist/skills/catalog.js +21 -43
  422. package/dist/skills/changes.controller.d.ts +7 -0
  423. package/dist/skills/changes.controller.js +19 -1
  424. package/dist/skills/invoke.js +8 -3
  425. package/dist/skills/package.d.ts +20 -1
  426. package/dist/skills/package.js +28 -1
  427. package/dist/skills/skills.controller.d.ts +39 -4
  428. package/dist/skills/skills.controller.js +88 -10
  429. package/dist/skills/skills.module.js +10 -1
  430. package/dist/skills/skills.service.d.ts +106 -26
  431. package/dist/skills/skills.service.js +421 -75
  432. package/dist/skills/usable.d.ts +81 -0
  433. package/dist/skills/usable.js +379 -0
  434. package/dist/tools/approvals.service.d.ts +20 -2
  435. package/dist/tools/approvals.service.js +23 -4
  436. package/dist/tools/builtin-names.d.ts +21 -5
  437. package/dist/tools/builtin-names.js +30 -5
  438. package/dist/tools/builtins/agent.d.ts +23 -21
  439. package/dist/tools/builtins/agent.js +62 -55
  440. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  441. package/dist/tools/builtins/builtin-tools.js +37 -12
  442. package/dist/tools/builtins/handback.d.ts +28 -0
  443. package/dist/tools/builtins/handback.js +53 -0
  444. package/dist/tools/builtins/platform.d.ts +34 -0
  445. package/dist/tools/builtins/platform.js +362 -0
  446. package/dist/tools/builtins/sandbox/bash.js +13 -3
  447. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  448. package/dist/tools/builtins/sandbox/common.js +80 -45
  449. package/dist/tools/builtins/sandbox/edit.js +2 -2
  450. package/dist/tools/builtins/sandbox/glob.js +2 -2
  451. package/dist/tools/builtins/sandbox/grep.js +2 -4
  452. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  453. package/dist/tools/builtins/sandbox/index.js +1 -1
  454. package/dist/tools/builtins/sandbox/read.js +1 -1
  455. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  456. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  457. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  458. package/dist/tools/builtins/sandbox/write.js +2 -2
  459. package/dist/tools/builtins/send-message.d.ts +56 -0
  460. package/dist/tools/builtins/send-message.js +100 -0
  461. package/dist/tools/builtins/skill-load.d.ts +22 -14
  462. package/dist/tools/builtins/skill-load.js +86 -57
  463. package/dist/tools/builtins/skill-write.js +1 -1
  464. package/dist/tools/builtins/web/extract.js +5 -1
  465. package/dist/tools/builtins/web/fetch.js +1 -0
  466. package/dist/tools/builtins/web/search.js +1 -0
  467. package/dist/tools/connectors.controller.d.ts +10 -0
  468. package/dist/tools/connectors.controller.js +12 -0
  469. package/dist/tools/connectors.service.d.ts +46 -5
  470. package/dist/tools/connectors.service.js +94 -15
  471. package/dist/tools/extension-tools.controller.d.ts +14 -0
  472. package/dist/tools/extension-tools.controller.js +37 -0
  473. package/dist/tools/info.d.ts +42 -1
  474. package/dist/tools/info.js +64 -1
  475. package/dist/tools/org-tool-switches.d.ts +74 -0
  476. package/dist/tools/org-tool-switches.js +184 -0
  477. package/dist/tools/pipeline.d.ts +46 -40
  478. package/dist/tools/pipeline.js +187 -364
  479. package/dist/tools/policy.d.ts +1 -1
  480. package/dist/tools/policy.js +36 -16
  481. package/dist/tools/registry.d.ts +98 -5
  482. package/dist/tools/registry.js +87 -9
  483. package/dist/tools/tools.module.js +12 -2
  484. package/dist/ui/views.d.ts +2 -1
  485. package/dist/ui/views.js +17 -3
  486. package/package.json +3 -3
  487. package/src/migrations/0074_subagent_tree.sql +50 -0
  488. package/src/migrations/0075_plugin_scope.sql +61 -0
  489. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  490. package/src/migrations/0077_scope_requests.sql +52 -0
  491. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  492. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  493. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  494. package/src/migrations/0081_platform_components.sql +129 -0
  495. package/src/migrations/0082_platform_migration.sql +33 -0
  496. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  497. package/src/migrations/0084_org_owned_items.sql +85 -0
  498. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  499. package/src/migrations/0086_org_layering.sql +30 -0
  500. package/src/migrations/0087_approval_summary.sql +6 -0
  501. package/src/migrations/0088_environments.sql +80 -0
  502. package/dist/catalog/upgrade-targets.d.ts +0 -56
  503. package/dist/catalog/upgrade-targets.js +0 -90
  504. package/dist/conversations/sandbox-status.d.ts +0 -24
  505. package/dist/conversations/sandbox-status.js +0 -52
  506. package/dist/extensions/org-config.controller.d.ts +0 -32
  507. package/dist/extensions/org-config.controller.js +0 -70
@@ -0,0 +1,77 @@
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 { Inject, Injectable } from "@nestjs/common";
11
+ import { ApiError } from "../errors.js";
12
+ import { KernelDb } from "../infra/database/kernel-db.js";
13
+ import { SandboxProviders } from "../sandbox/providers.js";
14
+ import { environmentNotFound } from "../sandbox/sandbox.service.js";
15
+ /**
16
+ * The provider an environment works with: the one keeping its files or instance once it has any
17
+ * (they are never migrated, spec §4.2 item 13); before that, the current provider (its first use
18
+ * creates them there), else the one recorded at creation. The same rule as `SandboxService`'s use.
19
+ */
20
+ export function environmentProvider(f, current) {
21
+ const holdsResources = f.fsStatus !== null && (f.fsStatus !== "none" || f.hasInstance);
22
+ if (holdsResources)
23
+ return f.instanceProvider;
24
+ return current ?? f.provider;
25
+ }
26
+ /** The environment's provider is not the current one, or there is no provider (503). */
27
+ export const environmentUnavailable = (provider) => new ApiError("environment.unavailable", provider === null
28
+ ? "No cloud sandbox is available in this deployment; ask the super admin to enable a sandbox plugin"
29
+ : `This environment is kept by the sandbox provider ${provider}, which is not the current provider; it can be used again once ${provider} is the deployment's sandbox provider`);
30
+ /**
31
+ * Who may use an environment (spec §4.2 item 12): in phase 1 only the owner of a personal
32
+ * environment. Anyone else gets `environment.not_found`, never `forbidden`, so ids cannot be
33
+ * probed. Read live on every call (PG, no cache); phase 3 adds project membership.
34
+ */
35
+ let EnvironmentAccess = class EnvironmentAccess {
36
+ db;
37
+ providers;
38
+ constructor(db, providers) {
39
+ this.db = db;
40
+ this.providers = providers;
41
+ }
42
+ /**
43
+ * The environment if `accountId` may use it in `orgId` now: `environment.not_found` when it is
44
+ * missing, deleted, in another org or someone else's; `environment.unavailable` when its
45
+ * provider is not the current one (or there is none).
46
+ */
47
+ async usable(orgId, accountId, environmentId) {
48
+ const row = await this.db
49
+ .selectFrom("environments as e")
50
+ .leftJoin("environment_instances as i", "i.environment_id", "e.id")
51
+ .select(["e.id", "e.provider", "i.provider as instance_provider", "i.fs_status", "i.handle"])
52
+ .where("e.id", "=", environmentId)
53
+ .where("e.org_id", "=", orgId)
54
+ .where("e.owner_kind", "=", "personal")
55
+ .where("e.owner_account_id", "=", accountId)
56
+ .where("e.deleted_at", "is", null)
57
+ .executeTakeFirst();
58
+ if (!row)
59
+ throw environmentNotFound();
60
+ const current = this.providers.current()?.plugin;
61
+ const provider = environmentProvider({
62
+ provider: row.provider,
63
+ instanceProvider: row.instance_provider,
64
+ fsStatus: row.fs_status,
65
+ hasInstance: row.handle !== null,
66
+ }, current);
67
+ if (current === undefined || provider !== current)
68
+ throw environmentUnavailable(provider);
69
+ return { id: row.id, provider };
70
+ }
71
+ };
72
+ EnvironmentAccess = __decorate([
73
+ Injectable(),
74
+ __param(0, Inject(KernelDb)),
75
+ __param(1, Inject(SandboxProviders))
76
+ ], EnvironmentAccess);
77
+ export { EnvironmentAccess };
@@ -0,0 +1,61 @@
1
+ import { ApiError } from "../errors.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
3
+ import { TransactionHost } from "../infra/database/transaction-host.js";
4
+ import { SandboxProviders } from "../sandbox/providers.js";
5
+ import { EnvironmentAccess } from "./access.js";
6
+ import { EnvironmentsService } from "./environments.service.js";
7
+ /** `details[0].reason` of the error an anonymous IM conversation's sandbox call gets. */
8
+ export declare const ANONYMOUS_NO_ENVIRONMENT = "anonymous";
9
+ /** Anonymous IM senders have no environment (spec §4.2 item 8): their sandbox tools are off. */
10
+ export declare const anonymousNoEnvironment: () => ApiError;
11
+ /** How a new conversation picks its environment. */
12
+ export interface NewConversationEnvironment {
13
+ /** The environment the person chose (the composer's picker); checked with `usable`. */
14
+ environmentId?: string;
15
+ /** An IM thread: the person's IM default (`environment_defaults`) when still usable. */
16
+ im?: boolean;
17
+ }
18
+ /**
19
+ * Which environment a conversation works in (spec 2026-11-07-environments-design §4.1 items 1, 3;
20
+ * §4.2 items 8, 9, 12). A conversation is bound once, to an environment of its owner
21
+ * (`conversations.account_id`): the one chosen at its first send, else the owner's IM default
22
+ * (IM threads), else the owner's default environment. Its sub-agents use the root's. Access is
23
+ * checked when it is bound and again on every sandbox tool call ({@link forTool}); only the owner
24
+ * may use a personal environment, so a conversation never reaches another person's.
25
+ */
26
+ export declare class ConversationEnvironments {
27
+ private readonly db;
28
+ readonly txHost: TransactionHost;
29
+ private readonly providers;
30
+ private readonly access;
31
+ private readonly environments;
32
+ constructor(db: KernelDb, txHost: TransactionHost, providers: Pick<SandboxProviders, "current">, access: Pick<EnvironmentAccess, "usable">, environments: Pick<EnvironmentsService, "ensureDefault">);
33
+ /**
34
+ * The environment a new conversation of `accountId` is bound to: the chosen one when it is
35
+ * usable by the person (else `environment.not_found` / `environment.unavailable`, and nothing
36
+ * is created); without a choice the IM default (IM only) or the person's default environment.
37
+ * Null (unbound) without a sandbox provider and for anonymous IM senders.
38
+ */
39
+ forNew(orgId: string, accountId: string, pick?: NewConversationEnvironment): Promise<string | null>;
40
+ /**
41
+ * The environment a sandbox tool call of the conversation tree rooted at `rootConversationId`
42
+ * enters, checked for its owner now. A conversation still unbound (created before
43
+ * environments, or while no provider existed) is bound first, to the owner's IM default when it
44
+ * is an IM thread, else to the owner's default environment; a racing call binds it once.
45
+ * Throws `sandbox.unavailable` without a provider or for an anonymous IM conversation, and
46
+ * `environment.not_found` / `environment.unavailable` when the owner may not use it now.
47
+ */
48
+ forTool(orgId: string, rootConversationId: string): Promise<string>;
49
+ /**
50
+ * The person's IM default when `im` and it is still theirs, live, in this org and usable (the
51
+ * table has no such guard), else their default environment (created when missing). The owner
52
+ * having left the org reads as `environment.not_found`.
53
+ */
54
+ private defaultFor;
55
+ /** Binds an unbound conversation to `environmentId`; returns what it is bound to now. */
56
+ private bind;
57
+ /** The account is the org's anonymous IM guest (no person behind it). */
58
+ private isAnonymous;
59
+ /** The conversation is (or was) an IM thread's. */
60
+ private isImThread;
61
+ }
@@ -0,0 +1,170 @@
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 { Inject, Injectable } from "@nestjs/common";
11
+ import { ApiError } from "../errors.js";
12
+ import { KernelDb } from "../infra/database/kernel-db.js";
13
+ import { TransactionHost } from "../infra/database/transaction-host.js";
14
+ import { Transactional } from "../infra/database/transactional.decorator.js";
15
+ import { SandboxProviders } from "../sandbox/providers.js";
16
+ import { environmentNotFound, sandboxUnavailable } from "../sandbox/sandbox.service.js";
17
+ import { EnvironmentAccess } from "./access.js";
18
+ import { EnvironmentsService } from "./environments.service.js";
19
+ /** `details[0].reason` of the error an anonymous IM conversation's sandbox call gets. */
20
+ export const ANONYMOUS_NO_ENVIRONMENT = "anonymous";
21
+ /** Anonymous IM senders have no environment (spec §4.2 item 8): their sandbox tools are off. */
22
+ export const anonymousNoEnvironment = () => new ApiError("sandbox.unavailable", "Anonymous IM senders have no environment, so the sandbox is not available", [{ reason: ANONYMOUS_NO_ENVIRONMENT }]);
23
+ /**
24
+ * Which environment a conversation works in (spec 2026-11-07-environments-design §4.1 items 1, 3;
25
+ * §4.2 items 8, 9, 12). A conversation is bound once, to an environment of its owner
26
+ * (`conversations.account_id`): the one chosen at its first send, else the owner's IM default
27
+ * (IM threads), else the owner's default environment. Its sub-agents use the root's. Access is
28
+ * checked when it is bound and again on every sandbox tool call ({@link forTool}); only the owner
29
+ * may use a personal environment, so a conversation never reaches another person's.
30
+ */
31
+ let ConversationEnvironments = class ConversationEnvironments {
32
+ db;
33
+ txHost;
34
+ providers;
35
+ access;
36
+ environments;
37
+ constructor(db, txHost, providers, access, environments) {
38
+ this.db = db;
39
+ this.txHost = txHost;
40
+ this.providers = providers;
41
+ this.access = access;
42
+ this.environments = environments;
43
+ }
44
+ /**
45
+ * The environment a new conversation of `accountId` is bound to: the chosen one when it is
46
+ * usable by the person (else `environment.not_found` / `environment.unavailable`, and nothing
47
+ * is created); without a choice the IM default (IM only) or the person's default environment.
48
+ * Null (unbound) without a sandbox provider and for anonymous IM senders.
49
+ */
50
+ async forNew(orgId, accountId, pick = {}) {
51
+ if (pick.environmentId !== undefined) {
52
+ return (await this.access.usable(orgId, accountId, pick.environmentId)).id;
53
+ }
54
+ if (this.providers.current() === undefined)
55
+ return null;
56
+ if (await this.isAnonymous(orgId, accountId))
57
+ return null;
58
+ return this.defaultFor(orgId, accountId, pick.im === true);
59
+ }
60
+ /**
61
+ * The environment a sandbox tool call of the conversation tree rooted at `rootConversationId`
62
+ * enters, checked for its owner now. A conversation still unbound (created before
63
+ * environments, or while no provider existed) is bound first, to the owner's IM default when it
64
+ * is an IM thread, else to the owner's default environment; a racing call binds it once.
65
+ * Throws `sandbox.unavailable` without a provider or for an anonymous IM conversation, and
66
+ * `environment.not_found` / `environment.unavailable` when the owner may not use it now.
67
+ */
68
+ async forTool(orgId, rootConversationId) {
69
+ if (this.providers.current() === undefined)
70
+ throw sandboxUnavailable();
71
+ const conv = await this.db
72
+ .selectFrom("conversations")
73
+ .select(["account_id", "environment_id"])
74
+ .where("id", "=", rootConversationId)
75
+ .where("org_id", "=", orgId)
76
+ .executeTakeFirst();
77
+ if (!conv)
78
+ throw environmentNotFound();
79
+ if (await this.isAnonymous(orgId, conv.account_id))
80
+ throw anonymousNoEnvironment();
81
+ let environmentId = conv.environment_id;
82
+ if (environmentId === null) {
83
+ const im = await this.isImThread(rootConversationId);
84
+ const chosen = await this.defaultFor(orgId, conv.account_id, im);
85
+ environmentId = await this.bind(rootConversationId, chosen);
86
+ }
87
+ return (await this.access.usable(orgId, conv.account_id, environmentId)).id;
88
+ }
89
+ /**
90
+ * The person's IM default when `im` and it is still theirs, live, in this org and usable (the
91
+ * table has no such guard), else their default environment (created when missing). The owner
92
+ * having left the org reads as `environment.not_found`.
93
+ */
94
+ async defaultFor(orgId, accountId, im) {
95
+ if (im) {
96
+ const row = await this.db
97
+ .selectFrom("environment_defaults")
98
+ .select("environment_id")
99
+ .where("org_id", "=", orgId)
100
+ .where("account_id", "=", accountId)
101
+ .executeTakeFirst();
102
+ if (row) {
103
+ try {
104
+ return (await this.access.usable(orgId, accountId, row.environment_id)).id;
105
+ }
106
+ catch (e) {
107
+ if (!isEnvironmentGone(e))
108
+ throw e;
109
+ }
110
+ }
111
+ }
112
+ try {
113
+ return await this.environments.ensureDefault(orgId, accountId);
114
+ }
115
+ catch (e) {
116
+ if (e instanceof ApiError && e.code === "org.not_found")
117
+ throw environmentNotFound();
118
+ throw e;
119
+ }
120
+ }
121
+ /** Binds an unbound conversation to `environmentId`; returns what it is bound to now. */
122
+ async bind(conversationId, environmentId) {
123
+ await this.db
124
+ .updateTable("conversations")
125
+ .set({ environment_id: environmentId })
126
+ .where("id", "=", conversationId)
127
+ .where("environment_id", "is", null)
128
+ .execute();
129
+ const row = await this.db
130
+ .selectFrom("conversations")
131
+ .select("environment_id")
132
+ .where("id", "=", conversationId)
133
+ .executeTakeFirstOrThrow();
134
+ return row.environment_id ?? environmentId;
135
+ }
136
+ /** The account is the org's anonymous IM guest (no person behind it). */
137
+ async isAnonymous(orgId, accountId) {
138
+ const row = await this.db
139
+ .selectFrom("org_anonymous_accounts")
140
+ .select("account_id")
141
+ .where("org_id", "=", orgId)
142
+ .where("account_id", "=", accountId)
143
+ .executeTakeFirst();
144
+ return row !== undefined;
145
+ }
146
+ /** The conversation is (or was) an IM thread's. */
147
+ async isImThread(conversationId) {
148
+ const row = await this.db
149
+ .selectFrom("channel_threads")
150
+ .select("id")
151
+ .where("conversation_id", "=", conversationId)
152
+ .limit(1)
153
+ .executeTakeFirst();
154
+ return row !== undefined;
155
+ }
156
+ };
157
+ __decorate([
158
+ Transactional()
159
+ ], ConversationEnvironments.prototype, "bind", null);
160
+ ConversationEnvironments = __decorate([
161
+ Injectable(),
162
+ __param(0, Inject(KernelDb)),
163
+ __param(1, Inject(TransactionHost)),
164
+ __param(2, Inject(SandboxProviders)),
165
+ __param(3, Inject(EnvironmentAccess)),
166
+ __param(4, Inject(EnvironmentsService))
167
+ ], ConversationEnvironments);
168
+ export { ConversationEnvironments };
169
+ const isEnvironmentGone = (e) => e instanceof ApiError &&
170
+ (e.code === "environment.not_found" || e.code === "environment.unavailable");
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ /** An environment's name: trimmed, 1-64 characters (unique per person, case-insensitive). */
3
+ export declare const EnvironmentName: z.ZodString;
4
+ export declare const EnvironmentNameBody: z.ZodObject<{
5
+ name: z.ZodString;
6
+ }, z.core.$strict>;
7
+ export declare const EnvironmentParams: z.ZodObject<{
8
+ id: z.ZodString;
9
+ }, z.core.$strip>;
10
+ declare const EnvironmentCreateBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
11
+ name: z.ZodString;
12
+ }, z.core.$strict>>;
13
+ export declare class EnvironmentCreateBodyDto extends EnvironmentCreateBodyDto_base {
14
+ }
15
+ declare const EnvironmentRenameBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
16
+ name: z.ZodString;
17
+ }, z.core.$strict>>;
18
+ export declare class EnvironmentRenameBodyDto extends EnvironmentRenameBodyDto_base {
19
+ }
20
+ declare const EnvironmentParamsDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
21
+ id: z.ZodString;
22
+ }, z.core.$strip>>;
23
+ export declare class EnvironmentParamsDto extends EnvironmentParamsDto_base {
24
+ }
25
+ export {};
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
3
+ /** An environment's name: trimmed, 1-64 characters (unique per person, case-insensitive). */
4
+ export const EnvironmentName = z.string().trim().min(1).max(64);
5
+ export const EnvironmentNameBody = z.object({ name: EnvironmentName }).strict();
6
+ export const EnvironmentParams = z.object({ id: z.string().min(1).max(100) });
7
+ export class EnvironmentCreateBodyDto extends createZodDto(EnvironmentNameBody, "EnvironmentCreateBody") {
8
+ }
9
+ export class EnvironmentRenameBodyDto extends createZodDto(EnvironmentNameBody, "EnvironmentRenameBody") {
10
+ }
11
+ export class EnvironmentParamsDto extends createZodDto(EnvironmentParams, "EnvironmentParams") {
12
+ }
@@ -0,0 +1,33 @@
1
+ import type { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { type OrgContext } from "../orgs/org.guard.js";
4
+ import { type EnvironmentNameBody, type EnvironmentParams } from "./dto.js";
5
+ import { type EnvironmentList, EnvironmentsService, type EnvironmentView } from "./environments.service.js";
6
+ /**
7
+ * A person's environments in an org (`/api/v1/orgs/:orgId/environments`, spec
8
+ * 2026-11-07-environments-design §9; `agents.use`, human users only: a service token gets 403).
9
+ * Phase 1 has personal cloud environments only, each visible to its owner alone: another member
10
+ * gets 404 `environment.not_found`.
11
+ * - `GET /` → `{ items, defaultId, lastUsedId, cloudAvailable }` (`cloudAvailable`: there is a
12
+ * current sandbox provider; ruling R4);
13
+ * - `POST / { name }` → 201 `{ environment }`; `GET /:id`, `PATCH /:id { name }` → `{ environment }`;
14
+ * - `DELETE /:id` → 202 (destroyed by a job after the response);
15
+ * - `POST /:id/files/reset` → 202 (the reset is enqueued: a worker empties the files, the next use
16
+ * starts empty).
17
+ */
18
+ export declare class EnvironmentsController {
19
+ private readonly environments;
20
+ constructor(environments: EnvironmentsService);
21
+ list(principal: Principal, org: OrgContext): Promise<EnvironmentList>;
22
+ create(principal: Principal, org: OrgContext, body: z.infer<typeof EnvironmentNameBody>): Promise<{
23
+ environment: EnvironmentView;
24
+ }>;
25
+ get(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<{
26
+ environment: EnvironmentView;
27
+ }>;
28
+ rename(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>, body: z.infer<typeof EnvironmentNameBody>): Promise<{
29
+ environment: EnvironmentView;
30
+ }>;
31
+ remove(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<void>;
32
+ resetFiles(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<void>;
33
+ }
@@ -0,0 +1,110 @@
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, Delete, Get, HttpCode, Inject, Patch, Post } from "@nestjs/common";
11
+ import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
12
+ import { ZBody, ZParam } from "../infra/validation/zod-params.js";
13
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
14
+ import { EnvironmentCreateBodyDto, EnvironmentParamsDto, EnvironmentRenameBodyDto, } from "./dto.js";
15
+ import { EnvironmentsService, } from "./environments.service.js";
16
+ /**
17
+ * A person's environments in an org (`/api/v1/orgs/:orgId/environments`, spec
18
+ * 2026-11-07-environments-design §9; `agents.use`, human users only: a service token gets 403).
19
+ * Phase 1 has personal cloud environments only, each visible to its owner alone: another member
20
+ * gets 404 `environment.not_found`.
21
+ * - `GET /` → `{ items, defaultId, lastUsedId, cloudAvailable }` (`cloudAvailable`: there is a
22
+ * current sandbox provider; ruling R4);
23
+ * - `POST / { name }` → 201 `{ environment }`; `GET /:id`, `PATCH /:id { name }` → `{ environment }`;
24
+ * - `DELETE /:id` → 202 (destroyed by a job after the response);
25
+ * - `POST /:id/files/reset` → 202 (the reset is enqueued: a worker empties the files, the next use
26
+ * starts empty).
27
+ */
28
+ let EnvironmentsController = class EnvironmentsController {
29
+ environments;
30
+ constructor(environments) {
31
+ this.environments = environments;
32
+ }
33
+ async list(principal, org) {
34
+ const p = requireUser(principal);
35
+ return this.environments.list(org.orgId, p.account.id);
36
+ }
37
+ async create(principal, org, body) {
38
+ const p = requireUser(principal);
39
+ return {
40
+ environment: await this.environments.create(org.orgId, p.account.id, { name: body.name }, patTokenId(p)),
41
+ };
42
+ }
43
+ async get(principal, org, params) {
44
+ const p = requireUser(principal);
45
+ return { environment: await this.environments.get(org.orgId, p.account.id, params.id) };
46
+ }
47
+ async rename(principal, org, params, body) {
48
+ const p = requireUser(principal);
49
+ return {
50
+ environment: await this.environments.rename(org.orgId, p.account.id, params.id, body.name, patTokenId(p)),
51
+ };
52
+ }
53
+ async remove(principal, org, params) {
54
+ const p = requireUser(principal);
55
+ await this.environments.remove(org.orgId, p.account.id, params.id, patTokenId(p));
56
+ }
57
+ async resetFiles(principal, org, params) {
58
+ const p = requireUser(principal);
59
+ await this.environments.resetFiles(org.orgId, p.account.id, params.id, patTokenId(p));
60
+ }
61
+ };
62
+ __decorate([
63
+ Get(),
64
+ OrgAction("agents.use"),
65
+ __param(0, CurrentPrincipal()),
66
+ __param(1, CurrentOrg())
67
+ ], EnvironmentsController.prototype, "list", null);
68
+ __decorate([
69
+ Post(),
70
+ OrgAction("agents.use"),
71
+ __param(0, CurrentPrincipal()),
72
+ __param(1, CurrentOrg()),
73
+ __param(2, ZBody(EnvironmentCreateBodyDto))
74
+ ], EnvironmentsController.prototype, "create", null);
75
+ __decorate([
76
+ Get(":id"),
77
+ OrgAction("agents.use"),
78
+ __param(0, CurrentPrincipal()),
79
+ __param(1, CurrentOrg()),
80
+ __param(2, ZParam(EnvironmentParamsDto))
81
+ ], EnvironmentsController.prototype, "get", null);
82
+ __decorate([
83
+ Patch(":id"),
84
+ OrgAction("agents.use"),
85
+ __param(0, CurrentPrincipal()),
86
+ __param(1, CurrentOrg()),
87
+ __param(2, ZParam(EnvironmentParamsDto)),
88
+ __param(3, ZBody(EnvironmentRenameBodyDto))
89
+ ], EnvironmentsController.prototype, "rename", null);
90
+ __decorate([
91
+ Delete(":id"),
92
+ HttpCode(202),
93
+ OrgAction("agents.use"),
94
+ __param(0, CurrentPrincipal()),
95
+ __param(1, CurrentOrg()),
96
+ __param(2, ZParam(EnvironmentParamsDto))
97
+ ], EnvironmentsController.prototype, "remove", null);
98
+ __decorate([
99
+ Post(":id/files/reset"),
100
+ HttpCode(202),
101
+ OrgAction("agents.use"),
102
+ __param(0, CurrentPrincipal()),
103
+ __param(1, CurrentOrg()),
104
+ __param(2, ZParam(EnvironmentParamsDto))
105
+ ], EnvironmentsController.prototype, "resetFiles", null);
106
+ EnvironmentsController = __decorate([
107
+ Controller("api/v1/orgs/:orgId/environments"),
108
+ __param(0, Inject(EnvironmentsService))
109
+ ], EnvironmentsController);
110
+ export { EnvironmentsController };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Environments (spec 2026-11-07-environments-design): a person's environments
3
+ * ({@link EnvironmentsService}), who may use one ({@link EnvironmentAccess}) and the one a
4
+ * conversation works in ({@link ConversationEnvironments}). The instances and file systems are the
5
+ * {@link SandboxModule}'s.
6
+ */
7
+ export declare class EnvironmentsModule {
8
+ }
@@ -0,0 +1,27 @@
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
+ import { Module } from "@nestjs/common";
8
+ import { SandboxModule } from "../sandbox/sandbox.module.js";
9
+ import { EnvironmentAccess } from "./access.js";
10
+ import { ConversationEnvironments } from "./conversation-environments.js";
11
+ import { EnvironmentsService } from "./environments.service.js";
12
+ /**
13
+ * Environments (spec 2026-11-07-environments-design): a person's environments
14
+ * ({@link EnvironmentsService}), who may use one ({@link EnvironmentAccess}) and the one a
15
+ * conversation works in ({@link ConversationEnvironments}). The instances and file systems are the
16
+ * {@link SandboxModule}'s.
17
+ */
18
+ let EnvironmentsModule = class EnvironmentsModule {
19
+ };
20
+ EnvironmentsModule = __decorate([
21
+ Module({
22
+ imports: [SandboxModule],
23
+ providers: [EnvironmentAccess, EnvironmentsService, ConversationEnvironments],
24
+ exports: [EnvironmentAccess, EnvironmentsService, ConversationEnvironments],
25
+ })
26
+ ], EnvironmentsModule);
27
+ export { EnvironmentsModule };