windows-development-sandbox 1.25.1 → 1.27.1
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/config.example.json +12 -3
- package/dist/app/features/accounts/services.def.d.ts +1 -1
- package/dist/app/features/accounts/services.def.js +1 -1
- package/dist/app/features/defs.d.ts +198 -3
- package/dist/app/features/defs.js +8 -0
- package/dist/app/features/settings/categories.def.js +1 -0
- package/dist/app/features/unity/index.d.ts +2 -0
- package/dist/app/features/unity/index.js +3 -0
- package/dist/app/features/unity/unity.def.d.ts +294 -0
- package/dist/app/features/unity/unity.def.js +471 -0
- package/dist/app/features/unity/unity.run.d.ts +142 -0
- package/dist/app/features/unity/unity.run.js +363 -0
- package/dist/app/features/unreal/unreal.run.js +13 -3
- package/dist/app/registry.js +6 -0
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-G3TG4ZT7.js → chunk-4TLSWPG7.js} +1 -1
- package/dist/bin/{chunk-3GAXLATK.js → chunk-QUHNXHVG.js} +72 -5
- package/dist/bin/{chunk-F4PVBN23.js → chunk-RSIX7C6D.js} +3633 -1972
- 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 +14 -1
- package/dist/cli/commands/registry.js +3 -0
- package/dist/cli/manifest.d.ts +33 -1
- package/dist/cli/manifest.js +32 -1
- package/dist/cli/menu/coverage-exempt.js +1 -0
- package/dist/cli/menu/pages/sandbox-page.d.ts +3 -0
- package/dist/cli/menu/pages/sandbox-page.js +40 -3
- package/dist/cli/menu/views.js +2 -0
- package/dist/core/config/defaults.js +16 -3
- package/dist/core/schema/accounts.d.ts +3 -0
- package/dist/core/schema/accounts.js +1 -0
- package/dist/core/schema/config.d.ts +29 -13
- package/dist/core/schema/github.d.ts +1 -0
- package/dist/core/schema/github.js +3 -0
- package/dist/core/schema/pc-installs.d.ts +2 -1
- package/dist/core/schema/pc-installs.js +6 -1
- package/dist/core/schema/toolchains.d.ts +8 -0
- package/dist/core/schema/toolchains.js +19 -4
- package/dist/guest/accounts/adapters.js +2 -0
- package/dist/guest/accounts/apply.d.ts +4 -2
- package/dist/guest/accounts/kinds/perplexityapp.d.ts +7 -0
- package/dist/guest/accounts/kinds/perplexityapp.js +53 -0
- package/dist/guest/accounts/kinds/unity.d.ts +27 -0
- package/dist/guest/accounts/kinds/unity.js +164 -7
- package/dist/guest/apps/app-installer.js +18 -0
- package/dist/guest/apps/store-app.d.ts +4 -0
- package/dist/guest/apps/store-app.js +19 -0
- package/dist/guest/apps/store-check.d.ts +8 -0
- package/dist/guest/apps/store-check.js +33 -0
- package/dist/guest/boot/boot.js +1 -1
- package/dist/guest/boot/guide.js +18 -0
- package/dist/guest/browser/comet.d.ts +3 -1
- package/dist/guest/browser/comet.js +1 -1
- package/dist/guest/browser/perplexity-app.d.ts +12 -0
- package/dist/guest/browser/perplexity-app.js +60 -0
- package/dist/guest/daemon/daemon.js +2 -0
- package/dist/guest/devtools/devtool.d.ts +1 -1
- package/dist/guest/devtools/registry.js +1 -2
- package/dist/guest/entries/tool.js +1 -1
- package/dist/guest/setup/addon-mcp.d.ts +7 -2
- package/dist/guest/setup/addon-mcp.js +19 -9
- package/dist/guest/setup/github-token.js +4 -4
- package/dist/guest/setup/unity-agent.d.ts +11 -0
- package/dist/guest/setup/unity-agent.js +39 -0
- package/dist/guest/toolchains/engines/epic-launcher.d.ts +1 -1
- package/dist/guest/toolchains/engines/epic-launcher.js +11 -7
- package/dist/guest/toolchains/engines/unity-cli.d.ts +24 -0
- package/dist/guest/toolchains/engines/unity-cli.js +74 -0
- package/dist/guest/toolchains/engines/unity-hub.d.ts +2 -0
- package/dist/guest/toolchains/engines/unity-hub.js +27 -0
- package/dist/guest/toolchains/engines/unity-release.d.ts +4 -15
- package/dist/guest/toolchains/engines/unity-release.js +17 -5
- package/dist/guest/toolchains/engines/unity-status.d.ts +11 -0
- package/dist/guest/toolchains/engines/unity-status.js +39 -0
- package/dist/guest/toolchains/engines/unity.d.ts +20 -1
- package/dist/guest/toolchains/engines/unity.js +250 -3
- package/dist/guest/toolchains/engines/unreal-status.js +1 -1
- package/dist/guest/toolchains/native/mesa.js +35 -11
- package/dist/guest/toolchains/native/unreal.js +1 -0
- package/dist/guest/toolchains/plan.js +5 -1
- package/dist/guest/toolchains/tools/cli.js +2 -2
- package/dist/host/accounts/deliver.d.ts +3 -0
- package/dist/host/accounts/deliver.js +23 -0
- package/dist/host/accounts/kinds/perplexityapp.d.ts +2 -0
- package/dist/host/accounts/kinds/perplexityapp.js +8 -0
- package/dist/host/accounts/kinds/unity.d.ts +1 -1
- package/dist/host/accounts/kinds/unity.js +60 -8
- package/dist/host/accounts/leases.d.ts +2 -1
- package/dist/host/accounts/source.d.ts +2 -0
- package/dist/host/accounts/source.js +2 -0
- package/dist/host/accounts/sources.js +2 -0
- package/dist/host/apps/index.d.ts +1 -0
- package/dist/host/apps/index.js +2 -0
- package/dist/host/apps/store-package.d.ts +51 -0
- package/dist/host/apps/store-package.js +209 -0
- package/dist/host/github/deliver.d.ts +8 -3
- package/dist/host/github/deliver.js +42 -29
- package/dist/host/github/index.d.ts +1 -0
- package/dist/host/github/index.js +1 -0
- package/dist/host/github/pc-login.d.ts +27 -0
- package/dist/host/github/pc-login.js +129 -0
- package/dist/host/pc-installs/discover.d.ts +4 -0
- package/dist/host/pc-installs/discover.js +19 -6
- package/dist/host/pc-installs/epic.js +3 -0
- package/dist/host/pc-installs/source.d.ts +1 -1
- package/dist/host/pc-installs/unity-assets.d.ts +5 -0
- package/dist/host/pc-installs/unity-assets.js +18 -0
- package/dist/host/pc-installs/unity.d.ts +22 -0
- package/dist/host/pc-installs/unity.js +144 -2
- package/dist/host/pc-installs/unreal.d.ts +2 -0
- package/dist/host/pc-installs/unreal.js +24 -8
- package/dist/runtime/agent.js +116 -11
- package/dist/runtime/daemon.js +2205 -987
- package/dist/runtime/db.js +116 -11
- package/dist/runtime/main.js +2578 -1375
- package/dist/runtime/netproxy.js +116 -11
- package/dist/runtime/tool.js +133 -31
- package/dist/runtime/view.js +116 -11
- package/dist/selftest/agents-web.test.js +2 -1
- package/dist/selftest/engines.test.js +32 -3
- package/dist/selftest/github.test.js +64 -1
- package/dist/selftest/index.js +10 -0
- package/dist/selftest/menu-screens.js +3 -1
- package/dist/selftest/mixamo.test.js +1 -1
- package/dist/selftest/persisted-installs.test.js +1 -1
- package/dist/selftest/service-accounts.test.js +13 -2
- package/dist/selftest/store-app.test.d.ts +2 -0
- package/dist/selftest/store-app.test.js +162 -0
- package/dist/selftest/support/engine-golden.js +7 -0
- package/dist/selftest/support/fixtures.d.ts +10 -1
- package/dist/selftest/support/unity-sample.d.ts +2 -0
- package/dist/selftest/support/unity-sample.js +80 -0
- package/dist/selftest/unity-accounts.test.d.ts +2 -0
- package/dist/selftest/unity-accounts.test.js +106 -0
- package/dist/selftest/unity-agent.test.d.ts +2 -0
- package/dist/selftest/unity-agent.test.js +47 -0
- package/dist/selftest/unity-page.test.d.ts +2 -0
- package/dist/selftest/unity-page.test.js +177 -0
- package/dist/selftest/unity-setup.test.d.ts +2 -0
- package/dist/selftest/unity-setup.test.js +49 -0
- package/dist/selftest/unity.test.js +238 -3
- package/dist/shared/accounts/index.d.ts +1 -0
- package/dist/shared/accounts/index.js +1 -0
- package/dist/shared/accounts/kinds/unity.d.ts +28 -0
- package/dist/shared/accounts/kinds/unity.js +88 -0
- package/dist/shared/accounts/kinds.d.ts +2 -2
- package/dist/shared/accounts/kinds.js +23 -1
- package/dist/shared/accounts/payloads.d.ts +52 -0
- package/dist/shared/accounts/payloads.js +14 -2
- package/dist/shared/apps/catalogue-agents-web.d.ts +7 -0
- package/dist/shared/apps/catalogue-agents-web.js +23 -0
- package/dist/shared/apps/catalogue-gamedev.d.ts +3 -0
- package/dist/shared/apps/catalogue-gamedev.js +31 -0
- package/dist/shared/apps/catalogue.d.ts +8 -0
- package/dist/shared/apps/index.d.ts +3 -2
- package/dist/shared/apps/index.js +3 -2
- package/dist/shared/apps/selection.d.ts +6 -0
- package/dist/shared/apps/selection.js +9 -0
- package/dist/shared/apps/store-package.d.ts +31 -0
- package/dist/shared/apps/store-package.js +34 -0
- package/dist/shared/channel/schema.d.ts +24 -0
- package/dist/shared/channel/secrets.d.ts +17 -0
- package/dist/shared/paths/pc-installs.d.ts +1 -1
- package/dist/shared/paths/pc-installs.js +1 -0
- package/dist/shared/readiness.d.ts +2 -2
- package/dist/shared/readiness.js +2 -2
- package/dist/shared/unity/asset-cache.d.ts +20 -0
- package/dist/shared/unity/asset-cache.js +44 -0
- package/dist/shared/unity/cli.d.ts +40 -0
- package/dist/shared/unity/cli.js +77 -0
- package/dist/shared/unity/editors.d.ts +46 -0
- package/dist/shared/unity/editors.js +89 -0
- package/dist/shared/unity/guide.d.ts +9 -0
- package/dist/shared/unity/guide.js +84 -0
- package/dist/shared/unity/index.d.ts +9 -0
- package/dist/shared/unity/index.js +11 -0
- package/dist/shared/unity/manifest.d.ts +10 -0
- package/dist/shared/unity/manifest.js +53 -0
- package/dist/shared/unity/mcp.d.ts +8 -0
- package/dist/shared/unity/mcp.js +12 -0
- package/dist/shared/unity/release.d.ts +28 -0
- package/dist/shared/unity/release.js +83 -0
- package/dist/shared/unity/status.d.ts +59 -0
- package/dist/shared/unity/status.js +45 -0
- package/dist/shared/unity/version.d.ts +27 -0
- package/dist/shared/unity/version.js +75 -0
- package/dist/shared/unreal/status.d.ts +1 -0
- package/dist/shared/unreal/status.js +2 -0
- package/dist/web/index.html +1 -1
- package/dist/web/{main-FNE6XEHA.js → main-VPMYTSUL.js} +67 -67
- 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/native/scripts/get-store-package.ps1 +58 -0
- package/package.json +1 -1
- package/sandbox/addons/openupm-cli/package-lock.json +2921 -0
- package/sandbox/addons/openupm-cli/package.json +7 -0
- package/sandbox/addons/unity-mcp/requirements.in +1 -0
- package/sandbox/addons/unity-mcp/requirements.txt +1165 -0
- package/sandbox/csharp/AppActivation.cs +38 -0
- package/sandbox/scripts/install-store-package.ps1 +28 -0
- package/sandbox/scripts/start-store-app.ps1 +29 -0
- package/schemas/config.schema.json +61 -6
- package/schemas/sandbox-config.schema.json +38 -5
- package/dist/guest/devtools/unity.d.ts +0 -2
- package/dist/guest/devtools/unity.js +0 -7
package/dist/runtime/netproxy.js
CHANGED
|
@@ -25718,21 +25718,35 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25718
25718
|
}),
|
|
25719
25719
|
unity: external_exports.strictObject({
|
|
25720
25720
|
enabled: enabled(
|
|
25721
|
-
"Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed
|
|
25721
|
+
"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.",
|
|
25722
25722
|
"ProjectSettings/ProjectVersion.txt"
|
|
25723
25723
|
),
|
|
25724
25724
|
acceptLicense: external_exports.boolean().describe(
|
|
25725
25725
|
"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."
|
|
25726
25726
|
),
|
|
25727
25727
|
version: external_exports.string().min(1).describe(
|
|
25728
|
-
|
|
25728
|
+
`"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).`
|
|
25729
25729
|
),
|
|
25730
25730
|
modules: external_exports.array(external_exports.string().regex(/^[a-z0-9-]+$/)).describe(
|
|
25731
25731
|
`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).`
|
|
25732
25732
|
),
|
|
25733
|
-
hub: external_exports.boolean().describe(
|
|
25733
|
+
hub: external_exports.boolean().describe(
|
|
25734
|
+
"Also Unity Hub (kept on the data disk), for signing in to Unity Personal and installing editors by hand."
|
|
25735
|
+
),
|
|
25734
25736
|
keepVersions: external_exports.number().int().min(1).max(20).describe(
|
|
25735
25737
|
"How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first)."
|
|
25738
|
+
),
|
|
25739
|
+
mcp: external_exports.boolean().describe(
|
|
25740
|
+
"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."
|
|
25741
|
+
),
|
|
25742
|
+
agentSkills: external_exports.boolean().describe(
|
|
25743
|
+
"Unity's skills for Claude Code and Codex, from Unity-Technologies/skills at the commit the Unity CLI pins."
|
|
25744
|
+
),
|
|
25745
|
+
cliVersion: external_exports.string().regex(/^(latest|\d+\.\d+\.\d+(-[A-Za-z0-9.]+)?)$/).describe(
|
|
25746
|
+
'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.'
|
|
25747
|
+
),
|
|
25748
|
+
assetCache: external_exports.enum(["persisted", "pc", "local"]).describe(
|
|
25749
|
+
`"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).`
|
|
25736
25750
|
)
|
|
25737
25751
|
}),
|
|
25738
25752
|
godot: external_exports.strictObject({
|
|
@@ -25884,7 +25898,7 @@ var ToolchainsSchema = external_exports.strictObject({
|
|
|
25884
25898
|
}),
|
|
25885
25899
|
cli: external_exports.strictObject({
|
|
25886
25900
|
gh: EnabledSchema.describe(
|
|
25887
|
-
'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
|
|
25901
|
+
'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.'
|
|
25888
25902
|
),
|
|
25889
25903
|
zstd: EnabledSchema.describe('Zstandard (zstd). "auto" = off; set true to get it.'),
|
|
25890
25904
|
openssl: EnabledSchema.describe(
|
|
@@ -25939,6 +25953,9 @@ var COMET_SIGNER = {
|
|
|
25939
25953
|
subject: ['(^|, )CN="?PERPLEXITY AI, INC\\.?"?(,|$)', '(^|, )O="?PERPLEXITY AI, INC\\.?"?(,|$)'],
|
|
25940
25954
|
issuer: ["^CN=GlobalSign GCC R45 EV CodeSigning CA 2020(,|$)"]
|
|
25941
25955
|
};
|
|
25956
|
+
var PERPLEXITY_DESKTOP_PRODUCT_ID = "9P9XG917PWCJ";
|
|
25957
|
+
var PERPLEXITY_DESKTOP_PACKAGE = "PerplexityAI.PerplexityApp";
|
|
25958
|
+
var PERPLEXITY_DESKTOP_FAMILY = "PerplexityAI.PerplexityApp_3jh4kjrg4dzr2";
|
|
25942
25959
|
var EDGE_EXE = "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe";
|
|
25943
25960
|
var AGENTS_WEB_APPS = [
|
|
25944
25961
|
{
|
|
@@ -25985,6 +26002,22 @@ var AGENTS_WEB_APPS = [
|
|
|
25985
26002
|
signer: COMET_SIGNER,
|
|
25986
26003
|
userOnly: true
|
|
25987
26004
|
},
|
|
26005
|
+
{
|
|
26006
|
+
id: "perplexity-desktop",
|
|
26007
|
+
name: "Perplexity (desktop app)",
|
|
26008
|
+
category: "agents",
|
|
26009
|
+
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.",
|
|
26010
|
+
size: "300 MB",
|
|
26011
|
+
source: {
|
|
26012
|
+
store: {
|
|
26013
|
+
productId: PERPLEXITY_DESKTOP_PRODUCT_ID,
|
|
26014
|
+
packageName: PERPLEXITY_DESKTOP_PACKAGE,
|
|
26015
|
+
family: PERPLEXITY_DESKTOP_FAMILY
|
|
26016
|
+
}
|
|
26017
|
+
},
|
|
26018
|
+
exe: "",
|
|
26019
|
+
userOnly: true
|
|
26020
|
+
},
|
|
25988
26021
|
{
|
|
25989
26022
|
id: "comet-mcp",
|
|
25990
26023
|
name: "Comet MCP",
|
|
@@ -26038,6 +26071,8 @@ var AGENTS_WEB_APPS = [
|
|
|
26038
26071
|
];
|
|
26039
26072
|
|
|
26040
26073
|
// src/shared/apps/catalogue-gamedev.ts
|
|
26074
|
+
var UNITY_MCP_VERSION = "10.3.0";
|
|
26075
|
+
var OPENUPM_CLI_VERSION = "4.5.3";
|
|
26041
26076
|
var GAMEDEV_APPS = [
|
|
26042
26077
|
{
|
|
26043
26078
|
id: "krita",
|
|
@@ -26107,6 +26142,34 @@ var GAMEDEV_APPS = [
|
|
|
26107
26142
|
size: "60 MB",
|
|
26108
26143
|
source: { github: "nomacs/nomacs", asset: "^nomacs-portable-win\\.zip$" },
|
|
26109
26144
|
exe: "nomacs.exe"
|
|
26145
|
+
},
|
|
26146
|
+
{
|
|
26147
|
+
id: "unity-mcp",
|
|
26148
|
+
name: "MCP for Unity",
|
|
26149
|
+
category: "agents",
|
|
26150
|
+
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.",
|
|
26151
|
+
size: "60 MB",
|
|
26152
|
+
source: { locked: "uv", package: "mcpforunityserver", version: UNITY_MCP_VERSION },
|
|
26153
|
+
exe: "mcp-for-unity.exe",
|
|
26154
|
+
service: true,
|
|
26155
|
+
mcp: {
|
|
26156
|
+
name: "sbx-unity-mcp",
|
|
26157
|
+
program: true,
|
|
26158
|
+
args: ["--transport", "stdio"],
|
|
26159
|
+
env: { DISABLE_TELEMETRY: "1", UNITY_MCP_DISABLE_TELEMETRY: "1", MCP_DISABLE_TELEMETRY: "1" },
|
|
26160
|
+
codex: true
|
|
26161
|
+
},
|
|
26162
|
+
plugsInto: "Claude Code and Codex as the MCP server sbx-unity-mcp",
|
|
26163
|
+
userOnly: true
|
|
26164
|
+
},
|
|
26165
|
+
{
|
|
26166
|
+
id: "openupm-cli",
|
|
26167
|
+
name: "openupm-cli",
|
|
26168
|
+
category: "gamedev",
|
|
26169
|
+
about: "Adds OpenUPM packages to Unity projects from the command line (openupm 4.5.3, BSD-3-Clause).",
|
|
26170
|
+
size: "15 MB",
|
|
26171
|
+
source: { locked: "npm", package: "openupm-cli", version: OPENUPM_CLI_VERSION },
|
|
26172
|
+
exe: "openupm.cmd"
|
|
26110
26173
|
}
|
|
26111
26174
|
];
|
|
26112
26175
|
|
|
@@ -26981,6 +27044,21 @@ var CORE_APPS = [
|
|
|
26981
27044
|
];
|
|
26982
27045
|
var APPS = [...CORE_APPS, ...GAMEDEV_APPS, ...MODDING_APPS, ...MOBILE_APPS, ...AGENTS_WEB_APPS];
|
|
26983
27046
|
|
|
27047
|
+
// src/shared/apps/store-package.ts
|
|
27048
|
+
var GB = 1024 * 1024 * 1024;
|
|
27049
|
+
var FILE_NAME = /^[A-Za-z0-9._~+-]{1,200}\.(msix|appx|msixbundle|appxbundle)$/i;
|
|
27050
|
+
var StorePackageFileSchema = external_exports.strictObject({
|
|
27051
|
+
name: external_exports.string().regex(FILE_NAME),
|
|
27052
|
+
role: external_exports.enum(["main", "dependency"]),
|
|
27053
|
+
sha256: external_exports.string().regex(/^[0-9a-f]{64}$/),
|
|
27054
|
+
bytes: external_exports.number().int().positive().max(2 * GB)
|
|
27055
|
+
});
|
|
27056
|
+
var StorePackageManifestSchema = external_exports.strictObject({
|
|
27057
|
+
productId: external_exports.string().regex(/^[A-Z0-9]{12}$/),
|
|
27058
|
+
fetchedAt: external_exports.string().max(40),
|
|
27059
|
+
files: external_exports.array(StorePackageFileSchema).min(1).max(24)
|
|
27060
|
+
}).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");
|
|
27061
|
+
|
|
26984
27062
|
// src/core/schema/apps.ts
|
|
26985
27063
|
var CATALOGUE_IDS = APPS.filter((a) => !a.setting).map((a) => a.id);
|
|
26986
27064
|
var AppIdSchema = external_exports.enum(CATALOGUE_IDS);
|
|
@@ -27115,6 +27193,9 @@ var VpnSchema = external_exports.strictObject({
|
|
|
27115
27193
|
var GithubSchema = external_exports.strictObject({
|
|
27116
27194
|
shareToken: external_exports.boolean().describe(
|
|
27117
27195
|
'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.'
|
|
27196
|
+
),
|
|
27197
|
+
usePcLogin: external_exports.boolean().describe(
|
|
27198
|
+
'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.'
|
|
27118
27199
|
)
|
|
27119
27200
|
});
|
|
27120
27201
|
|
|
@@ -27163,7 +27244,9 @@ var SERVICE_SPECS = {
|
|
|
27163
27244
|
warnings: [
|
|
27164
27245
|
AGENT_CAN_USE,
|
|
27165
27246
|
ONE_PLACE,
|
|
27166
|
-
"
|
|
27247
|
+
"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).",
|
|
27248
|
+
"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).",
|
|
27249
|
+
"A licence file taken from this PC may not work in a sandbox: Unity ties it to the computer."
|
|
27167
27250
|
],
|
|
27168
27251
|
fields: [
|
|
27169
27252
|
{ name: "email", label: "Unity ID email", secret: false, optional: true },
|
|
@@ -27290,11 +27373,28 @@ var SERVICE_SPECS = {
|
|
|
27290
27373
|
"Several sandboxes can use it at once: the sign-in the last one hands back is kept."
|
|
27291
27374
|
],
|
|
27292
27375
|
fields: []
|
|
27376
|
+
},
|
|
27377
|
+
perplexityapp: {
|
|
27378
|
+
kind: "perplexityapp",
|
|
27379
|
+
label: "Perplexity desktop app",
|
|
27380
|
+
usedBy: ["perplexityapp"],
|
|
27381
|
+
sources: ["sandbox"],
|
|
27382
|
+
singleHolder: false,
|
|
27383
|
+
returns: true,
|
|
27384
|
+
maxBytes: 256 * 1024,
|
|
27385
|
+
warnings: [
|
|
27386
|
+
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.",
|
|
27387
|
+
"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.",
|
|
27388
|
+
"Only the perplexity.ai sign-in cookies are kept: never saved passwords, other sites, localStorage or history.",
|
|
27389
|
+
"Several sandboxes can use it at once: the sign-in the last one hands back is kept."
|
|
27390
|
+
],
|
|
27391
|
+
fields: []
|
|
27293
27392
|
}
|
|
27294
27393
|
};
|
|
27295
27394
|
var APP_USER_TEXT = {
|
|
27296
27395
|
perplexity: "the Perplexity MCP app",
|
|
27297
|
-
comet: "the Comet app"
|
|
27396
|
+
comet: "the Comet app",
|
|
27397
|
+
perplexityapp: "the Perplexity desktop app"
|
|
27298
27398
|
};
|
|
27299
27399
|
function usedByText(usedBy) {
|
|
27300
27400
|
return usedBy.map((u) => u in APP_USER_TEXT ? APP_USER_TEXT[u] : u).join(" or ");
|
|
@@ -27319,7 +27419,11 @@ var AccountsSchema = external_exports.strictObject({
|
|
|
27319
27419
|
expo: share("expo", "type the token in Accounts"),
|
|
27320
27420
|
appstore: share("appstore", "import the AuthKey.p8 file in Accounts"),
|
|
27321
27421
|
perplexity: share("perplexity", "type the API key in Accounts, or import it from a .env file"),
|
|
27322
|
-
comet: share("comet", "sign in to Comet once in a sandbox: it cannot be taken from this PC")
|
|
27422
|
+
comet: share("comet", "sign in to Comet once in a sandbox: it cannot be taken from this PC"),
|
|
27423
|
+
perplexityapp: share(
|
|
27424
|
+
"perplexityapp",
|
|
27425
|
+
"sign in to the Perplexity app once in a sandbox: it cannot be taken from this PC"
|
|
27426
|
+
)
|
|
27323
27427
|
}).describe("Service sign-ins for sandboxes (game stores, engines, app signing, Perplexity). Manage them in Accounts.");
|
|
27324
27428
|
|
|
27325
27429
|
// src/core/schema/pc-installs.ts
|
|
@@ -27346,10 +27450,11 @@ var PcInstallsSchema = external_exports.strictObject({
|
|
|
27346
27450
|
unrealAssets: external_exports.union([external_exports.literal("auto"), external_exports.boolean()]).describe(
|
|
27347
27451
|
`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.`
|
|
27348
27452
|
),
|
|
27349
|
-
unityEditors:
|
|
27350
|
-
|
|
27351
|
-
|
|
27352
|
-
|
|
27453
|
+
unityEditors: external_exports.union([external_exports.literal("auto"), external_exports.boolean(), external_exports.array(external_exports.string().regex(/^\d+\.\d+\.\d+[abfp]\d+$/))]).describe(
|
|
27454
|
+
`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"]).`
|
|
27455
|
+
),
|
|
27456
|
+
unityAssets: external_exports.union([external_exports.literal("auto"), external_exports.boolean()]).describe(
|
|
27457
|
+
`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.`
|
|
27353
27458
|
)
|
|
27354
27459
|
}).describe(
|
|
27355
27460
|
"Games, engines and editors installed on this PC, mapped read-only into sandboxes (no copy, no room on the sandbox's disk)."
|
package/dist/runtime/tool.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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(
|
|
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
|
|
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(
|
|
@@ -26312,6 +26326,9 @@ var COMET_SIGNER = {
|
|
|
26312
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,6 +26444,8 @@ var AGENTS_WEB_APPS = [
|
|
|
26411
26444
|
];
|
|
26412
26445
|
|
|
26413
26446
|
// src/shared/apps/catalogue-gamedev.ts
|
|
26447
|
+
var UNITY_MCP_VERSION = "10.3.0";
|
|
26448
|
+
var OPENUPM_CLI_VERSION = "4.5.3";
|
|
26414
26449
|
var GAMEDEV_APPS = [
|
|
26415
26450
|
{
|
|
26416
26451
|
id: "krita",
|
|
@@ -26480,6 +26515,34 @@ var GAMEDEV_APPS = [
|
|
|
26480
26515
|
size: "60 MB",
|
|
26481
26516
|
source: { github: "nomacs/nomacs", asset: "^nomacs-portable-win\\.zip$" },
|
|
26482
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"
|
|
26483
26546
|
}
|
|
26484
26547
|
];
|
|
26485
26548
|
|
|
@@ -27354,6 +27417,21 @@ var CORE_APPS = [
|
|
|
27354
27417
|
];
|
|
27355
27418
|
var APPS = [...CORE_APPS, ...GAMEDEV_APPS, ...MODDING_APPS, ...MOBILE_APPS, ...AGENTS_WEB_APPS];
|
|
27356
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
|
+
|
|
27357
27435
|
// src/core/schema/apps.ts
|
|
27358
27436
|
var CATALOGUE_IDS = APPS.filter((a) => !a.setting).map((a) => a.id);
|
|
27359
27437
|
var AppIdSchema = external_exports.enum(CATALOGUE_IDS);
|
|
@@ -27488,6 +27566,9 @@ var VpnSchema = external_exports.strictObject({
|
|
|
27488
27566
|
var GithubSchema = external_exports.strictObject({
|
|
27489
27567
|
shareToken: external_exports.boolean().describe(
|
|
27490
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.'
|
|
27491
27572
|
)
|
|
27492
27573
|
});
|
|
27493
27574
|
|
|
@@ -27536,7 +27617,9 @@ var SERVICE_SPECS = {
|
|
|
27536
27617
|
warnings: [
|
|
27537
27618
|
AGENT_CAN_USE,
|
|
27538
27619
|
ONE_PLACE,
|
|
27539
|
-
"
|
|
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."
|
|
27540
27623
|
],
|
|
27541
27624
|
fields: [
|
|
27542
27625
|
{ name: "email", label: "Unity ID email", secret: false, optional: true },
|
|
@@ -27663,11 +27746,28 @@ var SERVICE_SPECS = {
|
|
|
27663
27746
|
"Several sandboxes can use it at once: the sign-in the last one hands back is kept."
|
|
27664
27747
|
],
|
|
27665
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: []
|
|
27666
27765
|
}
|
|
27667
27766
|
};
|
|
27668
27767
|
var APP_USER_TEXT = {
|
|
27669
27768
|
perplexity: "the Perplexity MCP app",
|
|
27670
|
-
comet: "the Comet app"
|
|
27769
|
+
comet: "the Comet app",
|
|
27770
|
+
perplexityapp: "the Perplexity desktop app"
|
|
27671
27771
|
};
|
|
27672
27772
|
function usedByText(usedBy) {
|
|
27673
27773
|
return usedBy.map((u) => u in APP_USER_TEXT ? APP_USER_TEXT[u] : u).join(" or ");
|
|
@@ -27692,7 +27792,11 @@ var AccountsSchema = external_exports.strictObject({
|
|
|
27692
27792
|
expo: share("expo", "type the token in Accounts"),
|
|
27693
27793
|
appstore: share("appstore", "import the AuthKey.p8 file in Accounts"),
|
|
27694
27794
|
perplexity: share("perplexity", "type the API key in Accounts, or import it from a .env file"),
|
|
27695
|
-
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
|
+
)
|
|
27696
27800
|
}).describe("Service sign-ins for sandboxes (game stores, engines, app signing, Perplexity). Manage them in Accounts.");
|
|
27697
27801
|
|
|
27698
27802
|
// src/core/schema/pc-installs.ts
|
|
@@ -27719,10 +27823,11 @@ var PcInstallsSchema = external_exports.strictObject({
|
|
|
27719
27823
|
unrealAssets: external_exports.union([external_exports.literal("auto"), external_exports.boolean()]).describe(
|
|
27720
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.`
|
|
27721
27825
|
),
|
|
27722
|
-
unityEditors:
|
|
27723
|
-
|
|
27724
|
-
|
|
27725
|
-
|
|
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.`
|
|
27726
27831
|
)
|
|
27727
27832
|
}).describe(
|
|
27728
27833
|
"Games, engines and editors installed on this PC, mapped read-only into sandboxes (no copy, no room on the sandbox's disk)."
|
|
@@ -28406,8 +28511,8 @@ var InstallRecordSchema = external_exports.object({
|
|
|
28406
28511
|
var InstallRecordsSchema = external_exports.object({ installs: external_exports.array(InstallRecordSchema).max(1e3) });
|
|
28407
28512
|
|
|
28408
28513
|
// src/guest/toolchains/persisted.ts
|
|
28409
|
-
var
|
|
28410
|
-
var LOCAL_RESERVE_BYTES = 13 *
|
|
28514
|
+
var GB2 = 1024 ** 3;
|
|
28515
|
+
var LOCAL_RESERVE_BYTES = 13 * GB2;
|
|
28411
28516
|
var MARKER = ".complete.json";
|
|
28412
28517
|
var MAX_WALK = 2e6;
|
|
28413
28518
|
var NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
@@ -28421,7 +28526,7 @@ function checkSpec(spec) {
|
|
|
28421
28526
|
function freeBytes(dir, deps = {}) {
|
|
28422
28527
|
return freeBytesAt(dir, deps.statfs) ?? 0;
|
|
28423
28528
|
}
|
|
28424
|
-
var gb = (bytes) => (bytes /
|
|
28529
|
+
var gb = (bytes) => (bytes / GB2).toFixed(1) + " GB";
|
|
28425
28530
|
function assertRoom(dir, needBytes, what, fix, deps = {}) {
|
|
28426
28531
|
const free = freeBytes(dir, deps);
|
|
28427
28532
|
if (free < needBytes)
|
|
@@ -29236,10 +29341,12 @@ var SteamPayloadSchema = external_exports.strictObject({
|
|
|
29236
29341
|
});
|
|
29237
29342
|
var UnityPayloadSchema = external_exports.strictObject({
|
|
29238
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(),
|
|
29239
29346
|
email: external_exports.string().email().max(256).optional(),
|
|
29240
29347
|
password: secretText(1024).optional(),
|
|
29241
29348
|
serial: secretText(64).optional()
|
|
29242
|
-
});
|
|
29349
|
+
}).refine((p) => Object.keys(p).length > 0, "empty Unity sign-in");
|
|
29243
29350
|
var CfxPayloadSchema = external_exports.strictObject({
|
|
29244
29351
|
licenseKey: external_exports.string().max(256).regex(/^cfxk_[A-Za-z0-9_]+$/),
|
|
29245
29352
|
steamWebApiKey: external_exports.string().regex(/^[A-F0-9]{32}$/).optional()
|
|
@@ -29292,6 +29399,7 @@ var CometCookieSchema = external_exports.strictObject({
|
|
|
29292
29399
|
var CometPayloadSchema = external_exports.strictObject({
|
|
29293
29400
|
cookies: external_exports.array(CometCookieSchema).min(1).max(MAX_COMET_COOKIES)
|
|
29294
29401
|
});
|
|
29402
|
+
var PerplexityAppPayloadSchema = CometPayloadSchema;
|
|
29295
29403
|
var ServiceAccountsSchema = external_exports.strictObject({
|
|
29296
29404
|
epic: EpicPayloadSchema.optional(),
|
|
29297
29405
|
steam: SteamPayloadSchema.optional(),
|
|
@@ -29302,7 +29410,8 @@ var ServiceAccountsSchema = external_exports.strictObject({
|
|
|
29302
29410
|
expo: ExpoPayloadSchema.optional(),
|
|
29303
29411
|
appstore: AppstorePayloadSchema.optional(),
|
|
29304
29412
|
perplexity: PerplexityPayloadSchema.optional(),
|
|
29305
|
-
comet: CometPayloadSchema.optional()
|
|
29413
|
+
comet: CometPayloadSchema.optional(),
|
|
29414
|
+
perplexityapp: PerplexityAppPayloadSchema.optional()
|
|
29306
29415
|
});
|
|
29307
29416
|
var LaunchIdSchema = external_exports.string().regex(/^[A-Za-z0-9-]{1,64}$/);
|
|
29308
29417
|
|
|
@@ -29444,8 +29553,8 @@ function readScript(file2) {
|
|
|
29444
29553
|
// src/guest/toolchains/steam/apps.ts
|
|
29445
29554
|
import fs19 from "node:fs";
|
|
29446
29555
|
import path23 from "node:path";
|
|
29447
|
-
var
|
|
29448
|
-
var DEFAULT_APP_NEED_BYTES = 5 *
|
|
29556
|
+
var GB3 = 1024 ** 3;
|
|
29557
|
+
var DEFAULT_APP_NEED_BYTES = 5 * GB3;
|
|
29449
29558
|
var STEAM_APPS_RECORD = "steam-apps";
|
|
29450
29559
|
var MAX_WALK2 = 2e6;
|
|
29451
29560
|
var MAX_MANIFEST_BYTES = 256 * 1024;
|
|
@@ -29534,7 +29643,7 @@ function installedApps(deps = {}) {
|
|
|
29534
29643
|
}
|
|
29535
29644
|
|
|
29536
29645
|
// src/guest/devtools/steam.ts
|
|
29537
|
-
var
|
|
29646
|
+
var GB4 = 1024 ** 3;
|
|
29538
29647
|
var USAGE2 = [
|
|
29539
29648
|
"Usage: sbx-steam <command>",
|
|
29540
29649
|
" login <account> sign in to SteamCMD (it asks for the password and Steam Guard code)",
|
|
@@ -29592,7 +29701,7 @@ function account(p, anonymousOk) {
|
|
|
29592
29701
|
async function steamCmd(args2) {
|
|
29593
29702
|
return spawnAsync(requireSteamCmd(), args2, { cwd: STEAMCMD_DIR, stdio: "inherit", windowsHide: false });
|
|
29594
29703
|
}
|
|
29595
|
-
var gb2 = (bytes) => bytes === null ? "size unknown" : (bytes /
|
|
29704
|
+
var gb2 = (bytes) => bytes === null ? "size unknown" : (bytes / GB4).toFixed(2) + " GB";
|
|
29596
29705
|
async function login(p) {
|
|
29597
29706
|
const name2 = p.words[1] ?? p.values.get("--user");
|
|
29598
29707
|
if (!name2) throw new Error("Usage: sbx-steam login <account name>");
|
|
@@ -29609,9 +29718,9 @@ async function app(p) {
|
|
|
29609
29718
|
const appId = checkAppId(p.words[1] ?? "");
|
|
29610
29719
|
const given = p.values.get("--dir");
|
|
29611
29720
|
const dir = given ? path24.resolve(given) : steamAppDir(appId);
|
|
29612
|
-
const needGb = Number(p.values.get("--need-gb") ?? DEFAULT_APP_NEED_BYTES /
|
|
29721
|
+
const needGb = Number(p.values.get("--need-gb") ?? DEFAULT_APP_NEED_BYTES / GB4);
|
|
29613
29722
|
if (!Number.isFinite(needGb) || needGb < 0 || needGb > 1e4) throw new Error("--need-gb takes a number of GB");
|
|
29614
|
-
assertAppRoom(dir, needGb *
|
|
29723
|
+
assertAppRoom(dir, needGb * GB4, "app " + appId);
|
|
29615
29724
|
fs20.mkdirSync(dir, { recursive: true });
|
|
29616
29725
|
const beta = p.values.get("--beta");
|
|
29617
29726
|
const code = await steamCmd(
|
|
@@ -29634,7 +29743,7 @@ async function workshop(p) {
|
|
|
29634
29743
|
const appId = checkAppId(p.words[2] ?? "");
|
|
29635
29744
|
const items = p.words.slice(3);
|
|
29636
29745
|
const cache = workshopCache();
|
|
29637
|
-
assertAppRoom(cache,
|
|
29746
|
+
assertAppRoom(cache, GB4, "workshop items");
|
|
29638
29747
|
fs20.mkdirSync(cache, { recursive: true });
|
|
29639
29748
|
const code = await steamCmd(
|
|
29640
29749
|
workshopGetArgs({ appId, items, dir: cache, login: account(p, true), validate: p.flags.has("--validate") })
|
|
@@ -29738,15 +29847,8 @@ var steamTool = {
|
|
|
29738
29847
|
}
|
|
29739
29848
|
};
|
|
29740
29849
|
|
|
29741
|
-
// src/guest/devtools/unity.ts
|
|
29742
|
-
var unityTool = {
|
|
29743
|
-
name: "unity",
|
|
29744
|
-
summary: "install editors, list them, build with -executeMethod, the licence status",
|
|
29745
|
-
run: () => notAvailableYet("unity")
|
|
29746
|
-
};
|
|
29747
|
-
|
|
29748
29850
|
// src/guest/devtools/registry.ts
|
|
29749
|
-
var DEVTOOLS = [steamTool, fivemTool,
|
|
29851
|
+
var DEVTOOLS = [steamTool, fivemTool, androidTool];
|
|
29750
29852
|
function devToolByName(name2) {
|
|
29751
29853
|
return DEVTOOLS.find((t) => t.name === name2);
|
|
29752
29854
|
}
|