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,43 @@
1
+ export declare const agentEnvRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").QueryDef<import("zod").ZodObject<{
2
+ agent: import("zod").ZodDefault<import("zod").ZodString>;
3
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
4
+ agent: import("zod").ZodString;
5
+ rows: import("zod").ZodArray<import("zod").ZodObject<{
6
+ name: import("zod").ZodString;
7
+ group: import("zod").ZodEnum<{
8
+ Subagents: "Subagents";
9
+ Models: "Models";
10
+ Limits: "Limits";
11
+ Behaviour: "Behaviour";
12
+ Privacy: "Privacy";
13
+ Network: "Network";
14
+ Providers: "Providers";
15
+ }>;
16
+ label: import("zod").ZodString;
17
+ kind: import("zod").ZodEnum<{
18
+ number: "number";
19
+ enum: "enum";
20
+ flag: "flag";
21
+ text: "text";
22
+ }>;
23
+ description: import("zod").ZodString;
24
+ choices: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
25
+ range: import("zod").ZodOptional<import("zod").ZodString>;
26
+ secret: import("zod").ZodBoolean;
27
+ defaultText: import("zod").ZodOptional<import("zod").ZodString>;
28
+ value: import("zod").ZodNullable<import("zod").ZodString>;
29
+ set: import("zod").ZodBoolean;
30
+ fromSandbox: import("zod").ZodBoolean;
31
+ }, import("zod/v4/core").$strip>>;
32
+ custom: import("zod").ZodArray<import("zod").ZodObject<{
33
+ name: import("zod").ZodString;
34
+ fromSandbox: import("zod").ZodBoolean;
35
+ }, import("zod/v4/core").$strip>>;
36
+ }, import("zod/v4/core").$strip>, "agents.env">, import("../../../cli/commands/context.js").Context>;
37
+ export declare const agentsEnvSetRun: import("../../kernel/define.js").Implementation<import("../../kernel/define.js").OperationDef<import("zod").ZodObject<{
38
+ agent: import("zod").ZodString;
39
+ name: import("zod").ZodString;
40
+ value: import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodString>>;
41
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
42
+ message: import("zod").ZodString;
43
+ }, import("zod/v4/core").$strip>, "agents.env.set">, import("../../../cli/commands/context.js").Context>;
@@ -0,0 +1,86 @@
1
+ // The work of the agent environment editor: reads an agent's variables from your settings (secrets never leave this
2
+ // file), and sets or removes one through the same config file the settings use. Talks only through io.
3
+ import _ from 'lodash';
4
+ import { DEFAULTS } from '../../../core/config/index.js';
5
+ import { fail } from '../../../core/util/index.js';
6
+ import { CLAUDE_ENV, envSpec, envValue } from './claude-env.def.js';
7
+ import { anthropicKeyProblem } from '../../../shared/accounts/index.js';
8
+ import { implement } from '../../context.js';
9
+ import { ConfigFile } from '../settings/settings-file.js';
10
+ import { agentEnv, agentsEnvSet } from './env.def.js';
11
+ /** The variables written in your own settings file for an agent (a value that is not text is ignored). */
12
+ function ownVariables(file, agent) {
13
+ const raw = file.valueInFile(['harnesses', agent, 'environment']);
14
+ if (!_.isPlainObject(raw))
15
+ return {};
16
+ return Object.fromEntries(Object.entries(raw).filter(([, v]) => typeof v === 'string'));
17
+ }
18
+ function rangeText(spec) {
19
+ if (spec.kind !== 'number')
20
+ return undefined;
21
+ const min = spec.min ?? 0;
22
+ return 'A whole number from ' + min + (spec.max !== undefined ? ' to ' + spec.max : ' up') + '.';
23
+ }
24
+ /** The agent must be one of your settings' agents. */
25
+ function knownAgent(file, agent) {
26
+ if (!(agent in file.userConfig().harnesses))
27
+ fail('There is no agent called "' + agent + '".');
28
+ }
29
+ export const agentEnvRun = implement(agentEnv, (ctx, input) => {
30
+ const file = ConfigFile.user(ctx.loaded.configPath);
31
+ knownAgent(file, input.agent);
32
+ const mine = ownVariables(file, input.agent);
33
+ const base = DEFAULTS.harnesses[input.agent]?.environment ?? {};
34
+ const names = new Set([...Object.keys(base), ...Object.keys(mine)]);
35
+ const catalogue = input.agent === 'claude' ? CLAUDE_ENV : [];
36
+ const rows = catalogue.map((spec) => {
37
+ const value = mine[spec.name] ?? base[spec.name];
38
+ return {
39
+ name: spec.name,
40
+ group: spec.group,
41
+ label: spec.label,
42
+ kind: spec.kind,
43
+ description: spec.description,
44
+ ...(spec.choices ? { choices: [...spec.choices] } : {}),
45
+ ...(rangeText(spec) ? { range: rangeText(spec) } : {}),
46
+ secret: spec.secret === true,
47
+ ...(spec.defaultText ? { defaultText: spec.defaultText } : {}),
48
+ // A secret's value stays here.
49
+ value: value === undefined || spec.secret ? null : value,
50
+ set: value !== undefined,
51
+ fromSandbox: mine[spec.name] === undefined && base[spec.name] !== undefined,
52
+ };
53
+ });
54
+ const known = new Set(catalogue.map((s) => s.name));
55
+ const custom = [...names]
56
+ .filter((n) => !known.has(n))
57
+ .sort()
58
+ .map((name) => ({ name, fromSandbox: mine[name] === undefined }));
59
+ return { agent: input.agent, rows, custom };
60
+ });
61
+ export const agentsEnvSetRun = implement(agentsEnvSet, (ctx, input) => {
62
+ const file = ConfigFile.user(ctx.loaded.configPath);
63
+ knownAgent(file, input.agent);
64
+ const spec = input.agent === 'claude' ? envSpec(input.name) : undefined;
65
+ const shownName = spec?.label ?? input.name;
66
+ const checked = envValue(spec, input.value, anthropicKeyProblem);
67
+ if ('problem' in checked)
68
+ fail(shownName + ': ' + checked.problem);
69
+ const mine = ownVariables(file, input.agent);
70
+ if (checked.save === null && mine[input.name] === undefined) {
71
+ const sandbox = DEFAULTS.harnesses[input.agent]?.environment?.[input.name] !== undefined;
72
+ return {
73
+ message: sandbox
74
+ ? shownName + ' is set by the sandbox; give it another value to change it.'
75
+ : shownName + ' was not set.',
76
+ };
77
+ }
78
+ const result = file.set(['harnesses', input.agent, 'environment', input.name], checked.save ?? undefined);
79
+ if (typeof result === 'object')
80
+ fail('It could not be saved: ' + result.problems.join('; '));
81
+ if (checked.save === null)
82
+ return { message: shownName + ' is removed.' };
83
+ // Only the value of a plain catalogue entry is said back: everything else may hold a login.
84
+ const said = spec && !spec.secret ? (spec.kind === 'flag' ? 'on' : checked.save) : 'saved';
85
+ return { message: shownName + (said === 'saved' ? ' is saved.' : ' is ' + said + '.') };
86
+ });
@@ -1,3 +1,5 @@
1
1
  export * from './agents.def.js';
2
2
  export * from './agents.run.js';
3
+ export * from './env.def.js';
4
+ export * from './env.run.js';
3
5
  export * from './agent-entry.js';
@@ -1,4 +1,6 @@
1
1
  // The agents feature: the list, starting an agent in a project of the running sandbox, and the agents in your settings.
2
2
  export * from './agents.def.js';
3
3
  export * from './agents.run.js';
4
+ export * from './env.def.js';
5
+ export * from './env.run.js';
4
6
  export * from './agent-entry.js';
@@ -76,6 +76,12 @@ export declare const OPERATIONS: readonly [OperationDef<import("zod").ZodObject<
76
76
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
77
77
  message: import("zod").ZodString;
78
78
  }, import("zod/v4/core").$strip>, "agents.remove">, OperationDef<import("zod").ZodObject<{
79
+ agent: import("zod").ZodString;
80
+ name: import("zod").ZodString;
81
+ value: import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodString>>;
82
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
83
+ message: import("zod").ZodString;
84
+ }, import("zod/v4/core").$strip>, "agents.env.set">, OperationDef<import("zod").ZodObject<{
79
85
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
80
86
  project: "project";
81
87
  user: "user";
@@ -285,6 +291,14 @@ export declare const OPERATIONS: readonly [OperationDef<import("zod").ZodObject<
285
291
  deleted: import("zod").ZodBoolean;
286
292
  message: import("zod").ZodString;
287
293
  }, import("zod/v4/core").$strip>, "vpn.logout">, OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
294
+ on: import("zod").ZodBoolean;
295
+ commands: import("zod").ZodArray<import("zod").ZodString>;
296
+ message: import("zod").ZodString;
297
+ }, import("zod/v4/core").$strip>, "agentCommands.on">, OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
298
+ on: import("zod").ZodBoolean;
299
+ commands: import("zod").ZodArray<import("zod").ZodString>;
300
+ message: import("zod").ZodString;
301
+ }, import("zod/v4/core").$strip>, "agentCommands.off">, OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
288
302
  message: import("zod").ZodString;
289
303
  }, import("zod/v4/core").$strip>, "github.login">, OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
290
304
  deleted: import("zod").ZodBoolean;
@@ -411,9 +425,9 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
411
425
  cwd: import("zod").ZodString;
412
426
  project: import("zod").ZodOptional<import("zod").ZodString>;
413
427
  phase: import("zod").ZodEnum<{
428
+ running: "running";
414
429
  failed: "failed";
415
430
  starting: "starting";
416
- running: "running";
417
431
  exited: "exited";
418
432
  }>;
419
433
  message: import("zod").ZodString;
@@ -438,7 +452,43 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
438
452
  isDefault: import("zod").ZodBoolean;
439
453
  removable: import("zod").ZodBoolean;
440
454
  }, import("zod/v4/core").$strip>>;
455
+ subagents: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
441
456
  }, import("zod/v4/core").$strip>, "agents.list">, QueryDef<import("zod").ZodObject<{
457
+ agent: import("zod").ZodDefault<import("zod").ZodString>;
458
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
459
+ agent: import("zod").ZodString;
460
+ rows: import("zod").ZodArray<import("zod").ZodObject<{
461
+ name: import("zod").ZodString;
462
+ group: import("zod").ZodEnum<{
463
+ Subagents: "Subagents";
464
+ Models: "Models";
465
+ Limits: "Limits";
466
+ Behaviour: "Behaviour";
467
+ Privacy: "Privacy";
468
+ Network: "Network";
469
+ Providers: "Providers";
470
+ }>;
471
+ label: import("zod").ZodString;
472
+ kind: import("zod").ZodEnum<{
473
+ number: "number";
474
+ enum: "enum";
475
+ flag: "flag";
476
+ text: "text";
477
+ }>;
478
+ description: import("zod").ZodString;
479
+ choices: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
480
+ range: import("zod").ZodOptional<import("zod").ZodString>;
481
+ secret: import("zod").ZodBoolean;
482
+ defaultText: import("zod").ZodOptional<import("zod").ZodString>;
483
+ value: import("zod").ZodNullable<import("zod").ZodString>;
484
+ set: import("zod").ZodBoolean;
485
+ fromSandbox: import("zod").ZodBoolean;
486
+ }, import("zod/v4/core").$strip>>;
487
+ custom: import("zod").ZodArray<import("zod").ZodObject<{
488
+ name: import("zod").ZodString;
489
+ fromSandbox: import("zod").ZodBoolean;
490
+ }, import("zod/v4/core").$strip>>;
491
+ }, import("zod/v4/core").$strip>, "agents.env">, QueryDef<import("zod").ZodObject<{
442
492
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
443
493
  project: "project";
444
494
  user: "user";
@@ -532,10 +582,12 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
532
582
  summary: import("zod").ZodNullable<import("zod").ZodString>;
533
583
  heldBy: import("zod").ZodNullable<import("zod").ZodString>;
534
584
  usedBy: import("zod").ZodArray<import("zod").ZodString>;
585
+ usedFor: import("zod").ZodString;
535
586
  warnings: import("zod").ZodArray<import("zod").ZodString>;
536
587
  canImport: import("zod").ZodBoolean;
537
588
  canLogin: import("zod").ZodBoolean;
538
589
  needsFile: import("zod").ZodBoolean;
590
+ ready: import("zod").ZodBoolean;
539
591
  }, import("zod/v4/core").$strip>>;
540
592
  }, import("zod/v4/core").$strip>, "accounts.list">, QueryDef<import("zod").ZodObject<{
541
593
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
@@ -941,7 +993,26 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
941
993
  }>;
942
994
  text: import("zod").ZodString;
943
995
  }, import("zod/v4/core").$strip>>;
944
- }, import("zod/v4/core").$strip>, "vpn.status">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
996
+ lastFailure: import("zod").ZodNullable<import("zod").ZodObject<{
997
+ code: import("zod").ZodEnum<{
998
+ auth: "auth";
999
+ unreachable: "unreachable";
1000
+ driver: "driver";
1001
+ timeout: "timeout";
1002
+ other: "other";
1003
+ }>;
1004
+ text: import("zod").ZodString;
1005
+ at: import("zod").ZodString;
1006
+ }, import("zod/v4/core").$strip>>;
1007
+ }, import("zod/v4/core").$strip>, "vpn.status">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1008
+ enabled: import("zod").ZodBoolean;
1009
+ dir: import("zod").ZodString;
1010
+ found: import("zod").ZodArray<import("zod").ZodObject<{
1011
+ command: import("zod").ZodString;
1012
+ harness: import("zod").ZodString;
1013
+ real: import("zod").ZodString;
1014
+ }, import("zod/v4/core").$strip>>;
1015
+ }, import("zod/v4/core").$strip>, "agentCommands.status">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
945
1016
  shareToken: import("zod").ZodBoolean;
946
1017
  gitAccess: import("zod").ZodEnum<{
947
1018
  readonly: "readonly";
@@ -958,6 +1029,11 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
958
1029
  classic: "classic";
959
1030
  }>>;
960
1031
  savedAt: import("zod").ZodNullable<import("zod").ZodString>;
1032
+ login: import("zod").ZodNullable<import("zod").ZodString>;
1033
+ expiresAt: import("zod").ZodNullable<import("zod").ZodString>;
1034
+ repoCount: import("zod").ZodNullable<import("zod").ZodNumber>;
1035
+ checkedAt: import("zod").ZodNullable<import("zod").ZodString>;
1036
+ tokenUrl: import("zod").ZodString;
961
1037
  }, import("zod/v4/core").$strip>, "github.status">, QueryDef<import("zod").ZodObject<{
962
1038
  name: import("zod").ZodOptional<import("zod").ZodString>;
963
1039
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
@@ -975,10 +1051,12 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
975
1051
  summary: import("zod").ZodNullable<import("zod").ZodString>;
976
1052
  heldBy: import("zod").ZodNullable<import("zod").ZodString>;
977
1053
  usedBy: import("zod").ZodArray<import("zod").ZodString>;
1054
+ usedFor: import("zod").ZodString;
978
1055
  warnings: import("zod").ZodArray<import("zod").ZodString>;
979
1056
  canImport: import("zod").ZodBoolean;
980
1057
  canLogin: import("zod").ZodBoolean;
981
1058
  needsFile: import("zod").ZodBoolean;
1059
+ ready: import("zod").ZodBoolean;
982
1060
  }, import("zod/v4/core").$strip>>;
983
1061
  }, import("zod/v4/core").$strip>, "accounts.services">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
984
1062
  lan: import("zod").ZodObject<{
@@ -1110,9 +1188,9 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1110
1188
  cwd: import("zod").ZodString;
1111
1189
  project: import("zod").ZodOptional<import("zod").ZodString>;
1112
1190
  phase: import("zod").ZodEnum<{
1191
+ running: "running";
1113
1192
  failed: "failed";
1114
1193
  starting: "starting";
1115
- running: "running";
1116
1194
  exited: "exited";
1117
1195
  }>;
1118
1196
  message: import("zod").ZodString;
@@ -1139,8 +1217,55 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1139
1217
  isDefault: import("zod").ZodBoolean;
1140
1218
  removable: import("zod").ZodBoolean;
1141
1219
  }, import("zod/v4/core").$strip>>;
1220
+ subagents: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
1142
1221
  }, import("zod/v4/core").$strip>, "agents.list">;
1222
+ agentCommands: QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1223
+ enabled: import("zod").ZodBoolean;
1224
+ dir: import("zod").ZodString;
1225
+ found: import("zod").ZodArray<import("zod").ZodObject<{
1226
+ command: import("zod").ZodString;
1227
+ harness: import("zod").ZodString;
1228
+ real: import("zod").ZodString;
1229
+ }, import("zod/v4/core").$strip>>;
1230
+ }, import("zod/v4/core").$strip>, "agentCommands.status">;
1143
1231
  }, Record<string, never>, "agents">, import("../kernel/define.js").ViewDef<{
1232
+ env: QueryDef<import("zod").ZodObject<{
1233
+ agent: import("zod").ZodDefault<import("zod").ZodString>;
1234
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1235
+ agent: import("zod").ZodString;
1236
+ rows: import("zod").ZodArray<import("zod").ZodObject<{
1237
+ name: import("zod").ZodString;
1238
+ group: import("zod").ZodEnum<{
1239
+ Subagents: "Subagents";
1240
+ Models: "Models";
1241
+ Limits: "Limits";
1242
+ Behaviour: "Behaviour";
1243
+ Privacy: "Privacy";
1244
+ Network: "Network";
1245
+ Providers: "Providers";
1246
+ }>;
1247
+ label: import("zod").ZodString;
1248
+ kind: import("zod").ZodEnum<{
1249
+ number: "number";
1250
+ enum: "enum";
1251
+ flag: "flag";
1252
+ text: "text";
1253
+ }>;
1254
+ description: import("zod").ZodString;
1255
+ choices: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
1256
+ range: import("zod").ZodOptional<import("zod").ZodString>;
1257
+ secret: import("zod").ZodBoolean;
1258
+ defaultText: import("zod").ZodOptional<import("zod").ZodString>;
1259
+ value: import("zod").ZodNullable<import("zod").ZodString>;
1260
+ set: import("zod").ZodBoolean;
1261
+ fromSandbox: import("zod").ZodBoolean;
1262
+ }, import("zod/v4/core").$strip>>;
1263
+ custom: import("zod").ZodArray<import("zod").ZodObject<{
1264
+ name: import("zod").ZodString;
1265
+ fromSandbox: import("zod").ZodBoolean;
1266
+ }, import("zod/v4/core").$strip>>;
1267
+ }, import("zod/v4/core").$strip>, "agents.env">;
1268
+ }, import("./agents/env.def.js").AgentEnvParams, "agentEnv">, import("../kernel/define.js").ViewDef<{
1144
1269
  settings: QueryDef<import("zod").ZodObject<{
1145
1270
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
1146
1271
  project: "project";
@@ -1215,10 +1340,12 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1215
1340
  summary: import("zod").ZodNullable<import("zod").ZodString>;
1216
1341
  heldBy: import("zod").ZodNullable<import("zod").ZodString>;
1217
1342
  usedBy: import("zod").ZodArray<import("zod").ZodString>;
1343
+ usedFor: import("zod").ZodString;
1218
1344
  warnings: import("zod").ZodArray<import("zod").ZodString>;
1219
1345
  canImport: import("zod").ZodBoolean;
1220
1346
  canLogin: import("zod").ZodBoolean;
1221
1347
  needsFile: import("zod").ZodBoolean;
1348
+ ready: import("zod").ZodBoolean;
1222
1349
  }, import("zod/v4/core").$strip>>;
1223
1350
  }, import("zod/v4/core").$strip>, "accounts.list">;
1224
1351
  services: QueryDef<import("zod").ZodObject<{
@@ -1238,12 +1365,37 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1238
1365
  summary: import("zod").ZodNullable<import("zod").ZodString>;
1239
1366
  heldBy: import("zod").ZodNullable<import("zod").ZodString>;
1240
1367
  usedBy: import("zod").ZodArray<import("zod").ZodString>;
1368
+ usedFor: import("zod").ZodString;
1241
1369
  warnings: import("zod").ZodArray<import("zod").ZodString>;
1242
1370
  canImport: import("zod").ZodBoolean;
1243
1371
  canLogin: import("zod").ZodBoolean;
1244
1372
  needsFile: import("zod").ZodBoolean;
1373
+ ready: import("zod").ZodBoolean;
1245
1374
  }, import("zod/v4/core").$strip>>;
1246
1375
  }, import("zod/v4/core").$strip>, "accounts.services">;
1376
+ github: QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1377
+ shareToken: import("zod").ZodBoolean;
1378
+ gitAccess: import("zod").ZodEnum<{
1379
+ readonly: "readonly";
1380
+ none: "none";
1381
+ full: "full";
1382
+ }>;
1383
+ token: import("zod").ZodEnum<{
1384
+ none: "none";
1385
+ saved: "saved";
1386
+ unreadable: "unreadable";
1387
+ }>;
1388
+ kind: import("zod").ZodNullable<import("zod").ZodEnum<{
1389
+ "fine-grained": "fine-grained";
1390
+ classic: "classic";
1391
+ }>>;
1392
+ savedAt: import("zod").ZodNullable<import("zod").ZodString>;
1393
+ login: import("zod").ZodNullable<import("zod").ZodString>;
1394
+ expiresAt: import("zod").ZodNullable<import("zod").ZodString>;
1395
+ repoCount: import("zod").ZodNullable<import("zod").ZodNumber>;
1396
+ checkedAt: import("zod").ZodNullable<import("zod").ZodString>;
1397
+ tokenUrl: import("zod").ZodString;
1398
+ }, import("zod/v4/core").$strip>, "github.status">;
1247
1399
  }, Record<string, never>, "accounts">, import("../kernel/define.js").ViewDef<{
1248
1400
  apps: QueryDef<import("zod").ZodObject<{
1249
1401
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
@@ -1649,6 +1801,17 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1649
1801
  }>;
1650
1802
  text: import("zod").ZodString;
1651
1803
  }, import("zod/v4/core").$strip>>;
1804
+ lastFailure: import("zod").ZodNullable<import("zod").ZodObject<{
1805
+ code: import("zod").ZodEnum<{
1806
+ auth: "auth";
1807
+ unreachable: "unreachable";
1808
+ driver: "driver";
1809
+ timeout: "timeout";
1810
+ other: "other";
1811
+ }>;
1812
+ text: import("zod").ZodString;
1813
+ at: import("zod").ZodString;
1814
+ }, import("zod/v4/core").$strip>>;
1652
1815
  }, import("zod/v4/core").$strip>, "vpn.status">;
1653
1816
  }, Record<string, never>, "vpn">, import("../kernel/define.js").ViewDef<{
1654
1817
  status: QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
@@ -1668,6 +1831,11 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1668
1831
  classic: "classic";
1669
1832
  }>>;
1670
1833
  savedAt: import("zod").ZodNullable<import("zod").ZodString>;
1834
+ login: import("zod").ZodNullable<import("zod").ZodString>;
1835
+ expiresAt: import("zod").ZodNullable<import("zod").ZodString>;
1836
+ repoCount: import("zod").ZodNullable<import("zod").ZodNumber>;
1837
+ checkedAt: import("zod").ZodNullable<import("zod").ZodString>;
1838
+ tokenUrl: import("zod").ZodString;
1671
1839
  }, import("zod/v4/core").$strip>, "github.status">;
1672
1840
  }, Record<string, never>, "github">, import("../kernel/define.js").ViewDef<{
1673
1841
  status: QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
@@ -1,4 +1,5 @@
1
1
  import { addAgent, agentsView, listAgents, makeDefaultAgent, removeAgent, startAgent } from './agents/agents.def.js';
2
+ import { agentEnv, agentEnvView, agentsEnvSet } from './agents/env.def.js';
2
3
  import { accountsView, defaultAccount, listAccounts, removeAccount, renameAccount, saveAccount, useAccount, } from './accounts/accounts.def.js';
3
4
  import { listServices, serviceImport, serviceLogin, serviceLogout } from './accounts/services.def.js';
4
5
  import { appsView, listApps, requestApp, setCustomApps, toggleApp } from './apps/apps.def.js';
@@ -12,6 +13,7 @@ import { addProject, allProjects, chooseProjects, excludeProject, includeProject
12
13
  import { listLogs, logsView, tailLog } from './logs/logs.def.js';
13
14
  import { auditView, listAudit } from './audit/audit.def.js';
14
15
  import { closeSession, listSessions, restartSessions, sessionsView, startShell } from './sessions/sessions.def.js';
16
+ import { agentCommandsOff, agentCommandsOn, agentCommandsStatus } from './agent-commands/agent-commands.def.js';
15
17
  import { vpnLogin, vpnLogout, vpnStatus, vpnView } from './vpn/vpn.def.js';
16
18
  import { githubLogin, githubLogout, githubStatus, githubView } from './github/github.def.js';
17
19
  import { exportConfig, getSetting, importConfig, listSettings, resetSetting, setSetting, settingsView, } from './settings/settings.def.js';
@@ -31,6 +33,7 @@ export const OPERATIONS = [
31
33
  addAgent,
32
34
  makeDefaultAgent,
33
35
  removeAgent,
36
+ agentsEnvSet,
34
37
  setSetting,
35
38
  resetSetting,
36
39
  exportConfig,
@@ -67,6 +70,8 @@ export const OPERATIONS = [
67
70
  stopWeb,
68
71
  vpnLogin,
69
72
  vpnLogout,
73
+ agentCommandsOn,
74
+ agentCommandsOff,
70
75
  githubLogin,
71
76
  githubLogout,
72
77
  serviceImport,
@@ -82,6 +87,7 @@ export const QUERIES = [
82
87
  sandboxStatus,
83
88
  listSessions,
84
89
  listAgents,
90
+ agentEnv,
85
91
  listSettings,
86
92
  getSetting,
87
93
  browseFolder,
@@ -101,6 +107,7 @@ export const QUERIES = [
101
107
  engineLeftovers,
102
108
  webStatus,
103
109
  vpnStatus,
110
+ agentCommandsStatus,
104
111
  githubStatus,
105
112
  listServices,
106
113
  accessStatus,
@@ -109,6 +116,7 @@ export const VIEWS = [
109
116
  sandboxView,
110
117
  sessionsView,
111
118
  agentsView,
119
+ agentEnvView,
112
120
  settingsView,
113
121
  accountsView,
114
122
  appsView,
@@ -159,6 +167,7 @@ export const NAV = [
159
167
  label: 'Workspace',
160
168
  children: [
161
169
  { label: 'Agents', view: 'agents' },
170
+ { label: 'Claude environment', view: 'agentEnv' },
162
171
  { label: 'Sessions', view: 'sessions' },
163
172
  { label: 'Activity', view: 'audit' },
164
173
  ],
@@ -72,6 +72,6 @@ export const cleanEngineRun = implement(cleanEngine, async (ctx, _input, io) =>
72
72
  const stopped = results.filter((r) => r.stopped).length;
73
73
  const failed = results.length - stopped;
74
74
  if (failed)
75
- fail(plural(failed, 'HCS system') + ' could not be stopped.', 'Run it again from an administrator terminal: sandbox engine clean');
75
+ fail(plural(failed, 'HCS system') + ' could not be stopped.', 'Stopping them needs administrator rights: start the menu from an administrator terminal and try again.');
76
76
  return { available: true, stopped, failed, message: 'Stopped ' + plural(stopped, 'HCS system') + '.' };
77
77
  });
@@ -1,7 +1,21 @@
1
1
  import { z } from 'zod';
2
- import { type Page } from '../../kernel/index.js';
2
+ import { type Item, type Page, type Section } from '../../kernel/index.js';
3
3
  /** Where GitHub makes a fine-grained token. */
4
4
  export declare const NEW_TOKEN_URL = "https://github.com/settings/personal-access-tokens/new";
5
+ /** What a token for sandboxes needs (GitHub's names for the permissions), asked for in the pre-filled form. */
6
+ export declare const TOKEN_PERMISSIONS: Readonly<Record<string, 'read' | 'write'>>;
7
+ /**
8
+ * The link that opens GitHub's "new fine-grained token" form already filled in (name, description, days until it
9
+ * expires, permissions): docs.github.com, "Creating a fine-grained personal access token". Pure.
10
+ */
11
+ export declare function newTokenUrl(o: {
12
+ readonly name: string;
13
+ readonly description?: string;
14
+ readonly days: number;
15
+ readonly permissions: Readonly<Record<string, 'read' | 'write'>>;
16
+ }): string;
17
+ /** The pre-filled link for this PC (the name says which PC the token is for). */
18
+ export declare function tokenUrlFor(host: string): string;
5
19
  /** The steps to make a token for sandboxes (shown before asking for it). */
6
20
  export declare const GITHUB_STEPS: readonly string[];
7
21
  /** What everyone who shares a token must know: on every surface. */
@@ -23,6 +37,11 @@ export declare const GithubStatusSchema: z.ZodObject<{
23
37
  classic: "classic";
24
38
  }>>;
25
39
  savedAt: z.ZodNullable<z.ZodString>;
40
+ login: z.ZodNullable<z.ZodString>;
41
+ expiresAt: z.ZodNullable<z.ZodString>;
42
+ repoCount: z.ZodNullable<z.ZodNumber>;
43
+ checkedAt: z.ZodNullable<z.ZodString>;
44
+ tokenUrl: z.ZodString;
26
45
  }, z.core.$strip>;
27
46
  export type GithubStatus = z.output<typeof GithubStatusSchema>;
28
47
  export declare const githubStatus: import("../../kernel/define.js").QueryDef<z.ZodObject<{}, z.core.$strict>, z.ZodObject<{
@@ -42,6 +61,11 @@ export declare const githubStatus: import("../../kernel/define.js").QueryDef<z.Z
42
61
  classic: "classic";
43
62
  }>>;
44
63
  savedAt: z.ZodNullable<z.ZodString>;
64
+ login: z.ZodNullable<z.ZodString>;
65
+ expiresAt: z.ZodNullable<z.ZodString>;
66
+ repoCount: z.ZodNullable<z.ZodNumber>;
67
+ checkedAt: z.ZodNullable<z.ZodString>;
68
+ tokenUrl: z.ZodString;
45
69
  }, z.core.$strip>, "github.status">;
46
70
  export declare const githubLogin: import("../../kernel/define.js").OperationDef<z.ZodObject<{}, z.core.$strict>, z.ZodObject<{
47
71
  message: z.ZodString;
@@ -56,8 +80,20 @@ export declare function githubTokenRowOf(s: GithubStatus): {
56
80
  hint: string;
57
81
  description: string;
58
82
  };
59
- /** The status page: the facts, the next step (command line only), the warnings and the token actions. */
60
- export declare function githubPage(s: GithubStatus): Page;
83
+ /** A token that expires within this many days is flagged. */
84
+ export declare const EXPIRY_WARN_DAYS = 14;
85
+ /** How the expiry reads: "Expires 3 Feb 2027 (in 12 days)", "Expired 3 Feb 2027", and its tone. */
86
+ export declare function expiryOf(expiresAt: string | null, now?: number): {
87
+ readonly text: string;
88
+ readonly tone: 'ok' | 'warn' | 'danger';
89
+ readonly days: number;
90
+ } | null;
91
+ /** The GitHub card (the "thing you connect" pattern): used by the GitHub page and the Accounts page. */
92
+ export declare function githubItem(s: GithubStatus, now?: number): Item;
93
+ /** The GitHub section (the card, the git-access fact, the warnings and the link that opens GitHub's form). */
94
+ export declare function githubSection(s: GithubStatus, now?: number): Section;
95
+ /** The status page: the card, the git access it needs, the warnings and how to make a new token. */
96
+ export declare function githubPage(s: GithubStatus, now?: number): Page;
61
97
  export declare const githubView: import("../../kernel/define.js").ViewDef<{
62
98
  status: import("../../kernel/define.js").QueryDef<z.ZodObject<{}, z.core.$strict>, z.ZodObject<{
63
99
  shareToken: z.ZodBoolean;
@@ -76,5 +112,10 @@ export declare const githubView: import("../../kernel/define.js").ViewDef<{
76
112
  classic: "classic";
77
113
  }>>;
78
114
  savedAt: z.ZodNullable<z.ZodString>;
115
+ login: z.ZodNullable<z.ZodString>;
116
+ expiresAt: z.ZodNullable<z.ZodString>;
117
+ repoCount: z.ZodNullable<z.ZodNumber>;
118
+ checkedAt: z.ZodNullable<z.ZodString>;
119
+ tokenUrl: z.ZodString;
79
120
  }, z.core.$strip>, "github.status">;
80
121
  }, Record<string, never>, "github">;