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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { GitAccess } from '../../core/types.js';
|
|
2
2
|
export type Arch = 'x64' | 'arm64';
|
|
3
3
|
/** PowerShell/PowerShell: the portable zip (PowerShell-7.6.6-win-x64.zip), never the MSI or the fxdependent builds. */
|
|
4
|
-
export declare
|
|
4
|
+
export declare function pwshAsset(arch: Arch): RegExp;
|
|
5
5
|
/** cargo-bins/cargo-binstall: the plain zip (the .full build adds nothing we use; .sig files are signatures). */
|
|
6
|
-
export declare
|
|
6
|
+
export declare function binstallAsset(arch: Arch): RegExp;
|
|
7
7
|
/**
|
|
8
8
|
* One portable command-line tool from a GitHub release. The archive is unpacked into tools\cli\<name>; without
|
|
9
9
|
* `subdir` only the folder holding `exe` is kept (and goes on PATH), with `subdir` the whole archive stays and that
|
|
@@ -37,7 +37,7 @@ export declare const CLI_TOOLS: readonly [{
|
|
|
37
37
|
}];
|
|
38
38
|
export type CliName = (typeof CLI_TOOLS)[number]['name'] | 'openssl';
|
|
39
39
|
export declare const CLI_NAMES: readonly CliName[];
|
|
40
|
-
/** toolchains.cli: each tool true, false or "auto" (gh: when the project has
|
|
40
|
+
/** toolchains.cli: each tool true, false or "auto" (gh: when the project has .github; zstd: never by itself). */
|
|
41
41
|
export type CliSettings = Partial<Record<CliName, boolean | 'auto'>>;
|
|
42
42
|
export interface CliContext {
|
|
43
43
|
gitAccess: GitAccess;
|
|
@@ -52,4 +52,4 @@ export interface CliDecision {
|
|
|
52
52
|
* Which catalogue tools a sandbox gets. gh is never installed unless git access is "full": gh pushes, merges and edits
|
|
53
53
|
* branches through the GitHub API, so it would walk straight past a "readonly" (or "none") git guard.
|
|
54
54
|
*/
|
|
55
|
-
export declare
|
|
55
|
+
export declare function decideCli(settings: CliSettings, ctx: CliContext): Record<CliName, CliDecision>;
|
|
@@ -1,23 +1,46 @@
|
|
|
1
1
|
/** PowerShell/PowerShell: the portable zip (PowerShell-7.6.6-win-x64.zip), never the MSI or the fxdependent builds. */
|
|
2
|
-
export
|
|
2
|
+
export function pwshAsset(arch) {
|
|
3
|
+
return arch === 'arm64' ? /^PowerShell-\d+\.\d+\.\d+-win-arm64\.zip$/ : /^PowerShell-\d+\.\d+\.\d+-win-x64\.zip$/;
|
|
4
|
+
}
|
|
3
5
|
/** cargo-bins/cargo-binstall: the plain zip (the .full build adds nothing we use; .sig files are signatures). */
|
|
4
|
-
export
|
|
6
|
+
export function binstallAsset(arch) {
|
|
7
|
+
return arch === 'arm64'
|
|
8
|
+
? /^cargo-binstall-aarch64-pc-windows-msvc\.zip$/
|
|
9
|
+
: /^cargo-binstall-x86_64-pc-windows-msvc\.zip$/;
|
|
10
|
+
}
|
|
5
11
|
export const CLI_TOOLS = [
|
|
6
12
|
// gh_2.102.0_windows_amd64.zip holds bin\gh.exe.
|
|
7
|
-
{
|
|
13
|
+
{
|
|
14
|
+
name: 'gh',
|
|
15
|
+
repo: 'cli/cli',
|
|
16
|
+
asset: (arch) => arch === 'arm64' ? /^gh_\d+\.\d+\.\d+_windows_arm64\.zip$/ : /^gh_\d+\.\d+\.\d+_windows_amd64\.zip$/,
|
|
17
|
+
exe: 'gh.exe',
|
|
18
|
+
about: 'GitHub CLI',
|
|
19
|
+
size: '15 MB',
|
|
20
|
+
},
|
|
8
21
|
// zstd-v1.5.7-win64.zip; there is no arm64 build, and Windows on Arm runs the x64 one.
|
|
9
|
-
{
|
|
22
|
+
{
|
|
23
|
+
name: 'zstd',
|
|
24
|
+
repo: 'facebook/zstd',
|
|
25
|
+
asset: () => /^zstd-v\d+\.\d+\.\d+-win64\.zip$/,
|
|
26
|
+
exe: 'zstd.exe',
|
|
27
|
+
about: 'Zstandard compression',
|
|
28
|
+
size: '2 MB',
|
|
29
|
+
},
|
|
10
30
|
];
|
|
11
31
|
export const CLI_NAMES = [...CLI_TOOLS.map((t) => t.name), 'openssl'];
|
|
12
32
|
/**
|
|
13
33
|
* Which catalogue tools a sandbox gets. gh is never installed unless git access is "full": gh pushes, merges and edits
|
|
14
34
|
* branches through the GitHub API, so it would walk straight past a "readonly" (or "none") git guard.
|
|
15
35
|
*/
|
|
16
|
-
export
|
|
36
|
+
export function decideCli(settings, ctx) {
|
|
17
37
|
const decide = (name) => {
|
|
18
38
|
const setting = settings[name] ?? false;
|
|
19
39
|
if (name === 'gh' && setting !== false && ctx.gitAccess !== 'full')
|
|
20
|
-
return {
|
|
40
|
+
return {
|
|
41
|
+
on: false,
|
|
42
|
+
reason: 'needs provisioning.git.access "full" (gh can push and merge through the GitHub API)',
|
|
43
|
+
};
|
|
21
44
|
if (setting !== 'auto')
|
|
22
45
|
return { on: setting, reason: setting ? 'enabled in config' : 'disabled in config' };
|
|
23
46
|
if (name === 'gh' && ctx.hasGithubDir)
|
|
@@ -28,4 +51,4 @@ export const decideCli = (settings, ctx) => {
|
|
|
28
51
|
return { on: false, reason: 'not listed in toolchains.cli' };
|
|
29
52
|
};
|
|
30
53
|
return Object.fromEntries(CLI_NAMES.map((name) => [name, decide(name)]));
|
|
31
|
-
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** File names in the project's folder and its direct sub-folders ("api/go.mod"); read once per project. */
|
|
2
|
+
export declare function workspaceEntries(): string[];
|
|
3
|
+
/**
|
|
4
|
+
* true / false as configured. The host already turns "auto" into a decision at launch (core/detect-toolchains.ts);
|
|
5
|
+
* this only applies when a session file still says "auto": the workspace has one of the marker files.
|
|
6
|
+
*/
|
|
7
|
+
export declare function wanted(setting: boolean | 'auto', toolchain: string): boolean;
|
|
8
|
+
/** The first of these version files in the workspace root, parsed (e.g. .ruby-version "3.3.1"). */
|
|
9
|
+
export declare function versionFromFiles(files: string[], parse?: (text: string, name: string) => string | null): {
|
|
10
|
+
spec: string;
|
|
11
|
+
source: string;
|
|
12
|
+
} | null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Which toolchains a project needs, from the files in its folder.
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { exists } from '../runtime/fs.js';
|
|
5
|
+
import { projectWorkspace } from '../runtime/project-context.js';
|
|
6
|
+
import { MARKERS } from '../../core/detect/toolchains.js';
|
|
7
|
+
import { projectUses, specFromVersionFile } from '../../core/detect/versions.js';
|
|
8
|
+
const SKIP_DIRS = new Set(['node_modules', '.git', 'target', 'bin', 'obj', 'dist', 'build', 'vendor', '.venv', 'venv']);
|
|
9
|
+
const entries = new Map();
|
|
10
|
+
/** File names in the project's folder and its direct sub-folders ("api/go.mod"); read once per project. */
|
|
11
|
+
export function workspaceEntries() {
|
|
12
|
+
const workspace = projectWorkspace();
|
|
13
|
+
const known = entries.get(workspace.toLowerCase());
|
|
14
|
+
if (known)
|
|
15
|
+
return known;
|
|
16
|
+
const list = (dir) => {
|
|
17
|
+
try {
|
|
18
|
+
return fs.readdirSync(dir, { withFileTypes: true });
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const top = list(workspace);
|
|
25
|
+
const below = top
|
|
26
|
+
.filter((d) => d.isDirectory() && !d.name.startsWith('.') && !SKIP_DIRS.has(d.name.toLowerCase()))
|
|
27
|
+
.flatMap((d) => list(path.join(workspace, d.name))
|
|
28
|
+
.filter((f) => f.isFile())
|
|
29
|
+
.map((f) => d.name + '/' + f.name));
|
|
30
|
+
const found = [...top.filter((d) => d.isFile()).map((d) => d.name), ...below];
|
|
31
|
+
entries.set(workspace.toLowerCase(), found);
|
|
32
|
+
return found;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* true / false as configured. The host already turns "auto" into a decision at launch (core/detect-toolchains.ts);
|
|
36
|
+
* this only applies when a session file still says "auto": the workspace has one of the marker files.
|
|
37
|
+
*/
|
|
38
|
+
export function wanted(setting, toolchain) {
|
|
39
|
+
return setting === 'auto'
|
|
40
|
+
? projectUses(workspaceEntries(), MARKERS[toolchain] ?? [])
|
|
41
|
+
: setting;
|
|
42
|
+
}
|
|
43
|
+
/** The first of these version files in the workspace root, parsed (e.g. .ruby-version "3.3.1"). */
|
|
44
|
+
export function versionFromFiles(files, parse = (t) => specFromVersionFile(t)) {
|
|
45
|
+
for (const name of files) {
|
|
46
|
+
const file = path.join(projectWorkspace(), name);
|
|
47
|
+
if (!exists(file))
|
|
48
|
+
continue;
|
|
49
|
+
const spec = parse(fs.readFileSync(file, 'utf8'), name);
|
|
50
|
+
if (spec)
|
|
51
|
+
return { spec, source: name };
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type { ToolEnv } from './common.js';
|
|
5
|
-
export type { ToolchainOptions } from './plan.js';
|
|
6
|
-
export interface RunOptions {
|
|
7
|
-
/** Progress lines ("Installing Go, Rust (3 of 9 done)"); default: the sandbox's boot status. */
|
|
8
|
-
report?: (message: string) => void;
|
|
9
|
-
/** What machine-wide (shared) steps contributed at boot: reused instead of run again. */
|
|
10
|
-
reuse?: Record<string, ToolEnv>;
|
|
11
|
-
}
|
|
12
|
-
/** The combined environment, plus what each step contributed (the boot keeps it so later projects can reuse shared steps). */
|
|
13
|
-
export interface ToolchainResult extends ToolEnv {
|
|
14
|
-
steps: Record<string, ToolEnv>;
|
|
15
|
-
}
|
|
16
|
-
/** Provisions every enabled toolchain and database, and returns the combined environment for the agent. */
|
|
17
|
-
export declare const setupToolchains: (config: Toolchains, versions: ToolVersions, options: ToolchainOptions, run?: RunOptions) => Promise<ToolchainResult>;
|
|
1
|
+
export { setupToolchains, type ToolchainResult } from './setup.js';
|
|
2
|
+
export type { ToolEnv } from './tool-env.js';
|
|
3
|
+
export type { ToolchainOptions } from './step.js';
|
|
@@ -1,106 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// few at a time; downloads and installers do not block each other) and each is independent: one failing never blocks
|
|
3
|
-
// the rest. A step that needs another (Rust links with MinGW's gcc, uv installs the Python tools) waits for it.
|
|
4
|
-
// The boot runs it once for the launch folder; the session daemon runs it again for each project registered later,
|
|
5
|
-
// possibly several at once, so the same kind of step (two Node installs, two Go installs) never runs twice at a time.
|
|
6
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
7
|
-
import { watchDownloads } from '../../shared/download.js';
|
|
8
|
-
import { log, mkdirp, setSandboxStatus } from '../env.js';
|
|
9
|
-
import { emptyEnv, step, tool } from './common.js';
|
|
10
|
-
import { plan } from './plan.js';
|
|
11
|
-
/** How many installers run at once: enough to overlap downloads with installs, few enough not to thrash the disk. */
|
|
12
|
-
const PARALLEL = 4;
|
|
13
|
-
/** The step a download belongs to (several run at once), for its progress. */
|
|
14
|
-
const currentStep = new AsyncLocalStorage();
|
|
15
|
-
/** One lock per kind of step ("Node 20" and "Node 22" share nvm's folders): held while that step runs, in any run. */
|
|
16
|
-
const locks = new Map();
|
|
17
|
-
const lockKey = (name) => name.split(' ')[0].toLowerCase();
|
|
18
|
-
const exclusive = async (name, work) => {
|
|
19
|
-
const key = lockKey(name);
|
|
20
|
-
const previous = locks.get(key) ?? Promise.resolve();
|
|
21
|
-
let release = () => undefined;
|
|
22
|
-
const mine = new Promise((r) => { release = r; });
|
|
23
|
-
const chained = previous.then(() => mine);
|
|
24
|
-
locks.set(key, chained);
|
|
25
|
-
await previous;
|
|
26
|
-
try {
|
|
27
|
-
return await work();
|
|
28
|
-
}
|
|
29
|
-
finally {
|
|
30
|
-
release();
|
|
31
|
-
if (locks.get(key) === chained)
|
|
32
|
-
locks.delete(key);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
/** Runs the steps (each with its own environment) at most PARALLEL at a time, after the steps they depend on. */
|
|
36
|
-
const runSteps = async (steps, o) => {
|
|
37
|
-
const envs = new Map(steps.map((s) => [s.name, emptyEnv()]));
|
|
38
|
-
const finished = new Map();
|
|
39
|
-
const running = new Set();
|
|
40
|
-
const waiting = [];
|
|
41
|
-
let done = 0;
|
|
42
|
-
// The boot (no `report`) also publishes structured progress: what runs now, how far its download is, how many are done.
|
|
43
|
-
const percent = new Map();
|
|
44
|
-
const active = () => [...running].map((name) => ({ name, ...(percent.has(name) ? { percent: percent.get(name) } : {}) }));
|
|
45
|
-
const say = o.report ?? ((message) => setSandboxStatus('provisioning', message, { active: active(), done, total: steps.length }));
|
|
46
|
-
const report = () => { if (running.size)
|
|
47
|
-
say('Installing ' + [...running].join(', ') + ' (' + done + ' of ' + steps.length + ' done)'); };
|
|
48
|
-
if (!o.report)
|
|
49
|
-
watchDownloads(() => {
|
|
50
|
-
const name = currentStep.getStore();
|
|
51
|
-
return name ? (fraction) => { percent.set(name, Math.round(fraction * 100)); report(); } : null;
|
|
52
|
-
});
|
|
53
|
-
for (const s of steps) {
|
|
54
|
-
// Dependencies first (they are earlier in the plan, so their promises exist), then a free slot.
|
|
55
|
-
finished.set(s.name, (async () => {
|
|
56
|
-
await Promise.all((s.after ?? []).map((name) => finished.get(name)));
|
|
57
|
-
const reused = s.shared ? o.reuse?.[s.name] : undefined;
|
|
58
|
-
if (reused) {
|
|
59
|
-
envs.set(s.name, structuredClone(reused));
|
|
60
|
-
done++;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
while (running.size >= PARALLEL)
|
|
64
|
-
await new Promise((r) => waiting.push(r));
|
|
65
|
-
running.add(s.name);
|
|
66
|
-
report();
|
|
67
|
-
try {
|
|
68
|
-
await currentStep.run(s.name, () => exclusive(s.name, () => step(s.name, envs.get(s.name), async () => s.run(envs.get(s.name)))));
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
running.delete(s.name);
|
|
72
|
-
percent.delete(s.name);
|
|
73
|
-
done++;
|
|
74
|
-
report();
|
|
75
|
-
waiting.shift()?.();
|
|
76
|
-
}
|
|
77
|
-
})());
|
|
78
|
-
}
|
|
79
|
-
try {
|
|
80
|
-
await Promise.all(finished.values());
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
if (!o.report)
|
|
84
|
-
watchDownloads(null);
|
|
85
|
-
}
|
|
86
|
-
if (!o.report)
|
|
87
|
-
setSandboxStatus('provisioning', 'Set up ' + steps.length + ' toolchains and databases', { active: [], done, total: steps.length });
|
|
88
|
-
return envs;
|
|
89
|
-
};
|
|
90
|
-
/** Provisions every enabled toolchain and database, and returns the combined environment for the agent. */
|
|
91
|
-
export const setupToolchains = async (config, versions, options, run = {}) => {
|
|
92
|
-
const steps = plan(config, versions, options).filter((s) => s.on);
|
|
93
|
-
const envs = await runSteps(steps, run);
|
|
94
|
-
// Merged in plan order, so PATH order never depends on which download finished first.
|
|
95
|
-
const env = { ...emptyEnv(), steps: Object.fromEntries(envs) };
|
|
96
|
-
env.prepend.push(mkdirp(tool('bin')));
|
|
97
|
-
for (const part of envs.values()) {
|
|
98
|
-
Object.assign(env.vars, part.vars);
|
|
99
|
-
env.prepend.push(...part.prepend);
|
|
100
|
-
env.append.push(...part.append);
|
|
101
|
-
env.summary.push(...part.summary);
|
|
102
|
-
}
|
|
103
|
-
Object.assign(env.vars, config.environment);
|
|
104
|
-
log('Set up ' + steps.length + ' toolchains and databases.');
|
|
105
|
-
return env;
|
|
106
|
-
};
|
|
1
|
+
export { setupToolchains } from './setup.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReleaseAsset } from '../../shared/download/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A single file download that lands as `file` only when complete (and checksum-verified): a cut-off one never looks
|
|
4
|
+
* finished.
|
|
5
|
+
*/
|
|
6
|
+
export declare function downloadFile(url: string, file: string, sha256?: string | null): Promise<void>;
|
|
7
|
+
interface GithubInstall {
|
|
8
|
+
/** The folder the archive is unpacked into (replaced atomically). */
|
|
9
|
+
dest: string;
|
|
10
|
+
/** What the progress line says is being downloaded, with its size; a function gets the release asset. */
|
|
11
|
+
what: string | ((asset: ReleaseAsset) => string);
|
|
12
|
+
/** Look past the latest release for a matching asset. */
|
|
13
|
+
searchOlder?: boolean;
|
|
14
|
+
/** downloader.archive's `locate` / `up`: keep only the folder holding this file. */
|
|
15
|
+
locate?: string;
|
|
16
|
+
up?: number;
|
|
17
|
+
}
|
|
18
|
+
/** The newest GitHub release asset matching `pattern`, checksum-verified, unpacked into `dest`. */
|
|
19
|
+
export declare function installFromGithub(repo: string, pattern: RegExp, o: GithubInstall): Promise<void>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { downloader, githubAsset } from '../../shared/download/index.js';
|
|
3
|
+
import { log } from '../runtime/log.js';
|
|
4
|
+
/**
|
|
5
|
+
* A single file download that lands as `file` only when complete (and checksum-verified): a cut-off one never looks
|
|
6
|
+
* finished.
|
|
7
|
+
*/
|
|
8
|
+
export async function downloadFile(url, file, sha256 = null) {
|
|
9
|
+
const part = file + '.part';
|
|
10
|
+
try {
|
|
11
|
+
await downloader.file(url, part, sha256);
|
|
12
|
+
fs.rmSync(file, { force: true });
|
|
13
|
+
fs.renameSync(part, file);
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
fs.rmSync(part, { force: true });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** The newest GitHub release asset matching `pattern`, checksum-verified, unpacked into `dest`. */
|
|
20
|
+
export async function installFromGithub(repo, pattern, o) {
|
|
21
|
+
const asset = await githubAsset(repo, pattern, o.searchOlder);
|
|
22
|
+
log('Downloading ' + (typeof o.what === 'string' ? o.what : o.what(asset)) + ' ...');
|
|
23
|
+
await downloader.archive(asset.url, o.dest, {
|
|
24
|
+
sha256: asset.sha256,
|
|
25
|
+
fileName: asset.name,
|
|
26
|
+
...(o.locate ? { locate: o.locate } : {}),
|
|
27
|
+
...(o.up ? { up: o.up } : {}),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
// GOTOOLCHAIN=auto lets a go.mod that needs a newer Go fetch it itself.
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
import { dryRun
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { downloader, fetchJson } from '../../../shared/download/index.js';
|
|
6
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
7
|
+
import { execAsync } from '../../runtime/process.js';
|
|
8
|
+
import { exists } from '../../runtime/fs.js';
|
|
9
|
+
import { log } from '../../runtime/log.js';
|
|
10
|
+
import { arch, tool, versionOf } from '../tool-env.js';
|
|
11
|
+
import { installOnce } from '../package-ledger.js';
|
|
12
|
+
import { resolveCached } from '../version-cache.js';
|
|
13
|
+
import { pickGoRelease } from '../../../core/detect/versions.js';
|
|
14
|
+
const findRelease = async (spec) => pickGoRelease(await fetchJson('https://go.dev/dl/?mode=json&include=all'), spec) ??
|
|
15
|
+
Promise.reject(new Error('No Go release matches "' + spec + '"'));
|
|
16
|
+
export async function setupGo(env, config) {
|
|
11
17
|
if (dryRun) {
|
|
12
18
|
log('(dry run) would provision Go ' + config.version);
|
|
13
19
|
return;
|
|
@@ -20,14 +26,26 @@ export const setupGo = async (env, config) => {
|
|
|
20
26
|
if (!file)
|
|
21
27
|
throw new Error(version + ' has no Windows ' + goArch + ' zip');
|
|
22
28
|
log('Downloading Go ' + version.replace(/^go/, '') + ' (~80 MB once) ...');
|
|
23
|
-
await
|
|
29
|
+
await downloader.archive('https://go.dev/dl/' + file.filename, root, {
|
|
30
|
+
sha256: file.sha256,
|
|
31
|
+
locate: 'VERSION',
|
|
32
|
+
fileName: file.filename,
|
|
33
|
+
});
|
|
24
34
|
}
|
|
25
35
|
const GOPATH = tool('go-path');
|
|
26
|
-
const vars = {
|
|
36
|
+
const vars = {
|
|
37
|
+
GOROOT: root,
|
|
38
|
+
GOPATH,
|
|
39
|
+
GOBIN: path.join(GOPATH, 'bin'),
|
|
40
|
+
GOMODCACHE: path.join(GOPATH, 'pkg', 'mod'),
|
|
41
|
+
GOCACHE: tool('go-cache'),
|
|
42
|
+
GOTOOLCHAIN: 'auto',
|
|
43
|
+
GOTELEMETRY: 'off',
|
|
44
|
+
};
|
|
27
45
|
fs.mkdirSync(vars.GOBIN, { recursive: true });
|
|
28
46
|
Object.assign(env.vars, vars);
|
|
29
47
|
env.prepend.push(path.join(root, 'bin'), vars.GOBIN);
|
|
30
48
|
const go = path.join(root, 'bin', 'go.exe');
|
|
31
49
|
env.summary.push('go: ' + versionOf(go, ['version']));
|
|
32
50
|
await installOnce(env, 'go', config.tools, (pkg) => execAsync(go, ['install', pkg.includes('@') ? pkg : pkg + '@latest'], { env: { ...process.env, ...vars } }));
|
|
33
|
-
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Toolchains } from '../../../core/types.js';
|
|
2
|
+
import { type ToolEnv } from '../tool-env.js';
|
|
3
|
+
/**
|
|
4
|
+
* A JDK for tools that run on Java (DynamoDB Local): the newest one already installed, else the newest LTS. Returns its
|
|
5
|
+
* folder; the agent's Java on PATH stays whatever toolchains.java says.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ensureJdk(): Promise<string>;
|
|
8
|
+
export declare function setupJava(env: ToolEnv, config: Toolchains['java']): Promise<void>;
|
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
// caches live in persistent storage, so dependencies download once.
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { fetchJson, fetchText
|
|
6
|
-
import { dryRun
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { downloader, fetchJson, fetchText } from '../../../shared/download/index.js';
|
|
6
|
+
import { dryRun } from '../../runtime/paths.js';
|
|
7
|
+
import { exists } from '../../runtime/fs.js';
|
|
8
|
+
import { log, warn } from '../../runtime/log.js';
|
|
9
|
+
import { errMsg } from '../../../core/util/errors.js';
|
|
10
|
+
import { arch, emptyEnv, tool } from '../tool-env.js';
|
|
11
|
+
import { resolveCached } from '../version-cache.js';
|
|
12
|
+
import { versionFromFiles } from '../detect.js';
|
|
13
|
+
import { javaMajorFrom, pickPackageVersion } from '../../../core/detect/versions.js';
|
|
9
14
|
const ADOPTIUM = 'https://api.adoptium.net/v3';
|
|
10
15
|
const MAVEN = 'https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/';
|
|
11
16
|
const temurin = async (major) => {
|
|
12
|
-
const assets = await fetchJson(ADOPTIUM +
|
|
13
|
-
|
|
17
|
+
const assets = await fetchJson(ADOPTIUM +
|
|
18
|
+
'/assets/latest/' +
|
|
19
|
+
major +
|
|
20
|
+
'/hotspot?image_type=jdk&os=windows&vendor=eclipse&architecture=' +
|
|
21
|
+
(arch === 'arm64' ? 'aarch64' : 'x64'));
|
|
22
|
+
return (assets.find((a) => a.binary.package.name.endsWith('.zip')) ??
|
|
23
|
+
Promise.reject(new Error('No Temurin ' + major + ' JDK zip for Windows')));
|
|
14
24
|
};
|
|
15
25
|
/** A project's .java-version / .sdkmanrc, else the configured version ("lts" = the newest LTS). */
|
|
16
26
|
const javaMajor = async (config) => {
|
|
@@ -30,7 +40,11 @@ const setupJdk = async (env, config) => {
|
|
|
30
40
|
if (!exists(path.join(home, 'bin', 'java.exe'))) {
|
|
31
41
|
const asset = await temurin(major);
|
|
32
42
|
log('Downloading Java ' + release + ' (JDK, ~200 MB once) ...');
|
|
33
|
-
await
|
|
43
|
+
await downloader.archive(asset.binary.package.link, home, {
|
|
44
|
+
sha256: asset.binary.package.checksum,
|
|
45
|
+
locate: 'release',
|
|
46
|
+
fileName: asset.binary.package.name,
|
|
47
|
+
});
|
|
34
48
|
}
|
|
35
49
|
env.vars.JAVA_HOME = home;
|
|
36
50
|
env.prepend.push(path.join(home, 'bin'));
|
|
@@ -40,15 +54,20 @@ const setupJdk = async (env, config) => {
|
|
|
40
54
|
* A JDK for tools that run on Java (DynamoDB Local): the newest one already installed, else the newest LTS. Returns its
|
|
41
55
|
* folder; the agent's Java on PATH stays whatever toolchains.java says.
|
|
42
56
|
*/
|
|
43
|
-
export
|
|
57
|
+
export async function ensureJdk() {
|
|
44
58
|
const root = tool('java');
|
|
45
|
-
const installed = exists(root)
|
|
59
|
+
const installed = exists(root)
|
|
60
|
+
? fs
|
|
61
|
+
.readdirSync(root)
|
|
62
|
+
.filter((d) => exists(path.join(root, d, 'bin', 'java.exe')))
|
|
63
|
+
.sort((a, b) => b.localeCompare(a, undefined, { numeric: true }))
|
|
64
|
+
: [];
|
|
46
65
|
if (installed.length)
|
|
47
66
|
return path.join(root, installed[0]);
|
|
48
67
|
const scratch = emptyEnv();
|
|
49
68
|
await setupJdk(scratch, { enabled: true, version: 'lts', maven: false, gradle: false });
|
|
50
69
|
return scratch.vars.JAVA_HOME;
|
|
51
|
-
}
|
|
70
|
+
}
|
|
52
71
|
const setupMaven = async (env) => {
|
|
53
72
|
const version = await resolveCached('maven:3', async () => {
|
|
54
73
|
const versions = [...(await fetchText(MAVEN + 'maven-metadata.xml')).matchAll(/<version>([^<]+)<\/version>/g)].map((m) => m[1]);
|
|
@@ -58,7 +77,10 @@ const setupMaven = async (env) => {
|
|
|
58
77
|
if (!exists(path.join(home, 'bin', 'mvn.cmd'))) {
|
|
59
78
|
const url = MAVEN + version + '/apache-maven-' + version + '-bin.zip';
|
|
60
79
|
log('Downloading Maven ' + version + ' (~10 MB once) ...');
|
|
61
|
-
await
|
|
80
|
+
await downloader.archive(url, home, {
|
|
81
|
+
sha512: (await fetchText(url + '.sha512')).trim().split(/\s+/)[0],
|
|
82
|
+
locate: 'LICENSE',
|
|
83
|
+
});
|
|
62
84
|
}
|
|
63
85
|
const repo = tool('maven-repository');
|
|
64
86
|
Object.assign(env.vars, { MAVEN_HOME: home, M2_HOME: home, MAVEN_OPTS: '-Dmaven.repo.local=' + repo });
|
|
@@ -73,24 +95,41 @@ const setupGradle = async (env) => {
|
|
|
73
95
|
if (!current || current.version !== version)
|
|
74
96
|
throw new Error('Gradle ' + version + ' is not installed and cannot be downloaded right now');
|
|
75
97
|
log('Downloading Gradle ' + version + ' (~130 MB once) ...');
|
|
76
|
-
await
|
|
98
|
+
await downloader.archive(current.downloadUrl, home, {
|
|
99
|
+
sha256: (await fetchText(current.checksumUrl)).trim(),
|
|
100
|
+
locate: 'LICENSE',
|
|
101
|
+
fileName: 'gradle-' + version + '.zip',
|
|
102
|
+
});
|
|
77
103
|
}
|
|
78
104
|
const userHome = tool('gradle-home');
|
|
79
105
|
fs.mkdirSync(userHome, { recursive: true });
|
|
80
106
|
// File-system watching does not work on mapped folders (harmless but noisy "Couldn't add watch" on every build).
|
|
81
|
-
Object.assign(env.vars, {
|
|
107
|
+
Object.assign(env.vars, {
|
|
108
|
+
GRADLE_HOME: home,
|
|
109
|
+
GRADLE_USER_HOME: userHome,
|
|
110
|
+
GRADLE_OPTS: '-Dorg.gradle.vfs.watch=false',
|
|
111
|
+
});
|
|
82
112
|
env.prepend.push(path.join(home, 'bin'));
|
|
83
113
|
env.summary.push('gradle: ' + version);
|
|
84
114
|
};
|
|
85
|
-
export
|
|
115
|
+
export async function setupJava(env, config) {
|
|
86
116
|
if (dryRun) {
|
|
87
|
-
log('(dry run) would provision Java ' +
|
|
117
|
+
log('(dry run) would provision Java ' +
|
|
118
|
+
config.version +
|
|
119
|
+
(config.maven ? ' + Maven' : '') +
|
|
120
|
+
(config.gradle ? ' + Gradle' : ''));
|
|
88
121
|
return;
|
|
89
122
|
}
|
|
90
123
|
await setupJdk(env, config);
|
|
91
124
|
// Maven and Gradle are extras: one failing must not take the JDK down with it.
|
|
92
|
-
for (const [on, name, work] of [
|
|
125
|
+
for (const [on, name, work] of [
|
|
126
|
+
[config.maven, 'Maven', setupMaven],
|
|
127
|
+
[config.gradle, 'Gradle', setupGradle],
|
|
128
|
+
]) {
|
|
93
129
|
if (on)
|
|
94
|
-
await work(env).catch((e) => {
|
|
130
|
+
await work(env).catch((e) => {
|
|
131
|
+
env.summary.push(name.toLowerCase() + ': FAILED');
|
|
132
|
+
warn(name + ' setup failed (continuing without it): ' + errMsg(e));
|
|
133
|
+
});
|
|
95
134
|
}
|
|
96
|
-
}
|
|
135
|
+
}
|