windows-development-sandbox 1.17.3 → 1.18.2

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 (315) hide show
  1. package/README.md +1 -1
  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-IIHL7W6B.js} +51 -16
  19. package/dist/bin/{chunk-XYUVIVJT.js → chunk-M4OM632I.js} +1 -1
  20. package/dist/bin/{chunk-REE3EMHD.js → chunk-MQIA7GNB.js} +3813 -1702
  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/apps/resolvers-gamedev.d.ts +2 -0
  73. package/dist/guest/apps/resolvers-gamedev.js +1 -0
  74. package/dist/guest/apps/resolvers-mobile.d.ts +2 -0
  75. package/dist/guest/apps/resolvers-mobile.js +1 -0
  76. package/dist/guest/apps/resolvers.js +4 -0
  77. package/dist/guest/boot/boot.d.ts +5 -0
  78. package/dist/guest/boot/boot.js +35 -1
  79. package/dist/guest/daemon/accounts.d.ts +3 -0
  80. package/dist/guest/daemon/accounts.js +25 -0
  81. package/dist/guest/daemon/daemon.js +2 -0
  82. package/dist/guest/daemon/idle-shutdown.js +3 -1
  83. package/dist/guest/daemon/sessions.js +2 -0
  84. package/dist/guest/devtools/android.d.ts +2 -0
  85. package/dist/guest/devtools/android.js +7 -0
  86. package/dist/guest/devtools/devtool.d.ts +9 -0
  87. package/dist/guest/devtools/devtool.js +5 -0
  88. package/dist/guest/devtools/fivem.d.ts +2 -0
  89. package/dist/guest/devtools/fivem.js +7 -0
  90. package/dist/guest/devtools/registry.d.ts +6 -0
  91. package/dist/guest/devtools/registry.js +12 -0
  92. package/dist/guest/devtools/steam.d.ts +2 -0
  93. package/dist/guest/devtools/steam.js +228 -0
  94. package/dist/guest/devtools/unity.d.ts +2 -0
  95. package/dist/guest/devtools/unity.js +7 -0
  96. package/dist/guest/entries/daemon.js +2 -0
  97. package/dist/guest/entries/tool.d.ts +1 -0
  98. package/dist/guest/entries/tool.js +17 -0
  99. package/dist/guest/toolchains/engines/godot.d.ts +4 -0
  100. package/dist/guest/toolchains/engines/godot.js +4 -0
  101. package/dist/guest/toolchains/engines/unity-release.d.ts +15 -0
  102. package/dist/guest/toolchains/engines/unity-release.js +6 -0
  103. package/dist/guest/toolchains/engines/unity.d.ts +4 -0
  104. package/dist/guest/toolchains/engines/unity.js +4 -0
  105. package/dist/guest/toolchains/engines/unreal-engines.d.ts +4 -0
  106. package/dist/guest/toolchains/engines/unreal-engines.js +4 -0
  107. package/dist/guest/toolchains/fivem/artifacts.d.ts +6 -0
  108. package/dist/guest/toolchains/fivem/artifacts.js +7 -0
  109. package/dist/guest/toolchains/fivem/fivem.d.ts +4 -0
  110. package/dist/guest/toolchains/fivem/fivem.js +4 -0
  111. package/dist/guest/toolchains/installers.d.ts +12 -0
  112. package/dist/guest/toolchains/installers.js +39 -0
  113. package/dist/guest/toolchains/languages/java.js +1 -1
  114. package/dist/guest/toolchains/languages/kotlin.d.ts +3 -0
  115. package/dist/guest/toolchains/languages/kotlin.js +6 -0
  116. package/dist/guest/toolchains/mobile/android-repo.d.ts +11 -0
  117. package/dist/guest/toolchains/mobile/android-repo.js +10 -0
  118. package/dist/guest/toolchains/mobile/android.d.ts +17 -0
  119. package/dist/guest/toolchains/mobile/android.js +16 -0
  120. package/dist/guest/toolchains/mobile/dart.d.ts +4 -0
  121. package/dist/guest/toolchains/mobile/dart.js +4 -0
  122. package/dist/guest/toolchains/mobile/flutter.d.ts +4 -0
  123. package/dist/guest/toolchains/mobile/flutter.js +4 -0
  124. package/dist/guest/toolchains/mobile/react-native.d.ts +4 -0
  125. package/dist/guest/toolchains/mobile/react-native.js +4 -0
  126. package/dist/guest/toolchains/native/unreal.d.ts +3 -7
  127. package/dist/guest/toolchains/native/unreal.js +16 -167
  128. package/dist/guest/toolchains/native/visual-studio.d.ts +15 -0
  129. package/dist/guest/toolchains/native/visual-studio.js +159 -0
  130. package/dist/guest/toolchains/native/vs-request.d.ts +19 -0
  131. package/dist/guest/toolchains/native/vs-request.js +46 -0
  132. package/dist/guest/toolchains/not-yet.d.ts +2 -0
  133. package/dist/guest/toolchains/not-yet.js +6 -0
  134. package/dist/guest/toolchains/persisted.d.ts +48 -0
  135. package/dist/guest/toolchains/persisted.js +159 -0
  136. package/dist/guest/toolchains/plan.js +80 -4
  137. package/dist/guest/toolchains/steam/apps.d.ts +27 -0
  138. package/dist/guest/toolchains/steam/apps.js +112 -0
  139. package/dist/guest/toolchains/steam/client.d.ts +5 -0
  140. package/dist/guest/toolchains/steam/client.js +67 -0
  141. package/dist/guest/toolchains/steam/commands.d.ts +58 -0
  142. package/dist/guest/toolchains/steam/commands.js +155 -0
  143. package/dist/guest/toolchains/steam/steam.d.ts +4 -0
  144. package/dist/guest/toolchains/steam/steam.js +61 -0
  145. package/dist/guest/toolchains/steam/steamcmd-install.d.ts +29 -0
  146. package/dist/guest/toolchains/steam/steamcmd-install.js +177 -0
  147. package/dist/guest/toolchains/steam/steamcmd.d.ts +6 -0
  148. package/dist/guest/toolchains/steam/steamcmd.js +23 -0
  149. package/dist/guest/toolchains/step.d.ts +10 -0
  150. package/dist/host/accounts/deliver.d.ts +26 -0
  151. package/dist/host/accounts/deliver.js +80 -0
  152. package/dist/host/accounts/handoff.d.ts +17 -0
  153. package/dist/host/accounts/handoff.js +110 -0
  154. package/dist/host/accounts/index.d.ts +6 -0
  155. package/dist/host/accounts/index.js +8 -0
  156. package/dist/host/accounts/kinds/appstore.d.ts +2 -0
  157. package/dist/host/accounts/kinds/appstore.js +10 -0
  158. package/dist/host/accounts/kinds/cfx.d.ts +2 -0
  159. package/dist/host/accounts/kinds/cfx.js +7 -0
  160. package/dist/host/accounts/kinds/epic.d.ts +2 -0
  161. package/dist/host/accounts/kinds/epic.js +15 -0
  162. package/dist/host/accounts/kinds/expo.d.ts +2 -0
  163. package/dist/host/accounts/kinds/expo.js +7 -0
  164. package/dist/host/accounts/kinds/keystore.d.ts +2 -0
  165. package/dist/host/accounts/kinds/keystore.js +7 -0
  166. package/dist/host/accounts/kinds/play.d.ts +2 -0
  167. package/dist/host/accounts/kinds/play.js +7 -0
  168. package/dist/host/accounts/kinds/steam.d.ts +6 -0
  169. package/dist/host/accounts/kinds/steam.js +31 -0
  170. package/dist/host/accounts/kinds/unity.d.ts +2 -0
  171. package/dist/host/accounts/kinds/unity.js +13 -0
  172. package/dist/host/accounts/leases.d.ts +40 -0
  173. package/dist/host/accounts/leases.js +62 -0
  174. package/dist/host/accounts/source.d.ts +21 -0
  175. package/dist/host/accounts/source.js +15 -0
  176. package/dist/host/accounts/sources.d.ts +5 -0
  177. package/dist/host/accounts/sources.js +18 -0
  178. package/dist/host/accounts/store.d.ts +23 -0
  179. package/dist/host/accounts/store.js +74 -0
  180. package/dist/host/audit/log.d.ts +1 -1
  181. package/dist/host/launch/generate.d.ts +2 -0
  182. package/dist/host/launch/generate.js +16 -1
  183. package/dist/host/launch/hints/android.d.ts +3 -0
  184. package/dist/host/launch/hints/android.js +3 -0
  185. package/dist/host/launch/hints/engines.d.ts +3 -0
  186. package/dist/host/launch/hints/engines.js +3 -0
  187. package/dist/host/launch/hints/fivem.d.ts +3 -0
  188. package/dist/host/launch/hints/fivem.js +3 -0
  189. package/dist/host/launch/hints/hint.d.ts +2 -0
  190. package/dist/host/launch/hints/hint.js +1 -0
  191. package/dist/host/launch/hints/index.d.ts +5 -0
  192. package/dist/host/launch/hints/index.js +29 -0
  193. package/dist/host/launch/hints/mobile.d.ts +3 -0
  194. package/dist/host/launch/hints/mobile.js +3 -0
  195. package/dist/host/launch/hints/steam.d.ts +7 -0
  196. package/dist/host/launch/hints/steam.js +59 -0
  197. package/dist/host/launch/index.d.ts +2 -2
  198. package/dist/host/launch/index.js +2 -2
  199. package/dist/host/launch/mappings.js +2 -0
  200. package/dist/host/launch/session-file.js +2 -0
  201. package/dist/host/launch/stage.js +10 -1
  202. package/dist/host/launch/toolchains.d.ts +7 -0
  203. package/dist/host/launch/toolchains.js +11 -0
  204. package/dist/host/pc-installs/discover.d.ts +19 -0
  205. package/dist/host/pc-installs/discover.js +59 -0
  206. package/dist/host/pc-installs/epic.d.ts +2 -0
  207. package/dist/host/pc-installs/epic.js +7 -0
  208. package/dist/host/pc-installs/index.d.ts +3 -0
  209. package/dist/host/pc-installs/index.js +2 -0
  210. package/dist/host/pc-installs/source.d.ts +9 -0
  211. package/dist/host/pc-installs/source.js +1 -0
  212. package/dist/host/pc-installs/steam.d.ts +16 -0
  213. package/dist/host/pc-installs/steam.js +143 -0
  214. package/dist/host/pc-installs/unity.d.ts +2 -0
  215. package/dist/host/pc-installs/unity.js +7 -0
  216. package/dist/host/pc-installs/unreal.d.ts +2 -0
  217. package/dist/host/pc-installs/unreal.js +7 -0
  218. package/dist/host/profile/accounts.d.ts +21 -6
  219. package/dist/host/profile/accounts.js +108 -28
  220. package/dist/host/profile/claude-login.d.ts +32 -2
  221. package/dist/host/profile/claude-login.js +101 -8
  222. package/dist/host/profile/index.d.ts +1 -1
  223. package/dist/host/profile/index.js +1 -1
  224. package/dist/host/secrets/launch-secrets.js +1 -0
  225. package/dist/runtime/agent.js +321 -9
  226. package/dist/runtime/daemon.js +1987 -604
  227. package/dist/runtime/db.js +334 -11
  228. package/dist/runtime/main.js +2519 -723
  229. package/dist/runtime/netproxy.js +321 -9
  230. package/dist/runtime/tool.js +28549 -0
  231. package/dist/runtime/view.js +321 -9
  232. package/dist/selftest/accounts.test.js +172 -1
  233. package/dist/selftest/agent-paths.test.js +1 -0
  234. package/dist/selftest/android.test.d.ts +2 -0
  235. package/dist/selftest/android.test.js +7 -0
  236. package/dist/selftest/app.test.js +1 -1
  237. package/dist/selftest/engines.test.d.ts +2 -0
  238. package/dist/selftest/engines.test.js +7 -0
  239. package/dist/selftest/fivem.test.d.ts +2 -0
  240. package/dist/selftest/fivem.test.js +7 -0
  241. package/dist/selftest/generate.test.js +1 -1
  242. package/dist/selftest/index.js +18 -0
  243. package/dist/selftest/menu-screens.js +1 -0
  244. package/dist/selftest/menu.test.js +2 -1
  245. package/dist/selftest/mobile.test.d.ts +2 -0
  246. package/dist/selftest/mobile.test.js +7 -0
  247. package/dist/selftest/pc-installs.test.d.ts +2 -0
  248. package/dist/selftest/pc-installs.test.js +111 -0
  249. package/dist/selftest/persisted-installs.test.d.ts +2 -0
  250. package/dist/selftest/persisted-installs.test.js +107 -0
  251. package/dist/selftest/projects.test.js +6 -4
  252. package/dist/selftest/service-accounts.test.d.ts +2 -0
  253. package/dist/selftest/service-accounts.test.js +320 -0
  254. package/dist/selftest/steam.test.d.ts +2 -0
  255. package/dist/selftest/steam.test.js +316 -0
  256. package/dist/selftest/storage-helper.test.js +31 -8
  257. package/dist/selftest/support/engine-golden.js +3 -0
  258. package/dist/selftest/support/fixtures.d.ts +87 -0
  259. package/dist/selftest/support/fixtures.js +4 -3
  260. package/dist/selftest/support/pc-memory.d.ts +2 -0
  261. package/dist/selftest/support/pc-memory.js +17 -0
  262. package/dist/selftest/support/web-preview.js +20 -1
  263. package/dist/selftest/unity.test.d.ts +2 -0
  264. package/dist/selftest/unity.test.js +7 -0
  265. package/dist/shared/accounts/fingerprint.d.ts +1 -0
  266. package/dist/shared/accounts/fingerprint.js +20 -0
  267. package/dist/shared/accounts/index.d.ts +5 -0
  268. package/dist/shared/accounts/index.js +7 -0
  269. package/dist/shared/accounts/kinds/epic.d.ts +10 -0
  270. package/dist/shared/accounts/kinds/epic.js +56 -0
  271. package/dist/shared/accounts/kinds/steam.d.ts +28 -0
  272. package/dist/shared/accounts/kinds/steam.js +99 -0
  273. package/dist/shared/accounts/kinds.d.ts +41 -0
  274. package/dist/shared/accounts/kinds.js +154 -0
  275. package/dist/shared/accounts/payloads.d.ts +151 -0
  276. package/dist/shared/accounts/payloads.js +128 -0
  277. package/dist/shared/apps/catalogue-gamedev.d.ts +2 -0
  278. package/dist/shared/apps/catalogue-gamedev.js +1 -0
  279. package/dist/shared/apps/catalogue-mobile.d.ts +2 -0
  280. package/dist/shared/apps/catalogue-mobile.js +1 -0
  281. package/dist/shared/apps/catalogue-modding.d.ts +2 -0
  282. package/dist/shared/apps/catalogue-modding.js +1 -0
  283. package/dist/shared/apps/catalogue.d.ts +1 -0
  284. package/dist/shared/apps/catalogue.js +6 -1
  285. package/dist/shared/channel/schema.d.ts +183 -0
  286. package/dist/shared/channel/secrets.d.ts +42 -0
  287. package/dist/shared/channel/secrets.js +3 -0
  288. package/dist/shared/download/downloader.d.ts +7 -0
  289. package/dist/shared/download/downloader.js +10 -3
  290. package/dist/shared/installs.d.ts +19 -0
  291. package/dist/shared/installs.js +13 -0
  292. package/dist/shared/io/bounded.d.ts +6 -0
  293. package/dist/shared/io/bounded.js +38 -0
  294. package/dist/shared/io/index.d.ts +2 -0
  295. package/dist/shared/io/index.js +2 -0
  296. package/dist/shared/io/text.d.ts +9 -0
  297. package/dist/shared/io/text.js +18 -0
  298. package/dist/shared/paths/guest-paths.js +1 -1
  299. package/dist/shared/paths/index.d.ts +1 -0
  300. package/dist/shared/paths/index.js +1 -0
  301. package/dist/shared/paths/pc-installs.d.ts +20 -0
  302. package/dist/shared/paths/pc-installs.js +19 -0
  303. package/dist/shared/vdf.d.ts +25 -0
  304. package/dist/shared/vdf.js +151 -0
  305. package/dist/sync/sync-cycle.js +9 -0
  306. package/dist/web/index.html +1 -1
  307. package/dist/web/{main-JTH3FT4O.js → main-CWIF4VQI.js} +63 -61
  308. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  309. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  310. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  311. package/package.json +1 -1
  312. package/sandbox/scripts/add-firewall-port.ps1 +13 -0
  313. package/sandbox/templates/fivem/README.txt +2 -0
  314. package/schemas/config.schema.json +485 -0
  315. package/schemas/sandbox-config.schema.json +416 -0
@@ -11,6 +11,7 @@ export type { SessionRow, SessionsList } from './sessions/sessions.def.js';
11
11
  export type { SettingRow, SettingsList } from './settings/settings.def.js';
12
12
  export type { VpnStatus } from './vpn/vpn.def.js';
13
13
  export type { GithubStatus } from './github/github.def.js';
14
+ export type { ServiceRow, ServicesList } from './accounts/services.def.js';
14
15
  export type { AccessStatus } from './access/access.def.js';
15
16
  export declare const OPERATIONS: readonly [OperationDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
16
17
  available: import("zod").ZodBoolean;
@@ -99,6 +100,7 @@ export declare const OPERATIONS: readonly [OperationDef<import("zod").ZodObject<
99
100
  agent: import("zod").ZodDefault<import("zod").ZodString>;
100
101
  name: import("zod").ZodOptional<import("zod").ZodString>;
101
102
  fromHost: import("zod").ZodDefault<import("zod").ZodBoolean>;
103
+ apiKey: import("zod").ZodDefault<import("zod").ZodBoolean>;
102
104
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
103
105
  name: import("zod").ZodString;
104
106
  message: import("zod").ZodString;
@@ -276,6 +278,20 @@ export declare const OPERATIONS: readonly [OperationDef<import("zod").ZodObject<
276
278
  deleted: import("zod").ZodBoolean;
277
279
  message: import("zod").ZodString;
278
280
  }, import("zod/v4/core").$strip>, "github.logout">, OperationDef<import("zod").ZodObject<{
281
+ name: import("zod").ZodOptional<import("zod").ZodString>;
282
+ from: import("zod").ZodOptional<import("zod").ZodString>;
283
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
284
+ message: import("zod").ZodString;
285
+ }, import("zod/v4/core").$strip>, "accounts.service.import">, OperationDef<import("zod").ZodObject<{
286
+ name: import("zod").ZodOptional<import("zod").ZodString>;
287
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
288
+ message: import("zod").ZodString;
289
+ }, import("zod/v4/core").$strip>, "accounts.service.login">, OperationDef<import("zod").ZodObject<{
290
+ name: import("zod").ZodOptional<import("zod").ZodString>;
291
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
292
+ deleted: import("zod").ZodBoolean;
293
+ message: import("zod").ZodString;
294
+ }, import("zod/v4/core").$strip>, "accounts.service.logout">, OperationDef<import("zod").ZodObject<{
279
295
  role: import("zod").ZodDefault<import("zod").ZodEnum<{
280
296
  view: "view";
281
297
  control: "control";
@@ -475,8 +491,33 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
475
491
  isDefault: import("zod").ZodBoolean;
476
492
  isActive: import("zod").ZodBoolean;
477
493
  savedAt: import("zod").ZodString;
494
+ kind: import("zod").ZodOptional<import("zod").ZodEnum<{
495
+ subscription: "subscription";
496
+ console: "console";
497
+ "api-key": "api-key";
498
+ }>>;
499
+ keyHint: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
478
500
  }, import("zod/v4/core").$strip>>;
479
501
  }, import("zod/v4/core").$strip>>;
502
+ services: import("zod").ZodArray<import("zod").ZodObject<{
503
+ kind: import("zod").ZodString;
504
+ label: import("zod").ZodString;
505
+ share: import("zod").ZodBoolean;
506
+ state: import("zod").ZodEnum<{
507
+ none: "none";
508
+ saved: "saved";
509
+ unreadable: "unreadable";
510
+ }>;
511
+ source: import("zod").ZodNullable<import("zod").ZodString>;
512
+ savedAt: import("zod").ZodNullable<import("zod").ZodString>;
513
+ summary: import("zod").ZodNullable<import("zod").ZodString>;
514
+ heldBy: import("zod").ZodNullable<import("zod").ZodString>;
515
+ usedBy: import("zod").ZodArray<import("zod").ZodString>;
516
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
517
+ canImport: import("zod").ZodBoolean;
518
+ canLogin: import("zod").ZodBoolean;
519
+ needsFile: import("zod").ZodBoolean;
520
+ }, import("zod/v4/core").$strip>>;
480
521
  }, import("zod/v4/core").$strip>, "accounts.list">, QueryDef<import("zod").ZodObject<{
481
522
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
482
523
  project: "project";
@@ -898,7 +939,29 @@ export declare const QUERIES: readonly [QueryDef<import("zod").ZodObject<{}, imp
898
939
  classic: "classic";
899
940
  }>>;
900
941
  savedAt: import("zod").ZodNullable<import("zod").ZodString>;
901
- }, import("zod/v4/core").$strip>, "github.status">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
942
+ }, import("zod/v4/core").$strip>, "github.status">, QueryDef<import("zod").ZodObject<{
943
+ name: import("zod").ZodOptional<import("zod").ZodString>;
944
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
945
+ services: import("zod").ZodArray<import("zod").ZodObject<{
946
+ kind: import("zod").ZodString;
947
+ label: import("zod").ZodString;
948
+ share: import("zod").ZodBoolean;
949
+ state: import("zod").ZodEnum<{
950
+ none: "none";
951
+ saved: "saved";
952
+ unreadable: "unreadable";
953
+ }>;
954
+ source: import("zod").ZodNullable<import("zod").ZodString>;
955
+ savedAt: import("zod").ZodNullable<import("zod").ZodString>;
956
+ summary: import("zod").ZodNullable<import("zod").ZodString>;
957
+ heldBy: import("zod").ZodNullable<import("zod").ZodString>;
958
+ usedBy: import("zod").ZodArray<import("zod").ZodString>;
959
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
960
+ canImport: import("zod").ZodBoolean;
961
+ canLogin: import("zod").ZodBoolean;
962
+ needsFile: import("zod").ZodBoolean;
963
+ }, import("zod/v4/core").$strip>>;
964
+ }, import("zod/v4/core").$strip>, "accounts.services">, QueryDef<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
902
965
  lan: import("zod").ZodObject<{
903
966
  enabled: import("zod").ZodBoolean;
904
967
  running: import("zod").ZodBoolean;
@@ -1104,9 +1167,57 @@ export declare const VIEWS: readonly [import("../kernel/define.js").ViewDef<{
1104
1167
  isDefault: import("zod").ZodBoolean;
1105
1168
  isActive: import("zod").ZodBoolean;
1106
1169
  savedAt: import("zod").ZodString;
1170
+ kind: import("zod").ZodOptional<import("zod").ZodEnum<{
1171
+ subscription: "subscription";
1172
+ console: "console";
1173
+ "api-key": "api-key";
1174
+ }>>;
1175
+ keyHint: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
1107
1176
  }, import("zod/v4/core").$strip>>;
1108
1177
  }, import("zod/v4/core").$strip>>;
1178
+ services: import("zod").ZodArray<import("zod").ZodObject<{
1179
+ kind: import("zod").ZodString;
1180
+ label: import("zod").ZodString;
1181
+ share: import("zod").ZodBoolean;
1182
+ state: import("zod").ZodEnum<{
1183
+ none: "none";
1184
+ saved: "saved";
1185
+ unreadable: "unreadable";
1186
+ }>;
1187
+ source: import("zod").ZodNullable<import("zod").ZodString>;
1188
+ savedAt: import("zod").ZodNullable<import("zod").ZodString>;
1189
+ summary: import("zod").ZodNullable<import("zod").ZodString>;
1190
+ heldBy: import("zod").ZodNullable<import("zod").ZodString>;
1191
+ usedBy: import("zod").ZodArray<import("zod").ZodString>;
1192
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
1193
+ canImport: import("zod").ZodBoolean;
1194
+ canLogin: import("zod").ZodBoolean;
1195
+ needsFile: import("zod").ZodBoolean;
1196
+ }, import("zod/v4/core").$strip>>;
1109
1197
  }, import("zod/v4/core").$strip>, "accounts.list">;
1198
+ services: QueryDef<import("zod").ZodObject<{
1199
+ name: import("zod").ZodOptional<import("zod").ZodString>;
1200
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1201
+ services: import("zod").ZodArray<import("zod").ZodObject<{
1202
+ kind: import("zod").ZodString;
1203
+ label: import("zod").ZodString;
1204
+ share: import("zod").ZodBoolean;
1205
+ state: import("zod").ZodEnum<{
1206
+ none: "none";
1207
+ saved: "saved";
1208
+ unreadable: "unreadable";
1209
+ }>;
1210
+ source: import("zod").ZodNullable<import("zod").ZodString>;
1211
+ savedAt: import("zod").ZodNullable<import("zod").ZodString>;
1212
+ summary: import("zod").ZodNullable<import("zod").ZodString>;
1213
+ heldBy: import("zod").ZodNullable<import("zod").ZodString>;
1214
+ usedBy: import("zod").ZodArray<import("zod").ZodString>;
1215
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
1216
+ canImport: import("zod").ZodBoolean;
1217
+ canLogin: import("zod").ZodBoolean;
1218
+ needsFile: import("zod").ZodBoolean;
1219
+ }, import("zod/v4/core").$strip>>;
1220
+ }, import("zod/v4/core").$strip>, "accounts.services">;
1110
1221
  }, Record<string, never>, "accounts">, import("../kernel/define.js").ViewDef<{
1111
1222
  apps: QueryDef<import("zod").ZodObject<{
1112
1223
  scope: import("zod").ZodDefault<import("zod").ZodEnum<{
@@ -1,5 +1,6 @@
1
1
  import { addAgent, agentsView, listAgents, makeDefaultAgent, removeAgent, startAgent } from './agents/agents.def.js';
2
2
  import { accountsView, defaultAccount, listAccounts, removeAccount, renameAccount, saveAccount, useAccount, } from './accounts/accounts.def.js';
3
+ import { listServices, serviceImport, serviceLogin, serviceLogout } from './accounts/services.def.js';
3
4
  import { appsView, listApps, requestApp, setCustomApps, toggleApp } from './apps/apps.def.js';
4
5
  import { browseFolder } from './files/files.def.js';
5
6
  import { checkEngine, cleanEngine, engineLeftovers, engineStatus, engineView } from './engine/engine.def.js';
@@ -67,6 +68,9 @@ export const OPERATIONS = [
67
68
  vpnLogout,
68
69
  githubLogin,
69
70
  githubLogout,
71
+ serviceImport,
72
+ serviceLogin,
73
+ serviceLogout,
70
74
  allowDevice,
71
75
  revokeAccess,
72
76
  revokeAllAccess,
@@ -97,6 +101,7 @@ export const QUERIES = [
97
101
  webStatus,
98
102
  vpnStatus,
99
103
  githubStatus,
104
+ listServices,
100
105
  accessStatus,
101
106
  ];
102
107
  export const VIEWS = [
@@ -6,8 +6,8 @@ export const CATEGORIES = [
6
6
  {
7
7
  id: 'general',
8
8
  label: 'General',
9
- description: 'Which agent starts, where the project appears in the sandbox, extra folders from this PC, and where the sandbox keeps its data.',
10
- keys: ['defaultHarness', 'harness', 'guestWorkspace', 'readOnly', 'mappings', 'scripts'],
9
+ description: 'Which agent starts, where the project appears in the sandbox, extra folders from this PC (and its games, engines and editors, read-only), and where the sandbox keeps its data.',
10
+ keys: ['defaultHarness', 'harness', 'guestWorkspace', 'readOnly', 'mappings', 'pcInstalls', 'scripts'],
11
11
  },
12
12
  {
13
13
  id: 'machine',
@@ -42,8 +42,8 @@ export const CATEGORIES = [
42
42
  {
43
43
  id: 'security',
44
44
  label: 'Security & privacy',
45
- description: 'Git-ignored files kept out, secrets kept out of the sandbox, a GitHub token for sandboxes (with its login set here), download checks, what is kept on this PC, and sharing your sandbox with other Windows users.',
46
- keys: ['workspaceFilter', 'audit', 'secrets', 'github', 'downloads', 'storage', 'sharing'],
45
+ description: 'Git-ignored files kept out, secrets kept out of the sandbox, a GitHub token for sandboxes (with its login set here), which service sign-ins sandboxes get (saved in Accounts), download checks, what is kept on this PC, and sharing your sandbox with other Windows users.',
46
+ keys: ['workspaceFilter', 'audit', 'secrets', 'github', 'accounts', 'downloads', 'storage', 'sharing'],
47
47
  },
48
48
  {
49
49
  id: 'projects',
@@ -68,6 +68,23 @@ const NAMES = {
68
68
  network: 'Network',
69
69
  vpn: 'VPN',
70
70
  github: 'GitHub',
71
+ accounts: 'Service sign-ins',
72
+ pcInstalls: 'Installs on this PC',
73
+ unreal: 'Unreal Engine',
74
+ unity: 'Unity',
75
+ godot: 'Godot',
76
+ steam: 'Steam (SteamCMD)',
77
+ fivem: 'FiveM / RedM server',
78
+ android: 'Android SDK',
79
+ flutter: 'Flutter',
80
+ dart: 'Dart',
81
+ reactNative: 'React Native / Expo',
82
+ epic: 'Epic Games',
83
+ cfx: 'Cfx.re',
84
+ keystore: 'Android upload keystore',
85
+ play: 'Google Play',
86
+ expo: 'Expo (EAS)',
87
+ appstore: 'App Store Connect',
71
88
  hooks: 'Hooks',
72
89
  personalization: 'Desktop look',
73
90
  projects: 'Projects',
@@ -1,7 +1,7 @@
1
1
  import { fail } from '../core/util/errors.js';
2
2
  import { accessNeeded, allows, invoke, OWNER, refusalText, NO_QUESTIONS, onSurface, } from './kernel/index.js';
3
3
  import { addAgentRun, listAgentsRun, makeDefaultAgentRun, removeAgentRun, startAgentRun, } from './features/agents/index.js';
4
- import { defaultAccountRun, listAccountsRun, removeAccountRun, renameAccountRun, saveAccountRun, useAccountRun, } from './features/accounts/index.js';
4
+ import { defaultAccountRun, listAccountsRun, removeAccountRun, renameAccountRun, saveAccountRun, useAccountRun, listServicesRun, serviceImportRun, serviceLoginRun, serviceLogoutRun, } from './features/accounts/index.js';
5
5
  import { listAppsRun, requestAppRun, setCustomAppsRun, toggleAppRun } from './features/apps/index.js';
6
6
  import { browseFolderRun } from './features/files/index.js';
7
7
  import { cleanDataRun, pruneStorageRun, showDataRun } from './features/data/index.js';
@@ -91,6 +91,10 @@ export const IMPLEMENTATIONS = [
91
91
  githubStatusRun,
92
92
  githubLoginRun,
93
93
  githubLogoutRun,
94
+ listServicesRun,
95
+ serviceImportRun,
96
+ serviceLoginRun,
97
+ serviceLogoutRun,
94
98
  webStatusRun,
95
99
  accessStatusRun,
96
100
  allowDeviceRun,
@@ -2,8 +2,8 @@
2
2
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
3
3
  import {
4
4
  run
5
- } from "./chunk-QLGGAG3D.js";
6
- import "./chunk-REE3EMHD.js";
5
+ } from "./chunk-IIHL7W6B.js";
6
+ import "./chunk-MQIA7GNB.js";
7
7
 
8
8
  // src/bin/agent-sandbox.ts
9
9
  run(process.argv.slice(2));
@@ -179,6 +179,8 @@ import {
179
179
  sandboxPage,
180
180
  sandboxPids,
181
181
  sandboxStatus,
182
+ serviceCategory,
183
+ servicePage,
182
184
  sessionsPage,
183
185
  sessionsToReopen,
184
186
  settingRow,
@@ -226,7 +228,7 @@ import {
226
228
  withOperationCommands,
227
229
  working,
228
230
  writeJson
229
- } from "./chunk-REE3EMHD.js";
231
+ } from "./chunk-MQIA7GNB.js";
230
232
 
231
233
  // node_modules/commander/lib/error.js
232
234
  var require_error = __commonJS({
@@ -3691,8 +3693,8 @@ var OptionSpecSchema = external_exports.strictObject({
3691
3693
  choices: ChoicesSchema.optional(),
3692
3694
  /** Advanced options are only asked in the menu after "Show advanced options". */
3693
3695
  advanced: external_exports.boolean().optional(),
3694
- /** Only asked in the menu when the command's first argument has this value (account save: --from-host). */
3695
- when: external_exports.string().optional(),
3696
+ /** Only asked in the menu when the command's first argument has this value, or one of these (account: --yes). */
3697
+ when: external_exports.union([external_exports.string(), external_exports.array(external_exports.string())]).optional(),
3696
3698
  /** Never offered in the menu (dangerous shortcuts such as --yes); typing it on the command line still works. */
3697
3699
  noMenu: external_exports.boolean().optional(),
3698
3700
  /** Heading for this option in the command's --help (launch: Session, Folder ...). */
@@ -3938,11 +3940,16 @@ var COMMAND_LIST = [
3938
3940
  },
3939
3941
  {
3940
3942
  name: "account",
3941
- summary: "Claude logins: list, save, use, set the default, remove",
3943
+ summary: "agent logins (list, save, use, default, remove) and service sign-ins (status, import, login, logout)",
3942
3944
  group: "Projects & accounts",
3943
3945
  examples: [
3944
3946
  "sandbox account save work save the login you signed in with inside the sandbox",
3945
- "sandbox account use work the sandbox uses it (running sessions restart)"
3947
+ "sandbox account use work the sandbox uses it (running sessions restart)",
3948
+ "sandbox account status the service sign-ins (Epic, Steam, Unity, signing keys ...)",
3949
+ "sandbox account import epic take this PC's Epic Games Launcher sign-in for sandboxes",
3950
+ "sandbox account login cfx type a FiveM server key to keep for sandboxes",
3951
+ "sandbox account logout steam forget a service sign-in",
3952
+ "sandbox account save free --api-key save an Anthropic API key you paste in (not shown)"
3946
3953
  ],
3947
3954
  args: [
3948
3955
  {
@@ -3951,7 +3958,12 @@ var COMMAND_LIST = [
3951
3958
  required: false,
3952
3959
  choices: ["list", "save", "use", "default", "rename", "remove"]
3953
3960
  },
3954
- { name: "name", description: "account name", required: false, choices: "accounts" }
3961
+ {
3962
+ name: "name",
3963
+ description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo or appstore",
3964
+ required: false,
3965
+ choices: "accounts"
3966
+ }
3955
3967
  ],
3956
3968
  options: [
3957
3969
  text("--to", "name", "(rename) the new name", { when: "rename", label: "New name" }),
@@ -3960,8 +3972,16 @@ var COMMAND_LIST = [
3960
3972
  label: "Agent"
3961
3973
  }),
3962
3974
  bool("--from-host", "(save) save this PC's login instead of the sandbox's", { when: "save" }),
3975
+ bool("--api-key", "(save) an Anthropic API key: typed in (hidden), or with --from-host this PC's", {
3976
+ when: "save"
3977
+ }),
3963
3978
  bool("--no-restart", "(use) do not restart running sessions", { when: "use" }),
3964
- bool("--yes", "(remove) do not ask first", { short: "-y", when: "remove", noMenu: true })
3979
+ text("--from", "path", "(import) the file or folder to take the sign-in from", { when: "import", label: "From" }),
3980
+ bool("--yes", "(remove, import, logout) do not ask first", {
3981
+ short: "-y",
3982
+ when: ["remove", "import", "logout"],
3983
+ noMenu: true
3984
+ })
3965
3985
  ],
3966
3986
  json
3967
3987
  },
@@ -7092,18 +7112,33 @@ var ListPage = class {
7092
7112
  // src/cli/menu/pages/accounts-page.ts
7093
7113
  function viewOf(m, category) {
7094
7114
  const agent = m.agents.find((a) => a.name === category);
7095
- return agent ? menuView(agentPage(agent), { category: agent.name, refresh: false }) : menuView({ title: "Accounts", sections: [] }, { refresh: false });
7115
+ if (agent) return menuView(agentPage(agent), { category: agent.name, refresh: false });
7116
+ const service = m.services.find((s) => serviceCategory(s.kind) === category);
7117
+ if (service) return menuView(servicePage(service), { category: serviceCategory(service.kind), refresh: false });
7118
+ return menuView({ title: "Accounts", sections: [] }, { refresh: false });
7096
7119
  }
7097
7120
  function accountsOptions(m) {
7098
7121
  return {
7099
7122
  path: [],
7100
- intro: "Logins saved on this PC, per agent. Use puts one into the sandbox; new launches start with the default.",
7101
- categories: m.agents.map((a) => ({
7102
- id: a.name,
7103
- label: a.name,
7104
- description: a.kept ? "Saved " + a.name + " logins." : "This agent's login is not kept between sandboxes: it cannot be pointed at a folder we control."
7105
- })),
7106
- items: m.agents.flatMap((a) => menuView(agentPage(a), { category: a.name, refresh: false }).items),
7123
+ intro: "Logins saved on this PC, per agent (Use puts one into the sandbox; new launches start with the default), and the service sign-ins sandboxes may get.",
7124
+ categories: [
7125
+ ...m.agents.map((a) => ({
7126
+ id: a.name,
7127
+ label: a.name,
7128
+ description: a.kept ? "Saved " + a.name + " logins." : "This agent's login is not kept between sandboxes: it cannot be pointed at a folder we control."
7129
+ })),
7130
+ ...m.services.map((s) => ({
7131
+ id: serviceCategory(s.kind),
7132
+ label: s.label,
7133
+ description: "Your " + s.label + " sign-in for sandboxes that use " + s.usedBy.join(" or ") + "."
7134
+ }))
7135
+ ],
7136
+ items: [
7137
+ ...m.agents.flatMap((a) => menuView(agentPage(a), { category: a.name, refresh: false }).items),
7138
+ ...m.services.flatMap(
7139
+ (s) => menuView(servicePage(s), { category: serviceCategory(s.kind), refresh: false }).items
7140
+ )
7141
+ ],
7107
7142
  empty: "No agents.",
7108
7143
  actions: (category) => viewOf(m, category).actions,
7109
7144
  enterLabel: (category, id) => viewOf(m, category).enterLabel(category, id)
@@ -7117,7 +7152,7 @@ var AccountsPage = class extends ListPage {
7117
7152
  }
7118
7153
  ctx;
7119
7154
  label = "Accounts";
7120
- model = { agent: "claude", agents: [] };
7155
+ model = { agent: "claude", agents: [], services: [] };
7121
7156
  operations;
7122
7157
  async load() {
7123
7158
  this.model = await readQuery(listAccounts, this.ctx);
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
2
  import {
3
3
  attach
4
- } from "./chunk-REE3EMHD.js";
4
+ } from "./chunk-MQIA7GNB.js";
5
5
  export {
6
6
  attach
7
7
  };