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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -14,21 +14,23 @@ import { LockService, } from "../infra/lock/lock.service.js";
14
14
  import { redisClockScript, sharedLeaseReadScript, } from "../infra/lock/shared-lease.js";
15
15
  import { KERNEL_LOGGER, REDIS } from "../infra/tokens.js";
16
16
  /**
17
- * Shared and exclusive sandbox leases (sub-agents spec §10.3): the Redis protocol that lets several
18
- * holders use one conversation's running sandbox concurrently (shared leases: commands, file reads
19
- * and writes) while lifecycle changes (create, resume, rebuild, suspend, destroy) stay alone
20
- * (exclusive leases). Keys, conversation = the sandbox conversation:
17
+ * Shared and exclusive sandbox leases (sub-agents spec §10.3; environments spec §4.2): the Redis
18
+ * protocol that lets several holders (every conversation bound to the environment, and their
19
+ * sub-agents) use one environment's running instance concurrently (shared leases: commands, file
20
+ * reads and writes) while lifecycle changes (create, resume, rebuild, suspend, destroy, reset) stay
21
+ * alone (exclusive leases). Every `sandbox@2` provider runs commands concurrently and kills by tag,
22
+ * so there is no single-holder mode. Keys, env = the environment id:
21
23
  *
22
- * - `capk:sandbox:<conv>`: the lock key kept from before (rollout, §10.8): an exclusive holder's
23
- * token, or `shared` while shared leases exist. An older replica's `SET NX` therefore never gets
24
- * in while shared leases live, and its token blocks new shared leases.
25
- * - `capk:sandbox-users:<conv>`: sorted set of shared lease tokens scored by their expiry (ms, Redis
24
+ * - `capk:sandbox:<env>`: the lock key: an exclusive holder's token, or `shared` while shared
25
+ * leases exist.
26
+ * - `capk:sandbox-users:<env>`: sorted set of shared lease tokens scored by their expiry (ms, Redis
26
27
  * server clock).
27
- * - `capk:sandbox-intent:<conv>`: an exclusive waiter's token (writer preference); while it exists
28
+ * - `capk:sandbox-intent:<env>`: an exclusive waiter's token (writer preference); while it exists
28
29
  * no new shared lease is granted.
29
- * - `capk:sandbox-holders:<conv>`: hash token → expiry of holders that may have commands running
30
- * (the per-holder replacement of the single busy marker `capk:sandbox-busy:<conv>`, still read).
31
- * - `capk:sandbox-path:<conv>:<sha256hex(path)>`: a short per-path lease around the kernel's own
30
+ * - `capk:sandbox-holders:<env>`: hash token → expiry of holders that may have commands running;
31
+ * a record without a live lease is a crashed holder whose commands (tagged with its token) are
32
+ * killed by the next acquirer.
33
+ * - `capk:sandbox-path:<env>:<sha256hex(path)>`: a short per-path lease around the kernel's own
32
34
  * read-modify-write of one file.
33
35
  *
34
36
  * The first three keys are a {@link LockService} shared lease (`tryShared` / `tryExclusive`,
@@ -37,23 +39,10 @@ import { KERNEL_LOGGER, REDIS } from "../infra/tokens.js";
37
39
  * the renewal deadline (send time of the last successful renewal + 2/3 TTL): its `signal` aborts
38
40
  * with {@link SandboxLockLostError}.
39
41
  */
40
- /** Prefix of the lock key `capk:sandbox:<conversationId>`. */
42
+ /** Prefix of the lock key `capk:sandbox:<environmentId>`. */
41
43
  export const SANDBOX_LOCK_PREFIX = "capk:sandbox:";
42
44
  /** TTL of a lease (ms): renewed every TTL / 3 while held. */
43
45
  export const SANDBOX_LOCK_TTL_MS = 60_000;
44
- /**
45
- * Prefix of the single "sandbox in use" marker of kernels before phase C,
46
- * `capk:sandbox-busy:<conversationId>`: present while such a holder ran commands. Found by an
47
- * exclusive acquirer, it means that holder crashed and its commands may still run.
48
- *
49
- * Holders of this kernel write it too, with the value {@link BUSY_V2}, while any holder record
50
- * exists (spec §10.8): this kernel ignores that value, and a replica from before phase C that
51
- * takes the lock after a new holder crashed sees a marker and kills everything, which is safe
52
- * because it only gets the lock when no shared lease is live.
53
- */
54
- export const SANDBOX_BUSY_PREFIX = "capk:sandbox-busy:";
55
- /** Value of the busy marker written by holders of this kernel (ignored by it). */
56
- export const BUSY_V2 = "v2";
57
46
  const USERS_PREFIX = "capk:sandbox-users:";
58
47
  const INTENT_PREFIX = "capk:sandbox-intent:";
59
48
  const HOLDERS_PREFIX = "capk:sandbox-holders:";
@@ -62,16 +51,16 @@ const PATH_PREFIX = "capk:sandbox-path:";
62
51
  const PATH_LEASE_TTL_MS = 30_000;
63
52
  /** Shortest life of an exclusive waiter's intent (ms): outlasts event-loop lag between polls. */
64
53
  const INTENT_TTL_FLOOR_MS = 2000;
65
- /** The sandbox of this conversation is busy: waited longer than `sandbox.lockWaitSeconds` (409). */
66
- export const sandboxBusy = () => new ApiError("sandbox.busy", "The sandbox for this conversation is busy with another command; wait for it to finish and try again");
54
+ /** The environment's sandbox is busy: waited longer than `sandbox.lockWaitSeconds` (409). */
55
+ export const sandboxBusy = () => new ApiError("sandbox.busy", "The sandbox of this environment is busy with other commands; wait for them to finish and try again");
67
56
  /** A lease was lost while held, or the record changed under it (generation mismatch). */
68
57
  export class SandboxLockLostError extends Error {
69
58
  /** `lock`: the lease was lost (renewal failed or none succeeded in time); `generation`: the record's fence changed. */
70
59
  reason;
71
- constructor(conversationId, reason = "lock") {
60
+ constructor(environmentId, reason = "lock") {
72
61
  super(reason === "lock"
73
- ? `sandbox lock lost for conversation ${conversationId}`
74
- : `sandbox state of conversation ${conversationId} changed concurrently (generation mismatch)`);
62
+ ? `sandbox lock lost for environment ${environmentId}`
63
+ : `sandbox state of environment ${environmentId} changed concurrently (generation mismatch)`);
75
64
  this.name = "SandboxLockLostError";
76
65
  this.reason = reason;
77
66
  }
@@ -83,37 +72,18 @@ export class SandboxPathBusyError extends Error {
83
72
  this.name = "SandboxPathBusyError";
84
73
  }
85
74
  }
86
- /**
87
- * KEYS holders, busy; ARGV token, ttl. Also writes the busy marker as v2 (kept for at least `ttl`)
88
- * unless an older kernel's holder owns it.
89
- */
75
+ /** KEYS holders; ARGV token, ttl. The hash is kept for at least `ttl`. */
90
76
  const REGISTER = redisClockScript(`local ttl = tonumber(ARGV[2])
91
77
  redis.call('HSET', KEYS[1], ARGV[1], now + ttl)
92
78
  if redis.call('PTTL', KEYS[1]) < ttl then redis.call('PEXPIRE', KEYS[1], ttl) end
93
- local b = redis.call('GET', KEYS[2])
94
- if (not b) or (b == '${BUSY_V2}' and redis.call('PTTL', KEYS[2]) < ttl) then
95
- redis.call('SET', KEYS[2], '${BUSY_V2}', 'PX', ttl)
96
- end
97
79
  return 1`);
98
- /** Deletes the v2 busy marker (key `busy`) once no holder record (hash `holders`) is left. */
99
- const dropV2 = (holders, busy) => `
100
- if redis.call('HLEN', ${holders}) == 0 and redis.call('GET', ${busy}) == '${BUSY_V2}' then
101
- redis.call('DEL', ${busy})
102
- end`;
103
- /** KEYS holders, busy; ARGV token. */
104
- const UNREGISTER = `
105
- redis.call('HDEL', KEYS[1], ARGV[1])
106
- ${dropV2("KEYS[1]", "KEYS[2]")}
107
- return 1`;
108
80
  /**
109
- * KEYS lock, users, holders, busy; ARGV the caller's exclusive token (or ''). Removes and returns
110
- * the holder fields without a live lease (expired fields are dropped without being returned: the
111
- * in-sandbox time limit ended their commands); claims an older kernel's busy marker only for the
112
- * caller holding the exclusive lease (`cur == token`, so no shared lease is live and killing
113
- * everything cannot hit a live sibling). The v2 marker is never claimed; it goes with the last
114
- * record. Returns { legacy, tag… }.
81
+ * KEYS lock, users, holders. Removes and returns the holder fields without a live lease (expired
82
+ * fields are dropped without being returned: the in-sandbox time limit ended their commands). The
83
+ * caller's own token is live (a shared lease, or the exclusive token in the lock key), so it is
84
+ * never returned. Returns the tags.
115
85
  */
116
- const CLAIM = sharedLeaseReadScript(`local out = {0}
86
+ const CLAIM = sharedLeaseReadScript(`local out = {}
117
87
  local f = redis.call('HGETALL', KEYS[3])
118
88
  for i = 1, #f, 2 do
119
89
  local tok = f[i]
@@ -124,12 +94,6 @@ for i = 1, #f, 2 do
124
94
  table.insert(out, tok)
125
95
  end
126
96
  end
127
- ${dropV2("KEYS[3]", "KEYS[4]")}
128
- local b = redis.call('GET', KEYS[4])
129
- if ARGV[1] ~= '' and cur == ARGV[1] and b and b ~= '${BUSY_V2}' then
130
- redis.call('DEL', KEYS[4])
131
- out[1] = 1
132
- end
133
97
  return out`);
134
98
  const abortReason = (signal) => signal.reason ?? new DOMException("This operation was aborted", "AbortError");
135
99
  function sleep(ms, signal) {
@@ -150,9 +114,9 @@ function sleep(ms, signal) {
150
114
  });
151
115
  }
152
116
  /** A signal that aborts with {@link SandboxLockLostError} when `lost` aborts. */
153
- function lostSignal(lost, conv) {
117
+ function lostSignal(lost, env) {
154
118
  const ctl = new AbortController();
155
- const abort = () => ctl.abort(new SandboxLockLostError(conv));
119
+ const abort = () => ctl.abort(new SandboxLockLostError(env));
156
120
  if (lost.aborted)
157
121
  abort();
158
122
  else
@@ -176,7 +140,7 @@ let SandboxLeases = class SandboxLeases {
176
140
  /** Path lease TTL (ms). */
177
141
  pathTtlMs;
178
142
  constructor(locks,
179
- /** The holder records and the legacy busy marker (scripts of this file). */
143
+ /** The holder records (scripts of this file). */
180
144
  redis, log, timings = {}) {
181
145
  this.locks = locks;
182
146
  this.redis = redis;
@@ -192,11 +156,11 @@ let SandboxLeases = class SandboxLeases {
192
156
  get intentTtlMs() {
193
157
  return Math.max(this.pollMs * 4, INTENT_TTL_FLOOR_MS);
194
158
  }
195
- keys(conv) {
159
+ keys(env) {
196
160
  return {
197
- lock: `${SANDBOX_LOCK_PREFIX}${conv}`,
198
- users: `${USERS_PREFIX}${conv}`,
199
- intent: `${INTENT_PREFIX}${conv}`,
161
+ lock: `${SANDBOX_LOCK_PREFIX}${env}`,
162
+ users: `${USERS_PREFIX}${env}`,
163
+ intent: `${INTENT_PREFIX}${env}`,
200
164
  };
201
165
  }
202
166
  wait(signal) {
@@ -207,13 +171,13 @@ let SandboxLeases = class SandboxLeases {
207
171
  * `capMs`, the signal's reason when it aborts. Not granted while an exclusive lease, an older
208
172
  * replica's lock token or another caller's intent exists.
209
173
  */
210
- async acquireShared(conv, cap, signal, capMs) {
174
+ async acquireShared(env, cap, signal, capMs) {
211
175
  const token = randomUUID();
212
176
  const deadline = Date.now() + capMs;
213
177
  for (;;) {
214
178
  if (signal.aborted)
215
179
  throw abortReason(signal);
216
- const lease = await this.tryShared(conv, cap, token);
180
+ const lease = await this.tryShared(env, cap, token);
217
181
  if (lease)
218
182
  return lease;
219
183
  if (Date.now() + this.pollMs > deadline)
@@ -227,14 +191,14 @@ let SandboxLeases = class SandboxLeases {
227
191
  * (refreshed while it waits) so new shared leases stop being granted; it is cleared on success
228
192
  * and when the wait ends otherwise.
229
193
  */
230
- async acquireExclusive(conv, signal, capMs, o = {}) {
194
+ async acquireExclusive(env, signal, capMs, o = {}) {
231
195
  const token = randomUUID();
232
196
  const deadline = capMs === undefined ? Number.POSITIVE_INFINITY : Date.now() + capMs;
233
197
  try {
234
198
  for (;;) {
235
199
  if (signal.aborted)
236
200
  throw abortReason(signal);
237
- const lease = await this.tryExclusive(conv, { token, intent: o.intent === true });
201
+ const lease = await this.tryExclusive(env, { token, intent: o.intent === true });
238
202
  if (lease)
239
203
  return lease;
240
204
  if (Date.now() + this.pollMs > deadline)
@@ -244,7 +208,7 @@ let SandboxLeases = class SandboxLeases {
244
208
  }
245
209
  catch (e) {
246
210
  if (o.intent) {
247
- await this.clearIntent(conv, token).catch((err) => this.log.warn("cannot clear sandbox intent", { conversationId: conv, err }));
211
+ await this.clearIntent(env, token).catch((err) => this.log.warn("cannot clear sandbox intent", { environmentId: env, err }));
248
212
  }
249
213
  throw e;
250
214
  }
@@ -254,61 +218,53 @@ let SandboxLeases = class SandboxLeases {
254
218
  * intent. With `o.token` the lease (and, when `o.intent`, the intent set on failure) carries that
255
219
  * token, so one waiter can alternate between this and {@link tryShared} with the same token.
256
220
  */
257
- async tryExclusive(conv, o = {}) {
258
- const h = await this.locks.tryExclusive(this.keys(conv), o.token ?? randomUUID(), this.ttlMs, o.intent ? this.intentTtlMs : undefined);
259
- return h ? this.held(conv, h) : null;
221
+ async tryExclusive(env, o = {}) {
222
+ const h = await this.locks.tryExclusive(this.keys(env), o.token ?? randomUUID(), this.ttlMs, o.intent ? this.intentTtlMs : undefined);
223
+ return h ? this.held(env, h) : null;
260
224
  }
261
225
  /**
262
226
  * One try at a shared lease (`cap` holders at most); null when it is not granted. `token` is the
263
227
  * lease token; a waiter that set an intent with the same token is let through its own intent
264
228
  * (it should then {@link clearIntent}).
265
229
  */
266
- async tryShared(conv, cap, token = randomUUID()) {
267
- const h = await this.locks.tryShared(this.keys(conv), token, cap, this.ttlMs);
268
- return h ? this.held(conv, h) : null;
269
- }
270
- /** Deletes the conversation's intent when it is `token`'s. */
271
- async clearIntent(conv, token) {
272
- await this.locks.releaseIf(this.keys(conv).intent, token);
230
+ async tryShared(env, cap, token = randomUUID()) {
231
+ const h = await this.locks.tryShared(this.keys(env), token, cap, this.ttlMs);
232
+ return h ? this.held(env, h) : null;
273
233
  }
274
- /** Whether the single busy marker of a kernel before phase C is present (v2 does not count). */
275
- async legacyMarker(conv) {
276
- const v = await this.redis.get(`${SANDBOX_BUSY_PREFIX}${conv}`);
277
- return v !== null && v !== BUSY_V2;
234
+ /** Deletes the environment's intent when it is `token`'s. */
235
+ async clearIntent(env, token) {
236
+ await this.locks.releaseIf(this.keys(env).intent, token);
278
237
  }
279
- /** Live shared leases of the conversation. */
280
- sharedCount(conv) {
281
- return this.locks.sharedCount(this.keys(conv));
238
+ /** Live shared leases of the environment. */
239
+ sharedCount(env) {
240
+ return this.locks.sharedCount(this.keys(env));
282
241
  }
283
242
  /**
284
243
  * Records (or refreshes) a holder that may run commands (before its provider calls); `ttlMs`
285
- * bounds the record. Also keeps the v2 busy marker for older replicas ({@link BUSY_V2}).
244
+ * bounds the record.
286
245
  */
287
- async registerHolder(conv, token, ttlMs) {
288
- await this.redis.eval(REGISTER, 2, `${HOLDERS_PREFIX}${conv}`, `${SANDBOX_BUSY_PREFIX}${conv}`, token, ttlMs);
246
+ async registerHolder(env, token, ttlMs) {
247
+ await this.redis.eval(REGISTER, 1, `${HOLDERS_PREFIX}${env}`, token, ttlMs);
289
248
  }
290
- /** Deletes a holder record (after its provider calls); the v2 marker goes with the last one. */
291
- async unregisterHolder(conv, token) {
292
- await this.redis.eval(UNREGISTER, 2, `${HOLDERS_PREFIX}${conv}`, `${SANDBOX_BUSY_PREFIX}${conv}`, token);
249
+ /** Deletes a holder record (after its provider calls). */
250
+ async unregisterHolder(env, token) {
251
+ await this.redis.hdel(`${HOLDERS_PREFIX}${env}`, token);
293
252
  }
294
253
  /**
295
- * Tags of holders without a live lease, plus whether an older kernel's single busy marker was
296
- * present. Atomically claims them (removes the fields) so only one caller kills. That marker is
297
- * claimed only when `exclusiveToken` is the caller's exclusive lease (no shared lease live).
254
+ * Tags of holders without a live lease, atomically claimed (their fields removed) so only one
255
+ * caller kills them.
298
256
  */
299
- async claimDeadHolders(conv, exclusiveToken) {
300
- const { lock, users } = this.keys(conv);
301
- const r = (await this.redis.eval(CLAIM, 4, lock, users, `${HOLDERS_PREFIX}${conv}`, `${SANDBOX_BUSY_PREFIX}${conv}`, exclusiveToken ?? ""));
302
- const [legacy, ...tags] = r;
303
- return { tags, legacyMarker: Number(legacy) === 1 };
257
+ async claimDeadHolders(env) {
258
+ const { lock, users } = this.keys(env);
259
+ return (await this.redis.eval(CLAIM, 3, lock, users, `${HOLDERS_PREFIX}${env}`));
304
260
  }
305
261
  /**
306
262
  * A short lease on one path of the sandbox (the kernel's own read-modify-write of a file); waits
307
263
  * up to `capMs`, then throws {@link SandboxPathBusyError}. A {@link LockService.hold} lease
308
264
  * (renewed every TTL / 3): when it is lost its `signal` aborts.
309
265
  */
310
- async pathLease(conv, path, signal, capMs) {
311
- const key = `${PATH_PREFIX}${conv}:${createHash("sha256").update(path).digest("hex")}`;
266
+ async pathLease(env, path, signal, capMs) {
267
+ const key = `${PATH_PREFIX}${env}:${createHash("sha256").update(path).digest("hex")}`;
312
268
  const token = randomUUID();
313
269
  const deadline = Date.now() + capMs;
314
270
  let h;
@@ -323,19 +279,19 @@ let SandboxLeases = class SandboxLeases {
323
279
  await this.wait(signal);
324
280
  }
325
281
  const held = h;
326
- return { signal: lostSignal(held.lost, conv), release: () => held.release() };
282
+ return { signal: lostSignal(held.lost, env), release: () => held.release() };
327
283
  }
328
284
  /** A sandbox lease over a held {@link SharedLeaseHandle}, as its current kind. */
329
- held(conv, h) {
330
- return this.view(conv, h, lostSignal(h.lost, conv), h.kind);
285
+ held(env, h) {
286
+ return this.view(env, h, lostSignal(h.lost, env), h.kind);
331
287
  }
332
288
  /** A lease view of `h` as `kind`; a view stops working once the lease changes kind. */
333
- view(conv, h, signal, kind) {
289
+ view(env, h, signal, kind) {
334
290
  const current = () => h.kind === kind;
335
291
  return {
336
292
  kind,
337
293
  token: h.token,
338
- conversationId: conv,
294
+ environmentId: env,
339
295
  signal,
340
296
  // a Redis error is warned, not thrown: the deadline decides whether the lease is lost
341
297
  renew: async () => {
@@ -345,7 +301,7 @@ let SandboxLeases = class SandboxLeases {
345
301
  return await h.renew();
346
302
  }
347
303
  catch (err) {
348
- this.log.warn("sandbox lease renew failed", { conversationId: conv, err });
304
+ this.log.warn("sandbox lease renew failed", { environmentId: env, err });
349
305
  return !signal.aborted;
350
306
  }
351
307
  },
@@ -358,8 +314,8 @@ let SandboxLeases = class SandboxLeases {
358
314
  if (signal.aborted)
359
315
  throw abortReason(signal);
360
316
  if (!(await h.downgrade()))
361
- throw new SandboxLockLostError(conv);
362
- return this.view(conv, h, signal, "shared");
317
+ throw new SandboxLockLostError(env);
318
+ return this.view(env, h, signal, "shared");
363
319
  },
364
320
  };
365
321
  }
@@ -1,12 +1,12 @@
1
1
  import { type SandboxProvider } from "@capybara-hq/plugin-sdk";
2
2
  import { ExtensionRegistry } from "../extensions/registry.js";
3
- /** 当前的 `sandbox@1` 提供方:插件名与实现。 */
3
+ /** 当前的 `sandbox@2` 提供方:插件名与实现。 */
4
4
  export interface SandboxProviderEntry {
5
5
  plugin: string;
6
6
  impl: SandboxProvider;
7
7
  }
8
8
  /**
9
- * The `sandbox@1` providers of this process, read from the {@link ExtensionRegistry} at every
9
+ * The `sandbox@2` providers of this process, read from the {@link ExtensionRegistry} at every
10
10
  * call: providers are ready only after the extension load, and change with installs.
11
11
  */
12
12
  export declare class SandboxProviders {
@@ -11,7 +11,7 @@ import { SANDBOX_EXTENSION_POINT } from "@capybara-hq/plugin-sdk";
11
11
  import { Inject, Injectable } from "@nestjs/common";
12
12
  import { ExtensionRegistry } from "../extensions/registry.js";
13
13
  /**
14
- * The `sandbox@1` providers of this process, read from the {@link ExtensionRegistry} at every
14
+ * The `sandbox@2` providers of this process, read from the {@link ExtensionRegistry} at every
15
15
  * call: providers are ready only after the extension load, and change with installs.
16
16
  */
17
17
  let SandboxProviders = class SandboxProviders {
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Sandboxes: the one {@link SandboxService} (a conversation's sandbox over the `sandbox@1`
3
- * provider, with the shared / exclusive leases of {@link SandboxLeases}) and the producer of the
2
+ * Sandboxes: the one {@link SandboxService} (an environment's file system and instance over the
3
+ * `sandbox@2` provider, with the shared / exclusive leases of {@link SandboxLeases}) and the
4
+ * producer of the
4
5
  * one-off `sandbox-destroy-for` jobs (`MaintenanceProcessor` consumes them). The sweeps
5
6
  * (`SandboxSweepJobs`) are the worker role's (`WorkerModule`).
6
7
  */
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Module } from "@nestjs/common";
8
+ import { BackgroundStoreModule } from "../background/store.module.js";
8
9
  import { ExtensionRegistryModule } from "../extensions/registry.js";
9
10
  import { QueueModule } from "../infra/queue/queue.module.js";
10
11
  import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
@@ -13,8 +14,9 @@ import { SandboxLeases } from "./leases.js";
13
14
  import { SandboxProviders } from "./providers.js";
14
15
  import { SandboxService } from "./sandbox.service.js";
15
16
  /**
16
- * Sandboxes: the one {@link SandboxService} (a conversation's sandbox over the `sandbox@1`
17
- * provider, with the shared / exclusive leases of {@link SandboxLeases}) and the producer of the
17
+ * Sandboxes: the one {@link SandboxService} (an environment's file system and instance over the
18
+ * `sandbox@2` provider, with the shared / exclusive leases of {@link SandboxLeases}) and the
19
+ * producer of the
18
20
  * one-off `sandbox-destroy-for` jobs (`MaintenanceProcessor` consumes them). The sweeps
19
21
  * (`SandboxSweepJobs`) are the worker role's (`WorkerModule`).
20
22
  */
@@ -22,9 +24,13 @@ let SandboxModule = class SandboxModule {
22
24
  };
23
25
  SandboxModule = __decorate([
24
26
  Module({
25
- imports: [ExtensionRegistryModule, QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME)],
27
+ imports: [
28
+ ExtensionRegistryModule,
29
+ BackgroundStoreModule,
30
+ QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
31
+ ],
26
32
  providers: [SandboxProviders, SandboxLeases, SandboxService, SandboxJobs],
27
- exports: [SandboxService, SandboxJobs],
33
+ exports: [SandboxService, SandboxJobs, SandboxProviders],
28
34
  })
29
35
  ], SandboxModule);
30
36
  export { SandboxModule };