windows-development-sandbox 1.17.0 → 1.18.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 (319) hide show
  1. package/README.md +92 -92
  2. package/config.example.json +97 -4
  3. package/dist/app/features/accounts/accounts.def.d.ts +116 -2
  4. package/dist/app/features/accounts/accounts.def.js +80 -12
  5. package/dist/app/features/accounts/accounts.run.d.ts +29 -0
  6. package/dist/app/features/accounts/accounts.run.js +36 -6
  7. package/dist/app/features/accounts/index.d.ts +2 -0
  8. package/dist/app/features/accounts/index.js +4 -1
  9. package/dist/app/features/accounts/services.def.d.ts +111 -0
  10. package/dist/app/features/accounts/services.def.js +187 -0
  11. package/dist/app/features/accounts/services.run.d.ts +65 -0
  12. package/dist/app/features/accounts/services.run.js +212 -0
  13. package/dist/app/features/defs.d.ts +112 -1
  14. package/dist/app/features/defs.js +5 -0
  15. package/dist/app/features/settings/categories.def.js +21 -4
  16. package/dist/app/registry.js +5 -1
  17. package/dist/bin/agent-sandbox.js +2 -2
  18. package/dist/bin/{chunk-QLGGAG3D.js → chunk-BKF43GJ3.js} +51 -16
  19. package/dist/bin/{chunk-REE3EMHD.js → chunk-YD3A67RS.js} +3812 -1702
  20. package/dist/bin/{chunk-XYUVIVJT.js → chunk-Z5D32FN3.js} +1 -1
  21. package/dist/bin/claude-host.js +2 -2
  22. package/dist/bin/claude-sbx.js +2 -2
  23. package/dist/bin/codex-sbx.js +2 -2
  24. package/dist/bin/gemini-sbx.js +2 -2
  25. package/dist/bin/sandbox.js +2 -2
  26. package/dist/bin/sbx-hide.js +2 -2
  27. package/dist/bin/sbx-show.js +2 -2
  28. package/dist/cli/commands/launch/launch.js +30 -1
  29. package/dist/cli/manifest.d.ts +93 -65
  30. package/dist/cli/manifest.js +23 -5
  31. package/dist/cli/menu/pages/accounts-page.js +31 -16
  32. package/dist/cli/services/accounts-service.d.ts +14 -4
  33. package/dist/cli/services/accounts-service.js +19 -6
  34. package/dist/cli/services/data-collect.js +26 -1
  35. package/dist/core/config/defaults.js +47 -4
  36. package/dist/core/detect/toolchains.d.ts +15 -1
  37. package/dist/core/detect/toolchains.js +45 -12
  38. package/dist/core/local-config/overrides.js +6 -0
  39. package/dist/core/schema/accounts.d.ts +27 -0
  40. package/dist/core/schema/accounts.js +32 -0
  41. package/dist/core/schema/config.d.ts +239 -0
  42. package/dist/core/schema/config.js +6 -0
  43. package/dist/core/schema/pc-installs.d.ts +7 -0
  44. package/dist/core/schema/pc-installs.js +17 -0
  45. package/dist/core/schema/toolchains.d.ts +61 -0
  46. package/dist/core/schema/toolchains.js +106 -0
  47. package/dist/core/types.d.ts +18 -0
  48. package/dist/guest/accounts/adapter.d.ts +25 -0
  49. package/dist/guest/accounts/adapter.js +21 -0
  50. package/dist/guest/accounts/adapters.d.ts +5 -0
  51. package/dist/guest/accounts/adapters.js +18 -0
  52. package/dist/guest/accounts/apply.d.ts +41 -0
  53. package/dist/guest/accounts/apply.js +47 -0
  54. package/dist/guest/accounts/kinds/appstore.d.ts +2 -0
  55. package/dist/guest/accounts/kinds/appstore.js +7 -0
  56. package/dist/guest/accounts/kinds/cfx.d.ts +2 -0
  57. package/dist/guest/accounts/kinds/cfx.js +7 -0
  58. package/dist/guest/accounts/kinds/epic.d.ts +2 -0
  59. package/dist/guest/accounts/kinds/epic.js +26 -0
  60. package/dist/guest/accounts/kinds/expo.d.ts +2 -0
  61. package/dist/guest/accounts/kinds/expo.js +7 -0
  62. package/dist/guest/accounts/kinds/keystore.d.ts +2 -0
  63. package/dist/guest/accounts/kinds/keystore.js +7 -0
  64. package/dist/guest/accounts/kinds/play.d.ts +2 -0
  65. package/dist/guest/accounts/kinds/play.js +7 -0
  66. package/dist/guest/accounts/kinds/steam.d.ts +4 -0
  67. package/dist/guest/accounts/kinds/steam.js +17 -0
  68. package/dist/guest/accounts/kinds/unity.d.ts +2 -0
  69. package/dist/guest/accounts/kinds/unity.js +7 -0
  70. package/dist/guest/accounts/watch.d.ts +28 -0
  71. package/dist/guest/accounts/watch.js +78 -0
  72. package/dist/guest/agents/agent-files.d.ts +6 -0
  73. package/dist/guest/agents/agent-files.js +14 -0
  74. package/dist/guest/agents/local-state.d.ts +2 -0
  75. package/dist/guest/agents/local-state.js +13 -1
  76. package/dist/guest/apps/resolvers-gamedev.d.ts +2 -0
  77. package/dist/guest/apps/resolvers-gamedev.js +1 -0
  78. package/dist/guest/apps/resolvers-mobile.d.ts +2 -0
  79. package/dist/guest/apps/resolvers-mobile.js +1 -0
  80. package/dist/guest/apps/resolvers.js +4 -0
  81. package/dist/guest/boot/boot.d.ts +5 -0
  82. package/dist/guest/boot/boot.js +36 -1
  83. package/dist/guest/daemon/accounts.d.ts +3 -0
  84. package/dist/guest/daemon/accounts.js +25 -0
  85. package/dist/guest/daemon/daemon.js +2 -0
  86. package/dist/guest/daemon/idle-shutdown.js +3 -1
  87. package/dist/guest/daemon/sessions.js +2 -0
  88. package/dist/guest/devtools/android.d.ts +2 -0
  89. package/dist/guest/devtools/android.js +7 -0
  90. package/dist/guest/devtools/devtool.d.ts +9 -0
  91. package/dist/guest/devtools/devtool.js +5 -0
  92. package/dist/guest/devtools/fivem.d.ts +2 -0
  93. package/dist/guest/devtools/fivem.js +7 -0
  94. package/dist/guest/devtools/registry.d.ts +6 -0
  95. package/dist/guest/devtools/registry.js +12 -0
  96. package/dist/guest/devtools/steam.d.ts +2 -0
  97. package/dist/guest/devtools/steam.js +228 -0
  98. package/dist/guest/devtools/unity.d.ts +2 -0
  99. package/dist/guest/devtools/unity.js +7 -0
  100. package/dist/guest/entries/daemon.js +2 -0
  101. package/dist/guest/entries/tool.d.ts +1 -0
  102. package/dist/guest/entries/tool.js +17 -0
  103. package/dist/guest/toolchains/engines/godot.d.ts +4 -0
  104. package/dist/guest/toolchains/engines/godot.js +4 -0
  105. package/dist/guest/toolchains/engines/unity-release.d.ts +15 -0
  106. package/dist/guest/toolchains/engines/unity-release.js +6 -0
  107. package/dist/guest/toolchains/engines/unity.d.ts +4 -0
  108. package/dist/guest/toolchains/engines/unity.js +4 -0
  109. package/dist/guest/toolchains/engines/unreal-engines.d.ts +4 -0
  110. package/dist/guest/toolchains/engines/unreal-engines.js +4 -0
  111. package/dist/guest/toolchains/fivem/artifacts.d.ts +6 -0
  112. package/dist/guest/toolchains/fivem/artifacts.js +7 -0
  113. package/dist/guest/toolchains/fivem/fivem.d.ts +4 -0
  114. package/dist/guest/toolchains/fivem/fivem.js +4 -0
  115. package/dist/guest/toolchains/installers.d.ts +12 -0
  116. package/dist/guest/toolchains/installers.js +39 -0
  117. package/dist/guest/toolchains/languages/java.js +1 -1
  118. package/dist/guest/toolchains/languages/kotlin.d.ts +3 -0
  119. package/dist/guest/toolchains/languages/kotlin.js +6 -0
  120. package/dist/guest/toolchains/mobile/android-repo.d.ts +11 -0
  121. package/dist/guest/toolchains/mobile/android-repo.js +10 -0
  122. package/dist/guest/toolchains/mobile/android.d.ts +17 -0
  123. package/dist/guest/toolchains/mobile/android.js +16 -0
  124. package/dist/guest/toolchains/mobile/dart.d.ts +4 -0
  125. package/dist/guest/toolchains/mobile/dart.js +4 -0
  126. package/dist/guest/toolchains/mobile/flutter.d.ts +4 -0
  127. package/dist/guest/toolchains/mobile/flutter.js +4 -0
  128. package/dist/guest/toolchains/mobile/react-native.d.ts +4 -0
  129. package/dist/guest/toolchains/mobile/react-native.js +4 -0
  130. package/dist/guest/toolchains/native/unreal.d.ts +3 -7
  131. package/dist/guest/toolchains/native/unreal.js +16 -155
  132. package/dist/guest/toolchains/native/visual-studio.d.ts +15 -0
  133. package/dist/guest/toolchains/native/visual-studio.js +159 -0
  134. package/dist/guest/toolchains/native/vs-request.d.ts +19 -0
  135. package/dist/guest/toolchains/native/vs-request.js +46 -0
  136. package/dist/guest/toolchains/not-yet.d.ts +2 -0
  137. package/dist/guest/toolchains/not-yet.js +6 -0
  138. package/dist/guest/toolchains/persisted.d.ts +48 -0
  139. package/dist/guest/toolchains/persisted.js +159 -0
  140. package/dist/guest/toolchains/plan.js +80 -4
  141. package/dist/guest/toolchains/steam/apps.d.ts +27 -0
  142. package/dist/guest/toolchains/steam/apps.js +112 -0
  143. package/dist/guest/toolchains/steam/client.d.ts +5 -0
  144. package/dist/guest/toolchains/steam/client.js +67 -0
  145. package/dist/guest/toolchains/steam/commands.d.ts +58 -0
  146. package/dist/guest/toolchains/steam/commands.js +155 -0
  147. package/dist/guest/toolchains/steam/steam.d.ts +4 -0
  148. package/dist/guest/toolchains/steam/steam.js +61 -0
  149. package/dist/guest/toolchains/steam/steamcmd-install.d.ts +29 -0
  150. package/dist/guest/toolchains/steam/steamcmd-install.js +177 -0
  151. package/dist/guest/toolchains/steam/steamcmd.d.ts +6 -0
  152. package/dist/guest/toolchains/steam/steamcmd.js +23 -0
  153. package/dist/guest/toolchains/step.d.ts +10 -0
  154. package/dist/host/accounts/deliver.d.ts +26 -0
  155. package/dist/host/accounts/deliver.js +80 -0
  156. package/dist/host/accounts/handoff.d.ts +17 -0
  157. package/dist/host/accounts/handoff.js +110 -0
  158. package/dist/host/accounts/index.d.ts +6 -0
  159. package/dist/host/accounts/index.js +8 -0
  160. package/dist/host/accounts/kinds/appstore.d.ts +2 -0
  161. package/dist/host/accounts/kinds/appstore.js +10 -0
  162. package/dist/host/accounts/kinds/cfx.d.ts +2 -0
  163. package/dist/host/accounts/kinds/cfx.js +7 -0
  164. package/dist/host/accounts/kinds/epic.d.ts +2 -0
  165. package/dist/host/accounts/kinds/epic.js +15 -0
  166. package/dist/host/accounts/kinds/expo.d.ts +2 -0
  167. package/dist/host/accounts/kinds/expo.js +7 -0
  168. package/dist/host/accounts/kinds/keystore.d.ts +2 -0
  169. package/dist/host/accounts/kinds/keystore.js +7 -0
  170. package/dist/host/accounts/kinds/play.d.ts +2 -0
  171. package/dist/host/accounts/kinds/play.js +7 -0
  172. package/dist/host/accounts/kinds/steam.d.ts +6 -0
  173. package/dist/host/accounts/kinds/steam.js +31 -0
  174. package/dist/host/accounts/kinds/unity.d.ts +2 -0
  175. package/dist/host/accounts/kinds/unity.js +13 -0
  176. package/dist/host/accounts/leases.d.ts +40 -0
  177. package/dist/host/accounts/leases.js +62 -0
  178. package/dist/host/accounts/source.d.ts +21 -0
  179. package/dist/host/accounts/source.js +15 -0
  180. package/dist/host/accounts/sources.d.ts +5 -0
  181. package/dist/host/accounts/sources.js +18 -0
  182. package/dist/host/accounts/store.d.ts +23 -0
  183. package/dist/host/accounts/store.js +74 -0
  184. package/dist/host/audit/log.d.ts +1 -1
  185. package/dist/host/launch/generate.d.ts +2 -0
  186. package/dist/host/launch/generate.js +16 -1
  187. package/dist/host/launch/hints/android.d.ts +3 -0
  188. package/dist/host/launch/hints/android.js +3 -0
  189. package/dist/host/launch/hints/engines.d.ts +3 -0
  190. package/dist/host/launch/hints/engines.js +3 -0
  191. package/dist/host/launch/hints/fivem.d.ts +3 -0
  192. package/dist/host/launch/hints/fivem.js +3 -0
  193. package/dist/host/launch/hints/hint.d.ts +2 -0
  194. package/dist/host/launch/hints/hint.js +1 -0
  195. package/dist/host/launch/hints/index.d.ts +5 -0
  196. package/dist/host/launch/hints/index.js +29 -0
  197. package/dist/host/launch/hints/mobile.d.ts +3 -0
  198. package/dist/host/launch/hints/mobile.js +3 -0
  199. package/dist/host/launch/hints/steam.d.ts +7 -0
  200. package/dist/host/launch/hints/steam.js +59 -0
  201. package/dist/host/launch/index.d.ts +2 -2
  202. package/dist/host/launch/index.js +2 -2
  203. package/dist/host/launch/mappings.js +2 -0
  204. package/dist/host/launch/session-file.js +2 -0
  205. package/dist/host/launch/stage.js +10 -1
  206. package/dist/host/launch/toolchains.d.ts +7 -0
  207. package/dist/host/launch/toolchains.js +11 -0
  208. package/dist/host/pc-installs/discover.d.ts +19 -0
  209. package/dist/host/pc-installs/discover.js +59 -0
  210. package/dist/host/pc-installs/epic.d.ts +2 -0
  211. package/dist/host/pc-installs/epic.js +7 -0
  212. package/dist/host/pc-installs/index.d.ts +3 -0
  213. package/dist/host/pc-installs/index.js +2 -0
  214. package/dist/host/pc-installs/source.d.ts +9 -0
  215. package/dist/host/pc-installs/source.js +1 -0
  216. package/dist/host/pc-installs/steam.d.ts +16 -0
  217. package/dist/host/pc-installs/steam.js +143 -0
  218. package/dist/host/pc-installs/unity.d.ts +2 -0
  219. package/dist/host/pc-installs/unity.js +7 -0
  220. package/dist/host/pc-installs/unreal.d.ts +2 -0
  221. package/dist/host/pc-installs/unreal.js +7 -0
  222. package/dist/host/profile/accounts.d.ts +21 -6
  223. package/dist/host/profile/accounts.js +108 -28
  224. package/dist/host/profile/claude-login.d.ts +32 -2
  225. package/dist/host/profile/claude-login.js +100 -8
  226. package/dist/host/profile/index.d.ts +1 -1
  227. package/dist/host/profile/index.js +1 -1
  228. package/dist/host/secrets/launch-secrets.js +1 -0
  229. package/dist/runtime/agent.js +321 -9
  230. package/dist/runtime/daemon.js +1987 -595
  231. package/dist/runtime/db.js +334 -11
  232. package/dist/runtime/main.js +2530 -709
  233. package/dist/runtime/netproxy.js +321 -9
  234. package/dist/runtime/tool.js +28549 -0
  235. package/dist/runtime/view.js +321 -9
  236. package/dist/selftest/accounts.test.js +172 -1
  237. package/dist/selftest/agent-paths.test.js +13 -1
  238. package/dist/selftest/android.test.d.ts +2 -0
  239. package/dist/selftest/android.test.js +7 -0
  240. package/dist/selftest/app.test.js +1 -1
  241. package/dist/selftest/engines.test.d.ts +2 -0
  242. package/dist/selftest/engines.test.js +7 -0
  243. package/dist/selftest/fivem.test.d.ts +2 -0
  244. package/dist/selftest/fivem.test.js +7 -0
  245. package/dist/selftest/generate.test.js +1 -1
  246. package/dist/selftest/index.js +18 -0
  247. package/dist/selftest/menu-screens.js +1 -0
  248. package/dist/selftest/menu.test.js +2 -1
  249. package/dist/selftest/mobile.test.d.ts +2 -0
  250. package/dist/selftest/mobile.test.js +7 -0
  251. package/dist/selftest/pc-installs.test.d.ts +2 -0
  252. package/dist/selftest/pc-installs.test.js +111 -0
  253. package/dist/selftest/persisted-installs.test.d.ts +2 -0
  254. package/dist/selftest/persisted-installs.test.js +107 -0
  255. package/dist/selftest/projects.test.js +6 -4
  256. package/dist/selftest/service-accounts.test.d.ts +2 -0
  257. package/dist/selftest/service-accounts.test.js +320 -0
  258. package/dist/selftest/steam.test.d.ts +2 -0
  259. package/dist/selftest/steam.test.js +316 -0
  260. package/dist/selftest/storage-helper.test.js +31 -8
  261. package/dist/selftest/support/engine-golden.js +3 -0
  262. package/dist/selftest/support/fixtures.d.ts +87 -0
  263. package/dist/selftest/support/fixtures.js +4 -3
  264. package/dist/selftest/support/pc-memory.d.ts +2 -0
  265. package/dist/selftest/support/pc-memory.js +17 -0
  266. package/dist/selftest/support/web-preview.js +20 -1
  267. package/dist/selftest/unity.test.d.ts +2 -0
  268. package/dist/selftest/unity.test.js +7 -0
  269. package/dist/shared/accounts/fingerprint.d.ts +1 -0
  270. package/dist/shared/accounts/fingerprint.js +20 -0
  271. package/dist/shared/accounts/index.d.ts +5 -0
  272. package/dist/shared/accounts/index.js +7 -0
  273. package/dist/shared/accounts/kinds/epic.d.ts +10 -0
  274. package/dist/shared/accounts/kinds/epic.js +56 -0
  275. package/dist/shared/accounts/kinds/steam.d.ts +28 -0
  276. package/dist/shared/accounts/kinds/steam.js +99 -0
  277. package/dist/shared/accounts/kinds.d.ts +41 -0
  278. package/dist/shared/accounts/kinds.js +154 -0
  279. package/dist/shared/accounts/payloads.d.ts +151 -0
  280. package/dist/shared/accounts/payloads.js +128 -0
  281. package/dist/shared/apps/catalogue-gamedev.d.ts +2 -0
  282. package/dist/shared/apps/catalogue-gamedev.js +1 -0
  283. package/dist/shared/apps/catalogue-mobile.d.ts +2 -0
  284. package/dist/shared/apps/catalogue-mobile.js +1 -0
  285. package/dist/shared/apps/catalogue-modding.d.ts +2 -0
  286. package/dist/shared/apps/catalogue-modding.js +1 -0
  287. package/dist/shared/apps/catalogue.d.ts +1 -0
  288. package/dist/shared/apps/catalogue.js +6 -1
  289. package/dist/shared/channel/schema.d.ts +183 -0
  290. package/dist/shared/channel/secrets.d.ts +42 -0
  291. package/dist/shared/channel/secrets.js +3 -0
  292. package/dist/shared/download/downloader.d.ts +7 -0
  293. package/dist/shared/download/downloader.js +10 -3
  294. package/dist/shared/installs.d.ts +19 -0
  295. package/dist/shared/installs.js +13 -0
  296. package/dist/shared/io/bounded.d.ts +6 -0
  297. package/dist/shared/io/bounded.js +38 -0
  298. package/dist/shared/io/index.d.ts +2 -0
  299. package/dist/shared/io/index.js +2 -0
  300. package/dist/shared/io/text.d.ts +9 -0
  301. package/dist/shared/io/text.js +18 -0
  302. package/dist/shared/paths/guest-paths.js +1 -1
  303. package/dist/shared/paths/index.d.ts +1 -0
  304. package/dist/shared/paths/index.js +1 -0
  305. package/dist/shared/paths/pc-installs.d.ts +20 -0
  306. package/dist/shared/paths/pc-installs.js +19 -0
  307. package/dist/shared/vdf.d.ts +25 -0
  308. package/dist/shared/vdf.js +151 -0
  309. package/dist/sync/sync-cycle.js +9 -0
  310. package/dist/web/index.html +1 -1
  311. package/dist/web/{main-JTH3FT4O.js → main-CWIF4VQI.js} +63 -61
  312. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  313. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  314. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  315. package/package.json +1 -1
  316. package/sandbox/scripts/add-firewall-port.ps1 +13 -0
  317. package/sandbox/templates/fivem/README.txt +2 -0
  318. package/schemas/config.schema.json +485 -0
  319. package/schemas/sandbox-config.schema.json +416 -0
package/README.md CHANGED
@@ -12,9 +12,10 @@
12
12
 
13
13
  </div>
14
14
 
15
- Run it in a project folder and you get a clean [Windows Sandbox](https://learn.microsoft.com/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-overview)
16
- where that folder is the workspace, the tools and databases the project needs install themselves, and nothing else
17
- on your PC is reachable. Close it and it's gone. Your project, tools, databases and logins are kept for next time.
15
+ Run it in a project folder to get a clean
16
+ [Windows Sandbox](https://learn.microsoft.com/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-overview).
17
+ The folder is the workspace, the tools and databases it needs install themselves, and the rest of your PC is out of
18
+ reach. Close it and it is gone. Your project, tools, databases and logins are kept for next time.
18
19
 
19
20
  ## Install
20
21
 
@@ -22,130 +23,129 @@ on your PC is reachable. Close it and it's gone. Your project, tools, databases
22
23
  irm https://github.com/JoshDiDuca/windows-development-sandbox/releases/latest/download/install.ps1 | iex
23
24
  ```
24
25
 
25
- It checks your PC, offers to turn on Windows Sandbox, and asks **1) Just me** or **2) Everyone on this PC** (needs
26
- admin). It brings its own private copy of Node.js; nothing else is installed system-wide, and no Start menu shortcut
27
- unless you ask for one. `sandbox update` installs newer versions (and can do it by itself), even while a sandbox runs:
28
- the sandbox keeps its version until it restarts. A version that fails to start is rolled back automatically, and
29
- `sandbox update --rollback` goes back one by hand.
26
+ The installer checks your PC, offers to turn on Windows Sandbox, and asks **1) Just me** or **2) Everyone on this PC**
27
+ (needs admin). It brings its own copy of Node.js and installs nothing else system-wide. It adds no Start menu shortcut
28
+ unless you ask.
30
29
 
31
- Needs Windows 10/11 **Pro, Enterprise or Education**. Have Node.js 20+? `npm install -g windows-development-sandbox`
32
- works too. [Scopes, options (`-Version`, `-StartMenuShortcut` ...), upgrading, uninstall](docs/install.md)
30
+ - `sandbox update` installs a newer version, and can do it by itself. A running sandbox keeps its version until it
31
+ restarts.
32
+ - A new version that fails to start is rolled back for you. `sandbox update --rollback` goes back one version by hand.
33
+
34
+ Needs Windows 10/11 **Pro, Enterprise or Education**. With Node.js 20+, `npm install -g windows-development-sandbox`
35
+ works too. More: [install options, upgrading, uninstall](docs/install.md).
33
36
 
34
37
  ## Use
35
38
 
36
39
  ```powershell
37
40
  cd C:\code\my-app
38
41
 
39
- sandbox # the menu: agents, sessions, apps, every setting, diagnostics ...
42
+ sandbox # the menu: agents, sessions, apps, settings, health ...
40
43
  sandbox claude # Claude Code in a sandbox for this folder (or: claude-sandbox)
41
- sandbox claude -t # ... in this terminal (Ctrl+] detaches, the session keeps running)
42
- sandbox start # just the sandbox, no agent
44
+ sandbox claude -t # ... in this terminal (Ctrl+] detaches; the session keeps running)
45
+ sandbox start # the sandbox, no agent
43
46
  sandbox opencode # any supported agent by name
44
47
  sandbox web open # (Beta) the web UI in your browser, signed in
45
48
  ```
46
49
 
47
- The first start downloads what the project needs (a few minutes, once). After that, starts take seconds.
50
+ The first start downloads what the project needs (a few minutes, once). Later starts take seconds.
48
51
 
49
- > `claude-sbx`, `codex-sbx`, `gemini-sbx` and `agent-sandbox` are the old command names. They still work for now; use
50
- > `sandbox <agent>` / `claude-sandbox` and `sandbox` instead.
52
+ > The old names `claude-sbx`, `codex-sbx`, `gemini-sbx` and `agent-sandbox` still work for now. Use `sandbox <agent>`
53
+ > (or `claude-sandbox`) and `sandbox` instead.
51
54
 
52
55
  ## What you get
53
56
 
54
- | | |
55
- |---|---|
56
- | **Safe by default** | The agent sees only your project folder. Credentials are stripped before anything is copied in, your LAN is blocked, and nothing the sandbox writes can run on your PC. |
57
- | **Languages** | Node, Python, Rust, C/C++ (GCC or MSVC), .NET (incl. .NET Framework targeting), Go, Java, Ruby, PHP, Deno, Bun, PowerShell 7, with pnpm, yarn, Volta, uv, pyenv, Maven, Gradle, Composer, gh ... |
58
- | **Apps and tools** | VS Code (set up for your languages, with their extensions) and Windows Terminal, plus 60 optional apps and tools by category: DBeaver, pgAdmin, Bruno, Godot, Blender, kubectl, jq, ripgrep ... and programs of your own. Agent add-ons too: rtk and Headroom (fewer tokens), ccusage, Playwright and Context7 MCP servers, claude-mem, REA. Playwright works out of the box with Edge |
59
- | **Databases** | PostgreSQL, MySQL, MongoDB, Redis and DynamoDB Local with a web UI, started when the project uses them, or any time with `--database` / `sandbox db` |
60
- | **Agents** | Claude Code, Codex, Gemini, opencode, Qwen, Crush, Copilot, Kilo, Amp, Cline, Continue, Kimi, Aider, DeepSeek agents |
61
- | **Smart** | Detects what the project needs from its files, respects version files, installs in parallel and reuses everything |
62
- | **Several projects** | `sandbox claude` from another project joins the running sandbox: its own folder, tools, versions, databases and environment, set up on demand. Start several agents at once (`--session claude@A --session codex@B`, or the menu) and attach to any of them from any terminal |
63
- | **Picks up where you left off** | After a crash or a restart, `sandbox resume` reopens the last sessions; `sandbox restart` restarts the agents in place and they continue their conversation |
64
- | **Leaves nothing behind** | When an agent's session ends, everything it started ends with it, background servers included. The web UI's server stops when no browser uses it, and nothing of this tool keeps running on your PC once the sandbox is closed |
65
- | **GitHub, safely** | Give sandboxes a fine-grained GitHub token you made for them (`sandbox github login`, `github.shareToken`): `gh` and `git push` work inside, and the token never lands in the sandbox's files |
66
- | **Feels like home** | Your desktop look, Claude settings, MCP servers and conversation history come along; history syncs back. Logins you save (`sandbox account`) are kept encrypted for your Windows user |
57
+ | | |
58
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
59
+ | **Safe by default** | The agent sees only your project folder. Credentials are stripped before anything is copied in, your LAN is blocked, and nothing the sandbox writes can run on your PC. |
60
+ | **Languages** | Node, Python, Rust, C/C++ (GCC or MSVC), .NET (with .NET Framework targeting), Go, Java, Ruby, PHP, Deno, Bun, PowerShell 7, Unreal Engine tools. Also pnpm, yarn, Volta, uv, pyenv, Maven, Gradle, Composer, gh ... |
61
+ | **Apps and tools** | VS Code (set up for your languages) and Windows Terminal, plus about 80 optional apps by category: DBeaver, pgAdmin, Bruno, Godot, Blender, Ghidra, kubectl, jq, ripgrep ... and your own programs. Agent add-ons: rtk and Headroom (fewer tokens), ccusage, Playwright and Context7 MCP servers, claude-mem, REA. Playwright works with Edge out of the box. |
62
+ | **Databases** | PostgreSQL, MySQL, MongoDB, Redis and DynamoDB Local (with a web UI). They start when the project uses them, or any time with `--database` or `sandbox db`. |
63
+ | **Agents** | Claude Code, Codex, Gemini, opencode, Qwen, Crush, Copilot, Kilo, Amp, Cline, Continue, Kimi, Aider and two DeepSeek agents. |
64
+ | **Smart setup** | Finds what the project needs from its files, follows its version files, installs in parallel and reuses everything. |
65
+ | **Several projects** | `sandbox claude` from another project joins the running sandbox, with that project's own folder, tools, versions, databases and environment. Start several agents at once (`--session claude@A --session codex@B`, or the menu) and attach to any of them from any terminal. |
66
+ | **Pick up again** | After a crash or restart, `sandbox resume` reopens the last sessions. `sandbox restart` restarts the agents in place, and they continue their conversations. |
67
+ | **Leaves nothing behind** | When an agent's session ends, everything it started ends too, background servers included. Nothing of this tool keeps running on your PC once the sandbox is closed. |
68
+ | **GitHub, safely** | Give sandboxes a fine-grained GitHub token made just for them (`sandbox github login`, `github.shareToken`). `gh` and `git push` then work inside, and the token is never written to the sandbox's files. |
69
+ | **Feels like home** | Your desktop look, Claude settings, MCP servers and conversation history come along, and history syncs back. Saved logins (`sandbox account`) are encrypted for your Windows user. |
67
70
 
68
71
  ## Built for heavy workloads
69
72
 
70
- The sandbox behaves like a well-run PC of its own size: under load it slows down, it does not fail, and it never takes
71
- your PC down with it. Nothing needs setting up.
72
-
73
- - **Sized to what your PC can hold.** The sandbox gets only the memory your PC can keep in RAM for it, with room kept
74
- for your PC itself (and more with vGPU on).
75
- - **Builds within a budget.** Agents see the processors and memory they may really use, and every session gets a
76
- matching number of build jobs and links, written to `run\budget.json` for agents to plan with.
77
- - **Graduated throttling.** As memory fills, a governor in the sandbox turns one dial in steps: build programs get
78
- lower CPU and memory priority, then a smaller share of the CPU, then compilers take turns while the waiting ones move
79
- to the paging file. Builds get slower; nothing is stopped or killed, and agents, shells and Windows are never touched.
80
- - **Your PC has a say.** A watchdog on your PC watches its memory, CPU and disks and asks the sandbox to ease off, at
81
- once and all the way when your PC is nearly out of memory.
82
- - **A last resort that only protects.** Only at the very edge of the sandbox's own memory limit, where Windows inside
83
- it would otherwise start failing, is a build refused memory so that the sandbox stays up.
84
- - **Answers after the fact.** `sandbox doctor` checks your paging file, and `sandbox logs --crash` explains a past
85
- freeze or crash: the gap, blue screens, hardware and memory events, and whether vGPU was on.
86
-
87
- Details and settings: [troubleshooting](docs/troubleshooting.md#the-sandbox-closes-under-heavy-load) and
88
- [configuration](docs/configuration.md#cpu-ram-and-gpu).
73
+ Under load the sandbox slows down instead of failing, and it never takes your PC down with it. Nothing needs setting
74
+ up.
75
+
76
+ - **Sized to fit.** The sandbox gets only the memory your PC can keep in RAM for it, with room left for your PC.
77
+ - **A build budget.** Agents see the CPUs and memory they may really use. Each session gets a matching number of build
78
+ jobs, written to `run\budget.json` for agents to plan with.
79
+ - **Slows down in steps.** As memory fills, build programs get lower priority, then less CPU, then compilers take
80
+ turns. Builds get slower, but nothing is killed, and agents, shells and Windows are never touched.
81
+ - **Your PC has a say.** A watchdog on your PC asks the sandbox to ease off when your PC runs short of memory, CPU or
82
+ disk.
83
+ - **A last resort.** Only at the very edge of the sandbox's memory limit is a build refused memory, so the sandbox
84
+ stays up.
85
+ - **Answers afterwards.** `sandbox doctor` checks your paging file. `sandbox logs --crash` explains a past freeze or
86
+ crash.
87
+
88
+ Details: [heavy load](docs/troubleshooting.md#the-sandbox-closes-under-heavy-load) and
89
+ [CPU, RAM and GPU settings](docs/configuration.md#cpu-ram-and-gpu).
89
90
 
90
91
  ## Commands
91
92
 
92
- | Command | |
93
- |---|---|
94
- | `sandbox` | the menu, a full-screen app with a left navigation: start agents, attach to sessions, pick apps, edit every setting (yours and the project's), all commands, with search |
95
- | `sandbox <agent>`, `claude-sandbox` | start an agent; `-t` for this terminal, `--headless` for no window |
96
- | `sandbox start` | the sandbox without an agent |
97
- | `sandbox attach` / `sessions` / `status` | work with a running sandbox (this folder's project first) |
98
- | `sandbox shell` / `close <id>` | open PowerShell (or cmd) in a project as a session you can attach to; end a session |
99
- | `sandbox restart` / `resume` | restart the agents in place; reopen the last sessions |
100
- | `sandbox projects` | the projects a sandbox can open without a restart: roots, `all`, exclude |
101
- | `sandbox db [start\|stop <name>]` | list, start or stop databases (`sbx-db` inside) |
102
- | `sandbox exec -- <cmd>` | run a command inside |
103
- | `sandbox config get\|set\|reset\|list` | read and change any setting from the command line (`export` / `import` to share them) |
104
- | `sandbox account` | save, switch and rename agent logins |
105
- | `sandbox github` / `vpn` | the GitHub token for sandboxes; the VPN login and status |
106
- | `sandbox web` | (Beta) the web UI: start, stop, status, open |
107
- | `sandbox stop` / `hide` / `show` | shut down, hide or show the window |
108
- | `sandbox data` / `storage` | what's stored and how big, freeing space, moving the data folder |
109
- | `sandbox setup` / `doctor` / `repair` | check this PC, see what will be installed, fix common problems |
110
- | `sandbox engine` | the engines and what each can do on this PC; `engine clean` stops HCS systems left running |
111
- | `sandbox logs [-f] [--crash]` | the sandbox log, or the report of the last crash |
112
- | `sandbox update [--rollback]` / `--version` | update (or go back one version); the installed version |
113
-
114
- All commands and options: [docs/commands.md](docs/commands.md)
93
+ | Command | |
94
+ | ---------------------------------------- | --------------------------------------------------------------------------------- |
95
+ | `sandbox` | the menu: start agents, attach to sessions, pick apps, change any setting, search |
96
+ | `sandbox <agent>`, `claude-sandbox` | start an agent; `-t` for this terminal, `--headless` for no window |
97
+ | `sandbox start` | the sandbox without an agent |
98
+ | `sandbox attach` / `sessions` / `status` | work with a running sandbox (this folder's project first) |
99
+ | `sandbox shell` / `close <id>` | open PowerShell or cmd in a project as a session; end a session |
100
+ | `sandbox restart` / `resume` | restart the agents in place; reopen the last sessions |
101
+ | `sandbox projects` | which projects a sandbox can open without a restart |
102
+ | `sandbox db [start\|stop <name>]` | list, start or stop databases (`sbx-db` inside) |
103
+ | `sandbox exec -- <cmd>` | run a command inside |
104
+ | `sandbox config get\|set\|reset\|list` | read and change settings (`export` / `import` to share them) |
105
+ | `sandbox account` | save, switch and rename agent logins and Claude API keys |
106
+ | `sandbox github` / `vpn` | the GitHub token for sandboxes; the VPN login and status |
107
+ | `sandbox web` | (Beta) the web UI: start, stop, status, open |
108
+ | `sandbox stop` / `hide` / `show` | shut down; hide or show the window |
109
+ | `sandbox data` / `storage` | what is stored and how big; free space; move the data folder |
110
+ | `sandbox setup` / `doctor` / `repair` | check this PC, see what will be installed, fix common problems |
111
+ | `sandbox engine` | (Alpha) the engines and what each can do on this PC |
112
+ | `sandbox logs [-f] [--crash]` | the sandbox log, or the report of the last crash |
113
+ | `sandbox update [--rollback]` | update, or go back one version (`--version` shows the installed one) |
114
+
115
+ Every command and option: [docs/commands.md](docs/commands.md).
115
116
 
116
117
  ## Beta and alpha features
117
118
 
118
- These are off until you turn them on, and one setting turns each off again. Windows Sandbox stays the default and
119
- keeps every feature it has.
119
+ These are off until you turn them on, and one setting turns each off again. Windows Sandbox stays the default engine
120
+ and keeps all its features.
120
121
 
121
- | Feature | Status | |
122
- |---|---|---|
123
- | **Web UI** (`sandbox web`, `web.enabled`) | Beta | Agents, sessions with live terminals, the sandbox's status, apps, accounts and every setting in your browser, with search (Ctrl+K) and a folder picker; on this PC only (loopback, signed in with a token). `web.openOnLaunch` opens it with every sandbox. [web-ui.md](docs/web-ui.md) |
124
- | **Agent commands** (`sandbox agent-commands on`) | Beta | Typing `claude`, `codex` ... in any folder starts it in a hidden sandbox and attaches your terminal |
125
- | **Contained storage** (`sandbox storage contained on`) | Beta | Tools, logins and logs in one disk image per data set, mounted only while a sandbox runs. One admin prompt per launch. [engines](docs/design/engines.md) |
126
- | **VPN** (`sandbox vpn`, `vpn.enabled`) | Alpha | The sandbox's traffic through NordVPN, your own OpenVPN profile or a WireGuard config, with a kill switch that is checked with a real connection. The first real try fixed the install and the kill switch; a tunnel carrying traffic is not confirmed yet: read [vpn.md](docs/vpn.md) first |
127
- | **HCS engine** (`sandbox.engine: hcs`, `sandbox engine`) | Alpha | Headless agents in a Hyper-V isolated Server Core container. `sandbox engine check hcs` shows what your PC lacks; starting it is not enabled yet. Its create, start and stop steps pass on GitHub's Windows Server 2022 and 2025 runners |
122
+ | Feature | Status | What it does |
123
+ | ------------------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124
+ | **Web UI** (`sandbox web`, `web.enabled`) | Beta | Agents, live terminals, status, apps, accounts and settings in your browser, with search (Ctrl+K). This PC only, signed in with a token; devices on your network if you allow them. [web-ui.md](docs/web-ui.md) |
125
+ | **Agent commands** (`sandbox agent-commands on`) | Beta | Typing `claude`, `codex` ... in any folder starts that agent in a hidden sandbox and attaches your terminal. |
126
+ | **Contained storage** (`sandbox storage contained on`) | Beta | Tools, logins and logs in one disk image, mounted only while a sandbox runs. One admin prompt per launch. [Details](docs/configuration.md#contained-storage-beta) |
127
+ | **VPN** (`sandbox vpn`, `vpn.enabled`) | Alpha | The sandbox's traffic through NordVPN, your own OpenVPN profile or a WireGuard config, with a kill switch. A tunnel carrying traffic is not confirmed yet: read [vpn.md](docs/vpn.md) first. |
128
+ | **HCS engine** (`sandbox.engine: hcs`) | Alpha | Headless agents in a Hyper-V isolated Server Core container. `sandbox engine check hcs` shows what your PC lacks. Starting it is not enabled yet. |
128
129
 
129
130
  ## Known gaps
130
131
 
131
- - Adding a folder to a RUNNING sandbox needs Windows 11 24H2+ with the updated Windows Sandbox (`wsb share`,
132
- untested). On older Windows, folders inside a project root open at once and anything else offers a restart.
133
- [Details, and how to get `wsb`](docs/projects.md#adding-folders-to-a-running-sandbox-wsb-share). A way for older
134
- Windows through HCS is designed and waiting for a test on a real PC ([design](docs/design/hcs-live-folders.md)).
135
- - Windows Sandbox runs one sandbox at a time per PC; every project and agent shares it.
132
+ - Adding a folder to a **running** sandbox needs Windows 11 24H2+ with the updated Windows Sandbox (`wsb share`,
133
+ untested). On older Windows, folders inside a project root open at once, and anything else offers a restart.
134
+ [Details](docs/projects.md#adding-a-project-to-a-running-sandbox).
135
+ - Windows Sandbox runs one sandbox per PC. Every project and agent shares it.
136
136
  - What is planned next: [roadmap](docs/roadmap.md).
137
137
 
138
138
  ## Documentation
139
139
 
140
- All docs, with one line each: [docs/README.md](docs/README.md). The main ones:
140
+ All docs, one line each: [docs/README.md](docs/README.md). The main ones:
141
141
 
142
- - [Install](docs/install.md): requirements, other ways to install, upgrading, rolling back
143
- - [Commands](docs/commands.md): every command and option, the menu, sessions and attaching
144
- - [Tools and databases](docs/toolchains.md): languages, package managers, databases, agents, what is tested
142
+ - [Install](docs/install.md): requirements, other ways to install, updating, uninstalling
143
+ - [Commands](docs/commands.md): every command and option, the menu, sessions
144
+ - [Tools and databases](docs/toolchains.md): languages, apps, databases, agents
145
145
  - [Configuration](docs/configuration.md): settings, project files, paths, accounts, hooks
146
- - [Several projects](docs/projects.md): project roots, adding a project to a running sandbox, what each agent can see
146
+ - [Several projects](docs/projects.md): project roots, joining a running sandbox, what each agent can see
147
147
  - [Security](docs/security.md): how your PC is protected, secrets, git access
148
148
  - [Web UI](docs/web-ui.md) (Beta) and [VPN](docs/vpn.md) (Alpha)
149
- - [Troubleshooting](docs/troubleshooting.md): common problems, freezes and crash reports
150
- - [Changelog](CHANGELOG.md) and [roadmap](docs/roadmap.md): what shipped, what is next
149
+ - [Troubleshooting](docs/troubleshooting.md): common problems, heavy load, crash reports
150
+ - [Changelog](CHANGELOG.md) and [roadmap](docs/roadmap.md)
151
151
  - [Development](docs/development.md): building, testing, releasing (code layout in [CLAUDE.md](CLAUDE.md))
@@ -68,6 +68,38 @@
68
68
  "github": {
69
69
  "shareToken": false
70
70
  },
71
+ "accounts": {
72
+ "epic": {
73
+ "share": false
74
+ },
75
+ "steam": {
76
+ "share": false
77
+ },
78
+ "unity": {
79
+ "share": false
80
+ },
81
+ "cfx": {
82
+ "share": false
83
+ },
84
+ "keystore": {
85
+ "share": false
86
+ },
87
+ "play": {
88
+ "share": false
89
+ },
90
+ "expo": {
91
+ "share": false
92
+ },
93
+ "appstore": {
94
+ "share": false
95
+ }
96
+ },
97
+ "pcInstalls": {
98
+ "steamGames": false,
99
+ "epicGames": false,
100
+ "unrealEngines": false,
101
+ "unityEditors": false
102
+ },
71
103
  "provisioning": {
72
104
  "copyFromHost": true,
73
105
  "fallbackToInstall": true,
@@ -122,7 +154,65 @@
122
154
  "enabled": "auto",
123
155
  "acceptLicense": false,
124
156
  "components": [],
125
- "keepInstallFiles": true
157
+ "keepInstallFiles": true,
158
+ "persistEngines": true,
159
+ "derivedDataCache": "persisted"
160
+ },
161
+ "unity": {
162
+ "enabled": "auto",
163
+ "acceptLicense": false,
164
+ "version": "project",
165
+ "modules": [],
166
+ "hub": false,
167
+ "keepVersions": 2
168
+ },
169
+ "godot": {
170
+ "enabled": "auto",
171
+ "version": "project",
172
+ "dotnet": "auto",
173
+ "exportTemplates": true,
174
+ "keepVersions": 2
175
+ },
176
+ "steam": {
177
+ "enabled": "auto",
178
+ "client": false,
179
+ "sdkFolder": ""
180
+ },
181
+ "fivem": {
182
+ "enabled": "auto",
183
+ "acceptLicense": false,
184
+ "game": "gta5",
185
+ "artifact": "recommended",
186
+ "txAdmin": true,
187
+ "keepVersions": 2
188
+ },
189
+ "android": {
190
+ "enabled": "auto",
191
+ "acceptLicense": false,
192
+ "platforms": [
193
+ "project"
194
+ ],
195
+ "buildTools": "latest",
196
+ "ndk": "auto",
197
+ "cmake": "auto",
198
+ "packages": []
199
+ },
200
+ "flutter": {
201
+ "enabled": "auto",
202
+ "version": "project",
203
+ "windowsDesktop": false,
204
+ "precache": [
205
+ "android",
206
+ "web"
207
+ ]
208
+ },
209
+ "dart": {
210
+ "enabled": "auto",
211
+ "version": "stable"
212
+ },
213
+ "reactNative": {
214
+ "enabled": "auto",
215
+ "easCli": true
126
216
  },
127
217
  "cpp": {
128
218
  "enabled": "auto",
@@ -139,7 +229,8 @@
139
229
  "net48",
140
230
  "net472"
141
231
  ],
142
- "netfx35": false
232
+ "netfx35": false,
233
+ "templates": []
143
234
  },
144
235
  "go": {
145
236
  "enabled": "auto",
@@ -150,7 +241,8 @@
150
241
  "enabled": "auto",
151
242
  "version": "lts",
152
243
  "maven": true,
153
- "gradle": true
244
+ "gradle": true,
245
+ "kotlin": false
154
246
  },
155
247
  "ruby": {
156
248
  "enabled": "auto",
@@ -330,7 +422,8 @@
330
422
  "bootReset": [
331
423
  ".sandbox-secrets",
332
424
  ".sandbox\\setup_marker.json",
333
- ".sandbox\\deny_read_acl_state.json"
425
+ ".sandbox\\deny_read_acl_state.json",
426
+ "tmp\\arg0"
334
427
  ],
335
428
  "resumeArguments": [
336
429
  "resume",
@@ -1,13 +1,22 @@
1
1
  import { z } from 'zod';
2
2
  import { type Page, type Section } from '../../kernel/index.js';
3
+ import { type ServicesList } from './services.def.js';
3
4
  export declare const AccountRowSchema: z.ZodObject<{
4
5
  name: z.ZodString;
5
6
  email: z.ZodNullable<z.ZodString>;
6
7
  isDefault: z.ZodBoolean;
7
8
  isActive: z.ZodBoolean;
8
9
  savedAt: z.ZodString;
10
+ kind: z.ZodOptional<z.ZodEnum<{
11
+ subscription: "subscription";
12
+ console: "console";
13
+ "api-key": "api-key";
14
+ }>>;
15
+ keyHint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
9
16
  }, z.core.$strip>;
10
17
  export type AccountRow = z.output<typeof AccountRowSchema>;
18
+ /** "API key sk-ant-...abcd", "Console sk-ant-...abcd", "subscription"; null when the agent does not say. */
19
+ export declare function kindText(r: Pick<AccountRow, 'kind' | 'keyHint'>): string | null;
11
20
  export declare const AgentAccountsSchema: z.ZodObject<{
12
21
  name: z.ZodString;
13
22
  kept: z.ZodBoolean;
@@ -18,6 +27,12 @@ export declare const AgentAccountsSchema: z.ZodObject<{
18
27
  isDefault: z.ZodBoolean;
19
28
  isActive: z.ZodBoolean;
20
29
  savedAt: z.ZodString;
30
+ kind: z.ZodOptional<z.ZodEnum<{
31
+ subscription: "subscription";
32
+ console: "console";
33
+ "api-key": "api-key";
34
+ }>>;
35
+ keyHint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
36
  }, z.core.$strip>>;
22
37
  }, z.core.$strip>;
23
38
  export type AgentAccounts = z.output<typeof AgentAccountsSchema>;
@@ -33,8 +48,33 @@ export declare const AccountsListSchema: z.ZodObject<{
33
48
  isDefault: z.ZodBoolean;
34
49
  isActive: z.ZodBoolean;
35
50
  savedAt: z.ZodString;
51
+ kind: z.ZodOptional<z.ZodEnum<{
52
+ subscription: "subscription";
53
+ console: "console";
54
+ "api-key": "api-key";
55
+ }>>;
56
+ keyHint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
57
  }, z.core.$strip>>;
37
58
  }, z.core.$strip>>;
59
+ services: z.ZodArray<z.ZodObject<{
60
+ kind: z.ZodString;
61
+ label: z.ZodString;
62
+ share: z.ZodBoolean;
63
+ state: z.ZodEnum<{
64
+ none: "none";
65
+ saved: "saved";
66
+ unreadable: "unreadable";
67
+ }>;
68
+ source: z.ZodNullable<z.ZodString>;
69
+ savedAt: z.ZodNullable<z.ZodString>;
70
+ summary: z.ZodNullable<z.ZodString>;
71
+ heldBy: z.ZodNullable<z.ZodString>;
72
+ usedBy: z.ZodArray<z.ZodString>;
73
+ warnings: z.ZodArray<z.ZodString>;
74
+ canImport: z.ZodBoolean;
75
+ canLogin: z.ZodBoolean;
76
+ needsFile: z.ZodBoolean;
77
+ }, z.core.$strip>>;
38
78
  }, z.core.$strip>;
39
79
  export type AccountsList = z.output<typeof AccountsListSchema>;
40
80
  /** The name rule of a saved login: what the store accepts. */
@@ -55,13 +95,39 @@ export declare const listAccounts: import("../../kernel/define.js").QueryDef<z.Z
55
95
  isDefault: z.ZodBoolean;
56
96
  isActive: z.ZodBoolean;
57
97
  savedAt: z.ZodString;
98
+ kind: z.ZodOptional<z.ZodEnum<{
99
+ subscription: "subscription";
100
+ console: "console";
101
+ "api-key": "api-key";
102
+ }>>;
103
+ keyHint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
104
  }, z.core.$strip>>;
59
105
  }, z.core.$strip>>;
106
+ services: z.ZodArray<z.ZodObject<{
107
+ kind: z.ZodString;
108
+ label: z.ZodString;
109
+ share: z.ZodBoolean;
110
+ state: z.ZodEnum<{
111
+ none: "none";
112
+ saved: "saved";
113
+ unreadable: "unreadable";
114
+ }>;
115
+ source: z.ZodNullable<z.ZodString>;
116
+ savedAt: z.ZodNullable<z.ZodString>;
117
+ summary: z.ZodNullable<z.ZodString>;
118
+ heldBy: z.ZodNullable<z.ZodString>;
119
+ usedBy: z.ZodArray<z.ZodString>;
120
+ warnings: z.ZodArray<z.ZodString>;
121
+ canImport: z.ZodBoolean;
122
+ canLogin: z.ZodBoolean;
123
+ needsFile: z.ZodBoolean;
124
+ }, z.core.$strip>>;
60
125
  }, z.core.$strip>, "accounts.list">;
61
126
  export declare const saveAccount: import("../../kernel/define.js").OperationDef<z.ZodObject<{
62
127
  agent: z.ZodDefault<z.ZodString>;
63
128
  name: z.ZodOptional<z.ZodString>;
64
129
  fromHost: z.ZodDefault<z.ZodBoolean>;
130
+ apiKey: z.ZodDefault<z.ZodBoolean>;
65
131
  }, z.core.$strip>, z.ZodObject<{
66
132
  name: z.ZodString;
67
133
  message: z.ZodString;
@@ -95,8 +161,8 @@ export declare const removeAccount: import("../../kernel/define.js").OperationDe
95
161
  }, z.core.$strip>, "accounts.remove">;
96
162
  /** One agent's card: its save rows and logins (a card to pick from), or the note that its login is not kept. */
97
163
  export declare function agentSection(a: AgentAccounts): Section;
98
- /** The web's page: one card per agent (its logins and the save rows). */
99
- export declare function accountsPage(o: AccountsList): Page;
164
+ /** The web's page: one card per agent (its logins and the save rows), then one section per service sign-in. */
165
+ export declare function accountsPage(o: AccountsList, services?: ServicesList): Page;
100
166
  /**
101
167
  * One agent's page for the menu: its section, and the keys of its save rows (s, p) which the menu's key bar shows
102
168
  * while the agent's category is open. The keys of a login row (d, r, x) are on the row itself.
@@ -117,7 +183,55 @@ export declare const accountsView: import("../../kernel/define.js").ViewDef<{
117
183
  isDefault: z.ZodBoolean;
118
184
  isActive: z.ZodBoolean;
119
185
  savedAt: z.ZodString;
186
+ kind: z.ZodOptional<z.ZodEnum<{
187
+ subscription: "subscription";
188
+ console: "console";
189
+ "api-key": "api-key";
190
+ }>>;
191
+ keyHint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
120
192
  }, z.core.$strip>>;
121
193
  }, z.core.$strip>>;
194
+ services: z.ZodArray<z.ZodObject<{
195
+ kind: z.ZodString;
196
+ label: z.ZodString;
197
+ share: z.ZodBoolean;
198
+ state: z.ZodEnum<{
199
+ none: "none";
200
+ saved: "saved";
201
+ unreadable: "unreadable";
202
+ }>;
203
+ source: z.ZodNullable<z.ZodString>;
204
+ savedAt: z.ZodNullable<z.ZodString>;
205
+ summary: z.ZodNullable<z.ZodString>;
206
+ heldBy: z.ZodNullable<z.ZodString>;
207
+ usedBy: z.ZodArray<z.ZodString>;
208
+ warnings: z.ZodArray<z.ZodString>;
209
+ canImport: z.ZodBoolean;
210
+ canLogin: z.ZodBoolean;
211
+ needsFile: z.ZodBoolean;
212
+ }, z.core.$strip>>;
122
213
  }, z.core.$strip>, "accounts.list">;
214
+ services: import("../../kernel/define.js").QueryDef<z.ZodObject<{
215
+ name: z.ZodOptional<z.ZodString>;
216
+ }, z.core.$strip>, z.ZodObject<{
217
+ services: z.ZodArray<z.ZodObject<{
218
+ kind: z.ZodString;
219
+ label: z.ZodString;
220
+ share: z.ZodBoolean;
221
+ state: z.ZodEnum<{
222
+ none: "none";
223
+ saved: "saved";
224
+ unreadable: "unreadable";
225
+ }>;
226
+ source: z.ZodNullable<z.ZodString>;
227
+ savedAt: z.ZodNullable<z.ZodString>;
228
+ summary: z.ZodNullable<z.ZodString>;
229
+ heldBy: z.ZodNullable<z.ZodString>;
230
+ usedBy: z.ZodArray<z.ZodString>;
231
+ warnings: z.ZodArray<z.ZodString>;
232
+ canImport: z.ZodBoolean;
233
+ canLogin: z.ZodBoolean;
234
+ needsFile: z.ZodBoolean;
235
+ }, z.core.$strip>>;
236
+ }, z.core.$strip>, "accounts.services">;
123
237
  }, Record<string, never>, "accounts">;