windows-development-sandbox 1.15.0 → 1.17.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 +6 -0
- package/dist/app/features/access/access.run.js +1 -1
- package/dist/app/features/accounts/accounts.def.js +4 -3
- package/dist/app/features/defs.d.ts +3 -1
- package/dist/app/features/defs.js +26 -12
- package/dist/app/features/sandbox/sandbox.def.js +9 -5
- package/dist/app/features/sessions/sessions.def.js +1 -1
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-HTQT5SBY.js → chunk-QLGGAG3D.js} +98 -79
- package/dist/bin/{chunk-D7CM63BS.js → chunk-REE3EMHD.js} +105 -41
- package/dist/bin/{chunk-RQ4BWBYX.js → chunk-XYUVIVJT.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/web.js +1 -1
- package/dist/cli/index.js +4 -1
- package/dist/cli/report.d.ts +7 -0
- package/dist/cli/report.js +31 -0
- package/dist/core/config/defaults.js +1 -0
- package/dist/core/detect/toolchains.d.ts +1 -0
- package/dist/core/detect/toolchains.js +7 -0
- package/dist/core/schema/config.d.ts +21 -0
- package/dist/core/schema/sandbox.js +1 -1
- package/dist/core/schema/toolchains.d.ts +6 -0
- package/dist/core/schema/toolchains.js +10 -0
- package/dist/guest/boot/boot.js +2 -0
- package/dist/guest/setup/browser-gpu.d.ts +1 -0
- package/dist/guest/setup/browser-gpu.js +18 -0
- package/dist/guest/toolchains/native/rust-extras.js +3 -1
- package/dist/guest/toolchains/native/unreal.d.ts +9 -0
- package/dist/guest/toolchains/native/unreal.js +186 -0
- package/dist/guest/toolchains/native/vcruntime.d.ts +3 -0
- package/dist/guest/toolchains/native/vcruntime.js +2 -2
- package/dist/guest/toolchains/plan.js +10 -2
- package/dist/host/engines/hcs/live-folders.js +1 -1
- package/dist/host/github/token.js +1 -1
- package/dist/host/profile/accounts.js +1 -1
- package/dist/host/profile/agent-accounts.js +1 -1
- package/dist/host/profile/plugin-share.d.ts +5 -0
- package/dist/host/profile/plugin-share.js +22 -1
- package/dist/host/secrets/secret-store.d.ts +3 -3
- package/dist/host/secrets/secret-store.js +37 -10
- package/dist/host/vpn/login.js +1 -1
- package/dist/runtime/agent.js +16 -1
- package/dist/runtime/daemon.js +522 -337
- package/dist/runtime/db.js +17 -1
- package/dist/runtime/main.js +669 -472
- package/dist/runtime/netproxy.js +16 -1
- package/dist/runtime/view.js +16 -1
- package/dist/selftest/accounts.test.js +29 -0
- package/dist/selftest/app.test.js +2 -2
- package/dist/selftest/detect.test.js +7 -0
- package/dist/selftest/live-network.test.js +5 -0
- package/dist/selftest/support/fixtures.d.ts +6 -0
- package/dist/shared/channel/schema.d.ts +18 -0
- package/dist/web/index.html +2 -2
- package/dist/web/main-JTH3FT4O.js +221 -0
- package/dist/web/{main-UAQPI5XD.css → main-XT7T6ODM.css} +1 -1
- package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/Program.cs +6 -1
- package/native/csharp/HostTools/Protect.cs +41 -0
- package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
- package/package.json +1 -1
- package/schemas/config.schema.json +34 -1
- package/schemas/sandbox-config.schema.json +34 -1
- package/dist/web/main-7DJZ2M27.js +0 -221
|
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
|
|
|
8
8
|
[assembly: AssemblyCompany("windows-development-sandbox (open source)")]
|
|
9
9
|
[assembly: AssemblyProduct("Windows Development Sandbox")]
|
|
10
10
|
[assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
|
|
11
|
-
[assembly: AssemblyVersion("1.
|
|
12
|
-
[assembly: AssemblyFileVersion("1.
|
|
13
|
-
[assembly: AssemblyInformationalVersion("1.
|
|
11
|
+
[assembly: AssemblyVersion("1.17.0.0")]
|
|
12
|
+
[assembly: AssemblyFileVersion("1.17.0.0")]
|
|
13
|
+
[assembly: AssemblyInformationalVersion("1.17.0")]
|
|
14
14
|
[assembly: ComVisible(false)]
|
|
15
15
|
// computecore.dll and computestorage.dll are not KnownDLLs: load them from System32 only, never from the exe's folder.
|
|
16
16
|
[assembly: DefaultDllImportSearchPaths(DllImportSearchPath.System32)]
|
|
@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
|
|
|
8
8
|
[assembly: AssemblyCompany("windows-development-sandbox (open source)")]
|
|
9
9
|
[assembly: AssemblyProduct("Windows Development Sandbox")]
|
|
10
10
|
[assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
|
|
11
|
-
[assembly: AssemblyVersion("1.
|
|
12
|
-
[assembly: AssemblyFileVersion("1.
|
|
13
|
-
[assembly: AssemblyInformationalVersion("1.
|
|
11
|
+
[assembly: AssemblyVersion("1.17.0.0")]
|
|
12
|
+
[assembly: AssemblyFileVersion("1.17.0.0")]
|
|
13
|
+
[assembly: AssemblyInformationalVersion("1.17.0")]
|
|
14
14
|
[assembly: ComVisible(false)]
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// user-path --add|--remove D D first on, or off, your PATH; exit 3 when PATH would be too long
|
|
9
9
|
// web-helper --pipe P --server-pid N Windows sign-in for the web UI (WebHelper.cs), until stdin closes
|
|
10
10
|
// door-client --owner USER another user's side of that sign-in: prints the answer
|
|
11
|
+
// protect | unprotect DPAPI for the current user (Protect.cs): base64 on stdin, base64 on stdout
|
|
11
12
|
using System;
|
|
12
13
|
using System.Collections.Generic;
|
|
13
14
|
using System.Diagnostics;
|
|
@@ -112,6 +113,10 @@ static class Program
|
|
|
112
113
|
return Usage();
|
|
113
114
|
}
|
|
114
115
|
return AgentSandbox.WebHelper.Client(value);
|
|
116
|
+
case "protect":
|
|
117
|
+
return AgentSandbox.Protect.Run(true);
|
|
118
|
+
case "unprotect":
|
|
119
|
+
return AgentSandbox.Protect.Run(false);
|
|
115
120
|
default:
|
|
116
121
|
return Usage();
|
|
117
122
|
}
|
|
@@ -119,7 +124,7 @@ static class Program
|
|
|
119
124
|
|
|
120
125
|
static int Usage()
|
|
121
126
|
{
|
|
122
|
-
Console.Error.WriteLine("Usage: HostTools keep-awake --owner-pid N | stop-events --since <ISO time> | memory-status | hide-window --wait S | show-window [--handles a,b] | user-path --add|--remove <folder> | web-helper --pipe P --server-pid N | door-client --owner USER");
|
|
127
|
+
Console.Error.WriteLine("Usage: HostTools keep-awake --owner-pid N | stop-events --since <ISO time> | memory-status | hide-window --wait S | show-window [--handles a,b] | user-path --add|--remove <folder> | web-helper --pipe P --server-pid N | door-client --owner USER | protect | unprotect");
|
|
123
128
|
return 2;
|
|
124
129
|
}
|
|
125
130
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// HostTools protect / unprotect: Windows DPAPI for the current user, as native\scripts\protect-data.ps1 does it (same
|
|
2
|
+
// entropy, same format), without starting PowerShell. Standard input: base64 of the bytes; standard output: base64 of
|
|
3
|
+
// the result. Nothing goes on the command line or to disk.
|
|
4
|
+
using System;
|
|
5
|
+
using System.IO;
|
|
6
|
+
using System.Security.Cryptography;
|
|
7
|
+
using System.Text;
|
|
8
|
+
|
|
9
|
+
namespace AgentSandbox
|
|
10
|
+
{
|
|
11
|
+
static class Protect
|
|
12
|
+
{
|
|
13
|
+
/// <summary>The fixed extra secret of protect-data.ps1: another program that calls DPAPI without it cannot open these.</summary>
|
|
14
|
+
private const string Entropy = "agent-sandbox/secret-store/v1";
|
|
15
|
+
|
|
16
|
+
public static int Run(bool protect)
|
|
17
|
+
{
|
|
18
|
+
try
|
|
19
|
+
{
|
|
20
|
+
string text;
|
|
21
|
+
using (Stream input = Console.OpenStandardInput())
|
|
22
|
+
using (StreamReader reader = new StreamReader(input, Encoding.ASCII))
|
|
23
|
+
{
|
|
24
|
+
text = reader.ReadToEnd().Trim();
|
|
25
|
+
}
|
|
26
|
+
byte[] data = Convert.FromBase64String(text);
|
|
27
|
+
byte[] entropy = Encoding.UTF8.GetBytes(Entropy);
|
|
28
|
+
byte[] result = protect
|
|
29
|
+
? ProtectedData.Protect(data, entropy, DataProtectionScope.CurrentUser)
|
|
30
|
+
: ProtectedData.Unprotect(data, entropy, DataProtectionScope.CurrentUser);
|
|
31
|
+
Console.Out.Write(Convert.ToBase64String(result));
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
catch (Exception e)
|
|
35
|
+
{
|
|
36
|
+
Console.Error.WriteLine(e.Message);
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
|
|
|
9
9
|
[assembly: AssemblyCompany("windows-development-sandbox (open source)")]
|
|
10
10
|
[assembly: AssemblyProduct("Windows Development Sandbox")]
|
|
11
11
|
[assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
|
|
12
|
-
[assembly: AssemblyVersion("1.
|
|
13
|
-
[assembly: AssemblyFileVersion("1.
|
|
14
|
-
[assembly: AssemblyInformationalVersion("1.
|
|
12
|
+
[assembly: AssemblyVersion("1.17.0.0")]
|
|
13
|
+
[assembly: AssemblyFileVersion("1.17.0.0")]
|
|
14
|
+
[assembly: AssemblyInformationalVersion("1.17.0")]
|
|
15
15
|
[assembly: ComVisible(false)]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windows-development-sandbox",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "A disposable Windows Sandbox for development, with or without an AI agent (Claude Code, Codex, Gemini, opencode, ...): the folder you run it from is the workspace, toolchains and databases for your project install themselves, and nothing else on your PC is reachable.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
},
|
|
209
209
|
"vGpu": {
|
|
210
210
|
"type": "boolean",
|
|
211
|
-
"description": "Virtual GPU. Off by default: Microsoft notes it widens the sandbox attack surface. The sandbox then uses this PC's graphics card, and with some graphics drivers heavy use can freeze the whole PC: turn it on only when a program in the sandbox needs the GPU (the mesa toolchain gives software OpenGL without it)."
|
|
211
|
+
"description": "Virtual GPU. Off by default: Microsoft notes it widens the sandbox attack surface. The sandbox then uses this PC's graphics card, and with some graphics drivers heavy use can freeze the whole PC: turn it on only when a program in the sandbox needs the GPU (the mesa toolchain gives software OpenGL without it). Browsers in the sandbox never use it (they draw in software)."
|
|
212
212
|
},
|
|
213
213
|
"networking": {
|
|
214
214
|
"type": "boolean",
|
|
@@ -676,6 +676,39 @@
|
|
|
676
676
|
},
|
|
677
677
|
"additionalProperties": false
|
|
678
678
|
},
|
|
679
|
+
"unreal": {
|
|
680
|
+
"type": "object",
|
|
681
|
+
"properties": {
|
|
682
|
+
"enabled": {
|
|
683
|
+
"anyOf": [
|
|
684
|
+
{
|
|
685
|
+
"type": "boolean"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"type": "string",
|
|
689
|
+
"const": "auto"
|
|
690
|
+
}
|
|
691
|
+
],
|
|
692
|
+
"description": "Unreal Engine development: Visual Studio Community 2022 with the C++ game workload (MSVC, a Windows 11 SDK, .NET Framework targeting packs, Unreal integration and the Epic Games Launcher) and the DirectX End-User Runtime. A real installer: it runs every boot (~10 GB on the sandbox disk). The engine itself comes from the Epic Games Launcher or its source. true, false, or \"auto\" = only when the project has a .uproject or .uplugin."
|
|
693
|
+
},
|
|
694
|
+
"acceptLicense": {
|
|
695
|
+
"type": "boolean",
|
|
696
|
+
"description": "Required to install: you accept the Visual Studio Community licence terms (https://visualstudio.microsoft.com/license-terms/) and the DirectX End-User Runtime licence."
|
|
697
|
+
},
|
|
698
|
+
"components": {
|
|
699
|
+
"type": "array",
|
|
700
|
+
"items": {
|
|
701
|
+
"type": "string"
|
|
702
|
+
},
|
|
703
|
+
"description": "More Visual Studio workload or component IDs to add, e.g. [\"Microsoft.VisualStudio.Component.VC.Llvm.Clang\"]."
|
|
704
|
+
},
|
|
705
|
+
"keepInstallFiles": {
|
|
706
|
+
"type": "boolean",
|
|
707
|
+
"description": "Keep an offline copy of the Visual Studio install files in tools\\visualstudio (~10 GB, made once), so later boots install without downloading them again. Skipped while that disk has too little room."
|
|
708
|
+
}
|
|
709
|
+
},
|
|
710
|
+
"additionalProperties": false
|
|
711
|
+
},
|
|
679
712
|
"cpp": {
|
|
680
713
|
"type": "object",
|
|
681
714
|
"properties": {
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
"vGpu": {
|
|
111
111
|
"type": "boolean",
|
|
112
|
-
"description": "Virtual GPU. Off by default: Microsoft notes it widens the sandbox attack surface. The sandbox then uses this PC's graphics card, and with some graphics drivers heavy use can freeze the whole PC: turn it on only when a program in the sandbox needs the GPU (the mesa toolchain gives software OpenGL without it)."
|
|
112
|
+
"description": "Virtual GPU. Off by default: Microsoft notes it widens the sandbox attack surface. The sandbox then uses this PC's graphics card, and with some graphics drivers heavy use can freeze the whole PC: turn it on only when a program in the sandbox needs the GPU (the mesa toolchain gives software OpenGL without it). Browsers in the sandbox never use it (they draw in software)."
|
|
113
113
|
},
|
|
114
114
|
"networking": {
|
|
115
115
|
"type": "boolean",
|
|
@@ -430,6 +430,39 @@
|
|
|
430
430
|
},
|
|
431
431
|
"additionalProperties": false
|
|
432
432
|
},
|
|
433
|
+
"unreal": {
|
|
434
|
+
"type": "object",
|
|
435
|
+
"properties": {
|
|
436
|
+
"enabled": {
|
|
437
|
+
"anyOf": [
|
|
438
|
+
{
|
|
439
|
+
"type": "boolean"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"type": "string",
|
|
443
|
+
"const": "auto"
|
|
444
|
+
}
|
|
445
|
+
],
|
|
446
|
+
"description": "Unreal Engine development: Visual Studio Community 2022 with the C++ game workload (MSVC, a Windows 11 SDK, .NET Framework targeting packs, Unreal integration and the Epic Games Launcher) and the DirectX End-User Runtime. A real installer: it runs every boot (~10 GB on the sandbox disk). The engine itself comes from the Epic Games Launcher or its source. true, false, or \"auto\" = only when the project has a .uproject or .uplugin."
|
|
447
|
+
},
|
|
448
|
+
"acceptLicense": {
|
|
449
|
+
"type": "boolean",
|
|
450
|
+
"description": "Required to install: you accept the Visual Studio Community licence terms (https://visualstudio.microsoft.com/license-terms/) and the DirectX End-User Runtime licence."
|
|
451
|
+
},
|
|
452
|
+
"components": {
|
|
453
|
+
"type": "array",
|
|
454
|
+
"items": {
|
|
455
|
+
"type": "string"
|
|
456
|
+
},
|
|
457
|
+
"description": "More Visual Studio workload or component IDs to add, e.g. [\"Microsoft.VisualStudio.Component.VC.Llvm.Clang\"]."
|
|
458
|
+
},
|
|
459
|
+
"keepInstallFiles": {
|
|
460
|
+
"type": "boolean",
|
|
461
|
+
"description": "Keep an offline copy of the Visual Studio install files in tools\\visualstudio (~10 GB, made once), so later boots install without downloading them again. Skipped while that disk has too little room."
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"additionalProperties": false
|
|
465
|
+
},
|
|
433
466
|
"cpp": {
|
|
434
467
|
"type": "object",
|
|
435
468
|
"properties": {
|