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.
Files changed (196) hide show
  1. package/config.example.json +12 -3
  2. package/dist/app/features/accounts/services.def.d.ts +1 -1
  3. package/dist/app/features/accounts/services.def.js +1 -1
  4. package/dist/app/features/defs.d.ts +198 -3
  5. package/dist/app/features/defs.js +8 -0
  6. package/dist/app/features/settings/categories.def.js +1 -0
  7. package/dist/app/features/unity/index.d.ts +2 -0
  8. package/dist/app/features/unity/index.js +3 -0
  9. package/dist/app/features/unity/unity.def.d.ts +294 -0
  10. package/dist/app/features/unity/unity.def.js +471 -0
  11. package/dist/app/features/unity/unity.run.d.ts +142 -0
  12. package/dist/app/features/unity/unity.run.js +363 -0
  13. package/dist/app/registry.js +6 -0
  14. package/dist/bin/agent-sandbox.js +2 -2
  15. package/dist/bin/{chunk-F4PVBN23.js → chunk-6WWMBCT2.js} +3580 -1962
  16. package/dist/bin/{chunk-3GAXLATK.js → chunk-JXL6ZOO3.js} +72 -5
  17. package/dist/bin/{chunk-G3TG4ZT7.js → chunk-ZXCAVVS4.js} +1 -1
  18. package/dist/bin/claude-host.js +2 -2
  19. package/dist/bin/claude-sbx.js +2 -2
  20. package/dist/bin/codex-sbx.js +2 -2
  21. package/dist/bin/gemini-sbx.js +2 -2
  22. package/dist/bin/sandbox.js +2 -2
  23. package/dist/bin/sbx-hide.js +2 -2
  24. package/dist/bin/sbx-show.js +2 -2
  25. package/dist/cli/commands/launch/launch.js +12 -0
  26. package/dist/cli/commands/registry.js +3 -0
  27. package/dist/cli/manifest.d.ts +33 -1
  28. package/dist/cli/manifest.js +32 -1
  29. package/dist/cli/menu/coverage-exempt.js +1 -0
  30. package/dist/cli/menu/pages/sandbox-page.d.ts +3 -0
  31. package/dist/cli/menu/pages/sandbox-page.js +40 -3
  32. package/dist/cli/menu/views.js +2 -0
  33. package/dist/core/config/defaults.js +16 -3
  34. package/dist/core/schema/accounts.d.ts +3 -0
  35. package/dist/core/schema/accounts.js +1 -0
  36. package/dist/core/schema/config.d.ts +29 -13
  37. package/dist/core/schema/github.d.ts +1 -0
  38. package/dist/core/schema/github.js +3 -0
  39. package/dist/core/schema/pc-installs.d.ts +2 -1
  40. package/dist/core/schema/pc-installs.js +6 -1
  41. package/dist/core/schema/toolchains.d.ts +8 -0
  42. package/dist/core/schema/toolchains.js +19 -4
  43. package/dist/guest/accounts/adapters.js +2 -0
  44. package/dist/guest/accounts/apply.d.ts +4 -2
  45. package/dist/guest/accounts/kinds/perplexityapp.d.ts +7 -0
  46. package/dist/guest/accounts/kinds/perplexityapp.js +53 -0
  47. package/dist/guest/accounts/kinds/unity.d.ts +27 -0
  48. package/dist/guest/accounts/kinds/unity.js +164 -7
  49. package/dist/guest/apps/app-installer.js +18 -0
  50. package/dist/guest/apps/store-app.d.ts +4 -0
  51. package/dist/guest/apps/store-app.js +19 -0
  52. package/dist/guest/apps/store-check.d.ts +8 -0
  53. package/dist/guest/apps/store-check.js +33 -0
  54. package/dist/guest/boot/boot.js +1 -1
  55. package/dist/guest/boot/guide.js +18 -0
  56. package/dist/guest/browser/comet.d.ts +3 -1
  57. package/dist/guest/browser/comet.js +1 -1
  58. package/dist/guest/browser/perplexity-app.d.ts +12 -0
  59. package/dist/guest/browser/perplexity-app.js +60 -0
  60. package/dist/guest/daemon/daemon.js +2 -0
  61. package/dist/guest/devtools/devtool.d.ts +1 -1
  62. package/dist/guest/devtools/registry.js +1 -2
  63. package/dist/guest/entries/tool.js +1 -1
  64. package/dist/guest/setup/addon-mcp.d.ts +7 -2
  65. package/dist/guest/setup/addon-mcp.js +19 -9
  66. package/dist/guest/setup/github-token.js +4 -4
  67. package/dist/guest/setup/unity-agent.d.ts +11 -0
  68. package/dist/guest/setup/unity-agent.js +36 -0
  69. package/dist/guest/toolchains/engines/unity-cli.d.ts +24 -0
  70. package/dist/guest/toolchains/engines/unity-cli.js +74 -0
  71. package/dist/guest/toolchains/engines/unity-hub.d.ts +2 -0
  72. package/dist/guest/toolchains/engines/unity-hub.js +27 -0
  73. package/dist/guest/toolchains/engines/unity-release.d.ts +4 -15
  74. package/dist/guest/toolchains/engines/unity-release.js +17 -5
  75. package/dist/guest/toolchains/engines/unity-status.d.ts +11 -0
  76. package/dist/guest/toolchains/engines/unity-status.js +39 -0
  77. package/dist/guest/toolchains/engines/unity.d.ts +20 -1
  78. package/dist/guest/toolchains/engines/unity.js +250 -3
  79. package/dist/guest/toolchains/plan.js +5 -1
  80. package/dist/guest/toolchains/tools/cli.js +2 -2
  81. package/dist/host/accounts/deliver.js +4 -0
  82. package/dist/host/accounts/kinds/perplexityapp.d.ts +2 -0
  83. package/dist/host/accounts/kinds/perplexityapp.js +8 -0
  84. package/dist/host/accounts/kinds/unity.d.ts +1 -1
  85. package/dist/host/accounts/kinds/unity.js +60 -8
  86. package/dist/host/accounts/leases.d.ts +2 -1
  87. package/dist/host/accounts/sources.js +2 -0
  88. package/dist/host/apps/index.d.ts +1 -0
  89. package/dist/host/apps/index.js +2 -0
  90. package/dist/host/apps/store-package.d.ts +51 -0
  91. package/dist/host/apps/store-package.js +209 -0
  92. package/dist/host/github/deliver.d.ts +8 -3
  93. package/dist/host/github/deliver.js +42 -29
  94. package/dist/host/github/index.d.ts +1 -0
  95. package/dist/host/github/index.js +1 -0
  96. package/dist/host/github/pc-login.d.ts +27 -0
  97. package/dist/host/github/pc-login.js +129 -0
  98. package/dist/host/pc-installs/discover.d.ts +4 -0
  99. package/dist/host/pc-installs/discover.js +16 -4
  100. package/dist/host/pc-installs/source.d.ts +1 -1
  101. package/dist/host/pc-installs/unity-assets.d.ts +5 -0
  102. package/dist/host/pc-installs/unity-assets.js +18 -0
  103. package/dist/host/pc-installs/unity.d.ts +20 -0
  104. package/dist/host/pc-installs/unity.js +135 -2
  105. package/dist/runtime/agent.js +116 -11
  106. package/dist/runtime/daemon.js +2170 -976
  107. package/dist/runtime/db.js +116 -11
  108. package/dist/runtime/main.js +2543 -1364
  109. package/dist/runtime/netproxy.js +116 -11
  110. package/dist/runtime/tool.js +133 -31
  111. package/dist/runtime/view.js +116 -11
  112. package/dist/selftest/agents-web.test.js +2 -1
  113. package/dist/selftest/engines.test.js +2 -2
  114. package/dist/selftest/github.test.js +64 -1
  115. package/dist/selftest/index.js +10 -0
  116. package/dist/selftest/menu-screens.js +3 -1
  117. package/dist/selftest/persisted-installs.test.js +1 -1
  118. package/dist/selftest/service-accounts.test.js +1 -1
  119. package/dist/selftest/store-app.test.d.ts +2 -0
  120. package/dist/selftest/store-app.test.js +162 -0
  121. package/dist/selftest/support/engine-golden.js +7 -0
  122. package/dist/selftest/support/fixtures.d.ts +10 -1
  123. package/dist/selftest/support/unity-sample.d.ts +2 -0
  124. package/dist/selftest/support/unity-sample.js +80 -0
  125. package/dist/selftest/unity-accounts.test.d.ts +2 -0
  126. package/dist/selftest/unity-accounts.test.js +106 -0
  127. package/dist/selftest/unity-agent.test.d.ts +2 -0
  128. package/dist/selftest/unity-agent.test.js +47 -0
  129. package/dist/selftest/unity-page.test.d.ts +2 -0
  130. package/dist/selftest/unity-page.test.js +177 -0
  131. package/dist/selftest/unity-setup.test.d.ts +2 -0
  132. package/dist/selftest/unity-setup.test.js +49 -0
  133. package/dist/selftest/unity.test.js +238 -3
  134. package/dist/shared/accounts/index.d.ts +1 -0
  135. package/dist/shared/accounts/index.js +1 -0
  136. package/dist/shared/accounts/kinds/unity.d.ts +28 -0
  137. package/dist/shared/accounts/kinds/unity.js +88 -0
  138. package/dist/shared/accounts/kinds.d.ts +2 -2
  139. package/dist/shared/accounts/kinds.js +23 -1
  140. package/dist/shared/accounts/payloads.d.ts +52 -0
  141. package/dist/shared/accounts/payloads.js +14 -2
  142. package/dist/shared/apps/catalogue-agents-web.d.ts +7 -0
  143. package/dist/shared/apps/catalogue-agents-web.js +23 -0
  144. package/dist/shared/apps/catalogue-gamedev.d.ts +3 -0
  145. package/dist/shared/apps/catalogue-gamedev.js +31 -0
  146. package/dist/shared/apps/catalogue.d.ts +8 -0
  147. package/dist/shared/apps/index.d.ts +3 -2
  148. package/dist/shared/apps/index.js +3 -2
  149. package/dist/shared/apps/selection.d.ts +6 -0
  150. package/dist/shared/apps/selection.js +9 -0
  151. package/dist/shared/apps/store-package.d.ts +31 -0
  152. package/dist/shared/apps/store-package.js +34 -0
  153. package/dist/shared/channel/schema.d.ts +24 -0
  154. package/dist/shared/channel/secrets.d.ts +17 -0
  155. package/dist/shared/paths/pc-installs.d.ts +1 -1
  156. package/dist/shared/paths/pc-installs.js +1 -0
  157. package/dist/shared/readiness.d.ts +2 -2
  158. package/dist/shared/readiness.js +2 -2
  159. package/dist/shared/unity/asset-cache.d.ts +20 -0
  160. package/dist/shared/unity/asset-cache.js +44 -0
  161. package/dist/shared/unity/cli.d.ts +40 -0
  162. package/dist/shared/unity/cli.js +77 -0
  163. package/dist/shared/unity/editors.d.ts +46 -0
  164. package/dist/shared/unity/editors.js +89 -0
  165. package/dist/shared/unity/guide.d.ts +9 -0
  166. package/dist/shared/unity/guide.js +84 -0
  167. package/dist/shared/unity/index.d.ts +9 -0
  168. package/dist/shared/unity/index.js +11 -0
  169. package/dist/shared/unity/manifest.d.ts +10 -0
  170. package/dist/shared/unity/manifest.js +53 -0
  171. package/dist/shared/unity/mcp.d.ts +8 -0
  172. package/dist/shared/unity/mcp.js +12 -0
  173. package/dist/shared/unity/release.d.ts +28 -0
  174. package/dist/shared/unity/release.js +83 -0
  175. package/dist/shared/unity/status.d.ts +59 -0
  176. package/dist/shared/unity/status.js +45 -0
  177. package/dist/shared/unity/version.d.ts +27 -0
  178. package/dist/shared/unity/version.js +75 -0
  179. package/dist/web/index.html +1 -1
  180. package/dist/web/{main-FNE6XEHA.js → main-VPMYTSUL.js} +67 -67
  181. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  182. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  183. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  184. package/native/scripts/get-store-package.ps1 +58 -0
  185. package/package.json +1 -1
  186. package/sandbox/addons/openupm-cli/package-lock.json +2921 -0
  187. package/sandbox/addons/openupm-cli/package.json +7 -0
  188. package/sandbox/addons/unity-mcp/requirements.in +1 -0
  189. package/sandbox/addons/unity-mcp/requirements.txt +1165 -0
  190. package/sandbox/csharp/AppActivation.cs +38 -0
  191. package/sandbox/scripts/install-store-package.ps1 +28 -0
  192. package/sandbox/scripts/start-store-app.ps1 +29 -0
  193. package/schemas/config.schema.json +61 -6
  194. package/schemas/sandbox-config.schema.json +38 -5
  195. package/dist/guest/devtools/unity.d.ts +0 -2
  196. package/dist/guest/devtools/unity.js +0 -7
@@ -0,0 +1,38 @@
1
+ // Starts an installed Store (packaged) app by its app user model id, with a command line. Loaded by
2
+ // scripts\start-store-app.ps1 (Add-Type). C# 5.
3
+ using System;
4
+ using System.ComponentModel;
5
+ using System.Runtime.InteropServices;
6
+
7
+ public static class SbxAppActivation
8
+ {
9
+ private const int OptionsNone = 0;
10
+
11
+ [ComImport]
12
+ [Guid("2e941141-7f97-4756-ba1d-9decde894a3d")]
13
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
14
+ private interface IApplicationActivationManager
15
+ {
16
+ [PreserveSig]
17
+ int ActivateApplication([MarshalAs(UnmanagedType.LPWStr)] string appUserModelId, [MarshalAs(UnmanagedType.LPWStr)] string arguments, int options, out uint processId);
18
+ }
19
+
20
+ [ComImport]
21
+ [Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")]
22
+ private class ApplicationActivationManager
23
+ {
24
+ }
25
+
26
+ /// <summary>Starts the app and returns its process id; throws a Win32Exception when Windows refuses.</summary>
27
+ public static uint Start(string appUserModelId, string arguments)
28
+ {
29
+ IApplicationActivationManager manager = (IApplicationActivationManager)new ApplicationActivationManager();
30
+ uint processId;
31
+ int result = manager.ActivateApplication(appUserModelId, arguments, OptionsNone, out processId);
32
+ if (result < 0)
33
+ {
34
+ throw new Win32Exception(result, "ActivateApplication failed for " + appUserModelId);
35
+ }
36
+ return processId;
37
+ }
38
+ }
@@ -0,0 +1,28 @@
1
+ #Requires -Version 5.1
2
+ # Installs a Microsoft Store app from its package files with Add-AppxPackage (guest/apps/store-app.ts). -ListFile is
3
+ # JSON written by the runtime: { main: "<full path of the app's .msix>", dependencies: ["<full path>", ...] }. The
4
+ # package keeps the publisher's signature (nothing is repacked), so Windows checks it as it would any Store package.
5
+ # The sandbox's Windows is new on every boot: this runs on every boot, from the package kept on the data disk.
6
+ param(
7
+ [Parameter(Mandatory = $true)][string]$ListFile,
8
+ [Parameter(Mandatory = $true)][string]$PackageName
9
+ )
10
+ $ErrorActionPreference = 'Stop'
11
+
12
+ if ($PackageName -notmatch '^[A-Za-z0-9.]{1,100}$') { throw 'That is not a package name.' }
13
+ $list = ConvertFrom-Json -InputObject (Get-Content -LiteralPath $ListFile -Raw -Encoding UTF8)
14
+ $dependencies = @()
15
+ if ($list.dependencies) { $dependencies = @($list.dependencies | ForEach-Object { $_ }) }
16
+
17
+ $existing = Get-AppxPackage -Name $PackageName -ErrorAction SilentlyContinue | Select-Object -First 1
18
+ if (-not $existing) {
19
+ if ($dependencies.Count -gt 0) {
20
+ Add-AppxPackage -Path $list.main -DependencyPath $dependencies
21
+ }
22
+ else {
23
+ Add-AppxPackage -Path $list.main
24
+ }
25
+ $existing = Get-AppxPackage -Name $PackageName -ErrorAction Stop | Select-Object -First 1
26
+ }
27
+ [pscustomobject]@{ name = [string]$existing.Name; version = [string]$existing.Version; family = [string]$existing.PackageFamilyName } |
28
+ ConvertTo-Json -Compress
@@ -0,0 +1,29 @@
1
+ #Requires -Version 5.1
2
+ # Starts an installed Microsoft Store app with command-line arguments (a shortcut to shell:AppsFolder cannot pass any).
3
+ # The Perplexity desktop app is started with its own profile folder and its DevTools port, so the sandbox can keep
4
+ # its perplexity.ai sign-in (guest/browser/perplexity-app.ts). -Port 0 picks a free port, written to the profile.
5
+ param(
6
+ [Parameter(Mandatory = $true)][string]$PackageName,
7
+ [string]$UserDataDir = '',
8
+ [int]$Port = -1
9
+ )
10
+ $ErrorActionPreference = 'Stop'
11
+
12
+ if ($PackageName -notmatch '^[A-Za-z0-9.]{1,100}$') { throw 'That is not a package name.' }
13
+ $package = Get-AppxPackage -Name $PackageName -ErrorAction Stop | Select-Object -First 1
14
+ if (-not $package) { throw ($PackageName + ' is not installed.') }
15
+ $manifest = Get-AppxPackageManifest -Package $package
16
+ $application = @($manifest.Package.Applications.Application)[0]
17
+ $aumid = $package.PackageFamilyName + '!' + $application.Id
18
+
19
+ $arguments = ''
20
+ if ($UserDataDir) {
21
+ New-Item -ItemType Directory -Force -Path $UserDataDir | Out-Null
22
+ Remove-Item -LiteralPath (Join-Path $UserDataDir 'DevToolsActivePort') -Force -ErrorAction SilentlyContinue
23
+ $arguments = '--user-data-dir="' + $UserDataDir + '"'
24
+ }
25
+ if ($Port -ge 0) { $arguments = ($arguments + ' --remote-debugging-port=' + $Port).Trim() }
26
+
27
+ Add-Type -Path (Join-Path $PSScriptRoot '..\csharp\AppActivation.cs')
28
+ $processId = [SbxAppActivation]::Start($aumid, $arguments)
29
+ Write-Output $processId
@@ -407,6 +407,10 @@
407
407
  "shareToken": {
408
408
  "type": "boolean",
409
409
  "description": "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."
410
+ },
411
+ "usePcLogin": {
412
+ "type": "boolean",
413
+ "description": "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."
410
414
  }
411
415
  },
412
416
  "additionalProperties": false
@@ -439,7 +443,7 @@
439
443
  "properties": {
440
444
  "share": {
441
445
  "type": "boolean",
442
- "description": "Hand your saved Unity sign-in to sandboxes that use unity (sign in once in a sandbox, or take this PC's licence from Accounts). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It works in one sandbox at a time: a second sandbox starts without it while the first one runs. A Pro seat is handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep it until you return it. Yours only: a project file can only turn it off."
446
+ "description": "Hand your saved Unity sign-in to sandboxes that use unity (sign in once in a sandbox, or take this PC's licence from Accounts). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It works in one sandbox at a time: a second sandbox starts without it while the first one runs. Unity Personal is activated by signing in: sign in to Unity once in a sandbox and the licence it makes is kept for the next ones (if Unity refuses it there, sign in again). A Plus or Pro serial is activated in each sandbox and handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep the seat until you remove it at id.unity.com (My Seats). A licence file taken from this PC may not work in a sandbox: Unity ties it to the computer. Yours only: a project file can only turn it off."
443
447
  }
444
448
  },
445
449
  "additionalProperties": false
@@ -513,6 +517,16 @@
513
517
  }
514
518
  },
515
519
  "additionalProperties": false
520
+ },
521
+ "perplexityapp": {
522
+ "type": "object",
523
+ "properties": {
524
+ "share": {
525
+ "type": "boolean",
526
+ "description": "Hand your saved Perplexity desktop app sign-in to sandboxes that use the Perplexity desktop app (sign in to the Perplexity app once in a sandbox: it cannot be taken from this PC). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It can act as you in the Perplexity app and spend your Perplexity Computer credits; the app acts on the pages it reads, which can try to steer it. Your sign-in in the Perplexity app can't be copied from this PC: Windows locks it to your PC account. Sign in once inside a sandbox and it is kept for the next ones. Only the perplexity.ai sign-in cookies are kept: never saved passwords, other sites, localStorage or history. Several sandboxes can use it at once: the sign-in the last one hands back is kept. Yours only: a project file can only turn it off."
527
+ }
528
+ },
529
+ "additionalProperties": false
516
530
  }
517
531
  },
518
532
  "additionalProperties": false,
@@ -595,6 +609,10 @@
595
609
  },
596
610
  "unityEditors": {
597
611
  "anyOf": [
612
+ {
613
+ "type": "string",
614
+ "const": "auto"
615
+ },
598
616
  {
599
617
  "type": "boolean"
600
618
  },
@@ -606,7 +624,19 @@
606
624
  }
607
625
  }
608
626
  ],
609
- "description": "Unity editors installed with Unity Hub of this PC, read-only in the sandbox under C:\\PcInstalls: true = all of them, false = none, or a list (e.g. [\"6000.0.32f1\"]). The agent can read their files."
627
+ "description": "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\"])."
628
+ },
629
+ "unityAssets": {
630
+ "anyOf": [
631
+ {
632
+ "type": "string",
633
+ "const": "auto"
634
+ },
635
+ {
636
+ "type": "boolean"
637
+ }
638
+ ],
639
+ "description": "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."
610
640
  }
611
641
  },
612
642
  "additionalProperties": false,
@@ -939,7 +969,7 @@
939
969
  "const": "auto"
940
970
  }
941
971
  ],
942
- "description": "Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed into tools\\unity\\<version> (6-7 GB each), with the modules you list. true, false, or \"auto\" = only when the project has ProjectSettings/ProjectVersion.txt."
972
+ "description": "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. true, false, or \"auto\" = only when the project has ProjectSettings/ProjectVersion.txt."
943
973
  },
944
974
  "acceptLicense": {
945
975
  "type": "boolean",
@@ -948,7 +978,7 @@
948
978
  "version": {
949
979
  "type": "string",
950
980
  "minLength": 1,
951
- "description": "\"project\" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as \"6000.0.32f1\"."
981
+ "description": "\"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)."
952
982
  },
953
983
  "modules": {
954
984
  "type": "array",
@@ -960,13 +990,35 @@
960
990
  },
961
991
  "hub": {
962
992
  "type": "boolean",
963
- "description": "Also Unity Hub, with the installed editors listed in it."
993
+ "description": "Also Unity Hub (kept on the data disk), for signing in to Unity Personal and installing editors by hand."
964
994
  },
965
995
  "keepVersions": {
966
996
  "type": "integer",
967
997
  "minimum": 1,
968
998
  "maximum": 20,
969
999
  "description": "How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first)."
1000
+ },
1001
+ "mcp": {
1002
+ "type": "boolean",
1003
+ "description": "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."
1004
+ },
1005
+ "agentSkills": {
1006
+ "type": "boolean",
1007
+ "description": "Unity's skills for Claude Code and Codex, from Unity-Technologies/skills at the commit the Unity CLI pins."
1008
+ },
1009
+ "cliVersion": {
1010
+ "type": "string",
1011
+ "pattern": "^(latest|\\d+\\.\\d+\\.\\d+(-[A-Za-z0-9.]+)?)$",
1012
+ "description": "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."
1013
+ },
1014
+ "assetCache": {
1015
+ "type": "string",
1016
+ "enum": [
1017
+ "persisted",
1018
+ "pc",
1019
+ "local"
1020
+ ],
1021
+ "description": "\"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)."
970
1022
  }
971
1023
  },
972
1024
  "additionalProperties": false
@@ -1483,7 +1535,7 @@
1483
1535
  "const": "auto"
1484
1536
  }
1485
1537
  ],
1486
- "description": "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 never copied; `gh auth login` inside persists (GH_CONFIG_DIR), unless a token you saved for sandboxes is handed over (github.shareToken). \"auto\" = when the project has a .github folder."
1538
+ "description": "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."
1487
1539
  },
1488
1540
  "zstd": {
1489
1541
  "anyOf": [
@@ -2059,12 +2111,15 @@
2059
2111
  "f3d",
2060
2112
  "imagemagick",
2061
2113
  "nomacs",
2114
+ "unity-mcp",
2115
+ "openupm-cli",
2062
2116
  "lua-language-server",
2063
2117
  "stylua",
2064
2118
  "selene",
2065
2119
  "perplexity-mcp",
2066
2120
  "perplexity-computer-mcp",
2067
2121
  "comet",
2122
+ "perplexity-desktop",
2068
2123
  "comet-mcp",
2069
2124
  "chrome-devtools-mcp",
2070
2125
  "browser-use-mcp"
@@ -203,7 +203,7 @@
203
203
  "properties": {
204
204
  "share": {
205
205
  "type": "boolean",
206
- "description": "Hand your saved Unity sign-in to sandboxes that use unity (sign in once in a sandbox, or take this PC's licence from Accounts). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It works in one sandbox at a time: a second sandbox starts without it while the first one runs. A Pro seat is handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep it until you return it. Yours only: a project file can only turn it off."
206
+ "description": "Hand your saved Unity sign-in to sandboxes that use unity (sign in once in a sandbox, or take this PC's licence from Accounts). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It works in one sandbox at a time: a second sandbox starts without it while the first one runs. Unity Personal is activated by signing in: sign in to Unity once in a sandbox and the licence it makes is kept for the next ones (if Unity refuses it there, sign in again). A Plus or Pro serial is activated in each sandbox and handed back when the sandbox stops cleanly; a sandbox closed abruptly may keep the seat until you remove it at id.unity.com (My Seats). A licence file taken from this PC may not work in a sandbox: Unity ties it to the computer. Yours only: a project file can only turn it off."
207
207
  }
208
208
  },
209
209
  "additionalProperties": false
@@ -277,6 +277,16 @@
277
277
  }
278
278
  },
279
279
  "additionalProperties": false
280
+ },
281
+ "perplexityapp": {
282
+ "type": "object",
283
+ "properties": {
284
+ "share": {
285
+ "type": "boolean",
286
+ "description": "Hand your saved Perplexity desktop app sign-in to sandboxes that use the Perplexity desktop app (sign in to the Perplexity app once in a sandbox: it cannot be taken from this PC). Kept encrypted on this PC; The agent in the sandbox can use this sign-in while it is there. It can act as you in the Perplexity app and spend your Perplexity Computer credits; the app acts on the pages it reads, which can try to steer it. Your sign-in in the Perplexity app can't be copied from this PC: Windows locks it to your PC account. Sign in once inside a sandbox and it is kept for the next ones. Only the perplexity.ai sign-in cookies are kept: never saved passwords, other sites, localStorage or history. Several sandboxes can use it at once: the sign-in the last one hands back is kept. Yours only: a project file can only turn it off."
287
+ }
288
+ },
289
+ "additionalProperties": false
280
290
  }
281
291
  },
282
292
  "additionalProperties": false
@@ -598,7 +608,7 @@
598
608
  "const": "auto"
599
609
  }
600
610
  ],
601
- "description": "Unity: the editor version a project asks for, from Unity's release API (checked against its published hash), installed into tools\\unity\\<version> (6-7 GB each), with the modules you list. true, false, or \"auto\" = only when the project has ProjectSettings/ProjectVersion.txt."
611
+ "description": "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. true, false, or \"auto\" = only when the project has ProjectSettings/ProjectVersion.txt."
602
612
  },
603
613
  "acceptLicense": {
604
614
  "type": "boolean",
@@ -607,7 +617,7 @@
607
617
  "version": {
608
618
  "type": "string",
609
619
  "minLength": 1,
610
- "description": "\"project\" = the version in ProjectSettings/ProjectVersion.txt, or an editor version such as \"6000.0.32f1\"."
620
+ "description": "\"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)."
611
621
  },
612
622
  "modules": {
613
623
  "type": "array",
@@ -619,13 +629,35 @@
619
629
  },
620
630
  "hub": {
621
631
  "type": "boolean",
622
- "description": "Also Unity Hub, with the installed editors listed in it."
632
+ "description": "Also Unity Hub (kept on the data disk), for signing in to Unity Personal and installing editors by hand."
623
633
  },
624
634
  "keepVersions": {
625
635
  "type": "integer",
626
636
  "minimum": 1,
627
637
  "maximum": 20,
628
638
  "description": "How many editor versions to keep in tools\\unity; older ones are removed (the least recently used first)."
639
+ },
640
+ "mcp": {
641
+ "type": "boolean",
642
+ "description": "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."
643
+ },
644
+ "agentSkills": {
645
+ "type": "boolean",
646
+ "description": "Unity's skills for Claude Code and Codex, from Unity-Technologies/skills at the commit the Unity CLI pins."
647
+ },
648
+ "cliVersion": {
649
+ "type": "string",
650
+ "pattern": "^(latest|\\d+\\.\\d+\\.\\d+(-[A-Za-z0-9.]+)?)$",
651
+ "description": "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."
652
+ },
653
+ "assetCache": {
654
+ "type": "string",
655
+ "enum": [
656
+ "persisted",
657
+ "pc",
658
+ "local"
659
+ ],
660
+ "description": "\"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)."
629
661
  }
630
662
  },
631
663
  "additionalProperties": false
@@ -1142,7 +1174,7 @@
1142
1174
  "const": "auto"
1143
1175
  }
1144
1176
  ],
1145
- "description": "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 never copied; `gh auth login` inside persists (GH_CONFIG_DIR), unless a token you saved for sandboxes is handed over (github.shareToken). \"auto\" = when the project has a .github folder."
1177
+ "description": "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."
1146
1178
  },
1147
1179
  "zstd": {
1148
1180
  "anyOf": [
@@ -1572,6 +1604,7 @@
1572
1604
  "f3d",
1573
1605
  "imagemagick",
1574
1606
  "nomacs",
1607
+ "openupm-cli",
1575
1608
  "lua-language-server",
1576
1609
  "stylua",
1577
1610
  "selene"
@@ -1,2 +0,0 @@
1
- import { type DevTool } from './devtool.js';
2
- export declare const unityTool: DevTool;
@@ -1,7 +0,0 @@
1
- // sbx-unity: install editors, list them, build with -executeMethod, the licence status. Not available yet.
2
- import { notAvailableYet } from './devtool.js';
3
- export const unityTool = {
4
- name: 'unity',
5
- summary: 'install editors, list them, build with -executeMethod, the licence status',
6
- run: () => notAvailableYet('unity'),
7
- };