windows-development-sandbox 1.25.0 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config.example.json +17 -5
- 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/data/data.def.d.ts +4 -4
- package/dist/app/features/data/data.run.d.ts +1 -1
- package/dist/app/features/defs.d.ts +356 -6
- package/dist/app/features/defs.js +15 -0
- package/dist/app/features/projects/projects.def.d.ts +1 -1
- package/dist/app/features/projects/projects.run.d.ts +1 -1
- 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/index.d.ts +2 -0
- package/dist/app/features/unreal/index.js +3 -0
- package/dist/app/features/unreal/unreal.def.d.ts +236 -0
- package/dist/app/features/unreal/unreal.def.js +379 -0
- package/dist/app/features/unreal/unreal.run.d.ts +96 -0
- package/dist/app/features/unreal/unreal.run.js +217 -0
- package/dist/app/registry.js +11 -0
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-IZRGTSQ5.js → chunk-6WWMBCT2.js} +4632 -1941
- package/dist/bin/{chunk-SUYYVIDW.js → chunk-JXL6ZOO3.js} +126 -6
- package/dist/bin/{chunk-KH4MI2U5.js → chunk-ZXCAVVS4.js} +1 -1
- 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 +17 -2
- package/dist/cli/commands/registry.js +6 -0
- package/dist/cli/manifest.d.ts +51 -1
- package/dist/cli/manifest.js +58 -1
- package/dist/cli/menu/coverage-exempt.js +2 -0
- package/dist/cli/menu/pages/sandbox-page.d.ts +6 -0
- package/dist/cli/menu/pages/sandbox-page.js +71 -4
- package/dist/cli/menu/views.js +4 -0
- package/dist/core/config/defaults.js +33 -6
- package/dist/core/schema/accounts.d.ts +3 -0
- package/dist/core/schema/accounts.js +1 -0
- package/dist/core/schema/config.d.ts +32 -14
- 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 +5 -2
- package/dist/core/schema/pc-installs.js +16 -2
- package/dist/core/schema/toolchains.d.ts +8 -0
- package/dist/core/schema/toolchains.js +20 -5
- package/dist/guest/accounts/adapters.js +2 -0
- package/dist/guest/accounts/apply.d.ts +4 -2
- package/dist/guest/accounts/kinds/epic.js +18 -13
- 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/after-install.d.ts +1 -1
- package/dist/guest/apps/after-install.js +6 -1
- package/dist/guest/apps/app-installer.d.ts +1 -0
- package/dist/guest/apps/app-installer.js +31 -3
- package/dist/guest/apps/comet-unpack.js +3 -2
- package/dist/guest/apps/resolvers-gamedev.js +55 -1
- 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 +15 -2
- package/dist/guest/boot/guide.js +42 -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 +5 -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 +12 -0
- package/dist/guest/setup/addon-mcp.js +29 -4
- package/dist/guest/setup/browser-gpu.js +14 -11
- package/dist/guest/setup/github-token.js +4 -4
- package/dist/guest/setup/headroom.js +4 -0
- package/dist/guest/setup/unity-agent.d.ts +11 -0
- package/dist/guest/setup/unity-agent.js +36 -0
- package/dist/guest/toolchains/engines/epic-launcher.d.ts +26 -0
- package/dist/guest/toolchains/engines/epic-launcher.js +127 -0
- 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-engines.d.ts +21 -1
- package/dist/guest/toolchains/engines/unreal-engines.js +163 -3
- package/dist/guest/toolchains/engines/unreal-status.d.ts +13 -0
- package/dist/guest/toolchains/engines/unreal-status.js +41 -0
- package/dist/guest/toolchains/native/debuggers.d.ts +6 -0
- package/dist/guest/toolchains/native/debuggers.js +57 -0
- package/dist/guest/toolchains/native/mesa.js +15 -8
- package/dist/guest/toolchains/native/rust-extras.d.ts +7 -0
- package/dist/guest/toolchains/native/rust-extras.js +23 -1
- package/dist/guest/toolchains/native/unreal.d.ts +2 -2
- package/dist/guest/toolchains/native/unreal.js +96 -18
- package/dist/guest/toolchains/plan.js +17 -2
- package/dist/guest/toolchains/tools/cli.js +2 -2
- package/dist/guest/toolchains/tools/vscode-profile.js +2 -0
- package/dist/host/accounts/deliver.js +4 -0
- package/dist/host/accounts/kinds/epic.js +11 -5
- 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 +1 -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 +6 -0
- package/dist/host/pc-installs/discover.js +37 -5
- package/dist/host/pc-installs/epic.d.ts +3 -0
- package/dist/host/pc-installs/epic.js +33 -2
- 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 +20 -0
- package/dist/host/pc-installs/unity.js +135 -2
- package/dist/host/pc-installs/unreal-vault.d.ts +11 -0
- package/dist/host/pc-installs/unreal-vault.js +78 -0
- package/dist/host/pc-installs/unreal.d.ts +36 -0
- package/dist/host/pc-installs/unreal.js +145 -2
- package/dist/host/profile/claude-profile.d.ts +8 -0
- package/dist/host/profile/claude-profile.js +43 -4
- package/dist/host/profile/index.d.ts +1 -1
- package/dist/host/profile/index.js +1 -1
- package/dist/runtime/agent.js +197 -18
- package/dist/runtime/daemon.js +3938 -1386
- package/dist/runtime/db.js +197 -18
- package/dist/runtime/main.js +4336 -1978
- package/dist/runtime/netproxy.js +197 -18
- package/dist/runtime/tool.js +214 -38
- package/dist/runtime/view.js +197 -18
- package/dist/selftest/agent-paths.test.js +1 -0
- package/dist/selftest/agents-web.test.js +14 -1
- package/dist/selftest/engines.test.js +602 -3
- package/dist/selftest/github.test.js +64 -1
- package/dist/selftest/heavy-load.test.js +3 -1
- package/dist/selftest/hostile-input.test.js +11 -1
- package/dist/selftest/index.js +12 -0
- package/dist/selftest/menu-screens.js +5 -1
- package/dist/selftest/mixamo.test.d.ts +2 -0
- package/dist/selftest/mixamo.test.js +60 -0
- package/dist/selftest/persisted-installs.test.js +1 -1
- package/dist/selftest/secrets.test.js +36 -1
- package/dist/selftest/service-accounts.test.js +1 -1
- 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 +10 -0
- package/dist/selftest/support/fixtures.d.ts +13 -2
- package/dist/selftest/support/unity-sample.d.ts +2 -0
- package/dist/selftest/support/unity-sample.js +80 -0
- package/dist/selftest/support/unreal-sample.d.ts +2 -0
- package/dist/selftest/support/unreal-sample.js +83 -0
- package/dist/selftest/toolchains.test.js +32 -2
- 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 +2 -1
- package/dist/shared/accounts/index.js +2 -1
- package/dist/shared/accounts/kinds/epic.d.ts +6 -1
- package/dist/shared/accounts/kinds/epic.js +11 -1
- 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/associations.d.ts +7 -0
- package/dist/shared/apps/associations.js +26 -0
- package/dist/shared/apps/catalogue-agents-web.d.ts +11 -1
- package/dist/shared/apps/catalogue-agents-web.js +28 -2
- package/dist/shared/apps/catalogue-gamedev.d.ts +3 -0
- package/dist/shared/apps/catalogue-gamedev.js +102 -1
- package/dist/shared/apps/catalogue.d.ts +8 -0
- package/dist/shared/apps/index.d.ts +5 -2
- package/dist/shared/apps/index.js +5 -2
- package/dist/shared/apps/preview.d.ts +2 -0
- package/dist/shared/apps/preview.js +10 -0
- 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/browser-policy.d.ts +14 -0
- package/dist/shared/browser-policy.js +22 -0
- package/dist/shared/channel/schema.d.ts +24 -0
- package/dist/shared/channel/secrets.d.ts +17 -0
- package/dist/shared/io/index.d.ts +1 -0
- package/dist/shared/io/index.js +1 -0
- package/dist/shared/io/rotate-log.d.ts +2 -0
- package/dist/shared/io/rotate-log.js +16 -0
- package/dist/shared/memory/policy.d.ts +5 -0
- package/dist/shared/memory/policy.js +7 -0
- package/dist/shared/paths/pc-installs.d.ts +13 -2
- package/dist/shared/paths/pc-installs.js +2 -0
- package/dist/shared/readiness.d.ts +2 -3
- package/dist/shared/readiness.js +2 -3
- package/dist/shared/signer.d.ts +4 -0
- package/dist/shared/signer.js +2 -0
- 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/engines.d.ts +161 -0
- package/dist/shared/unreal/engines.js +308 -0
- package/dist/shared/unreal/guide.d.ts +19 -0
- package/dist/shared/unreal/guide.js +105 -0
- package/dist/shared/unreal/index.d.ts +7 -0
- package/dist/shared/unreal/index.js +8 -0
- package/dist/shared/unreal/launcher-files.d.ts +88 -0
- package/dist/shared/unreal/launcher-files.js +292 -0
- package/dist/shared/unreal/mixamo.d.ts +5 -0
- package/dist/shared/unreal/mixamo.js +16 -0
- package/dist/shared/unreal/room.d.ts +17 -0
- package/dist/shared/unreal/room.js +34 -0
- package/dist/shared/unreal/status.d.ts +54 -0
- package/dist/shared/unreal/status.js +57 -0
- package/dist/shared/unreal/vault.d.ts +21 -0
- package/dist/shared/unreal/vault.js +67 -0
- package/dist/shared/unreal/vs-check.d.ts +39 -0
- package/dist/shared/unreal/vs-check.js +79 -0
- package/dist/web/index.html +1 -1
- package/dist/web/{main-CCILLX2M.js → main-VPMYTSUL.js} +87 -87
- 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/csharp/VsSetup.cs +210 -0
- package/sandbox/scripts/get-vs-setup.ps1 +93 -0
- package/sandbox/scripts/install-store-package.ps1 +28 -0
- package/sandbox/scripts/set-registry-values.ps1 +35 -0
- package/sandbox/scripts/start-store-app.ps1 +29 -0
- package/schemas/config.schema.json +96 -8
- package/schemas/sandbox-config.schema.json +46 -6
- package/dist/guest/devtools/unity.d.ts +0 -2
- package/dist/guest/devtools/unity.js +0 -7
package/dist/cli/menu/views.js
CHANGED
|
@@ -19,6 +19,8 @@ import { webView } from '../../app/features/web/index.js';
|
|
|
19
19
|
import { vpnView } from '../../app/features/vpn/index.js';
|
|
20
20
|
import { githubView } from '../../app/features/github/index.js';
|
|
21
21
|
import { accessView } from '../../app/features/access/index.js';
|
|
22
|
+
import { unrealView } from '../../app/features/unreal/index.js';
|
|
23
|
+
import { unityView } from '../../app/features/unity/index.js';
|
|
22
24
|
export const MENU_VIEWS = [
|
|
23
25
|
{ view: agentsView, section: 'Agents' },
|
|
24
26
|
{ view: agentEnvView, section: 'Agents' },
|
|
@@ -28,6 +30,8 @@ export const MENU_VIEWS = [
|
|
|
28
30
|
{ view: accountsView, section: 'Accounts' },
|
|
29
31
|
{ view: appsView, section: 'Apps' },
|
|
30
32
|
{ view: projectsView, section: 'Sandbox' },
|
|
33
|
+
{ view: unrealView, section: 'Sandbox' },
|
|
34
|
+
{ view: unityView, section: 'Sandbox' },
|
|
31
35
|
{ view: healthView, section: 'Maintenance' },
|
|
32
36
|
{ view: dataView, section: 'Maintenance' },
|
|
33
37
|
{ view: storageView, section: 'Maintenance' },
|
|
@@ -37,7 +37,7 @@ export const DEFAULTS = {
|
|
|
37
37
|
},
|
|
38
38
|
network: { blockPrivateRanges: true, allowOnly: [], blockHosts: [], forwardPorts: [], dns: [], proxy: '' },
|
|
39
39
|
vpn: { enabled: false, provider: 'nordvpn', protocol: 'udp', country: '', configFile: '', killSwitch: true },
|
|
40
|
-
github: { shareToken: false },
|
|
40
|
+
github: { shareToken: false, usePcLogin: false },
|
|
41
41
|
codex: {
|
|
42
42
|
sandboxMode: 'danger-full-access',
|
|
43
43
|
approvalPolicy: 'never',
|
|
@@ -57,8 +57,17 @@ export const DEFAULTS = {
|
|
|
57
57
|
appstore: { share: false },
|
|
58
58
|
perplexity: { share: false },
|
|
59
59
|
comet: { share: false },
|
|
60
|
+
perplexityapp: { share: false },
|
|
61
|
+
},
|
|
62
|
+
pcInstalls: {
|
|
63
|
+
steamGames: false,
|
|
64
|
+
epicGames: false,
|
|
65
|
+
unrealEngines: 'auto',
|
|
66
|
+
unrealEngineFolders: [],
|
|
67
|
+
unrealAssets: 'auto',
|
|
68
|
+
unityEditors: 'auto',
|
|
69
|
+
unityAssets: 'auto',
|
|
60
70
|
},
|
|
61
|
-
pcInstalls: { steamGames: false, epicGames: false, unrealEngines: false, unityEditors: false },
|
|
62
71
|
provisioning: {
|
|
63
72
|
copyFromHost: true,
|
|
64
73
|
fallbackToInstall: true,
|
|
@@ -91,7 +100,18 @@ export const DEFAULTS = {
|
|
|
91
100
|
persistEngines: true,
|
|
92
101
|
derivedDataCache: 'persisted',
|
|
93
102
|
},
|
|
94
|
-
unity: {
|
|
103
|
+
unity: {
|
|
104
|
+
enabled: 'auto',
|
|
105
|
+
acceptLicense: false,
|
|
106
|
+
version: 'project',
|
|
107
|
+
modules: [],
|
|
108
|
+
hub: false,
|
|
109
|
+
keepVersions: 2,
|
|
110
|
+
mcp: true,
|
|
111
|
+
agentSkills: true,
|
|
112
|
+
cliVersion: '1.0.0-beta.16',
|
|
113
|
+
assetCache: 'persisted',
|
|
114
|
+
},
|
|
95
115
|
godot: { enabled: 'auto', version: 'project', dotnet: 'auto', exportTemplates: true, keepVersions: 2 },
|
|
96
116
|
steam: { enabled: 'auto', client: false, sdkFolder: '' },
|
|
97
117
|
fivem: {
|
|
@@ -196,9 +216,16 @@ export const DEFAULTS = {
|
|
|
196
216
|
home: { env: { CODEX_HOME: 'codex' }, loginFiles: ['auth.json', '.credentials.json'], hostDir: '~/.codex' },
|
|
197
217
|
localState: { CODEX_SQLITE_HOME: 'sqlite' },
|
|
198
218
|
// Its own command sandbox keeps local users' passwords sealed with DPAPI: unreadable in the next sandbox
|
|
199
|
-
// ("CryptUnprotectData" on every command), so it sets that sandbox up again at each boot. tmp\arg0
|
|
200
|
-
// Codex cannot remove in a mapped folder (os error 145, a warning at
|
|
201
|
-
|
|
219
|
+
// ("CryptUnprotectData" on every command), so it sets that sandbox up again at each boot. tmp\arg0 and
|
|
220
|
+
// tmp\arg0-windows (newer Codex): folders Codex cannot remove in a mapped folder (os error 145, a warning at
|
|
221
|
+
// every start); nothing holds them at boot.
|
|
222
|
+
bootReset: [
|
|
223
|
+
'.sandbox-secrets',
|
|
224
|
+
'.sandbox\\setup_marker.json',
|
|
225
|
+
'.sandbox\\deny_read_acl_state.json',
|
|
226
|
+
'tmp\\arg0',
|
|
227
|
+
'tmp\\arg0-windows',
|
|
228
|
+
],
|
|
202
229
|
resumeArguments: ['resume', '--last'],
|
|
203
230
|
},
|
|
204
231
|
gemini: {
|
|
@@ -30,5 +30,6 @@ export const AccountsSchema = z
|
|
|
30
30
|
appstore: share('appstore', 'import the AuthKey.p8 file in Accounts'),
|
|
31
31
|
perplexity: share('perplexity', 'type the API key in Accounts, or import it from a .env file'),
|
|
32
32
|
comet: share('comet', 'sign in to Comet once in a sandbox: it cannot be taken from this PC'),
|
|
33
|
+
perplexityapp: share('perplexityapp', 'sign in to the Perplexity app once in a sandbox: it cannot be taken from this PC'),
|
|
33
34
|
})
|
|
34
35
|
.describe('Service sign-ins for sandboxes (game stores, engines, app signing, Perplexity). Manage them in Accounts.');
|
|
@@ -95,6 +95,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
95
95
|
}, z.core.$strict>;
|
|
96
96
|
github: z.ZodObject<{
|
|
97
97
|
shareToken: z.ZodBoolean;
|
|
98
|
+
usePcLogin: z.ZodBoolean;
|
|
98
99
|
}, z.core.$strict>;
|
|
99
100
|
accounts: z.ZodObject<{
|
|
100
101
|
epic: z.ZodObject<{
|
|
@@ -127,12 +128,18 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
127
128
|
comet: z.ZodObject<{
|
|
128
129
|
share: z.ZodBoolean;
|
|
129
130
|
}, z.core.$strict>;
|
|
131
|
+
perplexityapp: z.ZodObject<{
|
|
132
|
+
share: z.ZodBoolean;
|
|
133
|
+
}, z.core.$strict>;
|
|
130
134
|
}, z.core.$strict>;
|
|
131
135
|
pcInstalls: z.ZodObject<{
|
|
132
136
|
steamGames: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodNumber>]>;
|
|
133
137
|
epicGames: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
134
|
-
unrealEngines: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
135
|
-
|
|
138
|
+
unrealEngines: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
139
|
+
unrealEngineFolders: z.ZodArray<z.ZodString>;
|
|
140
|
+
unrealAssets: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean]>;
|
|
141
|
+
unityEditors: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
142
|
+
unityAssets: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean]>;
|
|
136
143
|
}, z.core.$strict>;
|
|
137
144
|
provisioning: z.ZodObject<{
|
|
138
145
|
copyFromHost: z.ZodBoolean;
|
|
@@ -212,6 +219,14 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
212
219
|
modules: z.ZodArray<z.ZodString>;
|
|
213
220
|
hub: z.ZodBoolean;
|
|
214
221
|
keepVersions: z.ZodNumber;
|
|
222
|
+
mcp: z.ZodBoolean;
|
|
223
|
+
agentSkills: z.ZodBoolean;
|
|
224
|
+
cliVersion: z.ZodString;
|
|
225
|
+
assetCache: z.ZodEnum<{
|
|
226
|
+
pc: "pc";
|
|
227
|
+
persisted: "persisted";
|
|
228
|
+
local: "local";
|
|
229
|
+
}>;
|
|
215
230
|
}, z.core.$strict>;
|
|
216
231
|
godot: z.ZodObject<{
|
|
217
232
|
enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
|
|
@@ -577,6 +592,9 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
577
592
|
comet: z.ZodOptional<z.ZodObject<{
|
|
578
593
|
share: z.ZodOptional<z.ZodBoolean>;
|
|
579
594
|
}, z.core.$strict>>;
|
|
595
|
+
perplexityapp: z.ZodOptional<z.ZodObject<{
|
|
596
|
+
share: z.ZodOptional<z.ZodBoolean>;
|
|
597
|
+
}, z.core.$strict>>;
|
|
580
598
|
}, z.core.$strict>>;
|
|
581
599
|
provisioning: z.ZodOptional<z.ZodObject<{
|
|
582
600
|
copyFromHost: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -599,7 +617,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
599
617
|
}, z.core.$strict>>;
|
|
600
618
|
toolchains: z.ZodOptional<z.ZodObject<{
|
|
601
619
|
environment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
602
|
-
|
|
620
|
+
godot: z.ZodOptional<z.ZodObject<{
|
|
603
621
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
604
622
|
}, z.core.$strict> | z.ZodObject<{
|
|
605
623
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -614,7 +632,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
614
632
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
615
633
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
616
634
|
}, z.core.$strict>>;
|
|
617
|
-
|
|
635
|
+
android: z.ZodOptional<z.ZodObject<{
|
|
618
636
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
619
637
|
}, z.core.$strict> | z.ZodObject<{
|
|
620
638
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -629,7 +647,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
629
647
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
630
648
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
631
649
|
}, z.core.$strict>>;
|
|
632
|
-
|
|
650
|
+
flutter: z.ZodOptional<z.ZodObject<{
|
|
633
651
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
634
652
|
}, z.core.$strict> | z.ZodObject<{
|
|
635
653
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -644,7 +662,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
644
662
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
645
663
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
646
664
|
}, z.core.$strict>>;
|
|
647
|
-
|
|
665
|
+
dart: z.ZodOptional<z.ZodObject<{
|
|
648
666
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
649
667
|
}, z.core.$strict> | z.ZodObject<{
|
|
650
668
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -659,7 +677,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
659
677
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
660
678
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
661
679
|
}, z.core.$strict>>;
|
|
662
|
-
|
|
680
|
+
reactNative: z.ZodOptional<z.ZodObject<{
|
|
663
681
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
664
682
|
}, z.core.$strict> | z.ZodObject<{
|
|
665
683
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -674,7 +692,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
674
692
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
675
693
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
676
694
|
}, z.core.$strict>>;
|
|
677
|
-
|
|
695
|
+
node: z.ZodOptional<z.ZodObject<{
|
|
678
696
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
679
697
|
}, z.core.$strict> | z.ZodObject<{
|
|
680
698
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -689,7 +707,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
689
707
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
690
708
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
691
709
|
}, z.core.$strict>>;
|
|
692
|
-
|
|
710
|
+
go: z.ZodOptional<z.ZodObject<{
|
|
693
711
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
694
712
|
}, z.core.$strict> | z.ZodObject<{
|
|
695
713
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -704,7 +722,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
704
722
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
705
723
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
706
724
|
}, z.core.$strict>>;
|
|
707
|
-
|
|
725
|
+
python: z.ZodOptional<z.ZodObject<{
|
|
708
726
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
709
727
|
}, z.core.$strict> | z.ZodObject<{
|
|
710
728
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -719,7 +737,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
719
737
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
720
738
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
721
739
|
}, z.core.$strict>>;
|
|
722
|
-
|
|
740
|
+
rust: z.ZodOptional<z.ZodObject<{
|
|
723
741
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
724
742
|
}, z.core.$strict> | z.ZodObject<{
|
|
725
743
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -734,7 +752,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
734
752
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
735
753
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
736
754
|
}, z.core.$strict>>;
|
|
737
|
-
|
|
755
|
+
msvc: z.ZodOptional<z.ZodObject<{
|
|
738
756
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
739
757
|
}, z.core.$strict> | z.ZodObject<{
|
|
740
758
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -749,7 +767,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
749
767
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
750
768
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
751
769
|
}, z.core.$strict>>;
|
|
752
|
-
|
|
770
|
+
unreal: z.ZodOptional<z.ZodObject<{
|
|
753
771
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
754
772
|
}, z.core.$strict> | z.ZodObject<{
|
|
755
773
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -764,7 +782,7 @@ export declare const LocalOverridesSchema: z.ZodObject<{
|
|
|
764
782
|
zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
765
783
|
openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
|
|
766
784
|
}, z.core.$strict>>;
|
|
767
|
-
|
|
785
|
+
unity: z.ZodOptional<z.ZodObject<{
|
|
768
786
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
769
787
|
}, z.core.$strict> | z.ZodObject<{
|
|
770
788
|
version: z.ZodOptional<z.ZodString>;
|
|
@@ -4,4 +4,7 @@ export const GithubSchema = z.strictObject({
|
|
|
4
4
|
shareToken: z
|
|
5
5
|
.boolean()
|
|
6
6
|
.describe('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.'),
|
|
7
|
+
usePcLogin: z
|
|
8
|
+
.boolean()
|
|
9
|
+
.describe('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.'),
|
|
7
10
|
});
|
|
@@ -2,6 +2,9 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const PcInstallsSchema: z.ZodObject<{
|
|
3
3
|
steamGames: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodNumber>]>;
|
|
4
4
|
epicGames: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
5
|
-
unrealEngines: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
6
|
-
|
|
5
|
+
unrealEngines: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
6
|
+
unrealEngineFolders: z.ZodArray<z.ZodString>;
|
|
7
|
+
unrealAssets: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean]>;
|
|
8
|
+
unityEditors: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean, z.ZodArray<z.ZodString>]>;
|
|
9
|
+
unityAssets: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodBoolean]>;
|
|
7
10
|
}, z.core.$strict>;
|
|
@@ -11,7 +11,21 @@ export const PcInstallsSchema = z
|
|
|
11
11
|
.strictObject({
|
|
12
12
|
steamGames: pick(z.number().int().positive(), 'Steam games (true maps each library; a list of app IDs maps only those games)', '[480, 730]'),
|
|
13
13
|
epicGames: pick(z.string().regex(/^[A-Za-z0-9._-]{1,100}$/), 'Epic Games Launcher games (by their app name)', '["Fortnite"]'),
|
|
14
|
-
unrealEngines:
|
|
15
|
-
|
|
14
|
+
unrealEngines: z
|
|
15
|
+
.union([z.literal('auto'), z.boolean(), z.array(z.string().regex(/^(UE_)?\d+\.\d+$/))])
|
|
16
|
+
.describe('Unreal Engine versions installed on this PC (with the Epic Games Launcher, or source builds it lists), read-only in the sandbox under C:\\PcInstalls\\unreal and registered there, so projects build with them without a download. "auto" = all of them whenever the sandbox is set up for Unreal, true = always, false = never, or a list (e.g. ["5.4"]).'),
|
|
17
|
+
unrealEngineFolders: z
|
|
18
|
+
.array(z.string().min(3).max(260))
|
|
19
|
+
.max(8)
|
|
20
|
+
.describe('Unreal Engine folders of this PC to use in the sandbox, writable (a source build, or a copy you build plugins into): each must hold Engine\\Build\\Build.version. Mapped under C:\\PcInstalls\\unreal and registered there.'),
|
|
21
|
+
unrealAssets: z
|
|
22
|
+
.union([z.literal('auto'), z.boolean()])
|
|
23
|
+
.describe('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.'),
|
|
24
|
+
unityEditors: z
|
|
25
|
+
.union([z.literal('auto'), z.boolean(), z.array(z.string().regex(/^\d+\.\d+\.\d+[abfp]\d+$/))])
|
|
26
|
+
.describe('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"]).'),
|
|
27
|
+
unityAssets: z
|
|
28
|
+
.union([z.literal('auto'), z.boolean()])
|
|
29
|
+
.describe('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.'),
|
|
16
30
|
})
|
|
17
31
|
.describe("Games, engines and editors installed on this PC, mapped read-only into sandboxes (no copy, no room on the sandbox's disk).");
|
|
@@ -55,6 +55,14 @@ export declare const ToolchainsSchema: z.ZodObject<{
|
|
|
55
55
|
modules: z.ZodArray<z.ZodString>;
|
|
56
56
|
hub: z.ZodBoolean;
|
|
57
57
|
keepVersions: z.ZodNumber;
|
|
58
|
+
mcp: z.ZodBoolean;
|
|
59
|
+
agentSkills: z.ZodBoolean;
|
|
60
|
+
cliVersion: z.ZodString;
|
|
61
|
+
assetCache: z.ZodEnum<{
|
|
62
|
+
pc: "pc";
|
|
63
|
+
persisted: "persisted";
|
|
64
|
+
local: "local";
|
|
65
|
+
}>;
|
|
58
66
|
}, z.core.$strict>;
|
|
59
67
|
godot: z.ZodObject<{
|
|
60
68
|
enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
|
|
@@ -40,7 +40,7 @@ export const ToolchainsSchema = z.strictObject({
|
|
|
40
40
|
.describe('"auto" (default): on the sandbox\'s own disk when C: has 25 GB free at boot, else "separate" (builds then write through the mapped workspace, which can overload this PC\'s disk). "shared": cargo\'s default target\\ (shared with builds on this PC, so builds on either side invalidate the other), "separate": <workspace>\\target\\sandbox (kept, no cross-talk), "local": on the sandbox\'s own disk (fastest, lost every boot), or a guest path.'),
|
|
41
41
|
linker: z
|
|
42
42
|
.enum(['lld', 'gnu'])
|
|
43
|
-
.describe('
|
|
43
|
+
.describe('"lld" (default) links with Rust\'s own lld: through MinGW\'s gcc on the GNU host (much less memory than GNU ld), and instead of link.exe on the MSVC host (link.exe writes executables into mapped folders as all zeros: os error 1392). "gnu" keeps GNU ld / link.exe.'),
|
|
44
44
|
linkSlots: z
|
|
45
45
|
.union([z.literal('auto'), z.number().int().min(1).max(32)])
|
|
46
46
|
.describe('GNU host: how many programs may link at the same time in the whole sandbox (other links wait). "auto" = one per 6 GB of sandbox memory, 1 to 4 (the memory governor slows links down too when memory runs short).'),
|
|
@@ -70,24 +70,39 @@ export const ToolchainsSchema = z.strictObject({
|
|
|
70
70
|
.describe('"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).'),
|
|
71
71
|
}),
|
|
72
72
|
unity: z.strictObject({
|
|
73
|
-
enabled: enabled("Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed
|
|
73
|
+
enabled: enabled("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.", 'ProjectSettings/ProjectVersion.txt'),
|
|
74
74
|
acceptLicense: z
|
|
75
75
|
.boolean()
|
|
76
76
|
.describe('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.'),
|
|
77
77
|
version: z
|
|
78
78
|
.string()
|
|
79
79
|
.min(1)
|
|
80
|
-
.describe('"project" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as "6000.0.32f1".'),
|
|
80
|
+
.describe('"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).'),
|
|
81
81
|
modules: z
|
|
82
82
|
.array(z.string().regex(/^[a-z0-9-]+$/))
|
|
83
83
|
.describe('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).'),
|
|
84
|
-
hub: z
|
|
84
|
+
hub: z
|
|
85
|
+
.boolean()
|
|
86
|
+
.describe('Also Unity Hub (kept on the data disk), for signing in to Unity Personal and installing editors by hand.'),
|
|
85
87
|
keepVersions: z
|
|
86
88
|
.number()
|
|
87
89
|
.int()
|
|
88
90
|
.min(1)
|
|
89
91
|
.max(20)
|
|
90
92
|
.describe('How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first).'),
|
|
93
|
+
mcp: z
|
|
94
|
+
.boolean()
|
|
95
|
+
.describe("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."),
|
|
96
|
+
agentSkills: z
|
|
97
|
+
.boolean()
|
|
98
|
+
.describe("Unity's skills for Claude Code and Codex, from Unity-Technologies/skills at the commit the Unity CLI pins."),
|
|
99
|
+
cliVersion: z
|
|
100
|
+
.string()
|
|
101
|
+
.regex(/^(latest|\d+\.\d+\.\d+(-[A-Za-z0-9.]+)?)$/)
|
|
102
|
+
.describe('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.'),
|
|
103
|
+
assetCache: z
|
|
104
|
+
.enum(['persisted', 'pc', 'local'])
|
|
105
|
+
.describe('"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).'),
|
|
91
106
|
}),
|
|
92
107
|
godot: z.strictObject({
|
|
93
108
|
enabled: enabled('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.', 'project.godot'),
|
|
@@ -218,7 +233,7 @@ export const ToolchainsSchema = z.strictObject({
|
|
|
218
233
|
}),
|
|
219
234
|
cli: z
|
|
220
235
|
.strictObject({
|
|
221
|
-
gh: EnabledSchema.describe('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
|
|
236
|
+
gh: EnabledSchema.describe('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.'),
|
|
222
237
|
zstd: EnabledSchema.describe('Zstandard (zstd). "auto" = off; set true to get it.'),
|
|
223
238
|
openssl: EnabledSchema.describe('`openssl` on PATH, from the copy Git for Windows ships (its mingw64\\bin is not put on PATH, so it cannot shadow MinGW\'s gcc). "auto" = on.'),
|
|
224
239
|
})
|
|
@@ -5,6 +5,7 @@ import { epicAdapter } from './kinds/epic.js';
|
|
|
5
5
|
import { expoAdapter } from './kinds/expo.js';
|
|
6
6
|
import { keystoreAdapter } from './kinds/keystore.js';
|
|
7
7
|
import { perplexityAdapter } from './kinds/perplexity.js';
|
|
8
|
+
import { perplexityAppAdapter } from './kinds/perplexityapp.js';
|
|
8
9
|
import { playAdapter } from './kinds/play.js';
|
|
9
10
|
import { steamAdapter } from './kinds/steam.js';
|
|
10
11
|
import { unityAdapter } from './kinds/unity.js';
|
|
@@ -19,4 +20,5 @@ export const ADAPTERS = {
|
|
|
19
20
|
appstore: appstoreAdapter,
|
|
20
21
|
perplexity: perplexityAdapter,
|
|
21
22
|
comet: cometAdapter,
|
|
23
|
+
perplexityapp: perplexityAppAdapter,
|
|
22
24
|
};
|
|
@@ -4,28 +4,30 @@ import type { ServiceAccounts } from '../../shared/accounts/payloads.js';
|
|
|
4
4
|
import { type GuestAdapter } from './adapter.js';
|
|
5
5
|
export declare const DeliveredSchema: z.ZodObject<{
|
|
6
6
|
fingerprints: z.ZodRecord<z.ZodEnum<{
|
|
7
|
-
unity: "unity";
|
|
8
7
|
keystore: "keystore";
|
|
9
8
|
play: "play";
|
|
10
9
|
expo: "expo";
|
|
11
10
|
appstore: "appstore";
|
|
11
|
+
unity: "unity";
|
|
12
12
|
steam: "steam";
|
|
13
13
|
epic: "epic";
|
|
14
14
|
cfx: "cfx";
|
|
15
15
|
perplexity: "perplexity";
|
|
16
16
|
comet: "comet";
|
|
17
|
+
perplexityapp: "perplexityapp";
|
|
17
18
|
}> & z.core.$partial, z.ZodString>;
|
|
18
19
|
leased: z.ZodArray<z.ZodEnum<{
|
|
19
|
-
unity: "unity";
|
|
20
20
|
keystore: "keystore";
|
|
21
21
|
play: "play";
|
|
22
22
|
expo: "expo";
|
|
23
23
|
appstore: "appstore";
|
|
24
|
+
unity: "unity";
|
|
24
25
|
steam: "steam";
|
|
25
26
|
epic: "epic";
|
|
26
27
|
cfx: "cfx";
|
|
27
28
|
perplexity: "perplexity";
|
|
28
29
|
comet: "comet";
|
|
30
|
+
perplexityapp: "perplexityapp";
|
|
29
31
|
}>>;
|
|
30
32
|
}, z.core.$strip>;
|
|
31
33
|
export type Delivered = z.output<typeof DeliveredSchema>;
|
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
// Epic Games: the handed-over sign-in goes into the launcher's GameUserSettings.ini before anyone opens it (its other
|
|
2
|
-
// settings are kept, and the file keeps the encoding it had: the launcher often writes UTF-16).
|
|
3
|
-
//
|
|
2
|
+
// settings are kept, and the file keeps the encoding it had: the launcher often writes UTF-16). Launcher 17+ reads
|
|
3
|
+
// Config\WindowsEditor, older ones Config\Windows: both get it. The watch reads it back to notice when the launcher
|
|
4
|
+
// renews it, or when you sign in here the first time.
|
|
4
5
|
import fs from 'node:fs';
|
|
5
6
|
import path from 'node:path';
|
|
6
|
-
import {
|
|
7
|
+
import { epicSettingsFiles, MAX_EPIC_INI_BYTES, readEpicLogin, withEpicLogin, } from '../../../shared/accounts/index.js';
|
|
7
8
|
import { decodeText, encodeText, readBoundedFile } from '../../../shared/io/index.js';
|
|
8
9
|
import { localAppData } from '../adapter.js';
|
|
9
|
-
function settingsFile() {
|
|
10
|
-
return epicSettingsFile(localAppData());
|
|
11
|
-
}
|
|
12
10
|
export const epicAdapter = {
|
|
13
11
|
kind: 'epic',
|
|
14
12
|
apply(p) {
|
|
15
|
-
const file
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
for (const file of epicSettingsFiles(localAppData())) {
|
|
14
|
+
const bytes = readBoundedFile(file, MAX_EPIC_INI_BYTES);
|
|
15
|
+
const read = bytes ? decodeText(bytes) : { text: '', encoding: 'utf8' };
|
|
16
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
17
|
+
fs.writeFileSync(file, encodeText(withEpicLogin(read.text, p), read.encoding));
|
|
18
|
+
}
|
|
20
19
|
return { summary: 'Epic Games Launcher: signed in with your saved sign-in' };
|
|
21
20
|
},
|
|
22
21
|
current() {
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
// The newest place first: the one the launcher in this sandbox writes when it renews the sign-in.
|
|
23
|
+
for (const file of epicSettingsFiles(localAppData())) {
|
|
24
|
+
const bytes = readBoundedFile(file, MAX_EPIC_INI_BYTES);
|
|
25
|
+
const login = bytes ? readEpicLogin(decodeText(bytes).text) : null;
|
|
26
|
+
if (login)
|
|
27
|
+
return login;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
25
30
|
},
|
|
26
31
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CometPayload } from '../../../shared/accounts/index.js';
|
|
2
|
+
import { type GuestAdapter } from '../adapter.js';
|
|
3
|
+
/** Where the sign-in waits for the app. */
|
|
4
|
+
export declare function perplexityAppPendingFile(root?: string): string;
|
|
5
|
+
/** The sign-in waiting for the app (left in place), or null (none, or not the expected shape). */
|
|
6
|
+
export declare function peekPendingPerplexityApp(root?: string): CometPayload | null;
|
|
7
|
+
export declare const perplexityAppAdapter: GuestAdapter<'perplexityapp'>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Perplexity desktop app: the saved perplexity.ai sign-in cookies wait in secretDir('perplexityapp') (the sandbox's own
|
|
2
|
+
// disk) until the app runs; the watch then writes them into it over its DevTools port and deletes the file. While the
|
|
3
|
+
// sandbox runs, the watch asks the running app for its perplexity.ai cookies, so a sign-in made here (or renewed) is
|
|
4
|
+
// kept for the next sandbox. When the app is not running, the last sign-in seen stands.
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { cometSummary, PAYLOADS } from '../../../shared/accounts/index.js';
|
|
8
|
+
import { readBoundedFile } from '../../../shared/io/bounded.js';
|
|
9
|
+
import { readAppSignIn, restoreAppSignIn } from '../../browser/perplexity-app.js';
|
|
10
|
+
import { secretDir } from '../adapter.js';
|
|
11
|
+
/** Where the sign-in waits for the app. */
|
|
12
|
+
export function perplexityAppPendingFile(root = secretDir('perplexityapp')) {
|
|
13
|
+
return path.join(root, 'restore.json');
|
|
14
|
+
}
|
|
15
|
+
/** The sign-in waiting for the app (left in place), or null (none, or not the expected shape). */
|
|
16
|
+
export function peekPendingPerplexityApp(root) {
|
|
17
|
+
const bytes = readBoundedFile(perplexityAppPendingFile(root), 512 * 1024);
|
|
18
|
+
if (!bytes)
|
|
19
|
+
return null;
|
|
20
|
+
try {
|
|
21
|
+
const parsed = PAYLOADS.perplexityapp.safeParse(JSON.parse(bytes.toString('utf8')));
|
|
22
|
+
return parsed.success ? parsed.data : null;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null; // Not JSON: nothing to restore.
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** The last sign-in seen in this process (the daemon's watch). */
|
|
29
|
+
let held = null;
|
|
30
|
+
export const perplexityAppAdapter = {
|
|
31
|
+
kind: 'perplexityapp',
|
|
32
|
+
apply(p) {
|
|
33
|
+
const file = perplexityAppPendingFile();
|
|
34
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
35
|
+
fs.writeFileSync(file, JSON.stringify(p), { encoding: 'utf8', mode: 0o600 });
|
|
36
|
+
held = p;
|
|
37
|
+
return {
|
|
38
|
+
summary: 'Perplexity app: your saved sign-in (' + cometSummary(p) + ') goes into it once it runs (reload its window)',
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
async refresh() {
|
|
42
|
+
const pending = peekPendingPerplexityApp();
|
|
43
|
+
if (pending && (await restoreAppSignIn(pending).catch(() => false)))
|
|
44
|
+
fs.rmSync(perplexityAppPendingFile(), { force: true });
|
|
45
|
+
const now = await readAppSignIn();
|
|
46
|
+
if (now)
|
|
47
|
+
held = now;
|
|
48
|
+
},
|
|
49
|
+
current() {
|
|
50
|
+
return held;
|
|
51
|
+
},
|
|
52
|
+
checkMs: 30_000,
|
|
53
|
+
};
|
|
@@ -1,2 +1,29 @@
|
|
|
1
|
+
import type { UnityStatus } from '../../../shared/unity/status.js';
|
|
1
2
|
import { type GuestAdapter } from '../adapter.js';
|
|
3
|
+
/** Runs a program to its end (or its time limit); the exit code and what it printed. Injected by the self-test. */
|
|
4
|
+
export type UnityRunner = (file: string, args: readonly string[], o: {
|
|
5
|
+
readonly timeoutMs: number;
|
|
6
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
7
|
+
}) => Promise<{
|
|
8
|
+
readonly code: number;
|
|
9
|
+
readonly stdout: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const runUnityProgram: UnityRunner;
|
|
12
|
+
export interface UnityDirs {
|
|
13
|
+
readonly programData: string;
|
|
14
|
+
readonly localAppData: string;
|
|
15
|
+
/** secretDir('unity'). */
|
|
16
|
+
readonly secrets: string;
|
|
17
|
+
}
|
|
18
|
+
/** The adapter for these folders and this runner (the self-test passes its own). */
|
|
19
|
+
export declare function unityAdapterFor(dirs: UnityDirs, run?: UnityRunner): GuestAdapter<'unity'>;
|
|
2
20
|
export declare const unityAdapter: GuestAdapter<'unity'>;
|
|
21
|
+
/**
|
|
22
|
+
* Activates the serial the sandbox holds once an editor exists, then asks `unity license status` where the licence
|
|
23
|
+
* stands. The detail never holds a secret.
|
|
24
|
+
*/
|
|
25
|
+
export declare function activateUnityLicence(o: {
|
|
26
|
+
readonly editorExe: string | null;
|
|
27
|
+
readonly unityExe: string | null;
|
|
28
|
+
readonly source?: string;
|
|
29
|
+
}, dirs?: UnityDirs, run?: UnityRunner): Promise<UnityStatus['licence']>;
|