windows-development-sandbox 1.18.4 → 1.23.0

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 (438) hide show
  1. package/README.md +1 -1
  2. package/config.example.json +17 -1
  3. package/dist/app/features/access/access.def.js +5 -2
  4. package/dist/app/features/access/access.run.js +7 -3
  5. package/dist/app/features/accounts/accounts.def.d.ts +33 -1
  6. package/dist/app/features/accounts/accounts.def.js +10 -4
  7. package/dist/app/features/accounts/accounts.run.d.ts +2 -0
  8. package/dist/app/features/accounts/accounts.run.js +7 -2
  9. package/dist/app/features/accounts/services.def.d.ts +7 -1
  10. package/dist/app/features/accounts/services.def.js +19 -16
  11. package/dist/app/features/accounts/services.run.d.ts +2 -0
  12. package/dist/app/features/accounts/services.run.js +44 -16
  13. package/dist/app/features/agent-commands/agent-commands.def.d.ts +37 -0
  14. package/dist/app/features/agent-commands/agent-commands.def.js +91 -0
  15. package/dist/app/features/agent-commands/agent-commands.run.d.ts +28 -0
  16. package/dist/app/features/agent-commands/agent-commands.run.js +35 -0
  17. package/dist/app/features/agent-commands/index.d.ts +2 -0
  18. package/dist/app/features/agent-commands/index.js +3 -0
  19. package/dist/app/features/agents/agents.def.d.ts +14 -1
  20. package/dist/app/features/agents/agents.def.js +61 -6
  21. package/dist/app/features/agents/agents.run.d.ts +1 -0
  22. package/dist/app/features/agents/agents.run.js +8 -1
  23. package/dist/app/features/agents/claude-env.def.d.ts +36 -0
  24. package/dist/app/features/agents/claude-env.def.js +305 -0
  25. package/dist/app/features/agents/env.def.d.ts +163 -0
  26. package/dist/app/features/agents/env.def.js +184 -0
  27. package/dist/app/features/agents/env.run.d.ts +43 -0
  28. package/dist/app/features/agents/env.run.js +86 -0
  29. package/dist/app/features/agents/index.d.ts +2 -0
  30. package/dist/app/features/agents/index.js +2 -0
  31. package/dist/app/features/defs.d.ts +171 -3
  32. package/dist/app/features/defs.js +9 -0
  33. package/dist/app/features/engine/engine.run.js +1 -1
  34. package/dist/app/features/github/github.def.d.ts +44 -3
  35. package/dist/app/features/github/github.def.js +145 -63
  36. package/dist/app/features/github/github.run.d.ts +9 -2
  37. package/dist/app/features/github/github.run.js +43 -5
  38. package/dist/app/features/health/health.def.js +8 -2
  39. package/dist/app/features/logs/logs.def.js +0 -8
  40. package/dist/app/features/projects/projects.def.js +2 -2
  41. package/dist/app/features/projects/projects.run.js +5 -5
  42. package/dist/app/features/sandbox/sandbox.def.js +7 -3
  43. package/dist/app/features/sessions/sessions.def.d.ts +4 -4
  44. package/dist/app/features/sessions/sessions.def.js +0 -5
  45. package/dist/app/features/sessions/sessions.run.d.ts +1 -1
  46. package/dist/app/features/sessions/sessions.run.js +2 -2
  47. package/dist/app/features/settings/categories.def.js +7 -2
  48. package/dist/app/features/settings/settings-rows.js +6 -2
  49. package/dist/app/features/settings/settings.def.js +1 -1
  50. package/dist/app/features/settings/settings.run.d.ts +8 -0
  51. package/dist/app/features/settings/settings.run.js +12 -3
  52. package/dist/app/features/storage/storage.run.js +18 -9
  53. package/dist/app/features/updates/update-lines.js +2 -2
  54. package/dist/app/features/updates/updates.def.js +1 -1
  55. package/dist/app/features/updates/updates.run.js +13 -3
  56. package/dist/app/features/vpn/vpn.def.d.ts +33 -0
  57. package/dist/app/features/vpn/vpn.def.js +30 -6
  58. package/dist/app/features/vpn/vpn.run.d.ts +11 -0
  59. package/dist/app/features/vpn/vpn.run.js +4 -1
  60. package/dist/app/features/web/web.def.js +2 -2
  61. package/dist/app/features/web/web.run.js +12 -4
  62. package/dist/app/kernel/errors.d.ts +7 -0
  63. package/dist/app/kernel/errors.js +18 -3
  64. package/dist/app/kernel/rpc.d.ts +6 -1
  65. package/dist/app/kernel/view.d.ts +11 -1
  66. package/dist/app/registry.js +7 -1
  67. package/dist/bin/agent-sandbox.js +2 -2
  68. package/dist/bin/{chunk-N4GXYTLV.js → chunk-JETGP2C3.js} +239 -72
  69. package/dist/bin/{chunk-MY7NLQQY.js → chunk-XZKOPGNH.js} +1 -1
  70. package/dist/bin/{chunk-FRPLQLSY.js → chunk-ZTTOF5V3.js} +6566 -4964
  71. package/dist/bin/claude-host.js +2 -2
  72. package/dist/bin/claude-sbx.js +2 -2
  73. package/dist/bin/codex-sbx.js +2 -2
  74. package/dist/bin/gemini-sbx.js +2 -2
  75. package/dist/bin/sandbox.js +2 -2
  76. package/dist/bin/sbx-hide.js +2 -2
  77. package/dist/bin/sbx-show.js +2 -2
  78. package/dist/cli/commands/agent-commands.d.ts +0 -1
  79. package/dist/cli/commands/agent-commands.js +2 -32
  80. package/dist/cli/commands/index.d.ts +1 -1
  81. package/dist/cli/commands/index.js +1 -1
  82. package/dist/cli/commands/launch/launch.js +2 -2
  83. package/dist/cli/commands/registry.js +3 -2
  84. package/dist/cli/manifest.d.ts +3 -3
  85. package/dist/cli/manifest.js +3 -2
  86. package/dist/cli/menu/coverage-exempt.d.ts +17 -0
  87. package/dist/cli/menu/coverage-exempt.js +61 -0
  88. package/dist/cli/menu/io-menu.d.ts +2 -0
  89. package/dist/cli/menu/io-menu.js +50 -5
  90. package/dist/cli/menu/menu.d.ts +1 -1
  91. package/dist/cli/menu/menu.js +3 -3
  92. package/dist/cli/menu/pages/accounts-page.js +1 -1
  93. package/dist/cli/menu/pages/agents-page.d.ts +7 -2
  94. package/dist/cli/menu/pages/agents-page.js +75 -13
  95. package/dist/cli/menu/pages/maintenance-page.d.ts +6 -0
  96. package/dist/cli/menu/pages/maintenance-page.js +10 -4
  97. package/dist/cli/menu/pages/sessions-page.d.ts +2 -0
  98. package/dist/cli/menu/pages/sessions-page.js +12 -4
  99. package/dist/cli/menu/pages/settings-page.js +13 -1
  100. package/dist/cli/menu/remote-menu.js +1 -1
  101. package/dist/cli/menu/shell.d.ts +5 -0
  102. package/dist/cli/menu/shell.js +13 -0
  103. package/dist/cli/menu/views.js +2 -1
  104. package/dist/cli/report.js +2 -0
  105. package/dist/cli/services/agent-commands-service.d.ts +2 -0
  106. package/dist/cli/services/agent-commands-service.js +13 -7
  107. package/dist/cli/services/vpn-service.d.ts +5 -1
  108. package/dist/cli/services/vpn-service.js +6 -1
  109. package/dist/cli/tui/app.d.ts +5 -0
  110. package/dist/cli/tui/app.js +2 -0
  111. package/dist/cli/tui/dialogs/text-screen.js +2 -1
  112. package/dist/cli/tui/terminal.js +3 -1
  113. package/dist/core/config/defaults.js +12 -1
  114. package/dist/core/detect/toolchains.js +9 -0
  115. package/dist/core/disk.d.ts +1 -5
  116. package/dist/core/disk.js +1 -16
  117. package/dist/core/schema/accounts.d.ts +6 -0
  118. package/dist/core/schema/accounts.js +13 -11
  119. package/dist/core/schema/codex.d.ts +29 -0
  120. package/dist/core/schema/codex.js +24 -0
  121. package/dist/core/schema/config.d.ts +58 -14
  122. package/dist/core/schema/config.js +6 -4
  123. package/dist/core/schema/github.js +1 -1
  124. package/dist/core/schema/index.d.ts +1 -0
  125. package/dist/core/schema/index.js +1 -0
  126. package/dist/core/schema/profile.js +8 -4
  127. package/dist/core/schema/resume.js +1 -1
  128. package/dist/core/schema/sandbox.js +3 -3
  129. package/dist/core/schema/toolchains.d.ts +4 -0
  130. package/dist/core/schema/toolchains.js +3 -0
  131. package/dist/core/schema/vpn.js +1 -1
  132. package/dist/core/schema/web.js +3 -3
  133. package/dist/core/types.d.ts +8 -0
  134. package/dist/core/util/errors.d.ts +11 -1
  135. package/dist/core/util/errors.js +7 -1
  136. package/dist/core/util/index.d.ts +1 -1
  137. package/dist/core/util/index.js +1 -1
  138. package/dist/guest/accounts/adapter.d.ts +2 -0
  139. package/dist/guest/accounts/adapters.js +4 -0
  140. package/dist/guest/accounts/apply.d.ts +10 -6
  141. package/dist/guest/accounts/kinds/cfx.d.ts +7 -0
  142. package/dist/guest/accounts/kinds/cfx.js +33 -3
  143. package/dist/guest/accounts/kinds/comet.d.ts +7 -0
  144. package/dist/guest/accounts/kinds/comet.js +50 -0
  145. package/dist/guest/accounts/kinds/perplexity.d.ts +2 -0
  146. package/dist/guest/accounts/kinds/perplexity.js +12 -0
  147. package/dist/guest/accounts/watch.d.ts +2 -0
  148. package/dist/guest/accounts/watch.js +12 -2
  149. package/dist/guest/agents/agent-files.d.ts +26 -6
  150. package/dist/guest/agents/agent-files.js +84 -14
  151. package/dist/guest/agents/agent-installer.js +1 -1
  152. package/dist/guest/agents/local-state.d.ts +5 -2
  153. package/dist/guest/agents/local-state.js +24 -10
  154. package/dist/guest/agents/profile-links.d.ts +2 -0
  155. package/dist/guest/agents/profile-links.js +18 -4
  156. package/dist/guest/apps/after-install.js +19 -0
  157. package/dist/guest/apps/app-installer.d.ts +11 -0
  158. package/dist/guest/apps/app-installer.js +69 -6
  159. package/dist/guest/apps/comet-unpack.d.ts +20 -0
  160. package/dist/guest/apps/comet-unpack.js +127 -0
  161. package/dist/guest/apps/index.d.ts +1 -1
  162. package/dist/guest/apps/index.js +1 -1
  163. package/dist/guest/apps/resolvers-agents-web.d.ts +2 -0
  164. package/dist/guest/apps/resolvers-agents-web.js +7 -0
  165. package/dist/guest/apps/resolvers.js +2 -0
  166. package/dist/guest/apps/shortcuts.d.ts +2 -0
  167. package/dist/guest/apps/shortcuts.js +1 -0
  168. package/dist/guest/apps/unpack.js +14 -4
  169. package/dist/guest/boot/boot.d.ts +45 -16
  170. package/dist/guest/boot/boot.js +325 -149
  171. package/dist/guest/boot/graph.d.ts +252 -0
  172. package/dist/guest/boot/graph.js +257 -0
  173. package/dist/guest/boot/guide-lines.d.ts +25 -0
  174. package/dist/guest/boot/guide-lines.js +41 -0
  175. package/dist/guest/boot/guide.d.ts +1 -4
  176. package/dist/guest/boot/guide.js +6 -8
  177. package/dist/guest/boot/runner.d.ts +77 -0
  178. package/dist/guest/boot/runner.js +215 -0
  179. package/dist/guest/browser/cdp.d.ts +71 -0
  180. package/dist/guest/browser/cdp.js +306 -0
  181. package/dist/guest/browser/comet.d.ts +28 -0
  182. package/dist/guest/browser/comet.js +155 -0
  183. package/dist/guest/daemon/project-provisioner.js +6 -1
  184. package/dist/guest/daemon/sessions.js +2 -1
  185. package/dist/guest/devtools/fivem.d.ts +1 -1
  186. package/dist/guest/devtools/fivem.js +243 -3
  187. package/dist/guest/entries/daemon.js +2 -0
  188. package/dist/guest/runtime/log.d.ts +12 -0
  189. package/dist/guest/runtime/log.js +29 -5
  190. package/dist/guest/runtime/pools.d.ts +24 -0
  191. package/dist/guest/runtime/pools.js +60 -0
  192. package/dist/guest/runtime/process.d.ts +4 -0
  193. package/dist/guest/runtime/process.js +38 -1
  194. package/dist/guest/runtime/status.d.ts +5 -1
  195. package/dist/guest/runtime/status.js +19 -0
  196. package/dist/guest/setup/addon-mcp.d.ts +1 -1
  197. package/dist/guest/setup/addon-mcp.js +52 -12
  198. package/dist/guest/setup/agent-addons.d.ts +3 -2
  199. package/dist/guest/setup/agent-addons.js +12 -3
  200. package/dist/guest/setup/environment.d.ts +1 -1
  201. package/dist/guest/setup/environment.js +25 -12
  202. package/dist/guest/setup/headroom.d.ts +8 -3
  203. package/dist/guest/setup/headroom.js +44 -15
  204. package/dist/guest/setup/path-plan.d.ts +28 -0
  205. package/dist/guest/setup/path-plan.js +69 -2
  206. package/dist/guest/setup/shell-path.d.ts +1 -1
  207. package/dist/guest/setup/shell-path.js +3 -3
  208. package/dist/guest/toolchains/fivem/artifacts.d.ts +48 -1
  209. package/dist/guest/toolchains/fivem/artifacts.js +97 -4
  210. package/dist/guest/toolchains/fivem/fivem.d.ts +32 -1
  211. package/dist/guest/toolchains/fivem/fivem.js +168 -3
  212. package/dist/guest/toolchains/fivem/scaffold.d.ts +35 -0
  213. package/dist/guest/toolchains/fivem/scaffold.js +105 -0
  214. package/dist/guest/toolchains/fivem/serve-plan.d.ts +34 -0
  215. package/dist/guest/toolchains/fivem/serve-plan.js +61 -0
  216. package/dist/guest/toolchains/installers.d.ts +6 -10
  217. package/dist/guest/toolchains/installers.js +4 -12
  218. package/dist/guest/toolchains/languages/go.js +1 -1
  219. package/dist/guest/toolchains/languages/node.js +2 -1
  220. package/dist/guest/toolchains/languages/php.d.ts +2 -0
  221. package/dist/guest/toolchains/languages/php.js +13 -1
  222. package/dist/guest/toolchains/languages/python-tools.js +1 -1
  223. package/dist/guest/toolchains/languages/ruby.js +1 -1
  224. package/dist/guest/toolchains/native/autosdk.d.ts +3 -0
  225. package/dist/guest/toolchains/native/autosdk.js +50 -0
  226. package/dist/guest/toolchains/native/binstall.js +1 -1
  227. package/dist/guest/toolchains/native/msvc/packages.js +10 -4
  228. package/dist/guest/toolchains/native/rust.d.ts +2 -0
  229. package/dist/guest/toolchains/native/rust.js +11 -4
  230. package/dist/guest/toolchains/native/unreal.d.ts +2 -0
  231. package/dist/guest/toolchains/native/unreal.js +19 -6
  232. package/dist/guest/toolchains/native/vcruntime.d.ts +2 -3
  233. package/dist/guest/toolchains/native/vcruntime.js +12 -7
  234. package/dist/guest/toolchains/native/visual-studio.d.ts +5 -2
  235. package/dist/guest/toolchains/native/visual-studio.js +127 -25
  236. package/dist/guest/toolchains/native/vs-request.d.ts +23 -0
  237. package/dist/guest/toolchains/native/vs-request.js +62 -1
  238. package/dist/guest/toolchains/not-yet.d.ts +1 -1
  239. package/dist/guest/toolchains/not-yet.js +3 -3
  240. package/dist/guest/toolchains/persisted.js +2 -7
  241. package/dist/guest/toolchains/plan.js +27 -11
  242. package/dist/guest/toolchains/scheduler.d.ts +2 -21
  243. package/dist/guest/toolchains/scheduler.js +7 -121
  244. package/dist/guest/toolchains/setup.d.ts +15 -2
  245. package/dist/guest/toolchains/setup.js +39 -20
  246. package/dist/guest/toolchains/signature.d.ts +5 -0
  247. package/dist/guest/toolchains/signature.js +22 -0
  248. package/dist/guest/toolchains/split.d.ts +28 -0
  249. package/dist/guest/toolchains/split.js +60 -0
  250. package/dist/guest/toolchains/steam/client.js +2 -1
  251. package/dist/guest/toolchains/step-scheduler.d.ts +51 -0
  252. package/dist/guest/toolchains/step-scheduler.js +147 -0
  253. package/dist/guest/toolchains/step.d.ts +13 -0
  254. package/dist/guest/toolchains/tools/git.js +18 -0
  255. package/dist/guest/vpn/openvpn.js +3 -4
  256. package/dist/guest/vpn/tunnel.d.ts +3 -0
  257. package/dist/guest/vpn/tunnel.js +10 -12
  258. package/dist/guest/vpn/vpn.js +6 -1
  259. package/dist/guest/vpn/wireguard.js +11 -4
  260. package/dist/host/accounts/deliver.js +7 -0
  261. package/dist/host/accounts/handoff.js +2 -6
  262. package/dist/host/accounts/index.d.ts +1 -1
  263. package/dist/host/accounts/index.js +1 -1
  264. package/dist/host/accounts/kinds/cfx.d.ts +1 -1
  265. package/dist/host/accounts/kinds/cfx.js +47 -4
  266. package/dist/host/accounts/kinds/comet.d.ts +2 -0
  267. package/dist/host/accounts/kinds/comet.js +6 -0
  268. package/dist/host/accounts/kinds/perplexity.d.ts +2 -0
  269. package/dist/host/accounts/kinds/perplexity.js +30 -0
  270. package/dist/host/accounts/leases.d.ts +9 -3
  271. package/dist/host/accounts/leases.js +13 -2
  272. package/dist/host/accounts/source.d.ts +7 -1
  273. package/dist/host/accounts/source.js +28 -1
  274. package/dist/host/accounts/sources.js +4 -0
  275. package/dist/host/agent-commands/commands.js +1 -1
  276. package/dist/host/agent-commands/forwarders.d.ts +14 -2
  277. package/dist/host/agent-commands/forwarders.js +31 -13
  278. package/dist/host/agent-commands/reconcile.d.ts +2 -1
  279. package/dist/host/agent-commands/reconcile.js +7 -8
  280. package/dist/host/agent-commands/user-path.d.ts +5 -0
  281. package/dist/host/agent-commands/user-path.js +13 -0
  282. package/dist/host/github/deliver.d.ts +1 -1
  283. package/dist/host/github/deliver.js +20 -1
  284. package/dist/host/github/index.d.ts +2 -1
  285. package/dist/host/github/index.js +1 -0
  286. package/dist/host/github/token.d.ts +13 -1
  287. package/dist/host/github/token.js +19 -2
  288. package/dist/host/github/verify.d.ts +27 -0
  289. package/dist/host/github/verify.js +61 -0
  290. package/dist/host/launch/hints/fivem.d.ts +3 -1
  291. package/dist/host/launch/hints/fivem.js +68 -2
  292. package/dist/host/launch/session-file.js +5 -0
  293. package/dist/host/launch/toolchains.d.ts +2 -1
  294. package/dist/host/launch/toolchains.js +5 -3
  295. package/dist/host/profile/accounts.js +2 -4
  296. package/dist/host/profile/claude-login.d.ts +3 -2
  297. package/dist/host/profile/claude-login.js +3 -13
  298. package/dist/host/vpn/index.d.ts +2 -1
  299. package/dist/host/vpn/index.js +2 -1
  300. package/dist/host/vpn/last.d.ts +28 -0
  301. package/dist/host/vpn/last.js +43 -0
  302. package/dist/host/vpn/login.d.ts +3 -1
  303. package/dist/host/vpn/login.js +17 -3
  304. package/dist/host/vpn/nordvpn.d.ts +2 -4
  305. package/dist/host/vpn/nordvpn.js +2 -24
  306. package/dist/runtime/agent.js +433 -90
  307. package/dist/runtime/daemon.js +3378 -1546
  308. package/dist/runtime/db.js +363 -90
  309. package/dist/runtime/main.js +5134 -2096
  310. package/dist/runtime/netproxy.js +308 -69
  311. package/dist/runtime/tool.js +2867 -1765
  312. package/dist/runtime/view.js +308 -69
  313. package/dist/selftest/agent-commands.test.js +45 -7
  314. package/dist/selftest/agent-paths.test.js +40 -13
  315. package/dist/selftest/agent-settings.test.d.ts +2 -0
  316. package/dist/selftest/agent-settings.test.js +94 -0
  317. package/dist/selftest/agents-web.test.d.ts +2 -0
  318. package/dist/selftest/agents-web.test.js +647 -0
  319. package/dist/selftest/app.test.js +7 -3
  320. package/dist/selftest/boot-runner.test.d.ts +2 -0
  321. package/dist/selftest/boot-runner.test.js +456 -0
  322. package/dist/selftest/channel.test.js +15 -0
  323. package/dist/selftest/cli.test.js +4 -0
  324. package/dist/selftest/fivem.test.js +249 -3
  325. package/dist/selftest/github.test.js +94 -9
  326. package/dist/selftest/guest-boot.test.js +3 -0
  327. package/dist/selftest/health.test.js +1 -1
  328. package/dist/selftest/index.js +10 -0
  329. package/dist/selftest/layout.test.js +5 -0
  330. package/dist/selftest/menu-coverage.test.d.ts +2 -0
  331. package/dist/selftest/menu-coverage.test.js +46 -0
  332. package/dist/selftest/menu-screens.js +37 -1
  333. package/dist/selftest/menu.test.js +5 -3
  334. package/dist/selftest/pc-installs.test.js +5 -0
  335. package/dist/selftest/persisted-installs.test.js +72 -0
  336. package/dist/selftest/service-accounts.test.js +3 -2
  337. package/dist/selftest/support/engine-golden.js +28 -1
  338. package/dist/selftest/support/fixtures.d.ts +15 -0
  339. package/dist/selftest/support/web-preview.d.ts +34 -1
  340. package/dist/selftest/support/web-preview.js +21 -18
  341. package/dist/selftest/toolchains.test.js +23 -1
  342. package/dist/selftest/ui-text.test.d.ts +7 -0
  343. package/dist/selftest/ui-text.test.js +300 -0
  344. package/dist/selftest/vpn.test.js +51 -3
  345. package/dist/shared/accounts/anthropic.d.ts +5 -0
  346. package/dist/shared/accounts/anthropic.js +15 -0
  347. package/dist/shared/accounts/index.d.ts +3 -0
  348. package/dist/shared/accounts/index.js +3 -0
  349. package/dist/shared/accounts/kinds/comet.d.ts +12 -0
  350. package/dist/shared/accounts/kinds/comet.js +64 -0
  351. package/dist/shared/accounts/kinds/perplexity.d.ts +8 -0
  352. package/dist/shared/accounts/kinds/perplexity.js +37 -0
  353. package/dist/shared/accounts/kinds.d.ts +24 -5
  354. package/dist/shared/accounts/kinds.js +86 -4
  355. package/dist/shared/accounts/payloads.d.ts +81 -0
  356. package/dist/shared/accounts/payloads.js +39 -1
  357. package/dist/shared/apps/agent-addons.d.ts +33 -5
  358. package/dist/shared/apps/agent-addons.js +95 -3
  359. package/dist/shared/apps/catalogue-agents-web.d.ts +14 -0
  360. package/dist/shared/apps/catalogue-agents-web.js +112 -0
  361. package/dist/shared/apps/catalogue-modding.js +32 -1
  362. package/dist/shared/apps/catalogue.d.ts +27 -3
  363. package/dist/shared/apps/catalogue.js +2 -1
  364. package/dist/shared/apps/index.d.ts +3 -1
  365. package/dist/shared/apps/index.js +3 -1
  366. package/dist/shared/channel/schema.d.ts +40 -3
  367. package/dist/shared/channel/schema.js +9 -0
  368. package/dist/shared/channel/secrets.d.ts +19 -0
  369. package/dist/shared/concurrency/index.d.ts +3 -0
  370. package/dist/shared/concurrency/index.js +3 -0
  371. package/dist/shared/concurrency/installer-retry.d.ts +6 -0
  372. package/dist/shared/concurrency/installer-retry.js +10 -0
  373. package/dist/shared/concurrency/limiter.d.ts +19 -0
  374. package/dist/shared/concurrency/limiter.js +67 -0
  375. package/dist/shared/concurrency/pools.d.ts +7 -0
  376. package/dist/shared/concurrency/pools.js +9 -0
  377. package/dist/shared/download/archive.d.ts +2 -0
  378. package/dist/shared/download/archive.js +11 -1
  379. package/dist/shared/download/bounded-fetch.d.ts +13 -0
  380. package/dist/shared/download/bounded-fetch.js +40 -0
  381. package/dist/shared/download/downloader.d.ts +5 -0
  382. package/dist/shared/download/downloader.js +50 -38
  383. package/dist/shared/download/index.d.ts +2 -1
  384. package/dist/shared/download/index.js +2 -1
  385. package/dist/shared/io/disk.d.ts +9 -0
  386. package/dist/shared/io/disk.js +19 -0
  387. package/dist/shared/io/index.d.ts +1 -0
  388. package/dist/shared/io/index.js +1 -0
  389. package/dist/shared/readiness.d.ts +9 -0
  390. package/dist/shared/readiness.js +11 -0
  391. package/dist/shared/signer.d.ts +24 -0
  392. package/dist/shared/signer.js +15 -0
  393. package/dist/shared/vpn/failure.d.ts +10 -0
  394. package/dist/shared/vpn/failure.js +28 -0
  395. package/dist/sync/watcher.js +2 -0
  396. package/dist/web/index.html +1 -1
  397. package/dist/web/{main-GVZWWP4I.js → main-CCILLX2M.js} +75 -74
  398. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  399. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  400. package/native/csharp/HostTools/Program.cs +14 -1
  401. package/native/csharp/HostTools/UserPath.cs +17 -0
  402. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  403. package/native/scripts/edit-user-path.ps1 +6 -2
  404. package/package.json +1 -1
  405. package/sandbox/addons/browser-use-mcp/requirements.in +1 -0
  406. package/sandbox/addons/browser-use-mcp/requirements.txt +2350 -0
  407. package/sandbox/addons/chrome-devtools-mcp/package-lock.json +38 -0
  408. package/sandbox/addons/chrome-devtools-mcp/package.json +7 -0
  409. package/sandbox/addons/comet-mcp/package-lock.json +1277 -0
  410. package/sandbox/addons/comet-mcp/package.json +7 -0
  411. package/sandbox/addons/perplexity-mcp/package-lock.json +1655 -0
  412. package/sandbox/addons/perplexity-mcp/package.json +7 -0
  413. package/sandbox/scripts/add-firewall-port.ps1 +18 -4
  414. package/sandbox/scripts/get-signature.ps1 +13 -0
  415. package/sandbox/scripts/set-machine-environment.ps1 +30 -15
  416. package/sandbox/templates/fivem/README.txt +6 -2
  417. package/sandbox/templates/fivem/cs/Client/Client.csproj +15 -0
  418. package/sandbox/templates/fivem/cs/Client/ClientMain.cs +20 -0
  419. package/sandbox/templates/fivem/cs/Server/Server.csproj +14 -0
  420. package/sandbox/templates/fivem/cs/Server/ServerMain.cs +20 -0
  421. package/sandbox/templates/fivem/cs/fxmanifest.lua +11 -0
  422. package/sandbox/templates/fivem/js/client.js +12 -0
  423. package/sandbox/templates/fivem/js/fxmanifest.lua +9 -0
  424. package/sandbox/templates/fivem/js/server.js +6 -0
  425. package/sandbox/templates/fivem/lua/client.lua +8 -0
  426. package/sandbox/templates/fivem/lua/fxmanifest.lua +10 -0
  427. package/sandbox/templates/fivem/lua/server.lua +6 -0
  428. package/sandbox/templates/fivem/server.cfg +37 -0
  429. package/sandbox/templates/fivem/ts/build.js +17 -0
  430. package/sandbox/templates/fivem/ts/fxmanifest.lua +9 -0
  431. package/sandbox/templates/fivem/ts/package.json +16 -0
  432. package/sandbox/templates/fivem/ts/src/client/client.ts +12 -0
  433. package/sandbox/templates/fivem/ts/src/client/tsconfig.json +13 -0
  434. package/sandbox/templates/fivem/ts/src/server/server.ts +6 -0
  435. package/sandbox/templates/fivem/ts/src/server/tsconfig.json +13 -0
  436. package/schemas/config.schema.json +120 -27
  437. package/schemas/sandbox-config.schema.json +45 -14
  438. package/sandbox/scripts/get-signer.ps1 +0 -8
@@ -0,0 +1,91 @@
1
+ // Agent commands: typing claude, codex ... on this PC starts them in a hidden sandbox and attaches the terminal.
2
+ // Pure: schemas, labels and the page section; agent-commands.run.ts does the work (files and PATH on this PC).
3
+ import { z } from 'zod';
4
+ import { action, defineOperation, defineQuery } from '../../kernel/index.js';
5
+ export const AgentCommandsStatusSchema = z.object({
6
+ enabled: z.boolean().describe('Typing claude, codex ... starts them in a sandbox (setting agentCommands.enabled)'),
7
+ dir: z.string().describe('The folder with the forwarding commands (first on your PATH while this is on)'),
8
+ found: z
9
+ .array(z.object({
10
+ command: z.string().describe('What you type (claude)'),
11
+ harness: z.string().describe('The agent it starts in the sandbox'),
12
+ real: z.string().describe('The real program on this PC'),
13
+ }))
14
+ .describe('The agents found on this PC'),
15
+ });
16
+ export const agentCommandsStatus = defineQuery({
17
+ id: 'agentCommands.status',
18
+ title: 'Agent commands',
19
+ summary: 'whether claude, codex ... on this PC start in a sandbox, and which agents were found',
20
+ input: z.object({}),
21
+ output: AgentCommandsStatusSchema,
22
+ text: (o) => agentCommandsText(o),
23
+ cli: { name: 'agent-commands', action: 'status', json: true },
24
+ });
25
+ const ChangedSchema = z.object({
26
+ on: z.boolean().describe('Agent commands are on now'),
27
+ commands: z.array(z.string()).describe('The commands that start an agent in a sandbox'),
28
+ message: z.string().describe('What happened'),
29
+ });
30
+ export const agentCommandsOn = defineOperation({
31
+ id: 'agentCommands.on',
32
+ title: 'Turn agent commands on',
33
+ summary: 'make claude, codex ... on this PC start in a hidden sandbox and attach',
34
+ input: z.object({}).strict(),
35
+ output: ChangedSchema,
36
+ text: (o) => o.message,
37
+ cli: { name: 'agent-commands', action: 'on' },
38
+ });
39
+ export const agentCommandsOff = defineOperation({
40
+ id: 'agentCommands.off',
41
+ title: 'Turn agent commands off',
42
+ summary: 'make claude, codex ... on this PC run on the PC again',
43
+ input: z.object({}).strict(),
44
+ output: ChangedSchema,
45
+ text: (o) => o.message,
46
+ cli: { name: 'agent-commands', action: 'off' },
47
+ });
48
+ /** The words printed by `sandbox agent-commands status`. Pure. */
49
+ export function agentCommandsText(s) {
50
+ const lines = ['Agent commands: ' + (s.enabled ? 'on' : 'off') + ' (' + s.dir + ')'];
51
+ if (s.found.length)
52
+ for (const a of s.found)
53
+ lines.push(' ' + a.command + ' sandboxed ' + a.harness + (s.enabled ? '' : ' when on') + ' real: ' + a.real);
54
+ else
55
+ lines.push('No agents found on this PC (claude, codex, gemini ... on your PATH).');
56
+ return lines.join('\n');
57
+ }
58
+ /** What turning them on does, in words (also the message after it). */
59
+ export const AGENT_COMMANDS_EXPLAINED = 'Typing claude, codex ... in a folder on this PC starts that agent in a hidden sandbox and attaches your terminal. Open a new terminal after turning it on or off. To run the real program once, set SANDBOX_AGENT_DIRECT=1.';
60
+ /** The "Agent commands" section of the agents page: the switch, then one row per agent found. Pure. */
61
+ export function agentCommandsSection(s) {
62
+ const toggle = s.enabled
63
+ ? action(agentCommandsOff, {}, { label: 'Turn off', verb: 'turn off', key: 'o' })
64
+ : action(agentCommandsOn, {}, { label: 'Turn on', verb: 'turn on', key: 'o' });
65
+ const rows = [
66
+ {
67
+ id: 'agentCommands',
68
+ label: 'Agent commands',
69
+ hint: s.enabled ? 'on' : 'off',
70
+ tone: s.enabled ? 'ok' : 'muted',
71
+ description: AGENT_COMMANDS_EXPLAINED,
72
+ primary: toggle,
73
+ keys: 'o turns it ' + (s.enabled ? 'off' : 'on') + '.',
74
+ actions: [toggle],
75
+ },
76
+ ...s.found.map((a) => ({
77
+ id: 'agentCommand:' + a.command,
78
+ label: a.command,
79
+ hint: s.enabled ? 'starts in a sandbox' : 'runs on this PC',
80
+ tone: s.enabled ? 'ok' : 'muted',
81
+ description: s.enabled
82
+ ? 'Typing ' + a.command + ' starts ' + a.harness + ' in a sandbox. The real program: ' + a.real
83
+ : 'Typing ' +
84
+ a.command +
85
+ ' runs the real program (' +
86
+ a.real +
87
+ '). Turn agent commands on to use a sandbox instead.',
88
+ })),
89
+ ];
90
+ return { id: 'agentCommands', title: 'Agent commands', items: rows };
91
+ }
@@ -0,0 +1,28 @@
1
+ import { AgentCommandsService } from '../../../cli/services/agent-commands-service.js';
2
+ import { type AgentCommandsStatus } from './agent-commands.def.js';
3
+ export declare function readAgentCommands(service: AgentCommandsService): Promise<AgentCommandsStatus>;
4
+ export declare const agentCommandsStatusRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
5
+ enabled: import("zod").ZodBoolean;
6
+ dir: import("zod").ZodString;
7
+ found: import("zod").ZodArray<import("zod").ZodObject<{
8
+ command: import("zod").ZodString;
9
+ harness: import("zod").ZodString;
10
+ real: import("zod").ZodString;
11
+ }, import("zod/v4/core").$strip>>;
12
+ }, import("zod/v4/core").$strip>, "agentCommands.status">, import("../../../cli/commands/context.js").Context>;
13
+ /** Switches agent commands, with the words that say what changed. */
14
+ export declare function switchAgentCommands(service: AgentCommandsService, on: boolean): {
15
+ on: boolean;
16
+ commands: string[];
17
+ message: string;
18
+ };
19
+ export declare const agentCommandsOnRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
20
+ on: import("zod").ZodBoolean;
21
+ commands: import("zod").ZodArray<import("zod").ZodString>;
22
+ message: import("zod").ZodString;
23
+ }, import("zod/v4/core").$strip>, "agentCommands.on">, import("../../../cli/commands/context.js").Context>;
24
+ export declare const agentCommandsOffRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
25
+ on: import("zod").ZodBoolean;
26
+ commands: import("zod").ZodArray<import("zod").ZodString>;
27
+ message: import("zod").ZodString;
28
+ }, import("zod/v4/core").$strip>, "agentCommands.off">, import("../../../cli/commands/context.js").Context>;
@@ -0,0 +1,35 @@
1
+ // Agent commands' work: the status, and turning them on or off (your settings file, then the files and PATH on this
2
+ // PC). The same function runs after a change of agentCommands.* in Settings (settings.run.ts), so every surface agrees.
3
+ import { requireOnPc } from '../../../cli/commands/context.js';
4
+ import { AgentCommandsService } from '../../../cli/services/agent-commands-service.js';
5
+ import { implement } from '../../context.js';
6
+ import { agentCommandsOff, agentCommandsOn, agentCommandsStatus, AGENT_COMMANDS_EXPLAINED, } from './agent-commands.def.js';
7
+ export async function readAgentCommands(service) {
8
+ const s = await service.statusAsync();
9
+ return {
10
+ enabled: s.enabled,
11
+ dir: s.dir,
12
+ found: s.found.map((a) => ({ command: a.command, harness: a.harness, real: a.real })),
13
+ };
14
+ }
15
+ export const agentCommandsStatusRun = implement(agentCommandsStatus, (ctx) => readAgentCommands(new AgentCommandsService(ctx)));
16
+ /** Switches agent commands, with the words that say what changed. */
17
+ export function switchAgentCommands(service, on) {
18
+ const result = service.setEnabled(on);
19
+ const commands = result?.on ? result.commands.map((a) => a.command) : [];
20
+ const message = on
21
+ ? 'Agent commands are on for: ' +
22
+ (commands.join(', ') || 'no installed agents found yet') +
23
+ '. ' +
24
+ AGENT_COMMANDS_EXPLAINED
25
+ : 'Agent commands are off: claude, codex ... run on this PC again. Open a new terminal.';
26
+ return { on, commands, message };
27
+ }
28
+ export const agentCommandsOnRun = implement(agentCommandsOn, (ctx) => {
29
+ requireOnPc('agent-commands on');
30
+ return switchAgentCommands(new AgentCommandsService(ctx), true);
31
+ });
32
+ export const agentCommandsOffRun = implement(agentCommandsOff, (ctx) => {
33
+ requireOnPc('agent-commands off');
34
+ return switchAgentCommands(new AgentCommandsService(ctx), false);
35
+ });
@@ -0,0 +1,2 @@
1
+ export * from './agent-commands.def.js';
2
+ export * from './agent-commands.run.js';
@@ -0,0 +1,3 @@
1
+ // The agent commands feature: claude, codex ... on this PC start in a sandbox.
2
+ export * from './agent-commands.def.js';
3
+ export * from './agent-commands.run.js';
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { type AgentCommandsStatus } from '../agent-commands/agent-commands.def.js';
2
3
  import { type Page } from '../../kernel/index.js';
3
4
  export declare const AgentRowSchema: z.ZodObject<{
4
5
  name: z.ZodString;
@@ -16,6 +17,7 @@ export declare const AgentsListSchema: z.ZodObject<{
16
17
  isDefault: z.ZodBoolean;
17
18
  removable: z.ZodBoolean;
18
19
  }, z.core.$strip>>;
20
+ subagents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
19
21
  }, z.core.$strip>;
20
22
  export type AgentsList = z.output<typeof AgentsListSchema>;
21
23
  export declare const listAgents: import("../../kernel/define.js").QueryDef<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
@@ -27,6 +29,7 @@ export declare const listAgents: import("../../kernel/define.js").QueryDef<z.Zod
27
29
  isDefault: z.ZodBoolean;
28
30
  removable: z.ZodBoolean;
29
31
  }, z.core.$strip>>;
32
+ subagents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
30
33
  }, z.core.$strip>, "agents.list">;
31
34
  export declare const startAgent: import("../../kernel/define.js").OperationDef<z.ZodObject<{
32
35
  agent: z.ZodString;
@@ -50,7 +53,7 @@ export declare const removeAgent: import("../../kernel/define.js").OperationDef<
50
53
  message: z.ZodString;
51
54
  }, z.core.$strip>, "agents.remove">;
52
55
  /** The agents page: the default agent first, then the others, then "Add an agent…" (ids `agent:<name>` and `add`). */
53
- export declare function agentsPage(o: AgentsList): Page;
56
+ export declare function agentsPage(o: AgentsList, commands: AgentCommandsStatus): Page;
54
57
  export declare const agentsView: import("../../kernel/define.js").ViewDef<{
55
58
  agents: import("../../kernel/define.js").QueryDef<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
56
59
  folder: z.ZodString;
@@ -61,5 +64,15 @@ export declare const agentsView: import("../../kernel/define.js").ViewDef<{
61
64
  isDefault: z.ZodBoolean;
62
65
  removable: z.ZodBoolean;
63
66
  }, z.core.$strip>>;
67
+ subagents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
64
68
  }, z.core.$strip>, "agents.list">;
69
+ agentCommands: import("../../kernel/define.js").QueryDef<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
70
+ enabled: z.ZodBoolean;
71
+ dir: z.ZodString;
72
+ found: z.ZodArray<z.ZodObject<{
73
+ command: z.ZodString;
74
+ harness: z.ZodString;
75
+ real: z.ZodString;
76
+ }, z.core.$strip>>;
77
+ }, z.core.$strip>, "agentCommands.status">;
65
78
  }, Record<string, never>, "agents">;
@@ -1,7 +1,9 @@
1
1
  // The agents you can start: the list, starting one in a project of the running sandbox, adding one, making one the
2
2
  // default and removing one you added. Pure: schemas, labels and the view; agents.run.ts does the work.
3
3
  import { z } from 'zod';
4
- import { action, defineOperation, defineQuery, defineView, link } from '../../kernel/index.js';
4
+ import { agentsEnvSet, subagentsText, SUBAGENTS_VAR } from './env.def.js';
5
+ import { agentCommandsOff, agentCommandsOn, agentCommandsSection, agentCommandsStatus, } from '../agent-commands/agent-commands.def.js';
6
+ import { action, defineOperation, defineQuery, defineView, link, } from '../../kernel/index.js';
5
7
  /** Agent and project names as the web UI has always accepted them. */
6
8
  const NameText = z.string().regex(/^[A-Za-z0-9_.-]{1,64}$/);
7
9
  export const AgentRowSchema = z.object({
@@ -14,6 +16,12 @@ export const AgentsListSchema = z.object({
14
16
  folder: z.string().describe('The folder a start works on (the current folder)'),
15
17
  defaultAgent: z.string().describe('The default agent'),
16
18
  agents: z.array(AgentRowSchema).describe('Every agent in your settings, built in or added'),
19
+ subagents: z
20
+ .number()
21
+ .int()
22
+ .nullable()
23
+ .optional()
24
+ .describe('Claude: how many subagents run at once (null = its default); missing when Claude is not an agent here'),
17
25
  });
18
26
  export const listAgents = defineQuery({
19
27
  id: 'agents.list',
@@ -86,7 +94,11 @@ function agentDescription(a, where) {
86
94
  }
87
95
  /** The menu's words for the remove key, on an agent you added that is not the default. */
88
96
  function agentKeys(a) {
89
- return a.removable && !a.isDefault ? 'x removes it.' : undefined;
97
+ const keys = [
98
+ ...(a.name === 'claude' ? ['e opens its environment.'] : []),
99
+ ...(a.removable && !a.isDefault ? ['x removes it.'] : []),
100
+ ];
101
+ return keys.length ? keys.join(' ') : undefined;
90
102
  }
91
103
  function agentItem(a, where) {
92
104
  return {
@@ -103,19 +115,61 @@ function agentItem(a, where) {
103
115
  ...(a.isDefault
104
116
  ? []
105
117
  : [action(makeDefaultAgent, { name: a.name }, { key: 'd', verb: 'make default', importance: 1 })]),
118
+ ...(a.name === 'claude'
119
+ ? [
120
+ link({ kind: 'view', view: 'agentEnv', params: { agent: 'claude' } }, 'Environment…', {
121
+ key: 'e',
122
+ verb: 'environment',
123
+ importance: 1,
124
+ description: 'Models, limits, how many subagents run at once, and other variables of Claude.',
125
+ }),
126
+ ]
127
+ : []),
106
128
  ...(a.removable && !a.isDefault
107
129
  ? [action(removeAgent, { name: a.name }, { key: 'x', verb: 'remove', importance: 1 })]
108
130
  : []),
109
131
  ],
110
132
  };
111
133
  }
134
+ /** Claude's "Subagents at once": its value, changed in place (the rest of its variables: Environment…). */
135
+ function subagentsSection(n) {
136
+ return {
137
+ id: 'claude',
138
+ title: 'Claude',
139
+ items: [
140
+ {
141
+ id: 'subagents',
142
+ label: 'Subagents at once',
143
+ hint: subagentsText(n),
144
+ description: 'How many subagents Claude may run at the same time. Empty goes back to its default.',
145
+ primary: action(agentsEnvSet, { agent: 'claude', name: SUBAGENTS_VAR }, {
146
+ label: 'Change',
147
+ verb: 'edit',
148
+ inline: true,
149
+ fields: [
150
+ {
151
+ name: 'value',
152
+ key: ['value'],
153
+ kind: 'text',
154
+ label: 'Subagents at once',
155
+ help: 'A whole number from 1 to 1000. Empty goes back to the default.',
156
+ optional: true,
157
+ },
158
+ ],
159
+ initial: { value: n === null ? '' : String(n) },
160
+ }),
161
+ },
162
+ ],
163
+ };
164
+ }
112
165
  /** The agents page: the default agent first, then the others, then "Add an agent…" (ids `agent:<name>` and `add`). */
113
- export function agentsPage(o) {
166
+ export function agentsPage(o, commands) {
114
167
  const where = folderName(o.folder);
115
168
  const sorted = [...o.agents].sort((a, b) => Number(b.isDefault) - Number(a.isDefault));
116
169
  return {
117
170
  title: 'Agents',
118
171
  sections: [
172
+ ...(o.subagents !== undefined ? [subagentsSection(o.subagents)] : []),
119
173
  {
120
174
  id: 'start',
121
175
  title: 'Start in ' + where,
@@ -130,6 +184,7 @@ export function agentsPage(o) {
130
184
  },
131
185
  ],
132
186
  },
187
+ agentCommandsSection(commands),
133
188
  ],
134
189
  };
135
190
  }
@@ -137,7 +192,7 @@ export const agentsView = defineView({
137
192
  id: 'agents',
138
193
  title: 'Agents',
139
194
  summary: 'The agents you can start: start one, add one, choose the default.',
140
- queries: { agents: listAgents },
141
- operations: [startAgent, addAgent, makeDefaultAgent, removeAgent],
142
- build: ({ agents }) => agentsPage(agents),
195
+ queries: { agents: listAgents, agentCommands: agentCommandsStatus },
196
+ operations: [startAgent, addAgent, makeDefaultAgent, removeAgent, agentsEnvSet, agentCommandsOn, agentCommandsOff],
197
+ build: ({ agents, agentCommands }) => agentsPage(agents, agentCommands),
143
198
  });
@@ -7,6 +7,7 @@ export declare const listAgentsRun: import("../../kernel/define.js").Implementat
7
7
  isDefault: import("zod").ZodBoolean;
8
8
  removable: import("zod").ZodBoolean;
9
9
  }, import("zod/v4/core").$strip>>;
10
+ subagents: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
10
11
  }, import("zod/v4/core").$strip>, "agents.list">, import("../../../cli/commands/context.js").Context>;
11
12
  export declare const startAgentRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").OperationDef<import("zod").ZodObject<{
12
13
  agent: import("zod").ZodString;
@@ -14,6 +14,7 @@ import { implement } from '../../context.js';
14
14
  import { cancelled } from '../../kernel/index.js';
15
15
  import { ConfigFile } from '../settings/settings-file.js';
16
16
  import { addAgent, listAgents, makeDefaultAgent, removeAgent, startAgent, } from './agents.def.js';
17
+ import { SUBAGENTS_VAR } from './env.def.js';
17
18
  import { addedAgents, agentNameProblem, checkedAgent, commandFromPackage, newAgent, withAgent, withoutAgent, } from './agent-entry.js';
18
19
  /** The longest a start waits for the agent to run (the first start installs it). */
19
20
  const SESSION_START_MS = 15 * 60 * 1000;
@@ -42,7 +43,13 @@ export const listAgentsRun = implement(listAgents, async (ctx) => {
42
43
  isDefault: name === config.defaultHarness,
43
44
  removable: removable.includes(name),
44
45
  }));
45
- return { folder: hereDir(ctx), defaultAgent: config.defaultHarness, agents };
46
+ const limit = Number(config.harnesses.claude?.environment?.[SUBAGENTS_VAR]);
47
+ return {
48
+ folder: hereDir(ctx),
49
+ defaultAgent: config.defaultHarness,
50
+ agents,
51
+ ...(config.harnesses.claude ? { subagents: Number.isInteger(limit) && limit > 0 ? limit : null } : {}),
52
+ };
46
53
  });
47
54
  export const startAgentRun = implement(startAgent, async (ctx, input, io) => {
48
55
  if (insideSandbox() || !isSandboxRunning())
@@ -0,0 +1,36 @@
1
+ export declare const ENV_GROUPS: readonly ["Subagents", "Models", "Limits", "Behaviour", "Privacy", "Network", "Providers"];
2
+ export type EnvGroup = (typeof ENV_GROUPS)[number];
3
+ export interface EnvVarSpec {
4
+ readonly name: string;
5
+ readonly group: EnvGroup;
6
+ readonly label: string;
7
+ readonly kind: 'flag' | 'number' | 'text' | 'enum';
8
+ readonly choices?: readonly string[];
9
+ readonly min?: number;
10
+ readonly max?: number;
11
+ /** Its value is a login or a token: never shown, never sent to a screen. */
12
+ readonly secret?: boolean;
13
+ readonly description: string;
14
+ /** What Claude does when it is not set (shown beside the value). */
15
+ readonly defaultText?: string;
16
+ }
17
+ /** The variable that sets how many subagents run at once (Claude's code default is 20). */
18
+ export declare const MAX_SUBAGENTS_VAR = "CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS";
19
+ export declare const MAX_SUBAGENTS_DEFAULT = 20;
20
+ export declare const CLAUDE_ENV: readonly EnvVarSpec[];
21
+ /** The catalogue entry of a variable name. */
22
+ export declare function envSpec(name: string): EnvVarSpec | undefined;
23
+ /** A variable name anyone may set (the same shape the settings accept). */
24
+ export declare const ENV_NAME: RegExp;
25
+ /**
26
+ * What a typed value becomes for this variable: the text to save, null when it removes the variable, or a problem the
27
+ * person can act on. A flag is "1" or removed; a number is whole and in range; ANTHROPIC_API_KEY must pass the key
28
+ * check it is given. Pure.
29
+ */
30
+ export declare function envValue(spec: EnvVarSpec | undefined, raw: string | null,
31
+ /** What is wrong with an Anthropic API key (the host passes anthropicKeyProblem), or null. */
32
+ keyProblem?: (key: string) => string | null): {
33
+ readonly save: string | null;
34
+ } | {
35
+ readonly problem: string;
36
+ };