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.
- package/README.md +1 -1
- package/config.example.json +97 -4
- package/dist/app/features/accounts/accounts.def.d.ts +116 -2
- package/dist/app/features/accounts/accounts.def.js +80 -12
- package/dist/app/features/accounts/accounts.run.d.ts +29 -0
- package/dist/app/features/accounts/accounts.run.js +36 -6
- package/dist/app/features/accounts/index.d.ts +2 -0
- package/dist/app/features/accounts/index.js +4 -1
- package/dist/app/features/accounts/services.def.d.ts +111 -0
- package/dist/app/features/accounts/services.def.js +187 -0
- package/dist/app/features/accounts/services.run.d.ts +65 -0
- package/dist/app/features/accounts/services.run.js +212 -0
- package/dist/app/features/defs.d.ts +112 -1
- package/dist/app/features/defs.js +5 -0
- package/dist/app/features/settings/categories.def.js +21 -4
- package/dist/app/registry.js +5 -1
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-QLGGAG3D.js → chunk-IIHL7W6B.js} +51 -16
- package/dist/bin/{chunk-XYUVIVJT.js → chunk-M4OM632I.js} +1 -1
- package/dist/bin/{chunk-REE3EMHD.js → chunk-MQIA7GNB.js} +3813 -1702
- package/dist/bin/claude-host.js +2 -2
- package/dist/bin/claude-sbx.js +2 -2
- package/dist/bin/codex-sbx.js +2 -2
- package/dist/bin/gemini-sbx.js +2 -2
- package/dist/bin/sandbox.js +2 -2
- package/dist/bin/sbx-hide.js +2 -2
- package/dist/bin/sbx-show.js +2 -2
- package/dist/cli/commands/launch/launch.js +30 -1
- package/dist/cli/manifest.d.ts +93 -65
- package/dist/cli/manifest.js +23 -5
- package/dist/cli/menu/pages/accounts-page.js +31 -16
- package/dist/cli/services/accounts-service.d.ts +14 -4
- package/dist/cli/services/accounts-service.js +19 -6
- package/dist/cli/services/data-collect.js +26 -1
- package/dist/core/config/defaults.js +47 -4
- package/dist/core/detect/toolchains.d.ts +15 -1
- package/dist/core/detect/toolchains.js +45 -12
- package/dist/core/local-config/overrides.js +6 -0
- package/dist/core/schema/accounts.d.ts +27 -0
- package/dist/core/schema/accounts.js +32 -0
- package/dist/core/schema/config.d.ts +239 -0
- package/dist/core/schema/config.js +6 -0
- package/dist/core/schema/pc-installs.d.ts +7 -0
- package/dist/core/schema/pc-installs.js +17 -0
- package/dist/core/schema/toolchains.d.ts +61 -0
- package/dist/core/schema/toolchains.js +106 -0
- package/dist/core/types.d.ts +18 -0
- package/dist/guest/accounts/adapter.d.ts +25 -0
- package/dist/guest/accounts/adapter.js +21 -0
- package/dist/guest/accounts/adapters.d.ts +5 -0
- package/dist/guest/accounts/adapters.js +18 -0
- package/dist/guest/accounts/apply.d.ts +41 -0
- package/dist/guest/accounts/apply.js +47 -0
- package/dist/guest/accounts/kinds/appstore.d.ts +2 -0
- package/dist/guest/accounts/kinds/appstore.js +7 -0
- package/dist/guest/accounts/kinds/cfx.d.ts +2 -0
- package/dist/guest/accounts/kinds/cfx.js +7 -0
- package/dist/guest/accounts/kinds/epic.d.ts +2 -0
- package/dist/guest/accounts/kinds/epic.js +26 -0
- package/dist/guest/accounts/kinds/expo.d.ts +2 -0
- package/dist/guest/accounts/kinds/expo.js +7 -0
- package/dist/guest/accounts/kinds/keystore.d.ts +2 -0
- package/dist/guest/accounts/kinds/keystore.js +7 -0
- package/dist/guest/accounts/kinds/play.d.ts +2 -0
- package/dist/guest/accounts/kinds/play.js +7 -0
- package/dist/guest/accounts/kinds/steam.d.ts +4 -0
- package/dist/guest/accounts/kinds/steam.js +17 -0
- package/dist/guest/accounts/kinds/unity.d.ts +2 -0
- package/dist/guest/accounts/kinds/unity.js +7 -0
- package/dist/guest/accounts/watch.d.ts +28 -0
- package/dist/guest/accounts/watch.js +78 -0
- package/dist/guest/apps/resolvers-gamedev.d.ts +2 -0
- package/dist/guest/apps/resolvers-gamedev.js +1 -0
- package/dist/guest/apps/resolvers-mobile.d.ts +2 -0
- package/dist/guest/apps/resolvers-mobile.js +1 -0
- package/dist/guest/apps/resolvers.js +4 -0
- package/dist/guest/boot/boot.d.ts +5 -0
- package/dist/guest/boot/boot.js +35 -1
- package/dist/guest/daemon/accounts.d.ts +3 -0
- package/dist/guest/daemon/accounts.js +25 -0
- package/dist/guest/daemon/daemon.js +2 -0
- package/dist/guest/daemon/idle-shutdown.js +3 -1
- package/dist/guest/daemon/sessions.js +2 -0
- package/dist/guest/devtools/android.d.ts +2 -0
- package/dist/guest/devtools/android.js +7 -0
- package/dist/guest/devtools/devtool.d.ts +9 -0
- package/dist/guest/devtools/devtool.js +5 -0
- package/dist/guest/devtools/fivem.d.ts +2 -0
- package/dist/guest/devtools/fivem.js +7 -0
- package/dist/guest/devtools/registry.d.ts +6 -0
- package/dist/guest/devtools/registry.js +12 -0
- package/dist/guest/devtools/steam.d.ts +2 -0
- package/dist/guest/devtools/steam.js +228 -0
- package/dist/guest/devtools/unity.d.ts +2 -0
- package/dist/guest/devtools/unity.js +7 -0
- package/dist/guest/entries/daemon.js +2 -0
- package/dist/guest/entries/tool.d.ts +1 -0
- package/dist/guest/entries/tool.js +17 -0
- package/dist/guest/toolchains/engines/godot.d.ts +4 -0
- package/dist/guest/toolchains/engines/godot.js +4 -0
- package/dist/guest/toolchains/engines/unity-release.d.ts +15 -0
- package/dist/guest/toolchains/engines/unity-release.js +6 -0
- package/dist/guest/toolchains/engines/unity.d.ts +4 -0
- package/dist/guest/toolchains/engines/unity.js +4 -0
- package/dist/guest/toolchains/engines/unreal-engines.d.ts +4 -0
- package/dist/guest/toolchains/engines/unreal-engines.js +4 -0
- package/dist/guest/toolchains/fivem/artifacts.d.ts +6 -0
- package/dist/guest/toolchains/fivem/artifacts.js +7 -0
- package/dist/guest/toolchains/fivem/fivem.d.ts +4 -0
- package/dist/guest/toolchains/fivem/fivem.js +4 -0
- package/dist/guest/toolchains/installers.d.ts +12 -0
- package/dist/guest/toolchains/installers.js +39 -0
- package/dist/guest/toolchains/languages/java.js +1 -1
- package/dist/guest/toolchains/languages/kotlin.d.ts +3 -0
- package/dist/guest/toolchains/languages/kotlin.js +6 -0
- package/dist/guest/toolchains/mobile/android-repo.d.ts +11 -0
- package/dist/guest/toolchains/mobile/android-repo.js +10 -0
- package/dist/guest/toolchains/mobile/android.d.ts +17 -0
- package/dist/guest/toolchains/mobile/android.js +16 -0
- package/dist/guest/toolchains/mobile/dart.d.ts +4 -0
- package/dist/guest/toolchains/mobile/dart.js +4 -0
- package/dist/guest/toolchains/mobile/flutter.d.ts +4 -0
- package/dist/guest/toolchains/mobile/flutter.js +4 -0
- package/dist/guest/toolchains/mobile/react-native.d.ts +4 -0
- package/dist/guest/toolchains/mobile/react-native.js +4 -0
- package/dist/guest/toolchains/native/unreal.d.ts +3 -7
- package/dist/guest/toolchains/native/unreal.js +16 -167
- package/dist/guest/toolchains/native/visual-studio.d.ts +15 -0
- package/dist/guest/toolchains/native/visual-studio.js +159 -0
- package/dist/guest/toolchains/native/vs-request.d.ts +19 -0
- package/dist/guest/toolchains/native/vs-request.js +46 -0
- package/dist/guest/toolchains/not-yet.d.ts +2 -0
- package/dist/guest/toolchains/not-yet.js +6 -0
- package/dist/guest/toolchains/persisted.d.ts +48 -0
- package/dist/guest/toolchains/persisted.js +159 -0
- package/dist/guest/toolchains/plan.js +80 -4
- package/dist/guest/toolchains/steam/apps.d.ts +27 -0
- package/dist/guest/toolchains/steam/apps.js +112 -0
- package/dist/guest/toolchains/steam/client.d.ts +5 -0
- package/dist/guest/toolchains/steam/client.js +67 -0
- package/dist/guest/toolchains/steam/commands.d.ts +58 -0
- package/dist/guest/toolchains/steam/commands.js +155 -0
- package/dist/guest/toolchains/steam/steam.d.ts +4 -0
- package/dist/guest/toolchains/steam/steam.js +61 -0
- package/dist/guest/toolchains/steam/steamcmd-install.d.ts +29 -0
- package/dist/guest/toolchains/steam/steamcmd-install.js +177 -0
- package/dist/guest/toolchains/steam/steamcmd.d.ts +6 -0
- package/dist/guest/toolchains/steam/steamcmd.js +23 -0
- package/dist/guest/toolchains/step.d.ts +10 -0
- package/dist/host/accounts/deliver.d.ts +26 -0
- package/dist/host/accounts/deliver.js +80 -0
- package/dist/host/accounts/handoff.d.ts +17 -0
- package/dist/host/accounts/handoff.js +110 -0
- package/dist/host/accounts/index.d.ts +6 -0
- package/dist/host/accounts/index.js +8 -0
- package/dist/host/accounts/kinds/appstore.d.ts +2 -0
- package/dist/host/accounts/kinds/appstore.js +10 -0
- package/dist/host/accounts/kinds/cfx.d.ts +2 -0
- package/dist/host/accounts/kinds/cfx.js +7 -0
- package/dist/host/accounts/kinds/epic.d.ts +2 -0
- package/dist/host/accounts/kinds/epic.js +15 -0
- package/dist/host/accounts/kinds/expo.d.ts +2 -0
- package/dist/host/accounts/kinds/expo.js +7 -0
- package/dist/host/accounts/kinds/keystore.d.ts +2 -0
- package/dist/host/accounts/kinds/keystore.js +7 -0
- package/dist/host/accounts/kinds/play.d.ts +2 -0
- package/dist/host/accounts/kinds/play.js +7 -0
- package/dist/host/accounts/kinds/steam.d.ts +6 -0
- package/dist/host/accounts/kinds/steam.js +31 -0
- package/dist/host/accounts/kinds/unity.d.ts +2 -0
- package/dist/host/accounts/kinds/unity.js +13 -0
- package/dist/host/accounts/leases.d.ts +40 -0
- package/dist/host/accounts/leases.js +62 -0
- package/dist/host/accounts/source.d.ts +21 -0
- package/dist/host/accounts/source.js +15 -0
- package/dist/host/accounts/sources.d.ts +5 -0
- package/dist/host/accounts/sources.js +18 -0
- package/dist/host/accounts/store.d.ts +23 -0
- package/dist/host/accounts/store.js +74 -0
- package/dist/host/audit/log.d.ts +1 -1
- package/dist/host/launch/generate.d.ts +2 -0
- package/dist/host/launch/generate.js +16 -1
- package/dist/host/launch/hints/android.d.ts +3 -0
- package/dist/host/launch/hints/android.js +3 -0
- package/dist/host/launch/hints/engines.d.ts +3 -0
- package/dist/host/launch/hints/engines.js +3 -0
- package/dist/host/launch/hints/fivem.d.ts +3 -0
- package/dist/host/launch/hints/fivem.js +3 -0
- package/dist/host/launch/hints/hint.d.ts +2 -0
- package/dist/host/launch/hints/hint.js +1 -0
- package/dist/host/launch/hints/index.d.ts +5 -0
- package/dist/host/launch/hints/index.js +29 -0
- package/dist/host/launch/hints/mobile.d.ts +3 -0
- package/dist/host/launch/hints/mobile.js +3 -0
- package/dist/host/launch/hints/steam.d.ts +7 -0
- package/dist/host/launch/hints/steam.js +59 -0
- package/dist/host/launch/index.d.ts +2 -2
- package/dist/host/launch/index.js +2 -2
- package/dist/host/launch/mappings.js +2 -0
- package/dist/host/launch/session-file.js +2 -0
- package/dist/host/launch/stage.js +10 -1
- package/dist/host/launch/toolchains.d.ts +7 -0
- package/dist/host/launch/toolchains.js +11 -0
- package/dist/host/pc-installs/discover.d.ts +19 -0
- package/dist/host/pc-installs/discover.js +59 -0
- package/dist/host/pc-installs/epic.d.ts +2 -0
- package/dist/host/pc-installs/epic.js +7 -0
- package/dist/host/pc-installs/index.d.ts +3 -0
- package/dist/host/pc-installs/index.js +2 -0
- package/dist/host/pc-installs/source.d.ts +9 -0
- package/dist/host/pc-installs/source.js +1 -0
- package/dist/host/pc-installs/steam.d.ts +16 -0
- package/dist/host/pc-installs/steam.js +143 -0
- package/dist/host/pc-installs/unity.d.ts +2 -0
- package/dist/host/pc-installs/unity.js +7 -0
- package/dist/host/pc-installs/unreal.d.ts +2 -0
- package/dist/host/pc-installs/unreal.js +7 -0
- package/dist/host/profile/accounts.d.ts +21 -6
- package/dist/host/profile/accounts.js +108 -28
- package/dist/host/profile/claude-login.d.ts +32 -2
- package/dist/host/profile/claude-login.js +101 -8
- package/dist/host/profile/index.d.ts +1 -1
- package/dist/host/profile/index.js +1 -1
- package/dist/host/secrets/launch-secrets.js +1 -0
- package/dist/runtime/agent.js +321 -9
- package/dist/runtime/daemon.js +1987 -604
- package/dist/runtime/db.js +334 -11
- package/dist/runtime/main.js +2519 -723
- package/dist/runtime/netproxy.js +321 -9
- package/dist/runtime/tool.js +28549 -0
- package/dist/runtime/view.js +321 -9
- package/dist/selftest/accounts.test.js +172 -1
- package/dist/selftest/agent-paths.test.js +1 -0
- package/dist/selftest/android.test.d.ts +2 -0
- package/dist/selftest/android.test.js +7 -0
- package/dist/selftest/app.test.js +1 -1
- package/dist/selftest/engines.test.d.ts +2 -0
- package/dist/selftest/engines.test.js +7 -0
- package/dist/selftest/fivem.test.d.ts +2 -0
- package/dist/selftest/fivem.test.js +7 -0
- package/dist/selftest/generate.test.js +1 -1
- package/dist/selftest/index.js +18 -0
- package/dist/selftest/menu-screens.js +1 -0
- package/dist/selftest/menu.test.js +2 -1
- package/dist/selftest/mobile.test.d.ts +2 -0
- package/dist/selftest/mobile.test.js +7 -0
- package/dist/selftest/pc-installs.test.d.ts +2 -0
- package/dist/selftest/pc-installs.test.js +111 -0
- package/dist/selftest/persisted-installs.test.d.ts +2 -0
- package/dist/selftest/persisted-installs.test.js +107 -0
- package/dist/selftest/projects.test.js +6 -4
- package/dist/selftest/service-accounts.test.d.ts +2 -0
- package/dist/selftest/service-accounts.test.js +320 -0
- package/dist/selftest/steam.test.d.ts +2 -0
- package/dist/selftest/steam.test.js +316 -0
- package/dist/selftest/storage-helper.test.js +31 -8
- package/dist/selftest/support/engine-golden.js +3 -0
- package/dist/selftest/support/fixtures.d.ts +87 -0
- package/dist/selftest/support/fixtures.js +4 -3
- package/dist/selftest/support/pc-memory.d.ts +2 -0
- package/dist/selftest/support/pc-memory.js +17 -0
- package/dist/selftest/support/web-preview.js +20 -1
- package/dist/selftest/unity.test.d.ts +2 -0
- package/dist/selftest/unity.test.js +7 -0
- package/dist/shared/accounts/fingerprint.d.ts +1 -0
- package/dist/shared/accounts/fingerprint.js +20 -0
- package/dist/shared/accounts/index.d.ts +5 -0
- package/dist/shared/accounts/index.js +7 -0
- package/dist/shared/accounts/kinds/epic.d.ts +10 -0
- package/dist/shared/accounts/kinds/epic.js +56 -0
- package/dist/shared/accounts/kinds/steam.d.ts +28 -0
- package/dist/shared/accounts/kinds/steam.js +99 -0
- package/dist/shared/accounts/kinds.d.ts +41 -0
- package/dist/shared/accounts/kinds.js +154 -0
- package/dist/shared/accounts/payloads.d.ts +151 -0
- package/dist/shared/accounts/payloads.js +128 -0
- package/dist/shared/apps/catalogue-gamedev.d.ts +2 -0
- package/dist/shared/apps/catalogue-gamedev.js +1 -0
- package/dist/shared/apps/catalogue-mobile.d.ts +2 -0
- package/dist/shared/apps/catalogue-mobile.js +1 -0
- package/dist/shared/apps/catalogue-modding.d.ts +2 -0
- package/dist/shared/apps/catalogue-modding.js +1 -0
- package/dist/shared/apps/catalogue.d.ts +1 -0
- package/dist/shared/apps/catalogue.js +6 -1
- package/dist/shared/channel/schema.d.ts +183 -0
- package/dist/shared/channel/secrets.d.ts +42 -0
- package/dist/shared/channel/secrets.js +3 -0
- package/dist/shared/download/downloader.d.ts +7 -0
- package/dist/shared/download/downloader.js +10 -3
- package/dist/shared/installs.d.ts +19 -0
- package/dist/shared/installs.js +13 -0
- package/dist/shared/io/bounded.d.ts +6 -0
- package/dist/shared/io/bounded.js +38 -0
- package/dist/shared/io/index.d.ts +2 -0
- package/dist/shared/io/index.js +2 -0
- package/dist/shared/io/text.d.ts +9 -0
- package/dist/shared/io/text.js +18 -0
- package/dist/shared/paths/guest-paths.js +1 -1
- package/dist/shared/paths/index.d.ts +1 -0
- package/dist/shared/paths/index.js +1 -0
- package/dist/shared/paths/pc-installs.d.ts +20 -0
- package/dist/shared/paths/pc-installs.js +19 -0
- package/dist/shared/vdf.d.ts +25 -0
- package/dist/shared/vdf.js +151 -0
- package/dist/sync/sync-cycle.js +9 -0
- package/dist/web/index.html +1 -1
- package/dist/web/{main-JTH3FT4O.js → main-CWIF4VQI.js} +63 -61
- package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
- package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
- package/package.json +1 -1
- package/sandbox/scripts/add-firewall-port.ps1 +13 -0
- package/sandbox/templates/fivem/README.txt +2 -0
- package/schemas/config.schema.json +485 -0
- package/schemas/sandbox-config.schema.json +416 -0
package/dist/runtime/db.js
CHANGED
|
@@ -4442,7 +4442,7 @@ var require_lodash = __commonJS({
|
|
|
4442
4442
|
function omitBy(object2, predicate) {
|
|
4443
4443
|
return pickBy(object2, negate(getIteratee(predicate)));
|
|
4444
4444
|
}
|
|
4445
|
-
var
|
|
4445
|
+
var pick3 = flatRest(function(object2, paths) {
|
|
4446
4446
|
return object2 == null ? {} : basePick(object2, paths);
|
|
4447
4447
|
});
|
|
4448
4448
|
function pickBy(object2, predicate) {
|
|
@@ -5125,7 +5125,7 @@ var require_lodash = __commonJS({
|
|
|
5125
5125
|
lodash.partial = partial2;
|
|
5126
5126
|
lodash.partialRight = partialRight;
|
|
5127
5127
|
lodash.partition = partition;
|
|
5128
|
-
lodash.pick =
|
|
5128
|
+
lodash.pick = pick3;
|
|
5129
5129
|
lodash.pickBy = pickBy;
|
|
5130
5130
|
lodash.property = property;
|
|
5131
5131
|
lodash.propertyOf = propertyOf;
|
|
@@ -25238,7 +25238,7 @@ function date4(params) {
|
|
|
25238
25238
|
}
|
|
25239
25239
|
|
|
25240
25240
|
// src/shared/paths/guest-paths.ts
|
|
25241
|
-
var RESERVED_GUEST = /^C:\\(?:Windows|Program Files|Program Files \(x86\)|ProgramData|Users|AgentLaunch|AgentData|HostTools|nvm|Mirror)(?:\\|$)/i;
|
|
25241
|
+
var RESERVED_GUEST = /^C:\\(?:Windows|Program Files|Program Files \(x86\)|ProgramData|Users|AgentLaunch|AgentData|HostTools|nvm|Mirror|PcInstalls)(?:\\|$)/i;
|
|
25242
25242
|
var MIRROR_LETTER = /^[D-Z]$/;
|
|
25243
25243
|
var DRIVE_PATH = /^([A-Za-z]):\\(.*)$/;
|
|
25244
25244
|
var BAD_CHARS = /[<>:"|?*/\x00-\x1f]/;
|
|
@@ -25637,8 +25637,119 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25637
25637
|
),
|
|
25638
25638
|
keepInstallFiles: external_exports.boolean().describe(
|
|
25639
25639
|
"Keep an offline copy of the Visual Studio install files in tools\\visualstudio (~10 GB, made once), so later boots install without downloading them again. Skipped while that disk has too little room."
|
|
25640
|
+
),
|
|
25641
|
+
persistEngines: external_exports.boolean().describe(
|
|
25642
|
+
"Engines the Epic Games Launcher installs go to tools\\unreal\\engines (kept between sandboxes, 40-60 GB each) and are registered with the launcher again every boot. Off: they go on the sandbox disk and are lost when it closes. Engines installed on this PC can be mapped instead (pcInstalls.unrealEngines)."
|
|
25643
|
+
),
|
|
25644
|
+
derivedDataCache: external_exports.enum(["persisted", "local"]).describe(
|
|
25645
|
+
`"persisted": the engine's local derived data cache (compiled shaders, 10-50 GB) in tools\\unreal\\ddc, kept between sandboxes. "local": Unreal's own place on the sandbox disk (rebuilt every boot).`
|
|
25646
|
+
)
|
|
25647
|
+
}),
|
|
25648
|
+
unity: external_exports.strictObject({
|
|
25649
|
+
enabled: enabled(
|
|
25650
|
+
"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.",
|
|
25651
|
+
"ProjectSettings/ProjectVersion.txt"
|
|
25652
|
+
),
|
|
25653
|
+
acceptLicense: external_exports.boolean().describe(
|
|
25654
|
+
"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."
|
|
25655
|
+
),
|
|
25656
|
+
version: external_exports.string().min(1).describe(
|
|
25657
|
+
'"project" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as "6000.0.32f1".'
|
|
25658
|
+
),
|
|
25659
|
+
modules: external_exports.array(external_exports.string().regex(/^[a-z0-9-]+$/)).describe(
|
|
25660
|
+
`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).`
|
|
25661
|
+
),
|
|
25662
|
+
hub: external_exports.boolean().describe("Also Unity Hub, with the installed editors listed in it."),
|
|
25663
|
+
keepVersions: external_exports.number().int().min(1).max(20).describe(
|
|
25664
|
+
"How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first)."
|
|
25665
|
+
)
|
|
25666
|
+
}),
|
|
25667
|
+
godot: external_exports.strictObject({
|
|
25668
|
+
enabled: enabled(
|
|
25669
|
+
"Godot from its official builds (checked against the published SHA-512 sums), self-contained in tools\\godot\\<version> with `godot` (the console build) on PATH.",
|
|
25670
|
+
"project.godot"
|
|
25671
|
+
),
|
|
25672
|
+
version: external_exports.string().min(1).describe(
|
|
25673
|
+
'"project" = the version project.godot was saved with (else the newest stable), or a version such as "4.3".'
|
|
25674
|
+
),
|
|
25675
|
+
dotnet: EnabledSchema.describe(
|
|
25676
|
+
'The .NET (C#) build of Godot and the .NET SDK: true, false, or "auto" = when the project has a .csproj.'
|
|
25677
|
+
),
|
|
25678
|
+
exportTemplates: external_exports.boolean().describe("Also the export templates for that version (~1.2 GB), for exporting games."),
|
|
25679
|
+
keepVersions: external_exports.number().int().min(1).max(20).describe("How many Godot versions to keep; older ones are removed (the least recently used first).")
|
|
25680
|
+
}),
|
|
25681
|
+
steam: external_exports.strictObject({
|
|
25682
|
+
enabled: enabled(
|
|
25683
|
+
"SteamCMD (`steamcmd` on PATH, Valve-signed, ~0.3 GB) and `sbx-steam` for logging in, downloading apps and workshop items, and uploading builds (ContentBuilder) and workshop items.",
|
|
25684
|
+
"steam_appid.txt, steam_api64.dll, steam_api.dll, or an app_build / workshop_item .vdf"
|
|
25685
|
+
),
|
|
25686
|
+
client: external_exports.boolean().describe(
|
|
25687
|
+
"Also the Steam client (1-1.5 GB, in tools\\steam), for testing the Steamworks API, the overlay or in-game uploads. You sign in to it in each sandbox."
|
|
25688
|
+
),
|
|
25689
|
+
sdkFolder: external_exports.string().describe(
|
|
25690
|
+
"Where the Steamworks SDK is in the sandbox (relative paths are inside the project); it sets STEAMWORKS_SDK. Empty = not set. The SDK is never downloaded (it needs a Steamworks partner login)."
|
|
25691
|
+
)
|
|
25692
|
+
}),
|
|
25693
|
+
fivem: external_exports.strictObject({
|
|
25694
|
+
enabled: enabled(
|
|
25695
|
+
"A FiveM / RedM server (FXServer with txAdmin) for resource development, from the Cfx.re artifacts (the game client is not supported). `sbx-fivem serve` starts it.",
|
|
25696
|
+
"fxmanifest.lua or __resource.lua (up to 3 folders down)"
|
|
25697
|
+
),
|
|
25698
|
+
acceptLicense: external_exports.boolean().describe(
|
|
25699
|
+
"Required to install: you accept the Cfx.re platform terms (https://fivem.net/terms) and the FXServer licence. A project file cannot accept it for you."
|
|
25700
|
+
),
|
|
25701
|
+
game: external_exports.enum(["gta5", "rdr3"]).describe('"gta5" = FiveM, "rdr3" = RedM.'),
|
|
25702
|
+
artifact: external_exports.string().regex(/^(recommended|optional|latest|\d+)$/).describe('The server build: "recommended", "optional", "latest", or a build number.'),
|
|
25703
|
+
txAdmin: external_exports.boolean().describe("Start the server with txAdmin (its web panel on port 40120)."),
|
|
25704
|
+
keepVersions: external_exports.number().int().min(1).max(20).describe("How many server builds to keep in tools\\fivem\\artifacts.")
|
|
25705
|
+
}),
|
|
25706
|
+
android: external_exports.strictObject({
|
|
25707
|
+
enabled: enabled(
|
|
25708
|
+
"The Android SDK (command-line tools, platform-tools, build-tools, platforms, NDK and CMake as needed) in tools\\android-sdk, with a JDK. No emulator (Windows Sandbox cannot run one): use a device over the network, or build only.",
|
|
25709
|
+
"a Gradle build using com.android, an AndroidManifest.xml (up to 3 folders down), a .NET MAUI project, or a Flutter / React Native / Godot Android project"
|
|
25710
|
+
),
|
|
25711
|
+
acceptLicense: external_exports.boolean().describe(
|
|
25712
|
+
"Required to install: you accept the Android SDK licence (https://developer.android.com/studio/terms) and the licences sdkmanager shows. A project file cannot accept them for you."
|
|
25713
|
+
),
|
|
25714
|
+
platforms: StringsSchema.describe(
|
|
25715
|
+
`Platforms to install, e.g. ["android-35"]; "project" = the compileSdk the project's Gradle files ask for.`
|
|
25716
|
+
),
|
|
25717
|
+
buildTools: external_exports.string().min(1).describe('"latest" or a build-tools version such as "35.0.0".'),
|
|
25718
|
+
ndk: external_exports.union([external_exports.literal(false), external_exports.string().min(1)]).describe(
|
|
25719
|
+
'"auto" = when the project uses native code (ndkVersion, CMake or ndk-build), false = never, or a version.'
|
|
25720
|
+
),
|
|
25721
|
+
cmake: external_exports.union([external_exports.literal(false), external_exports.string().min(1)]).describe('"auto" = when the project builds native code with CMake, false = never, or a version.'),
|
|
25722
|
+
packages: Packages("More sdkmanager packages (not the emulator or system images)", '["extras;google;usb_driver"]')
|
|
25723
|
+
}),
|
|
25724
|
+
flutter: external_exports.strictObject({
|
|
25725
|
+
enabled: enabled(
|
|
25726
|
+
"Flutter (with its Dart) from the official releases (checked against their SHA-256), with the Android SDK for Android builds.",
|
|
25727
|
+
"a pubspec.yaml with a flutter: section"
|
|
25728
|
+
),
|
|
25729
|
+
version: external_exports.string().min(1).describe(
|
|
25730
|
+
'"project" = the version in .fvmrc (else the newest stable), "stable", "beta", or a version such as "3.24.5".'
|
|
25731
|
+
),
|
|
25732
|
+
windowsDesktop: external_exports.boolean().describe(
|
|
25733
|
+
"Windows desktop builds: needs Visual Studio Build Tools' C++ parts (a real installer: it runs every boot, ~5 GB on the sandbox disk)."
|
|
25734
|
+
),
|
|
25735
|
+
precache: StringsSchema.describe(
|
|
25736
|
+
'Platforms whose engine files are downloaded ahead (flutter precache), e.g. ["android", "web"].'
|
|
25640
25737
|
)
|
|
25641
25738
|
}),
|
|
25739
|
+
dart: external_exports.strictObject({
|
|
25740
|
+
enabled: enabled(
|
|
25741
|
+
"The Dart SDK (without Flutter), checked against its published SHA-256.",
|
|
25742
|
+
"a pubspec.yaml without a flutter: section"
|
|
25743
|
+
),
|
|
25744
|
+
version: external_exports.string().min(1).describe('"stable", "beta" or a version such as "3.5.4".')
|
|
25745
|
+
}),
|
|
25746
|
+
reactNative: external_exports.strictObject({
|
|
25747
|
+
enabled: enabled(
|
|
25748
|
+
"React Native / Expo: the Android SDK and JDK for Android builds (Node is always there). iOS builds run in EAS Build (the cloud).",
|
|
25749
|
+
"a package.json depending on react-native or expo"
|
|
25750
|
+
),
|
|
25751
|
+
easCli: external_exports.boolean().describe("Also eas-cli (Expo Application Services) as a global npm package.")
|
|
25752
|
+
}),
|
|
25642
25753
|
cpp: external_exports.strictObject({
|
|
25643
25754
|
enabled: enabled(
|
|
25644
25755
|
"MinGW-w64 GCC with CMake, Ninja, premake5 and mingw32-make (also Rust's linker).",
|
|
@@ -25658,7 +25769,8 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25658
25769
|
),
|
|
25659
25770
|
netfx35: external_exports.boolean().describe(
|
|
25660
25771
|
".NET Framework 3.5 runtime (a Windows feature, enabled from Windows Update on every boot; a few minutes)."
|
|
25661
|
-
)
|
|
25772
|
+
),
|
|
25773
|
+
templates: Packages("Project templates (`dotnet new install`)", '["MonoGame.Templates.CSharp"]')
|
|
25662
25774
|
}),
|
|
25663
25775
|
go: external_exports.strictObject({
|
|
25664
25776
|
enabled: enabled("Go.", "go.mod or go.work"),
|
|
@@ -25674,7 +25786,8 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25674
25786
|
),
|
|
25675
25787
|
version: external_exports.string().min(1).describe(`"lts" (newest LTS) or a major version such as "21". A project's .java-version or .sdkmanrc wins.`),
|
|
25676
25788
|
maven: external_exports.boolean().describe("Apache Maven (mvn). A project's mvnw works either way."),
|
|
25677
|
-
gradle: external_exports.boolean().describe("Gradle (gradle). A project's gradlew works either way.")
|
|
25789
|
+
gradle: external_exports.boolean().describe("Gradle (gradle). A project's gradlew works either way."),
|
|
25790
|
+
kotlin: external_exports.boolean().describe("Also the Kotlin compiler (kotlinc) from JetBrains' releases. Gradle builds fetch their own.")
|
|
25678
25791
|
}),
|
|
25679
25792
|
ruby: external_exports.strictObject({
|
|
25680
25793
|
enabled: enabled(
|
|
@@ -25745,6 +25858,15 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25745
25858
|
)
|
|
25746
25859
|
});
|
|
25747
25860
|
|
|
25861
|
+
// src/shared/apps/catalogue-gamedev.ts
|
|
25862
|
+
var GAMEDEV_APPS = [];
|
|
25863
|
+
|
|
25864
|
+
// src/shared/apps/catalogue-mobile.ts
|
|
25865
|
+
var MOBILE_APPS = [];
|
|
25866
|
+
|
|
25867
|
+
// src/shared/apps/catalogue-modding.ts
|
|
25868
|
+
var MODDING_APPS = [];
|
|
25869
|
+
|
|
25748
25870
|
// src/shared/apps/catalogue.ts
|
|
25749
25871
|
var gh = (github, asset) => ({ github, asset });
|
|
25750
25872
|
var RTK_VERSION = "1.0.1";
|
|
@@ -25754,7 +25876,7 @@ var HEADROOM_VERSION = "0.41.0";
|
|
|
25754
25876
|
var CCUSAGE_VERSION = "20.0.36";
|
|
25755
25877
|
var PLAYWRIGHT_MCP_VERSION = "0.0.83";
|
|
25756
25878
|
var CONTEXT7_MCP_VERSION = "4.4.2";
|
|
25757
|
-
var
|
|
25879
|
+
var CORE_APPS = [
|
|
25758
25880
|
// ---- agent add-ons
|
|
25759
25881
|
{
|
|
25760
25882
|
id: "rtk",
|
|
@@ -26577,6 +26699,7 @@ var APPS = [
|
|
|
26577
26699
|
cli: true
|
|
26578
26700
|
}
|
|
26579
26701
|
];
|
|
26702
|
+
var APPS = [...CORE_APPS, ...GAMEDEV_APPS, ...MODDING_APPS, ...MOBILE_APPS];
|
|
26580
26703
|
|
|
26581
26704
|
// src/core/schema/apps.ts
|
|
26582
26705
|
var CATALOGUE_IDS = APPS.filter((a) => !a.setting).map((a) => a.id);
|
|
@@ -26715,6 +26838,185 @@ var GithubSchema = external_exports.strictObject({
|
|
|
26715
26838
|
)
|
|
26716
26839
|
});
|
|
26717
26840
|
|
|
26841
|
+
// src/shared/accounts/kinds.ts
|
|
26842
|
+
var AGENT_CAN_USE = "The agent in the sandbox can use this sign-in while it is there.";
|
|
26843
|
+
var ONE_PLACE = "It works in one sandbox at a time: a second sandbox starts without it while the first one runs.";
|
|
26844
|
+
var SERVICE_SPECS = {
|
|
26845
|
+
epic: {
|
|
26846
|
+
kind: "epic",
|
|
26847
|
+
label: "Epic Games",
|
|
26848
|
+
usedBy: ["unreal"],
|
|
26849
|
+
sources: ["pc", "sandbox"],
|
|
26850
|
+
singleHolder: true,
|
|
26851
|
+
returns: true,
|
|
26852
|
+
maxBytes: 64 * 1024,
|
|
26853
|
+
warnings: [
|
|
26854
|
+
AGENT_CAN_USE,
|
|
26855
|
+
"A sign-in works in one place at a time: taking this PC's signs the launcher on this PC out the first time a sandbox uses it."
|
|
26856
|
+
],
|
|
26857
|
+
fields: []
|
|
26858
|
+
},
|
|
26859
|
+
steam: {
|
|
26860
|
+
kind: "steam",
|
|
26861
|
+
label: "Steam (SteamCMD)",
|
|
26862
|
+
usedBy: ["steam"],
|
|
26863
|
+
sources: ["file", "sandbox"],
|
|
26864
|
+
singleHolder: true,
|
|
26865
|
+
returns: true,
|
|
26866
|
+
maxBytes: 768 * 1024,
|
|
26867
|
+
warnings: [
|
|
26868
|
+
AGENT_CAN_USE + " It can upload builds and workshop items to your Steam apps.",
|
|
26869
|
+
ONE_PLACE,
|
|
26870
|
+
"No password is kept: sign in once with sbx-steam login in a sandbox (Steam Guard asks there)."
|
|
26871
|
+
],
|
|
26872
|
+
fields: []
|
|
26873
|
+
},
|
|
26874
|
+
unity: {
|
|
26875
|
+
kind: "unity",
|
|
26876
|
+
label: "Unity",
|
|
26877
|
+
usedBy: ["unity"],
|
|
26878
|
+
sources: ["pc", "file", "typed", "sandbox"],
|
|
26879
|
+
singleHolder: true,
|
|
26880
|
+
returns: true,
|
|
26881
|
+
maxBytes: 256 * 1024,
|
|
26882
|
+
warnings: [
|
|
26883
|
+
AGENT_CAN_USE,
|
|
26884
|
+
ONE_PLACE,
|
|
26885
|
+
"A Pro seat is handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep it until you return it."
|
|
26886
|
+
],
|
|
26887
|
+
fields: [
|
|
26888
|
+
{ name: "email", label: "Unity ID email", secret: false, optional: true },
|
|
26889
|
+
{ name: "password", label: "Unity ID password", secret: true, optional: true },
|
|
26890
|
+
{ name: "serial", label: "Serial (Plus or Pro; empty for Personal)", secret: true, optional: true }
|
|
26891
|
+
]
|
|
26892
|
+
},
|
|
26893
|
+
cfx: {
|
|
26894
|
+
kind: "cfx",
|
|
26895
|
+
label: "Cfx.re (FiveM / RedM server key)",
|
|
26896
|
+
usedBy: ["fivem"],
|
|
26897
|
+
sources: ["typed"],
|
|
26898
|
+
singleHolder: false,
|
|
26899
|
+
returns: false,
|
|
26900
|
+
maxBytes: 4 * 1024,
|
|
26901
|
+
warnings: [AGENT_CAN_USE + " Anyone with the key can run a server under your Cfx.re account."],
|
|
26902
|
+
fields: [
|
|
26903
|
+
{ name: "licenseKey", label: "Server licence key (cfxk_...)", secret: true, pattern: /^cfxk_[A-Za-z0-9_]+$/ },
|
|
26904
|
+
{
|
|
26905
|
+
name: "steamWebApiKey",
|
|
26906
|
+
label: "Steam Web API key (optional)",
|
|
26907
|
+
secret: true,
|
|
26908
|
+
optional: true,
|
|
26909
|
+
pattern: /^[A-F0-9]{32}$/
|
|
26910
|
+
}
|
|
26911
|
+
]
|
|
26912
|
+
},
|
|
26913
|
+
keystore: {
|
|
26914
|
+
kind: "keystore",
|
|
26915
|
+
label: "Android upload keystore",
|
|
26916
|
+
usedBy: ["android"],
|
|
26917
|
+
sources: ["file"],
|
|
26918
|
+
singleHolder: false,
|
|
26919
|
+
returns: false,
|
|
26920
|
+
maxBytes: 512 * 1024,
|
|
26921
|
+
warnings: [AGENT_CAN_USE + " It can sign app updates as you; keep a backup of the keystore elsewhere."],
|
|
26922
|
+
fields: [
|
|
26923
|
+
{ name: "storePassword", label: "Keystore password", secret: true },
|
|
26924
|
+
{ name: "keyAlias", label: "Key alias", secret: false },
|
|
26925
|
+
{ name: "keyPassword", label: "Key password", secret: true }
|
|
26926
|
+
]
|
|
26927
|
+
},
|
|
26928
|
+
play: {
|
|
26929
|
+
kind: "play",
|
|
26930
|
+
label: "Google Play (service account)",
|
|
26931
|
+
usedBy: ["android"],
|
|
26932
|
+
sources: ["file"],
|
|
26933
|
+
singleHolder: false,
|
|
26934
|
+
returns: false,
|
|
26935
|
+
maxBytes: 128 * 1024,
|
|
26936
|
+
warnings: [AGENT_CAN_USE + " It can publish to Google Play with what the service account is allowed."],
|
|
26937
|
+
fields: []
|
|
26938
|
+
},
|
|
26939
|
+
expo: {
|
|
26940
|
+
kind: "expo",
|
|
26941
|
+
label: "Expo (EAS)",
|
|
26942
|
+
usedBy: ["reactNative"],
|
|
26943
|
+
sources: ["typed"],
|
|
26944
|
+
singleHolder: false,
|
|
26945
|
+
returns: false,
|
|
26946
|
+
maxBytes: 4 * 1024,
|
|
26947
|
+
warnings: [AGENT_CAN_USE + " It can start EAS builds and submissions on your Expo account."],
|
|
26948
|
+
fields: [{ name: "token", label: "Expo access token", secret: true }]
|
|
26949
|
+
},
|
|
26950
|
+
appstore: {
|
|
26951
|
+
kind: "appstore",
|
|
26952
|
+
label: "App Store Connect API key",
|
|
26953
|
+
usedBy: ["reactNative", "flutter"],
|
|
26954
|
+
sources: ["file", "typed"],
|
|
26955
|
+
singleHolder: false,
|
|
26956
|
+
returns: false,
|
|
26957
|
+
maxBytes: 16 * 1024,
|
|
26958
|
+
warnings: [AGENT_CAN_USE + " It can upload and submit apps with what the key is allowed."],
|
|
26959
|
+
fields: [
|
|
26960
|
+
{ name: "issuerId", label: "Issuer ID", secret: false },
|
|
26961
|
+
{ name: "keyId", label: "Key ID", secret: false, pattern: /^[A-Z0-9]{10}$/ }
|
|
26962
|
+
]
|
|
26963
|
+
}
|
|
26964
|
+
};
|
|
26965
|
+
|
|
26966
|
+
// src/core/schema/accounts.ts
|
|
26967
|
+
function share(kind, how) {
|
|
26968
|
+
const spec = SERVICE_SPECS[kind];
|
|
26969
|
+
return external_exports.strictObject({
|
|
26970
|
+
share: external_exports.boolean().describe(
|
|
26971
|
+
"Hand your saved " + spec.label + " sign-in to sandboxes that use " + spec.usedBy.join(" or ") + " (" + how + "). Kept encrypted on this PC; " + spec.warnings.join(" ") + " Yours only: a project file can only turn it off."
|
|
26972
|
+
)
|
|
26973
|
+
});
|
|
26974
|
+
}
|
|
26975
|
+
var AccountsSchema = external_exports.strictObject({
|
|
26976
|
+
epic: share("epic", "sign in to the launcher once in a sandbox, or take this PC's: sandbox account import epic"),
|
|
26977
|
+
steam: share(
|
|
26978
|
+
"steam",
|
|
26979
|
+
"sign in once with sbx-steam login, or: sandbox account import steam --from <steamcmd folder>"
|
|
26980
|
+
),
|
|
26981
|
+
unity: share("unity", "sign in once in a sandbox, or take this PC's licence: sandbox account import unity"),
|
|
26982
|
+
cfx: share("cfx", "sandbox account login cfx"),
|
|
26983
|
+
keystore: share("keystore", "sandbox account import keystore --from <upload.jks>"),
|
|
26984
|
+
play: share("play", "sandbox account import play --from <service-account.json>"),
|
|
26985
|
+
expo: share("expo", "sandbox account login expo"),
|
|
26986
|
+
appstore: share("appstore", "sandbox account import appstore --from <AuthKey.p8>")
|
|
26987
|
+
}).describe(
|
|
26988
|
+
"Service sign-ins for sandboxes (game stores, engines, app signing). Manage them in Accounts: sandbox account status."
|
|
26989
|
+
);
|
|
26990
|
+
|
|
26991
|
+
// src/core/schema/pc-installs.ts
|
|
26992
|
+
var pick2 = (item, what, example) => external_exports.union([external_exports.boolean(), external_exports.array(item)]).describe(
|
|
26993
|
+
what + " of this PC, read-only in the sandbox under C:\\PcInstalls: true = all of them, false = none, or a list (e.g. " + example + "). The agent can read their files."
|
|
26994
|
+
);
|
|
26995
|
+
var PcInstallsSchema = external_exports.strictObject({
|
|
26996
|
+
steamGames: pick2(
|
|
26997
|
+
external_exports.number().int().positive(),
|
|
26998
|
+
"Steam games (true maps each library; a list of app IDs maps only those games)",
|
|
26999
|
+
"[480, 730]"
|
|
27000
|
+
),
|
|
27001
|
+
epicGames: pick2(
|
|
27002
|
+
external_exports.string().regex(/^[A-Za-z0-9._-]{1,100}$/),
|
|
27003
|
+
"Epic Games Launcher games (by their app name)",
|
|
27004
|
+
'["Fortnite"]'
|
|
27005
|
+
),
|
|
27006
|
+
unrealEngines: pick2(
|
|
27007
|
+
external_exports.string().regex(/^(UE_)?\d+\.\d+$/),
|
|
27008
|
+
"Unreal Engine versions installed with the Epic Games Launcher",
|
|
27009
|
+
'["5.4"]'
|
|
27010
|
+
),
|
|
27011
|
+
unityEditors: pick2(
|
|
27012
|
+
external_exports.string().regex(/^\d+\.\d+\.\d+[abfp]\d+$/),
|
|
27013
|
+
"Unity editors installed with Unity Hub",
|
|
27014
|
+
'["6000.0.32f1"]'
|
|
27015
|
+
)
|
|
27016
|
+
}).describe(
|
|
27017
|
+
"Games, engines and editors installed on this PC, mapped read-only into sandboxes (no copy, no room on the sandbox's disk)."
|
|
27018
|
+
);
|
|
27019
|
+
|
|
26718
27020
|
// src/core/schema/config.ts
|
|
26719
27021
|
var RESERVED_ENV_PREFIX = /^(AGENT_|GIT_|GH_|GITHUB_|NODE_|NPM_CONFIG_(USERCONFIG|GLOBALCONFIG|PREFIX|SCRIPT_SHELL)|SSL_|CLAUDE|ANTHROPIC_|OPENAI_|CODEX_|GEMINI_|GOOGLE_|COPILOT_|AWS_|AZURE_)/i;
|
|
26720
27022
|
var RESERVED_ENV_SUFFIX = /(_PROXY|_BASE_URL|_ENDPOINT|_CA_BUNDLE|_CA_CERTS)$/i;
|
|
@@ -26776,6 +27078,8 @@ var ConfigSchema = external_exports.strictObject({
|
|
|
26776
27078
|
network: NetworkSchema,
|
|
26777
27079
|
vpn: VpnSchema,
|
|
26778
27080
|
github: GithubSchema,
|
|
27081
|
+
accounts: AccountsSchema,
|
|
27082
|
+
pcInstalls: PcInstallsSchema,
|
|
26779
27083
|
provisioning: ProvisioningSchema,
|
|
26780
27084
|
downloads: DownloadsSchema,
|
|
26781
27085
|
toolchains: ToolchainsSchema,
|
|
@@ -26828,6 +27132,8 @@ var LocalOverridesSchema = external_exports.strictObject({
|
|
|
26828
27132
|
network: NetworkSchema.pick({ blockPrivateRanges: true, blockHosts: true }).partial(),
|
|
26829
27133
|
// A project may turn the kill switch on, never off, and never choose a VPN, a server, a file or a login.
|
|
26830
27134
|
vpn: VpnSchema.pick({ killSwitch: true }).partial(),
|
|
27135
|
+
// A project may only turn a sign-in off (policy: OFF_IS_SAFER); pcInstalls is never here (folders of this PC).
|
|
27136
|
+
accounts: external_exports.strictObject(import_lodash.default.mapValues(AccountsSchema.shape, (shape) => shape.partial())).partial(),
|
|
26831
27137
|
provisioning: ProvisioningSchema.pick({ copyFromHost: true, fallbackToInstall: true, refresh: true }).extend({ git: GitSchema.partial(), terminal: toggle("Windows Terminal as the sandbox window.").partial() }).partial(),
|
|
26832
27138
|
downloads: DownloadsSchema.partial(),
|
|
26833
27139
|
// Every toolchain setting, each one optional (a project usually only switches languages on or pins a version).
|
|
@@ -27471,7 +27777,7 @@ var Downloader = class {
|
|
|
27471
27777
|
*/
|
|
27472
27778
|
async file(url2, destination, expected = null) {
|
|
27473
27779
|
const sums = typeof expected === "string" || expected === null ? { sha256: expected } : expected;
|
|
27474
|
-
if (this.requireChecksum && !sums.sha256?.trim() && !sums.sha512?.trim()) {
|
|
27780
|
+
if (this.requireChecksum && !sums.sha256?.trim() && !sums.sha512?.trim() && !sums.sha1?.trim() && !sums.verify) {
|
|
27475
27781
|
throw new Error(
|
|
27476
27782
|
"Refusing to download " + path10.basename(destination) + " (" + url2 + "): no checksum is published for it, and downloads.requireChecksum is on. Turn that setting off to allow downloads that cannot be verified."
|
|
27477
27783
|
);
|
|
@@ -27479,7 +27785,7 @@ var Downloader = class {
|
|
|
27479
27785
|
const response = await fetchRetry(url2, {}, 3, 20 * 60 * 1e3);
|
|
27480
27786
|
if (!response.body) throw new Error("Empty response for " + url2);
|
|
27481
27787
|
fs8.mkdirSync(path10.dirname(destination), { recursive: true });
|
|
27482
|
-
const checks = ["sha256", "sha512"].flatMap((kind) => {
|
|
27788
|
+
const checks = ["sha256", "sha512", "sha1"].flatMap((kind) => {
|
|
27483
27789
|
const want = sums[kind]?.trim().toLowerCase();
|
|
27484
27790
|
return want ? [{ want, hash: crypto2.createHash(kind) }] : [];
|
|
27485
27791
|
});
|
|
@@ -27510,6 +27816,7 @@ var Downloader = class {
|
|
|
27510
27816
|
try {
|
|
27511
27817
|
await pipeline(Readable.fromWeb(response.body), tap, fs8.createWriteStream(partial2));
|
|
27512
27818
|
if (checks.some((c) => c.hash.digest("hex") !== c.want)) throw new Error("Checksum mismatch for " + url2);
|
|
27819
|
+
if (sums.verify) await sums.verify(partial2);
|
|
27513
27820
|
fs8.rmSync(destination, { force: true });
|
|
27514
27821
|
fs8.renameSync(partial2, destination);
|
|
27515
27822
|
} finally {
|
|
@@ -27524,7 +27831,12 @@ var Downloader = class {
|
|
|
27524
27831
|
const work = stagingFolder(destination);
|
|
27525
27832
|
try {
|
|
27526
27833
|
const archive = path10.join(work, options.fileName ?? path10.basename(new URL(url2).pathname));
|
|
27527
|
-
await this.file(url2, archive, {
|
|
27834
|
+
await this.file(url2, archive, {
|
|
27835
|
+
sha256: options.sha256,
|
|
27836
|
+
sha512: options.sha512,
|
|
27837
|
+
sha1: options.sha1,
|
|
27838
|
+
...options.verify ? { verify: options.verify } : {}
|
|
27839
|
+
});
|
|
27528
27840
|
const extracted = path10.join(work, "x");
|
|
27529
27841
|
await extractArchive(archive, extracted, options.members);
|
|
27530
27842
|
let root = extracted;
|
|
@@ -27823,6 +28135,16 @@ var MARKERS = {
|
|
|
27823
28135
|
rust: ["Cargo.toml", "rust-toolchain", "rust-toolchain.toml"],
|
|
27824
28136
|
msvc: ["*.vcxproj", "CMakePresets.json", "CMakeUserPresets.json"],
|
|
27825
28137
|
unreal: ["*.uproject", "*.uplugin"],
|
|
28138
|
+
unity: ["ProjectVersion.txt"],
|
|
28139
|
+
godot: ["project.godot"],
|
|
28140
|
+
steam: ["steam_appid.txt", "steam_api64.dll", "steam_api.dll"],
|
|
28141
|
+
fivem: ["fxmanifest.lua", "__resource.lua"],
|
|
28142
|
+
// Decided from file contents (host/launch/hints): Gradle's com.android plugin, an AndroidManifest.xml deeper down,
|
|
28143
|
+
// <UseMaui>, a pubspec's flutter: section, react-native / expo in package.json.
|
|
28144
|
+
android: [],
|
|
28145
|
+
flutter: [],
|
|
28146
|
+
dart: [],
|
|
28147
|
+
reactNative: [],
|
|
27826
28148
|
cpp: [
|
|
27827
28149
|
"CMakeLists.txt",
|
|
27828
28150
|
"Makefile",
|
|
@@ -27848,7 +28170,8 @@ var MARKERS = {
|
|
|
27848
28170
|
"gradlew",
|
|
27849
28171
|
".java-version",
|
|
27850
28172
|
".sdkmanrc",
|
|
27851
|
-
"*.java"
|
|
28173
|
+
"*.java",
|
|
28174
|
+
"*.kt"
|
|
27852
28175
|
],
|
|
27853
28176
|
ruby: ["Gemfile", "*.gemspec", ".ruby-version", "*.rb"],
|
|
27854
28177
|
php: ["composer.json", "artisan", ".php-version", "*.php"],
|
|
@@ -27918,7 +28241,7 @@ async function ensureJdk() {
|
|
|
27918
28241
|
const installed = exists(root) ? fs15.readdirSync(root).filter((d) => exists(path15.join(root, d, "bin", "java.exe"))).sort((a, b) => b.localeCompare(a, void 0, { numeric: true })) : [];
|
|
27919
28242
|
if (installed.length) return path15.join(root, installed[0]);
|
|
27920
28243
|
const scratch = emptyEnv();
|
|
27921
|
-
await setupJdk(scratch, { enabled: true, version: "lts", maven: false, gradle: false });
|
|
28244
|
+
await setupJdk(scratch, { enabled: true, version: "lts", maven: false, gradle: false, kotlin: false });
|
|
27922
28245
|
return scratch.vars.JAVA_HOME;
|
|
27923
28246
|
}
|
|
27924
28247
|
|