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
package/dist/cli/tui/dialogs.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { Text } from './text.js';
|
|
2
|
-
import { Theme } from './theme.js';
|
|
3
|
-
/** Plain lines are wrapped to the width; coloured ones are kept as they are (the frame cuts them). */
|
|
4
|
-
const paragraphs = (lines, width) => lines.flatMap((l) => (Text.strip(l) === l ? Text.wrap(l, width - 4) : [l]).map((x) => ' ' + x));
|
|
5
|
-
/** One line of text. Resolves to the text, or undefined when you press Esc. */
|
|
6
|
-
export class TextScreen {
|
|
7
|
-
o;
|
|
8
|
-
value;
|
|
9
|
-
cursor;
|
|
10
|
-
problem;
|
|
11
|
-
constructor(o) {
|
|
12
|
-
this.o = o;
|
|
13
|
-
this.value = o.initial ?? '';
|
|
14
|
-
this.cursor = [...this.value].length;
|
|
15
|
-
}
|
|
16
|
-
render(size) {
|
|
17
|
-
const width = Math.min(size.width - 4, 100);
|
|
18
|
-
const chars = [...this.value];
|
|
19
|
-
// Scroll the field so the cursor stays visible.
|
|
20
|
-
const inner = width - 4;
|
|
21
|
-
const start = Math.max(0, this.cursor - inner + 1);
|
|
22
|
-
const shown = chars.slice(start, start + inner);
|
|
23
|
-
const before = shown.slice(0, this.cursor - start).join('');
|
|
24
|
-
const at = shown[this.cursor - start] ?? ' ';
|
|
25
|
-
const after = shown.slice(this.cursor - start + 1).join('');
|
|
26
|
-
const text = this.value === '' && this.o.placeholder ? Theme.muted(this.o.placeholder) : before + (Theme.colour ? '\x1b[7m' + at + '\x1b[27m' : '_') + after;
|
|
27
|
-
const body = [
|
|
28
|
-
'',
|
|
29
|
-
' ' + Theme.bold(this.o.label),
|
|
30
|
-
...(this.o.about?.length ? paragraphs(this.o.about, size.width).map((l) => Theme.muted(l)) : []),
|
|
31
|
-
'',
|
|
32
|
-
' ' + Theme.accent('╭' + '─'.repeat(width - 2) + '╮'),
|
|
33
|
-
' ' + Theme.accent('│') + ' ' + Text.fit(text, inner) + ' ' + Theme.accent('│'),
|
|
34
|
-
' ' + Theme.accent('╰' + '─'.repeat(width - 2) + '╯'),
|
|
35
|
-
this.problem ? ' ' + Theme.error(Theme.glyph.cross + ' ' + this.problem) : '',
|
|
36
|
-
];
|
|
37
|
-
return { path: this.o.path, body, keys: [['↵', 'save'], ['esc', 'cancel'], ['ctrl+u', 'clear'], ['←→', 'move']] };
|
|
38
|
-
}
|
|
39
|
-
handle(key) {
|
|
40
|
-
const chars = [...this.value];
|
|
41
|
-
const set = (next, cursor) => { this.value = next.join(''); this.cursor = Math.max(0, Math.min(next.length, cursor)); this.check(); };
|
|
42
|
-
if (key.name === 'escape')
|
|
43
|
-
return { done: undefined };
|
|
44
|
-
if (key.name === 'return') {
|
|
45
|
-
if (this.value === '' && !this.o.allowEmpty)
|
|
46
|
-
return { done: undefined };
|
|
47
|
-
const verdict = this.o.validate?.(this.value) ?? true;
|
|
48
|
-
if (verdict !== true) {
|
|
49
|
-
this.problem = verdict;
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
return { done: this.value };
|
|
53
|
-
}
|
|
54
|
-
if (key.name === 'left') {
|
|
55
|
-
this.cursor = Math.max(0, this.cursor - 1);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
if (key.name === 'right') {
|
|
59
|
-
this.cursor = Math.min(chars.length, this.cursor + 1);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (key.name === 'home') {
|
|
63
|
-
this.cursor = 0;
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (key.name === 'end') {
|
|
67
|
-
this.cursor = chars.length;
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
if (key.name === 'backspace') {
|
|
71
|
-
if (this.cursor > 0)
|
|
72
|
-
set([...chars.slice(0, this.cursor - 1), ...chars.slice(this.cursor)], this.cursor - 1);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (key.name === 'delete') {
|
|
76
|
-
set([...chars.slice(0, this.cursor), ...chars.slice(this.cursor + 1)], this.cursor);
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (key.ctrl && key.name === 'u') {
|
|
80
|
-
set([], 0);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (key.text) {
|
|
84
|
-
const add = [...key.text.replace(/[\r\n]/g, '')];
|
|
85
|
-
set([...chars.slice(0, this.cursor), ...add, ...chars.slice(this.cursor)], this.cursor + add.length);
|
|
86
|
-
}
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
check() {
|
|
90
|
-
const verdict = this.value === '' ? true : this.o.validate?.(this.value) ?? true;
|
|
91
|
-
this.problem = verdict === true ? undefined : verdict;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/** Yes or no. Esc answers no. */
|
|
95
|
-
export class ConfirmScreen {
|
|
96
|
-
o;
|
|
97
|
-
yes;
|
|
98
|
-
constructor(o) {
|
|
99
|
-
this.o = o;
|
|
100
|
-
this.yes = o.initial ?? true;
|
|
101
|
-
}
|
|
102
|
-
render(size) {
|
|
103
|
-
const button = (label, on, danger = false) => (on ? (danger ? Theme.colour ? '\x1b[48;5;160m\x1b[97m ' + label + ' \x1b[0m' : '[' + label + ']' : Theme.selected(' ' + label + ' ')) : Theme.muted(' ' + label + ' '));
|
|
104
|
-
const body = [
|
|
105
|
-
'',
|
|
106
|
-
' ' + Theme.bold(this.o.question),
|
|
107
|
-
...(this.o.about?.length ? ['', ...paragraphs(this.o.about, size.width)] : []),
|
|
108
|
-
'',
|
|
109
|
-
' ' + button(this.o.yes ?? 'Yes', this.yes, this.o.danger) + ' ' + button(this.o.no ?? 'No', !this.yes),
|
|
110
|
-
];
|
|
111
|
-
return { path: this.o.path, body, keys: [['←→', 'choose'], ['↵', 'confirm'], ['y/n', 'answer'], ['esc', 'no']] };
|
|
112
|
-
}
|
|
113
|
-
handle(key) {
|
|
114
|
-
if (key.name === 'left' || key.name === 'right' || key.name === 'tab') {
|
|
115
|
-
this.yes = !this.yes;
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
if (key.text?.toLowerCase() === 'y')
|
|
119
|
-
return { done: true };
|
|
120
|
-
if (key.text?.toLowerCase() === 'n' || key.name === 'escape')
|
|
121
|
-
return { done: false };
|
|
122
|
-
if (key.name === 'return')
|
|
123
|
-
return { done: this.yes };
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/** Text to read (scrolls); any key but the arrows closes it. */
|
|
128
|
-
export class MessageScreen {
|
|
129
|
-
o;
|
|
130
|
-
offset = 0;
|
|
131
|
-
height = 10;
|
|
132
|
-
constructor(o) {
|
|
133
|
-
this.o = o;
|
|
134
|
-
}
|
|
135
|
-
render(size) {
|
|
136
|
-
const paint = this.o.tone === 'ok' ? Theme.ok : this.o.tone === 'warn' ? Theme.warn : this.o.tone === 'error' ? Theme.error : Theme.bold;
|
|
137
|
-
const head = this.o.title ? ['', ' ' + paint(this.o.title), ''] : [''];
|
|
138
|
-
const lines = this.o.lines.flatMap((l) => (Text.width(l) > size.width - 4 && Text.strip(l) === l ? Text.wrap(l, size.width - 4) : [l])).map((l) => ' ' + l);
|
|
139
|
-
this.height = size.height - head.length;
|
|
140
|
-
this.offset = Math.max(0, Math.min(this.offset, lines.length - this.height));
|
|
141
|
-
return { path: this.o.path, body: [...head, ...lines.slice(this.offset, this.offset + this.height)], keys: lines.length > this.height ? [['↑↓', 'scroll'], ['↵', 'close']] : [['any key', 'close']] };
|
|
142
|
-
}
|
|
143
|
-
handle(key) {
|
|
144
|
-
if (key.name === 'up') {
|
|
145
|
-
this.offset--;
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
if (key.name === 'down') {
|
|
149
|
-
this.offset++;
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
if (key.name === 'pageup') {
|
|
153
|
-
this.offset -= this.height;
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
if (key.name === 'pagedown') {
|
|
157
|
-
this.offset += this.height;
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
return { done: undefined };
|
|
161
|
-
}
|
|
162
|
-
}
|
package/dist/core/config.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
// Built-in defaults and loading the user config (~/.agent-sandbox/config.json). Shapes live in schema.ts.
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import _ from 'lodash';
|
|
5
|
-
import { Config as ConfigSchema, describeIssues } from './schema.js';
|
|
6
|
-
import { fail, homeDir, readJsonc } from './util.js';
|
|
7
|
-
export const DEFAULTS = {
|
|
8
|
-
defaultHarness: 'claude',
|
|
9
|
-
guestWorkspace: 'auto',
|
|
10
|
-
readOnly: false,
|
|
11
|
-
workspaceFilter: { enabled: false, exclude: [], include: [] },
|
|
12
|
-
audit: { enabled: false, days: 14, maxMb: 100, processes: true, files: true },
|
|
13
|
-
mappings: [],
|
|
14
|
-
sandbox: { memoryMb: 'auto', maxMemoryMb: 32768, maxMemoryPercent: 80, cpuLimit: 80, pageFileMb: 16384, reserveHostMb: 8192, vGpu: false, networking: true, clipboard: true, audioInput: false, videoInput: false, printerRedirection: false, protectedClient: true, headless: false, keepAwake: true },
|
|
15
|
-
storage: { root: '%LOCALAPPDATA%\\AgentSandbox', persistAgentState: true, dataName: 'default', markSandboxFiles: true, warnDataGb: 50 },
|
|
16
|
-
network: { blockPrivateRanges: true, allowOnly: [], blockHosts: [], forwardPorts: [], dns: [], proxy: '' },
|
|
17
|
-
provisioning: { copyFromHost: true, fallbackToInstall: true, refresh: false, git: { enabled: true, access: 'full' }, terminal: { enabled: true }, conpty: { enabled: true } },
|
|
18
|
-
downloads: { requireChecksum: false },
|
|
19
|
-
toolchains: {
|
|
20
|
-
node: { version: 'host', extraVersions: [], corepack: true, volta: 'auto', globalPackages: [] },
|
|
21
|
-
python: { enabled: 'auto', version: '3', python2: true, pyenv: 'auto', tools: [] },
|
|
22
|
-
rust: { enabled: 'auto', toolchain: 'stable', host: 'auto', components: [], targets: [], crates: [], targetDir: 'separate' },
|
|
23
|
-
msvc: { enabled: 'auto', acceptLicense: false, msvcVersion: 'latest', sdkVersion: 'latest' },
|
|
24
|
-
cpp: { enabled: 'auto', flexBison: true },
|
|
25
|
-
dotnet: { enabled: 'auto', channels: ['LTS'], tools: [], workloads: [], frameworkTargets: ['net48', 'net472'], netfx35: false },
|
|
26
|
-
// Bigger downloads only for projects that use them.
|
|
27
|
-
go: { enabled: 'auto', version: 'stable', tools: [] },
|
|
28
|
-
java: { enabled: 'auto', version: 'lts', maven: true, gradle: true },
|
|
29
|
-
ruby: { enabled: 'auto', version: '3', gems: [] },
|
|
30
|
-
php: { enabled: 'auto', version: '8', composer: true },
|
|
31
|
-
deno: { enabled: 'auto' },
|
|
32
|
-
pwsh: { enabled: 'auto' },
|
|
33
|
-
cli: { gh: 'auto', zstd: false, openssl: 'auto' },
|
|
34
|
-
bun: { enabled: true },
|
|
35
|
-
uv: { enabled: true },
|
|
36
|
-
vcRuntime: { enabled: false },
|
|
37
|
-
mesa: { enabled: false, vulkan: false },
|
|
38
|
-
vscode: { enabled: true, setup: true, recommended: true, extensions: [] },
|
|
39
|
-
environment: {},
|
|
40
|
-
},
|
|
41
|
-
databases: {
|
|
42
|
-
postgres: { enabled: 'auto', version: 'latest', port: 5432 },
|
|
43
|
-
mysql: { enabled: 'auto', version: 'lts', port: 3306 },
|
|
44
|
-
mongodb: { enabled: 'auto', version: 'latest', port: 27017 },
|
|
45
|
-
redis: { enabled: 'auto', port: 6379 },
|
|
46
|
-
dynamodb: { enabled: 'auto', port: 8000, adminPort: 8001, admin: true },
|
|
47
|
-
sqlserver: { enabled: 'auto' },
|
|
48
|
-
},
|
|
49
|
-
attach: { enabled: true, reuseSession: true, auto: false, autoHide: false },
|
|
50
|
-
agentCommands: { enabled: false, agents: 'auto' },
|
|
51
|
-
secrets: { strip: true, allow: [], patterns: [], warnFiles: true },
|
|
52
|
-
personalization: { enabled: true },
|
|
53
|
-
apps: { install: [], custom: {} },
|
|
54
|
-
claudeProfile: { enabled: true, hostDir: 'auto', include: ['settings.json', 'CLAUDE.md', 'commands', 'agents', 'skills', 'plugins'], globalStateFile: 'auto', copyCredentials: false, overwrite: true, syncHistory: true, historyScope: 'project', syncClaudeMem: true, syncClaudeMemBack: false },
|
|
55
|
-
harnesses: {
|
|
56
|
-
claude: { hostExecutable: 'claude.exe', hostDir: 'auto', npmPackage: '@anthropic-ai/claude-code@latest', npmBin: 'claude', arguments: [], environment: { DISABLE_AUTOUPDATER: '1' }, resumeArguments: ['--continue'] },
|
|
57
|
-
codex: { npmPackage: '@openai/codex@latest', npmBin: 'codex', arguments: [], environment: {}, resumeArguments: ['resume', '--last'] },
|
|
58
|
-
gemini: { npmPackage: '@google/gemini-cli@latest', npmBin: 'gemini', arguments: [], environment: {}, resumeArguments: ['--resume'] },
|
|
59
|
-
// Not tested by us; installed from each project's official npm / PyPI package.
|
|
60
|
-
opencode: { npmPackage: 'opencode-ai@latest', npmBin: 'opencode', arguments: [], environment: {}, resumeArguments: ['--continue'] },
|
|
61
|
-
qwen: { npmPackage: '@qwen-code/qwen-code@latest', npmBin: 'qwen', arguments: [], environment: {}, resumeArguments: ['--continue'] },
|
|
62
|
-
crush: { npmPackage: '@charmland/crush@latest', npmBin: 'crush', arguments: [], environment: {}, resumeArguments: ['--continue'] },
|
|
63
|
-
copilot: { npmPackage: '@github/copilot@latest', npmBin: 'copilot', arguments: [], environment: {}, resumeArguments: ['--continue'] },
|
|
64
|
-
kilo: { npmPackage: '@kilocode/cli@latest', npmBin: 'kilo', arguments: [], environment: {}, resumeArguments: ['--continue'] },
|
|
65
|
-
amp: { npmPackage: '@ampcode/cli@latest', npmBin: 'amp', arguments: [], environment: {} },
|
|
66
|
-
cline: { npmPackage: 'cline@latest', npmBin: 'cline', arguments: [], environment: {} },
|
|
67
|
-
continue: { npmPackage: '@continuedev/cli@latest', npmBin: 'cn', arguments: [], environment: {}, resumeArguments: ['--resume'] },
|
|
68
|
-
kimi: { npmPackage: '@moonshot-ai/kimi-code@latest', npmBin: 'kimi', arguments: [], environment: {}, resumeArguments: ['-c'] },
|
|
69
|
-
// DeepSeek has no official coding CLI; these two community agents are built for it.
|
|
70
|
-
reasonix: { npmPackage: 'reasonix@latest', npmBin: 'reasonix', arguments: [], environment: {} },
|
|
71
|
-
deepseek: { npmPackage: 'codewhale@latest', npmBin: 'codewhale', arguments: [], environment: {} },
|
|
72
|
-
aider: { uvPackage: 'aider-chat', uvBin: 'aider', arguments: [], environment: {}, resumeArguments: ['--restore-chat-history'] },
|
|
73
|
-
},
|
|
74
|
-
hooks: { failFast: false },
|
|
75
|
-
projects: { all: false, exclude: [], roots: [], askToAddRoot: true, declinedRoots: [], allowOutsideMappings: 'ask', wsbShare: true },
|
|
76
|
-
};
|
|
77
|
-
/** Per-user folder for config and hooks. Survives reinstalling the npm package. */
|
|
78
|
-
export const userDir = () => process.env.AGENT_SANDBOX_HOME ?? path.join(homeDir(), '.agent-sandbox');
|
|
79
|
-
export const userConfigPath = () => path.join(userDir(), 'config.json');
|
|
80
|
-
/** Deep merge where arrays (and anything that is not a plain object) replace instead of merging element by element. */
|
|
81
|
-
export const mergeConfig = (base, extra) => _.mergeWith(_.cloneDeep(base), extra, (_target, source) => (Array.isArray(source) ? source : undefined));
|
|
82
|
-
/** Validates a full config; throws one readable error listing every problem. */
|
|
83
|
-
export const validateConfig = (config, source) => {
|
|
84
|
-
const parsed = ConfigSchema.safeParse(config);
|
|
85
|
-
if (!parsed.success)
|
|
86
|
-
fail(source + ' is not valid:\n - ' + describeIssues(parsed.error).join('\n - '));
|
|
87
|
-
return parsed.data;
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* Lookup order: --config, %AGENT_SANDBOX_CONFIG%, ~/.agent-sandbox/config.json, built-in defaults.
|
|
91
|
-
* Whatever file is found (JSON with comments) is merged over the defaults, so it only needs the keys you change.
|
|
92
|
-
*/
|
|
93
|
-
export const loadConfig = (explicitPath) => {
|
|
94
|
-
const requested = explicitPath ?? process.env.AGENT_SANDBOX_CONFIG;
|
|
95
|
-
const full = path.resolve(requested ?? userConfigPath());
|
|
96
|
-
if (!fs.existsSync(full)) {
|
|
97
|
-
if (requested)
|
|
98
|
-
fail('Config file not found: ' + full, 'Check the --config path or AGENT_SANDBOX_CONFIG, or create one with: sandbox config init');
|
|
99
|
-
return { config: structuredClone(DEFAULTS), configPath: null, base: userDir() };
|
|
100
|
-
}
|
|
101
|
-
return { config: validateConfig(mergeConfig(DEFAULTS, readJsonc(full)), full), configPath: full, base: path.dirname(full) };
|
|
102
|
-
};
|
|
103
|
-
export const assertNoGuestOverlap = (mappings) => {
|
|
104
|
-
const normal = mappings.map((m) => m.guest.replace(/\\+$/, '').toLowerCase());
|
|
105
|
-
normal.forEach((a, i) => normal.slice(i + 1).forEach((b, j) => {
|
|
106
|
-
if (a === b || a.startsWith(b + '\\') || b.startsWith(a + '\\'))
|
|
107
|
-
fail('Two folders map to overlapping places in the sandbox: ' + mappings[i].guest + ' and ' + mappings[i + 1 + j].guest + '.', 'Give each mapping its own guest folder (one must not be inside the other).');
|
|
108
|
-
}));
|
|
109
|
-
};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { Config, ResolvedMapping } from './types.js';
|
|
2
|
-
/** The protections of a running sandbox, by setting path (`sandbox.networking`, `provisioning.git.access`, ...). */
|
|
3
|
-
export type Protections = Record<string, boolean | string>;
|
|
4
|
-
export declare const protectionsOf: (config: Config) => Protections;
|
|
5
|
-
export interface JoinCheck {
|
|
6
|
-
/** Settings this project needs stricter than the running sandbox: the launch is refused. */
|
|
7
|
-
stricter: string[];
|
|
8
|
-
/** Settings it would have looser: it gets the sandbox's (stricter) value; shown as a note. */
|
|
9
|
-
looser: string[];
|
|
10
|
-
/** Settings the sandbox turned on at its start for another project you allowed them for: shared, shown as a note. */
|
|
11
|
-
shared: string[];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Compares a project's effective protections with the running sandbox's. Hub projects are always read/write
|
|
15
|
-
* (Windows Sandbox maps the hub once, read/write), so a read-only project counts as stricter. `widened`: the boot
|
|
16
|
-
* settings the sandbox turned on for another of its projects (with your consent); a project that has them off
|
|
17
|
-
* shares them instead of being refused.
|
|
18
|
-
*/
|
|
19
|
-
export declare const checkJoin: (running: Protections, wanted: Protections, widened?: string[]) => JoinCheck;
|
|
20
|
-
/** .wsb devices a project may want on (only when your settings or your answer for that project allow it). */
|
|
21
|
-
export declare const BOOT_SETTINGS: string[];
|
|
22
|
-
/** What the running sandbox booted with (host-only registry). */
|
|
23
|
-
export interface BootRecord {
|
|
24
|
-
memoryMb: number | null;
|
|
25
|
-
mappings: ResolvedMapping[];
|
|
26
|
-
}
|
|
27
|
-
/** What a project wants that the running sandbox started without. */
|
|
28
|
-
export interface Missing {
|
|
29
|
-
settings: string[];
|
|
30
|
-
memoryMb: number | null;
|
|
31
|
-
mappings: ResolvedMapping[];
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* The boot-only things `config` (a project's effective config: your settings, its approved file, your answers) asks
|
|
35
|
-
* for that the running sandbox lacks. `exists`: optional mappings whose folder is missing are no wish.
|
|
36
|
-
*/
|
|
37
|
-
export declare const missingAtBoot: (running: Protections, boot: BootRecord, config: Config, exists?: (folder: string) => boolean) => Missing;
|
|
38
|
-
export declare const nothingMissing: (m: Missing) => boolean;
|
|
39
|
-
/** "mw2-agent wants vGPU and 2 folders (C:\Steam\..., F:\SteamLibrary\...), but this sandbox started without them." */
|
|
40
|
-
export declare const describeMissing: (project: string, m: Missing) => string;
|
|
41
|
-
/** "Set sandbox.vGpu (or the mappings) in your own settings to have them in every sandbox." */
|
|
42
|
-
export declare const missingTip: (m: Missing) => string;
|
|
43
|
-
/** A project mapped at boot besides the launch folder, with its effective config. */
|
|
44
|
-
export interface BootWant {
|
|
45
|
-
name: string;
|
|
46
|
-
config: Config;
|
|
47
|
-
}
|
|
48
|
-
export interface Widened {
|
|
49
|
-
config: Config;
|
|
50
|
-
/** Setting -> the project it was turned on for. */
|
|
51
|
-
widened: Record<string, string>;
|
|
52
|
-
notes: string[];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* The launch folder's config plus what the other projects mapped at boot want: their allowed .wsb devices, a fixed
|
|
56
|
-
* memory size larger than the launch's, and their mappings (placed with every other mapping at launch).
|
|
57
|
-
* `keepOff`: devices the launch folder's own .sandbox-config.json switched off; they stay off.
|
|
58
|
-
*/
|
|
59
|
-
export declare const widenForProjects: (launch: Config, others: BootWant[], opts?: {
|
|
60
|
-
keepOff?: string[];
|
|
61
|
-
exists?: (folder: string) => boolean;
|
|
62
|
-
}) => Widened;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
// Joining a running sandbox from another project. Its protections (network, LAN block, git access, clipboard, the
|
|
2
|
-
// .wsb device settings, read-only) are machine-wide: they were fixed when the sandbox booted for the first project.
|
|
3
|
-
// A second project may never loosen them, and a project that needs a STRICTER setting than the running sandbox has
|
|
4
|
-
// cannot get it there without changing it for the sessions already running, so that launch is refused with a clear
|
|
5
|
-
// message. A project asking for less than the sandbox has simply runs with the sandbox's (stricter) setting.
|
|
6
|
-
// The other direction: what a project WANTS at boot (a .wsb device you allowed for it, more memory, its mappings) and
|
|
7
|
-
// the running sandbox started without. Those can only come with a restart, so they are named (missingAtBoot), and a
|
|
8
|
-
// sandbox started with several projects boots with all of their allowed wants (widenForProjects).
|
|
9
|
-
// Pure: the host checks it before registering a project, the tests drive it directly.
|
|
10
|
-
import _ from 'lodash';
|
|
11
|
-
import { GIT_STRICTNESS, NEVER_LOOSER, OFF_IS_SAFER, ON_IS_SAFER } from './local-config.js';
|
|
12
|
-
export const protectionsOf = (config) => Object.fromEntries(NEVER_LOOSER.map((p) => [p, _.get(config, p)]));
|
|
13
|
-
/** 1 = `wanted` is stricter than `running`, -1 = looser, 0 = the same. */
|
|
14
|
-
const compare = (setting, running, wanted) => {
|
|
15
|
-
if (setting === 'provisioning.git.access')
|
|
16
|
-
return Math.sign((GIT_STRICTNESS[String(wanted)] ?? 0) - (GIT_STRICTNESS[String(running)] ?? 0));
|
|
17
|
-
if (ON_IS_SAFER.includes(setting))
|
|
18
|
-
return Number(Boolean(wanted)) - Number(Boolean(running));
|
|
19
|
-
if (OFF_IS_SAFER.includes(setting))
|
|
20
|
-
return Number(Boolean(running)) - Number(Boolean(wanted));
|
|
21
|
-
return 0;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Compares a project's effective protections with the running sandbox's. Hub projects are always read/write
|
|
25
|
-
* (Windows Sandbox maps the hub once, read/write), so a read-only project counts as stricter. `widened`: the boot
|
|
26
|
-
* settings the sandbox turned on for another of its projects (with your consent); a project that has them off
|
|
27
|
-
* shares them instead of being refused.
|
|
28
|
-
*/
|
|
29
|
-
export const checkJoin = (running, wanted, widened = []) => {
|
|
30
|
-
const stricter = [];
|
|
31
|
-
const looser = [];
|
|
32
|
-
const shared = [];
|
|
33
|
-
for (const setting of NEVER_LOOSER) {
|
|
34
|
-
const result = compare(setting, setting === 'readOnly' ? false : running[setting], wanted[setting]);
|
|
35
|
-
if (result > 0 && widened.includes(setting))
|
|
36
|
-
shared.push(setting);
|
|
37
|
-
else if (result > 0)
|
|
38
|
-
stricter.push(setting + ' = ' + JSON.stringify(wanted[setting]) + ' (the running sandbox has ' + JSON.stringify(setting === 'readOnly' ? false : running[setting]) + ')');
|
|
39
|
-
if (result < 0)
|
|
40
|
-
looser.push(setting + ' stays ' + JSON.stringify(running[setting]));
|
|
41
|
-
}
|
|
42
|
-
return { stricter, looser, shared };
|
|
43
|
-
};
|
|
44
|
-
// ---- what a project wants at boot ---------------------------------------------------------------------------------
|
|
45
|
-
/** .wsb devices a project may want on (only when your settings or your answer for that project allow it). */
|
|
46
|
-
export const BOOT_SETTINGS = ['sandbox.vGpu', 'sandbox.networking', 'sandbox.clipboard', 'sandbox.audioInput', 'sandbox.videoInput', 'sandbox.printerRedirection'];
|
|
47
|
-
const LABELS = {
|
|
48
|
-
'sandbox.vGpu': 'vGPU', 'sandbox.networking': 'networking', 'sandbox.clipboard': 'the shared clipboard',
|
|
49
|
-
'sandbox.audioInput': 'the microphone', 'sandbox.videoInput': 'the camera', 'sandbox.printerRedirection': 'printers',
|
|
50
|
-
};
|
|
51
|
-
const sameHost = (a, b) => a.toLowerCase().replace(/\\+$/, '') === b.toLowerCase().replace(/\\+$/, '');
|
|
52
|
-
/** `m`'s folder is mapped, wherever the launch placed it (read-only is enough for a read-only wish). */
|
|
53
|
-
const isMapped = (mapped, m) => mapped.some((x) => sameHost(x.host, m.host) && (m.readOnly || !x.readOnly));
|
|
54
|
-
/**
|
|
55
|
-
* The boot-only things `config` (a project's effective config: your settings, its approved file, your answers) asks
|
|
56
|
-
* for that the running sandbox lacks. `exists`: optional mappings whose folder is missing are no wish.
|
|
57
|
-
*/
|
|
58
|
-
export const missingAtBoot = (running, boot, config, exists = () => true) => ({
|
|
59
|
-
settings: BOOT_SETTINGS.filter((s) => _.get(config, s) === true && running[s] === false),
|
|
60
|
-
memoryMb: typeof config.sandbox.memoryMb === 'number' && boot.memoryMb !== null && config.sandbox.memoryMb > boot.memoryMb ? config.sandbox.memoryMb : null,
|
|
61
|
-
mappings: config.mappings.filter((m) => (!m.optional || exists(m.host)) && !isMapped(boot.mappings, m)).map((m) => ({ host: m.host, guest: m.guest ?? m.host, readOnly: m.readOnly })),
|
|
62
|
-
});
|
|
63
|
-
export const nothingMissing = (m) => m.settings.length === 0 && m.memoryMb === null && m.mappings.length === 0;
|
|
64
|
-
const listing = (items) => items.length <= 1 ? items.join('') : items.slice(0, -1).join(', ') + ' and ' + items[items.length - 1];
|
|
65
|
-
/** "mw2-agent wants vGPU and 2 folders (C:\Steam\..., F:\SteamLibrary\...), but this sandbox started without them." */
|
|
66
|
-
export const describeMissing = (project, m) => {
|
|
67
|
-
const items = [
|
|
68
|
-
...m.settings.map((s) => LABELS[s] ?? s),
|
|
69
|
-
...(m.memoryMb !== null ? [m.memoryMb + ' MB of memory'] : []),
|
|
70
|
-
...(m.mappings.length ? [m.mappings.length + ' folder' + (m.mappings.length === 1 ? '' : 's') + ' (' + m.mappings.map((x) => x.host).join(', ') + ')'] : []),
|
|
71
|
-
];
|
|
72
|
-
return project + ' wants ' + listing(items) + ', but this sandbox started without ' + (items.length === 1 && !m.mappings.length ? 'it' : 'them') + '.';
|
|
73
|
-
};
|
|
74
|
-
/** "Set sandbox.vGpu (or the mappings) in your own settings to have them in every sandbox." */
|
|
75
|
-
export const missingTip = (m) => {
|
|
76
|
-
const keys = [...m.settings, ...(m.memoryMb !== null ? ['sandbox.memoryMb'] : [])];
|
|
77
|
-
const what = keys.length ? listing(keys) + (m.mappings.length ? ' (or the mappings)' : '') : 'the mappings';
|
|
78
|
-
return 'Set ' + what + ' in your own settings to have them in every sandbox.';
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* The launch folder's config plus what the other projects mapped at boot want: their allowed .wsb devices, a fixed
|
|
82
|
-
* memory size larger than the launch's, and their mappings (placed with every other mapping at launch).
|
|
83
|
-
* `keepOff`: devices the launch folder's own .sandbox-config.json switched off; they stay off.
|
|
84
|
-
*/
|
|
85
|
-
export const widenForProjects = (launch, others, opts = {}) => {
|
|
86
|
-
const keepOff = opts.keepOff ?? [];
|
|
87
|
-
const exists = opts.exists ?? (() => true);
|
|
88
|
-
const config = _.cloneDeep(launch);
|
|
89
|
-
const widened = {};
|
|
90
|
-
const notes = [];
|
|
91
|
-
for (const setting of BOOT_SETTINGS) {
|
|
92
|
-
const by = others.find((o) => _.get(o.config, setting) === true);
|
|
93
|
-
if (!by || _.get(config, setting) === true)
|
|
94
|
-
continue;
|
|
95
|
-
if (keepOff.includes(setting)) {
|
|
96
|
-
notes.push(by.name + ' wants ' + (LABELS[setting] ?? setting) + ', but the launch folder\'s .sandbox-config.json switches it off, so it stays off.');
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
_.set(config, setting, true);
|
|
100
|
-
widened[setting] = by.name;
|
|
101
|
-
notes.push((LABELS[setting] ?? setting) + ' is on in this sandbox (for every project in it): ' + by.name + ' asks for it and you allowed it.');
|
|
102
|
-
}
|
|
103
|
-
for (const o of others) {
|
|
104
|
-
const mem = o.config.sandbox.memoryMb;
|
|
105
|
-
if (typeof mem === 'number' && typeof config.sandbox.memoryMb === 'number' && mem > config.sandbox.memoryMb)
|
|
106
|
-
config.sandbox.memoryMb = mem;
|
|
107
|
-
for (const m of o.config.mappings) {
|
|
108
|
-
if (config.mappings.some((x) => sameHost(x.host, m.host)))
|
|
109
|
-
continue;
|
|
110
|
-
if (m.optional && !exists(m.host))
|
|
111
|
-
continue;
|
|
112
|
-
if (!exists(m.host)) {
|
|
113
|
-
notes.push(o.name + ': mapped folder not found, skipped: ' + m.host);
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
// Where it appears (and moving it when that place is taken) is decided with every other mapping at launch.
|
|
117
|
-
config.mappings.push({ ...m, optional: true });
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return { config, widened, notes };
|
|
121
|
-
};
|
package/dist/core/schema.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { GitAccess } from './schema/common.js';
|
|
2
|
-
export { Config, LocalOverrides } from './schema/config.js';
|
|
3
|
-
export { Harness } from './schema/harness.js';
|
|
4
|
-
export { describeIssues, jsonSchemas } from './schema/json-schema.js';
|
|
5
|
-
export { Mapping } from './schema/sandbox.js';
|
|
6
|
-
export { Toolchains } from './schema/toolchains.js';
|
package/dist/core/schema.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// Every setting, defined once with zod, split by area in schema/. This file is the one place the rest of the code (and
|
|
2
|
-
// scripts/schemas.mjs, which generates the JSON Schema files) imports them from.
|
|
3
|
-
export { GitAccess } from './schema/common.js';
|
|
4
|
-
export { Config, LocalOverrides } from './schema/config.js';
|
|
5
|
-
export { Harness } from './schema/harness.js';
|
|
6
|
-
export { describeIssues, jsonSchemas } from './schema/json-schema.js';
|
|
7
|
-
export { Mapping } from './schema/sandbox.js';
|
|
8
|
-
export { Toolchains } from './schema/toolchains.js';
|
package/dist/core/util.d.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
export declare const isWin: boolean;
|
|
2
|
-
/** An expected problem the user can act on: what went wrong, and (optionally) how to fix it. */
|
|
3
|
-
export declare class UserError extends Error {
|
|
4
|
-
readonly fix?: string | undefined;
|
|
5
|
-
constructor(message: string, fix?: string | undefined);
|
|
6
|
-
}
|
|
7
|
-
/** Throws a UserError. Typed explicitly so TypeScript narrows after calls (arrow functions need it to act as never). */
|
|
8
|
-
export declare const fail: (message: string, fix?: string) => never;
|
|
9
|
-
/**
|
|
10
|
-
* Parses JSON with comments and trailing commas (JSONC, like VS Code's settings.json). Errors name the file, line
|
|
11
|
-
* and column, and say what to fix.
|
|
12
|
-
*/
|
|
13
|
-
export declare const parseJsonc: <T>(text: string, source: string) => T;
|
|
14
|
-
export declare const readJsonc: <T>(file: string) => T;
|
|
15
|
-
export declare const errMsg: (e: unknown) => string;
|
|
16
|
-
export declare const ensureDir: (p: string) => void;
|
|
17
|
-
export declare const dirExists: (p: string) => boolean;
|
|
18
|
-
export declare const fileExists: (p: string) => boolean;
|
|
19
|
-
export declare const readJson: <T>(p: string) => T;
|
|
20
|
-
export declare const tryReadJson: <T>(p: string) => T | null;
|
|
21
|
-
/** Atomic (a crash or a second command never leaves half a file); refused outside temp during the self-test. */
|
|
22
|
-
export declare const writeJson: (p: string, value: unknown) => void;
|
|
23
|
-
export declare const realPath: (p: string) => string;
|
|
24
|
-
export declare const xmlEscape: (v: string) => string;
|
|
25
|
-
export declare const homeDir: () => string;
|
|
26
|
-
export declare const sleep: (ms: number) => Promise<void>;
|
|
27
|
-
/** Expands %VAR% and resolves relative paths against `base`. */
|
|
28
|
-
export declare const expandPath: (input: string, base: string) => string;
|
|
29
|
-
export declare const isRootPath: (p: string) => boolean;
|
|
30
|
-
export declare const isUserProfile: (p: string) => boolean;
|
|
31
|
-
export declare const isInsideOrEqual: (parent: string, child: string) => boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Text that came from the sandbox, made safe to print: control characters and escape sequences are removed except
|
|
34
|
-
* plain colours (SGR), so nothing written by the sandbox can drive your terminal (titles, clipboard, cursor tricks).
|
|
35
|
-
*/
|
|
36
|
-
export declare const safeText: (text: string) => string;
|
|
37
|
-
/** safeText without colours either: for text you are asked to approve, which must not be able to hide parts of itself. */
|
|
38
|
-
export declare const plainText: (text: string) => string;
|
|
39
|
-
export declare const findOnPath: (names: string[]) => string | null;
|
|
40
|
-
/** True if `p` itself is a symlink or junction (lstat; never follows it). */
|
|
41
|
-
export declare const isLink: (p: string) => boolean;
|
|
42
|
-
/** Removes a symlink or junction itself (never its target). Junctions need rmdir on Windows. */
|
|
43
|
-
export declare const removeLink: (p: string) => void;
|
|
44
|
-
/**
|
|
45
|
-
* The sandbox can write anywhere in its data folder, so it could swap a folder for a junction that points at this
|
|
46
|
-
* PC's own disk. Before the host reads, writes or deletes anything under `root`, every existing path component from
|
|
47
|
-
* `root` down to `target` must be a plain folder/file. Throws otherwise.
|
|
48
|
-
*/
|
|
49
|
-
export declare const assertNoLinks: (root: string, target: string) => void;
|
|
50
|
-
/** Runs a PowerShell script and returns its exit code (and stdout when `capture`). */
|
|
51
|
-
export declare const runPowerShell: (script: string, capture?: boolean) => {
|
|
52
|
-
status: number;
|
|
53
|
-
stdout: string;
|
|
54
|
-
};
|
|
55
|
-
/** Runs a program (an absolute path: `SYSTEM.*`, never a bare name) and returns its stdout, or '' if it failed or timed out. */
|
|
56
|
-
export declare const captureOutput: (file: string, args: string[], options?: {
|
|
57
|
-
timeout?: number;
|
|
58
|
-
cwd?: string;
|
|
59
|
-
maxBuffer?: number;
|
|
60
|
-
}) => string;
|
|
61
|
-
/** Async variant (does not block the event loop), resolving with stdout. */
|
|
62
|
-
export declare const runPowerShellAsync: (script: string) => Promise<string>;
|