windows-development-sandbox 1.4.1 → 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/config.example.json +3 -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 +327 -53
- 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/{progress.d.ts → output/progress.d.ts} +5 -5
- package/dist/cli/{progress.js → output/progress.js} +42 -19
- 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} +3 -18
- package/dist/core/{local-config.js → local-config/overrides.js} +45 -52
- package/dist/core/local-config/policy.d.ts +19 -0
- package/dist/core/local-config/policy.js +45 -0
- 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 +15 -10
- 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 +1 -1
- package/dist/core/schema/projects.js +16 -6
- package/dist/core/schema/sandbox.d.ts +11 -11
- 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 +19 -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} +96 -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 -106
- 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} +22 -13
- 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 +5 -5
- package/dist/host/launch/mappings.js +37 -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/{join.d.ts → projects/join.d.ts} +12 -9
- package/dist/host/{join.js → projects/join.js} +62 -33
- 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 +4220 -1968
- package/dist/runtime/db.js +2134 -849
- package/dist/runtime/gitguard.js +29 -11
- package/dist/runtime/main.js +4687 -2243
- package/dist/runtime/netproxy.js +1644 -420
- package/dist/runtime/view.js +1356 -428
- 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 +63 -16
- 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 +72 -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 +1 -1
- package/dist/selftest/live-terminal.test.js +41 -15
- package/dist/selftest/local-config.test.d.ts +1 -1
- package/dist/selftest/local-config.test.js +64 -16
- package/dist/selftest/mirror.test.d.ts +1 -1
- package/dist/selftest/mirror.test.js +102 -32
- 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 +280 -85
- 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} +5 -3
- 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} +38 -21
- package/dist/shared/{schema.js → channel/schema.js} +62 -35
- 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} +6 -12
- package/dist/shared/{guest-paths.js → paths/guest-paths.js} +53 -36
- package/dist/shared/paths/index.d.ts +3 -0
- package/dist/shared/paths/index.js +3 -0
- package/dist/shared/{projects.js → paths/projects.js} +13 -3
- package/dist/shared/pty/client.d.ts +21 -0
- package/dist/shared/pty/client.js +79 -0
- package/dist/shared/{console-input.js → pty/console-input.js} +26 -6
- 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/schemas/config.schema.json +34 -1
- package/schemas/sandbox-config.schema.json +34 -1
- package/dist/cli/boot-progress.d.ts +0 -22
- package/dist/cli/boot-progress.js +0 -59
- package/dist/cli/commands/launch.d.ts +0 -32
- package/dist/cli/commands/launch.js +0 -421
- package/dist/cli/commands/maintenance.d.ts +0 -10
- package/dist/cli/commands/maintenance.js +0 -220
- package/dist/cli/commands/project.d.ts +0 -33
- package/dist/cli/commands/project.js +0 -102
- 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 -95
- package/dist/cli/commands/sessions.d.ts +0 -12
- package/dist/cli/commands/sessions.js +0 -258
- package/dist/cli/menu/settings/editors.js +0 -305
- 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/project-policy.d.ts +0 -62
- package/dist/core/project-policy.js +0 -121
- 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 -35
- package/dist/core/workspace.js +0 -206
- package/dist/guest/boot-env.d.ts +0 -4
- package/dist/guest/daemon.js +0 -57
- package/dist/guest/env.d.ts +0 -56
- package/dist/guest/env.js +0 -115
- 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 -163
- package/dist/host/generate.d.ts +0 -13
- package/dist/host/generate.js +0 -115
- package/dist/host/launch/projects.d.ts +0 -17
- 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 -123
- package/dist/host/projects.js +0 -196
- 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 -63
- package/dist/shared/download.js +0 -238
- package/dist/shared/pty-client.d.ts +0 -108
- package/dist/shared/pty-client.js +0 -406
- package/dist/shared/rundir.d.ts +0 -41
- package/dist/shared/rundir.js +0 -96
- /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
- /package/dist/shared/{projects.d.ts → paths/projects.d.ts} +0 -0
- /package/dist/shared/{console-input.d.ts → pty/console-input.d.ts} +0 -0
|
@@ -3,24 +3,40 @@
|
|
|
3
3
|
// .vsix files, the SDK from its .msi files with `msiexec /a`.
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import {
|
|
7
|
-
import { safeRemove } from '../../../../shared/safe-remove.js';
|
|
6
|
+
import { downloader, extractArchive, fetchJson } from '../../../../shared/download/index.js';
|
|
7
|
+
import { safeRemove } from '../../../../shared/io/safe-remove.js';
|
|
8
8
|
import { system32 } from '../../../../shared/system.js';
|
|
9
|
-
import { execAsync
|
|
10
|
-
import {
|
|
9
|
+
import { execAsync } from '../../../runtime/process.js';
|
|
10
|
+
import { exists, mkdirp } from '../../../runtime/fs.js';
|
|
11
|
+
import { log } from '../../../runtime/log.js';
|
|
12
|
+
import { msiCabs, pickMsvcVersion, pickWindowsSdk } from '../../../../core/detect/versions.js';
|
|
11
13
|
import { hostBin, ROOT } from './tree.js';
|
|
12
14
|
const CHANNEL = 'https://aka.ms/vs/17/release/channel';
|
|
13
15
|
const MANIFEST_DAY_MS = 24 * 60 * 60 * 1000;
|
|
14
16
|
/** The compiler's packages (host x64, target x64): tools, resources, CRT headers/libs, ASAN/PGO headers. */
|
|
15
|
-
const MSVC_PARTS = [
|
|
17
|
+
const MSVC_PARTS = [
|
|
18
|
+
'tools.hostx64.targetx64.base',
|
|
19
|
+
'tools.hostx64.targetx64.res.base',
|
|
20
|
+
'crt.headers.base',
|
|
21
|
+
'crt.x64.desktop.base',
|
|
22
|
+
'crt.x64.store.base',
|
|
23
|
+
'crt.source.base',
|
|
24
|
+
'asan.headers.base',
|
|
25
|
+
'pgo.headers.base',
|
|
26
|
+
];
|
|
16
27
|
/** Without these the compiler is unusable; the other parts are taken when the manifest has them. */
|
|
17
28
|
const REQUIRED_PARTS = ['tools', 'crt.headers', 'crt.x64.desktop'];
|
|
18
29
|
/** The SDK's .msi files (Desktop + UCRT + Store headers/libs/tools for x64), as in portable-msvc.py. */
|
|
19
30
|
const SDK_MSIS = [
|
|
20
|
-
'Windows SDK for Windows Store Apps Tools-x86_en-us.msi',
|
|
21
|
-
'Windows SDK for Windows Store Apps Headers
|
|
22
|
-
'
|
|
23
|
-
'Windows SDK
|
|
31
|
+
'Windows SDK for Windows Store Apps Tools-x86_en-us.msi',
|
|
32
|
+
'Windows SDK for Windows Store Apps Headers-x86_en-us.msi',
|
|
33
|
+
'Windows SDK for Windows Store Apps Headers OnecoreUap-x86_en-us.msi',
|
|
34
|
+
'Windows SDK for Windows Store Apps Libs-x86_en-us.msi',
|
|
35
|
+
'Universal CRT Headers Libraries and Sources-x86_en-us.msi',
|
|
36
|
+
'Windows SDK Desktop Headers x86-x86_en-us.msi',
|
|
37
|
+
'Windows SDK Desktop Headers x64-x86_en-us.msi',
|
|
38
|
+
'Windows SDK Desktop Libs x64-x86_en-us.msi',
|
|
39
|
+
'Windows SDK Desktop Tools x64-x86_en-us.msi',
|
|
24
40
|
];
|
|
25
41
|
/** The VS manifest (~18 MB), cached for a day. */
|
|
26
42
|
const manifest = async () => {
|
|
@@ -30,16 +46,19 @@ const manifest = async () => {
|
|
|
30
46
|
try {
|
|
31
47
|
return JSON.parse(fs.readFileSync(cached, 'utf8'));
|
|
32
48
|
}
|
|
33
|
-
catch {
|
|
49
|
+
catch {
|
|
50
|
+
/* downloaded again below */
|
|
51
|
+
}
|
|
34
52
|
}
|
|
35
53
|
const channel = await fetchJson(CHANNEL);
|
|
36
|
-
const item = channel.channelItems.find((i) => i.id === 'Microsoft.VisualStudio.Manifests.VisualStudio')
|
|
54
|
+
const item = channel.channelItems.find((i) => i.id === 'Microsoft.VisualStudio.Manifests.VisualStudio')
|
|
55
|
+
?.payloads?.[0];
|
|
37
56
|
if (!item)
|
|
38
57
|
throw new Error('the Visual Studio channel has no package manifest');
|
|
39
58
|
mkdirp(ROOT);
|
|
40
59
|
// The channel's sha256 for the manifest is not the file's hash (portable-msvc.py does not check it either); the
|
|
41
60
|
// manifest comes over HTTPS from Microsoft, and every package payload it lists IS checked against its own sha256.
|
|
42
|
-
await
|
|
61
|
+
await downloader.file(item.url, cached);
|
|
43
62
|
return JSON.parse(fs.readFileSync(cached, 'utf8'));
|
|
44
63
|
};
|
|
45
64
|
/** .vsix contents are percent-encoded file names under Contents/; unpack them into the root, names decoded. */
|
|
@@ -54,7 +73,9 @@ const unpackVsix = async (vsix, work) => {
|
|
|
54
73
|
if (name.includes('%'))
|
|
55
74
|
name = decodeURIComponent(name);
|
|
56
75
|
}
|
|
57
|
-
catch {
|
|
76
|
+
catch {
|
|
77
|
+
/* not percent-encoded after all */
|
|
78
|
+
}
|
|
58
79
|
const to = path.join(dir, name);
|
|
59
80
|
if (to !== from)
|
|
60
81
|
fs.renameSync(from, to);
|
|
@@ -66,15 +87,29 @@ const unpackVsix = async (vsix, work) => {
|
|
|
66
87
|
fs.cpSync(path.join(out, 'Contents'), ROOT, { recursive: true, force: true });
|
|
67
88
|
safeRemove(out, work);
|
|
68
89
|
};
|
|
69
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* An administrative install only unpacks files; its verbose log explains a failure (e.g. a path over 260 characters).
|
|
92
|
+
*/
|
|
70
93
|
const unpackMsi = async (msi) => {
|
|
71
94
|
const logFile = msi + '.log';
|
|
72
95
|
try {
|
|
73
|
-
await execAsync(system32('msiexec.exe'), ['/a', msi, '/quiet', '/qn', 'TARGETDIR=' + ROOT, '/l*v', logFile], {
|
|
96
|
+
await execAsync(system32('msiexec.exe'), ['/a', msi, '/quiet', '/qn', 'TARGETDIR=' + ROOT, '/l*v', logFile], {
|
|
97
|
+
stdio: 'ignore',
|
|
98
|
+
});
|
|
74
99
|
}
|
|
75
100
|
catch (e) {
|
|
76
|
-
const lines = exists(logFile)
|
|
77
|
-
|
|
101
|
+
const lines = exists(logFile)
|
|
102
|
+
? fs
|
|
103
|
+
.readFileSync(logFile, 'utf16le')
|
|
104
|
+
.split(/\r?\n/)
|
|
105
|
+
.filter((l) => /error|return value 3|failed/i.test(l))
|
|
106
|
+
.slice(-4)
|
|
107
|
+
.join(' | ')
|
|
108
|
+
: '';
|
|
109
|
+
throw new Error(path.basename(msi) +
|
|
110
|
+
' did not unpack: ' +
|
|
111
|
+
(e instanceof Error ? e.message : String(e)) +
|
|
112
|
+
(lines ? ' (' + lines.slice(0, 600) + ')' : ''));
|
|
78
113
|
}
|
|
79
114
|
};
|
|
80
115
|
/** The manifest's packages by id, with the lookups the installer needs. */
|
|
@@ -91,16 +126,23 @@ const catalogue = (m) => {
|
|
|
91
126
|
const payloadFetcher = (work) => async (p) => {
|
|
92
127
|
const file = path.join(work, path.basename(p.fileName.replace(/\\/g, '/')));
|
|
93
128
|
if (!exists(file))
|
|
94
|
-
await
|
|
129
|
+
await downloader.file(p.url, file, p.sha256);
|
|
95
130
|
return file;
|
|
96
131
|
};
|
|
97
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* Newest folder under VC\Tools\MSVC that holds a compiler (named after the toolset, 14.44.35207, not the package
|
|
134
|
+
* version).
|
|
135
|
+
*/
|
|
98
136
|
const unpackedToolset = () => {
|
|
99
137
|
const toolsRoot = path.join(ROOT, 'VC', 'Tools', 'MSVC');
|
|
100
|
-
return fs
|
|
138
|
+
return fs
|
|
139
|
+
.readdirSync(toolsRoot)
|
|
140
|
+
.filter((d) => exists(hostBin(d, 'cl.exe')))
|
|
141
|
+
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
|
|
142
|
+
.pop();
|
|
101
143
|
};
|
|
102
144
|
/** Downloads and unpacks MSVC and the Windows SDK into tools\msvc; resolves with the toolset and SDK folder names. */
|
|
103
|
-
export
|
|
145
|
+
export async function installPackages(config) {
|
|
104
146
|
const { ids, pick } = catalogue(await manifest());
|
|
105
147
|
const version = pickMsvcVersion(ids, config.msvcVersion);
|
|
106
148
|
if (!version)
|
|
@@ -146,11 +188,15 @@ export const installPackages = async (config) => {
|
|
|
146
188
|
for (const name of fs.readdirSync(ROOT).filter((n) => n.toLowerCase().endsWith('.msi')))
|
|
147
189
|
fs.rmSync(path.join(ROOT, name), { force: true });
|
|
148
190
|
safeRemove(work, ROOT);
|
|
149
|
-
const sdkVersion = fs
|
|
191
|
+
const sdkVersion = fs
|
|
192
|
+
.readdirSync(path.join(ROOT, 'Windows Kits', '10', 'Include'))
|
|
193
|
+
.filter((d) => d.startsWith('10.0.' + sdk.build))
|
|
194
|
+
.sort()
|
|
195
|
+
.pop();
|
|
150
196
|
if (!sdkVersion)
|
|
151
197
|
throw new Error('the Windows SDK did not unpack (no Include\\10.0.' + sdk.build + '.*)');
|
|
152
198
|
const toolset = unpackedToolset();
|
|
153
199
|
if (!toolset)
|
|
154
200
|
throw new Error('MSVC ' + version + ' did not unpack (no cl.exe under VC\\Tools\\MSVC)');
|
|
155
201
|
return { msvc: toolset, sdk: sdkVersion };
|
|
156
|
-
}
|
|
202
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const ROOT: string;
|
|
3
3
|
export declare const MARKER: string;
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
declare const
|
|
4
|
+
export declare function msvcTools(msvc: string, ...parts: string[]): string;
|
|
5
|
+
export declare function hostBin(msvc: string, ...parts: string[]): string;
|
|
6
|
+
export declare function hasCompiler(msvc: string): boolean;
|
|
7
|
+
declare const InstalledSchema: z.ZodObject<{
|
|
8
8
|
msvc: z.ZodString;
|
|
9
9
|
sdk: z.ZodString;
|
|
10
10
|
want: z.ZodString;
|
|
11
11
|
}, z.core.$strip>;
|
|
12
|
-
export type Installed = z.infer<typeof
|
|
12
|
+
export type Installed = z.infer<typeof InstalledSchema>;
|
|
13
13
|
/** What the last finished install recorded; null for a missing, unreadable or half-written marker. */
|
|
14
|
-
export declare
|
|
14
|
+
export declare function readInstalled(): Installed | null;
|
|
15
15
|
export {};
|
|
@@ -2,20 +2,26 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { exists } from '../../../
|
|
6
|
-
import { tool } from '../../
|
|
5
|
+
import { exists } from '../../../runtime/fs.js';
|
|
6
|
+
import { tool } from '../../tool-env.js';
|
|
7
7
|
export const ROOT = tool('msvc');
|
|
8
8
|
export const MARKER = path.join(ROOT, '.installed.json');
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export function msvcTools(msvc, ...parts) {
|
|
10
|
+
return path.join(ROOT, 'VC', 'Tools', 'MSVC', msvc, ...parts);
|
|
11
|
+
}
|
|
12
|
+
export function hostBin(msvc, ...parts) {
|
|
13
|
+
return msvcTools(msvc, 'bin', 'Hostx64', 'x64', ...parts);
|
|
14
|
+
}
|
|
15
|
+
export function hasCompiler(msvc) {
|
|
16
|
+
return exists(hostBin(msvc, 'cl.exe'));
|
|
17
|
+
}
|
|
18
|
+
const InstalledSchema = z.object({ msvc: z.string().min(1), sdk: z.string().min(1), want: z.string() });
|
|
13
19
|
/** What the last finished install recorded; null for a missing, unreadable or half-written marker. */
|
|
14
|
-
export
|
|
20
|
+
export function readInstalled() {
|
|
15
21
|
try {
|
|
16
|
-
return
|
|
22
|
+
return InstalledSchema.safeParse(JSON.parse(fs.readFileSync(MARKER, 'utf8'))).data ?? null;
|
|
17
23
|
}
|
|
18
24
|
catch {
|
|
19
25
|
return null;
|
|
20
26
|
}
|
|
21
|
-
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
|
+
/** "separate": tools\shims\cargo\cargo.exe in front of the real cargo, which it runs with the checkout's target dir. */
|
|
4
|
+
export declare function cargoShim(env: ToolEnv, rust: Toolchains['rust']): void;
|
|
5
|
+
/**
|
|
6
|
+
* GNU host: Rust links through tools\shims\linkgate.exe (sandbox/linkgate.cs), which lets only `linkSlots` links run
|
|
7
|
+
* at once in the whole sandbox and, with linker "lld", has MinGW's gcc use Rust's own lld instead of GNU ld.
|
|
8
|
+
*/
|
|
9
|
+
export declare function linkGate(env: ToolEnv, rust: Toolchains['rust'], host: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Cargo defaults that fit Windows, written only when there is no $CARGO_HOME\config.toml yet: fewer parallel jobs
|
|
12
|
+
* (parallel rustc ran out of paging file) and, for the GNU host, only line tables as debug info (full debug info made
|
|
13
|
+
* test executables bigger than the 2 GB Windows allows).
|
|
14
|
+
*/
|
|
15
|
+
export declare function cargoDefaults(host: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Where cargo builds and where sccache keeps its cache. Cargo fingerprints hold absolute paths and the host toolchain,
|
|
18
|
+
* so a target\\ shared with builds on the PC rebuilds every time the side changes: "separate" (the default) keeps a
|
|
19
|
+
* sandbox one next to it. sccache's cache persists unless the project sets SCCACHE_DIR itself.
|
|
20
|
+
*/
|
|
21
|
+
export declare function rustCaches(rust: Toolchains['rust']): Record<string, string>;
|
|
22
|
+
/** "auto": the msvc host when the MSVC step runs (as on most PCs), else GNU with MinGW. */
|
|
23
|
+
export declare function rustHost(config: Toolchains): string;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { dataDir, localDir } from '../../runtime/paths.js';
|
|
5
|
+
import { exists, mkdirp } from '../../runtime/fs.js';
|
|
6
|
+
import { execOutput } from '../../runtime/process.js';
|
|
7
|
+
import { ensureCompiled } from '../../runtime/csc.js';
|
|
8
|
+
import { arch, tool } from '../tool-env.js';
|
|
9
|
+
import { wanted } from '../detect.js';
|
|
10
|
+
/**
|
|
11
|
+
* Where cargo builds: shared with the PC's target\, one on the sandbox's disk, or a path. "separate" sets no variable:
|
|
12
|
+
* the cargo shim (sandbox/cargoshim.cs) gives every checkout its own target\sandbox, so git worktrees of several agents
|
|
13
|
+
* never overwrite each other's builds.
|
|
14
|
+
*/
|
|
15
|
+
const cargoTarget = (targetDir) => {
|
|
16
|
+
if (targetDir === 'shared' || targetDir === 'separate')
|
|
17
|
+
return null;
|
|
18
|
+
if (targetDir === 'local')
|
|
19
|
+
return path.join(localDir, 'cargo-target');
|
|
20
|
+
return targetDir;
|
|
21
|
+
};
|
|
22
|
+
/** "separate": tools\shims\cargo\cargo.exe in front of the real cargo, which it runs with the checkout's target dir. */
|
|
23
|
+
export function cargoShim(env, rust) {
|
|
24
|
+
const real = path.join(tool('rust', 'cargo', 'bin'), 'cargo.exe');
|
|
25
|
+
if (rust.targetDir !== 'separate' || !exists(real))
|
|
26
|
+
return;
|
|
27
|
+
const dir = mkdirp(tool('shims', 'cargo'));
|
|
28
|
+
fs.copyFileSync(ensureCompiled('cargoshim'), path.join(dir, 'cargo.exe'));
|
|
29
|
+
env.prepend.unshift(dir);
|
|
30
|
+
env.vars.AGENT_REAL_CARGO = real;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* GNU host: Rust links through tools\shims\linkgate.exe (sandbox/linkgate.cs), which lets only `linkSlots` links run
|
|
34
|
+
* at once in the whole sandbox and, with linker "lld", has MinGW's gcc use Rust's own lld instead of GNU ld.
|
|
35
|
+
*/
|
|
36
|
+
export function linkGate(env, rust, host) {
|
|
37
|
+
const gcc = tool('mingw', 'mingw64', 'bin', 'gcc.exe');
|
|
38
|
+
if (!host.endsWith('-pc-windows-gnu') || !exists(gcc))
|
|
39
|
+
return;
|
|
40
|
+
const gate = path.join(mkdirp(tool('shims')), 'linkgate.exe');
|
|
41
|
+
fs.copyFileSync(ensureCompiled('linkgate'), gate);
|
|
42
|
+
const memoryGb = os.totalmem() / 1024 ** 3;
|
|
43
|
+
const slots = rust.linkSlots === 'auto' ? Math.max(2, Math.min(4, Math.floor(memoryGb / 8))) : rust.linkSlots;
|
|
44
|
+
env.vars.AGENT_LINK_SLOTS = String(slots);
|
|
45
|
+
env.vars.AGENT_REAL_LINKER = gcc;
|
|
46
|
+
env.vars.CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER = gate;
|
|
47
|
+
const rustEnv = { ...process.env, RUSTUP_HOME: tool('rust', 'rustup'), CARGO_HOME: tool('rust', 'cargo') };
|
|
48
|
+
const sysroot = rust.linker === 'lld'
|
|
49
|
+
? execOutput(tool('rust', 'cargo', 'bin', 'rustc.exe'), ['--print', 'sysroot'], { env: rustEnv })
|
|
50
|
+
: '';
|
|
51
|
+
const lld = sysroot ? path.join(sysroot, 'lib', 'rustlib', host, 'bin', 'gcc-ld') : '';
|
|
52
|
+
if (lld && exists(path.join(lld, 'ld.lld.exe')))
|
|
53
|
+
env.vars.AGENT_LLD_DIR = lld;
|
|
54
|
+
env.summary.push('rust linking: ' +
|
|
55
|
+
(env.vars.AGENT_LLD_DIR ? 'lld' : 'GNU ld') +
|
|
56
|
+
', at most ' +
|
|
57
|
+
env.vars.AGENT_LINK_SLOTS +
|
|
58
|
+
' at once');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Cargo defaults that fit Windows, written only when there is no $CARGO_HOME\config.toml yet: fewer parallel jobs
|
|
62
|
+
* (parallel rustc ran out of paging file) and, for the GNU host, only line tables as debug info (full debug info made
|
|
63
|
+
* test executables bigger than the 2 GB Windows allows).
|
|
64
|
+
*/
|
|
65
|
+
export function cargoDefaults(host) {
|
|
66
|
+
const file = tool('rust', 'cargo', 'config.toml');
|
|
67
|
+
if (exists(file) || !exists(path.dirname(file)))
|
|
68
|
+
return;
|
|
69
|
+
// Several agents often build at once: up to 4 jobs each (8 each crashed Windows inside the sandbox on 13 Oct 2026).
|
|
70
|
+
const jobs = Math.max(2, Math.min(4, Math.floor(os.cpus().length / 4)));
|
|
71
|
+
const gnu = host.endsWith('-gnu');
|
|
72
|
+
fs.writeFileSync(file, [
|
|
73
|
+
'# Written by windows-development-sandbox once; edit freely, it is never overwritten.',
|
|
74
|
+
'[build]',
|
|
75
|
+
'jobs = ' + jobs,
|
|
76
|
+
'',
|
|
77
|
+
...(gnu
|
|
78
|
+
? ['[profile.dev]', 'debug = "line-tables-only"', '', '[profile.test]', 'debug = "line-tables-only"', '']
|
|
79
|
+
: []),
|
|
80
|
+
].join('\n'));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Where cargo builds and where sccache keeps its cache. Cargo fingerprints hold absolute paths and the host toolchain,
|
|
84
|
+
* so a target\\ shared with builds on the PC rebuilds every time the side changes: "separate" (the default) keeps a
|
|
85
|
+
* sandbox one next to it. sccache's cache persists unless the project sets SCCACHE_DIR itself.
|
|
86
|
+
*/
|
|
87
|
+
export function rustCaches(rust) {
|
|
88
|
+
const target = cargoTarget(rust.targetDir);
|
|
89
|
+
return {
|
|
90
|
+
...(target ? { CARGO_TARGET_DIR: target } : {}),
|
|
91
|
+
...(process.env.SCCACHE_DIR ? {} : { SCCACHE_DIR: path.join(dataDir, 'cache', 'sccache') }),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** "auto": the msvc host when the MSVC step runs (as on most PCs), else GNU with MinGW. */
|
|
95
|
+
export function rustHost(config) {
|
|
96
|
+
if (config.rust.host !== 'auto')
|
|
97
|
+
return config.rust.host;
|
|
98
|
+
const cpu = arch === 'arm64' ? 'aarch64' : 'x86_64';
|
|
99
|
+
return cpu + (wanted(config.msvc.enabled, 'msvc') ? '-pc-windows-msvc' : '-pc-windows-gnu');
|
|
100
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
-
import { type ToolEnv } from '../
|
|
3
|
-
export declare
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
|
+
export declare function setupRust(env: ToolEnv, config: Toolchains['rust'], refresh: boolean): Promise<void>;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
// Rust: rustup + cargo, with crates installed prebuilt where possible (binstall.ts).
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { dryRun
|
|
4
|
-
import {
|
|
3
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
4
|
+
import { execAsync } from '../../runtime/process.js';
|
|
5
|
+
import { exists } from '../../runtime/fs.js';
|
|
6
|
+
import { log } from '../../runtime/log.js';
|
|
7
|
+
import { arch, tool, versionOf } from '../tool-env.js';
|
|
8
|
+
import { downloadFile } from '../install.js';
|
|
9
|
+
import { installOnce } from '../package-ledger.js';
|
|
5
10
|
import { crateInstaller } from './binstall.js';
|
|
6
11
|
import { installedMsvcEnv } from './msvc/index.js';
|
|
7
|
-
export
|
|
12
|
+
export async function setupRust(env, config, refresh) {
|
|
8
13
|
const RUSTUP_HOME = tool('rust', 'rustup');
|
|
9
14
|
const CARGO_HOME = tool('rust', 'cargo');
|
|
10
15
|
const rustEnv = { env: { ...process.env, RUSTUP_HOME, CARGO_HOME } };
|
|
@@ -16,13 +21,27 @@ export const setupRust = async (env, config, refresh) => {
|
|
|
16
21
|
if (!exists(rustup)) {
|
|
17
22
|
const init = tool('rust', 'rustup-init.exe');
|
|
18
23
|
log('Installing Rust with rustup (~300 MB once; the toolchain downloads after rustup itself) ...');
|
|
19
|
-
await downloadFile('https://static.rust-lang.org/rustup/dist/' +
|
|
20
|
-
|
|
24
|
+
await downloadFile('https://static.rust-lang.org/rustup/dist/' +
|
|
25
|
+
(arch === 'arm64' ? 'aarch64' : 'x86_64') +
|
|
26
|
+
'-pc-windows-msvc/rustup-init.exe', init);
|
|
27
|
+
await execAsync(init, [
|
|
28
|
+
'-y',
|
|
29
|
+
'--no-modify-path',
|
|
30
|
+
'--profile',
|
|
31
|
+
'default',
|
|
32
|
+
'--default-host',
|
|
33
|
+
config.host,
|
|
34
|
+
'--default-toolchain',
|
|
35
|
+
config.toolchain,
|
|
36
|
+
], rustEnv);
|
|
21
37
|
}
|
|
22
38
|
else {
|
|
23
39
|
// The host can change (GNU <-> msvc with toolchains.msvc): install the toolchain for it; a no-op when it is there.
|
|
24
40
|
await execAsync(rustup, ['set', 'default-host', config.host], { ...rustEnv, stdio: 'ignore' });
|
|
25
|
-
await execAsync(rustup, ['toolchain', 'install', config.toolchain, '--profile', 'default', '--no-self-update'], {
|
|
41
|
+
await execAsync(rustup, ['toolchain', 'install', config.toolchain, '--profile', 'default', '--no-self-update'], {
|
|
42
|
+
...rustEnv,
|
|
43
|
+
stdio: 'ignore',
|
|
44
|
+
});
|
|
26
45
|
await execAsync(rustup, ['default', config.toolchain], { ...rustEnv, stdio: 'ignore' });
|
|
27
46
|
if (refresh)
|
|
28
47
|
await execAsync(rustup, ['update'], rustEnv);
|
|
@@ -38,8 +57,20 @@ export const setupRust = async (env, config, refresh) => {
|
|
|
38
57
|
const msvc = config.host.endsWith('-msvc') ? installedMsvcEnv() : null;
|
|
39
58
|
const mingw = tool('mingw', 'mingw64', 'bin');
|
|
40
59
|
const cargoEnv = msvc
|
|
41
|
-
? {
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
? {
|
|
61
|
+
env: {
|
|
62
|
+
...rustEnv.env,
|
|
63
|
+
...msvc.vars,
|
|
64
|
+
PATH: [path.join(CARGO_HOME, 'bin'), ...msvc.path, process.env.PATH ?? ''].join(path.delimiter),
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
: {
|
|
68
|
+
env: {
|
|
69
|
+
...rustEnv.env,
|
|
70
|
+
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER: path.join(mingw, 'gcc.exe'),
|
|
71
|
+
PATH: [path.join(CARGO_HOME, 'bin'), mingw, process.env.PATH ?? ''].join(path.delimiter),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
// Prebuilt through cargo-binstall where the crate publishes a Windows build, else compiled (same "cargo" keys).
|
|
44
75
|
await installOnce(env, 'cargo', config.crates, crateInstaller(CARGO_HOME, cargoEnv));
|
|
45
|
-
}
|
|
76
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type ToolEnv } from '../
|
|
1
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
2
2
|
/**
|
|
3
3
|
* A real installer (it writes to System32), so it runs on every boot; the installer itself is kept in persistent
|
|
4
4
|
* storage and only run when Microsoft's signature on it checks out. Resolves true when this call ran the installer.
|
|
5
5
|
* Only the "Visual C++ runtime" step reports it (`summary`); PHP calls it again just to be sure.
|
|
6
6
|
*/
|
|
7
|
-
export declare
|
|
7
|
+
export declare function setupVcRuntime(env: ToolEnv, summary?: boolean): Promise<boolean>;
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
// The Visual C++ runtime (vcruntime140.dll & co.) that PHP and other native tools need.
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { spawnAsync } from '../../../shared/download.js';
|
|
4
|
+
import { spawnAsync } from '../../../shared/download/index.js';
|
|
5
5
|
import { SYSTEM } from '../../../shared/system.js';
|
|
6
|
-
import { dryRun
|
|
7
|
-
import {
|
|
6
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
7
|
+
import { execOutput } from '../../runtime/process.js';
|
|
8
|
+
import { exists } from '../../runtime/fs.js';
|
|
9
|
+
import { log } from '../../runtime/log.js';
|
|
10
|
+
import { downloadFile } from '../install.js';
|
|
11
|
+
import { tool } from '../tool-env.js';
|
|
8
12
|
const VC_REDIST = 'https://aka.ms/vs/17/release/vc_redist.x64.exe';
|
|
9
13
|
const MICROSOFT_SIGNER = 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US';
|
|
10
14
|
/** 1638: a newer version is already installed; 3010: installed, a restart would finish it (not needed for the DLLs). */
|
|
11
15
|
const OK_EXIT_CODES = [0, 1638, 3010];
|
|
12
16
|
/** The subject of a valid Authenticode signature, or '' when the file is unsigned or tampered with. */
|
|
13
|
-
const signerOf = (file) => execOutput(SYSTEM.powershell(), [
|
|
14
|
-
|
|
17
|
+
const signerOf = (file) => execOutput(SYSTEM.powershell(), [
|
|
18
|
+
'-NoLogo',
|
|
19
|
+
'-NoProfile',
|
|
20
|
+
'-Command',
|
|
21
|
+
"$s = Get-AuthenticodeSignature -LiteralPath '" +
|
|
22
|
+
file.replace(/'/g, "''") +
|
|
23
|
+
"'; if ($s.Status -eq 'Valid') { $s.SignerCertificate.Subject }",
|
|
24
|
+
]).trim();
|
|
15
25
|
/**
|
|
16
26
|
* A real installer (it writes to System32), so it runs on every boot; the installer itself is kept in persistent
|
|
17
27
|
* storage and only run when Microsoft's signature on it checks out. Resolves true when this call ran the installer.
|
|
18
28
|
* Only the "Visual C++ runtime" step reports it (`summary`); PHP calls it again just to be sure.
|
|
19
29
|
*/
|
|
20
|
-
export
|
|
30
|
+
export async function setupVcRuntime(env, summary = true) {
|
|
21
31
|
if (dryRun) {
|
|
22
32
|
log('(dry run) would install the Visual C++ runtime');
|
|
23
33
|
return false;
|
|
@@ -42,4 +52,4 @@ export const setupVcRuntime = async (env, summary = true) => {
|
|
|
42
52
|
if (summary)
|
|
43
53
|
env.summary.push('vc++ runtime: installed');
|
|
44
54
|
return missing;
|
|
45
|
-
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ToolEnv } from './tool-env.js';
|
|
2
|
+
export declare class PackageLedger {
|
|
3
|
+
private readonly file;
|
|
4
|
+
constructor(file?: () => string);
|
|
5
|
+
has(group: string, pkg: string): boolean;
|
|
6
|
+
/** Records `pkg` as installed now (re-read first: parallel steps write the same file). */
|
|
7
|
+
mark(group: string, pkg: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* Installs each package that is not installed yet (group e.g. "npm@22.11.0"). One failing package is reported and
|
|
10
|
+
* skipped; it is tried again next boot.
|
|
11
|
+
*/
|
|
12
|
+
installOnce(env: ToolEnv, group: string, packages: readonly string[], install: (pkg: string) => void | Promise<void>): Promise<void>;
|
|
13
|
+
private read;
|
|
14
|
+
}
|
|
15
|
+
export declare const packageLedger: PackageLedger;
|
|
16
|
+
/** packageLedger.installOnce: installs the packages of `group` that are not installed yet. */
|
|
17
|
+
export declare function installOnce(env: ToolEnv, group: string, packages: readonly string[], install: (pkg: string) => void | Promise<void>): Promise<void>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Global packages (npm, gems, go tools, uv tools, cargo crates) installed once: remembered in
|
|
2
|
+
// tools\installed-packages.json under "<group>:<package>" with the time it was installed.
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { writeJsonAtomic } from '../../shared/io/json.js';
|
|
5
|
+
import { log, warn } from '../runtime/log.js';
|
|
6
|
+
import { errMsg } from '../../core/util/errors.js';
|
|
7
|
+
import { tool } from './tool-env.js';
|
|
8
|
+
import { readState } from './state-file.js';
|
|
9
|
+
const LedgerSchema = z.record(z.string(), z.string());
|
|
10
|
+
export class PackageLedger {
|
|
11
|
+
file;
|
|
12
|
+
constructor(file = () => tool('installed-packages.json')) {
|
|
13
|
+
this.file = file;
|
|
14
|
+
}
|
|
15
|
+
has(group, pkg) {
|
|
16
|
+
return Boolean(this.read()[group + ':' + pkg]);
|
|
17
|
+
}
|
|
18
|
+
/** Records `pkg` as installed now (re-read first: parallel steps write the same file). */
|
|
19
|
+
mark(group, pkg) {
|
|
20
|
+
writeJsonAtomic(this.file(), { ...this.read(), [group + ':' + pkg]: new Date().toISOString() });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Installs each package that is not installed yet (group e.g. "npm@22.11.0"). One failing package is reported and
|
|
24
|
+
* skipped; it is tried again next boot.
|
|
25
|
+
*/
|
|
26
|
+
async installOnce(env, group, packages, install) {
|
|
27
|
+
const todo = packages.filter((p) => !this.has(group, p));
|
|
28
|
+
for (const pkg of todo) {
|
|
29
|
+
try {
|
|
30
|
+
log('Installing ' + pkg + ' (' + group + ') ...');
|
|
31
|
+
await install(pkg);
|
|
32
|
+
this.mark(group, pkg);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
warn(pkg +
|
|
36
|
+
' (' +
|
|
37
|
+
group +
|
|
38
|
+
') could not be installed and is skipped; the next start tries again. Reason: ' +
|
|
39
|
+
errMsg(e));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const ok = packages.filter((p) => this.has(group, p));
|
|
43
|
+
if (ok.length)
|
|
44
|
+
env.summary.push(group.split('@')[0] + ' packages: ' + ok.join(', '));
|
|
45
|
+
}
|
|
46
|
+
read() {
|
|
47
|
+
return readState(this.file(), LedgerSchema, {});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export const packageLedger = new PackageLedger();
|
|
51
|
+
/** packageLedger.installOnce: installs the packages of `group` that are not installed yet. */
|
|
52
|
+
export function installOnce(env, group, packages, install) {
|
|
53
|
+
return packageLedger.installOnce(env, group, packages, install);
|
|
54
|
+
}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export interface ToolchainOptions {
|
|
5
|
-
gitEnabled: boolean;
|
|
6
|
-
gitAccess: GitAccess;
|
|
7
|
-
hostGit: boolean;
|
|
8
|
-
refresh: boolean;
|
|
9
|
-
databases: DatabasePlan[];
|
|
10
|
-
apps?: Config['apps'];
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* shared: the step's effect is machine-wide and the same for every project (an installer, a registry entry, a
|
|
14
|
-
* shortcut, the git guard). A project added after boot reuses what the boot's run contributed instead of running it
|
|
15
|
-
* again under the sessions that already use it.
|
|
16
|
-
*/
|
|
17
|
-
export interface Step {
|
|
18
|
-
name: string;
|
|
19
|
-
on: boolean;
|
|
20
|
-
after?: string[];
|
|
21
|
-
shared?: boolean;
|
|
22
|
-
run: (env: ToolEnv) => Promise<void> | void;
|
|
23
|
-
}
|
|
24
|
-
export declare const plan: (config: Toolchains, versions: ToolVersions, o: ToolchainOptions) => Step[];
|
|
1
|
+
import type { Toolchains, ToolVersions } from '../../core/types.js';
|
|
2
|
+
import type { ToolchainOptions, ToolchainStep } from './step.js';
|
|
3
|
+
export declare function plan(config: Toolchains, versions: ToolVersions, o: ToolchainOptions): ToolchainStep[];
|