windows-development-sandbox 1.4.0 → 1.4.3
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/.sandbox-config.example.json +2 -1
- package/config.example.json +4 -1
- package/dist/api.js +27 -16
- package/dist/cli/args.d.ts +4 -6
- package/dist/cli/args.js +67 -34
- package/dist/cli/argv.d.ts +9 -0
- package/dist/cli/argv.js +22 -0
- package/dist/cli/commands/accounts.d.ts +1 -1
- package/dist/cli/commands/accounts.js +42 -27
- package/dist/cli/commands/agent-commands.d.ts +3 -3
- package/dist/cli/commands/agent-commands.js +27 -18
- package/dist/cli/commands/context.d.ts +9 -11
- package/dist/cli/commands/context.js +35 -32
- package/dist/cli/commands/data/clean.d.ts +2 -2
- package/dist/cli/commands/data/clean.js +27 -11
- package/dist/cli/commands/data/collect.d.ts +6 -3
- package/dist/cli/commands/data/collect.js +46 -15
- package/dist/cli/commands/data/index.d.ts +2 -2
- package/dist/cli/commands/data/index.js +30 -12
- package/dist/cli/commands/data/remove.d.ts +1 -1
- package/dist/cli/commands/data/remove.js +4 -4
- package/dist/cli/commands/index.d.ts +5 -4
- package/dist/cli/commands/index.js +5 -4
- package/dist/cli/commands/launch/add-root.d.ts +7 -0
- package/dist/cli/commands/launch/add-root.js +64 -0
- package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
- package/dist/cli/commands/launch/boot-progress.js +48 -0
- package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
- package/dist/cli/commands/launch/boot-wants.js +48 -0
- package/dist/cli/commands/launch/first-start.d.ts +10 -0
- package/dist/cli/commands/launch/first-start.js +53 -0
- package/dist/cli/commands/launch/index.d.ts +6 -0
- package/dist/cli/commands/launch/index.js +6 -0
- package/dist/cli/commands/launch/launch.d.ts +8 -0
- package/dist/cli/commands/launch/launch.js +211 -0
- package/dist/cli/commands/launch/prepare.d.ts +23 -0
- package/dist/cli/commands/launch/prepare.js +109 -0
- package/dist/cli/commands/launch/running.d.ts +45 -0
- package/dist/cli/commands/launch/running.js +218 -0
- package/dist/cli/commands/launch/summary.d.ts +8 -0
- package/dist/cli/commands/launch/summary.js +98 -0
- package/dist/cli/commands/maintenance/audit.d.ts +3 -0
- package/dist/cli/commands/maintenance/audit.js +58 -0
- package/dist/cli/commands/maintenance/clean.d.ts +2 -0
- package/dist/cli/commands/maintenance/clean.js +10 -0
- package/dist/cli/commands/maintenance/config.d.ts +2 -0
- package/dist/cli/commands/maintenance/config.js +145 -0
- package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
- package/dist/cli/commands/maintenance/doctor.js +52 -0
- package/dist/cli/commands/maintenance/host-claude.d.ts +2 -0
- package/dist/cli/commands/maintenance/host-claude.js +4 -0
- package/dist/cli/commands/maintenance/index.d.ts +8 -0
- package/dist/cli/commands/maintenance/index.js +9 -0
- package/dist/cli/commands/maintenance/logs.d.ts +2 -0
- package/dist/cli/commands/maintenance/logs.js +44 -0
- package/dist/cli/commands/maintenance/sync.d.ts +2 -0
- package/dist/cli/commands/maintenance/sync.js +12 -0
- package/dist/cli/commands/maintenance/watch.d.ts +3 -0
- package/dist/cli/commands/maintenance/watch.js +6 -0
- package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
- package/dist/cli/commands/projects/describe-sessions.js +15 -0
- package/dist/cli/commands/projects/here.d.ts +38 -0
- package/dist/cli/commands/projects/here.js +145 -0
- package/dist/cli/commands/projects/index.d.ts +4 -0
- package/dist/cli/commands/projects/index.js +4 -0
- package/dist/cli/commands/projects/projects.d.ts +14 -0
- package/dist/cli/commands/projects/projects.js +213 -0
- package/dist/cli/commands/projects/restart.d.ts +15 -0
- package/dist/cli/commands/projects/restart.js +149 -0
- package/dist/cli/commands/registry.d.ts +3 -0
- package/dist/cli/commands/registry.js +34 -0
- package/dist/cli/commands/repair/checks.js +105 -29
- package/dist/cli/commands/repair/finders.d.ts +13 -10
- package/dist/cli/commands/repair/finders.js +63 -43
- package/dist/cli/commands/repair/index.d.ts +4 -4
- package/dist/cli/commands/repair/index.js +47 -21
- package/dist/cli/commands/repair/types.d.ts +2 -2
- package/dist/cli/commands/repair/types.js +7 -2
- package/dist/cli/commands/sessions/attach.d.ts +2 -0
- package/dist/cli/commands/sessions/attach.js +45 -0
- package/dist/cli/commands/sessions/control.d.ts +4 -0
- package/dist/cli/commands/sessions/control.js +62 -0
- package/dist/cli/commands/sessions/exec.d.ts +6 -0
- package/dist/cli/commands/sessions/exec.js +72 -0
- package/dist/cli/commands/sessions/index.d.ts +6 -0
- package/dist/cli/commands/sessions/index.js +9 -0
- package/dist/cli/commands/sessions/list.d.ts +15 -0
- package/dist/cli/commands/sessions/list.js +65 -0
- package/dist/cli/commands/sessions/status.d.ts +2 -0
- package/dist/cli/commands/sessions/status.js +153 -0
- package/dist/cli/commands/sessions/window.d.ts +3 -0
- package/dist/cli/commands/sessions/window.js +18 -0
- package/dist/cli/commands/setup/checks.d.ts +4 -4
- package/dist/cli/commands/setup/checks.js +36 -19
- package/dist/cli/commands/setup/facts.d.ts +6 -6
- package/dist/cli/commands/setup/facts.js +23 -11
- package/dist/cli/commands/setup/index.d.ts +1 -1
- package/dist/cli/commands/setup/index.js +25 -12
- package/dist/cli/commands/user-config.d.ts +5 -5
- package/dist/cli/commands/user-config.js +14 -12
- package/dist/cli/history.d.ts +5 -4
- package/dist/cli/history.js +23 -11
- package/dist/cli/index.d.ts +4 -14
- package/dist/cli/index.js +27 -77
- package/dist/cli/manifest.d.ts +464 -10
- package/dist/cli/manifest.js +328 -54
- package/dist/cli/menu/apps.d.ts +7 -5
- package/dist/cli/menu/apps.js +64 -16
- package/dist/cli/menu/command-fields.d.ts +15 -0
- package/dist/cli/menu/command-fields.js +23 -0
- package/dist/cli/menu/command-form.d.ts +3 -5
- package/dist/cli/menu/command-form.js +116 -48
- package/dist/cli/menu/home.d.ts +22 -0
- package/dist/cli/menu/home.js +72 -0
- package/dist/cli/menu/index.d.ts +2 -24
- package/dist/cli/menu/index.js +4 -178
- package/dist/cli/menu/menu.d.ts +23 -0
- package/dist/cli/menu/menu.js +185 -0
- package/dist/cli/menu/settings/categories.d.ts +2 -2
- package/dist/cli/menu/settings/categories.js +123 -20
- package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
- package/dist/cli/menu/settings/collections/collection-editor.js +89 -0
- package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/map-editor.js +34 -0
- package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
- package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
- package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
- package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
- package/dist/cli/menu/settings/config-file.d.ts +2 -2
- package/dist/cli/menu/settings/config-file.js +42 -19
- package/dist/cli/menu/settings/editor-actions.d.ts +2 -0
- package/dist/cli/menu/settings/editor-actions.js +2 -0
- package/dist/cli/menu/settings/format.d.ts +5 -0
- package/dist/cli/menu/settings/format.js +39 -0
- package/dist/cli/menu/settings/index.d.ts +1 -29
- package/dist/cli/menu/settings/index.js +1 -133
- package/dist/cli/menu/settings/object-editor.d.ts +12 -0
- package/dist/cli/menu/settings/object-editor.js +86 -0
- package/dist/cli/menu/settings/schema-node.d.ts +3 -1
- package/dist/cli/menu/settings/schema-node.js +71 -24
- package/dist/cli/menu/settings/settings-editor.d.ts +30 -0
- package/dist/cli/menu/settings/settings-editor.js +176 -0
- package/dist/cli/menu/settings/{editors.d.ts → value-editor.d.ts} +2 -13
- package/dist/cli/menu/settings/value-editor.js +137 -0
- package/dist/cli/menu/several.d.ts +4 -4
- package/dist/cli/menu/several.js +61 -20
- package/dist/cli/{colors.d.ts → output/colors.d.ts} +8 -8
- package/dist/cli/{colors.js → output/colors.js} +32 -14
- package/dist/cli/output/index.d.ts +3 -0
- package/dist/cli/output/index.js +3 -0
- package/dist/cli/output/print.d.ts +5 -0
- package/dist/cli/output/print.js +14 -0
- package/dist/cli/output/progress.d.ts +24 -0
- package/dist/cli/output/progress.js +124 -0
- package/dist/cli/report.d.ts +2 -0
- package/dist/cli/report.js +20 -0
- package/dist/cli/tui/app.d.ts +6 -16
- package/dist/cli/tui/app.js +28 -8
- package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
- package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
- package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
- package/dist/cli/tui/dialogs/message-screen.js +55 -0
- package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
- package/dist/cli/tui/dialogs/paragraphs.js +5 -0
- package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
- package/dist/cli/tui/dialogs/text-screen.js +107 -0
- package/dist/cli/tui/frame.js +3 -1
- package/dist/cli/tui/index.d.ts +7 -3
- package/dist/cli/tui/index.js +4 -2
- package/dist/cli/tui/list/list-screen.d.ts +29 -0
- package/dist/cli/tui/{list-screen.js → list/list-screen.js} +86 -23
- package/dist/cli/tui/{list-screen.d.ts → list/list-types.d.ts} +0 -28
- package/dist/cli/tui/screen.d.ts +14 -0
- package/dist/cli/tui/terminal.js +34 -10
- package/dist/cli/tui/text.d.ts +2 -1
- package/dist/cli/tui/text.js +37 -7
- package/dist/cli/tui/theme.js +27 -9
- package/dist/cli/validate.d.ts +8 -8
- package/dist/cli/validate.js +32 -21
- package/dist/core/config/defaults.d.ts +2 -0
- package/dist/core/config/defaults.js +203 -0
- package/dist/core/config/index.d.ts +2 -0
- package/dist/core/config/index.js +3 -0
- package/dist/core/{config.d.ts → config/loader.d.ts} +1 -2
- package/dist/core/config/loader.js +47 -0
- package/dist/core/{detect-databases.js → detect/databases.js} +111 -23
- package/dist/core/detect/index.d.ts +4 -0
- package/dist/core/detect/index.js +4 -0
- package/dist/core/{detect-pwsh.d.ts → detect/pwsh.d.ts} +1 -1
- package/dist/core/{detect-pwsh.js → detect/pwsh.js} +25 -11
- package/dist/core/{detect-toolchains.d.ts → detect/toolchains.d.ts} +1 -1
- package/dist/core/{detect-toolchains.js → detect/toolchains.js} +42 -5
- package/dist/{guest/toolchains → core/detect}/versions.js +28 -12
- package/dist/core/disk.d.ts +2 -0
- package/dist/core/disk.js +46 -3
- package/dist/core/local-config/boot-wants.d.ts +45 -0
- package/dist/core/local-config/boot-wants.js +120 -0
- package/dist/core/local-config/file.d.ts +3 -0
- package/dist/core/local-config/file.js +16 -0
- package/dist/core/local-config/index.d.ts +5 -0
- package/dist/core/local-config/index.js +7 -0
- package/dist/core/{local-config.d.ts → local-config/overrides.d.ts} +11 -11
- package/dist/core/{local-config.js → local-config/overrides.js} +53 -54
- package/dist/core/{project-policy.d.ts → local-config/policy.d.ts} +7 -3
- package/dist/core/{project-policy.js → local-config/policy.js} +16 -6
- package/dist/core/local-config/trust.d.ts +13 -0
- package/dist/core/local-config/trust.js +43 -0
- package/dist/core/package-info.d.ts +4 -0
- package/dist/core/package-info.js +13 -0
- package/dist/core/run/guest-workspace.d.ts +23 -0
- package/dist/core/run/guest-workspace.js +47 -0
- package/dist/core/run/index.d.ts +3 -0
- package/dist/core/run/index.js +3 -0
- package/dist/core/run/resolve-run.d.ts +3 -0
- package/dist/core/run/resolve-run.js +202 -0
- package/dist/core/run/versions.d.ts +13 -0
- package/dist/core/run/versions.js +65 -0
- package/dist/core/safe-paths.js +17 -5
- package/dist/core/schema/apps.d.ts +4 -4
- package/dist/core/schema/apps.js +55 -21
- package/dist/core/schema/common.d.ts +13 -10
- package/dist/core/schema/common.js +16 -10
- package/dist/core/schema/config.d.ts +18 -12
- package/dist/core/schema/config.js +78 -53
- package/dist/core/schema/databases.d.ts +4 -3
- package/dist/core/schema/databases.js +16 -12
- package/dist/core/schema/harness.d.ts +1 -1
- package/dist/core/schema/harness.js +17 -7
- package/dist/core/schema/index.d.ts +6 -0
- package/dist/core/schema/index.js +8 -0
- package/dist/core/schema/json-schema.js +10 -5
- package/dist/core/schema/profile.d.ts +4 -4
- package/dist/core/schema/profile.js +37 -17
- package/dist/core/schema/projects.d.ts +2 -1
- package/dist/core/schema/projects.js +16 -5
- package/dist/core/schema/sandbox.d.ts +12 -12
- package/dist/core/schema/sandbox.js +101 -37
- package/dist/core/schema/toolchains.d.ts +6 -1
- package/dist/core/schema/toolchains.js +84 -34
- package/dist/core/types.d.ts +36 -9
- package/dist/core/util/errors.d.ts +8 -0
- package/dist/core/util/errors.js +14 -0
- package/dist/core/util/fs.d.ts +8 -0
- package/dist/core/util/fs.js +40 -0
- package/dist/core/util/index.d.ts +7 -0
- package/dist/core/util/index.js +7 -0
- package/dist/core/util/jsonc.d.ts +6 -0
- package/dist/core/util/jsonc.js +25 -0
- package/dist/core/util/links.d.ts +10 -0
- package/dist/core/util/links.js +39 -0
- package/dist/core/util/paths.d.ts +7 -0
- package/dist/core/util/paths.js +33 -0
- package/dist/core/util/process.d.ts +15 -0
- package/dist/core/util/process.js +54 -0
- package/dist/core/util/text.d.ts +8 -0
- package/dist/core/util/text.js +8 -0
- package/dist/guest/{setup/agents.js → agents/agent-installer.js} +24 -4
- package/dist/guest/apps/after-install.d.ts +3 -0
- package/dist/guest/apps/after-install.js +47 -0
- package/dist/guest/apps/app-installer.d.ts +22 -0
- package/dist/guest/apps/app-installer.js +116 -0
- package/dist/guest/apps/find-exe.d.ts +5 -0
- package/dist/guest/apps/find-exe.js +41 -0
- package/dist/guest/apps/index.d.ts +3 -10
- package/dist/guest/apps/index.js +6 -206
- package/dist/guest/apps/resolvers.js +37 -9
- package/dist/guest/apps/shortcuts.d.ts +6 -0
- package/dist/guest/apps/shortcuts.js +28 -0
- package/dist/guest/apps/sources.d.ts +4 -0
- package/dist/guest/apps/sources.js +17 -0
- package/dist/guest/apps/unpack.d.ts +3 -0
- package/dist/guest/apps/unpack.js +47 -0
- package/dist/guest/{audit-parse.js → audit/parse.js} +39 -3
- package/dist/guest/{audit.d.ts → audit/process-audit.d.ts} +3 -1
- package/dist/guest/{audit.js → audit/process-audit.js} +33 -8
- package/dist/guest/boot/boot-env.d.ts +4 -0
- package/dist/guest/{boot-env.js → boot/boot-env.js} +7 -5
- package/dist/guest/boot/boot.d.ts +1 -0
- package/dist/guest/{main.js → boot/boot.js} +100 -50
- package/dist/guest/{guide.js → boot/guide.js} +32 -7
- package/dist/guest/{project-env.d.ts → boot/project-env.d.ts} +3 -3
- package/dist/guest/{project-env.js → boot/project-env.js} +12 -4
- package/dist/guest/boot/project-status.d.ts +5 -0
- package/dist/guest/boot/project-status.js +28 -0
- package/dist/guest/daemon/daemon.d.ts +1 -0
- package/dist/guest/daemon/daemon.js +51 -0
- package/dist/guest/daemon/exec.js +18 -6
- package/dist/guest/daemon/{shutdown.js → idle-shutdown.js} +5 -4
- package/dist/guest/daemon/{project.d.ts → project-provisioner.d.ts} +3 -3
- package/dist/guest/daemon/{project.js → project-provisioner.js} +60 -22
- package/dist/guest/daemon/relays.js +5 -3
- package/dist/guest/daemon/{session.js → sessions.js} +84 -24
- package/dist/guest/daemon/state.d.ts +4 -1
- package/dist/guest/daemon/state.js +34 -20
- package/dist/guest/databases/database-server.d.ts +13 -0
- package/dist/guest/databases/database-server.js +35 -0
- package/dist/guest/databases/dynamodb.d.ts +12 -0
- package/dist/guest/databases/dynamodb.js +81 -0
- package/dist/guest/databases/index.d.ts +2 -0
- package/dist/guest/databases/index.js +2 -0
- package/dist/guest/databases/mongodb.d.ts +7 -0
- package/dist/guest/databases/mongodb.js +46 -0
- package/dist/guest/databases/mysql.d.ts +7 -0
- package/dist/guest/databases/mysql.js +59 -0
- package/dist/guest/databases/names.d.ts +5 -0
- package/dist/guest/databases/names.js +8 -0
- package/dist/guest/databases/postgres.d.ts +9 -0
- package/dist/guest/databases/postgres.js +85 -0
- package/dist/guest/databases/redis.d.ts +7 -0
- package/dist/guest/databases/redis.js +25 -0
- package/dist/guest/databases/registry.d.ts +5 -0
- package/dist/guest/databases/registry.js +51 -0
- package/dist/guest/databases/sbx-db.d.ts +1 -0
- package/dist/guest/{db.js → databases/sbx-db.js} +13 -13
- package/dist/guest/{toolchains/databases → databases}/server.d.ts +5 -5
- package/dist/guest/{toolchains/databases → databases}/server.js +18 -13
- package/dist/guest/entries/daemon.js +16 -0
- package/dist/guest/entries/db.js +10 -0
- package/dist/guest/entries/gitguard.js +20 -0
- package/dist/guest/entries/main.d.ts +1 -0
- package/dist/guest/entries/main.js +24 -0
- package/dist/guest/entries/netproxy.d.ts +1 -0
- package/dist/guest/entries/netproxy.js +7 -0
- package/dist/guest/entries/view.d.ts +1 -0
- package/dist/guest/entries/view.js +11 -0
- package/dist/guest/{gitguard.js → git/decision.js} +49 -26
- package/dist/guest/network/addresses.d.ts +2 -0
- package/dist/guest/network/addresses.js +6 -0
- package/dist/guest/{setup/network.d.ts → network/allow-only.d.ts} +0 -10
- package/dist/guest/network/allow-only.js +84 -0
- package/dist/guest/network/firewall.d.ts +9 -0
- package/dist/guest/{setup/network.js → network/firewall.js} +58 -63
- package/dist/guest/network/proxy-server.d.ts +2 -0
- package/dist/guest/{netproxy.js → network/proxy-server.js} +37 -18
- package/dist/guest/{helpers.d.ts → runtime/csc.d.ts} +1 -1
- package/dist/guest/{helpers.js → runtime/csc.js} +7 -2
- package/dist/guest/runtime/fs.d.ts +2 -0
- package/dist/guest/runtime/fs.js +6 -0
- package/dist/guest/runtime/log.d.ts +3 -0
- package/dist/guest/runtime/log.js +22 -0
- package/dist/guest/runtime/paths.d.ts +13 -0
- package/dist/guest/runtime/paths.js +14 -0
- package/dist/guest/{ports.js → runtime/ports.js} +8 -2
- package/dist/guest/runtime/process.d.ts +15 -0
- package/dist/guest/runtime/process.js +59 -0
- package/dist/guest/{project-context.js → runtime/project-context.js} +1 -1
- package/dist/guest/runtime/session.d.ts +5 -0
- package/dist/guest/runtime/session.js +10 -0
- package/dist/guest/runtime/status.d.ts +7 -0
- package/dist/guest/runtime/status.js +57 -0
- package/dist/guest/{cmdline.js → sessions/cmdline.js} +10 -4
- package/dist/guest/{ptyhost.js → sessions/pty-host.js} +12 -5
- package/dist/guest/{view.js → sessions/viewer.js} +8 -11
- package/dist/guest/setup/claude-mem.d.ts +10 -0
- package/dist/guest/setup/{claude.js → claude-mem.js} +18 -78
- package/dist/guest/setup/{claude.d.ts → claude-profile.d.ts} +0 -10
- package/dist/guest/setup/claude-profile.js +89 -0
- package/dist/guest/setup/desktop.d.ts +2 -0
- package/dist/guest/setup/desktop.js +32 -0
- package/dist/guest/setup/environment.js +28 -5
- package/dist/guest/setup/{user.d.ts → git-identity.d.ts} +0 -2
- package/dist/guest/setup/git-identity.js +34 -0
- package/dist/guest/{gitrules.d.ts → setup/git-rules.d.ts} +1 -1
- package/dist/guest/setup/git-rules.js +50 -0
- package/dist/guest/setup/hooks.js +22 -5
- package/dist/guest/setup/{policy.js → managed-policy.js} +2 -2
- package/dist/guest/toolchains/catalogue.d.ts +4 -4
- package/dist/guest/toolchains/catalogue.js +30 -7
- package/dist/guest/toolchains/detect.d.ts +12 -0
- package/dist/guest/toolchains/detect.js +54 -0
- package/dist/guest/toolchains/index.d.ts +3 -17
- package/dist/guest/toolchains/index.js +1 -80
- package/dist/guest/toolchains/install.d.ts +20 -0
- package/dist/guest/toolchains/install.js +29 -0
- package/dist/guest/toolchains/languages/go.d.ts +3 -0
- package/dist/guest/toolchains/{go.js → languages/go.js} +27 -9
- package/dist/guest/toolchains/languages/java.d.ts +8 -0
- package/dist/guest/toolchains/{java.js → languages/java.js} +57 -18
- package/dist/guest/toolchains/languages/node.d.ts +3 -0
- package/dist/guest/toolchains/{node.js → languages/node.js} +51 -18
- package/dist/guest/toolchains/languages/php.d.ts +3 -0
- package/dist/guest/toolchains/{scripting → languages}/php.js +36 -11
- package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
- package/dist/guest/toolchains/languages/python-tools.js +12 -0
- package/dist/guest/toolchains/languages/python.d.ts +3 -0
- package/dist/guest/toolchains/{python.js → languages/python.js} +29 -16
- package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
- package/dist/guest/toolchains/{scripting → languages}/ruby.js +28 -10
- package/dist/guest/toolchains/leftovers.d.ts +1 -1
- package/dist/guest/toolchains/leftovers.js +13 -11
- package/dist/guest/toolchains/managers.d.ts +6 -6
- package/dist/guest/toolchains/managers.js +38 -17
- package/dist/guest/toolchains/native/binstall.d.ts +3 -2
- package/dist/guest/toolchains/native/binstall.js +20 -8
- package/dist/guest/toolchains/native/cpp.d.ts +2 -2
- package/dist/guest/toolchains/native/cpp.js +23 -8
- package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
- package/dist/guest/toolchains/native/dotnet.js +72 -24
- package/dist/guest/toolchains/native/mesa.d.ts +2 -2
- package/dist/guest/toolchains/native/mesa.js +27 -10
- package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
- package/dist/guest/toolchains/native/msvc/environment.js +30 -16
- package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
- package/dist/guest/toolchains/native/msvc/index.js +10 -8
- package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
- package/dist/guest/toolchains/native/msvc/packages.js +69 -23
- package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
- package/dist/guest/toolchains/native/msvc/tree.js +15 -9
- package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
- package/dist/guest/toolchains/native/rust-extras.js +100 -0
- package/dist/guest/toolchains/native/rust.d.ts +2 -2
- package/dist/guest/toolchains/native/rust.js +41 -10
- package/dist/guest/toolchains/{scripting → native}/vcruntime.d.ts +2 -2
- package/dist/guest/toolchains/{scripting → native}/vcruntime.js +17 -7
- package/dist/guest/toolchains/package-ledger.d.ts +17 -0
- package/dist/guest/toolchains/package-ledger.js +54 -0
- package/dist/guest/toolchains/plan.d.ts +3 -24
- package/dist/guest/toolchains/plan.js +99 -111
- package/dist/guest/toolchains/runtimes.d.ts +6 -6
- package/dist/guest/toolchains/runtimes.js +31 -13
- package/dist/guest/toolchains/scheduler.d.ts +22 -0
- package/dist/guest/toolchains/scheduler.js +123 -0
- package/dist/guest/toolchains/setup.d.ts +10 -0
- package/dist/guest/toolchains/setup.js +22 -0
- package/dist/guest/toolchains/state-file.d.ts +3 -0
- package/dist/guest/toolchains/state-file.js +10 -0
- package/dist/guest/toolchains/step.d.ts +24 -0
- package/dist/guest/toolchains/step.js +1 -0
- package/dist/guest/toolchains/tool-env.d.ts +12 -0
- package/dist/guest/toolchains/tool-env.js +16 -0
- package/dist/guest/toolchains/tools/cli.d.ts +10 -0
- package/dist/guest/toolchains/{cli.js → tools/cli.js} +35 -15
- package/dist/guest/toolchains/tools/git.d.ts +3 -0
- package/dist/guest/toolchains/{git.js → tools/git.js} +38 -15
- package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
- package/dist/guest/toolchains/{pwsh.js → tools/pwsh.js} +14 -7
- package/dist/guest/toolchains/{vscode-profile.d.ts → tools/vscode-profile.d.ts} +6 -6
- package/dist/guest/toolchains/{vscode-profile.js → tools/vscode-profile.js} +28 -12
- package/dist/guest/toolchains/{vscode.d.ts → tools/vscode.d.ts} +6 -6
- package/dist/guest/toolchains/{vscode.js → tools/vscode.js} +67 -21
- package/dist/guest/toolchains/version-cache.d.ts +16 -0
- package/dist/guest/toolchains/version-cache.js +67 -0
- package/dist/host/agent-commands/commands.d.ts +13 -0
- package/dist/host/agent-commands/commands.js +33 -0
- package/dist/host/agent-commands/forwarders.d.ts +7 -0
- package/dist/host/agent-commands/forwarders.js +31 -0
- package/dist/host/agent-commands/index.d.ts +4 -0
- package/dist/host/agent-commands/index.js +4 -0
- package/dist/host/agent-commands/reconcile.d.ts +12 -0
- package/dist/host/agent-commands/reconcile.js +69 -0
- package/dist/host/agent-commands/user-path.d.ts +2 -0
- package/dist/host/agent-commands/user-path.js +33 -0
- package/dist/host/audit/collect.d.ts +2 -2
- package/dist/host/audit/collect.js +59 -22
- package/dist/host/audit/log.d.ts +2 -2
- package/dist/host/audit/log.js +24 -8
- package/dist/host/{attach.d.ts → channel/attach.d.ts} +2 -2
- package/dist/host/{attach.js → channel/attach.js} +33 -15
- package/dist/host/channel/channel.d.ts +51 -0
- package/dist/host/channel/channel.js +196 -0
- package/dist/host/channel/index.d.ts +2 -0
- package/dist/host/channel/index.js +2 -0
- package/dist/host/guard/agent-files.d.ts +7 -0
- package/dist/host/guard/agent-files.js +103 -0
- package/dist/host/guard/commands.d.ts +10 -0
- package/dist/host/guard/commands.js +123 -0
- package/dist/host/guard/file-hash.d.ts +4 -0
- package/dist/host/guard/file-hash.js +37 -0
- package/dist/host/guard/git-config.d.ts +5 -0
- package/dist/host/guard/git-config.js +62 -0
- package/dist/host/guard/git-dirs.d.ts +12 -0
- package/dist/host/guard/git-dirs.js +53 -0
- package/dist/host/guard/index.d.ts +5 -0
- package/dist/host/guard/index.js +4 -0
- package/dist/host/guard/mark-of-the-web.d.ts +8 -0
- package/dist/host/guard/mark-of-the-web.js +74 -0
- package/dist/host/guard/nested-repos.d.ts +14 -0
- package/dist/host/guard/nested-repos.js +88 -0
- package/dist/host/guard/quarantine.d.ts +3 -0
- package/dist/host/guard/quarantine.js +24 -0
- package/dist/host/guard/repo-guard.d.ts +10 -0
- package/dist/host/guard/repo-guard.js +36 -0
- package/dist/host/guard/store.d.ts +40 -0
- package/dist/host/guard/store.js +145 -0
- package/dist/host/guard/types.d.ts +27 -0
- package/dist/host/guard/types.js +3 -0
- package/dist/host/guard/watch-state.d.ts +9 -0
- package/dist/host/guard/watch-state.js +26 -0
- package/dist/host/launch/boot-projects.d.ts +17 -0
- package/dist/host/launch/{projects.js → boot-projects.js} +27 -12
- package/dist/host/{database-plan.d.ts → launch/database-plan.d.ts} +5 -5
- package/dist/host/{database-plan.js → launch/database-plan.js} +24 -13
- package/dist/host/launch/generate.d.ts +4 -0
- package/dist/host/launch/generate.js +77 -0
- package/dist/host/launch/index.d.ts +10 -0
- package/dist/host/launch/index.js +10 -0
- package/dist/host/launch/mappings.d.ts +7 -2
- package/dist/host/launch/mappings.js +83 -24
- package/dist/host/launch/pc-scan.d.ts +5 -0
- package/dist/host/{pc-scan.js → launch/pc-scan.js} +20 -13
- package/dist/host/launch/project-scan.d.ts +7 -0
- package/dist/host/{project-scan.js → launch/project-scan.js} +29 -21
- package/dist/host/launch/session-file.d.ts +23 -0
- package/dist/host/launch/session-file.js +73 -0
- package/dist/host/launch/stage.d.ts +5 -5
- package/dist/host/launch/stage.js +14 -13
- package/dist/host/launch/toolchains.d.ts +4 -0
- package/dist/host/launch/toolchains.js +11 -0
- package/dist/host/launch/{wsb.d.ts → wsb-file.d.ts} +4 -2
- package/dist/host/launch/wsb-file.js +56 -0
- package/dist/host/life/crash-report.d.ts +8 -0
- package/dist/host/life/crash-report.js +87 -0
- package/dist/host/life/index.d.ts +6 -0
- package/dist/host/life/index.js +6 -0
- package/dist/host/life/keep-awake.d.ts +10 -0
- package/dist/host/life/keep-awake.js +29 -0
- package/dist/host/life/life-record.d.ts +48 -0
- package/dist/host/life/life-record.js +76 -0
- package/dist/host/life/stop-events.d.ts +27 -0
- package/dist/host/life/stop-events.js +96 -0
- package/dist/host/life/stop-warning.d.ts +4 -0
- package/dist/host/life/stop-warning.js +25 -0
- package/dist/host/life/windows-update.d.ts +3 -0
- package/dist/host/life/windows-update.js +11 -0
- package/dist/host/native.d.ts +4 -0
- package/dist/host/native.js +11 -0
- package/dist/host/network/index.d.ts +1 -0
- package/dist/host/network/index.js +1 -0
- package/dist/host/{port-forward.d.ts → network/port-forward.d.ts} +1 -1
- package/dist/host/{port-forward.js → network/port-forward.js} +16 -10
- package/dist/host/profile/accounts.d.ts +37 -0
- package/dist/host/profile/accounts.js +146 -0
- package/dist/host/profile/claude-login.d.ts +22 -0
- package/dist/host/profile/claude-login.js +57 -0
- package/dist/host/{claude-profile.d.ts → profile/claude-profile.d.ts} +9 -9
- package/dist/host/{claude-profile.js → profile/claude-profile.js} +32 -22
- package/dist/host/profile/index.d.ts +7 -0
- package/dist/host/profile/index.js +7 -0
- package/dist/host/profile/personalize.d.ts +2 -0
- package/dist/host/profile/personalize.js +127 -0
- package/dist/host/profile/reg-file.d.ts +8 -0
- package/dist/host/profile/reg-file.js +45 -0
- package/dist/host/profile/secret-files.d.ts +2 -0
- package/dist/host/profile/secret-files.js +25 -0
- package/dist/host/profile/secret-patterns.d.ts +6 -0
- package/dist/host/profile/secret-patterns.js +128 -0
- package/dist/host/profile/secrets.d.ts +12 -0
- package/dist/host/profile/secrets.js +100 -0
- package/dist/host/projects/index.d.ts +4 -0
- package/dist/host/projects/index.js +4 -0
- package/dist/host/projects/join.d.ts +38 -0
- package/dist/host/projects/join.js +119 -0
- package/dist/host/projects/known.d.ts +28 -0
- package/dist/host/projects/known.js +55 -0
- package/dist/host/projects/mapper.d.ts +29 -0
- package/dist/host/projects/mapper.js +88 -0
- package/dist/host/projects/registry.d.ts +83 -0
- package/dist/host/projects/registry.js +136 -0
- package/dist/host/sandbox/doctor.d.ts +2 -0
- package/dist/host/sandbox/doctor.js +42 -0
- package/dist/host/sandbox/host-claude.d.ts +1 -0
- package/dist/host/sandbox/host-claude.js +26 -0
- package/dist/host/sandbox/index.d.ts +6 -0
- package/dist/host/sandbox/index.js +6 -0
- package/dist/host/{platform.d.ts → sandbox/platform.d.ts} +0 -5
- package/dist/host/sandbox/platform.js +60 -0
- package/dist/host/sandbox/probe.d.ts +3 -0
- package/dist/host/sandbox/probe.js +47 -0
- package/dist/host/{window.js → sandbox/window.js} +7 -5
- package/dist/host/{wsb.js → sandbox/wsb-cli.js} +31 -8
- package/dist/host/{cleanup.js → storage/cleanup.js} +27 -12
- package/dist/host/storage/index.d.ts +2 -0
- package/dist/host/storage/index.js +2 -0
- package/dist/host/storage/state-files.d.ts +4 -0
- package/dist/host/storage/state-files.js +10 -0
- package/dist/host/test-guard.js +1 -1
- package/dist/host/tools/conpty.d.ts +8 -0
- package/dist/host/tools/conpty.js +58 -0
- package/dist/host/tools/index.d.ts +2 -0
- package/dist/host/tools/index.js +2 -0
- package/dist/host/{terminal.d.ts → tools/windows-terminal.d.ts} +2 -10
- package/dist/host/{terminal.js → tools/windows-terminal.js} +33 -57
- package/dist/host/workspace-view/active-views.d.ts +3 -0
- package/dist/host/workspace-view/active-views.js +22 -0
- package/dist/host/workspace-view/index.d.ts +2 -18
- package/dist/host/workspace-view/index.js +2 -49
- package/dist/host/workspace-view/plan.d.ts +16 -0
- package/dist/host/workspace-view/plan.js +50 -0
- package/dist/host/workspace-view/rules.js +10 -3
- package/dist/host/workspace-view/view-state.d.ts +10 -0
- package/dist/host/workspace-view/view-state.js +31 -0
- package/dist/host/workspace-view/view.d.ts +1 -0
- package/dist/host/workspace-view/view.js +51 -55
- package/dist/runtime/daemon.js +4232 -1918
- package/dist/runtime/db.js +2145 -830
- package/dist/runtime/gitguard.js +29 -11
- package/dist/runtime/main.js +4760 -2155
- package/dist/runtime/netproxy.js +1654 -418
- package/dist/runtime/view.js +1515 -453
- package/dist/selftest/accounts.test.d.ts +1 -1
- package/dist/selftest/accounts.test.js +20 -17
- package/dist/selftest/agent-commands.test.d.ts +1 -1
- package/dist/selftest/agent-commands.test.js +9 -5
- package/dist/selftest/audit.test.d.ts +1 -1
- package/dist/selftest/audit.test.js +46 -13
- package/dist/selftest/channel.test.d.ts +1 -1
- package/dist/selftest/channel.test.js +91 -8
- package/dist/selftest/cli.test.d.ts +1 -1
- package/dist/selftest/cli.test.js +68 -16
- package/dist/selftest/cmdline.test.d.ts +1 -1
- package/dist/selftest/cmdline.test.js +36 -7
- package/dist/selftest/config.test.d.ts +1 -1
- package/dist/selftest/config.test.js +12 -5
- package/dist/selftest/data.test.d.ts +1 -1
- package/dist/selftest/data.test.js +35 -6
- package/dist/selftest/detect.test.d.ts +1 -1
- package/dist/selftest/detect.test.js +22 -9
- package/dist/selftest/generate.test.d.ts +1 -1
- package/dist/selftest/generate.test.js +33 -9
- package/dist/selftest/git-access.test.d.ts +1 -1
- package/dist/selftest/git-access.test.js +42 -4
- package/dist/selftest/guest-boot.test.d.ts +1 -1
- package/dist/selftest/guest-boot.test.js +25 -7
- package/dist/selftest/host-sim.test.d.ts +1 -1
- package/dist/selftest/host-sim.test.js +27 -3
- package/dist/selftest/hostile-input.test.d.ts +1 -1
- package/dist/selftest/hostile-input.test.js +5 -5
- package/dist/selftest/index.d.ts +1 -1
- package/dist/selftest/index.js +73 -16
- package/dist/selftest/layout.test.d.ts +2 -0
- package/dist/selftest/layout.test.js +131 -0
- package/dist/selftest/links.test.d.ts +1 -1
- package/dist/selftest/links.test.js +16 -11
- package/dist/selftest/live-daemon.test.d.ts +1 -1
- package/dist/selftest/live-daemon.test.js +20 -8
- package/dist/selftest/live-git.test.d.ts +1 -1
- package/dist/selftest/live-git.test.js +13 -4
- package/dist/selftest/live-network.test.d.ts +1 -1
- package/dist/selftest/live-network.test.js +24 -9
- package/dist/selftest/live-projects.test.d.ts +1 -1
- package/dist/selftest/live-projects.test.js +47 -20
- package/dist/selftest/live-terminal.test.d.ts +2 -0
- package/dist/selftest/live-terminal.test.js +195 -0
- package/dist/selftest/local-config.test.d.ts +1 -1
- package/dist/selftest/local-config.test.js +88 -15
- package/dist/selftest/mirror.test.d.ts +1 -1
- package/dist/selftest/mirror.test.js +118 -19
- package/dist/selftest/network.test.d.ts +1 -1
- package/dist/selftest/network.test.js +17 -8
- package/dist/selftest/personalization.test.d.ts +1 -1
- package/dist/selftest/personalization.test.js +12 -5
- package/dist/selftest/projects.test.d.ts +1 -1
- package/dist/selftest/projects.test.js +336 -72
- package/dist/selftest/repair.test.d.ts +1 -1
- package/dist/selftest/repair.test.js +17 -5
- package/dist/selftest/repo-guard.test.d.ts +1 -1
- package/dist/selftest/repo-guard.test.js +21 -20
- package/dist/selftest/secrets.test.d.ts +1 -1
- package/dist/selftest/secrets.test.js +57 -13
- package/dist/selftest/setup.test.d.ts +1 -1
- package/dist/selftest/setup.test.js +25 -5
- package/dist/selftest/{fixtures.d.ts → support/fixtures.d.ts} +7 -4
- package/dist/selftest/{fixtures.js → support/fixtures.js} +95 -17
- package/dist/selftest/{harness.js → support/harness.js} +24 -7
- package/dist/selftest/{live.d.ts → support/live.d.ts} +2 -2
- package/dist/selftest/{live.js → support/live.js} +34 -10
- package/dist/selftest/support/suite.js +1 -0
- package/dist/selftest/sync.test.d.ts +1 -1
- package/dist/selftest/sync.test.js +64 -26
- package/dist/selftest/test-guard.test.d.ts +1 -1
- package/dist/selftest/test-guard.test.js +43 -15
- package/dist/selftest/toolchains.test.d.ts +1 -1
- package/dist/selftest/toolchains.test.js +135 -36
- package/dist/selftest/workspace-view.test.d.ts +1 -1
- package/dist/selftest/workspace-view.test.js +48 -11
- package/dist/selftest/workspace.test.d.ts +1 -1
- package/dist/selftest/workspace.test.js +13 -4
- package/dist/shared/{apps.d.ts → apps/catalogue.d.ts} +1 -11
- package/dist/shared/apps/catalogue.js +768 -0
- package/dist/shared/apps/index.d.ts +2 -0
- package/dist/shared/apps/index.js +2 -0
- package/dist/shared/apps/selection.d.ts +11 -0
- package/dist/shared/apps/selection.js +40 -0
- package/dist/shared/channel/index.d.ts +2 -0
- package/dist/shared/channel/index.js +2 -0
- package/dist/shared/channel/run-dir.d.ts +30 -0
- package/dist/shared/channel/run-dir.js +84 -0
- package/dist/shared/{schema.d.ts → channel/schema.d.ts} +60 -19
- package/dist/shared/channel/schema.js +131 -0
- package/dist/shared/download/archive.d.ts +13 -0
- package/dist/shared/download/archive.js +57 -0
- package/dist/shared/download/downloader.d.ts +35 -0
- package/dist/shared/download/downloader.js +110 -0
- package/dist/shared/download/github.d.ts +16 -0
- package/dist/shared/download/github.js +74 -0
- package/dist/shared/download/http.d.ts +5 -0
- package/dist/shared/download/http.js +30 -0
- package/dist/shared/download/index.d.ts +5 -0
- package/dist/shared/download/index.js +5 -0
- package/dist/shared/download/spawn.d.ts +2 -0
- package/dist/shared/download/spawn.js +7 -0
- package/dist/shared/io/index.d.ts +3 -0
- package/dist/shared/io/index.js +3 -0
- package/dist/shared/io/json-file.d.ts +10 -0
- package/dist/shared/io/json-file.js +21 -0
- package/dist/shared/io/json.d.ts +13 -0
- package/dist/shared/io/json.js +49 -0
- package/dist/shared/{safe-remove.js → io/safe-remove.js} +32 -7
- package/dist/shared/{netrules.js → network/firewall-rules.js} +36 -5
- package/dist/shared/network/index.d.ts +2 -0
- package/dist/shared/network/index.js +2 -0
- package/dist/shared/{netpolicy.js → network/policy.js} +66 -11
- package/dist/shared/{paths.js → paths/claude-paths.js} +12 -2
- package/dist/shared/{guest-paths.d.ts → paths/guest-paths.d.ts} +21 -0
- package/dist/shared/paths/guest-paths.js +146 -0
- package/dist/shared/paths/index.d.ts +3 -0
- package/dist/shared/paths/index.js +3 -0
- package/dist/shared/{projects.d.ts → paths/projects.d.ts} +27 -4
- package/dist/shared/paths/projects.js +136 -0
- package/dist/shared/pty/client.d.ts +21 -0
- package/dist/shared/pty/client.js +79 -0
- package/dist/shared/pty/console-input.d.ts +11 -0
- package/dist/shared/pty/console-input.js +81 -0
- package/dist/shared/pty/index.d.ts +6 -0
- package/dist/shared/pty/index.js +6 -0
- package/dist/shared/pty/input-joiner.d.ts +15 -0
- package/dist/shared/pty/input-joiner.js +44 -0
- package/dist/shared/pty/output-filter.d.ts +13 -0
- package/dist/shared/pty/output-filter.js +140 -0
- package/dist/shared/pty/protocol.d.ts +36 -0
- package/dist/shared/pty/protocol.js +60 -0
- package/dist/shared/pty/terminal.d.ts +24 -0
- package/dist/shared/pty/terminal.js +147 -0
- package/dist/shared/test-guard.js +3 -1
- package/dist/sync/claude-mem.d.ts +1 -1
- package/dist/sync/claude-mem.js +9 -4
- package/dist/sync/history.d.ts +1 -29
- package/dist/sync/history.js +57 -45
- package/dist/sync/index.d.ts +5 -0
- package/dist/sync/index.js +5 -0
- package/dist/sync/sync-cycle.d.ts +18 -0
- package/dist/sync/sync-cycle.js +85 -0
- package/dist/sync/sync-state.d.ts +32 -0
- package/dist/sync/sync-state.js +37 -0
- package/dist/sync/watcher.d.ts +0 -18
- package/dist/sync/watcher.js +66 -100
- package/native/keep-awake.ps1 +8 -0
- package/native/power.cs +23 -0
- package/native/stop-events.ps1 +38 -0
- package/package.json +11 -3
- package/sandbox/linkgate.cs +98 -0
- package/sandbox/memlog.ps1 +15 -6
- package/sandbox/ptyhost.cs +60 -3
- package/schemas/config.schema.json +48 -1
- package/schemas/sandbox-config.schema.json +37 -3
- package/dist/cli/commands/launch.d.ts +0 -29
- package/dist/cli/commands/launch.js +0 -366
- package/dist/cli/commands/maintenance.d.ts +0 -10
- package/dist/cli/commands/maintenance.js +0 -187
- package/dist/cli/commands/project.d.ts +0 -29
- package/dist/cli/commands/project.js +0 -63
- package/dist/cli/commands/projects.d.ts +0 -14
- package/dist/cli/commands/projects.js +0 -146
- package/dist/cli/commands/restart.d.ts +0 -6
- package/dist/cli/commands/restart.js +0 -85
- package/dist/cli/commands/sessions.d.ts +0 -12
- package/dist/cli/commands/sessions.js +0 -257
- package/dist/cli/menu/settings/editors.js +0 -305
- package/dist/cli/progress.d.ts +0 -9
- package/dist/cli/progress.js +0 -49
- package/dist/cli/tui/dialogs.d.ts +0 -57
- package/dist/cli/tui/dialogs.js +0 -162
- package/dist/core/config.js +0 -109
- package/dist/core/schema.d.ts +0 -6
- package/dist/core/schema.js +0 -8
- package/dist/core/util.d.ts +0 -62
- package/dist/core/util.js +0 -156
- package/dist/core/workspace.d.ts +0 -18
- package/dist/core/workspace.js +0 -145
- package/dist/guest/boot-env.d.ts +0 -4
- package/dist/guest/daemon.js +0 -57
- package/dist/guest/env.d.ts +0 -52
- package/dist/guest/env.js +0 -103
- package/dist/guest/gitrules.js +0 -11
- package/dist/guest/project-status.d.ts +0 -5
- package/dist/guest/project-status.js +0 -17
- package/dist/guest/setup/user.js +0 -51
- package/dist/guest/toolchains/cli.d.ts +0 -10
- package/dist/guest/toolchains/common.d.ts +0 -54
- package/dist/guest/toolchains/common.js +0 -147
- package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
- package/dist/guest/toolchains/databases/dynamodb.js +0 -52
- package/dist/guest/toolchains/databases/index.d.ts +0 -6
- package/dist/guest/toolchains/databases/index.js +0 -62
- package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
- package/dist/guest/toolchains/databases/mongodb.js +0 -31
- package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
- package/dist/guest/toolchains/databases/mysql.js +0 -38
- package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
- package/dist/guest/toolchains/databases/postgres.js +0 -38
- package/dist/guest/toolchains/databases/redis.d.ts +0 -3
- package/dist/guest/toolchains/databases/redis.js +0 -16
- package/dist/guest/toolchains/git.d.ts +0 -3
- package/dist/guest/toolchains/go.d.ts +0 -3
- package/dist/guest/toolchains/java.d.ts +0 -8
- package/dist/guest/toolchains/node.d.ts +0 -3
- package/dist/guest/toolchains/pwsh.d.ts +0 -4
- package/dist/guest/toolchains/python.d.ts +0 -3
- package/dist/guest/toolchains/scripting/php.d.ts +0 -3
- package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
- package/dist/host/accounts.d.ts +0 -32
- package/dist/host/accounts.js +0 -128
- package/dist/host/agent-commands.d.ts +0 -25
- package/dist/host/agent-commands.js +0 -145
- package/dist/host/channel.d.ts +0 -38
- package/dist/host/channel.js +0 -162
- package/dist/host/generate.d.ts +0 -13
- package/dist/host/generate.js +0 -108
- package/dist/host/join.d.ts +0 -28
- package/dist/host/join.js +0 -76
- package/dist/host/launch/projects.d.ts +0 -15
- package/dist/host/launch/wsb.js +0 -34
- package/dist/host/motw.d.ts +0 -17
- package/dist/host/motw.js +0 -74
- package/dist/host/pc-scan.d.ts +0 -6
- package/dist/host/personalize.d.ts +0 -10
- package/dist/host/personalize.js +0 -97
- package/dist/host/platform.js +0 -129
- package/dist/host/project-scan.d.ts +0 -7
- package/dist/host/projects.d.ts +0 -100
- package/dist/host/projects.js +0 -147
- package/dist/host/repo-guard.d.ts +0 -43
- package/dist/host/repo-guard.js +0 -347
- package/dist/host/secrets.d.ts +0 -14
- package/dist/host/secrets.js +0 -133
- package/dist/host/stops.d.ts +0 -67
- package/dist/host/stops.js +0 -126
- package/dist/shared/apps.js +0 -114
- package/dist/shared/download.d.ts +0 -60
- package/dist/shared/download.js +0 -215
- package/dist/shared/guest-paths.js +0 -61
- package/dist/shared/projects.js +0 -67
- package/dist/shared/pty-client.d.ts +0 -91
- package/dist/shared/pty-client.js +0 -349
- package/dist/shared/rundir.d.ts +0 -41
- package/dist/shared/rundir.js +0 -96
- package/dist/shared/schema.js +0 -92
- /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
- /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
- /package/dist/core/{detect-databases.d.ts → detect/databases.d.ts} +0 -0
- /package/dist/{guest/toolchains → core/detect}/versions.d.ts +0 -0
- /package/dist/guest/{setup/agents.d.ts → agents/agent-installer.d.ts} +0 -0
- /package/dist/guest/{audit-parse.d.ts → audit/parse.d.ts} +0 -0
- /package/dist/guest/{guide.d.ts → boot/guide.d.ts} +0 -0
- /package/dist/guest/daemon/{shutdown.d.ts → idle-shutdown.d.ts} +0 -0
- /package/dist/guest/daemon/{session.d.ts → sessions.d.ts} +0 -0
- /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
- /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
- /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
- /package/dist/guest/{gitguard.d.ts → git/decision.d.ts} +0 -0
- /package/dist/guest/{ports.d.ts → runtime/ports.d.ts} +0 -0
- /package/dist/guest/{project-context.d.ts → runtime/project-context.d.ts} +0 -0
- /package/dist/guest/{cmdline.d.ts → sessions/cmdline.d.ts} +0 -0
- /package/dist/guest/{ptyhost.d.ts → sessions/pty-host.d.ts} +0 -0
- /package/dist/guest/{view.d.ts → sessions/viewer.d.ts} +0 -0
- /package/dist/guest/setup/{policy.d.ts → managed-policy.d.ts} +0 -0
- /package/dist/host/{window.d.ts → sandbox/window.d.ts} +0 -0
- /package/dist/host/{wsb.d.ts → sandbox/wsb-cli.d.ts} +0 -0
- /package/dist/host/{cleanup.d.ts → storage/cleanup.d.ts} +0 -0
- /package/dist/selftest/{harness.d.ts → support/harness.d.ts} +0 -0
- /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
- /package/dist/shared/{safe-remove.d.ts → io/safe-remove.d.ts} +0 -0
- /package/dist/shared/{netrules.d.ts → network/firewall-rules.d.ts} +0 -0
- /package/dist/shared/{netpolicy.d.ts → network/policy.d.ts} +0 -0
- /package/dist/shared/{paths.d.ts → paths/claude-paths.d.ts} +0 -0
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
// published Windows build in seconds; only crates without one are compiled with `cargo install --locked`.
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
5
|
+
import { execAsync } from '../../runtime/process.js';
|
|
6
|
+
import { exists } from '../../runtime/fs.js';
|
|
7
|
+
import { log, warn } from '../../runtime/log.js';
|
|
8
|
+
import { errMsg } from '../../../core/util/errors.js';
|
|
6
9
|
import { binstallAsset } from '../catalogue.js';
|
|
7
|
-
import { arch,
|
|
10
|
+
import { arch, tool } from '../tool-env.js';
|
|
11
|
+
import { installFromGithub } from '../install.js';
|
|
8
12
|
/**
|
|
9
13
|
* cargo-binstall.exe into CARGO_HOME\bin (so `cargo binstall` works for the agent too). Downloaded into its own
|
|
10
|
-
* tools\cargo-binstall folder first:
|
|
14
|
+
* tools\cargo-binstall folder first: downloader.archive replaces its destination, which must never be cargo's bin.
|
|
11
15
|
*/
|
|
12
16
|
const ensureBinstall = async (cargoBin) => {
|
|
13
17
|
const target = path.join(cargoBin, 'cargo-binstall.exe');
|
|
@@ -16,7 +20,11 @@ const ensureBinstall = async (cargoBin) => {
|
|
|
16
20
|
try {
|
|
17
21
|
const dir = tool('cargo-binstall');
|
|
18
22
|
if (!exists(path.join(dir, 'cargo-binstall.exe'))) {
|
|
19
|
-
await installFromGithub('cargo-bins/cargo-binstall', binstallAsset(arch), {
|
|
23
|
+
await installFromGithub('cargo-bins/cargo-binstall', binstallAsset(arch), {
|
|
24
|
+
dest: dir,
|
|
25
|
+
what: 'cargo-binstall for prebuilt Rust tools (~10 MB once)',
|
|
26
|
+
locate: 'cargo-binstall.exe',
|
|
27
|
+
});
|
|
20
28
|
}
|
|
21
29
|
fs.copyFileSync(path.join(dir, 'cargo-binstall.exe'), target);
|
|
22
30
|
return true;
|
|
@@ -29,13 +37,17 @@ const ensureBinstall = async (cargoBin) => {
|
|
|
29
37
|
/**
|
|
30
38
|
* Returns the installer for one crate: `cargo binstall` (prebuilt only: its own compile fallback is off, so a crate
|
|
31
39
|
* without a Windows build is compiled by our `cargo install` with the linker settings in `cargoEnv`), then
|
|
32
|
-
* `cargo install --locked`. cargo-binstall is fetched on first use, so boots with every crate installed download
|
|
40
|
+
* `cargo install --locked`. cargo-binstall is fetched on first use, so boots with every crate installed download
|
|
41
|
+
* nothing.
|
|
33
42
|
*/
|
|
34
|
-
export
|
|
43
|
+
export function crateInstaller(cargoHome, cargoEnv) {
|
|
35
44
|
const cargo = path.join(cargoHome, 'bin', 'cargo.exe');
|
|
36
45
|
let binstall = null;
|
|
37
46
|
// quick-install's install statistics are opt-out; the sandbox opts out.
|
|
38
|
-
const binstallEnv = {
|
|
47
|
+
const binstallEnv = {
|
|
48
|
+
...cargoEnv,
|
|
49
|
+
env: { ...(cargoEnv.env ?? process.env), BINSTALL_DISABLE_TELEMETRY: 'true' },
|
|
50
|
+
};
|
|
39
51
|
return async (crate) => {
|
|
40
52
|
binstall ??= ensureBinstall(path.join(cargoHome, 'bin'));
|
|
41
53
|
if (await binstall) {
|
|
@@ -49,4 +61,4 @@ export const crateInstaller = (cargoHome, cargoEnv) => {
|
|
|
49
61
|
}
|
|
50
62
|
await execAsync(cargo, ['install', '--locked', crate], cargoEnv);
|
|
51
63
|
};
|
|
52
|
-
}
|
|
64
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
-
import { type ToolEnv } from '../
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
3
|
/** MinGW-w64 GCC from WinLibs: gcc/g++/mingw32-make for the agent, and the linker for Rust's GNU host. */
|
|
4
|
-
export declare
|
|
4
|
+
export declare function setupCpp(env: ToolEnv, config: Toolchains['cpp']): Promise<void>;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
// C/C++: MinGW-w64 GCC (with CMake, Ninja, make) and the flex/bison parser generators.
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { dryRun
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
4
|
+
import { exists } from '../../runtime/fs.js';
|
|
5
|
+
import { log, warn } from '../../runtime/log.js';
|
|
6
|
+
import { arch, tool, versionOf } from '../tool-env.js';
|
|
7
|
+
import { installFromGithub } from '../install.js';
|
|
8
|
+
import { CMAKE_FLOOR, cmakeTooOld } from '../../../core/detect/versions.js';
|
|
6
9
|
/** MinGW-w64 GCC from WinLibs: gcc/g++/mingw32-make for the agent, and the linker for Rust's GNU host. */
|
|
7
|
-
export
|
|
10
|
+
export async function setupCpp(env, config) {
|
|
8
11
|
const bin = tool('mingw', 'mingw64', 'bin');
|
|
9
12
|
const gcc = path.join(bin, 'gcc.exe');
|
|
10
13
|
if (dryRun) {
|
|
@@ -13,7 +16,11 @@ export const setupCpp = async (env, config) => {
|
|
|
13
16
|
}
|
|
14
17
|
if (!exists(gcc)) {
|
|
15
18
|
const pattern = arch === 'arm64' ? /^winlibs-aarch64-.*\.zip$/ : /^winlibs-x86_64-posix-seh-gcc-.*\.zip$/;
|
|
16
|
-
await installFromGithub('brechtsanders/winlibs_mingw', pattern, {
|
|
19
|
+
await installFromGithub('brechtsanders/winlibs_mingw', pattern, {
|
|
20
|
+
dest: tool('mingw'),
|
|
21
|
+
what: 'the C/C++ compiler, MinGW-w64 GCC with CMake and Ninja (~270 MB once)',
|
|
22
|
+
searchOlder: true,
|
|
23
|
+
});
|
|
17
24
|
}
|
|
18
25
|
if (!exists(gcc))
|
|
19
26
|
throw new Error('gcc.exe missing after installing MinGW');
|
|
@@ -22,16 +29,24 @@ export const setupCpp = async (env, config) => {
|
|
|
22
29
|
env.vars.CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER = gcc;
|
|
23
30
|
const cmake = versionOf(path.join(bin, 'cmake.exe'));
|
|
24
31
|
if (cmakeTooOld(cmake))
|
|
25
|
-
warn('The bundled CMake ' +
|
|
32
|
+
warn('The bundled CMake ' +
|
|
33
|
+
cmake +
|
|
34
|
+
' is older than ' +
|
|
35
|
+
CMAKE_FLOOR +
|
|
36
|
+
', which many projects need; set toolchains.cpp.enabled to refresh it, or install a newer CMake into C:\\AgentData\\tools\\bin.');
|
|
26
37
|
env.summary.push('gcc: ' + versionOf(gcc) + ' (MinGW-w64, with cmake ' + cmake + ', ninja, premake5)');
|
|
27
38
|
if (config.flexBison)
|
|
28
39
|
await setupFlexBison(env);
|
|
29
|
-
}
|
|
40
|
+
}
|
|
30
41
|
/** win_flex / win_bison (CMake's FindFLEX/FindBISON look for these names). Kept with the C/C++ tools on PATH. */
|
|
31
42
|
const setupFlexBison = async (env) => {
|
|
32
43
|
const dir = tool('winflexbison');
|
|
33
44
|
if (!exists(path.join(dir, 'win_bison.exe'))) {
|
|
34
|
-
await installFromGithub('lexxmark/winflexbison', /^win_flex_bison-[\d.]+\.zip$/, {
|
|
45
|
+
await installFromGithub('lexxmark/winflexbison', /^win_flex_bison-[\d.]+\.zip$/, {
|
|
46
|
+
dest: dir,
|
|
47
|
+
what: 'win_flex / win_bison (~1 MB once)',
|
|
48
|
+
locate: 'win_bison.exe',
|
|
49
|
+
});
|
|
35
50
|
}
|
|
36
51
|
env.append.push(dir);
|
|
37
52
|
env.summary.push('win_flex/win_bison: ' + versionOf(path.join(dir, 'win_bison.exe')));
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
-
import { type ToolEnv } from '../
|
|
3
|
-
/**
|
|
4
|
-
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
|
+
/**
|
|
4
|
+
* .NET SDK channels from config plus whatever the workspace's global.json pins. Installs are remembered in a marker.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setupDotnet(env: ToolEnv, config: Toolchains['dotnet'], refresh: boolean): Promise<void>;
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
// .NET: the SDK (dotnet-install.ps1), .NET Framework reference assemblies for old-style projects, and .NET Framework
|
|
1
|
+
// .NET: the SDK (dotnet-install.ps1), .NET Framework reference assemblies for old-style projects, and .NET Framework
|
|
2
|
+
// 3.5.
|
|
2
3
|
import fs from 'node:fs';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import { z } from 'zod';
|
|
5
|
-
import {
|
|
6
|
-
import { readJsonFile, writeJsonAtomic } from '../../../shared/
|
|
7
|
-
import { safeRemove } from '../../../shared/safe-remove.js';
|
|
6
|
+
import { downloader, fetchJson } from '../../../shared/download/index.js';
|
|
7
|
+
import { readJsonFile, writeJsonAtomic } from '../../../shared/io/json.js';
|
|
8
|
+
import { safeRemove } from '../../../shared/io/safe-remove.js';
|
|
8
9
|
import { SYSTEM } from '../../../shared/system.js';
|
|
9
|
-
import { dataDir, dryRun
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { dataDir, dryRun } from '../../runtime/paths.js';
|
|
11
|
+
import { execAsync, execOutput } from '../../runtime/process.js';
|
|
12
|
+
import { exists, mkdirp } from '../../runtime/fs.js';
|
|
13
|
+
import { log, warn } from '../../runtime/log.js';
|
|
14
|
+
import { errMsg } from '../../../core/util/errors.js';
|
|
15
|
+
import { projectWorkspace } from '../../runtime/project-context.js';
|
|
16
|
+
import { downloadFile } from '../install.js';
|
|
17
|
+
import { installOnce } from '../package-ledger.js';
|
|
18
|
+
import { tool } from '../tool-env.js';
|
|
12
19
|
/** tools\dotnet\.agent-sandbox-installed.json: which install keys (channel:8.0, global.json:...) already ran. */
|
|
13
|
-
const
|
|
14
|
-
/**
|
|
15
|
-
|
|
20
|
+
const DotnetMarkerSchema = z.record(z.string(), z.boolean());
|
|
21
|
+
/**
|
|
22
|
+
* .NET SDK channels from config plus whatever the workspace's global.json pins. Installs are remembered in a marker.
|
|
23
|
+
*/
|
|
24
|
+
export async function setupDotnet(env, config, refresh) {
|
|
16
25
|
const root = tool('dotnet');
|
|
17
26
|
const marker = path.join(root, '.agent-sandbox-installed.json');
|
|
18
27
|
const script = tool('dotnet-install.ps1');
|
|
@@ -21,25 +30,54 @@ export const setupDotnet = async (env, config, refresh) => {
|
|
|
21
30
|
return;
|
|
22
31
|
}
|
|
23
32
|
// A corrupt or hand-edited marker just means "nothing recorded yet" (the installs are idempotent).
|
|
24
|
-
const recorded =
|
|
33
|
+
const recorded = DotnetMarkerSchema.safeParse(exists(marker) && !refresh ? readJsonFile(marker) : {});
|
|
25
34
|
const done = recorded.success ? recorded.data : {};
|
|
26
35
|
const globalJson = path.join(projectWorkspace(), 'global.json');
|
|
27
36
|
const installs = [
|
|
28
37
|
...config.channels.map((c) => ['channel:' + c, ['-Channel', c]]),
|
|
29
|
-
...(exists(globalJson)
|
|
38
|
+
...(exists(globalJson)
|
|
39
|
+
? [
|
|
40
|
+
['global.json:' + fs.readFileSync(globalJson, 'utf8').replace(/\s+/g, ''), ['-JSonFile', globalJson]],
|
|
41
|
+
]
|
|
42
|
+
: []),
|
|
30
43
|
];
|
|
31
44
|
for (const [key, args] of installs.filter(([k]) => !done[k])) {
|
|
32
45
|
// Fetched every time something is installed (it is small): an interrupted earlier download must not be run.
|
|
33
46
|
await downloadFile('https://dot.net/v1/dotnet-install.ps1', script);
|
|
34
|
-
log('Installing the .NET SDK ' +
|
|
35
|
-
|
|
47
|
+
log('Installing the .NET SDK ' +
|
|
48
|
+
(key.startsWith('channel:') ? key.slice(8) : 'pinned in global.json') +
|
|
49
|
+
' (~250 MB once) ...');
|
|
50
|
+
await execAsync(SYSTEM.powershell(), [
|
|
51
|
+
'-NoLogo',
|
|
52
|
+
'-NoProfile',
|
|
53
|
+
'-ExecutionPolicy',
|
|
54
|
+
'Bypass',
|
|
55
|
+
'-File',
|
|
56
|
+
script,
|
|
57
|
+
...args,
|
|
58
|
+
'-InstallDir',
|
|
59
|
+
root,
|
|
60
|
+
'-NoPath',
|
|
61
|
+
]);
|
|
36
62
|
done[key] = true;
|
|
37
63
|
writeJsonAtomic(marker, done);
|
|
38
64
|
}
|
|
39
65
|
const home = mkdirp(tool('dotnet-home'));
|
|
40
|
-
Object.assign(env.vars, {
|
|
66
|
+
Object.assign(env.vars, {
|
|
67
|
+
DOTNET_ROOT: root,
|
|
68
|
+
DOTNET_CLI_HOME: home,
|
|
69
|
+
DOTNET_CLI_TELEMETRY_OPTOUT: '1',
|
|
70
|
+
DOTNET_NOLOGO: '1',
|
|
71
|
+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: '1',
|
|
72
|
+
NUGET_PACKAGES: tool('nuget', 'packages'),
|
|
73
|
+
});
|
|
41
74
|
env.prepend.push(root, path.join(home, '.dotnet', 'tools'));
|
|
42
|
-
env.summary.push('dotnet: ' +
|
|
75
|
+
env.summary.push('dotnet: ' +
|
|
76
|
+
execOutput(path.join(root, 'dotnet.exe'), ['--list-sdks'])
|
|
77
|
+
.split(/\r?\n/)
|
|
78
|
+
.map((l) => l.split(' ')[0])
|
|
79
|
+
.filter(Boolean)
|
|
80
|
+
.join(', '));
|
|
43
81
|
const dotnet = path.join(root, 'dotnet.exe');
|
|
44
82
|
const dotnetEnv = { env: { ...process.env, ...env.vars, PATH: root + path.delimiter + (process.env.PATH ?? '') } };
|
|
45
83
|
await installOnce(env, 'dotnet workload', config.workloads, (w) => execAsync(dotnet, ['workload', 'install', w, '--skip-manifest-update'], dotnetEnv));
|
|
@@ -47,11 +85,11 @@ export const setupDotnet = async (env, config, refresh) => {
|
|
|
47
85
|
await setupFrameworkReferences(env, config.frameworkTargets);
|
|
48
86
|
if (config.netfx35)
|
|
49
87
|
await setupNetFx35(env);
|
|
50
|
-
}
|
|
88
|
+
}
|
|
51
89
|
/**
|
|
52
|
-
* .NET Framework reference assemblies (the "targeting packs" Visual Studio would install) from NuGet, so net4x
|
|
53
|
-
* old-style .csproj included, build with the SDK's MSBuild. MSBuild reads TargetFrameworkRootPath from the
|
|
54
|
-
* Running .NET Framework 4.8 apps needs nothing: Windows ships it.
|
|
90
|
+
* .NET Framework reference assemblies (the "targeting packs" Visual Studio would install) from NuGet, so net4x
|
|
91
|
+
* projects, old-style .csproj included, build with the SDK's MSBuild. MSBuild reads TargetFrameworkRootPath from the
|
|
92
|
+
* environment. Running .NET Framework 4.8 apps needs nothing: Windows ships it.
|
|
55
93
|
*/
|
|
56
94
|
const setupFrameworkReferences = async (env, targets) => {
|
|
57
95
|
if (!targets.length)
|
|
@@ -69,12 +107,15 @@ const setupFrameworkReferences = async (env, targets) => {
|
|
|
69
107
|
if (!version)
|
|
70
108
|
throw new Error('no stable version of ' + id);
|
|
71
109
|
log('Downloading the .NET Framework ' + target + ' reference assemblies (~30 MB once) ...');
|
|
72
|
-
await
|
|
110
|
+
await downloader.archive('https://api.nuget.org/v3-flatcontainer/' + id + '/' + version + '/' + id + '.' + version + '.nupkg', staging, { fileName: id + '.zip' });
|
|
73
111
|
fs.cpSync(path.join(staging, 'build', '.NETFramework'), path.join(root, '.NETFramework'), { recursive: true });
|
|
74
112
|
fs.writeFileSync(marker, version);
|
|
75
113
|
}
|
|
76
114
|
catch (e) {
|
|
77
|
-
warn('.NET Framework ' +
|
|
115
|
+
warn('.NET Framework ' +
|
|
116
|
+
target +
|
|
117
|
+
' reference assemblies could not be installed (projects targeting it will not build): ' +
|
|
118
|
+
errMsg(e));
|
|
78
119
|
}
|
|
79
120
|
finally {
|
|
80
121
|
safeRemove(staging, dataDir);
|
|
@@ -85,9 +126,16 @@ const setupFrameworkReferences = async (env, targets) => {
|
|
|
85
126
|
env.vars.TargetFrameworkRootPath = root + path.sep;
|
|
86
127
|
env.summary.push('.NET Framework targeting: ' + fs.readdirSync(path.join(root, '.NETFramework')).join(', '));
|
|
87
128
|
};
|
|
88
|
-
/**
|
|
129
|
+
/**
|
|
130
|
+
* .NET Framework 3.5 is a Windows feature the sandbox image lacks; DISM fetches it from Windows Update on every boot.
|
|
131
|
+
*/
|
|
89
132
|
const setupNetFx35 = async (env) => {
|
|
90
|
-
if (execOutput(SYSTEM.reg(), [
|
|
133
|
+
if (execOutput(SYSTEM.reg(), [
|
|
134
|
+
'query',
|
|
135
|
+
'HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5',
|
|
136
|
+
'/v',
|
|
137
|
+
'Install',
|
|
138
|
+
]).includes('0x1')) {
|
|
91
139
|
env.summary.push('.NET Framework 3.5: on');
|
|
92
140
|
return;
|
|
93
141
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
-
import { type ToolEnv } from '../
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
3
|
/**
|
|
4
4
|
* Mesa 3D for Windows (llvmpipe): OpenGL 4.5 on the CPU when the sandbox has no GPU. Windows only offers OpenGL 1.1 in
|
|
5
5
|
* software, and opengl32.dll cannot be replaced system-wide, so programs pick Mesa up from their own folder.
|
|
6
6
|
*/
|
|
7
|
-
export declare
|
|
7
|
+
export declare function setupMesa(env: ToolEnv, config: Toolchains['mesa']): Promise<void>;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
// Mesa for running OpenGL and Vulkan programs without a GPU (llvmpipe, lavapipe).
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { downloader } from '../../../shared/download/index.js';
|
|
4
4
|
import { SYSTEM } from '../../../shared/system.js';
|
|
5
|
-
import { dryRun
|
|
6
|
-
import {
|
|
5
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
6
|
+
import { execAsync, execOutput } from '../../runtime/process.js';
|
|
7
|
+
import { exists } from '../../runtime/fs.js';
|
|
8
|
+
import { log } from '../../runtime/log.js';
|
|
9
|
+
import { arch, tool } from '../tool-env.js';
|
|
10
|
+
import { installFromGithub } from '../install.js';
|
|
7
11
|
/**
|
|
8
12
|
* Mesa 3D for Windows (llvmpipe): OpenGL 4.5 on the CPU when the sandbox has no GPU. Windows only offers OpenGL 1.1 in
|
|
9
13
|
* software, and opengl32.dll cannot be replaced system-wide, so programs pick Mesa up from their own folder.
|
|
10
14
|
*/
|
|
11
|
-
export
|
|
15
|
+
export async function setupMesa(env, config) {
|
|
12
16
|
if (dryRun) {
|
|
13
17
|
log('(dry run) would provision Mesa 3D');
|
|
14
18
|
return;
|
|
@@ -16,13 +20,18 @@ export const setupMesa = async (env, config) => {
|
|
|
16
20
|
const root = tool('mesa');
|
|
17
21
|
const dir = path.join(root, arch === 'arm64' ? 'arm64' : 'x64');
|
|
18
22
|
if (!exists(path.join(dir, 'opengl32.dll'))) {
|
|
19
|
-
await installFromGithub('pal1000/mesa-dist-win', /^mesa3d-[\d.]+-release-msvc\.7z$/, {
|
|
23
|
+
await installFromGithub('pal1000/mesa-dist-win', /^mesa3d-[\d.]+-release-msvc\.7z$/, {
|
|
24
|
+
dest: root,
|
|
25
|
+
what: 'Mesa 3D for software OpenGL (~100 MB once)',
|
|
26
|
+
locate: 'opengl32.dll',
|
|
27
|
+
up: 1,
|
|
28
|
+
});
|
|
20
29
|
}
|
|
21
30
|
Object.assign(env.vars, { MESA_DIR: dir, GALLIUM_DRIVER: 'llvmpipe' });
|
|
22
|
-
env.summary.push(
|
|
31
|
+
env.summary.push("mesa (software OpenGL 4.5): copy opengl32.dll + libgallium_wgl.dll from %MESA_DIR% next to a game's .exe");
|
|
23
32
|
if (config.vulkan)
|
|
24
33
|
await setupLavapipe(env, dir);
|
|
25
|
-
}
|
|
34
|
+
}
|
|
26
35
|
const VULKAN_RUNTIME = 'https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-runtime-components.zip';
|
|
27
36
|
/**
|
|
28
37
|
* Software Vulkan: Mesa's lavapipe plus the Khronos loader (vulkan-1.dll, from LunarG's runtime components; Windows
|
|
@@ -38,7 +47,11 @@ const setupLavapipe = async (env, mesaDir) => {
|
|
|
38
47
|
log('Downloading the Vulkan loader (~10 MB once) ...');
|
|
39
48
|
// LunarG publishes no checksum for this zip; it comes over HTTPS from LunarG, the Khronos SDK's maintainer.
|
|
40
49
|
// The zip has x86 and x64 folders: only the 64-bit loader (and vulkaninfo) is extracted.
|
|
41
|
-
await
|
|
50
|
+
await downloader.archive(VULKAN_RUNTIME, dir, {
|
|
51
|
+
locate: 'vulkan-1.dll',
|
|
52
|
+
fileName: 'vulkan-runtime.zip',
|
|
53
|
+
members: ['*/x64/*'],
|
|
54
|
+
});
|
|
42
55
|
}
|
|
43
56
|
const register = (file) => execAsync(SYSTEM.reg(), ['add', 'HKLM\\SOFTWARE\\Khronos\\Vulkan\\Drivers', '/v', file, '/t', 'REG_DWORD', '/d', '0', '/f'], { stdio: 'ignore' });
|
|
44
57
|
await register(icd);
|
|
@@ -49,8 +62,12 @@ const setupLavapipe = async (env, mesaDir) => {
|
|
|
49
62
|
if (gpu && exists(dozen))
|
|
50
63
|
await register(dozen);
|
|
51
64
|
env.prepend.push(dir);
|
|
52
|
-
env.summary.push('vulkan: ' +
|
|
65
|
+
env.summary.push('vulkan: ' +
|
|
66
|
+
(gpu && exists(dozen) ? 'Dozen (Vulkan on the GPU via Direct3D 12) and ' : '') +
|
|
67
|
+
'lavapipe (software Vulkan 1.4 on the CPU), vulkaninfo on PATH; WGPU_BACKEND=vulkan for wgpu');
|
|
53
68
|
};
|
|
54
69
|
/** A real display adapter (sandbox.vGpu on), not only the remote display or basic render driver. */
|
|
55
70
|
const hasGpu = () => execOutput(SYSTEM.powershell(), ['-NoProfile', '-NonInteractive', '-Command', '(Get-CimInstance Win32_VideoController).Name'], { timeout: 30000 })
|
|
56
|
-
.split(/\r?\n/)
|
|
71
|
+
.split(/\r?\n/)
|
|
72
|
+
.map((n) => n.trim())
|
|
73
|
+
.some((n) => n && !/^Microsoft (Remote Display|Basic (Render|Display))/i.test(n));
|
|
@@ -3,14 +3,14 @@ export interface VcEnv {
|
|
|
3
3
|
path: string[];
|
|
4
4
|
}
|
|
5
5
|
/** Variables vcvars64.bat would set for this tree (host x64, target x64). */
|
|
6
|
-
export declare
|
|
6
|
+
export declare function vcvars(root: string, msvc: string, sdk: string): VcEnv;
|
|
7
7
|
/** vcvars64.bat / vcvarsall.bat in the usual place, for scripts that `call` them. */
|
|
8
|
-
export declare
|
|
8
|
+
export declare function writeVcvars(env: VcEnv): void;
|
|
9
9
|
/** vswhere.exe where Visual Studio's installer would put it, answering with this tree. */
|
|
10
|
-
export declare
|
|
10
|
+
export declare function installVswhere(msvc: string): void;
|
|
11
11
|
/**
|
|
12
12
|
* cl.exe and link.exe start vctip.exe (Visual Studio's telemetry uploader), which lingers after the build and keeps the
|
|
13
13
|
* folder locked, so `sandbox repair` / `data clean` could not delete tools\msvc. Neither VSCMD_SKIP_SENDTELEMETRY nor
|
|
14
14
|
* the TurnOffSwitch registry value stops it; without the file the compiler simply skips it. Nothing else needs it.
|
|
15
15
|
*/
|
|
16
|
-
export declare
|
|
16
|
+
export declare function removeTelemetry(msvc: string): void;
|
|
@@ -1,57 +1,71 @@
|
|
|
1
1
|
// What makes the unpacked tree behave like a Build Tools install: the vcvars environment, vcvars64.bat, vswhere.
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { mkdirp } from '../../../runtime/fs.js';
|
|
5
|
+
import { warn } from '../../../runtime/log.js';
|
|
6
|
+
import { errMsg } from '../../../../core/util/errors.js';
|
|
7
|
+
import { ensureCompiled } from '../../../runtime/csc.js';
|
|
6
8
|
import { hostBin, ROOT } from './tree.js';
|
|
7
9
|
/** Where build tools look for vswhere (local to the sandbox, so it is written each boot). */
|
|
8
10
|
const VSWHERE_DIR = path.join(process.env['ProgramFiles(x86)'] ?? 'C:\\Program Files (x86)', 'Microsoft Visual Studio', 'Installer');
|
|
9
11
|
/** Variables vcvars64.bat would set for this tree (host x64, target x64). */
|
|
10
|
-
export
|
|
12
|
+
export function vcvars(root, msvc, sdk) {
|
|
11
13
|
const vc = path.join(root, 'VC', 'Tools', 'MSVC', msvc);
|
|
12
14
|
const kits = path.join(root, 'Windows Kits', '10');
|
|
13
15
|
const inc = (...p) => path.join(kits, 'Include', sdk, ...p);
|
|
14
16
|
const lib = (...p) => path.join(kits, 'Lib', sdk, ...p);
|
|
15
17
|
return {
|
|
16
18
|
vars: {
|
|
17
|
-
VSINSTALLDIR: root + '\\',
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
VSINSTALLDIR: root + '\\',
|
|
20
|
+
VCINSTALLDIR: path.join(root, 'VC') + '\\',
|
|
21
|
+
VCToolsInstallDir: vc + '\\',
|
|
22
|
+
VCToolsVersion: msvc,
|
|
23
|
+
VisualStudioVersion: '17.0',
|
|
24
|
+
WindowsSdkDir: kits + '\\',
|
|
25
|
+
WindowsSDKVersion: sdk + '\\',
|
|
26
|
+
WindowsSDKLibVersion: sdk + '\\',
|
|
27
|
+
UniversalCRTSdkDir: kits + '\\',
|
|
28
|
+
UCRTVersion: sdk,
|
|
29
|
+
VSCMD_ARG_HOST_ARCH: 'x64',
|
|
30
|
+
VSCMD_ARG_TGT_ARCH: 'x64',
|
|
31
|
+
Platform: 'x64',
|
|
20
32
|
INCLUDE: [path.join(vc, 'include'), inc('ucrt'), inc('shared'), inc('um'), inc('winrt'), inc('cppwinrt')].join(';'),
|
|
21
33
|
LIB: [path.join(vc, 'lib', 'x64'), lib('ucrt', 'x64'), lib('um', 'x64')].join(';'),
|
|
22
34
|
LIBPATH: [path.join(vc, 'lib', 'x64'), path.join(vc, 'lib', 'x86', 'store', 'references')].join(';'),
|
|
23
35
|
},
|
|
24
36
|
path: [path.join(vc, 'bin', 'Hostx64', 'x64'), path.join(kits, 'bin', sdk, 'x64')],
|
|
25
37
|
};
|
|
26
|
-
}
|
|
38
|
+
}
|
|
27
39
|
/** vcvars64.bat / vcvarsall.bat in the usual place, for scripts that `call` them. */
|
|
28
|
-
export
|
|
40
|
+
export function writeVcvars(env) {
|
|
29
41
|
const dir = mkdirp(path.join(ROOT, 'VC', 'Auxiliary', 'Build'));
|
|
30
42
|
const lines = [
|
|
31
|
-
'@echo off',
|
|
43
|
+
'@echo off',
|
|
44
|
+
'rem Written by Windows Development Sandbox for its portable MSVC (host x64, target x64).',
|
|
32
45
|
...Object.entries(env.vars).map(([k, v]) => 'set "' + k + '=' + v + '"'),
|
|
33
|
-
'set "PATH=' + env.path.join(';') + ';%PATH%"',
|
|
46
|
+
'set "PATH=' + env.path.join(';') + ';%PATH%"',
|
|
47
|
+
'exit /b 0',
|
|
34
48
|
];
|
|
35
49
|
fs.writeFileSync(path.join(dir, 'vcvars64.bat'), lines.join('\r\n') + '\r\n');
|
|
36
50
|
fs.writeFileSync(path.join(dir, 'vcvarsall.bat'), ['@echo off', 'rem Only x64 (amd64) is installed.', 'call "%~dp0vcvars64.bat"', 'exit /b %errorlevel%'].join('\r\n') + '\r\n');
|
|
37
|
-
}
|
|
51
|
+
}
|
|
38
52
|
/** vswhere.exe where Visual Studio's installer would put it, answering with this tree. */
|
|
39
|
-
export
|
|
53
|
+
export function installVswhere(msvc) {
|
|
40
54
|
mkdirp(VSWHERE_DIR);
|
|
41
55
|
fs.copyFileSync(ensureCompiled('vswhere'), path.join(VSWHERE_DIR, 'vswhere.exe'));
|
|
42
56
|
const [major, minor] = msvc.split('.').slice(2);
|
|
43
57
|
fs.writeFileSync(path.join(VSWHERE_DIR, 'vswhere.json'), JSON.stringify({ installationPath: ROOT, installationVersion: '17.' + (minor ?? '0') + '.0.' + (major ?? '0') }));
|
|
44
|
-
}
|
|
58
|
+
}
|
|
45
59
|
/**
|
|
46
60
|
* cl.exe and link.exe start vctip.exe (Visual Studio's telemetry uploader), which lingers after the build and keeps the
|
|
47
61
|
* folder locked, so `sandbox repair` / `data clean` could not delete tools\msvc. Neither VSCMD_SKIP_SENDTELEMETRY nor
|
|
48
62
|
* the TurnOffSwitch registry value stops it; without the file the compiler simply skips it. Nothing else needs it.
|
|
49
63
|
*/
|
|
50
|
-
export
|
|
64
|
+
export function removeTelemetry(msvc) {
|
|
51
65
|
try {
|
|
52
66
|
fs.rmSync(hostBin(msvc, 'vctip.exe'), { force: true });
|
|
53
67
|
}
|
|
54
68
|
catch (e) {
|
|
55
|
-
warn(
|
|
69
|
+
warn("Could not remove MSVC's telemetry helper (vctip.exe); it may keep tools\\msvc locked: " + errMsg(e));
|
|
56
70
|
}
|
|
57
|
-
}
|
|
71
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../../core/types.js';
|
|
2
|
-
import type { ToolEnv } from '../../
|
|
2
|
+
import type { ToolEnv } from '../../tool-env.js';
|
|
3
3
|
import { type VcEnv } from './environment.js';
|
|
4
4
|
/** The vcvars environment of an installed tree (for steps that run before the agent's environment exists). */
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
5
|
+
export declare function installedMsvcEnv(): VcEnv | null;
|
|
6
|
+
export declare function setupMsvc(env: ToolEnv, config: Toolchains['msvc']): Promise<void>;
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
// MSVC (cl, link) and the Windows SDK without an installer (packages.ts), laid out like a Build Tools install with
|
|
2
2
|
// vcvars64.bat and a vswhere that points at it (environment.ts), so CMake, cargo (msvc host), node-gyp and vcvars-based
|
|
3
|
-
// scripts work. Use
|
|
3
|
+
// scripts work. Use falls under the Visual Studio licence terms: it only installs with toolchains.msvc.acceptLicense.
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import { writeJsonAtomic } from '../../../../shared/
|
|
7
|
-
import { safeRemove } from '../../../../shared/safe-remove.js';
|
|
8
|
-
import { dryRun
|
|
6
|
+
import { writeJsonAtomic } from '../../../../shared/io/json.js';
|
|
7
|
+
import { safeRemove } from '../../../../shared/io/safe-remove.js';
|
|
8
|
+
import { dryRun } from '../../../runtime/paths.js';
|
|
9
|
+
import { exists } from '../../../runtime/fs.js';
|
|
10
|
+
import { log } from '../../../runtime/log.js';
|
|
9
11
|
import { installVswhere, removeTelemetry, vcvars, writeVcvars } from './environment.js';
|
|
10
12
|
import { installPackages } from './packages.js';
|
|
11
13
|
import { hasCompiler, MARKER, readInstalled, ROOT } from './tree.js';
|
|
12
14
|
/** The vcvars environment of an installed tree (for steps that run before the agent's environment exists). */
|
|
13
|
-
export
|
|
15
|
+
export function installedMsvcEnv() {
|
|
14
16
|
const done = readInstalled();
|
|
15
17
|
return done && hasCompiler(done.msvc) ? vcvars(ROOT, done.msvc, done.sdk) : null;
|
|
16
|
-
}
|
|
18
|
+
}
|
|
17
19
|
/** Empties tools\msvc for a fresh install, keeping the manifest and the verified downloads of an earlier attempt. */
|
|
18
20
|
const clearTree = () => {
|
|
19
21
|
if (!exists(ROOT))
|
|
@@ -21,7 +23,7 @@ const clearTree = () => {
|
|
|
21
23
|
for (const name of fs.readdirSync(ROOT).filter((n) => n !== '.manifest.json' && n !== '.download'))
|
|
22
24
|
safeRemove(path.join(ROOT, name), ROOT);
|
|
23
25
|
};
|
|
24
|
-
export
|
|
26
|
+
export async function setupMsvc(env, config) {
|
|
25
27
|
if (!config.acceptLicense) {
|
|
26
28
|
throw new Error('MSVC is installed only with toolchains.msvc.acceptLicense = true: its use is governed by the Visual Studio licence terms (https://visualstudio.microsoft.com/license-terms/), which need a Visual Studio licence');
|
|
27
29
|
}
|
|
@@ -45,4 +47,4 @@ export const setupMsvc = async (env, config) => {
|
|
|
45
47
|
Object.assign(env.vars, vc.vars);
|
|
46
48
|
env.prepend.push(...vc.path);
|
|
47
49
|
env.summary.push('msvc: ' + done.msvc + ', Windows SDK ' + done.sdk + ' (cl, link; vcvars64.bat and vswhere work)');
|
|
48
|
-
}
|
|
50
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../../core/types.js';
|
|
2
2
|
/** Downloads and unpacks MSVC and the Windows SDK into tools\msvc; resolves with the toolset and SDK folder names. */
|
|
3
|
-
export declare
|
|
3
|
+
export declare function installPackages(config: Toolchains['msvc']): Promise<{
|
|
4
4
|
msvc: string;
|
|
5
5
|
sdk: string;
|
|
6
6
|
}>;
|