windows-development-sandbox 1.25.1 → 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 +12 -3
- package/dist/app/features/accounts/services.def.d.ts +1 -1
- package/dist/app/features/accounts/services.def.js +1 -1
- package/dist/app/features/defs.d.ts +198 -3
- package/dist/app/features/defs.js +8 -0
- package/dist/app/features/settings/categories.def.js +1 -0
- package/dist/app/features/unity/index.d.ts +2 -0
- package/dist/app/features/unity/index.js +3 -0
- package/dist/app/features/unity/unity.def.d.ts +294 -0
- package/dist/app/features/unity/unity.def.js +471 -0
- package/dist/app/features/unity/unity.run.d.ts +142 -0
- package/dist/app/features/unity/unity.run.js +363 -0
- package/dist/app/registry.js +6 -0
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-F4PVBN23.js → chunk-6WWMBCT2.js} +3580 -1962
- package/dist/bin/{chunk-3GAXLATK.js → chunk-JXL6ZOO3.js} +72 -5
- package/dist/bin/{chunk-G3TG4ZT7.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 +12 -0
- package/dist/cli/commands/registry.js +3 -0
- package/dist/cli/manifest.d.ts +33 -1
- package/dist/cli/manifest.js +32 -1
- package/dist/cli/menu/coverage-exempt.js +1 -0
- package/dist/cli/menu/pages/sandbox-page.d.ts +3 -0
- package/dist/cli/menu/pages/sandbox-page.js +40 -3
- package/dist/cli/menu/views.js +2 -0
- package/dist/core/config/defaults.js +16 -3
- package/dist/core/schema/accounts.d.ts +3 -0
- package/dist/core/schema/accounts.js +1 -0
- package/dist/core/schema/config.d.ts +29 -13
- package/dist/core/schema/github.d.ts +1 -0
- package/dist/core/schema/github.js +3 -0
- package/dist/core/schema/pc-installs.d.ts +2 -1
- package/dist/core/schema/pc-installs.js +6 -1
- package/dist/core/schema/toolchains.d.ts +8 -0
- package/dist/core/schema/toolchains.js +19 -4
- package/dist/guest/accounts/adapters.js +2 -0
- package/dist/guest/accounts/apply.d.ts +4 -2
- package/dist/guest/accounts/kinds/perplexityapp.d.ts +7 -0
- package/dist/guest/accounts/kinds/perplexityapp.js +53 -0
- package/dist/guest/accounts/kinds/unity.d.ts +27 -0
- package/dist/guest/accounts/kinds/unity.js +164 -7
- package/dist/guest/apps/app-installer.js +18 -0
- package/dist/guest/apps/store-app.d.ts +4 -0
- package/dist/guest/apps/store-app.js +19 -0
- package/dist/guest/apps/store-check.d.ts +8 -0
- package/dist/guest/apps/store-check.js +33 -0
- package/dist/guest/boot/boot.js +1 -1
- package/dist/guest/boot/guide.js +18 -0
- package/dist/guest/browser/comet.d.ts +3 -1
- package/dist/guest/browser/comet.js +1 -1
- package/dist/guest/browser/perplexity-app.d.ts +12 -0
- package/dist/guest/browser/perplexity-app.js +60 -0
- package/dist/guest/daemon/daemon.js +2 -0
- package/dist/guest/devtools/devtool.d.ts +1 -1
- package/dist/guest/devtools/registry.js +1 -2
- package/dist/guest/entries/tool.js +1 -1
- package/dist/guest/setup/addon-mcp.d.ts +7 -2
- package/dist/guest/setup/addon-mcp.js +19 -9
- package/dist/guest/setup/github-token.js +4 -4
- package/dist/guest/setup/unity-agent.d.ts +11 -0
- package/dist/guest/setup/unity-agent.js +36 -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/plan.js +5 -1
- package/dist/guest/toolchains/tools/cli.js +2 -2
- package/dist/host/accounts/deliver.js +4 -0
- package/dist/host/accounts/kinds/perplexityapp.d.ts +2 -0
- package/dist/host/accounts/kinds/perplexityapp.js +8 -0
- package/dist/host/accounts/kinds/unity.d.ts +1 -1
- package/dist/host/accounts/kinds/unity.js +60 -8
- package/dist/host/accounts/leases.d.ts +2 -1
- package/dist/host/accounts/sources.js +2 -0
- package/dist/host/apps/index.d.ts +1 -0
- package/dist/host/apps/index.js +2 -0
- package/dist/host/apps/store-package.d.ts +51 -0
- package/dist/host/apps/store-package.js +209 -0
- package/dist/host/github/deliver.d.ts +8 -3
- package/dist/host/github/deliver.js +42 -29
- package/dist/host/github/index.d.ts +1 -0
- package/dist/host/github/index.js +1 -0
- package/dist/host/github/pc-login.d.ts +27 -0
- package/dist/host/github/pc-login.js +129 -0
- package/dist/host/pc-installs/discover.d.ts +4 -0
- package/dist/host/pc-installs/discover.js +16 -4
- 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/runtime/agent.js +116 -11
- package/dist/runtime/daemon.js +2170 -976
- package/dist/runtime/db.js +116 -11
- package/dist/runtime/main.js +2543 -1364
- package/dist/runtime/netproxy.js +116 -11
- package/dist/runtime/tool.js +133 -31
- package/dist/runtime/view.js +116 -11
- package/dist/selftest/agents-web.test.js +2 -1
- package/dist/selftest/engines.test.js +2 -2
- package/dist/selftest/github.test.js +64 -1
- package/dist/selftest/index.js +10 -0
- package/dist/selftest/menu-screens.js +3 -1
- package/dist/selftest/persisted-installs.test.js +1 -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 +7 -0
- package/dist/selftest/support/fixtures.d.ts +10 -1
- package/dist/selftest/support/unity-sample.d.ts +2 -0
- package/dist/selftest/support/unity-sample.js +80 -0
- package/dist/selftest/unity-accounts.test.d.ts +2 -0
- package/dist/selftest/unity-accounts.test.js +106 -0
- package/dist/selftest/unity-agent.test.d.ts +2 -0
- package/dist/selftest/unity-agent.test.js +47 -0
- package/dist/selftest/unity-page.test.d.ts +2 -0
- package/dist/selftest/unity-page.test.js +177 -0
- package/dist/selftest/unity-setup.test.d.ts +2 -0
- package/dist/selftest/unity-setup.test.js +49 -0
- package/dist/selftest/unity.test.js +238 -3
- package/dist/shared/accounts/index.d.ts +1 -0
- package/dist/shared/accounts/index.js +1 -0
- package/dist/shared/accounts/kinds/unity.d.ts +28 -0
- package/dist/shared/accounts/kinds/unity.js +88 -0
- package/dist/shared/accounts/kinds.d.ts +2 -2
- package/dist/shared/accounts/kinds.js +23 -1
- package/dist/shared/accounts/payloads.d.ts +52 -0
- package/dist/shared/accounts/payloads.js +14 -2
- package/dist/shared/apps/catalogue-agents-web.d.ts +7 -0
- package/dist/shared/apps/catalogue-agents-web.js +23 -0
- package/dist/shared/apps/catalogue-gamedev.d.ts +3 -0
- package/dist/shared/apps/catalogue-gamedev.js +31 -0
- package/dist/shared/apps/catalogue.d.ts +8 -0
- package/dist/shared/apps/index.d.ts +3 -2
- package/dist/shared/apps/index.js +3 -2
- package/dist/shared/apps/selection.d.ts +6 -0
- package/dist/shared/apps/selection.js +9 -0
- package/dist/shared/apps/store-package.d.ts +31 -0
- package/dist/shared/apps/store-package.js +34 -0
- package/dist/shared/channel/schema.d.ts +24 -0
- package/dist/shared/channel/secrets.d.ts +17 -0
- package/dist/shared/paths/pc-installs.d.ts +1 -1
- package/dist/shared/paths/pc-installs.js +1 -0
- package/dist/shared/readiness.d.ts +2 -2
- package/dist/shared/readiness.js +2 -2
- package/dist/shared/unity/asset-cache.d.ts +20 -0
- package/dist/shared/unity/asset-cache.js +44 -0
- package/dist/shared/unity/cli.d.ts +40 -0
- package/dist/shared/unity/cli.js +77 -0
- package/dist/shared/unity/editors.d.ts +46 -0
- package/dist/shared/unity/editors.js +89 -0
- package/dist/shared/unity/guide.d.ts +9 -0
- package/dist/shared/unity/guide.js +84 -0
- package/dist/shared/unity/index.d.ts +9 -0
- package/dist/shared/unity/index.js +11 -0
- package/dist/shared/unity/manifest.d.ts +10 -0
- package/dist/shared/unity/manifest.js +53 -0
- package/dist/shared/unity/mcp.d.ts +8 -0
- package/dist/shared/unity/mcp.js +12 -0
- package/dist/shared/unity/release.d.ts +28 -0
- package/dist/shared/unity/release.js +83 -0
- package/dist/shared/unity/status.d.ts +59 -0
- package/dist/shared/unity/status.js +45 -0
- package/dist/shared/unity/version.d.ts +27 -0
- package/dist/shared/unity/version.js +75 -0
- package/dist/web/index.html +1 -1
- package/dist/web/{main-FNE6XEHA.js → main-VPMYTSUL.js} +67 -67
- package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
- package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
- package/native/scripts/get-store-package.ps1 +58 -0
- package/package.json +1 -1
- package/sandbox/addons/openupm-cli/package-lock.json +2921 -0
- package/sandbox/addons/openupm-cli/package.json +7 -0
- package/sandbox/addons/unity-mcp/requirements.in +1 -0
- package/sandbox/addons/unity-mcp/requirements.txt +1165 -0
- package/sandbox/csharp/AppActivation.cs +38 -0
- package/sandbox/scripts/install-store-package.ps1 +28 -0
- package/sandbox/scripts/start-store-app.ps1 +29 -0
- package/schemas/config.schema.json +61 -6
- package/schemas/sandbox-config.schema.json +38 -5
- package/dist/guest/devtools/unity.d.ts +0 -2
- package/dist/guest/devtools/unity.js +0 -7
|
@@ -223,6 +223,9 @@ import {
|
|
|
223
223
|
takeHiddenInstallNotice,
|
|
224
224
|
toWireError,
|
|
225
225
|
trustStorePath,
|
|
226
|
+
unityOverview,
|
|
227
|
+
unityPage,
|
|
228
|
+
unityView,
|
|
226
229
|
unrealOverview,
|
|
227
230
|
unrealPage,
|
|
228
231
|
unrealView,
|
|
@@ -254,7 +257,7 @@ import {
|
|
|
254
257
|
withOperationCommands,
|
|
255
258
|
working,
|
|
256
259
|
writeJson
|
|
257
|
-
} from "./chunk-
|
|
260
|
+
} from "./chunk-6WWMBCT2.js";
|
|
258
261
|
|
|
259
262
|
// node_modules/commander/lib/error.js
|
|
260
263
|
var require_error = __commonJS({
|
|
@@ -3987,7 +3990,7 @@ var COMMAND_LIST = [
|
|
|
3987
3990
|
},
|
|
3988
3991
|
{
|
|
3989
3992
|
name: "name",
|
|
3990
|
-
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",
|
|
3991
3994
|
required: false,
|
|
3992
3995
|
choices: "accounts"
|
|
3993
3996
|
}
|
|
@@ -4095,6 +4098,37 @@ var COMMAND_LIST = [
|
|
|
4095
4098
|
],
|
|
4096
4099
|
options: []
|
|
4097
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
|
+
},
|
|
4098
4132
|
{
|
|
4099
4133
|
name: "engine",
|
|
4100
4134
|
summary: "(beta) what runs your sandbox (Windows Sandbox or HCS) and what each engine can do on this PC",
|
|
@@ -6768,6 +6802,7 @@ var MENU_VIEWS = [
|
|
|
6768
6802
|
{ view: appsView, section: "Apps" },
|
|
6769
6803
|
{ view: projectsView, section: "Sandbox" },
|
|
6770
6804
|
{ view: unrealView, section: "Sandbox" },
|
|
6805
|
+
{ view: unityView, section: "Sandbox" },
|
|
6771
6806
|
{ view: healthView, section: "Maintenance" },
|
|
6772
6807
|
{ view: dataView, section: "Maintenance" },
|
|
6773
6808
|
{ view: storageView, section: "Maintenance" },
|
|
@@ -8649,11 +8684,19 @@ var CATEGORIES3 = [
|
|
|
8649
8684
|
id: "unreal",
|
|
8650
8685
|
label: "Unreal Engine",
|
|
8651
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."
|
|
8652
8692
|
}
|
|
8653
8693
|
];
|
|
8654
8694
|
function unrealMenu(m) {
|
|
8655
8695
|
return m.unreal ? menuView(unrealPage(m.unreal), { category: "unreal", prefix: "unreal:", refresh: false }) : void 0;
|
|
8656
8696
|
}
|
|
8697
|
+
function unityMenu(m) {
|
|
8698
|
+
return m.unity ? menuView(unityPage(m.unity), { category: "unity", prefix: "unity:", refresh: false }) : void 0;
|
|
8699
|
+
}
|
|
8657
8700
|
function statusView(m) {
|
|
8658
8701
|
return menuView(sandboxPage(m.report), { category: "status", prefix: "status:", refresh: false });
|
|
8659
8702
|
}
|
|
@@ -8663,6 +8706,7 @@ function projectsView2(m) {
|
|
|
8663
8706
|
function viewFor(m, category) {
|
|
8664
8707
|
if (category === "projects") return projectsView2(m);
|
|
8665
8708
|
if (category === "unreal") return unrealMenu(m);
|
|
8709
|
+
if (category === "unity") return unityMenu(m);
|
|
8666
8710
|
if (category === "status" || category === void 0) return statusView(m);
|
|
8667
8711
|
return void 0;
|
|
8668
8712
|
}
|
|
@@ -8700,12 +8744,32 @@ function sandboxOptions(m) {
|
|
|
8700
8744
|
disabled: "l looks again."
|
|
8701
8745
|
}
|
|
8702
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
|
+
];
|
|
8703
8758
|
return {
|
|
8704
8759
|
path: [],
|
|
8705
|
-
items: [
|
|
8760
|
+
items: [
|
|
8761
|
+
...statusItems,
|
|
8762
|
+
...projects.items,
|
|
8763
|
+
...databases,
|
|
8764
|
+
...noDatabases,
|
|
8765
|
+
...unreal?.items ?? [],
|
|
8766
|
+
...noUnreal,
|
|
8767
|
+
...unity?.items ?? [],
|
|
8768
|
+
...noUnity
|
|
8769
|
+
],
|
|
8706
8770
|
categories: CATEGORIES3,
|
|
8707
8771
|
empty: "Nothing here yet.",
|
|
8708
|
-
actions: (category) => category === "projects" ? [...projects.actions, REFRESH] : category === "databases" ? [REFRESH] : category === "unreal" ? [...unreal?.actions ?? [], 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],
|
|
8709
8773
|
enterLabel: (category, id) => viewFor(m, category)?.enterLabel(category, id) || enterLabel2(id ?? "", m)
|
|
8710
8774
|
};
|
|
8711
8775
|
}
|
|
@@ -8759,7 +8823,8 @@ var SandboxPage = class extends ListPage {
|
|
|
8759
8823
|
projects: await readQuery(listProjects, this.ctx),
|
|
8760
8824
|
databases,
|
|
8761
8825
|
defaultAgent: this.defaultAgent(),
|
|
8762
|
-
unreal: await readQuery(unrealOverview, this.ctx).catch(() => null)
|
|
8826
|
+
unreal: await readQuery(unrealOverview, this.ctx).catch(() => null),
|
|
8827
|
+
unity: await readQuery(unityOverview, this.ctx).catch(() => null)
|
|
8763
8828
|
};
|
|
8764
8829
|
}
|
|
8765
8830
|
/** The folder `sbx-db` runs in: the sandbox's own workspace. */
|
|
@@ -10531,6 +10596,8 @@ var HANDLERS = {
|
|
|
10531
10596
|
engine,
|
|
10532
10597
|
// The bare command shows the overview; its actions (add-engine, forget-engine, launcher) are the operations' hints.
|
|
10533
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),
|
|
10534
10601
|
"host-claude": claudeHost,
|
|
10535
10602
|
host: hostCommand,
|
|
10536
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';
|
|
@@ -193,12 +195,20 @@ class Launcher {
|
|
|
193
195
|
// A new launch needs no sandbox running, so a lease held elsewhere is from one that stopped.
|
|
194
196
|
isRunning: () => isSandboxRunning(),
|
|
195
197
|
});
|
|
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
|
+
});
|
|
196
205
|
// pcInstalls: this PC's games, engines and editors, read-only (yours only: never from a project file). The
|
|
197
206
|
// engines ("auto") come along whenever this launch sets the sandbox up for Unreal.
|
|
198
207
|
const pcInstalls = discoverPcInstalls(ctx.loaded.config.pcInstalls, {
|
|
199
208
|
packageRoot: ctx.packageRoot,
|
|
200
209
|
storageRoot: ctx.storageRoot,
|
|
201
210
|
unrealOn: toolchainsOn.has('unreal'),
|
|
211
|
+
unityOn: toolchainsOn.has('unity'),
|
|
202
212
|
});
|
|
203
213
|
// This PC's commit (RAM plus paging file) bounds the sandbox's memory as much as free RAM does.
|
|
204
214
|
const hostMemory = generateOnly ? null : readHostMemory(ctx.storageRoot);
|
|
@@ -236,6 +246,8 @@ class Launcher {
|
|
|
236
246
|
console.log(c.yellow(line));
|
|
237
247
|
for (const line of accounts?.notes ?? [])
|
|
238
248
|
console.log(c.yellow(line));
|
|
249
|
+
for (const line of store?.notes ?? [])
|
|
250
|
+
console.log(c.yellow(line));
|
|
239
251
|
for (const line of pcInstalls.notes)
|
|
240
252
|
console.log(c.yellow(line));
|
|
241
253
|
table(launchSummary(run, generated, prepared));
|
|
@@ -8,6 +8,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
10
|
import { unrealOverview } from '../../app/features/unreal/index.js';
|
|
11
|
+
import { unityOverview } from '../../app/features/unity/index.js';
|
|
11
12
|
import { definitionHandler } from '../operations/index.js';
|
|
12
13
|
import { fail } from '../../core/util/index.js';
|
|
13
14
|
import { claudeHost, config, doctor, hostCommand, logs, sync, watcher } from './maintenance/index.js';
|
|
@@ -51,6 +52,8 @@ export const HANDLERS = {
|
|
|
51
52
|
engine: engine,
|
|
52
53
|
// The bare command shows the overview; its actions (add-engine, forget-engine, launcher) are the operations' hints.
|
|
53
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),
|
|
54
57
|
'host-claude': claudeHost,
|
|
55
58
|
host: hostCommand,
|
|
56
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
|
}];
|
|
@@ -506,6 +506,38 @@ declare const COMMAND_LIST: readonly [{
|
|
|
506
506
|
readonly when: readonly [];
|
|
507
507
|
}];
|
|
508
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
|
+
}];
|
|
509
541
|
}, {
|
|
510
542
|
readonly name: "engine";
|
|
511
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
|
},
|
|
@@ -407,6 +407,37 @@ const COMMAND_LIST = [
|
|
|
407
407
|
],
|
|
408
408
|
options: [],
|
|
409
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
|
+
},
|
|
410
441
|
{
|
|
411
442
|
name: 'engine',
|
|
412
443
|
summary: '(beta) what runs your sandbox (Windows Sandbox or HCS) and what each engine can do on this PC',
|
|
@@ -13,6 +13,7 @@ export const COMMAND_PLACES = {
|
|
|
13
13
|
storage: { place: 'Maintenance > Storage' },
|
|
14
14
|
engine: { place: 'Maintenance > Engine' },
|
|
15
15
|
unreal: { place: 'Sandbox > Unreal Engine' },
|
|
16
|
+
unity: { place: 'Sandbox > Unity' },
|
|
16
17
|
sync: { place: 'Maintenance > More commands' },
|
|
17
18
|
logs: { place: 'Maintenance > Logs (key f follows)' },
|
|
18
19
|
setup: { place: 'Maintenance > Health' },
|
|
@@ -1,6 +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
3
|
import { type UnrealOverview } from '../../../app/features/unreal/index.js';
|
|
4
|
+
import { type UnityOverview } from '../../../app/features/unity/index.js';
|
|
4
5
|
import type { Context } from '../../commands/context.js';
|
|
5
6
|
import { type DatabaseRow } from '../../services/index.js';
|
|
6
7
|
import { type App, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
@@ -14,6 +15,8 @@ export interface SandboxModel {
|
|
|
14
15
|
readonly defaultAgent: string;
|
|
15
16
|
/** The Unreal overview; null when it could not be read. */
|
|
16
17
|
readonly unreal: UnrealOverview | null;
|
|
18
|
+
/** The Unity overview; null when it could not be read. */
|
|
19
|
+
readonly unity: UnityOverview | null;
|
|
17
20
|
}
|
|
18
21
|
/** The list for the sandbox tab. Pure. */
|
|
19
22
|
export declare function sandboxOptions(m: SandboxModel): ListOptions<string>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Section 3: the sandbox as a whole. Status (the sandbox view: its facts, the window, stopping it), Projects (the
|
|
2
2
|
// projects view: roots, the projects and the all-projects setting), Databases (start and stop) and Unreal Engine (the
|
|
3
|
-
// unreal view), each a category on the left.
|
|
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
7
|
import { unrealOverview, unrealPage } from '../../../app/features/unreal/index.js';
|
|
8
|
+
import { unityOverview, unityPage } from '../../../app/features/unity/index.js';
|
|
8
9
|
import { errMsg, safeText } from '../../../core/util/index.js';
|
|
9
10
|
import { RunDir } from '../../../shared/channel/index.js';
|
|
10
11
|
import { DatabasesService } from '../../services/index.js';
|
|
@@ -25,6 +26,11 @@ const CATEGORIES = [
|
|
|
25
26
|
label: 'Unreal Engine',
|
|
26
27
|
description: "Engines, which project uses which, this PC's engines and assets, Visual Studio and the debugger.",
|
|
27
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
|
+
},
|
|
28
34
|
];
|
|
29
35
|
/** The Unreal category: the Unreal view's rows and keys (prefixed, so they never clash with other rows). */
|
|
30
36
|
function unrealMenu(m) {
|
|
@@ -32,6 +38,10 @@ function unrealMenu(m) {
|
|
|
32
38
|
? menuView(unrealPage(m.unreal), { category: 'unreal', prefix: 'unreal:', refresh: false })
|
|
33
39
|
: undefined;
|
|
34
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
|
+
}
|
|
35
45
|
/** The status category: the sandbox view's rows (prefixed, so they never clash with the projects' rows). */
|
|
36
46
|
function statusView(m) {
|
|
37
47
|
return menuView(sandboxPage(m.report), { category: 'status', prefix: 'status:', refresh: false });
|
|
@@ -46,6 +56,8 @@ function viewFor(m, category) {
|
|
|
46
56
|
return projectsView(m);
|
|
47
57
|
if (category === 'unreal')
|
|
48
58
|
return unrealMenu(m);
|
|
59
|
+
if (category === 'unity')
|
|
60
|
+
return unityMenu(m);
|
|
49
61
|
if (category === 'status' || category === undefined)
|
|
50
62
|
return statusView(m);
|
|
51
63
|
return undefined;
|
|
@@ -91,9 +103,31 @@ export function sandboxOptions(m) {
|
|
|
91
103
|
disabled: 'l looks again.',
|
|
92
104
|
},
|
|
93
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
|
+
];
|
|
94
119
|
return {
|
|
95
120
|
path: [],
|
|
96
|
-
items: [
|
|
121
|
+
items: [
|
|
122
|
+
...statusItems,
|
|
123
|
+
...projects.items,
|
|
124
|
+
...databases,
|
|
125
|
+
...noDatabases,
|
|
126
|
+
...(unreal?.items ?? []),
|
|
127
|
+
...noUnreal,
|
|
128
|
+
...(unity?.items ?? []),
|
|
129
|
+
...noUnity,
|
|
130
|
+
],
|
|
97
131
|
categories: CATEGORIES,
|
|
98
132
|
empty: 'Nothing here yet.',
|
|
99
133
|
actions: (category) => category === 'projects'
|
|
@@ -102,7 +136,9 @@ export function sandboxOptions(m) {
|
|
|
102
136
|
? [REFRESH]
|
|
103
137
|
: category === 'unreal'
|
|
104
138
|
? [...(unreal?.actions ?? []), REFRESH]
|
|
105
|
-
:
|
|
139
|
+
: category === 'unity'
|
|
140
|
+
? [...(unity?.actions ?? []), REFRESH]
|
|
141
|
+
: [...status.actions, REFRESH],
|
|
106
142
|
enterLabel: (category, id) => viewFor(m, category)?.enterLabel(category, id) || enterLabel(id ?? '', m),
|
|
107
143
|
};
|
|
108
144
|
}
|
|
@@ -163,6 +199,7 @@ export class SandboxPage extends ListPage {
|
|
|
163
199
|
databases,
|
|
164
200
|
defaultAgent: this.defaultAgent(),
|
|
165
201
|
unreal: await readQuery(unrealOverview, this.ctx).catch(() => null),
|
|
202
|
+
unity: await readQuery(unityOverview, this.ctx).catch(() => null),
|
|
166
203
|
};
|
|
167
204
|
}
|
|
168
205
|
/** The folder `sbx-db` runs in: the sandbox's own workspace. */
|
package/dist/cli/menu/views.js
CHANGED
|
@@ -20,6 +20,7 @@ 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
22
|
import { unrealView } from '../../app/features/unreal/index.js';
|
|
23
|
+
import { unityView } from '../../app/features/unity/index.js';
|
|
23
24
|
export const MENU_VIEWS = [
|
|
24
25
|
{ view: agentsView, section: 'Agents' },
|
|
25
26
|
{ view: agentEnvView, section: 'Agents' },
|
|
@@ -30,6 +31,7 @@ export const MENU_VIEWS = [
|
|
|
30
31
|
{ view: appsView, section: 'Apps' },
|
|
31
32
|
{ view: projectsView, section: 'Sandbox' },
|
|
32
33
|
{ view: unrealView, section: 'Sandbox' },
|
|
34
|
+
{ view: unityView, section: 'Sandbox' },
|
|
33
35
|
{ view: healthView, section: 'Maintenance' },
|
|
34
36
|
{ view: dataView, section: 'Maintenance' },
|
|
35
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,6 +57,7 @@ export const DEFAULTS = {
|
|
|
57
57
|
appstore: { share: false },
|
|
58
58
|
perplexity: { share: false },
|
|
59
59
|
comet: { share: false },
|
|
60
|
+
perplexityapp: { share: false },
|
|
60
61
|
},
|
|
61
62
|
pcInstalls: {
|
|
62
63
|
steamGames: false,
|
|
@@ -64,7 +65,8 @@ export const DEFAULTS = {
|
|
|
64
65
|
unrealEngines: 'auto',
|
|
65
66
|
unrealEngineFolders: [],
|
|
66
67
|
unrealAssets: 'auto',
|
|
67
|
-
unityEditors:
|
|
68
|
+
unityEditors: 'auto',
|
|
69
|
+
unityAssets: 'auto',
|
|
68
70
|
},
|
|
69
71
|
provisioning: {
|
|
70
72
|
copyFromHost: true,
|
|
@@ -98,7 +100,18 @@ export const DEFAULTS = {
|
|
|
98
100
|
persistEngines: true,
|
|
99
101
|
derivedDataCache: 'persisted',
|
|
100
102
|
},
|
|
101
|
-
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
|
+
},
|
|
102
115
|
godot: { enabled: 'auto', version: 'project', dotnet: 'auto', exportTemplates: true, keepVersions: 2 },
|
|
103
116
|
steam: { enabled: 'auto', client: false, sdkFolder: '' },
|
|
104
117
|
fivem: {
|
|
@@ -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.');
|