windows-development-sandbox 1.25.0 → 1.27.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 (287) hide show
  1. package/config.example.json +17 -5
  2. package/dist/app/features/accounts/services.def.d.ts +1 -1
  3. package/dist/app/features/accounts/services.def.js +1 -1
  4. package/dist/app/features/data/data.def.d.ts +4 -4
  5. package/dist/app/features/data/data.run.d.ts +1 -1
  6. package/dist/app/features/defs.d.ts +356 -6
  7. package/dist/app/features/defs.js +15 -0
  8. package/dist/app/features/projects/projects.def.d.ts +1 -1
  9. package/dist/app/features/projects/projects.run.d.ts +1 -1
  10. package/dist/app/features/settings/categories.def.js +1 -0
  11. package/dist/app/features/unity/index.d.ts +2 -0
  12. package/dist/app/features/unity/index.js +3 -0
  13. package/dist/app/features/unity/unity.def.d.ts +294 -0
  14. package/dist/app/features/unity/unity.def.js +471 -0
  15. package/dist/app/features/unity/unity.run.d.ts +142 -0
  16. package/dist/app/features/unity/unity.run.js +363 -0
  17. package/dist/app/features/unreal/index.d.ts +2 -0
  18. package/dist/app/features/unreal/index.js +3 -0
  19. package/dist/app/features/unreal/unreal.def.d.ts +236 -0
  20. package/dist/app/features/unreal/unreal.def.js +379 -0
  21. package/dist/app/features/unreal/unreal.run.d.ts +96 -0
  22. package/dist/app/features/unreal/unreal.run.js +217 -0
  23. package/dist/app/registry.js +11 -0
  24. package/dist/bin/agent-sandbox.js +2 -2
  25. package/dist/bin/{chunk-IZRGTSQ5.js → chunk-6WWMBCT2.js} +4632 -1941
  26. package/dist/bin/{chunk-SUYYVIDW.js → chunk-JXL6ZOO3.js} +126 -6
  27. package/dist/bin/{chunk-KH4MI2U5.js → chunk-ZXCAVVS4.js} +1 -1
  28. package/dist/bin/claude-host.js +2 -2
  29. package/dist/bin/claude-sbx.js +2 -2
  30. package/dist/bin/codex-sbx.js +2 -2
  31. package/dist/bin/gemini-sbx.js +2 -2
  32. package/dist/bin/sandbox.js +2 -2
  33. package/dist/bin/sbx-hide.js +2 -2
  34. package/dist/bin/sbx-show.js +2 -2
  35. package/dist/cli/commands/launch/launch.js +17 -2
  36. package/dist/cli/commands/registry.js +6 -0
  37. package/dist/cli/manifest.d.ts +51 -1
  38. package/dist/cli/manifest.js +58 -1
  39. package/dist/cli/menu/coverage-exempt.js +2 -0
  40. package/dist/cli/menu/pages/sandbox-page.d.ts +6 -0
  41. package/dist/cli/menu/pages/sandbox-page.js +71 -4
  42. package/dist/cli/menu/views.js +4 -0
  43. package/dist/core/config/defaults.js +33 -6
  44. package/dist/core/schema/accounts.d.ts +3 -0
  45. package/dist/core/schema/accounts.js +1 -0
  46. package/dist/core/schema/config.d.ts +32 -14
  47. package/dist/core/schema/github.d.ts +1 -0
  48. package/dist/core/schema/github.js +3 -0
  49. package/dist/core/schema/pc-installs.d.ts +5 -2
  50. package/dist/core/schema/pc-installs.js +16 -2
  51. package/dist/core/schema/toolchains.d.ts +8 -0
  52. package/dist/core/schema/toolchains.js +20 -5
  53. package/dist/guest/accounts/adapters.js +2 -0
  54. package/dist/guest/accounts/apply.d.ts +4 -2
  55. package/dist/guest/accounts/kinds/epic.js +18 -13
  56. package/dist/guest/accounts/kinds/perplexityapp.d.ts +7 -0
  57. package/dist/guest/accounts/kinds/perplexityapp.js +53 -0
  58. package/dist/guest/accounts/kinds/unity.d.ts +27 -0
  59. package/dist/guest/accounts/kinds/unity.js +164 -7
  60. package/dist/guest/apps/after-install.d.ts +1 -1
  61. package/dist/guest/apps/after-install.js +6 -1
  62. package/dist/guest/apps/app-installer.d.ts +1 -0
  63. package/dist/guest/apps/app-installer.js +31 -3
  64. package/dist/guest/apps/comet-unpack.js +3 -2
  65. package/dist/guest/apps/resolvers-gamedev.js +55 -1
  66. package/dist/guest/apps/store-app.d.ts +4 -0
  67. package/dist/guest/apps/store-app.js +19 -0
  68. package/dist/guest/apps/store-check.d.ts +8 -0
  69. package/dist/guest/apps/store-check.js +33 -0
  70. package/dist/guest/boot/boot.js +15 -2
  71. package/dist/guest/boot/guide.js +42 -0
  72. package/dist/guest/browser/comet.d.ts +3 -1
  73. package/dist/guest/browser/comet.js +1 -1
  74. package/dist/guest/browser/perplexity-app.d.ts +12 -0
  75. package/dist/guest/browser/perplexity-app.js +60 -0
  76. package/dist/guest/daemon/daemon.js +5 -0
  77. package/dist/guest/devtools/devtool.d.ts +1 -1
  78. package/dist/guest/devtools/registry.js +1 -2
  79. package/dist/guest/entries/tool.js +1 -1
  80. package/dist/guest/setup/addon-mcp.d.ts +12 -0
  81. package/dist/guest/setup/addon-mcp.js +29 -4
  82. package/dist/guest/setup/browser-gpu.js +14 -11
  83. package/dist/guest/setup/github-token.js +4 -4
  84. package/dist/guest/setup/headroom.js +4 -0
  85. package/dist/guest/setup/unity-agent.d.ts +11 -0
  86. package/dist/guest/setup/unity-agent.js +36 -0
  87. package/dist/guest/toolchains/engines/epic-launcher.d.ts +26 -0
  88. package/dist/guest/toolchains/engines/epic-launcher.js +127 -0
  89. package/dist/guest/toolchains/engines/unity-cli.d.ts +24 -0
  90. package/dist/guest/toolchains/engines/unity-cli.js +74 -0
  91. package/dist/guest/toolchains/engines/unity-hub.d.ts +2 -0
  92. package/dist/guest/toolchains/engines/unity-hub.js +27 -0
  93. package/dist/guest/toolchains/engines/unity-release.d.ts +4 -15
  94. package/dist/guest/toolchains/engines/unity-release.js +17 -5
  95. package/dist/guest/toolchains/engines/unity-status.d.ts +11 -0
  96. package/dist/guest/toolchains/engines/unity-status.js +39 -0
  97. package/dist/guest/toolchains/engines/unity.d.ts +20 -1
  98. package/dist/guest/toolchains/engines/unity.js +250 -3
  99. package/dist/guest/toolchains/engines/unreal-engines.d.ts +21 -1
  100. package/dist/guest/toolchains/engines/unreal-engines.js +163 -3
  101. package/dist/guest/toolchains/engines/unreal-status.d.ts +13 -0
  102. package/dist/guest/toolchains/engines/unreal-status.js +41 -0
  103. package/dist/guest/toolchains/native/debuggers.d.ts +6 -0
  104. package/dist/guest/toolchains/native/debuggers.js +57 -0
  105. package/dist/guest/toolchains/native/mesa.js +15 -8
  106. package/dist/guest/toolchains/native/rust-extras.d.ts +7 -0
  107. package/dist/guest/toolchains/native/rust-extras.js +23 -1
  108. package/dist/guest/toolchains/native/unreal.d.ts +2 -2
  109. package/dist/guest/toolchains/native/unreal.js +96 -18
  110. package/dist/guest/toolchains/plan.js +17 -2
  111. package/dist/guest/toolchains/tools/cli.js +2 -2
  112. package/dist/guest/toolchains/tools/vscode-profile.js +2 -0
  113. package/dist/host/accounts/deliver.js +4 -0
  114. package/dist/host/accounts/kinds/epic.js +11 -5
  115. package/dist/host/accounts/kinds/perplexityapp.d.ts +2 -0
  116. package/dist/host/accounts/kinds/perplexityapp.js +8 -0
  117. package/dist/host/accounts/kinds/unity.d.ts +1 -1
  118. package/dist/host/accounts/kinds/unity.js +60 -8
  119. package/dist/host/accounts/leases.d.ts +2 -1
  120. package/dist/host/accounts/source.d.ts +2 -0
  121. package/dist/host/accounts/source.js +1 -0
  122. package/dist/host/accounts/sources.js +2 -0
  123. package/dist/host/apps/index.d.ts +1 -0
  124. package/dist/host/apps/index.js +2 -0
  125. package/dist/host/apps/store-package.d.ts +51 -0
  126. package/dist/host/apps/store-package.js +209 -0
  127. package/dist/host/github/deliver.d.ts +8 -3
  128. package/dist/host/github/deliver.js +42 -29
  129. package/dist/host/github/index.d.ts +1 -0
  130. package/dist/host/github/index.js +1 -0
  131. package/dist/host/github/pc-login.d.ts +27 -0
  132. package/dist/host/github/pc-login.js +129 -0
  133. package/dist/host/pc-installs/discover.d.ts +6 -0
  134. package/dist/host/pc-installs/discover.js +37 -5
  135. package/dist/host/pc-installs/epic.d.ts +3 -0
  136. package/dist/host/pc-installs/epic.js +33 -2
  137. package/dist/host/pc-installs/source.d.ts +1 -1
  138. package/dist/host/pc-installs/unity-assets.d.ts +5 -0
  139. package/dist/host/pc-installs/unity-assets.js +18 -0
  140. package/dist/host/pc-installs/unity.d.ts +20 -0
  141. package/dist/host/pc-installs/unity.js +135 -2
  142. package/dist/host/pc-installs/unreal-vault.d.ts +11 -0
  143. package/dist/host/pc-installs/unreal-vault.js +78 -0
  144. package/dist/host/pc-installs/unreal.d.ts +36 -0
  145. package/dist/host/pc-installs/unreal.js +145 -2
  146. package/dist/host/profile/claude-profile.d.ts +8 -0
  147. package/dist/host/profile/claude-profile.js +43 -4
  148. package/dist/host/profile/index.d.ts +1 -1
  149. package/dist/host/profile/index.js +1 -1
  150. package/dist/runtime/agent.js +197 -18
  151. package/dist/runtime/daemon.js +3938 -1386
  152. package/dist/runtime/db.js +197 -18
  153. package/dist/runtime/main.js +4336 -1978
  154. package/dist/runtime/netproxy.js +197 -18
  155. package/dist/runtime/tool.js +214 -38
  156. package/dist/runtime/view.js +197 -18
  157. package/dist/selftest/agent-paths.test.js +1 -0
  158. package/dist/selftest/agents-web.test.js +14 -1
  159. package/dist/selftest/engines.test.js +602 -3
  160. package/dist/selftest/github.test.js +64 -1
  161. package/dist/selftest/heavy-load.test.js +3 -1
  162. package/dist/selftest/hostile-input.test.js +11 -1
  163. package/dist/selftest/index.js +12 -0
  164. package/dist/selftest/menu-screens.js +5 -1
  165. package/dist/selftest/mixamo.test.d.ts +2 -0
  166. package/dist/selftest/mixamo.test.js +60 -0
  167. package/dist/selftest/persisted-installs.test.js +1 -1
  168. package/dist/selftest/secrets.test.js +36 -1
  169. package/dist/selftest/service-accounts.test.js +1 -1
  170. package/dist/selftest/store-app.test.d.ts +2 -0
  171. package/dist/selftest/store-app.test.js +162 -0
  172. package/dist/selftest/support/engine-golden.js +10 -0
  173. package/dist/selftest/support/fixtures.d.ts +13 -2
  174. package/dist/selftest/support/unity-sample.d.ts +2 -0
  175. package/dist/selftest/support/unity-sample.js +80 -0
  176. package/dist/selftest/support/unreal-sample.d.ts +2 -0
  177. package/dist/selftest/support/unreal-sample.js +83 -0
  178. package/dist/selftest/toolchains.test.js +32 -2
  179. package/dist/selftest/unity-accounts.test.d.ts +2 -0
  180. package/dist/selftest/unity-accounts.test.js +106 -0
  181. package/dist/selftest/unity-agent.test.d.ts +2 -0
  182. package/dist/selftest/unity-agent.test.js +47 -0
  183. package/dist/selftest/unity-page.test.d.ts +2 -0
  184. package/dist/selftest/unity-page.test.js +177 -0
  185. package/dist/selftest/unity-setup.test.d.ts +2 -0
  186. package/dist/selftest/unity-setup.test.js +49 -0
  187. package/dist/selftest/unity.test.js +238 -3
  188. package/dist/shared/accounts/index.d.ts +2 -1
  189. package/dist/shared/accounts/index.js +2 -1
  190. package/dist/shared/accounts/kinds/epic.d.ts +6 -1
  191. package/dist/shared/accounts/kinds/epic.js +11 -1
  192. package/dist/shared/accounts/kinds/unity.d.ts +28 -0
  193. package/dist/shared/accounts/kinds/unity.js +88 -0
  194. package/dist/shared/accounts/kinds.d.ts +2 -2
  195. package/dist/shared/accounts/kinds.js +23 -1
  196. package/dist/shared/accounts/payloads.d.ts +52 -0
  197. package/dist/shared/accounts/payloads.js +14 -2
  198. package/dist/shared/apps/associations.d.ts +7 -0
  199. package/dist/shared/apps/associations.js +26 -0
  200. package/dist/shared/apps/catalogue-agents-web.d.ts +11 -1
  201. package/dist/shared/apps/catalogue-agents-web.js +28 -2
  202. package/dist/shared/apps/catalogue-gamedev.d.ts +3 -0
  203. package/dist/shared/apps/catalogue-gamedev.js +102 -1
  204. package/dist/shared/apps/catalogue.d.ts +8 -0
  205. package/dist/shared/apps/index.d.ts +5 -2
  206. package/dist/shared/apps/index.js +5 -2
  207. package/dist/shared/apps/preview.d.ts +2 -0
  208. package/dist/shared/apps/preview.js +10 -0
  209. package/dist/shared/apps/selection.d.ts +6 -0
  210. package/dist/shared/apps/selection.js +9 -0
  211. package/dist/shared/apps/store-package.d.ts +31 -0
  212. package/dist/shared/apps/store-package.js +34 -0
  213. package/dist/shared/browser-policy.d.ts +14 -0
  214. package/dist/shared/browser-policy.js +22 -0
  215. package/dist/shared/channel/schema.d.ts +24 -0
  216. package/dist/shared/channel/secrets.d.ts +17 -0
  217. package/dist/shared/io/index.d.ts +1 -0
  218. package/dist/shared/io/index.js +1 -0
  219. package/dist/shared/io/rotate-log.d.ts +2 -0
  220. package/dist/shared/io/rotate-log.js +16 -0
  221. package/dist/shared/memory/policy.d.ts +5 -0
  222. package/dist/shared/memory/policy.js +7 -0
  223. package/dist/shared/paths/pc-installs.d.ts +13 -2
  224. package/dist/shared/paths/pc-installs.js +2 -0
  225. package/dist/shared/readiness.d.ts +2 -3
  226. package/dist/shared/readiness.js +2 -3
  227. package/dist/shared/signer.d.ts +4 -0
  228. package/dist/shared/signer.js +2 -0
  229. package/dist/shared/unity/asset-cache.d.ts +20 -0
  230. package/dist/shared/unity/asset-cache.js +44 -0
  231. package/dist/shared/unity/cli.d.ts +40 -0
  232. package/dist/shared/unity/cli.js +77 -0
  233. package/dist/shared/unity/editors.d.ts +46 -0
  234. package/dist/shared/unity/editors.js +89 -0
  235. package/dist/shared/unity/guide.d.ts +9 -0
  236. package/dist/shared/unity/guide.js +84 -0
  237. package/dist/shared/unity/index.d.ts +9 -0
  238. package/dist/shared/unity/index.js +11 -0
  239. package/dist/shared/unity/manifest.d.ts +10 -0
  240. package/dist/shared/unity/manifest.js +53 -0
  241. package/dist/shared/unity/mcp.d.ts +8 -0
  242. package/dist/shared/unity/mcp.js +12 -0
  243. package/dist/shared/unity/release.d.ts +28 -0
  244. package/dist/shared/unity/release.js +83 -0
  245. package/dist/shared/unity/status.d.ts +59 -0
  246. package/dist/shared/unity/status.js +45 -0
  247. package/dist/shared/unity/version.d.ts +27 -0
  248. package/dist/shared/unity/version.js +75 -0
  249. package/dist/shared/unreal/engines.d.ts +161 -0
  250. package/dist/shared/unreal/engines.js +308 -0
  251. package/dist/shared/unreal/guide.d.ts +19 -0
  252. package/dist/shared/unreal/guide.js +105 -0
  253. package/dist/shared/unreal/index.d.ts +7 -0
  254. package/dist/shared/unreal/index.js +8 -0
  255. package/dist/shared/unreal/launcher-files.d.ts +88 -0
  256. package/dist/shared/unreal/launcher-files.js +292 -0
  257. package/dist/shared/unreal/mixamo.d.ts +5 -0
  258. package/dist/shared/unreal/mixamo.js +16 -0
  259. package/dist/shared/unreal/room.d.ts +17 -0
  260. package/dist/shared/unreal/room.js +34 -0
  261. package/dist/shared/unreal/status.d.ts +54 -0
  262. package/dist/shared/unreal/status.js +57 -0
  263. package/dist/shared/unreal/vault.d.ts +21 -0
  264. package/dist/shared/unreal/vault.js +67 -0
  265. package/dist/shared/unreal/vs-check.d.ts +39 -0
  266. package/dist/shared/unreal/vs-check.js +79 -0
  267. package/dist/web/index.html +1 -1
  268. package/dist/web/{main-CCILLX2M.js → main-VPMYTSUL.js} +87 -87
  269. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  270. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  271. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  272. package/native/scripts/get-store-package.ps1 +58 -0
  273. package/package.json +1 -1
  274. package/sandbox/addons/openupm-cli/package-lock.json +2921 -0
  275. package/sandbox/addons/openupm-cli/package.json +7 -0
  276. package/sandbox/addons/unity-mcp/requirements.in +1 -0
  277. package/sandbox/addons/unity-mcp/requirements.txt +1165 -0
  278. package/sandbox/csharp/AppActivation.cs +38 -0
  279. package/sandbox/csharp/VsSetup.cs +210 -0
  280. package/sandbox/scripts/get-vs-setup.ps1 +93 -0
  281. package/sandbox/scripts/install-store-package.ps1 +28 -0
  282. package/sandbox/scripts/set-registry-values.ps1 +35 -0
  283. package/sandbox/scripts/start-store-app.ps1 +29 -0
  284. package/schemas/config.schema.json +96 -8
  285. package/schemas/sandbox-config.schema.json +46 -6
  286. package/dist/guest/devtools/unity.d.ts +0 -2
  287. package/dist/guest/devtools/unity.js +0 -7
@@ -26051,7 +26051,7 @@ var ToolchainsSchema = external_exports.strictObject({
26051
26051
  `"auto" (default): on the sandbox's own disk when C: has 25 GB free at boot, else "separate" (builds then write through the mapped workspace, which can overload this PC's disk). "shared": cargo's default target\\ (shared with builds on this PC, so builds on either side invalidate the other), "separate": <workspace>\\target\\sandbox (kept, no cross-talk), "local": on the sandbox's own disk (fastest, lost every boot), or a guest path.`
26052
26052
  ),
26053
26053
  linker: external_exports.enum(["lld", "gnu"]).describe(
26054
- `GNU host: "lld" links with Rust's own lld through MinGW's gcc (much less memory than GNU ld), "gnu" with GNU ld.`
26054
+ `"lld" (default) links with Rust's own lld: through MinGW's gcc on the GNU host (much less memory than GNU ld), and instead of link.exe on the MSVC host (link.exe writes executables into mapped folders as all zeros: os error 1392). "gnu" keeps GNU ld / link.exe.`
26055
26055
  ),
26056
26056
  linkSlots: external_exports.union([external_exports.literal("auto"), external_exports.number().int().min(1).max(32)]).describe(
26057
26057
  'GNU host: how many programs may link at the same time in the whole sandbox (other links wait). "auto" = one per 6 GB of sandbox memory, 1 to 4 (the memory governor slows links down too when memory runs short).'
@@ -26091,21 +26091,35 @@ var ToolchainsSchema = external_exports.strictObject({
26091
26091
  }),
26092
26092
  unity: external_exports.strictObject({
26093
26093
  enabled: enabled(
26094
- "Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed into tools\\unity\\<version> (6-7 GB each), with the modules you list.",
26094
+ "Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed on the data disk (tools\\unity\\editors\\<version>, 8-13 GB each, kept between sandboxes), with the modules you list. This PC's editors (pcInstalls.unityEditors) are used first.",
26095
26095
  "ProjectSettings/ProjectVersion.txt"
26096
26096
  ),
26097
26097
  acceptLicense: external_exports.boolean().describe(
26098
26098
  "Required to install: you accept the Unity terms of service (https://unity.com/legal/terms-of-service), and the editor needs a Unity licence (Personal is free). A project file cannot accept it for you."
26099
26099
  ),
26100
26100
  version: external_exports.string().min(1).describe(
26101
- '"project" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as "6000.0.32f1".'
26101
+ `"project" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as "6000.0.32f1" for folders without one (a project's own version always wins).`
26102
26102
  ),
26103
26103
  modules: external_exports.array(external_exports.string().regex(/^[a-z0-9-]+$/)).describe(
26104
26104
  `Editor modules to add: "android" (4-5 GB, also the Android SDK), "webgl" (1.5 GB), "windows-il2cpp" (adds Visual Studio's C++ parts), "ios" (Xcode project export only: iOS builds need a Mac).`
26105
26105
  ),
26106
- hub: external_exports.boolean().describe("Also Unity Hub, with the installed editors listed in it."),
26106
+ hub: external_exports.boolean().describe(
26107
+ "Also Unity Hub (kept on the data disk), for signing in to Unity Personal and installing editors by hand."
26108
+ ),
26107
26109
  keepVersions: external_exports.number().int().min(1).max(20).describe(
26108
26110
  "How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first)."
26111
+ ),
26112
+ mcp: external_exports.boolean().describe(
26113
+ "The Unity CLI's MCP server (unity mcp) in Claude Code and Codex as sbx-unity: Unity's read-only tools always, the open editor's tools when the project has the Unity Pipeline package (Unity 6 and later). Nothing in your project changes."
26114
+ ),
26115
+ agentSkills: external_exports.boolean().describe(
26116
+ "Unity's skills for Claude Code and Codex, from Unity-Technologies/skills at the commit the Unity CLI pins."
26117
+ ),
26118
+ cliVersion: external_exports.string().regex(/^(latest|\d+\.\d+\.\d+(-[A-Za-z0-9.]+)?)$/).describe(
26119
+ 'The Unity CLI version, checked against the SHA-256 Unity publishes: a version such as "1.0.0-beta.16", or "latest". It never updates itself.'
26120
+ ),
26121
+ assetCache: external_exports.enum(["persisted", "pc", "local"]).describe(
26122
+ `"persisted": Asset Store downloads made in the sandbox go to tools\\unity\\asset-store (kept). "pc": the sandbox uses this PC's Asset Store downloads (read-only; download new ones on your PC). "local": Unity's own place on the sandbox disk (lost when it closes).`
26109
26123
  )
26110
26124
  }),
26111
26125
  godot: external_exports.strictObject({
@@ -26257,7 +26271,7 @@ var ToolchainsSchema = external_exports.strictObject({
26257
26271
  }),
26258
26272
  cli: external_exports.strictObject({
26259
26273
  gh: EnabledSchema.describe(
26260
- 'GitHub CLI (gh). Only with provisioning.git.access "full": gh can push and merge through the GitHub API, past a read-only git. Your PC\'s gh login is never copied; `gh auth login` inside persists (GH_CONFIG_DIR), unless a token you saved for sandboxes is handed over (github.shareToken). "auto" = when the project has a .github folder.'
26274
+ 'GitHub CLI (gh). Only with provisioning.git.access "full": gh can push and merge through the GitHub API, past a read-only git. Your PC\'s gh login is copied only with github.usePcLogin (or a token you saved for sandboxes with github.shareToken); otherwise `gh auth login` inside persists (GH_CONFIG_DIR). "auto" = when the project has a .github folder.'
26261
26275
  ),
26262
26276
  zstd: EnabledSchema.describe('Zstandard (zstd). "auto" = off; set true to get it.'),
26263
26277
  openssl: EnabledSchema.describe(
@@ -26309,9 +26323,12 @@ var CHROME_DEVTOOLS_MCP_VERSION = "1.12.0";
26309
26323
  var BROWSER_USE_VERSION = "0.13.14";
26310
26324
  var PERPLEXITY_COMPUTER_MCP_URL = "https://www.perplexity.ai/rest/computer/mcp";
26311
26325
  var COMET_SIGNER = {
26312
- subject: ['^CN="?PERPLEXITY AI, INC\\.?"?(,|$)', '(^|, )O="?PERPLEXITY AI, INC\\.?"?(,|$)'],
26326
+ subject: ['(^|, )CN="?PERPLEXITY AI, INC\\.?"?(,|$)', '(^|, )O="?PERPLEXITY AI, INC\\.?"?(,|$)'],
26313
26327
  issuer: ["^CN=GlobalSign GCC R45 EV CodeSigning CA 2020(,|$)"]
26314
26328
  };
26329
+ var PERPLEXITY_DESKTOP_PRODUCT_ID = "9P9XG917PWCJ";
26330
+ var PERPLEXITY_DESKTOP_PACKAGE = "PerplexityAI.PerplexityApp";
26331
+ var PERPLEXITY_DESKTOP_FAMILY = "PerplexityAI.PerplexityApp_3jh4kjrg4dzr2";
26315
26332
  var EDGE_EXE = "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe";
26316
26333
  var AGENTS_WEB_APPS = [
26317
26334
  {
@@ -26358,6 +26375,22 @@ var AGENTS_WEB_APPS = [
26358
26375
  signer: COMET_SIGNER,
26359
26376
  userOnly: true
26360
26377
  },
26378
+ {
26379
+ id: "perplexity-desktop",
26380
+ name: "Perplexity (desktop app)",
26381
+ category: "agents",
26382
+ about: "Perplexity's desktop app, with Perplexity Computer, from the Microsoft Store. The package comes from this PC (winget with your own Microsoft Store access) and is kept on the data disk; the sandbox installs it on every boot. With accounts.perplexityapp.share on, your sign-in made in a sandbox is kept for the next ones (it cannot be copied from this PC). It acts on what it reads: use it only on what you would let it act on.",
26383
+ size: "300 MB",
26384
+ source: {
26385
+ store: {
26386
+ productId: PERPLEXITY_DESKTOP_PRODUCT_ID,
26387
+ packageName: PERPLEXITY_DESKTOP_PACKAGE,
26388
+ family: PERPLEXITY_DESKTOP_FAMILY
26389
+ }
26390
+ },
26391
+ exe: "",
26392
+ userOnly: true
26393
+ },
26361
26394
  {
26362
26395
  id: "comet-mcp",
26363
26396
  name: "Comet MCP",
@@ -26411,7 +26444,107 @@ var AGENTS_WEB_APPS = [
26411
26444
  ];
26412
26445
 
26413
26446
  // src/shared/apps/catalogue-gamedev.ts
26414
- var GAMEDEV_APPS = [];
26447
+ var UNITY_MCP_VERSION = "10.3.0";
26448
+ var OPENUPM_CLI_VERSION = "4.5.3";
26449
+ var GAMEDEV_APPS = [
26450
+ {
26451
+ id: "krita",
26452
+ name: "Krita",
26453
+ category: "gamedev",
26454
+ about: "Painting and texture editor (PSD, layers, brushes), checked against the SHA-256 download.kde.org publishes.",
26455
+ size: "450 MB",
26456
+ source: { resolve: "krita" },
26457
+ exe: "krita.exe",
26458
+ needs: ["mesa"]
26459
+ },
26460
+ {
26461
+ id: "inkscape",
26462
+ name: "Inkscape",
26463
+ category: "gamedev",
26464
+ about: "Vector graphics for UI, icons and 2D art (SVG), checked against the SHA-256 inkscape.org publishes.",
26465
+ size: "400 MB",
26466
+ source: { resolve: "inkscape" },
26467
+ exe: "inkscape.exe",
26468
+ needs: ["7zip"]
26469
+ },
26470
+ {
26471
+ id: "audacity",
26472
+ name: "Audacity",
26473
+ category: "gamedev",
26474
+ about: "Records and edits sound effects and music (WAV, OGG, FLAC).",
26475
+ size: "80 MB",
26476
+ source: { github: "audacity/audacity", asset: "^audacity-win-[\\d.]+-(?:64bit\\.zip|x86_64\\.7z)$" },
26477
+ exe: "Audacity.exe",
26478
+ needs: ["7zip"]
26479
+ },
26480
+ {
26481
+ id: "renderdoc",
26482
+ name: "RenderDoc",
26483
+ category: "gamedev",
26484
+ about: "Captures a frame of a game (Unreal's -d3d12/-vulkan builds) to inspect every draw call, texture and shader. Needs the sandbox's GPU (vGPU) for live captures.",
26485
+ size: "70 MB",
26486
+ source: { resolve: "renderdoc" },
26487
+ exe: "qrenderdoc.exe"
26488
+ },
26489
+ {
26490
+ id: "f3d",
26491
+ name: "F3D",
26492
+ category: "gamedev",
26493
+ about: "Fast 3D viewer (FBX, glTF/GLB, OBJ, STL, PLY, 3DS, USD); renders still previews from the command line.",
26494
+ size: "100 MB",
26495
+ source: { github: "f3d-app/f3d", asset: "^F3D-[\\d.]+-Windows-x86_64\\.zip$" },
26496
+ exe: "f3d.exe",
26497
+ needs: ["mesa"]
26498
+ },
26499
+ {
26500
+ id: "imagemagick",
26501
+ name: "ImageMagick",
26502
+ category: "gamedev",
26503
+ about: "Converts and thumbnails textures (TGA, PSD, DDS, EXR, HDR) and builds contact sheets (magick montage).",
26504
+ size: "150 MB",
26505
+ source: { github: "ImageMagick/ImageMagick", asset: "^ImageMagick-[\\d.]+-\\d+-portable-Q16-HDRI-x64\\.7z$" },
26506
+ exe: "magick.exe",
26507
+ cli: true,
26508
+ needs: ["7zip"]
26509
+ },
26510
+ {
26511
+ id: "nomacs",
26512
+ name: "nomacs",
26513
+ category: "gamedev",
26514
+ about: "Image viewer for textures (TGA, PSD, DDS, EXR).",
26515
+ size: "60 MB",
26516
+ source: { github: "nomacs/nomacs", asset: "^nomacs-portable-win\\.zip$" },
26517
+ exe: "nomacs.exe"
26518
+ },
26519
+ {
26520
+ id: "unity-mcp",
26521
+ name: "MCP for Unity",
26522
+ category: "agents",
26523
+ about: "Lets Claude Code and Codex work in an open Unity editor (CoplayDev/unity-mcp 10.3.0, MIT; Unity 2021.3 to 6.x). Your project needs its package (Unity page: Add the editor bridge). Telemetry is off.",
26524
+ size: "60 MB",
26525
+ source: { locked: "uv", package: "mcpforunityserver", version: UNITY_MCP_VERSION },
26526
+ exe: "mcp-for-unity.exe",
26527
+ service: true,
26528
+ mcp: {
26529
+ name: "sbx-unity-mcp",
26530
+ program: true,
26531
+ args: ["--transport", "stdio"],
26532
+ env: { DISABLE_TELEMETRY: "1", UNITY_MCP_DISABLE_TELEMETRY: "1", MCP_DISABLE_TELEMETRY: "1" },
26533
+ codex: true
26534
+ },
26535
+ plugsInto: "Claude Code and Codex as the MCP server sbx-unity-mcp",
26536
+ userOnly: true
26537
+ },
26538
+ {
26539
+ id: "openupm-cli",
26540
+ name: "openupm-cli",
26541
+ category: "gamedev",
26542
+ about: "Adds OpenUPM packages to Unity projects from the command line (openupm 4.5.3, BSD-3-Clause).",
26543
+ size: "15 MB",
26544
+ source: { locked: "npm", package: "openupm-cli", version: OPENUPM_CLI_VERSION },
26545
+ exe: "openupm.cmd"
26546
+ }
26547
+ ];
26415
26548
 
26416
26549
  // src/shared/apps/catalogue-mobile.ts
26417
26550
  var MOBILE_APPS = [];
@@ -27284,6 +27417,21 @@ var CORE_APPS = [
27284
27417
  ];
27285
27418
  var APPS = [...CORE_APPS, ...GAMEDEV_APPS, ...MODDING_APPS, ...MOBILE_APPS, ...AGENTS_WEB_APPS];
27286
27419
 
27420
+ // src/shared/apps/store-package.ts
27421
+ var GB = 1024 * 1024 * 1024;
27422
+ var FILE_NAME = /^[A-Za-z0-9._~+-]{1,200}\.(msix|appx|msixbundle|appxbundle)$/i;
27423
+ var StorePackageFileSchema = external_exports.strictObject({
27424
+ name: external_exports.string().regex(FILE_NAME),
27425
+ role: external_exports.enum(["main", "dependency"]),
27426
+ sha256: external_exports.string().regex(/^[0-9a-f]{64}$/),
27427
+ bytes: external_exports.number().int().positive().max(2 * GB)
27428
+ });
27429
+ var StorePackageManifestSchema = external_exports.strictObject({
27430
+ productId: external_exports.string().regex(/^[A-Z0-9]{12}$/),
27431
+ fetchedAt: external_exports.string().max(40),
27432
+ files: external_exports.array(StorePackageFileSchema).min(1).max(24)
27433
+ }).refine((m) => m.files.filter((f) => f.role === "main").length === 1, "exactly one file must be the app itself").refine((m) => new Set(m.files.map((f) => f.name.toLowerCase())).size === m.files.length, "file names repeat");
27434
+
27287
27435
  // src/core/schema/apps.ts
27288
27436
  var CATALOGUE_IDS = APPS.filter((a) => !a.setting).map((a) => a.id);
27289
27437
  var AppIdSchema = external_exports.enum(CATALOGUE_IDS);
@@ -27418,6 +27566,9 @@ var VpnSchema = external_exports.strictObject({
27418
27566
  var GithubSchema = external_exports.strictObject({
27419
27567
  shareToken: external_exports.boolean().describe(
27420
27568
  'Give each sandbox the GitHub token you saved in Accounts (best a fine-grained token limited to some repositories and permissions), so gh and https git work there without logging in. Only with provisioning.git.access "full". The agent in the sandbox can read the token and use it for whatever it allows. A project file (.sandbox-config.json) cannot turn this on.'
27569
+ ),
27570
+ usePcLogin: external_exports.boolean().describe(
27571
+ 'Give each sandbox the GitHub CLI (gh) login from this PC, when there is one, so gh and https git work there without logging in. Used when no token saved for sandboxes is handed over. Only with provisioning.git.access "full". Without a gh login on the PC nothing happens. The login reaches everything your account can, and the agent in the sandbox can read it. A project file (.sandbox-config.json) cannot turn this on.'
27421
27572
  )
27422
27573
  });
27423
27574
 
@@ -27466,7 +27617,9 @@ var SERVICE_SPECS = {
27466
27617
  warnings: [
27467
27618
  AGENT_CAN_USE,
27468
27619
  ONE_PLACE,
27469
- "A Pro seat is handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep it until you return it."
27620
+ "Unity Personal is activated by signing in: sign in to Unity once in a sandbox and the licence it makes is kept for the next ones (if Unity refuses it there, sign in again).",
27621
+ "A Plus or Pro serial is activated in each sandbox and handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep the seat until you remove it at id.unity.com (My Seats).",
27622
+ "A licence file taken from this PC may not work in a sandbox: Unity ties it to the computer."
27470
27623
  ],
27471
27624
  fields: [
27472
27625
  { name: "email", label: "Unity ID email", secret: false, optional: true },
@@ -27593,11 +27746,28 @@ var SERVICE_SPECS = {
27593
27746
  "Several sandboxes can use it at once: the sign-in the last one hands back is kept."
27594
27747
  ],
27595
27748
  fields: []
27749
+ },
27750
+ perplexityapp: {
27751
+ kind: "perplexityapp",
27752
+ label: "Perplexity desktop app",
27753
+ usedBy: ["perplexityapp"],
27754
+ sources: ["sandbox"],
27755
+ singleHolder: false,
27756
+ returns: true,
27757
+ maxBytes: 256 * 1024,
27758
+ warnings: [
27759
+ AGENT_CAN_USE + " It can act as you in the Perplexity app and spend your Perplexity Computer credits; the app acts on the pages it reads, which can try to steer it.",
27760
+ "Your sign-in in the Perplexity app can't be copied from this PC: Windows locks it to your PC account. Sign in once inside a sandbox and it is kept for the next ones.",
27761
+ "Only the perplexity.ai sign-in cookies are kept: never saved passwords, other sites, localStorage or history.",
27762
+ "Several sandboxes can use it at once: the sign-in the last one hands back is kept."
27763
+ ],
27764
+ fields: []
27596
27765
  }
27597
27766
  };
27598
27767
  var APP_USER_TEXT = {
27599
27768
  perplexity: "the Perplexity MCP app",
27600
- comet: "the Comet app"
27769
+ comet: "the Comet app",
27770
+ perplexityapp: "the Perplexity desktop app"
27601
27771
  };
27602
27772
  function usedByText(usedBy) {
27603
27773
  return usedBy.map((u) => u in APP_USER_TEXT ? APP_USER_TEXT[u] : u).join(" or ");
@@ -27622,7 +27792,11 @@ var AccountsSchema = external_exports.strictObject({
27622
27792
  expo: share("expo", "type the token in Accounts"),
27623
27793
  appstore: share("appstore", "import the AuthKey.p8 file in Accounts"),
27624
27794
  perplexity: share("perplexity", "type the API key in Accounts, or import it from a .env file"),
27625
- comet: share("comet", "sign in to Comet once in a sandbox: it cannot be taken from this PC")
27795
+ comet: share("comet", "sign in to Comet once in a sandbox: it cannot be taken from this PC"),
27796
+ perplexityapp: share(
27797
+ "perplexityapp",
27798
+ "sign in to the Perplexity app once in a sandbox: it cannot be taken from this PC"
27799
+ )
27626
27800
  }).describe("Service sign-ins for sandboxes (game stores, engines, app signing, Perplexity). Manage them in Accounts.");
27627
27801
 
27628
27802
  // src/core/schema/pc-installs.ts
@@ -27640,15 +27814,20 @@ var PcInstallsSchema = external_exports.strictObject({
27640
27814
  "Epic Games Launcher games (by their app name)",
27641
27815
  '["Fortnite"]'
27642
27816
  ),
27643
- unrealEngines: pick2(
27644
- external_exports.string().regex(/^(UE_)?\d+\.\d+$/),
27645
- "Unreal Engine versions installed with the Epic Games Launcher",
27646
- '["5.4"]'
27817
+ unrealEngines: external_exports.union([external_exports.literal("auto"), external_exports.boolean(), external_exports.array(external_exports.string().regex(/^(UE_)?\d+\.\d+$/))]).describe(
27818
+ 'Unreal Engine versions installed on this PC (with the Epic Games Launcher, or source builds it lists), read-only in the sandbox under C:\\PcInstalls\\unreal and registered there, so projects build with them without a download. "auto" = all of them whenever the sandbox is set up for Unreal, true = always, false = never, or a list (e.g. ["5.4"]).'
27647
27819
  ),
27648
- unityEditors: pick2(
27649
- external_exports.string().regex(/^\d+\.\d+\.\d+[abfp]\d+$/),
27650
- "Unity editors installed with Unity Hub",
27651
- '["6000.0.32f1"]'
27820
+ unrealEngineFolders: external_exports.array(external_exports.string().min(3).max(260)).max(8).describe(
27821
+ "Unreal Engine folders of this PC to use in the sandbox, writable (a source build, or a copy you build plugins into): each must hold Engine\\Build\\Build.version. Mapped under C:\\PcInstalls\\unreal and registered there."
27822
+ ),
27823
+ unrealAssets: external_exports.union([external_exports.literal("auto"), external_exports.boolean()]).describe(
27824
+ `The Epic Games Launcher's vault cache of this PC (the Fab and Marketplace packs you downloaded), read-only in the sandbox at C:\\PcInstalls\\unreal\\Vault: what you download on your PC is there for the agents at once. "auto" = whenever the sandbox is set up for Unreal, true = always, false = never.`
27825
+ ),
27826
+ unityEditors: external_exports.union([external_exports.literal("auto"), external_exports.boolean(), external_exports.array(external_exports.string().regex(/^\d+\.\d+\.\d+[abfp]\d+$/))]).describe(
27827
+ `Unity editors installed on this PC (with Unity Hub), read-only in the sandbox under C:\\PcInstalls\\unity: a project opens with the PC's editor without a download. "auto" = all of them whenever the sandbox is set up for Unity, true = always, false = never, or a list (e.g. ["6000.0.32f1"]).`
27828
+ ),
27829
+ unityAssets: external_exports.union([external_exports.literal("auto"), external_exports.boolean()]).describe(
27830
+ `This PC's Unity Asset Store downloads (.unitypackage files), read-only at C:\\PcInstalls\\unity\\AssetStore: what you download on your PC is there for the agents at once. "auto" = whenever the sandbox is set up for Unity, true = always, false = never.`
27652
27831
  )
27653
27832
  }).describe(
27654
27833
  "Games, engines and editors installed on this PC, mapped read-only into sandboxes (no copy, no room on the sandbox's disk)."
@@ -28332,8 +28511,8 @@ var InstallRecordSchema = external_exports.object({
28332
28511
  var InstallRecordsSchema = external_exports.object({ installs: external_exports.array(InstallRecordSchema).max(1e3) });
28333
28512
 
28334
28513
  // src/guest/toolchains/persisted.ts
28335
- var GB = 1024 ** 3;
28336
- var LOCAL_RESERVE_BYTES = 13 * GB;
28514
+ var GB2 = 1024 ** 3;
28515
+ var LOCAL_RESERVE_BYTES = 13 * GB2;
28337
28516
  var MARKER = ".complete.json";
28338
28517
  var MAX_WALK = 2e6;
28339
28518
  var NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
@@ -28347,7 +28526,7 @@ function checkSpec(spec) {
28347
28526
  function freeBytes(dir, deps = {}) {
28348
28527
  return freeBytesAt(dir, deps.statfs) ?? 0;
28349
28528
  }
28350
- var gb = (bytes) => (bytes / GB).toFixed(1) + " GB";
28529
+ var gb = (bytes) => (bytes / GB2).toFixed(1) + " GB";
28351
28530
  function assertRoom(dir, needBytes, what, fix, deps = {}) {
28352
28531
  const free = freeBytes(dir, deps);
28353
28532
  if (free < needBytes)
@@ -29162,10 +29341,12 @@ var SteamPayloadSchema = external_exports.strictObject({
29162
29341
  });
29163
29342
  var UnityPayloadSchema = external_exports.strictObject({
29164
29343
  ulf: external_exports.string().min(1).max(128 * KB).optional(),
29344
+ /** The named-user licence (UnityEntitlementLicense.xml) a Unity sign-in makes. */
29345
+ entitlement: external_exports.string().min(1).max(128 * KB).optional(),
29165
29346
  email: external_exports.string().email().max(256).optional(),
29166
29347
  password: secretText(1024).optional(),
29167
29348
  serial: secretText(64).optional()
29168
- });
29349
+ }).refine((p) => Object.keys(p).length > 0, "empty Unity sign-in");
29169
29350
  var CfxPayloadSchema = external_exports.strictObject({
29170
29351
  licenseKey: external_exports.string().max(256).regex(/^cfxk_[A-Za-z0-9_]+$/),
29171
29352
  steamWebApiKey: external_exports.string().regex(/^[A-F0-9]{32}$/).optional()
@@ -29218,6 +29399,7 @@ var CometCookieSchema = external_exports.strictObject({
29218
29399
  var CometPayloadSchema = external_exports.strictObject({
29219
29400
  cookies: external_exports.array(CometCookieSchema).min(1).max(MAX_COMET_COOKIES)
29220
29401
  });
29402
+ var PerplexityAppPayloadSchema = CometPayloadSchema;
29221
29403
  var ServiceAccountsSchema = external_exports.strictObject({
29222
29404
  epic: EpicPayloadSchema.optional(),
29223
29405
  steam: SteamPayloadSchema.optional(),
@@ -29228,7 +29410,8 @@ var ServiceAccountsSchema = external_exports.strictObject({
29228
29410
  expo: ExpoPayloadSchema.optional(),
29229
29411
  appstore: AppstorePayloadSchema.optional(),
29230
29412
  perplexity: PerplexityPayloadSchema.optional(),
29231
- comet: CometPayloadSchema.optional()
29413
+ comet: CometPayloadSchema.optional(),
29414
+ perplexityapp: PerplexityAppPayloadSchema.optional()
29232
29415
  });
29233
29416
  var LaunchIdSchema = external_exports.string().regex(/^[A-Za-z0-9-]{1,64}$/);
29234
29417
 
@@ -29370,8 +29553,8 @@ function readScript(file2) {
29370
29553
  // src/guest/toolchains/steam/apps.ts
29371
29554
  import fs19 from "node:fs";
29372
29555
  import path23 from "node:path";
29373
- var GB2 = 1024 ** 3;
29374
- var DEFAULT_APP_NEED_BYTES = 5 * GB2;
29556
+ var GB3 = 1024 ** 3;
29557
+ var DEFAULT_APP_NEED_BYTES = 5 * GB3;
29375
29558
  var STEAM_APPS_RECORD = "steam-apps";
29376
29559
  var MAX_WALK2 = 2e6;
29377
29560
  var MAX_MANIFEST_BYTES = 256 * 1024;
@@ -29460,7 +29643,7 @@ function installedApps(deps = {}) {
29460
29643
  }
29461
29644
 
29462
29645
  // src/guest/devtools/steam.ts
29463
- var GB3 = 1024 ** 3;
29646
+ var GB4 = 1024 ** 3;
29464
29647
  var USAGE2 = [
29465
29648
  "Usage: sbx-steam <command>",
29466
29649
  " login <account> sign in to SteamCMD (it asks for the password and Steam Guard code)",
@@ -29518,7 +29701,7 @@ function account(p, anonymousOk) {
29518
29701
  async function steamCmd(args2) {
29519
29702
  return spawnAsync(requireSteamCmd(), args2, { cwd: STEAMCMD_DIR, stdio: "inherit", windowsHide: false });
29520
29703
  }
29521
- var gb2 = (bytes) => bytes === null ? "size unknown" : (bytes / GB3).toFixed(2) + " GB";
29704
+ var gb2 = (bytes) => bytes === null ? "size unknown" : (bytes / GB4).toFixed(2) + " GB";
29522
29705
  async function login(p) {
29523
29706
  const name2 = p.words[1] ?? p.values.get("--user");
29524
29707
  if (!name2) throw new Error("Usage: sbx-steam login <account name>");
@@ -29535,9 +29718,9 @@ async function app(p) {
29535
29718
  const appId = checkAppId(p.words[1] ?? "");
29536
29719
  const given = p.values.get("--dir");
29537
29720
  const dir = given ? path24.resolve(given) : steamAppDir(appId);
29538
- const needGb = Number(p.values.get("--need-gb") ?? DEFAULT_APP_NEED_BYTES / GB3);
29721
+ const needGb = Number(p.values.get("--need-gb") ?? DEFAULT_APP_NEED_BYTES / GB4);
29539
29722
  if (!Number.isFinite(needGb) || needGb < 0 || needGb > 1e4) throw new Error("--need-gb takes a number of GB");
29540
- assertAppRoom(dir, needGb * GB3, "app " + appId);
29723
+ assertAppRoom(dir, needGb * GB4, "app " + appId);
29541
29724
  fs20.mkdirSync(dir, { recursive: true });
29542
29725
  const beta = p.values.get("--beta");
29543
29726
  const code = await steamCmd(
@@ -29560,7 +29743,7 @@ async function workshop(p) {
29560
29743
  const appId = checkAppId(p.words[2] ?? "");
29561
29744
  const items = p.words.slice(3);
29562
29745
  const cache = workshopCache();
29563
- assertAppRoom(cache, GB3, "workshop items");
29746
+ assertAppRoom(cache, GB4, "workshop items");
29564
29747
  fs20.mkdirSync(cache, { recursive: true });
29565
29748
  const code = await steamCmd(
29566
29749
  workshopGetArgs({ appId, items, dir: cache, login: account(p, true), validate: p.flags.has("--validate") })
@@ -29664,15 +29847,8 @@ var steamTool = {
29664
29847
  }
29665
29848
  };
29666
29849
 
29667
- // src/guest/devtools/unity.ts
29668
- var unityTool = {
29669
- name: "unity",
29670
- summary: "install editors, list them, build with -executeMethod, the licence status",
29671
- run: () => notAvailableYet("unity")
29672
- };
29673
-
29674
29850
  // src/guest/devtools/registry.ts
29675
- var DEVTOOLS = [steamTool, fivemTool, unityTool, androidTool];
29851
+ var DEVTOOLS = [steamTool, fivemTool, androidTool];
29676
29852
  function devToolByName(name2) {
29677
29853
  return DEVTOOLS.find((t) => t.name === name2);
29678
29854
  }