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
|
@@ -223,6 +223,12 @@ import {
|
|
|
223
223
|
takeHiddenInstallNotice,
|
|
224
224
|
toWireError,
|
|
225
225
|
trustStorePath,
|
|
226
|
+
unityOverview,
|
|
227
|
+
unityPage,
|
|
228
|
+
unityView,
|
|
229
|
+
unrealOverview,
|
|
230
|
+
unrealPage,
|
|
231
|
+
unrealView,
|
|
226
232
|
updatesPage,
|
|
227
233
|
updatesStatus,
|
|
228
234
|
updatesView,
|
|
@@ -251,7 +257,7 @@ import {
|
|
|
251
257
|
withOperationCommands,
|
|
252
258
|
working,
|
|
253
259
|
writeJson
|
|
254
|
-
} from "./chunk-
|
|
260
|
+
} from "./chunk-6WWMBCT2.js";
|
|
255
261
|
|
|
256
262
|
// node_modules/commander/lib/error.js
|
|
257
263
|
var require_error = __commonJS({
|
|
@@ -3984,7 +3990,7 @@ var COMMAND_LIST = [
|
|
|
3984
3990
|
},
|
|
3985
3991
|
{
|
|
3986
3992
|
name: "name",
|
|
3987
|
-
description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity or
|
|
3993
|
+
description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity, comet or perplexityapp",
|
|
3988
3994
|
required: false,
|
|
3989
3995
|
choices: "accounts"
|
|
3990
3996
|
}
|
|
@@ -4066,6 +4072,63 @@ var COMMAND_LIST = [
|
|
|
4066
4072
|
],
|
|
4067
4073
|
json
|
|
4068
4074
|
},
|
|
4075
|
+
{
|
|
4076
|
+
name: "unreal",
|
|
4077
|
+
summary: "Unreal Engine: the sandbox's engines, this PC's engines and assets, register an engine folder, open the launcher",
|
|
4078
|
+
group: "Projects & accounts",
|
|
4079
|
+
json,
|
|
4080
|
+
examples: [
|
|
4081
|
+
"sandbox unreal engines, which project uses which, Visual Studio",
|
|
4082
|
+
"sandbox unreal add-engine D:\\UE5 use this engine folder in sandboxes (writable)",
|
|
4083
|
+
"sandbox unreal launcher open the Epic Games Launcher in the running sandbox"
|
|
4084
|
+
],
|
|
4085
|
+
args: [
|
|
4086
|
+
{
|
|
4087
|
+
name: "action",
|
|
4088
|
+
description: "status, add-engine, forget-engine, launcher",
|
|
4089
|
+
required: false,
|
|
4090
|
+
choices: ["status"]
|
|
4091
|
+
},
|
|
4092
|
+
{
|
|
4093
|
+
name: "folder",
|
|
4094
|
+
description: "(add-engine, forget-engine) the engine folder",
|
|
4095
|
+
required: false,
|
|
4096
|
+
when: []
|
|
4097
|
+
}
|
|
4098
|
+
],
|
|
4099
|
+
options: []
|
|
4100
|
+
},
|
|
4101
|
+
{
|
|
4102
|
+
name: "unity",
|
|
4103
|
+
summary: "Unity: the sandbox's editors, this PC's editors and Asset Store downloads, the licence, the editor bridge, Unity Hub",
|
|
4104
|
+
group: "Projects & accounts",
|
|
4105
|
+
json,
|
|
4106
|
+
examples: [
|
|
4107
|
+
"sandbox unity editors, which project opens with which, the licence",
|
|
4108
|
+
"sandbox unity sign-in sign in to Unity in the running sandbox",
|
|
4109
|
+
"sandbox unity add-bridge D:\\Game add the editor bridge to a project (asks first)"
|
|
4110
|
+
],
|
|
4111
|
+
args: [
|
|
4112
|
+
{
|
|
4113
|
+
name: "action",
|
|
4114
|
+
description: "status, hub, sign-in, add-bridge, remove-bridge",
|
|
4115
|
+
required: false,
|
|
4116
|
+
choices: ["status"]
|
|
4117
|
+
},
|
|
4118
|
+
{
|
|
4119
|
+
name: "project",
|
|
4120
|
+
description: "(add-bridge, remove-bridge) the Unity project folder",
|
|
4121
|
+
required: false,
|
|
4122
|
+
when: []
|
|
4123
|
+
}
|
|
4124
|
+
],
|
|
4125
|
+
options: [
|
|
4126
|
+
text("--bridge", "name", "(add-bridge) pipeline (Unity 6 and later) or coplay (older Unity)", {
|
|
4127
|
+
when: "add-bridge",
|
|
4128
|
+
label: "Bridge"
|
|
4129
|
+
})
|
|
4130
|
+
]
|
|
4131
|
+
},
|
|
4069
4132
|
{
|
|
4070
4133
|
name: "engine",
|
|
4071
4134
|
summary: "(beta) what runs your sandbox (Windows Sandbox or HCS) and what each engine can do on this PC",
|
|
@@ -6738,6 +6801,8 @@ var MENU_VIEWS = [
|
|
|
6738
6801
|
{ view: accountsView, section: "Accounts" },
|
|
6739
6802
|
{ view: appsView, section: "Apps" },
|
|
6740
6803
|
{ view: projectsView, section: "Sandbox" },
|
|
6804
|
+
{ view: unrealView, section: "Sandbox" },
|
|
6805
|
+
{ view: unityView, section: "Sandbox" },
|
|
6741
6806
|
{ view: healthView, section: "Maintenance" },
|
|
6742
6807
|
{ view: dataView, section: "Maintenance" },
|
|
6743
6808
|
{ view: storageView, section: "Maintenance" },
|
|
@@ -8614,8 +8679,24 @@ var CATEGORIES3 = [
|
|
|
8614
8679
|
label: "Projects",
|
|
8615
8680
|
description: "Project roots (folders of projects, opened without a restart) and the projects started before."
|
|
8616
8681
|
},
|
|
8617
|
-
{ id: "databases", label: "Databases", description: "Databases the sandbox can run: start and stop them." }
|
|
8682
|
+
{ id: "databases", label: "Databases", description: "Databases the sandbox can run: start and stop them." },
|
|
8683
|
+
{
|
|
8684
|
+
id: "unreal",
|
|
8685
|
+
label: "Unreal Engine",
|
|
8686
|
+
description: "Engines, which project uses which, this PC's engines and assets, Visual Studio and the debugger."
|
|
8687
|
+
},
|
|
8688
|
+
{
|
|
8689
|
+
id: "unity",
|
|
8690
|
+
label: "Unity",
|
|
8691
|
+
description: "Editors, this PC's editors and Asset Store downloads, the licence, the editor bridge and Unity Hub."
|
|
8692
|
+
}
|
|
8618
8693
|
];
|
|
8694
|
+
function unrealMenu(m) {
|
|
8695
|
+
return m.unreal ? menuView(unrealPage(m.unreal), { category: "unreal", prefix: "unreal:", refresh: false }) : void 0;
|
|
8696
|
+
}
|
|
8697
|
+
function unityMenu(m) {
|
|
8698
|
+
return m.unity ? menuView(unityPage(m.unity), { category: "unity", prefix: "unity:", refresh: false }) : void 0;
|
|
8699
|
+
}
|
|
8619
8700
|
function statusView(m) {
|
|
8620
8701
|
return menuView(sandboxPage(m.report), { category: "status", prefix: "status:", refresh: false });
|
|
8621
8702
|
}
|
|
@@ -8624,6 +8705,8 @@ function projectsView2(m) {
|
|
|
8624
8705
|
}
|
|
8625
8706
|
function viewFor(m, category) {
|
|
8626
8707
|
if (category === "projects") return projectsView2(m);
|
|
8708
|
+
if (category === "unreal") return unrealMenu(m);
|
|
8709
|
+
if (category === "unity") return unityMenu(m);
|
|
8627
8710
|
if (category === "status" || category === void 0) return statusView(m);
|
|
8628
8711
|
return void 0;
|
|
8629
8712
|
}
|
|
@@ -8650,12 +8733,43 @@ function sandboxOptions(m) {
|
|
|
8650
8733
|
section: "Databases",
|
|
8651
8734
|
description: d.title + ". Enter " + (d.running ? "stops" : "starts") + " it (the first start downloads it)."
|
|
8652
8735
|
}));
|
|
8736
|
+
const unreal = unrealMenu(m);
|
|
8737
|
+
const noUnreal = unreal ? [] : [
|
|
8738
|
+
{
|
|
8739
|
+
value: "info:unreal",
|
|
8740
|
+
label: "Could not read the Unreal set-up",
|
|
8741
|
+
category: "unreal",
|
|
8742
|
+
section: "Unreal Engine",
|
|
8743
|
+
description: "l looks again.",
|
|
8744
|
+
disabled: "l looks again."
|
|
8745
|
+
}
|
|
8746
|
+
];
|
|
8747
|
+
const unity = unityMenu(m);
|
|
8748
|
+
const noUnity = unity ? [] : [
|
|
8749
|
+
{
|
|
8750
|
+
value: "info:unity",
|
|
8751
|
+
label: "Could not read the Unity set-up",
|
|
8752
|
+
category: "unity",
|
|
8753
|
+
section: "Unity",
|
|
8754
|
+
description: "l looks again.",
|
|
8755
|
+
disabled: "l looks again."
|
|
8756
|
+
}
|
|
8757
|
+
];
|
|
8653
8758
|
return {
|
|
8654
8759
|
path: [],
|
|
8655
|
-
items: [
|
|
8760
|
+
items: [
|
|
8761
|
+
...statusItems,
|
|
8762
|
+
...projects.items,
|
|
8763
|
+
...databases,
|
|
8764
|
+
...noDatabases,
|
|
8765
|
+
...unreal?.items ?? [],
|
|
8766
|
+
...noUnreal,
|
|
8767
|
+
...unity?.items ?? [],
|
|
8768
|
+
...noUnity
|
|
8769
|
+
],
|
|
8656
8770
|
categories: CATEGORIES3,
|
|
8657
8771
|
empty: "Nothing here yet.",
|
|
8658
|
-
actions: (category) => category === "projects" ? [...projects.actions, REFRESH] : category === "databases" ? [REFRESH] : [...status.actions, REFRESH],
|
|
8772
|
+
actions: (category) => category === "projects" ? [...projects.actions, REFRESH] : category === "databases" ? [REFRESH] : category === "unreal" ? [...unreal?.actions ?? [], REFRESH] : category === "unity" ? [...unity?.actions ?? [], REFRESH] : [...status.actions, REFRESH],
|
|
8659
8773
|
enterLabel: (category, id) => viewFor(m, category)?.enterLabel(category, id) || enterLabel2(id ?? "", m)
|
|
8660
8774
|
};
|
|
8661
8775
|
}
|
|
@@ -8708,7 +8822,9 @@ var SandboxPage = class extends ListPage {
|
|
|
8708
8822
|
report: report2,
|
|
8709
8823
|
projects: await readQuery(listProjects, this.ctx),
|
|
8710
8824
|
databases,
|
|
8711
|
-
defaultAgent: this.defaultAgent()
|
|
8825
|
+
defaultAgent: this.defaultAgent(),
|
|
8826
|
+
unreal: await readQuery(unrealOverview, this.ctx).catch(() => null),
|
|
8827
|
+
unity: await readQuery(unityOverview, this.ctx).catch(() => null)
|
|
8712
8828
|
};
|
|
8713
8829
|
}
|
|
8714
8830
|
/** The folder `sbx-db` runs in: the sandbox's own workspace. */
|
|
@@ -10478,6 +10594,10 @@ var HANDLERS = {
|
|
|
10478
10594
|
);
|
|
10479
10595
|
},
|
|
10480
10596
|
engine,
|
|
10597
|
+
// The bare command shows the overview; its actions (add-engine, forget-engine, launcher) are the operations' hints.
|
|
10598
|
+
unreal: definitionHandler(unrealOverview),
|
|
10599
|
+
// Same for Unity: its actions (hub, sign-in, add-bridge, remove-bridge) are the operations' hints.
|
|
10600
|
+
unity: definitionHandler(unityOverview),
|
|
10481
10601
|
"host-claude": claudeHost,
|
|
10482
10602
|
host: hostCommand,
|
|
10483
10603
|
_watch: watcher,
|
package/dist/bin/claude-host.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/claude-host.ts
|
|
9
9
|
var args = process.argv.slice(2);
|
package/dist/bin/claude-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/claude-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "claude" });
|
package/dist/bin/codex-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/codex-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "codex" });
|
package/dist/bin/gemini-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/gemini-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "gemini" });
|
package/dist/bin/sandbox.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sandbox.ts
|
|
9
9
|
run(process.argv.slice(2));
|
package/dist/bin/sbx-hide.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sbx-hide.ts
|
|
9
9
|
run(process.argv.slice(2), { command: "hide" });
|
package/dist/bin/sbx-show.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JXL6ZOO3.js";
|
|
6
|
+
import "./chunk-6WWMBCT2.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sbx-show.ts
|
|
9
9
|
run(process.argv.slice(2), { command: "show" });
|
|
@@ -11,6 +11,8 @@ import { RepoGuardStore } from '../../../host/guard/index.js';
|
|
|
11
11
|
import { hostPublicIp, prepareVpn, readVpnLine, vpnNotes } from '../../../host/vpn/index.js';
|
|
12
12
|
import { prepareGithubToken } from '../../../host/github/index.js';
|
|
13
13
|
import { prepareServiceAccounts } from '../../../host/accounts/index.js';
|
|
14
|
+
import { prepareStorePackages } from '../../../host/apps/index.js';
|
|
15
|
+
import { storeApps } from '../../../shared/apps/index.js';
|
|
14
16
|
import { discoverPcInstalls } from '../../../host/pc-installs/index.js';
|
|
15
17
|
import { clearSecrets } from '../../../host/secrets/index.js';
|
|
16
18
|
import { assertCanLaunch, isSandboxRunning, spawnDetached, probeHost, hideSandboxWindow, realContainedDeps, } from '../../../host/sandbox/index.js';
|
|
@@ -180,22 +182,33 @@ class Launcher {
|
|
|
180
182
|
: prepareGithubToken(config, ctx.storageRoot, undefined, bootWants.wants.projects);
|
|
181
183
|
// accounts.<kind>.share: the saved service sign-ins this boot's toolchains use, for the one-shot file only.
|
|
182
184
|
const launchId = newLaunchId();
|
|
185
|
+
const toolchainsOn = toolchainsOnForBoot({ run }, bootWants.wants.projects);
|
|
183
186
|
const accounts = generateOnly
|
|
184
187
|
? null
|
|
185
188
|
: prepareServiceAccounts({
|
|
186
189
|
config,
|
|
187
190
|
others: bootWants.wants.projects,
|
|
188
|
-
on:
|
|
191
|
+
on: toolchainsOn,
|
|
189
192
|
storageRoot: ctx.storageRoot,
|
|
190
193
|
dataPath: run.dataPath,
|
|
191
194
|
launchId,
|
|
192
195
|
// A new launch needs no sandbox running, so a lease held elsewhere is from one that stopped.
|
|
193
196
|
isRunning: () => isSandboxRunning(),
|
|
194
197
|
});
|
|
195
|
-
//
|
|
198
|
+
// Store apps (apps.install): their packages are fetched with this PC's own Store tooling.
|
|
199
|
+
const store = generateOnly
|
|
200
|
+
? null
|
|
201
|
+
: await prepareStorePackages(storeApps(config.apps.install), {
|
|
202
|
+
storageRoot: ctx.storageRoot,
|
|
203
|
+
dataPath: run.dataPath,
|
|
204
|
+
});
|
|
205
|
+
// pcInstalls: this PC's games, engines and editors, read-only (yours only: never from a project file). The
|
|
206
|
+
// engines ("auto") come along whenever this launch sets the sandbox up for Unreal.
|
|
196
207
|
const pcInstalls = discoverPcInstalls(ctx.loaded.config.pcInstalls, {
|
|
197
208
|
packageRoot: ctx.packageRoot,
|
|
198
209
|
storageRoot: ctx.storageRoot,
|
|
210
|
+
unrealOn: toolchainsOn.has('unreal'),
|
|
211
|
+
unityOn: toolchainsOn.has('unity'),
|
|
199
212
|
});
|
|
200
213
|
// This PC's commit (RAM plus paging file) bounds the sandbox's memory as much as free RAM does.
|
|
201
214
|
const hostMemory = generateOnly ? null : readHostMemory(ctx.storageRoot);
|
|
@@ -233,6 +246,8 @@ class Launcher {
|
|
|
233
246
|
console.log(c.yellow(line));
|
|
234
247
|
for (const line of accounts?.notes ?? [])
|
|
235
248
|
console.log(c.yellow(line));
|
|
249
|
+
for (const line of store?.notes ?? [])
|
|
250
|
+
console.log(c.yellow(line));
|
|
236
251
|
for (const line of pcInstalls.notes)
|
|
237
252
|
console.log(c.yellow(line));
|
|
238
253
|
table(launchSummary(run, generated, prepared));
|
|
@@ -7,6 +7,8 @@ import { agentCommandsStatus } from '../../app/features/agent-commands/index.js'
|
|
|
7
7
|
import { listAccounts } from '../../app/features/accounts/index.js';
|
|
8
8
|
import { containedStatus, showStorage } from '../../app/features/storage/index.js';
|
|
9
9
|
import { listProjects } from '../../app/features/projects/index.js';
|
|
10
|
+
import { unrealOverview } from '../../app/features/unreal/index.js';
|
|
11
|
+
import { unityOverview } from '../../app/features/unity/index.js';
|
|
10
12
|
import { definitionHandler } from '../operations/index.js';
|
|
11
13
|
import { fail } from '../../core/util/index.js';
|
|
12
14
|
import { claudeHost, config, doctor, hostCommand, logs, sync, watcher } from './maintenance/index.js';
|
|
@@ -48,6 +50,10 @@ export const HANDLERS = {
|
|
|
48
50
|
return fail('Unknown storage action "' + action + '".', 'Use: sandbox storage, sandbox storage move <folder>, sandbox storage use <folder> or sandbox storage contained on|off|status');
|
|
49
51
|
},
|
|
50
52
|
engine: engine,
|
|
53
|
+
// The bare command shows the overview; its actions (add-engine, forget-engine, launcher) are the operations' hints.
|
|
54
|
+
unreal: definitionHandler(unrealOverview),
|
|
55
|
+
// Same for Unity: its actions (hub, sign-in, add-bridge, remove-bridge) are the operations' hints.
|
|
56
|
+
unity: definitionHandler(unityOverview),
|
|
51
57
|
'host-claude': claudeHost,
|
|
52
58
|
host: hostCommand,
|
|
53
59
|
_watch: watcher,
|
package/dist/cli/manifest.d.ts
CHANGED
|
@@ -304,7 +304,7 @@ declare const COMMAND_LIST: readonly [{
|
|
|
304
304
|
readonly choices: readonly ["list", "save", "use", "default", "rename", "remove"];
|
|
305
305
|
}, {
|
|
306
306
|
readonly name: "name";
|
|
307
|
-
readonly description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity or
|
|
307
|
+
readonly description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity, comet or perplexityapp";
|
|
308
308
|
readonly required: false;
|
|
309
309
|
readonly choices: "accounts";
|
|
310
310
|
}];
|
|
@@ -488,6 +488,56 @@ declare const COMMAND_LIST: readonly [{
|
|
|
488
488
|
shownAs?: string | undefined;
|
|
489
489
|
}];
|
|
490
490
|
readonly json: true;
|
|
491
|
+
}, {
|
|
492
|
+
readonly name: "unreal";
|
|
493
|
+
readonly summary: "Unreal Engine: the sandbox's engines, this PC's engines and assets, register an engine folder, open the launcher";
|
|
494
|
+
readonly group: "Projects & accounts";
|
|
495
|
+
readonly json: true;
|
|
496
|
+
readonly examples: readonly ["sandbox unreal engines, which project uses which, Visual Studio", "sandbox unreal add-engine D:\\UE5 use this engine folder in sandboxes (writable)", "sandbox unreal launcher open the Epic Games Launcher in the running sandbox"];
|
|
497
|
+
readonly args: readonly [{
|
|
498
|
+
readonly name: "action";
|
|
499
|
+
readonly description: "status, add-engine, forget-engine, launcher";
|
|
500
|
+
readonly required: false;
|
|
501
|
+
readonly choices: readonly ["status"];
|
|
502
|
+
}, {
|
|
503
|
+
readonly name: "folder";
|
|
504
|
+
readonly description: "(add-engine, forget-engine) the engine folder";
|
|
505
|
+
readonly required: false;
|
|
506
|
+
readonly when: readonly [];
|
|
507
|
+
}];
|
|
508
|
+
readonly options: readonly [];
|
|
509
|
+
}, {
|
|
510
|
+
readonly name: "unity";
|
|
511
|
+
readonly summary: "Unity: the sandbox's editors, this PC's editors and Asset Store downloads, the licence, the editor bridge, Unity Hub";
|
|
512
|
+
readonly group: "Projects & accounts";
|
|
513
|
+
readonly json: true;
|
|
514
|
+
readonly examples: readonly ["sandbox unity editors, which project opens with which, the licence", "sandbox unity sign-in sign in to Unity in the running sandbox", "sandbox unity add-bridge D:\\Game add the editor bridge to a project (asks first)"];
|
|
515
|
+
readonly args: readonly [{
|
|
516
|
+
readonly name: "action";
|
|
517
|
+
readonly description: "status, hub, sign-in, add-bridge, remove-bridge";
|
|
518
|
+
readonly required: false;
|
|
519
|
+
readonly choices: readonly ["status"];
|
|
520
|
+
}, {
|
|
521
|
+
readonly name: "project";
|
|
522
|
+
readonly description: "(add-bridge, remove-bridge) the Unity project folder";
|
|
523
|
+
readonly required: false;
|
|
524
|
+
readonly when: readonly [];
|
|
525
|
+
}];
|
|
526
|
+
readonly options: readonly [{
|
|
527
|
+
flag: string;
|
|
528
|
+
type: "string" | "number" | "boolean" | "list";
|
|
529
|
+
description: string;
|
|
530
|
+
short?: string | undefined;
|
|
531
|
+
value?: string | undefined;
|
|
532
|
+
label?: string | undefined;
|
|
533
|
+
default?: string | number | undefined;
|
|
534
|
+
choices?: string[] | "accounts" | "harnesses" | "sessions" | undefined;
|
|
535
|
+
advanced?: boolean | undefined;
|
|
536
|
+
when?: string | string[] | undefined;
|
|
537
|
+
noMenu?: boolean | undefined;
|
|
538
|
+
group?: string | undefined;
|
|
539
|
+
shownAs?: string | undefined;
|
|
540
|
+
}];
|
|
491
541
|
}, {
|
|
492
542
|
readonly name: "engine";
|
|
493
543
|
readonly summary: "(beta) what runs your sandbox (Windows Sandbox or HCS) and what each engine can do on this PC";
|
package/dist/cli/manifest.js
CHANGED
|
@@ -299,7 +299,7 @@ const COMMAND_LIST = [
|
|
|
299
299
|
},
|
|
300
300
|
{
|
|
301
301
|
name: 'name',
|
|
302
|
-
description: 'account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity or
|
|
302
|
+
description: 'account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity, comet or perplexityapp',
|
|
303
303
|
required: false,
|
|
304
304
|
choices: 'accounts',
|
|
305
305
|
},
|
|
@@ -381,6 +381,63 @@ const COMMAND_LIST = [
|
|
|
381
381
|
],
|
|
382
382
|
json,
|
|
383
383
|
},
|
|
384
|
+
{
|
|
385
|
+
name: 'unreal',
|
|
386
|
+
summary: "Unreal Engine: the sandbox's engines, this PC's engines and assets, register an engine folder, open the launcher",
|
|
387
|
+
group: 'Projects & accounts',
|
|
388
|
+
json,
|
|
389
|
+
examples: [
|
|
390
|
+
'sandbox unreal engines, which project uses which, Visual Studio',
|
|
391
|
+
'sandbox unreal add-engine D:\\UE5 use this engine folder in sandboxes (writable)',
|
|
392
|
+
'sandbox unreal launcher open the Epic Games Launcher in the running sandbox',
|
|
393
|
+
],
|
|
394
|
+
args: [
|
|
395
|
+
{
|
|
396
|
+
name: 'action',
|
|
397
|
+
description: 'status, add-engine, forget-engine, launcher',
|
|
398
|
+
required: false,
|
|
399
|
+
choices: ['status'],
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: 'folder',
|
|
403
|
+
description: '(add-engine, forget-engine) the engine folder',
|
|
404
|
+
required: false,
|
|
405
|
+
when: [],
|
|
406
|
+
},
|
|
407
|
+
],
|
|
408
|
+
options: [],
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
name: 'unity',
|
|
412
|
+
summary: "Unity: the sandbox's editors, this PC's editors and Asset Store downloads, the licence, the editor bridge, Unity Hub",
|
|
413
|
+
group: 'Projects & accounts',
|
|
414
|
+
json,
|
|
415
|
+
examples: [
|
|
416
|
+
'sandbox unity editors, which project opens with which, the licence',
|
|
417
|
+
'sandbox unity sign-in sign in to Unity in the running sandbox',
|
|
418
|
+
'sandbox unity add-bridge D:\\Game add the editor bridge to a project (asks first)',
|
|
419
|
+
],
|
|
420
|
+
args: [
|
|
421
|
+
{
|
|
422
|
+
name: 'action',
|
|
423
|
+
description: 'status, hub, sign-in, add-bridge, remove-bridge',
|
|
424
|
+
required: false,
|
|
425
|
+
choices: ['status'],
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
name: 'project',
|
|
429
|
+
description: '(add-bridge, remove-bridge) the Unity project folder',
|
|
430
|
+
required: false,
|
|
431
|
+
when: [],
|
|
432
|
+
},
|
|
433
|
+
],
|
|
434
|
+
options: [
|
|
435
|
+
text('--bridge', 'name', '(add-bridge) pipeline (Unity 6 and later) or coplay (older Unity)', {
|
|
436
|
+
when: 'add-bridge',
|
|
437
|
+
label: 'Bridge',
|
|
438
|
+
}),
|
|
439
|
+
],
|
|
440
|
+
},
|
|
384
441
|
{
|
|
385
442
|
name: 'engine',
|
|
386
443
|
summary: '(beta) what runs your sandbox (Windows Sandbox or HCS) and what each engine can do on this PC',
|
|
@@ -12,6 +12,8 @@ export const COMMAND_PLACES = {
|
|
|
12
12
|
data: { place: 'Maintenance > Data' },
|
|
13
13
|
storage: { place: 'Maintenance > Storage' },
|
|
14
14
|
engine: { place: 'Maintenance > Engine' },
|
|
15
|
+
unreal: { place: 'Sandbox > Unreal Engine' },
|
|
16
|
+
unity: { place: 'Sandbox > Unity' },
|
|
15
17
|
sync: { place: 'Maintenance > More commands' },
|
|
16
18
|
logs: { place: 'Maintenance > Logs (key f follows)' },
|
|
17
19
|
setup: { place: 'Maintenance > Health' },
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type ProjectsList } from '../../../app/features/projects/index.js';
|
|
2
2
|
import { type SandboxStatus } from '../../../app/features/sandbox/index.js';
|
|
3
|
+
import { type UnrealOverview } from '../../../app/features/unreal/index.js';
|
|
4
|
+
import { type UnityOverview } from '../../../app/features/unity/index.js';
|
|
3
5
|
import type { Context } from '../../commands/context.js';
|
|
4
6
|
import { type DatabaseRow } from '../../services/index.js';
|
|
5
7
|
import { type App, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
@@ -11,6 +13,10 @@ export interface SandboxModel {
|
|
|
11
13
|
readonly databases: DatabaseRow[] | null;
|
|
12
14
|
/** The agent "Start the sandbox" offers while nothing runs. */
|
|
13
15
|
readonly defaultAgent: string;
|
|
16
|
+
/** The Unreal overview; null when it could not be read. */
|
|
17
|
+
readonly unreal: UnrealOverview | null;
|
|
18
|
+
/** The Unity overview; null when it could not be read. */
|
|
19
|
+
readonly unity: UnityOverview | null;
|
|
14
20
|
}
|
|
15
21
|
/** The list for the sandbox tab. Pure. */
|
|
16
22
|
export declare function sandboxOptions(m: SandboxModel): ListOptions<string>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// Section 3: the sandbox as a whole. Status (the sandbox view: its facts, the window, stopping it), Projects (the
|
|
2
|
-
// projects view: roots, the projects and the all-projects setting)
|
|
3
|
-
// the left.
|
|
2
|
+
// projects view: roots, the projects and the all-projects setting), Databases (start and stop) and Unreal Engine (the
|
|
3
|
+
// unreal view) and Unity (the unity view), each a category on the left.
|
|
4
4
|
import { listProjects, projectsPage } from '../../../app/features/projects/index.js';
|
|
5
5
|
import { sandboxPage, sandboxStatus } from '../../../app/features/sandbox/index.js';
|
|
6
6
|
import { readQuery } from '../../../app/registry.js';
|
|
7
|
+
import { unrealOverview, unrealPage } from '../../../app/features/unreal/index.js';
|
|
8
|
+
import { unityOverview, unityPage } from '../../../app/features/unity/index.js';
|
|
7
9
|
import { errMsg, safeText } from '../../../core/util/index.js';
|
|
8
10
|
import { RunDir } from '../../../shared/channel/index.js';
|
|
9
11
|
import { DatabasesService } from '../../services/index.js';
|
|
@@ -19,7 +21,27 @@ const CATEGORIES = [
|
|
|
19
21
|
description: 'Project roots (folders of projects, opened without a restart) and the projects started before.',
|
|
20
22
|
},
|
|
21
23
|
{ id: 'databases', label: 'Databases', description: 'Databases the sandbox can run: start and stop them.' },
|
|
24
|
+
{
|
|
25
|
+
id: 'unreal',
|
|
26
|
+
label: 'Unreal Engine',
|
|
27
|
+
description: "Engines, which project uses which, this PC's engines and assets, Visual Studio and the debugger.",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'unity',
|
|
31
|
+
label: 'Unity',
|
|
32
|
+
description: "Editors, this PC's editors and Asset Store downloads, the licence, the editor bridge and Unity Hub.",
|
|
33
|
+
},
|
|
22
34
|
];
|
|
35
|
+
/** The Unreal category: the Unreal view's rows and keys (prefixed, so they never clash with other rows). */
|
|
36
|
+
function unrealMenu(m) {
|
|
37
|
+
return m.unreal
|
|
38
|
+
? menuView(unrealPage(m.unreal), { category: 'unreal', prefix: 'unreal:', refresh: false })
|
|
39
|
+
: undefined;
|
|
40
|
+
}
|
|
41
|
+
/** The Unity category: the Unity view's rows and keys (prefixed, so they never clash with other rows). */
|
|
42
|
+
function unityMenu(m) {
|
|
43
|
+
return m.unity ? menuView(unityPage(m.unity), { category: 'unity', prefix: 'unity:', refresh: false }) : undefined;
|
|
44
|
+
}
|
|
23
45
|
/** The status category: the sandbox view's rows (prefixed, so they never clash with the projects' rows). */
|
|
24
46
|
function statusView(m) {
|
|
25
47
|
return menuView(sandboxPage(m.report), { category: 'status', prefix: 'status:', refresh: false });
|
|
@@ -32,6 +54,10 @@ function projectsView(m) {
|
|
|
32
54
|
function viewFor(m, category) {
|
|
33
55
|
if (category === 'projects')
|
|
34
56
|
return projectsView(m);
|
|
57
|
+
if (category === 'unreal')
|
|
58
|
+
return unrealMenu(m);
|
|
59
|
+
if (category === 'unity')
|
|
60
|
+
return unityMenu(m);
|
|
35
61
|
if (category === 'status' || category === undefined)
|
|
36
62
|
return statusView(m);
|
|
37
63
|
return undefined;
|
|
@@ -64,16 +90,55 @@ export function sandboxOptions(m) {
|
|
|
64
90
|
section: 'Databases',
|
|
65
91
|
description: d.title + '. Enter ' + (d.running ? 'stops' : 'starts') + ' it (the first start downloads it).',
|
|
66
92
|
}));
|
|
93
|
+
const unreal = unrealMenu(m);
|
|
94
|
+
const noUnreal = unreal
|
|
95
|
+
? []
|
|
96
|
+
: [
|
|
97
|
+
{
|
|
98
|
+
value: 'info:unreal',
|
|
99
|
+
label: 'Could not read the Unreal set-up',
|
|
100
|
+
category: 'unreal',
|
|
101
|
+
section: 'Unreal Engine',
|
|
102
|
+
description: 'l looks again.',
|
|
103
|
+
disabled: 'l looks again.',
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
const unity = unityMenu(m);
|
|
107
|
+
const noUnity = unity
|
|
108
|
+
? []
|
|
109
|
+
: [
|
|
110
|
+
{
|
|
111
|
+
value: 'info:unity',
|
|
112
|
+
label: 'Could not read the Unity set-up',
|
|
113
|
+
category: 'unity',
|
|
114
|
+
section: 'Unity',
|
|
115
|
+
description: 'l looks again.',
|
|
116
|
+
disabled: 'l looks again.',
|
|
117
|
+
},
|
|
118
|
+
];
|
|
67
119
|
return {
|
|
68
120
|
path: [],
|
|
69
|
-
items: [
|
|
121
|
+
items: [
|
|
122
|
+
...statusItems,
|
|
123
|
+
...projects.items,
|
|
124
|
+
...databases,
|
|
125
|
+
...noDatabases,
|
|
126
|
+
...(unreal?.items ?? []),
|
|
127
|
+
...noUnreal,
|
|
128
|
+
...(unity?.items ?? []),
|
|
129
|
+
...noUnity,
|
|
130
|
+
],
|
|
70
131
|
categories: CATEGORIES,
|
|
71
132
|
empty: 'Nothing here yet.',
|
|
72
133
|
actions: (category) => category === 'projects'
|
|
73
134
|
? [...projects.actions, REFRESH]
|
|
74
135
|
: category === 'databases'
|
|
75
136
|
? [REFRESH]
|
|
76
|
-
:
|
|
137
|
+
: category === 'unreal'
|
|
138
|
+
? [...(unreal?.actions ?? []), REFRESH]
|
|
139
|
+
: category === 'unity'
|
|
140
|
+
? [...(unity?.actions ?? []), REFRESH]
|
|
141
|
+
: [...status.actions, REFRESH],
|
|
77
142
|
enterLabel: (category, id) => viewFor(m, category)?.enterLabel(category, id) || enterLabel(id ?? '', m),
|
|
78
143
|
};
|
|
79
144
|
}
|
|
@@ -133,6 +198,8 @@ export class SandboxPage extends ListPage {
|
|
|
133
198
|
projects: await readQuery(listProjects, this.ctx),
|
|
134
199
|
databases,
|
|
135
200
|
defaultAgent: this.defaultAgent(),
|
|
201
|
+
unreal: await readQuery(unrealOverview, this.ctx).catch(() => null),
|
|
202
|
+
unity: await readQuery(unityOverview, this.ctx).catch(() => null),
|
|
136
203
|
};
|
|
137
204
|
}
|
|
138
205
|
/** The folder `sbx-db` runs in: the sandbox's own workspace. */
|