windows-development-sandbox 1.4.0 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sandbox-config.example.json +2 -1
- package/config.example.json +4 -1
- package/dist/api.js +27 -16
- package/dist/cli/args.d.ts +4 -6
- package/dist/cli/args.js +67 -34
- package/dist/cli/argv.d.ts +9 -0
- package/dist/cli/argv.js +22 -0
- package/dist/cli/commands/accounts.d.ts +1 -1
- package/dist/cli/commands/accounts.js +42 -27
- package/dist/cli/commands/agent-commands.d.ts +3 -3
- package/dist/cli/commands/agent-commands.js +27 -18
- package/dist/cli/commands/context.d.ts +9 -11
- package/dist/cli/commands/context.js +35 -32
- package/dist/cli/commands/data/clean.d.ts +2 -2
- package/dist/cli/commands/data/clean.js +27 -11
- package/dist/cli/commands/data/collect.d.ts +6 -3
- package/dist/cli/commands/data/collect.js +46 -15
- package/dist/cli/commands/data/index.d.ts +2 -2
- package/dist/cli/commands/data/index.js +30 -12
- package/dist/cli/commands/data/remove.d.ts +1 -1
- package/dist/cli/commands/data/remove.js +4 -4
- package/dist/cli/commands/index.d.ts +5 -4
- package/dist/cli/commands/index.js +5 -4
- package/dist/cli/commands/launch/add-root.d.ts +7 -0
- package/dist/cli/commands/launch/add-root.js +64 -0
- package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
- package/dist/cli/commands/launch/boot-progress.js +48 -0
- package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
- package/dist/cli/commands/launch/boot-wants.js +48 -0
- package/dist/cli/commands/launch/first-start.d.ts +10 -0
- package/dist/cli/commands/launch/first-start.js +53 -0
- package/dist/cli/commands/launch/index.d.ts +6 -0
- package/dist/cli/commands/launch/index.js +6 -0
- package/dist/cli/commands/launch/launch.d.ts +8 -0
- package/dist/cli/commands/launch/launch.js +211 -0
- package/dist/cli/commands/launch/prepare.d.ts +23 -0
- package/dist/cli/commands/launch/prepare.js +109 -0
- package/dist/cli/commands/launch/running.d.ts +45 -0
- package/dist/cli/commands/launch/running.js +218 -0
- package/dist/cli/commands/launch/summary.d.ts +8 -0
- package/dist/cli/commands/launch/summary.js +98 -0
- package/dist/cli/commands/maintenance/audit.d.ts +3 -0
- package/dist/cli/commands/maintenance/audit.js +58 -0
- package/dist/cli/commands/maintenance/clean.d.ts +2 -0
- package/dist/cli/commands/maintenance/clean.js +10 -0
- package/dist/cli/commands/maintenance/config.d.ts +2 -0
- package/dist/cli/commands/maintenance/config.js +145 -0
- package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
- package/dist/cli/commands/maintenance/doctor.js +52 -0
- package/dist/cli/commands/maintenance/host-claude.d.ts +2 -0
- package/dist/cli/commands/maintenance/host-claude.js +4 -0
- package/dist/cli/commands/maintenance/index.d.ts +8 -0
- package/dist/cli/commands/maintenance/index.js +9 -0
- package/dist/cli/commands/maintenance/logs.d.ts +2 -0
- package/dist/cli/commands/maintenance/logs.js +44 -0
- package/dist/cli/commands/maintenance/sync.d.ts +2 -0
- package/dist/cli/commands/maintenance/sync.js +12 -0
- package/dist/cli/commands/maintenance/watch.d.ts +3 -0
- package/dist/cli/commands/maintenance/watch.js +6 -0
- package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
- package/dist/cli/commands/projects/describe-sessions.js +15 -0
- package/dist/cli/commands/projects/here.d.ts +38 -0
- package/dist/cli/commands/projects/here.js +145 -0
- package/dist/cli/commands/projects/index.d.ts +4 -0
- package/dist/cli/commands/projects/index.js +4 -0
- package/dist/cli/commands/projects/projects.d.ts +14 -0
- package/dist/cli/commands/projects/projects.js +213 -0
- package/dist/cli/commands/projects/restart.d.ts +15 -0
- package/dist/cli/commands/projects/restart.js +149 -0
- package/dist/cli/commands/registry.d.ts +3 -0
- package/dist/cli/commands/registry.js +34 -0
- package/dist/cli/commands/repair/checks.js +105 -29
- package/dist/cli/commands/repair/finders.d.ts +13 -10
- package/dist/cli/commands/repair/finders.js +63 -43
- package/dist/cli/commands/repair/index.d.ts +4 -4
- package/dist/cli/commands/repair/index.js +47 -21
- package/dist/cli/commands/repair/types.d.ts +2 -2
- package/dist/cli/commands/repair/types.js +7 -2
- package/dist/cli/commands/sessions/attach.d.ts +2 -0
- package/dist/cli/commands/sessions/attach.js +45 -0
- package/dist/cli/commands/sessions/control.d.ts +4 -0
- package/dist/cli/commands/sessions/control.js +62 -0
- package/dist/cli/commands/sessions/exec.d.ts +6 -0
- package/dist/cli/commands/sessions/exec.js +72 -0
- package/dist/cli/commands/sessions/index.d.ts +6 -0
- package/dist/cli/commands/sessions/index.js +9 -0
- package/dist/cli/commands/sessions/list.d.ts +15 -0
- package/dist/cli/commands/sessions/list.js +65 -0
- package/dist/cli/commands/sessions/status.d.ts +2 -0
- package/dist/cli/commands/sessions/status.js +153 -0
- package/dist/cli/commands/sessions/window.d.ts +3 -0
- package/dist/cli/commands/sessions/window.js +18 -0
- package/dist/cli/commands/setup/checks.d.ts +4 -4
- package/dist/cli/commands/setup/checks.js +36 -19
- package/dist/cli/commands/setup/facts.d.ts +6 -6
- package/dist/cli/commands/setup/facts.js +23 -11
- package/dist/cli/commands/setup/index.d.ts +1 -1
- package/dist/cli/commands/setup/index.js +25 -12
- package/dist/cli/commands/user-config.d.ts +5 -5
- package/dist/cli/commands/user-config.js +14 -12
- package/dist/cli/history.d.ts +5 -4
- package/dist/cli/history.js +23 -11
- package/dist/cli/index.d.ts +4 -14
- package/dist/cli/index.js +27 -77
- package/dist/cli/manifest.d.ts +464 -10
- package/dist/cli/manifest.js +328 -54
- package/dist/cli/menu/apps.d.ts +7 -5
- package/dist/cli/menu/apps.js +64 -16
- package/dist/cli/menu/command-fields.d.ts +15 -0
- package/dist/cli/menu/command-fields.js +23 -0
- package/dist/cli/menu/command-form.d.ts +3 -5
- package/dist/cli/menu/command-form.js +116 -48
- package/dist/cli/menu/home.d.ts +22 -0
- package/dist/cli/menu/home.js +72 -0
- package/dist/cli/menu/index.d.ts +2 -24
- package/dist/cli/menu/index.js +4 -178
- package/dist/cli/menu/menu.d.ts +23 -0
- package/dist/cli/menu/menu.js +185 -0
- package/dist/cli/menu/settings/categories.d.ts +2 -2
- package/dist/cli/menu/settings/categories.js +123 -20
- package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
- package/dist/cli/menu/settings/collections/collection-editor.js +89 -0
- package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/map-editor.js +34 -0
- package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
- package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
- package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
- package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
- package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
- package/dist/cli/menu/settings/config-file.d.ts +2 -2
- package/dist/cli/menu/settings/config-file.js +42 -19
- package/dist/cli/menu/settings/editor-actions.d.ts +2 -0
- package/dist/cli/menu/settings/editor-actions.js +2 -0
- package/dist/cli/menu/settings/format.d.ts +5 -0
- package/dist/cli/menu/settings/format.js +39 -0
- package/dist/cli/menu/settings/index.d.ts +1 -29
- package/dist/cli/menu/settings/index.js +1 -133
- package/dist/cli/menu/settings/object-editor.d.ts +12 -0
- package/dist/cli/menu/settings/object-editor.js +86 -0
- package/dist/cli/menu/settings/schema-node.d.ts +3 -1
- package/dist/cli/menu/settings/schema-node.js +71 -24
- package/dist/cli/menu/settings/settings-editor.d.ts +30 -0
- package/dist/cli/menu/settings/settings-editor.js +176 -0
- package/dist/cli/menu/settings/{editors.d.ts → value-editor.d.ts} +2 -13
- package/dist/cli/menu/settings/value-editor.js +137 -0
- package/dist/cli/menu/several.d.ts +4 -4
- package/dist/cli/menu/several.js +61 -20
- package/dist/cli/{colors.d.ts → output/colors.d.ts} +8 -8
- package/dist/cli/{colors.js → output/colors.js} +32 -14
- package/dist/cli/output/index.d.ts +3 -0
- package/dist/cli/output/index.js +3 -0
- package/dist/cli/output/print.d.ts +5 -0
- package/dist/cli/output/print.js +14 -0
- package/dist/cli/output/progress.d.ts +24 -0
- package/dist/cli/output/progress.js +124 -0
- package/dist/cli/report.d.ts +2 -0
- package/dist/cli/report.js +20 -0
- package/dist/cli/tui/app.d.ts +6 -16
- package/dist/cli/tui/app.js +28 -8
- package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
- package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
- package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
- package/dist/cli/tui/dialogs/message-screen.js +55 -0
- package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
- package/dist/cli/tui/dialogs/paragraphs.js +5 -0
- package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
- package/dist/cli/tui/dialogs/text-screen.js +107 -0
- package/dist/cli/tui/frame.js +3 -1
- package/dist/cli/tui/index.d.ts +7 -3
- package/dist/cli/tui/index.js +4 -2
- package/dist/cli/tui/list/list-screen.d.ts +29 -0
- package/dist/cli/tui/{list-screen.js → list/list-screen.js} +86 -23
- package/dist/cli/tui/{list-screen.d.ts → list/list-types.d.ts} +0 -28
- package/dist/cli/tui/screen.d.ts +14 -0
- package/dist/cli/tui/terminal.js +34 -10
- package/dist/cli/tui/text.d.ts +2 -1
- package/dist/cli/tui/text.js +37 -7
- package/dist/cli/tui/theme.js +27 -9
- package/dist/cli/validate.d.ts +8 -8
- package/dist/cli/validate.js +32 -21
- package/dist/core/config/defaults.d.ts +2 -0
- package/dist/core/config/defaults.js +203 -0
- package/dist/core/config/index.d.ts +2 -0
- package/dist/core/config/index.js +3 -0
- package/dist/core/{config.d.ts → config/loader.d.ts} +1 -2
- package/dist/core/config/loader.js +47 -0
- package/dist/core/{detect-databases.js → detect/databases.js} +111 -23
- package/dist/core/detect/index.d.ts +4 -0
- package/dist/core/detect/index.js +4 -0
- package/dist/core/{detect-pwsh.d.ts → detect/pwsh.d.ts} +1 -1
- package/dist/core/{detect-pwsh.js → detect/pwsh.js} +25 -11
- package/dist/core/{detect-toolchains.d.ts → detect/toolchains.d.ts} +1 -1
- package/dist/core/{detect-toolchains.js → detect/toolchains.js} +42 -5
- package/dist/{guest/toolchains → core/detect}/versions.js +28 -12
- package/dist/core/disk.d.ts +2 -0
- package/dist/core/disk.js +46 -3
- package/dist/core/local-config/boot-wants.d.ts +45 -0
- package/dist/core/local-config/boot-wants.js +120 -0
- package/dist/core/local-config/file.d.ts +3 -0
- package/dist/core/local-config/file.js +16 -0
- package/dist/core/local-config/index.d.ts +5 -0
- package/dist/core/local-config/index.js +7 -0
- package/dist/core/{local-config.d.ts → local-config/overrides.d.ts} +11 -11
- package/dist/core/{local-config.js → local-config/overrides.js} +53 -54
- package/dist/core/{project-policy.d.ts → local-config/policy.d.ts} +7 -3
- package/dist/core/{project-policy.js → local-config/policy.js} +16 -6
- package/dist/core/local-config/trust.d.ts +13 -0
- package/dist/core/local-config/trust.js +43 -0
- package/dist/core/package-info.d.ts +4 -0
- package/dist/core/package-info.js +13 -0
- package/dist/core/run/guest-workspace.d.ts +23 -0
- package/dist/core/run/guest-workspace.js +47 -0
- package/dist/core/run/index.d.ts +3 -0
- package/dist/core/run/index.js +3 -0
- package/dist/core/run/resolve-run.d.ts +3 -0
- package/dist/core/run/resolve-run.js +202 -0
- package/dist/core/run/versions.d.ts +13 -0
- package/dist/core/run/versions.js +65 -0
- package/dist/core/safe-paths.js +17 -5
- package/dist/core/schema/apps.d.ts +4 -4
- package/dist/core/schema/apps.js +55 -21
- package/dist/core/schema/common.d.ts +13 -10
- package/dist/core/schema/common.js +16 -10
- package/dist/core/schema/config.d.ts +18 -12
- package/dist/core/schema/config.js +78 -53
- package/dist/core/schema/databases.d.ts +4 -3
- package/dist/core/schema/databases.js +16 -12
- package/dist/core/schema/harness.d.ts +1 -1
- package/dist/core/schema/harness.js +17 -7
- package/dist/core/schema/index.d.ts +6 -0
- package/dist/core/schema/index.js +8 -0
- package/dist/core/schema/json-schema.js +10 -5
- package/dist/core/schema/profile.d.ts +4 -4
- package/dist/core/schema/profile.js +37 -17
- package/dist/core/schema/projects.d.ts +2 -1
- package/dist/core/schema/projects.js +16 -5
- package/dist/core/schema/sandbox.d.ts +12 -12
- package/dist/core/schema/sandbox.js +101 -37
- package/dist/core/schema/toolchains.d.ts +6 -1
- package/dist/core/schema/toolchains.js +84 -34
- package/dist/core/types.d.ts +36 -9
- package/dist/core/util/errors.d.ts +8 -0
- package/dist/core/util/errors.js +14 -0
- package/dist/core/util/fs.d.ts +8 -0
- package/dist/core/util/fs.js +40 -0
- package/dist/core/util/index.d.ts +7 -0
- package/dist/core/util/index.js +7 -0
- package/dist/core/util/jsonc.d.ts +6 -0
- package/dist/core/util/jsonc.js +25 -0
- package/dist/core/util/links.d.ts +10 -0
- package/dist/core/util/links.js +39 -0
- package/dist/core/util/paths.d.ts +7 -0
- package/dist/core/util/paths.js +33 -0
- package/dist/core/util/process.d.ts +15 -0
- package/dist/core/util/process.js +54 -0
- package/dist/core/util/text.d.ts +8 -0
- package/dist/core/util/text.js +8 -0
- package/dist/guest/{setup/agents.js → agents/agent-installer.js} +24 -4
- package/dist/guest/apps/after-install.d.ts +3 -0
- package/dist/guest/apps/after-install.js +47 -0
- package/dist/guest/apps/app-installer.d.ts +22 -0
- package/dist/guest/apps/app-installer.js +116 -0
- package/dist/guest/apps/find-exe.d.ts +5 -0
- package/dist/guest/apps/find-exe.js +41 -0
- package/dist/guest/apps/index.d.ts +3 -10
- package/dist/guest/apps/index.js +6 -206
- package/dist/guest/apps/resolvers.js +37 -9
- package/dist/guest/apps/shortcuts.d.ts +6 -0
- package/dist/guest/apps/shortcuts.js +28 -0
- package/dist/guest/apps/sources.d.ts +4 -0
- package/dist/guest/apps/sources.js +17 -0
- package/dist/guest/apps/unpack.d.ts +3 -0
- package/dist/guest/apps/unpack.js +47 -0
- package/dist/guest/{audit-parse.js → audit/parse.js} +39 -3
- package/dist/guest/{audit.d.ts → audit/process-audit.d.ts} +3 -1
- package/dist/guest/{audit.js → audit/process-audit.js} +33 -8
- package/dist/guest/boot/boot-env.d.ts +4 -0
- package/dist/guest/{boot-env.js → boot/boot-env.js} +7 -5
- package/dist/guest/boot/boot.d.ts +1 -0
- package/dist/guest/{main.js → boot/boot.js} +100 -50
- package/dist/guest/{guide.js → boot/guide.js} +32 -7
- package/dist/guest/{project-env.d.ts → boot/project-env.d.ts} +3 -3
- package/dist/guest/{project-env.js → boot/project-env.js} +12 -4
- package/dist/guest/boot/project-status.d.ts +5 -0
- package/dist/guest/boot/project-status.js +28 -0
- package/dist/guest/daemon/daemon.d.ts +1 -0
- package/dist/guest/daemon/daemon.js +51 -0
- package/dist/guest/daemon/exec.js +18 -6
- package/dist/guest/daemon/{shutdown.js → idle-shutdown.js} +5 -4
- package/dist/guest/daemon/{project.d.ts → project-provisioner.d.ts} +3 -3
- package/dist/guest/daemon/{project.js → project-provisioner.js} +60 -22
- package/dist/guest/daemon/relays.js +5 -3
- package/dist/guest/daemon/{session.js → sessions.js} +84 -24
- package/dist/guest/daemon/state.d.ts +4 -1
- package/dist/guest/daemon/state.js +34 -20
- package/dist/guest/databases/database-server.d.ts +13 -0
- package/dist/guest/databases/database-server.js +35 -0
- package/dist/guest/databases/dynamodb.d.ts +12 -0
- package/dist/guest/databases/dynamodb.js +81 -0
- package/dist/guest/databases/index.d.ts +2 -0
- package/dist/guest/databases/index.js +2 -0
- package/dist/guest/databases/mongodb.d.ts +7 -0
- package/dist/guest/databases/mongodb.js +46 -0
- package/dist/guest/databases/mysql.d.ts +7 -0
- package/dist/guest/databases/mysql.js +59 -0
- package/dist/guest/databases/names.d.ts +5 -0
- package/dist/guest/databases/names.js +8 -0
- package/dist/guest/databases/postgres.d.ts +9 -0
- package/dist/guest/databases/postgres.js +85 -0
- package/dist/guest/databases/redis.d.ts +7 -0
- package/dist/guest/databases/redis.js +25 -0
- package/dist/guest/databases/registry.d.ts +5 -0
- package/dist/guest/databases/registry.js +51 -0
- package/dist/guest/databases/sbx-db.d.ts +1 -0
- package/dist/guest/{db.js → databases/sbx-db.js} +13 -13
- package/dist/guest/{toolchains/databases → databases}/server.d.ts +5 -5
- package/dist/guest/{toolchains/databases → databases}/server.js +18 -13
- package/dist/guest/entries/daemon.js +16 -0
- package/dist/guest/entries/db.js +10 -0
- package/dist/guest/entries/gitguard.js +20 -0
- package/dist/guest/entries/main.d.ts +1 -0
- package/dist/guest/entries/main.js +24 -0
- package/dist/guest/entries/netproxy.d.ts +1 -0
- package/dist/guest/entries/netproxy.js +7 -0
- package/dist/guest/entries/view.d.ts +1 -0
- package/dist/guest/entries/view.js +11 -0
- package/dist/guest/{gitguard.js → git/decision.js} +49 -26
- package/dist/guest/network/addresses.d.ts +2 -0
- package/dist/guest/network/addresses.js +6 -0
- package/dist/guest/{setup/network.d.ts → network/allow-only.d.ts} +0 -10
- package/dist/guest/network/allow-only.js +84 -0
- package/dist/guest/network/firewall.d.ts +9 -0
- package/dist/guest/{setup/network.js → network/firewall.js} +58 -63
- package/dist/guest/network/proxy-server.d.ts +2 -0
- package/dist/guest/{netproxy.js → network/proxy-server.js} +37 -18
- package/dist/guest/{helpers.d.ts → runtime/csc.d.ts} +1 -1
- package/dist/guest/{helpers.js → runtime/csc.js} +7 -2
- package/dist/guest/runtime/fs.d.ts +2 -0
- package/dist/guest/runtime/fs.js +6 -0
- package/dist/guest/runtime/log.d.ts +3 -0
- package/dist/guest/runtime/log.js +22 -0
- package/dist/guest/runtime/paths.d.ts +13 -0
- package/dist/guest/runtime/paths.js +14 -0
- package/dist/guest/{ports.js → runtime/ports.js} +8 -2
- package/dist/guest/runtime/process.d.ts +15 -0
- package/dist/guest/runtime/process.js +59 -0
- package/dist/guest/{project-context.js → runtime/project-context.js} +1 -1
- package/dist/guest/runtime/session.d.ts +5 -0
- package/dist/guest/runtime/session.js +10 -0
- package/dist/guest/runtime/status.d.ts +7 -0
- package/dist/guest/runtime/status.js +57 -0
- package/dist/guest/{cmdline.js → sessions/cmdline.js} +10 -4
- package/dist/guest/{ptyhost.js → sessions/pty-host.js} +12 -5
- package/dist/guest/{view.js → sessions/viewer.js} +8 -11
- package/dist/guest/setup/claude-mem.d.ts +10 -0
- package/dist/guest/setup/{claude.js → claude-mem.js} +18 -78
- package/dist/guest/setup/{claude.d.ts → claude-profile.d.ts} +0 -10
- package/dist/guest/setup/claude-profile.js +89 -0
- package/dist/guest/setup/desktop.d.ts +2 -0
- package/dist/guest/setup/desktop.js +32 -0
- package/dist/guest/setup/environment.js +28 -5
- package/dist/guest/setup/{user.d.ts → git-identity.d.ts} +0 -2
- package/dist/guest/setup/git-identity.js +34 -0
- package/dist/guest/{gitrules.d.ts → setup/git-rules.d.ts} +1 -1
- package/dist/guest/setup/git-rules.js +50 -0
- package/dist/guest/setup/hooks.js +22 -5
- package/dist/guest/setup/{policy.js → managed-policy.js} +2 -2
- package/dist/guest/toolchains/catalogue.d.ts +4 -4
- package/dist/guest/toolchains/catalogue.js +30 -7
- package/dist/guest/toolchains/detect.d.ts +12 -0
- package/dist/guest/toolchains/detect.js +54 -0
- package/dist/guest/toolchains/index.d.ts +3 -17
- package/dist/guest/toolchains/index.js +1 -80
- package/dist/guest/toolchains/install.d.ts +20 -0
- package/dist/guest/toolchains/install.js +29 -0
- package/dist/guest/toolchains/languages/go.d.ts +3 -0
- package/dist/guest/toolchains/{go.js → languages/go.js} +27 -9
- package/dist/guest/toolchains/languages/java.d.ts +8 -0
- package/dist/guest/toolchains/{java.js → languages/java.js} +57 -18
- package/dist/guest/toolchains/languages/node.d.ts +3 -0
- package/dist/guest/toolchains/{node.js → languages/node.js} +51 -18
- package/dist/guest/toolchains/languages/php.d.ts +3 -0
- package/dist/guest/toolchains/{scripting → languages}/php.js +36 -11
- package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
- package/dist/guest/toolchains/languages/python-tools.js +12 -0
- package/dist/guest/toolchains/languages/python.d.ts +3 -0
- package/dist/guest/toolchains/{python.js → languages/python.js} +29 -16
- package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
- package/dist/guest/toolchains/{scripting → languages}/ruby.js +28 -10
- package/dist/guest/toolchains/leftovers.d.ts +1 -1
- package/dist/guest/toolchains/leftovers.js +13 -11
- package/dist/guest/toolchains/managers.d.ts +6 -6
- package/dist/guest/toolchains/managers.js +38 -17
- package/dist/guest/toolchains/native/binstall.d.ts +3 -2
- package/dist/guest/toolchains/native/binstall.js +20 -8
- package/dist/guest/toolchains/native/cpp.d.ts +2 -2
- package/dist/guest/toolchains/native/cpp.js +23 -8
- package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
- package/dist/guest/toolchains/native/dotnet.js +72 -24
- package/dist/guest/toolchains/native/mesa.d.ts +2 -2
- package/dist/guest/toolchains/native/mesa.js +27 -10
- package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
- package/dist/guest/toolchains/native/msvc/environment.js +30 -16
- package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
- package/dist/guest/toolchains/native/msvc/index.js +10 -8
- package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
- package/dist/guest/toolchains/native/msvc/packages.js +69 -23
- package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
- package/dist/guest/toolchains/native/msvc/tree.js +15 -9
- package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
- package/dist/guest/toolchains/native/rust-extras.js +100 -0
- package/dist/guest/toolchains/native/rust.d.ts +2 -2
- package/dist/guest/toolchains/native/rust.js +41 -10
- package/dist/guest/toolchains/{scripting → native}/vcruntime.d.ts +2 -2
- package/dist/guest/toolchains/{scripting → native}/vcruntime.js +17 -7
- package/dist/guest/toolchains/package-ledger.d.ts +17 -0
- package/dist/guest/toolchains/package-ledger.js +54 -0
- package/dist/guest/toolchains/plan.d.ts +3 -24
- package/dist/guest/toolchains/plan.js +99 -111
- package/dist/guest/toolchains/runtimes.d.ts +6 -6
- package/dist/guest/toolchains/runtimes.js +31 -13
- package/dist/guest/toolchains/scheduler.d.ts +22 -0
- package/dist/guest/toolchains/scheduler.js +123 -0
- package/dist/guest/toolchains/setup.d.ts +10 -0
- package/dist/guest/toolchains/setup.js +22 -0
- package/dist/guest/toolchains/state-file.d.ts +3 -0
- package/dist/guest/toolchains/state-file.js +10 -0
- package/dist/guest/toolchains/step.d.ts +24 -0
- package/dist/guest/toolchains/step.js +1 -0
- package/dist/guest/toolchains/tool-env.d.ts +12 -0
- package/dist/guest/toolchains/tool-env.js +16 -0
- package/dist/guest/toolchains/tools/cli.d.ts +10 -0
- package/dist/guest/toolchains/{cli.js → tools/cli.js} +35 -15
- package/dist/guest/toolchains/tools/git.d.ts +3 -0
- package/dist/guest/toolchains/{git.js → tools/git.js} +38 -15
- package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
- package/dist/guest/toolchains/{pwsh.js → tools/pwsh.js} +14 -7
- package/dist/guest/toolchains/{vscode-profile.d.ts → tools/vscode-profile.d.ts} +6 -6
- package/dist/guest/toolchains/{vscode-profile.js → tools/vscode-profile.js} +28 -12
- package/dist/guest/toolchains/{vscode.d.ts → tools/vscode.d.ts} +6 -6
- package/dist/guest/toolchains/{vscode.js → tools/vscode.js} +67 -21
- package/dist/guest/toolchains/version-cache.d.ts +16 -0
- package/dist/guest/toolchains/version-cache.js +67 -0
- package/dist/host/agent-commands/commands.d.ts +13 -0
- package/dist/host/agent-commands/commands.js +33 -0
- package/dist/host/agent-commands/forwarders.d.ts +7 -0
- package/dist/host/agent-commands/forwarders.js +31 -0
- package/dist/host/agent-commands/index.d.ts +4 -0
- package/dist/host/agent-commands/index.js +4 -0
- package/dist/host/agent-commands/reconcile.d.ts +12 -0
- package/dist/host/agent-commands/reconcile.js +69 -0
- package/dist/host/agent-commands/user-path.d.ts +2 -0
- package/dist/host/agent-commands/user-path.js +33 -0
- package/dist/host/audit/collect.d.ts +2 -2
- package/dist/host/audit/collect.js +59 -22
- package/dist/host/audit/log.d.ts +2 -2
- package/dist/host/audit/log.js +24 -8
- package/dist/host/{attach.d.ts → channel/attach.d.ts} +2 -2
- package/dist/host/{attach.js → channel/attach.js} +33 -15
- package/dist/host/channel/channel.d.ts +51 -0
- package/dist/host/channel/channel.js +196 -0
- package/dist/host/channel/index.d.ts +2 -0
- package/dist/host/channel/index.js +2 -0
- package/dist/host/guard/agent-files.d.ts +7 -0
- package/dist/host/guard/agent-files.js +103 -0
- package/dist/host/guard/commands.d.ts +10 -0
- package/dist/host/guard/commands.js +123 -0
- package/dist/host/guard/file-hash.d.ts +4 -0
- package/dist/host/guard/file-hash.js +37 -0
- package/dist/host/guard/git-config.d.ts +5 -0
- package/dist/host/guard/git-config.js +62 -0
- package/dist/host/guard/git-dirs.d.ts +12 -0
- package/dist/host/guard/git-dirs.js +53 -0
- package/dist/host/guard/index.d.ts +5 -0
- package/dist/host/guard/index.js +4 -0
- package/dist/host/guard/mark-of-the-web.d.ts +8 -0
- package/dist/host/guard/mark-of-the-web.js +74 -0
- package/dist/host/guard/nested-repos.d.ts +14 -0
- package/dist/host/guard/nested-repos.js +88 -0
- package/dist/host/guard/quarantine.d.ts +3 -0
- package/dist/host/guard/quarantine.js +24 -0
- package/dist/host/guard/repo-guard.d.ts +10 -0
- package/dist/host/guard/repo-guard.js +36 -0
- package/dist/host/guard/store.d.ts +40 -0
- package/dist/host/guard/store.js +145 -0
- package/dist/host/guard/types.d.ts +27 -0
- package/dist/host/guard/types.js +3 -0
- package/dist/host/guard/watch-state.d.ts +9 -0
- package/dist/host/guard/watch-state.js +26 -0
- package/dist/host/launch/boot-projects.d.ts +17 -0
- package/dist/host/launch/{projects.js → boot-projects.js} +27 -12
- package/dist/host/{database-plan.d.ts → launch/database-plan.d.ts} +5 -5
- package/dist/host/{database-plan.js → launch/database-plan.js} +24 -13
- package/dist/host/launch/generate.d.ts +4 -0
- package/dist/host/launch/generate.js +77 -0
- package/dist/host/launch/index.d.ts +10 -0
- package/dist/host/launch/index.js +10 -0
- package/dist/host/launch/mappings.d.ts +7 -2
- package/dist/host/launch/mappings.js +83 -24
- package/dist/host/launch/pc-scan.d.ts +5 -0
- package/dist/host/{pc-scan.js → launch/pc-scan.js} +20 -13
- package/dist/host/launch/project-scan.d.ts +7 -0
- package/dist/host/{project-scan.js → launch/project-scan.js} +29 -21
- package/dist/host/launch/session-file.d.ts +23 -0
- package/dist/host/launch/session-file.js +73 -0
- package/dist/host/launch/stage.d.ts +5 -5
- package/dist/host/launch/stage.js +14 -13
- package/dist/host/launch/toolchains.d.ts +4 -0
- package/dist/host/launch/toolchains.js +11 -0
- package/dist/host/launch/{wsb.d.ts → wsb-file.d.ts} +4 -2
- package/dist/host/launch/wsb-file.js +56 -0
- package/dist/host/life/crash-report.d.ts +8 -0
- package/dist/host/life/crash-report.js +87 -0
- package/dist/host/life/index.d.ts +6 -0
- package/dist/host/life/index.js +6 -0
- package/dist/host/life/keep-awake.d.ts +10 -0
- package/dist/host/life/keep-awake.js +29 -0
- package/dist/host/life/life-record.d.ts +48 -0
- package/dist/host/life/life-record.js +76 -0
- package/dist/host/life/stop-events.d.ts +27 -0
- package/dist/host/life/stop-events.js +96 -0
- package/dist/host/life/stop-warning.d.ts +4 -0
- package/dist/host/life/stop-warning.js +25 -0
- package/dist/host/life/windows-update.d.ts +3 -0
- package/dist/host/life/windows-update.js +11 -0
- package/dist/host/native.d.ts +4 -0
- package/dist/host/native.js +11 -0
- package/dist/host/network/index.d.ts +1 -0
- package/dist/host/network/index.js +1 -0
- package/dist/host/{port-forward.d.ts → network/port-forward.d.ts} +1 -1
- package/dist/host/{port-forward.js → network/port-forward.js} +16 -10
- package/dist/host/profile/accounts.d.ts +37 -0
- package/dist/host/profile/accounts.js +146 -0
- package/dist/host/profile/claude-login.d.ts +22 -0
- package/dist/host/profile/claude-login.js +57 -0
- package/dist/host/{claude-profile.d.ts → profile/claude-profile.d.ts} +9 -9
- package/dist/host/{claude-profile.js → profile/claude-profile.js} +32 -22
- package/dist/host/profile/index.d.ts +7 -0
- package/dist/host/profile/index.js +7 -0
- package/dist/host/profile/personalize.d.ts +2 -0
- package/dist/host/profile/personalize.js +127 -0
- package/dist/host/profile/reg-file.d.ts +8 -0
- package/dist/host/profile/reg-file.js +45 -0
- package/dist/host/profile/secret-files.d.ts +2 -0
- package/dist/host/profile/secret-files.js +25 -0
- package/dist/host/profile/secret-patterns.d.ts +6 -0
- package/dist/host/profile/secret-patterns.js +128 -0
- package/dist/host/profile/secrets.d.ts +12 -0
- package/dist/host/profile/secrets.js +100 -0
- package/dist/host/projects/index.d.ts +4 -0
- package/dist/host/projects/index.js +4 -0
- package/dist/host/projects/join.d.ts +38 -0
- package/dist/host/projects/join.js +119 -0
- package/dist/host/projects/known.d.ts +28 -0
- package/dist/host/projects/known.js +55 -0
- package/dist/host/projects/mapper.d.ts +29 -0
- package/dist/host/projects/mapper.js +88 -0
- package/dist/host/projects/registry.d.ts +83 -0
- package/dist/host/projects/registry.js +136 -0
- package/dist/host/sandbox/doctor.d.ts +2 -0
- package/dist/host/sandbox/doctor.js +42 -0
- package/dist/host/sandbox/host-claude.d.ts +1 -0
- package/dist/host/sandbox/host-claude.js +26 -0
- package/dist/host/sandbox/index.d.ts +6 -0
- package/dist/host/sandbox/index.js +6 -0
- package/dist/host/{platform.d.ts → sandbox/platform.d.ts} +0 -5
- package/dist/host/sandbox/platform.js +60 -0
- package/dist/host/sandbox/probe.d.ts +3 -0
- package/dist/host/sandbox/probe.js +47 -0
- package/dist/host/{window.js → sandbox/window.js} +7 -5
- package/dist/host/{wsb.js → sandbox/wsb-cli.js} +31 -8
- package/dist/host/{cleanup.js → storage/cleanup.js} +27 -12
- package/dist/host/storage/index.d.ts +2 -0
- package/dist/host/storage/index.js +2 -0
- package/dist/host/storage/state-files.d.ts +4 -0
- package/dist/host/storage/state-files.js +10 -0
- package/dist/host/test-guard.js +1 -1
- package/dist/host/tools/conpty.d.ts +8 -0
- package/dist/host/tools/conpty.js +58 -0
- package/dist/host/tools/index.d.ts +2 -0
- package/dist/host/tools/index.js +2 -0
- package/dist/host/{terminal.d.ts → tools/windows-terminal.d.ts} +2 -10
- package/dist/host/{terminal.js → tools/windows-terminal.js} +33 -57
- package/dist/host/workspace-view/active-views.d.ts +3 -0
- package/dist/host/workspace-view/active-views.js +22 -0
- package/dist/host/workspace-view/index.d.ts +2 -18
- package/dist/host/workspace-view/index.js +2 -49
- package/dist/host/workspace-view/plan.d.ts +16 -0
- package/dist/host/workspace-view/plan.js +50 -0
- package/dist/host/workspace-view/rules.js +10 -3
- package/dist/host/workspace-view/view-state.d.ts +10 -0
- package/dist/host/workspace-view/view-state.js +31 -0
- package/dist/host/workspace-view/view.d.ts +1 -0
- package/dist/host/workspace-view/view.js +51 -55
- package/dist/runtime/daemon.js +4232 -1918
- package/dist/runtime/db.js +2145 -830
- package/dist/runtime/gitguard.js +29 -11
- package/dist/runtime/main.js +4760 -2155
- package/dist/runtime/netproxy.js +1654 -418
- package/dist/runtime/view.js +1515 -453
- package/dist/selftest/accounts.test.d.ts +1 -1
- package/dist/selftest/accounts.test.js +20 -17
- package/dist/selftest/agent-commands.test.d.ts +1 -1
- package/dist/selftest/agent-commands.test.js +9 -5
- package/dist/selftest/audit.test.d.ts +1 -1
- package/dist/selftest/audit.test.js +46 -13
- package/dist/selftest/channel.test.d.ts +1 -1
- package/dist/selftest/channel.test.js +91 -8
- package/dist/selftest/cli.test.d.ts +1 -1
- package/dist/selftest/cli.test.js +68 -16
- package/dist/selftest/cmdline.test.d.ts +1 -1
- package/dist/selftest/cmdline.test.js +36 -7
- package/dist/selftest/config.test.d.ts +1 -1
- package/dist/selftest/config.test.js +12 -5
- package/dist/selftest/data.test.d.ts +1 -1
- package/dist/selftest/data.test.js +35 -6
- package/dist/selftest/detect.test.d.ts +1 -1
- package/dist/selftest/detect.test.js +22 -9
- package/dist/selftest/generate.test.d.ts +1 -1
- package/dist/selftest/generate.test.js +33 -9
- package/dist/selftest/git-access.test.d.ts +1 -1
- package/dist/selftest/git-access.test.js +42 -4
- package/dist/selftest/guest-boot.test.d.ts +1 -1
- package/dist/selftest/guest-boot.test.js +25 -7
- package/dist/selftest/host-sim.test.d.ts +1 -1
- package/dist/selftest/host-sim.test.js +27 -3
- package/dist/selftest/hostile-input.test.d.ts +1 -1
- package/dist/selftest/hostile-input.test.js +5 -5
- package/dist/selftest/index.d.ts +1 -1
- package/dist/selftest/index.js +73 -16
- package/dist/selftest/layout.test.d.ts +2 -0
- package/dist/selftest/layout.test.js +131 -0
- package/dist/selftest/links.test.d.ts +1 -1
- package/dist/selftest/links.test.js +16 -11
- package/dist/selftest/live-daemon.test.d.ts +1 -1
- package/dist/selftest/live-daemon.test.js +20 -8
- package/dist/selftest/live-git.test.d.ts +1 -1
- package/dist/selftest/live-git.test.js +13 -4
- package/dist/selftest/live-network.test.d.ts +1 -1
- package/dist/selftest/live-network.test.js +24 -9
- package/dist/selftest/live-projects.test.d.ts +1 -1
- package/dist/selftest/live-projects.test.js +47 -20
- package/dist/selftest/live-terminal.test.d.ts +2 -0
- package/dist/selftest/live-terminal.test.js +195 -0
- package/dist/selftest/local-config.test.d.ts +1 -1
- package/dist/selftest/local-config.test.js +88 -15
- package/dist/selftest/mirror.test.d.ts +1 -1
- package/dist/selftest/mirror.test.js +118 -19
- package/dist/selftest/network.test.d.ts +1 -1
- package/dist/selftest/network.test.js +17 -8
- package/dist/selftest/personalization.test.d.ts +1 -1
- package/dist/selftest/personalization.test.js +12 -5
- package/dist/selftest/projects.test.d.ts +1 -1
- package/dist/selftest/projects.test.js +336 -72
- package/dist/selftest/repair.test.d.ts +1 -1
- package/dist/selftest/repair.test.js +17 -5
- package/dist/selftest/repo-guard.test.d.ts +1 -1
- package/dist/selftest/repo-guard.test.js +21 -20
- package/dist/selftest/secrets.test.d.ts +1 -1
- package/dist/selftest/secrets.test.js +57 -13
- package/dist/selftest/setup.test.d.ts +1 -1
- package/dist/selftest/setup.test.js +25 -5
- package/dist/selftest/{fixtures.d.ts → support/fixtures.d.ts} +7 -4
- package/dist/selftest/{fixtures.js → support/fixtures.js} +95 -17
- package/dist/selftest/{harness.js → support/harness.js} +24 -7
- package/dist/selftest/{live.d.ts → support/live.d.ts} +2 -2
- package/dist/selftest/{live.js → support/live.js} +34 -10
- package/dist/selftest/support/suite.js +1 -0
- package/dist/selftest/sync.test.d.ts +1 -1
- package/dist/selftest/sync.test.js +64 -26
- package/dist/selftest/test-guard.test.d.ts +1 -1
- package/dist/selftest/test-guard.test.js +43 -15
- package/dist/selftest/toolchains.test.d.ts +1 -1
- package/dist/selftest/toolchains.test.js +135 -36
- package/dist/selftest/workspace-view.test.d.ts +1 -1
- package/dist/selftest/workspace-view.test.js +48 -11
- package/dist/selftest/workspace.test.d.ts +1 -1
- package/dist/selftest/workspace.test.js +13 -4
- package/dist/shared/{apps.d.ts → apps/catalogue.d.ts} +1 -11
- package/dist/shared/apps/catalogue.js +768 -0
- package/dist/shared/apps/index.d.ts +2 -0
- package/dist/shared/apps/index.js +2 -0
- package/dist/shared/apps/selection.d.ts +11 -0
- package/dist/shared/apps/selection.js +40 -0
- package/dist/shared/channel/index.d.ts +2 -0
- package/dist/shared/channel/index.js +2 -0
- package/dist/shared/channel/run-dir.d.ts +30 -0
- package/dist/shared/channel/run-dir.js +84 -0
- package/dist/shared/{schema.d.ts → channel/schema.d.ts} +60 -19
- package/dist/shared/channel/schema.js +131 -0
- package/dist/shared/download/archive.d.ts +13 -0
- package/dist/shared/download/archive.js +57 -0
- package/dist/shared/download/downloader.d.ts +35 -0
- package/dist/shared/download/downloader.js +110 -0
- package/dist/shared/download/github.d.ts +16 -0
- package/dist/shared/download/github.js +74 -0
- package/dist/shared/download/http.d.ts +5 -0
- package/dist/shared/download/http.js +30 -0
- package/dist/shared/download/index.d.ts +5 -0
- package/dist/shared/download/index.js +5 -0
- package/dist/shared/download/spawn.d.ts +2 -0
- package/dist/shared/download/spawn.js +7 -0
- package/dist/shared/io/index.d.ts +3 -0
- package/dist/shared/io/index.js +3 -0
- package/dist/shared/io/json-file.d.ts +10 -0
- package/dist/shared/io/json-file.js +21 -0
- package/dist/shared/io/json.d.ts +13 -0
- package/dist/shared/io/json.js +49 -0
- package/dist/shared/{safe-remove.js → io/safe-remove.js} +32 -7
- package/dist/shared/{netrules.js → network/firewall-rules.js} +36 -5
- package/dist/shared/network/index.d.ts +2 -0
- package/dist/shared/network/index.js +2 -0
- package/dist/shared/{netpolicy.js → network/policy.js} +66 -11
- package/dist/shared/{paths.js → paths/claude-paths.js} +12 -2
- package/dist/shared/{guest-paths.d.ts → paths/guest-paths.d.ts} +21 -0
- package/dist/shared/paths/guest-paths.js +146 -0
- package/dist/shared/paths/index.d.ts +3 -0
- package/dist/shared/paths/index.js +3 -0
- package/dist/shared/{projects.d.ts → paths/projects.d.ts} +27 -4
- package/dist/shared/paths/projects.js +136 -0
- package/dist/shared/pty/client.d.ts +21 -0
- package/dist/shared/pty/client.js +79 -0
- package/dist/shared/pty/console-input.d.ts +11 -0
- package/dist/shared/pty/console-input.js +81 -0
- package/dist/shared/pty/index.d.ts +6 -0
- package/dist/shared/pty/index.js +6 -0
- package/dist/shared/pty/input-joiner.d.ts +15 -0
- package/dist/shared/pty/input-joiner.js +44 -0
- package/dist/shared/pty/output-filter.d.ts +13 -0
- package/dist/shared/pty/output-filter.js +140 -0
- package/dist/shared/pty/protocol.d.ts +36 -0
- package/dist/shared/pty/protocol.js +60 -0
- package/dist/shared/pty/terminal.d.ts +24 -0
- package/dist/shared/pty/terminal.js +147 -0
- package/dist/shared/test-guard.js +3 -1
- package/dist/sync/claude-mem.d.ts +1 -1
- package/dist/sync/claude-mem.js +9 -4
- package/dist/sync/history.d.ts +1 -29
- package/dist/sync/history.js +57 -45
- package/dist/sync/index.d.ts +5 -0
- package/dist/sync/index.js +5 -0
- package/dist/sync/sync-cycle.d.ts +18 -0
- package/dist/sync/sync-cycle.js +85 -0
- package/dist/sync/sync-state.d.ts +32 -0
- package/dist/sync/sync-state.js +37 -0
- package/dist/sync/watcher.d.ts +0 -18
- package/dist/sync/watcher.js +66 -100
- package/native/keep-awake.ps1 +8 -0
- package/native/power.cs +23 -0
- package/native/stop-events.ps1 +38 -0
- package/package.json +11 -3
- package/sandbox/linkgate.cs +98 -0
- package/sandbox/memlog.ps1 +15 -6
- package/sandbox/ptyhost.cs +60 -3
- package/schemas/config.schema.json +48 -1
- package/schemas/sandbox-config.schema.json +37 -3
- package/dist/cli/commands/launch.d.ts +0 -29
- package/dist/cli/commands/launch.js +0 -366
- package/dist/cli/commands/maintenance.d.ts +0 -10
- package/dist/cli/commands/maintenance.js +0 -187
- package/dist/cli/commands/project.d.ts +0 -29
- package/dist/cli/commands/project.js +0 -63
- package/dist/cli/commands/projects.d.ts +0 -14
- package/dist/cli/commands/projects.js +0 -146
- package/dist/cli/commands/restart.d.ts +0 -6
- package/dist/cli/commands/restart.js +0 -85
- package/dist/cli/commands/sessions.d.ts +0 -12
- package/dist/cli/commands/sessions.js +0 -257
- package/dist/cli/menu/settings/editors.js +0 -305
- package/dist/cli/progress.d.ts +0 -9
- package/dist/cli/progress.js +0 -49
- package/dist/cli/tui/dialogs.d.ts +0 -57
- package/dist/cli/tui/dialogs.js +0 -162
- package/dist/core/config.js +0 -109
- package/dist/core/schema.d.ts +0 -6
- package/dist/core/schema.js +0 -8
- package/dist/core/util.d.ts +0 -62
- package/dist/core/util.js +0 -156
- package/dist/core/workspace.d.ts +0 -18
- package/dist/core/workspace.js +0 -145
- package/dist/guest/boot-env.d.ts +0 -4
- package/dist/guest/daemon.js +0 -57
- package/dist/guest/env.d.ts +0 -52
- package/dist/guest/env.js +0 -103
- package/dist/guest/gitrules.js +0 -11
- package/dist/guest/project-status.d.ts +0 -5
- package/dist/guest/project-status.js +0 -17
- package/dist/guest/setup/user.js +0 -51
- package/dist/guest/toolchains/cli.d.ts +0 -10
- package/dist/guest/toolchains/common.d.ts +0 -54
- package/dist/guest/toolchains/common.js +0 -147
- package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
- package/dist/guest/toolchains/databases/dynamodb.js +0 -52
- package/dist/guest/toolchains/databases/index.d.ts +0 -6
- package/dist/guest/toolchains/databases/index.js +0 -62
- package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
- package/dist/guest/toolchains/databases/mongodb.js +0 -31
- package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
- package/dist/guest/toolchains/databases/mysql.js +0 -38
- package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
- package/dist/guest/toolchains/databases/postgres.js +0 -38
- package/dist/guest/toolchains/databases/redis.d.ts +0 -3
- package/dist/guest/toolchains/databases/redis.js +0 -16
- package/dist/guest/toolchains/git.d.ts +0 -3
- package/dist/guest/toolchains/go.d.ts +0 -3
- package/dist/guest/toolchains/java.d.ts +0 -8
- package/dist/guest/toolchains/node.d.ts +0 -3
- package/dist/guest/toolchains/pwsh.d.ts +0 -4
- package/dist/guest/toolchains/python.d.ts +0 -3
- package/dist/guest/toolchains/scripting/php.d.ts +0 -3
- package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
- package/dist/host/accounts.d.ts +0 -32
- package/dist/host/accounts.js +0 -128
- package/dist/host/agent-commands.d.ts +0 -25
- package/dist/host/agent-commands.js +0 -145
- package/dist/host/channel.d.ts +0 -38
- package/dist/host/channel.js +0 -162
- package/dist/host/generate.d.ts +0 -13
- package/dist/host/generate.js +0 -108
- package/dist/host/join.d.ts +0 -28
- package/dist/host/join.js +0 -76
- package/dist/host/launch/projects.d.ts +0 -15
- package/dist/host/launch/wsb.js +0 -34
- package/dist/host/motw.d.ts +0 -17
- package/dist/host/motw.js +0 -74
- package/dist/host/pc-scan.d.ts +0 -6
- package/dist/host/personalize.d.ts +0 -10
- package/dist/host/personalize.js +0 -97
- package/dist/host/platform.js +0 -129
- package/dist/host/project-scan.d.ts +0 -7
- package/dist/host/projects.d.ts +0 -100
- package/dist/host/projects.js +0 -147
- package/dist/host/repo-guard.d.ts +0 -43
- package/dist/host/repo-guard.js +0 -347
- package/dist/host/secrets.d.ts +0 -14
- package/dist/host/secrets.js +0 -133
- package/dist/host/stops.d.ts +0 -67
- package/dist/host/stops.js +0 -126
- package/dist/shared/apps.js +0 -114
- package/dist/shared/download.d.ts +0 -60
- package/dist/shared/download.js +0 -215
- package/dist/shared/guest-paths.js +0 -61
- package/dist/shared/projects.js +0 -67
- package/dist/shared/pty-client.d.ts +0 -91
- package/dist/shared/pty-client.js +0 -349
- package/dist/shared/rundir.d.ts +0 -41
- package/dist/shared/rundir.js +0 -96
- package/dist/shared/schema.js +0 -92
- /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
- /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
- /package/dist/core/{detect-databases.d.ts → detect/databases.d.ts} +0 -0
- /package/dist/{guest/toolchains → core/detect}/versions.d.ts +0 -0
- /package/dist/guest/{setup/agents.d.ts → agents/agent-installer.d.ts} +0 -0
- /package/dist/guest/{audit-parse.d.ts → audit/parse.d.ts} +0 -0
- /package/dist/guest/{guide.d.ts → boot/guide.d.ts} +0 -0
- /package/dist/guest/daemon/{shutdown.d.ts → idle-shutdown.d.ts} +0 -0
- /package/dist/guest/daemon/{session.d.ts → sessions.d.ts} +0 -0
- /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
- /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
- /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
- /package/dist/guest/{gitguard.d.ts → git/decision.d.ts} +0 -0
- /package/dist/guest/{ports.d.ts → runtime/ports.d.ts} +0 -0
- /package/dist/guest/{project-context.d.ts → runtime/project-context.d.ts} +0 -0
- /package/dist/guest/{cmdline.d.ts → sessions/cmdline.d.ts} +0 -0
- /package/dist/guest/{ptyhost.d.ts → sessions/pty-host.d.ts} +0 -0
- /package/dist/guest/{view.d.ts → sessions/viewer.d.ts} +0 -0
- /package/dist/guest/setup/{policy.d.ts → managed-policy.d.ts} +0 -0
- /package/dist/host/{window.d.ts → sandbox/window.d.ts} +0 -0
- /package/dist/host/{wsb.d.ts → sandbox/wsb-cli.d.ts} +0 -0
- /package/dist/host/{cleanup.d.ts → storage/cleanup.d.ts} +0 -0
- /package/dist/selftest/{harness.d.ts → support/harness.d.ts} +0 -0
- /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
- /package/dist/shared/{safe-remove.d.ts → io/safe-remove.d.ts} +0 -0
- /package/dist/shared/{netrules.d.ts → network/firewall-rules.d.ts} +0 -0
- /package/dist/shared/{netpolicy.d.ts → network/policy.d.ts} +0 -0
- /package/dist/shared/{paths.d.ts → paths/claude-paths.d.ts} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { GB } from '../../../core/disk.js';
|
|
3
3
|
import { ENABLE_COMMAND } from './facts.js';
|
|
4
4
|
/** Windows Sandbox needs Pro, Enterprise or Education (build 18305+); Home ("Core*") and Server cannot run it. */
|
|
5
|
-
export
|
|
5
|
+
export function editionSupport(edition) {
|
|
6
6
|
if (!edition)
|
|
7
7
|
return 'unknown';
|
|
8
8
|
if (/^Core/i.test(edition))
|
|
@@ -10,13 +10,24 @@ export const editionSupport = (edition) => {
|
|
|
10
10
|
if (/^Server/i.test(edition))
|
|
11
11
|
return 'unsupported';
|
|
12
12
|
return /^(Professional|Enterprise|Education|IoTEnterprise)/i.test(edition) ? 'supported' : 'unknown';
|
|
13
|
-
}
|
|
14
|
-
export
|
|
13
|
+
}
|
|
14
|
+
export function nodeMajor(version) {
|
|
15
|
+
return Number(/^v?(\d+)/.exec(version.trim())?.[1] ?? 0);
|
|
16
|
+
}
|
|
15
17
|
/** Offer to enable the feature only when it is off and this edition can have it. */
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
export function canEnableFeature(f) {
|
|
19
|
+
return (f.feature !== 'enabled' &&
|
|
20
|
+
f.feature !== 'pending' &&
|
|
21
|
+
!f.sandboxExe &&
|
|
22
|
+
['supported', 'unknown'].includes(editionSupport(f.edition)));
|
|
23
|
+
}
|
|
24
|
+
function formatGb(bytes) {
|
|
25
|
+
return (bytes / GB).toFixed(1) + ' GB';
|
|
26
|
+
}
|
|
27
|
+
function check(name, status, detail) {
|
|
28
|
+
return { name, status, detail };
|
|
29
|
+
}
|
|
30
|
+
function editionCheck(f) {
|
|
20
31
|
const support = editionSupport(f.edition);
|
|
21
32
|
const edition = (f.edition ?? 'unknown edition') + (f.build ? ', build ' + f.build : '');
|
|
22
33
|
const name = 'Windows edition';
|
|
@@ -29,17 +40,17 @@ const editionCheck = (f) => {
|
|
|
29
40
|
if (support === 'supported')
|
|
30
41
|
return check(name, 'action', edition + ': too old; Windows Sandbox needs Windows 10 version 1903 or newer.');
|
|
31
42
|
return check(name, 'warn', edition + ': not sure this edition has Windows Sandbox (it needs Pro, Enterprise or Education).');
|
|
32
|
-
}
|
|
33
|
-
|
|
43
|
+
}
|
|
44
|
+
function virtualizationCheck(f) {
|
|
34
45
|
const name = 'CPU virtualization';
|
|
35
46
|
const virt = f.hypervisorPresent || f.virtualizationFirmware;
|
|
36
47
|
if (virt)
|
|
37
48
|
return check(name, 'ok', f.hypervisorPresent ? 'on (hypervisor running)' : 'on');
|
|
38
49
|
if (virt === false)
|
|
39
|
-
return check(name, 'action',
|
|
50
|
+
return check(name, 'action', "off. Turn on Intel VT-x / AMD-V (SVM) in your PC's BIOS/UEFI settings, then run this again.");
|
|
40
51
|
return check(name, 'warn', 'could not tell; if Windows Sandbox will not start, turn on VT-x / AMD-V in the BIOS/UEFI.');
|
|
41
|
-
}
|
|
42
|
-
|
|
52
|
+
}
|
|
53
|
+
function featureCheck(f) {
|
|
43
54
|
const name = 'Windows Sandbox feature';
|
|
44
55
|
if (f.feature === 'enabled' && f.sandboxExe)
|
|
45
56
|
return check(name, 'ok', 'enabled');
|
|
@@ -48,16 +59,16 @@ const featureCheck = (f) => {
|
|
|
48
59
|
if (f.sandboxExe)
|
|
49
60
|
return check(name, 'ok', 'installed');
|
|
50
61
|
return check(name, 'action', 'not enabled. In an admin PowerShell: ' + ENABLE_COMMAND + ', then restart.');
|
|
51
|
-
}
|
|
52
|
-
|
|
62
|
+
}
|
|
63
|
+
function memoryCheck(f) {
|
|
53
64
|
const gb = formatGb(f.totalRamBytes);
|
|
54
65
|
if (f.totalRamBytes < 4 * GB)
|
|
55
66
|
return check('Memory', 'action', gb + ': Windows Sandbox needs at least 4 GB.');
|
|
56
67
|
if (f.totalRamBytes < 8 * GB)
|
|
57
68
|
return check('Memory', 'warn', gb + ': works, but 8 GB or more is recommended.');
|
|
58
69
|
return check('Memory', 'ok', gb);
|
|
59
|
-
}
|
|
60
|
-
|
|
70
|
+
}
|
|
71
|
+
function diskCheck(f) {
|
|
61
72
|
if (f.freeDiskBytes === null)
|
|
62
73
|
return check('Free disk', 'warn', 'could not check the drive of ' + f.storageRoot);
|
|
63
74
|
const free = formatGb(f.freeDiskBytes) + ' free for ' + f.storageRoot;
|
|
@@ -66,6 +77,12 @@ const diskCheck = (f) => {
|
|
|
66
77
|
if (f.freeDiskBytes < 20 * GB)
|
|
67
78
|
return check('Free disk', 'warn', free + ': getting low; toolchains and caches can use several GB.');
|
|
68
79
|
return check('Free disk', 'ok', free);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
}
|
|
81
|
+
function nodeCheck(f) {
|
|
82
|
+
return nodeMajor(f.nodeVersion) >= 20
|
|
83
|
+
? check('Node.js', 'ok', f.nodeVersion)
|
|
84
|
+
: check('Node.js', 'action', f.nodeVersion + ': needs 20 or newer (winget install OpenJS.NodeJS.LTS).');
|
|
85
|
+
}
|
|
86
|
+
export function buildChecks(f) {
|
|
87
|
+
return [editionCheck(f), virtualizationCheck(f), featureCheck(f), memoryCheck(f), diskCheck(f), nodeCheck(f)];
|
|
88
|
+
}
|
|
@@ -16,16 +16,16 @@ export interface MachineFacts {
|
|
|
16
16
|
}
|
|
17
17
|
export declare const ENABLE_COMMAND: string;
|
|
18
18
|
/** `reg query <key>` output to { valueName: data }. */
|
|
19
|
-
export declare
|
|
19
|
+
export declare function parseRegQuery(text: string): Record<string, string>;
|
|
20
20
|
/** The "State : ..." line of `Dism /Get-FeatureInfo` (English output only; anything else is unknown). */
|
|
21
|
-
export declare
|
|
21
|
+
export declare function parseDismState(text: string): FeatureState;
|
|
22
22
|
/** Win32_OptionalFeature.InstallState: 1 enabled, 2 disabled, 3 absent. */
|
|
23
|
-
export declare
|
|
24
|
-
declare const
|
|
23
|
+
export declare function featureFromInstallState(state: number | null | undefined): FeatureState;
|
|
24
|
+
declare const ProbeSchema: z.ZodObject<{
|
|
25
25
|
virtualizationFirmware: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
26
26
|
hypervisorPresent: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
27
27
|
installState: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
28
28
|
}, z.core.$strip>;
|
|
29
|
-
export declare
|
|
30
|
-
export declare
|
|
29
|
+
export declare function parseProbe(text: string): z.infer<typeof ProbeSchema>;
|
|
30
|
+
export declare function gatherFacts(storageRoot: string): MachineFacts;
|
|
31
31
|
export {};
|
|
@@ -3,23 +3,29 @@ import os from 'node:os';
|
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { freeBytesAt } from '../../../core/disk.js';
|
|
6
|
-
import { captureOutput, fileExists } from '../../../core/util.js';
|
|
6
|
+
import { captureOutput, fileExists } from '../../../core/util/index.js';
|
|
7
7
|
import { SYSTEM, system32 } from '../../../shared/system.js';
|
|
8
8
|
const FEATURE = 'Containers-DisposableClientVM';
|
|
9
9
|
export const ENABLE_COMMAND = 'Enable-WindowsOptionalFeature -Online -FeatureName ' + FEATURE + ' -All -NoRestart';
|
|
10
10
|
/** `reg query <key>` output to { valueName: data }. */
|
|
11
|
-
export
|
|
11
|
+
export function parseRegQuery(text) {
|
|
12
|
+
return Object.fromEntries(_.compact(text
|
|
13
|
+
.split(/\r?\n/)
|
|
14
|
+
.map((line) => /^\s+(\S+)\s+REG_\w+\s+(.*)$/.exec(line)?.slice(1, 3))));
|
|
15
|
+
}
|
|
12
16
|
/** The "State : ..." line of `Dism /Get-FeatureInfo` (English output only; anything else is unknown). */
|
|
13
|
-
export
|
|
17
|
+
export function parseDismState(text) {
|
|
14
18
|
const state = /^State\s*:\s*(.+?)\s*$/im.exec(text)?.[1].toLowerCase() ?? '';
|
|
15
19
|
if (state === 'enabled')
|
|
16
20
|
return 'enabled';
|
|
17
21
|
if (state.includes('pending'))
|
|
18
22
|
return 'pending';
|
|
19
23
|
return state.startsWith('disabled') ? 'disabled' : 'unknown';
|
|
20
|
-
}
|
|
24
|
+
}
|
|
21
25
|
/** Win32_OptionalFeature.InstallState: 1 enabled, 2 disabled, 3 absent. */
|
|
22
|
-
export
|
|
26
|
+
export function featureFromInstallState(state) {
|
|
27
|
+
return state === 1 ? 'enabled' : state === 2 || state === 3 ? 'disabled' : 'unknown';
|
|
28
|
+
}
|
|
23
29
|
// Fixed script (no outside data): CPU/hypervisor facts and the feature state, readable without admin rights.
|
|
24
30
|
const PROBE = [
|
|
25
31
|
'$ErrorActionPreference = "SilentlyContinue"',
|
|
@@ -31,16 +37,22 @@ const PROBE = [
|
|
|
31
37
|
'$s = $null; if ($f) { $s = [int]$f.InstallState }',
|
|
32
38
|
'@{ virtualizationFirmware = $v; hypervisorPresent = $h; installState = $s } | ConvertTo-Json -Compress',
|
|
33
39
|
].join('; ');
|
|
34
|
-
const
|
|
35
|
-
|
|
40
|
+
const ProbeSchema = z
|
|
41
|
+
.object({
|
|
42
|
+
virtualizationFirmware: z.boolean().nullable(),
|
|
43
|
+
hypervisorPresent: z.boolean().nullable(),
|
|
44
|
+
installState: z.number().nullable(),
|
|
45
|
+
})
|
|
46
|
+
.partial();
|
|
47
|
+
export function parseProbe(text) {
|
|
36
48
|
try {
|
|
37
|
-
return
|
|
49
|
+
return ProbeSchema.parse(JSON.parse(_.last(text.trim().split(/\r?\n/)) ?? ''));
|
|
38
50
|
}
|
|
39
51
|
catch {
|
|
40
52
|
return {};
|
|
41
53
|
}
|
|
42
|
-
}
|
|
43
|
-
export
|
|
54
|
+
}
|
|
55
|
+
export function gatherFacts(storageRoot) {
|
|
44
56
|
const reg = parseRegQuery(captureOutput(SYSTEM.reg(), ['query', 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion']));
|
|
45
57
|
const probe = parseProbe(captureOutput(SYSTEM.powershell(), ['-NoProfile', '-NonInteractive', '-Command', PROBE]));
|
|
46
58
|
// DISM knows about a pending restart but needs admin rights; the CIM state works for everyone.
|
|
@@ -57,4 +69,4 @@ export const gatherFacts = (storageRoot) => {
|
|
|
57
69
|
storageRoot,
|
|
58
70
|
nodeVersion: process.version,
|
|
59
71
|
};
|
|
60
|
-
}
|
|
72
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type Context } from '../context.js';
|
|
2
|
-
export declare
|
|
2
|
+
export declare function setup(ctx: Context): Promise<number>;
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
// `sandbox setup`: checks this PC can run Windows Sandbox and offers to turn the feature on.
|
|
2
2
|
import { spawnSync } from 'node:child_process';
|
|
3
3
|
import { askYesNo } from '../../../core/prompt.js';
|
|
4
|
-
import { fail, isWin } from '../../../core/util.js';
|
|
4
|
+
import { fail, isWin } from '../../../core/util/index.js';
|
|
5
5
|
import { refuseInSelfTest } from '../../../host/test-guard.js';
|
|
6
6
|
import { SYSTEM } from '../../../shared/system.js';
|
|
7
|
-
import { c } from '../../
|
|
8
|
-
import { table } from '../context.js';
|
|
7
|
+
import { c, table } from '../../output/index.js';
|
|
9
8
|
import { buildChecks, canEnableFeature } from './checks.js';
|
|
10
9
|
import { ENABLE_COMMAND, gatherFacts } from './facts.js';
|
|
11
|
-
const LABEL = {
|
|
12
|
-
|
|
10
|
+
const LABEL = {
|
|
11
|
+
ok: c.green('OK'),
|
|
12
|
+
warn: c.yellow('WARNING'),
|
|
13
|
+
action: c.red('ACTION NEEDED'),
|
|
14
|
+
};
|
|
15
|
+
function print(checks) {
|
|
16
|
+
table(checks.map((check) => [LABEL[check.status], check.name, check.detail]));
|
|
17
|
+
}
|
|
13
18
|
/** Runs the enable command in an elevated PowerShell (Windows asks for permission); true if it worked. */
|
|
14
|
-
|
|
19
|
+
function enableFeature() {
|
|
15
20
|
refuseInSelfTest('turn on Windows features');
|
|
16
21
|
const inner = "'-NoProfile','-Command','" + ENABLE_COMMAND + " | Out-Null'";
|
|
17
|
-
const outer = "try { $p = Start-Process -FilePath '" +
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
const outer = "try { $p = Start-Process -FilePath '" +
|
|
23
|
+
SYSTEM.powershell() +
|
|
24
|
+
"' -Verb RunAs -Wait -PassThru -WindowStyle Hidden -ArgumentList " +
|
|
25
|
+
inner +
|
|
26
|
+
'; exit $p.ExitCode } catch { exit 1 }';
|
|
27
|
+
return (spawnSync(SYSTEM.powershell(), ['-NoProfile', '-NonInteractive', '-Command', outer], { stdio: 'inherit' })
|
|
28
|
+
.status === 0);
|
|
29
|
+
}
|
|
30
|
+
export async function setup(ctx) {
|
|
21
31
|
if (!isWin)
|
|
22
32
|
fail('Windows Sandbox only runs on Windows.', 'Run sandbox setup on a Windows 10/11 Pro, Enterprise or Education PC.');
|
|
23
33
|
console.log('Checking this PC for Windows Sandbox...\n');
|
|
@@ -38,6 +48,9 @@ export const setup = async (ctx) => {
|
|
|
38
48
|
console.log('To do it yourself, in an admin PowerShell run:\n ' + ENABLE_COMMAND + '\nthen restart Windows.');
|
|
39
49
|
}
|
|
40
50
|
const todo = checks.filter((check) => check.status === 'action').length;
|
|
41
|
-
console.log('\n' +
|
|
51
|
+
console.log('\n' +
|
|
52
|
+
(todo
|
|
53
|
+
? todo + ' thing(s) to fix before the sandbox can start (see ACTION NEEDED above).'
|
|
54
|
+
: 'This PC is ready. cd into a project and run sandbox claude (or sandbox for no agent).'));
|
|
42
55
|
return todo ? 1 : 0;
|
|
43
|
-
}
|
|
56
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Context } from './context.js';
|
|
2
|
-
export declare
|
|
2
|
+
export declare function configFile(ctx: Context): string;
|
|
3
3
|
/** The value as written in your file (not merged with the defaults). */
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
4
|
+
export declare function fileSetting<T>(ctx: Context, key: string[], fallback: T): T;
|
|
5
|
+
export declare function setSetting(ctx: Context, key: string[], value: unknown): void;
|
|
6
6
|
/** Adds a folder to a list setting (projects.roots, projects.exclude, ...) unless it is there already. */
|
|
7
|
-
export declare
|
|
8
|
-
export declare
|
|
7
|
+
export declare function addToList(ctx: Context, key: string[], folder: string): boolean;
|
|
8
|
+
export declare function removeFromList(ctx: Context, key: string[], folder: string): boolean;
|
|
@@ -4,17 +4,19 @@ import fs from 'node:fs';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { parse } from 'jsonc-parser';
|
|
6
6
|
import _ from 'lodash';
|
|
7
|
-
import { userConfigPath } from '../../core/config.js';
|
|
8
|
-
import { fail } from '../../core/util.js';
|
|
9
|
-
import { editConfigText } from '../menu/settings/
|
|
10
|
-
export
|
|
7
|
+
import { userConfigPath } from '../../core/config/index.js';
|
|
8
|
+
import { fail } from '../../core/util/index.js';
|
|
9
|
+
import { editConfigText } from '../menu/settings/index.js';
|
|
10
|
+
export function configFile(ctx) {
|
|
11
|
+
return ctx.loaded.configPath ?? userConfigPath();
|
|
12
|
+
}
|
|
11
13
|
/** The value as written in your file (not merged with the defaults). */
|
|
12
|
-
export
|
|
14
|
+
export function fileSetting(ctx, key, fallback) {
|
|
13
15
|
const file = configFile(ctx);
|
|
14
16
|
const text = fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : '';
|
|
15
17
|
return _.get(parse(text) ?? {}, key) ?? fallback;
|
|
16
|
-
}
|
|
17
|
-
export
|
|
18
|
+
}
|
|
19
|
+
export function setSetting(ctx, key, value) {
|
|
18
20
|
const file = configFile(ctx);
|
|
19
21
|
const text = fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : '';
|
|
20
22
|
const result = editConfigText(text, key, value);
|
|
@@ -22,20 +24,20 @@ export const setSetting = (ctx, key, value) => {
|
|
|
22
24
|
fail('Could not change ' + key.join('.') + ':\n ' + result.problems.join('\n '));
|
|
23
25
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
24
26
|
fs.writeFileSync(file, result.text, 'utf8');
|
|
25
|
-
}
|
|
27
|
+
}
|
|
26
28
|
/** Adds a folder to a list setting (projects.roots, projects.exclude, ...) unless it is there already. */
|
|
27
|
-
export
|
|
29
|
+
export function addToList(ctx, key, folder) {
|
|
28
30
|
const list = fileSetting(ctx, key, []);
|
|
29
31
|
if (list.some((p) => path.resolve(p).toLowerCase() === path.resolve(folder).toLowerCase()))
|
|
30
32
|
return false;
|
|
31
33
|
setSetting(ctx, key, [...list, folder]);
|
|
32
34
|
return true;
|
|
33
|
-
}
|
|
34
|
-
export
|
|
35
|
+
}
|
|
36
|
+
export function removeFromList(ctx, key, folder) {
|
|
35
37
|
const list = fileSetting(ctx, key, []);
|
|
36
38
|
const rest = list.filter((p) => path.resolve(p).toLowerCase() !== path.resolve(folder).toLowerCase());
|
|
37
39
|
if (rest.length === list.length)
|
|
38
40
|
return false;
|
|
39
41
|
setSetting(ctx, key, rest);
|
|
40
42
|
return true;
|
|
41
|
-
}
|
|
43
|
+
}
|
package/dist/cli/history.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
declare const
|
|
2
|
+
declare const HistorySchema: z.ZodArray<z.ZodObject<{
|
|
3
3
|
argv: z.ZodArray<z.ZodString>;
|
|
4
4
|
at: z.ZodString;
|
|
5
5
|
}, z.core.$strict>>;
|
|
6
|
-
|
|
6
|
+
type History = z.output<typeof HistorySchema>;
|
|
7
|
+
export declare function readHistory(): History;
|
|
7
8
|
/** Remembers a command (menu or typed) so the menu can offer it again. Never fails the command itself. */
|
|
8
|
-
export declare
|
|
9
|
+
export declare function recordHistory(argv: string[]): void;
|
|
9
10
|
/** argv as you would type it (quoted where needed). */
|
|
10
|
-
export declare
|
|
11
|
+
export declare function commandLine(argv: string[]): string;
|
|
11
12
|
export {};
|
package/dist/cli/history.js
CHANGED
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
// The last commands run (menu or typed), kept in ~/.agent-sandbox/history.json so the menu can offer them again.
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { userDir } from '../core/config.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { userDir } from '../core/config/index.js';
|
|
5
|
+
import { JsonFile } from '../shared/io/index.js';
|
|
6
|
+
const HistorySchema = z.array(z.strictObject({ argv: z.array(z.string()).max(200), at: z.string() })).max(20);
|
|
7
|
+
function historyFile() {
|
|
8
|
+
return new JsonFile(HistorySchema, path.join(userDir(), 'history.json'));
|
|
9
|
+
}
|
|
9
10
|
const HIDDEN = new Set(['menu', '_watch', 'self-test']);
|
|
10
|
-
export
|
|
11
|
+
export function readHistory() {
|
|
12
|
+
return historyFile().read() ?? [];
|
|
13
|
+
}
|
|
11
14
|
/** Remembers a command (menu or typed) so the menu can offer it again. Never fails the command itself. */
|
|
12
|
-
export
|
|
15
|
+
export function recordHistory(argv) {
|
|
13
16
|
if (!argv.length || HIDDEN.has(argv[0]) || argv.includes('--help'))
|
|
14
17
|
return;
|
|
15
18
|
try {
|
|
16
|
-
|
|
19
|
+
historyFile().write([
|
|
20
|
+
{ argv, at: new Date().toISOString() },
|
|
21
|
+
...readHistory().filter((h) => h.argv.join('\0') !== argv.join('\0')),
|
|
22
|
+
].slice(0, 10));
|
|
17
23
|
}
|
|
18
|
-
catch {
|
|
19
|
-
|
|
24
|
+
catch {
|
|
25
|
+
/* history is a convenience */
|
|
26
|
+
}
|
|
27
|
+
}
|
|
20
28
|
/** argv as you would type it (quoted where needed). */
|
|
21
|
-
export
|
|
29
|
+
export function commandLine(argv) {
|
|
30
|
+
return ['sandbox', ...argv]
|
|
31
|
+
.map((a) => (/[\s"]/.test(a) || a === '' ? '"' + a.replace(/"/g, '\\"') + '"' : a))
|
|
32
|
+
.join(' ');
|
|
33
|
+
}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
/** The package folder (this file is dist/cli/index.js). */
|
|
2
|
-
export declare const packageRoot: string;
|
|
3
1
|
export interface Preset {
|
|
4
2
|
harness?: string;
|
|
5
3
|
command?: string;
|
|
6
4
|
}
|
|
7
|
-
/** `--config <file>` right after the command name (where every command accepts it); argv unchanged without a config. */
|
|
8
|
-
export declare const withConfig: (argv: string[], config: string | undefined) => string[];
|
|
9
|
-
/** `sandbox --config f.json status` works like `sandbox status --config f.json`: a leading --config moves behind the command. */
|
|
10
|
-
export declare const hoistConfig: (argv: string[]) => string[];
|
|
11
5
|
/**
|
|
12
|
-
* CLI entry. `preset` lets wrapper binaries fix the command/agent (sandbox claude = launch --harness claude). No
|
|
13
|
-
* opens the menu; `sandbox <agent> [agent args]` starts that agent.
|
|
6
|
+
* CLI entry. `preset` lets wrapper binaries fix the command/agent (sandbox claude = launch --harness claude). No
|
|
7
|
+
* arguments opens the menu; `sandbox <agent> [agent args]` starts that agent.
|
|
14
8
|
*/
|
|
15
|
-
export declare
|
|
16
|
-
|
|
17
|
-
export declare const withoutConfig: (argv: string[]) => string[];
|
|
18
|
-
/** Prints a problem the way a user can act on it: what happened, how to fix it; stack traces only for real bugs. */
|
|
19
|
-
export declare const report: (e: unknown) => number;
|
|
20
|
-
export declare const run: (argv: string[], preset?: Preset) => void;
|
|
9
|
+
export declare function main(rawArgv: string[], preset?: Preset): Promise<number>;
|
|
10
|
+
export declare function run(argv: string[], preset?: Preset): void;
|
package/dist/cli/index.js
CHANGED
|
@@ -1,64 +1,24 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
|
-
import { CommanderError } from 'commander';
|
|
4
2
|
import { buildProgram, parseCli } from './args.js';
|
|
5
3
|
import { commandSpec } from './manifest.js';
|
|
6
|
-
import { c } from './colors.js';
|
|
7
4
|
import { recordHistory } from './history.js';
|
|
8
5
|
import { menu } from './menu/index.js';
|
|
9
6
|
import { validateOptions } from './validate.js';
|
|
10
|
-
import { loadConfig } from '../core/config.js';
|
|
7
|
+
import { loadConfig } from '../core/config/index.js';
|
|
11
8
|
import * as commands from './commands/index.js';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
generate: (ctx) => commands.launch(ctx, true),
|
|
19
|
-
attach: commands.attach,
|
|
20
|
-
sessions: commands.sessions,
|
|
21
|
-
status: commands.status,
|
|
22
|
-
exec: commands.exec,
|
|
23
|
-
'agent-commands': commands.agentCommandsCommand,
|
|
24
|
-
db: commands.db,
|
|
25
|
-
restart: commands.restart,
|
|
26
|
-
stop: commands.stop,
|
|
27
|
-
show: commands.show,
|
|
28
|
-
hide: commands.hide,
|
|
29
|
-
account: commands.account,
|
|
30
|
-
projects: commands.projects,
|
|
31
|
-
sync: commands.sync,
|
|
32
|
-
logs: commands.logs,
|
|
33
|
-
audit: commands.audit,
|
|
34
|
-
clean: commands.clean,
|
|
35
|
-
config: commands.config,
|
|
36
|
-
doctor: commands.doctor,
|
|
37
|
-
setup: commands.setup,
|
|
38
|
-
data: commands.data,
|
|
39
|
-
'host-claude': commands.claudeHost,
|
|
40
|
-
_watch: commands.watcher,
|
|
41
|
-
};
|
|
9
|
+
import { fail } from '../core/util/index.js';
|
|
10
|
+
import { PACKAGE_ROOT } from '../core/package-info.js';
|
|
11
|
+
import { withConfig, hoistConfig, withoutConfig } from './argv.js';
|
|
12
|
+
import { report } from './report.js';
|
|
13
|
+
import { HANDLERS } from './commands/index.js';
|
|
14
|
+
const entry = path.join(PACKAGE_ROOT, 'dist', 'bin', 'agent-sandbox.js');
|
|
42
15
|
/** Runs an argv from the menu exactly as if it had been typed, reporting errors instead of throwing. */
|
|
43
16
|
const runFromMenu = (config) => (argv) => main(withConfig(argv, config)).catch((e) => report(e));
|
|
44
|
-
/** `--config <file>` right after the command name (where every command accepts it); argv unchanged without a config. */
|
|
45
|
-
export const withConfig = (argv, config) => (config && argv.length ? [argv[0], '--config', config, ...argv.slice(1)] : argv);
|
|
46
|
-
/** `sandbox --config f.json status` works like `sandbox status --config f.json`: a leading --config moves behind the command. */
|
|
47
|
-
export const hoistConfig = (argv) => {
|
|
48
|
-
const eq = argv[0]?.startsWith('--config=');
|
|
49
|
-
if (argv[0] !== '--config' && !eq)
|
|
50
|
-
return argv;
|
|
51
|
-
const value = eq ? argv[0].slice('--config='.length) : argv[1];
|
|
52
|
-
const rest = argv.slice(eq ? 1 : 2);
|
|
53
|
-
if (value === undefined || value === '')
|
|
54
|
-
return argv;
|
|
55
|
-
return rest.length ? withConfig(rest, value) : ['menu', '--config', value];
|
|
56
|
-
};
|
|
57
17
|
/**
|
|
58
|
-
* CLI entry. `preset` lets wrapper binaries fix the command/agent (sandbox claude = launch --harness claude). No
|
|
59
|
-
* opens the menu; `sandbox <agent> [agent args]` starts that agent.
|
|
18
|
+
* CLI entry. `preset` lets wrapper binaries fix the command/agent (sandbox claude = launch --harness claude). No
|
|
19
|
+
* arguments opens the menu; `sandbox <agent> [agent args]` starts that agent.
|
|
60
20
|
*/
|
|
61
|
-
export
|
|
21
|
+
export async function main(rawArgv, preset = {}) {
|
|
62
22
|
const argv = preset.command || preset.harness ? rawArgv : hoistConfig(rawArgv);
|
|
63
23
|
const isAgent = (name) => {
|
|
64
24
|
if (!name || name.startsWith('-') || commandSpec(name))
|
|
@@ -80,44 +40,34 @@ export const main = async (rawArgv, preset = {}) => {
|
|
|
80
40
|
const options = parseCli(preset.command ? [preset.command, ...argv] : argv, Boolean(preset.harness));
|
|
81
41
|
if (preset.harness)
|
|
82
42
|
options.harness = preset.harness;
|
|
83
|
-
const typed = preset.harness
|
|
43
|
+
const typed = preset.harness
|
|
44
|
+
? ['launch', '--harness', preset.harness, ...argv]
|
|
45
|
+
: preset.command
|
|
46
|
+
? [preset.command, ...argv]
|
|
47
|
+
: argv;
|
|
84
48
|
if (options.command === 'menu')
|
|
85
|
-
return menu(commands.createContext(
|
|
49
|
+
return menu(commands.createContext(PACKAGE_ROOT, entry, options), runFromMenu(options.config));
|
|
86
50
|
// Loaded only when asked for: normal commands never load test code.
|
|
87
51
|
if (options.command === 'self-test')
|
|
88
|
-
return (await import('../selftest/index.js')).selfTest(
|
|
52
|
+
return (await import('../selftest/index.js')).selfTest(PACKAGE_ROOT, options.positionals);
|
|
89
53
|
// repair must run even when the config file is broken (createContext would refuse it).
|
|
90
54
|
if (options.command === 'repair') {
|
|
91
55
|
recordHistory(withoutConfig(typed));
|
|
92
|
-
return commands.repairCommand(
|
|
56
|
+
return commands.repairCommand(PACKAGE_ROOT, entry, options);
|
|
93
57
|
}
|
|
94
58
|
const handler = HANDLERS[options.command];
|
|
95
59
|
if (!handler)
|
|
96
60
|
return fail('Unknown command "' + options.command + '".', 'Run sandbox --help for the list of commands, or sandbox for the menu.');
|
|
97
|
-
const ctx = commands.createContext(
|
|
61
|
+
const ctx = commands.createContext(PACKAGE_ROOT, entry, options);
|
|
98
62
|
validateOptions(ctx);
|
|
99
63
|
// Only what parsed and validated is offered again by the menu, without the --config (it is the same every time).
|
|
100
64
|
recordHistory(withoutConfig(typed));
|
|
101
65
|
return (await handler(ctx)) ?? 0;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// Messages can quote what the sandbox wrote (a session's status, an address): never with its control codes.
|
|
111
|
-
console.error(c.red('Error: ') + plainText(e.message));
|
|
112
|
-
if (e.fix)
|
|
113
|
-
console.error(' Fix: ' + plainText(e.fix));
|
|
114
|
-
return 1;
|
|
115
|
-
}
|
|
116
|
-
console.error(c.red('Unexpected error: ') + errMsg(e));
|
|
117
|
-
console.error(c.dim('This is a bug in windows-development-sandbox. Details: ' + (e instanceof Error && e.stack ? e.stack.split('\n').slice(1, 4).join(' | ').trim() : 'none')));
|
|
118
|
-
console.error(' Please report it with the output of: sandbox doctor');
|
|
119
|
-
return 1;
|
|
120
|
-
};
|
|
121
|
-
export const run = (argv, preset) => {
|
|
122
|
-
main(argv, preset).then((code) => { process.exitCode = code; }, (e) => { process.exitCode = report(e); });
|
|
123
|
-
};
|
|
66
|
+
}
|
|
67
|
+
export function run(argv, preset) {
|
|
68
|
+
main(argv, preset).then((code) => {
|
|
69
|
+
process.exitCode = code;
|
|
70
|
+
}, (e) => {
|
|
71
|
+
process.exitCode = report(e);
|
|
72
|
+
});
|
|
73
|
+
}
|