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
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
function agentRow(run, generated, prepared) {
|
|
2
|
+
const { config } = run;
|
|
3
|
+
// What the sandbox boots with (the launch folder's settings plus what the other projects at boot want).
|
|
4
|
+
const booted = generated.bootConfig;
|
|
5
|
+
return (run.harnessName +
|
|
6
|
+
(prepared?.account ? ' (account: ' + prepared.account + ')' : '') +
|
|
7
|
+
' Memory: ' +
|
|
8
|
+
generated.memoryMb +
|
|
9
|
+
' MB CPU: ' +
|
|
10
|
+
(config.sandbox.cpuLimit === 'none' ? 'all' : 'max ' + config.sandbox.cpuLimit + '%') +
|
|
11
|
+
' Network: ' +
|
|
12
|
+
booted.sandbox.networking +
|
|
13
|
+
(booted.sandbox.vGpu ? ' vGPU' : '') +
|
|
14
|
+
(config.sandbox.headless ? ' HEADLESS' : ''));
|
|
15
|
+
}
|
|
16
|
+
function versionsRow(run) {
|
|
17
|
+
const { node, python } = run.versions;
|
|
18
|
+
return node.spec + ' (' + node.source + ') Python: ' + python.spec + ' (' + python.source + ')';
|
|
19
|
+
}
|
|
20
|
+
function preparedRows(prepared) {
|
|
21
|
+
return prepared
|
|
22
|
+
? [
|
|
23
|
+
['Ignored files', prepared.filter],
|
|
24
|
+
['Terminal', prepared.terminal],
|
|
25
|
+
['History', prepared.history],
|
|
26
|
+
['Cleanup', prepared.pruned],
|
|
27
|
+
]
|
|
28
|
+
: [];
|
|
29
|
+
}
|
|
30
|
+
function toolchainsRow(generated) {
|
|
31
|
+
return (Object.entries(generated.toolchains)
|
|
32
|
+
.filter(([, d]) => d.on)
|
|
33
|
+
.map(([name, d]) => name + ' (' + d.reason + ')')
|
|
34
|
+
.join(', ') || 'Node only (nothing else used by this project)');
|
|
35
|
+
}
|
|
36
|
+
function databaseRows(generated) {
|
|
37
|
+
if (!generated.databases.length)
|
|
38
|
+
return [['Databases', 'none needed (databases.<name>.enabled = true adds one)']];
|
|
39
|
+
return generated.databases.map((d, i) => [
|
|
40
|
+
i ? '' : 'Databases',
|
|
41
|
+
d.database +
|
|
42
|
+
(d.database === 'sqlserver'
|
|
43
|
+
? ' (cannot run in the sandbox; use Postgres or SQLite for local work)'
|
|
44
|
+
: ' on port ' + d.port) +
|
|
45
|
+
' because ' +
|
|
46
|
+
d.reasons[0] +
|
|
47
|
+
(d.reasons.length > 1 ? ' (+' + (d.reasons.length - 1) + ' more)' : ''),
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
function claudeRow(generated) {
|
|
51
|
+
const { profile } = generated;
|
|
52
|
+
return profile.staged.length
|
|
53
|
+
? profile.staged.join(', ') + (profile.credentials ? ' (INCLUDING YOUR LOGIN)' : '')
|
|
54
|
+
: 'no settings copied';
|
|
55
|
+
}
|
|
56
|
+
function secretsRow(run, generated) {
|
|
57
|
+
if (!run.config.secrets.strip)
|
|
58
|
+
return 'NOT stripped (secrets.strip is off)';
|
|
59
|
+
const removed = generated.profile.secretsRemoved;
|
|
60
|
+
return removed.length
|
|
61
|
+
? 'kept on this PC: ' + removed.join(', ') + ' (secrets.allow lets one through)'
|
|
62
|
+
: 'none found in what is copied';
|
|
63
|
+
}
|
|
64
|
+
/** Project roots, boot-mapped projects, then any other folder mapped (not the tool's own nor the workspace). */
|
|
65
|
+
function mappingRows(run, generated) {
|
|
66
|
+
const { roots, projects } = generated.projects;
|
|
67
|
+
return [
|
|
68
|
+
...roots.map((r, i) => [
|
|
69
|
+
i ? '' : 'Project roots',
|
|
70
|
+
r.host + ' -> ' + r.guest + ' (every project in it opens without a restart)',
|
|
71
|
+
]),
|
|
72
|
+
...projects.map((p, i) => [i ? '' : 'Projects', p.host + ' -> ' + p.guest]),
|
|
73
|
+
...generated.mappings
|
|
74
|
+
.slice(2)
|
|
75
|
+
.filter((m) => m.guest !== run.config.guestWorkspace && ![...roots, ...projects].some((p) => p.guest === m.guest))
|
|
76
|
+
.map((m) => [
|
|
77
|
+
' map ' + (m.readOnly ? 'ro' : 'rw'),
|
|
78
|
+
m.host + ' -> ' + m.guest + (m.label ? ' (' + m.label + ')' : ''),
|
|
79
|
+
]),
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
/** The launch summary rows, in the order they are printed. */
|
|
83
|
+
export function launchSummary(run, generated, prepared) {
|
|
84
|
+
const { config } = run;
|
|
85
|
+
return [
|
|
86
|
+
['Workspace', run.workspaceHost + ' -> ' + config.guestWorkspace + (config.readOnly ? ' (read-only)' : '')],
|
|
87
|
+
['Agent', agentRow(run, generated, prepared)],
|
|
88
|
+
['Node', versionsRow(run)],
|
|
89
|
+
...preparedRows(prepared),
|
|
90
|
+
['Toolchains', toolchainsRow(generated)],
|
|
91
|
+
...databaseRows(generated),
|
|
92
|
+
['Desktop', generated.personalization],
|
|
93
|
+
['Claude', claudeRow(generated)],
|
|
94
|
+
['Secrets', secretsRow(run, generated)],
|
|
95
|
+
...mappingRows(run, generated),
|
|
96
|
+
['Generated', generated.wsbPath],
|
|
97
|
+
];
|
|
98
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fail, plainText } from '../../../core/util/index.js';
|
|
3
|
+
import { humanBytes } from '../../../core/disk.js';
|
|
4
|
+
import { AuditLog } from '../../../host/audit/log.js';
|
|
5
|
+
import { printJson, c } from '../../output/index.js';
|
|
6
|
+
const KINDS = ['proc', 'file', 'session', 'guard', 'note'];
|
|
7
|
+
const KIND_LABEL = {
|
|
8
|
+
proc: 'program',
|
|
9
|
+
file: 'file',
|
|
10
|
+
session: 'session',
|
|
11
|
+
guard: 'GUARD',
|
|
12
|
+
note: 'note',
|
|
13
|
+
};
|
|
14
|
+
/** `sandbox audit`: the audit log of the last days (audit.enabled), newest last. */
|
|
15
|
+
export async function audit(ctx) {
|
|
16
|
+
const settings = ctx.loaded.config.audit;
|
|
17
|
+
const kind = ctx.options.kind;
|
|
18
|
+
if (kind && !KINDS.includes(kind))
|
|
19
|
+
fail('Unknown kind "' + kind + '".', 'Use one of: ' + KINDS.join(', '));
|
|
20
|
+
const log = new AuditLog(AuditLog.dirFor(ctx.storageRoot, ctx.dataPath), settings);
|
|
21
|
+
const events = log.read({
|
|
22
|
+
days: ctx.options.days,
|
|
23
|
+
kinds: kind ? [kind] : undefined,
|
|
24
|
+
grep: ctx.options.grep,
|
|
25
|
+
});
|
|
26
|
+
if (printJson(ctx, events))
|
|
27
|
+
return 0;
|
|
28
|
+
if (!events.length) {
|
|
29
|
+
console.log(settings.enabled
|
|
30
|
+
? 'Nothing in the audit log for the last ' + ctx.options.days + ' day(s).'
|
|
31
|
+
: 'The audit log is off. Turn it on in the menu (Settings > Security & privacy > Audit log) or with audit.enabled in your config.');
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
for (const e of events) {
|
|
35
|
+
// What the sandbox reported is text from the sandbox: no control codes reach your terminal.
|
|
36
|
+
const [p, cmd, parent, dir, act] = [e.p, e.c, e.pp, e.w, e.a].map((v) => plainText(v ?? ''));
|
|
37
|
+
const what = e.k === 'proc'
|
|
38
|
+
? (cmd || p) + (parent ? c.dim(' <- ' + path.win32.basename(parent)) : '')
|
|
39
|
+
: e.k === 'file'
|
|
40
|
+
? act + ' ' + p + c.dim(' in ' + dir)
|
|
41
|
+
: e.k === 'session'
|
|
42
|
+
? act + ' ' + p + c.dim(' ' + dir + ' ' + cmd)
|
|
43
|
+
: p;
|
|
44
|
+
console.log(c.dim(new Date(e.t).toLocaleString()) +
|
|
45
|
+
' ' +
|
|
46
|
+
(e.k === 'guard' ? c.yellow(KIND_LABEL[e.k].padEnd(8)) : KIND_LABEL[e.k].padEnd(8)) +
|
|
47
|
+
what +
|
|
48
|
+
(e.n && e.n > 1 ? c.dim(' x' + e.n) : ''));
|
|
49
|
+
}
|
|
50
|
+
console.log(c.dim('\n' +
|
|
51
|
+
events.length +
|
|
52
|
+
' event(s); the log takes ' +
|
|
53
|
+
humanBytes(log.bytes()) +
|
|
54
|
+
' (' +
|
|
55
|
+
AuditLog.dirFor(ctx.storageRoot, ctx.dataPath) +
|
|
56
|
+
').'));
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { describePrune, pruneStorage } from '../../../host/storage/index.js';
|
|
3
|
+
import { isSandboxRunning } from '../../../host/sandbox/index.js';
|
|
4
|
+
import { RunDir } from '../../../shared/channel/index.js';
|
|
5
|
+
export function clean(ctx) {
|
|
6
|
+
const running = isSandboxRunning() ? new RunDir(ctx.dataPath).readSandboxStatus()?.launchId : undefined;
|
|
7
|
+
console.log('Cleanup: ' +
|
|
8
|
+
describePrune(pruneStorage(ctx.storageRoot, { launchDays: ctx.options.days, keep: _.compact([running]) })));
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { DEFAULTS, userConfigPath, userDir } from '../../../core/config/index.js';
|
|
5
|
+
import { allowedAnswer, allowStorePath, applyOverrides, describeOverrides, isTrusted, LOCAL_CONFIG_NAME, loosenedRequests, normalizeOverrides, OUTSIDE_FOLDER, outsideKey, outsideMappings, readLocalConfig, trustStorePath, } from '../../../core/local-config/index.js';
|
|
6
|
+
import { guestWorkspaceOf, previewGuest } from '../../../core/run/index.js';
|
|
7
|
+
import { dirExists, fail, safeText, writeJson } from '../../../core/util/index.js';
|
|
8
|
+
import { c, table } from '../../output/index.js';
|
|
9
|
+
function initConfig() {
|
|
10
|
+
const file = userConfigPath();
|
|
11
|
+
if (fs.existsSync(file))
|
|
12
|
+
fail(file + ' already exists.');
|
|
13
|
+
fs.mkdirSync(path.join(userDir(), 'hooks', 'pre-agent'), { recursive: true });
|
|
14
|
+
// The schema sits next to the file (a local path), so editors trust it and show docs and autocomplete.
|
|
15
|
+
writeJson(file, { $schema: './config.schema.json', ...DEFAULTS });
|
|
16
|
+
console.log('Created ' + file + '. It lists every setting with its default; delete the ones you do not change.');
|
|
17
|
+
console.log('Your own hook scripts go in ' + path.join(userDir(), 'hooks') + '\\{pre-provision,pre-agent,post-agent}.');
|
|
18
|
+
console.log("For editor help in every project's .sandbox-config.json, run: sandbox config schema");
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* VS Code setting that maps every .sandbox-config.json (and the user config) to the local schema files, so project
|
|
23
|
+
* files need no "$schema" line and nothing is fetched from the internet (remote schemas need trusting).
|
|
24
|
+
*/
|
|
25
|
+
function printSchemaSettings() {
|
|
26
|
+
const url = (name) => pathToFileURL(path.join(userDir(), name)).href;
|
|
27
|
+
const setting = {
|
|
28
|
+
'json.schemas': [
|
|
29
|
+
{ fileMatch: ['**/.sandbox-config.json'], url: url('sandbox-config.schema.json') },
|
|
30
|
+
{ fileMatch: ['**/.agent-sandbox/config.json'], url: url('config.schema.json') },
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
console.log('Add this to your VS Code settings.json (Ctrl+Shift+P > "Preferences: Open User Settings (JSON)"):\n');
|
|
34
|
+
console.log(JSON.stringify(setting, null, 2).slice(2, -2));
|
|
35
|
+
console.log('\nThe schema files live in ' + userDir() + ' and are refreshed whenever the sandbox command runs.');
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* `sandbox config check`: the folder's .sandbox-config.json validated and described (risky settings flagged, approval
|
|
40
|
+
* state), without launching. Fails with the same message a launch would give when the file is not valid.
|
|
41
|
+
*/
|
|
42
|
+
function checkLocalConfig(ctx) {
|
|
43
|
+
const dir = path.resolve(ctx.options.workspace ?? process.cwd());
|
|
44
|
+
const file = readLocalConfig(dir);
|
|
45
|
+
if (!file) {
|
|
46
|
+
console.log('No ' + LOCAL_CONFIG_NAME + ' in ' + dir + '; the sandbox uses your own settings only.');
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
const overrides = normalizeOverrides(file.data, dir, file.path);
|
|
50
|
+
const approved = isTrusted(trustStorePath(ctx.storageRoot), file.path, file.hash);
|
|
51
|
+
console.log(file.path +
|
|
52
|
+
': valid. ' +
|
|
53
|
+
(approved ? 'Approved (this exact version).' : 'Not approved yet: the next launch asks you.') +
|
|
54
|
+
'\n');
|
|
55
|
+
for (const line of describeOverrides(overrides, dir))
|
|
56
|
+
console.log(' ' + safeText(line));
|
|
57
|
+
previewFolders(ctx, dir, file.path, overrides);
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
/** What a launch from here would do with each folder and each looser setting, without launching. */
|
|
61
|
+
function previewFolders(ctx, dir, filePath, overrides) {
|
|
62
|
+
const config = ctx.loaded.config;
|
|
63
|
+
const store = allowStorePath(ctx.storageRoot);
|
|
64
|
+
const workspaceGuest = guestWorkspaceOf(applyOverrides(config, overrides), dir).guest;
|
|
65
|
+
const outside = outsideMappings(dir, overrides.mappings);
|
|
66
|
+
const policy = config.projects.allowOutsideMappings;
|
|
67
|
+
const statusOf = (m) => {
|
|
68
|
+
if (!dirExists(m.host))
|
|
69
|
+
return m.optional
|
|
70
|
+
? 'not on this PC: skipped'
|
|
71
|
+
: c.red('the folder does not exist: create it, fix the path, or add "optional": true');
|
|
72
|
+
if (!outside.includes(m))
|
|
73
|
+
return m.guest ? 'inside the project' : 'inside the project (already in the sandbox there)';
|
|
74
|
+
if (policy === true)
|
|
75
|
+
return 'outside the project, allowed (projects.allowOutsideMappings is true)';
|
|
76
|
+
if (policy === false)
|
|
77
|
+
return c.red('outside the project: refused (projects.allowOutsideMappings is false)');
|
|
78
|
+
return allowedAnswer(store, filePath, OUTSIDE_FOLDER, outsideKey(m)) === true
|
|
79
|
+
? 'outside the project, allowed (you said yes)'
|
|
80
|
+
: c.yellow('outside the project: the next interactive launch asks you');
|
|
81
|
+
};
|
|
82
|
+
const rows = (overrides.mappings ?? []).map((m) => {
|
|
83
|
+
const where = previewGuest(m, dir, workspaceGuest);
|
|
84
|
+
return [(m.readOnly ? 'ro ' : 'rw ') + safeText(m.host), '-> ' + safeText(where.guest), statusOf(m)];
|
|
85
|
+
});
|
|
86
|
+
if (rows.length) {
|
|
87
|
+
console.log('\nFolders (where they appear in the sandbox):');
|
|
88
|
+
table(rows);
|
|
89
|
+
}
|
|
90
|
+
for (const m of overrides.mappings ?? []) {
|
|
91
|
+
const note = dirExists(m.host) ? previewGuest(m, dir, workspaceGuest).note : null;
|
|
92
|
+
if (note)
|
|
93
|
+
console.log(' ' + safeText(note));
|
|
94
|
+
}
|
|
95
|
+
const looser = loosenedRequests(config, overrides);
|
|
96
|
+
if (looser.length)
|
|
97
|
+
console.log('\nLooser than your settings (used only if you allow it for this project):');
|
|
98
|
+
for (const a of looser) {
|
|
99
|
+
const answer = allowedAnswer(store, filePath, a.key, a.wanted);
|
|
100
|
+
console.log(' ' +
|
|
101
|
+
a.key +
|
|
102
|
+
' = ' +
|
|
103
|
+
JSON.stringify(a.wanted) +
|
|
104
|
+
': ' +
|
|
105
|
+
(answer === true
|
|
106
|
+
? 'allowed (you said yes)'
|
|
107
|
+
: answer === false
|
|
108
|
+
? 'not used (you said no)'
|
|
109
|
+
: 'the next interactive launch asks you'));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export function config(ctx) {
|
|
113
|
+
const [action = 'summary'] = ctx.options.positionals;
|
|
114
|
+
switch (action) {
|
|
115
|
+
case 'summary':
|
|
116
|
+
table([
|
|
117
|
+
[
|
|
118
|
+
'Settings file',
|
|
119
|
+
ctx.loaded.configPath ?? userConfigPath() + ' (does not exist yet; sandbox config init creates it)',
|
|
120
|
+
],
|
|
121
|
+
['Default agent', ctx.loaded.config.defaultHarness],
|
|
122
|
+
['Storage', ctx.storageRoot],
|
|
123
|
+
[
|
|
124
|
+
'Memory',
|
|
125
|
+
String(ctx.loaded.config.sandbox.memoryMb) + (ctx.loaded.config.sandbox.memoryMb === 'auto' ? '' : ' MB'),
|
|
126
|
+
],
|
|
127
|
+
]);
|
|
128
|
+
console.log('\nChange settings in the menu (sandbox > Settings). All of them as JSON: sandbox config show');
|
|
129
|
+
return 0;
|
|
130
|
+
case 'path':
|
|
131
|
+
console.log(ctx.loaded.configPath ?? userConfigPath() + ' (does not exist yet)');
|
|
132
|
+
return 0;
|
|
133
|
+
case 'init':
|
|
134
|
+
return initConfig();
|
|
135
|
+
case 'show':
|
|
136
|
+
console.log(JSON.stringify(ctx.loaded.config, null, 2));
|
|
137
|
+
return 0;
|
|
138
|
+
case 'schema':
|
|
139
|
+
return printSchemaSettings();
|
|
140
|
+
case 'check':
|
|
141
|
+
return checkLocalConfig(ctx);
|
|
142
|
+
default:
|
|
143
|
+
fail('Unknown config action "' + action + '".', 'Use one of: sandbox config show | path | init | schema | check');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { expandPath } from '../../../core/util/index.js';
|
|
2
|
+
import { KnownProjects, ProjectRegistry } from '../../../host/projects/index.js';
|
|
3
|
+
import { detectWsb, doctorRows, insideSandbox, isSandboxRunning } from '../../../host/sandbox/index.js';
|
|
4
|
+
import { table } from '../../output/index.js';
|
|
5
|
+
export function doctor(ctx) {
|
|
6
|
+
const rows = doctorRows(ctx.loaded.config, ctx.options.harness ?? ctx.loaded.config.defaultHarness, ctx.storageRoot, ctx.loaded.configPath);
|
|
7
|
+
// Inside a sandbox the feature and "running" rows describe the sandbox itself, and the host rows describe nothing
|
|
8
|
+
// useful.
|
|
9
|
+
if (insideSandbox()) {
|
|
10
|
+
table([
|
|
11
|
+
['Where', 'inside a Windows Sandbox started by this tool (run doctor on your PC to check the PC)'],
|
|
12
|
+
...rows.filter(([name]) => name === 'Config file'),
|
|
13
|
+
]);
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
// Several projects: the roots mapped at every start, what the running sandbox has, and whether wsb share is there.
|
|
17
|
+
const p = ctx.loaded.config.projects;
|
|
18
|
+
const registry = isSandboxRunning() ? new ProjectRegistry(ctx.storageRoot).read() : null;
|
|
19
|
+
const wsb = p.wsbShare ? detectWsb() : null;
|
|
20
|
+
table([
|
|
21
|
+
...rows,
|
|
22
|
+
[
|
|
23
|
+
'Project roots',
|
|
24
|
+
p.roots.length
|
|
25
|
+
? p.roots.map((r) => expandPath(r, ctx.loaded.base)).join(', ')
|
|
26
|
+
: 'none (sandbox projects roots add <folder>)',
|
|
27
|
+
],
|
|
28
|
+
[
|
|
29
|
+
'All projects',
|
|
30
|
+
p.all
|
|
31
|
+
? 'on: ' +
|
|
32
|
+
new KnownProjects(ctx.storageRoot).list().length +
|
|
33
|
+
' known project(s) mapped at every start (' +
|
|
34
|
+
p.exclude.length +
|
|
35
|
+
' excluded)'
|
|
36
|
+
: 'off',
|
|
37
|
+
],
|
|
38
|
+
['Projects running', registry ? registry.projects.map((x) => x.name + ' (' + x.mechanism + ')').join(', ') : '-'],
|
|
39
|
+
[
|
|
40
|
+
'wsb share',
|
|
41
|
+
!p.wsbShare
|
|
42
|
+
? 'off (projects.wsbShare)'
|
|
43
|
+
: wsb
|
|
44
|
+
? 'available: ' +
|
|
45
|
+
wsb.exe +
|
|
46
|
+
(wsb.version ? ' ' + wsb.version : '') +
|
|
47
|
+
' (untested; a failure offers a restart instead)'
|
|
48
|
+
: 'not on this Windows (needs Windows 11 24H2+ with the updated Windows Sandbox): folders outside your roots need a restart',
|
|
49
|
+
],
|
|
50
|
+
]);
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// sync, logs, clean, config, doctor, host-claude and the internal sync watcher.
|
|
2
|
+
export * from './sync.js';
|
|
3
|
+
export * from './logs.js';
|
|
4
|
+
export * from './clean.js';
|
|
5
|
+
export * from './config.js';
|
|
6
|
+
export * from './doctor.js';
|
|
7
|
+
export * from './host-claude.js';
|
|
8
|
+
export * from './watch.js';
|
|
9
|
+
export * from './audit.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
import { assertNoLinks, fail, safeText, sleep } from '../../../core/util/index.js';
|
|
5
|
+
function newestLog(dir) {
|
|
6
|
+
if (!fs.existsSync(dir))
|
|
7
|
+
return null;
|
|
8
|
+
const logs = fs
|
|
9
|
+
.readdirSync(dir)
|
|
10
|
+
.filter((f) => /^(guest|daemon|bootstrap)-.*\.log$/.test(f) && fs.lstatSync(path.join(dir, f)).isFile());
|
|
11
|
+
const newest = _.maxBy(logs, (f) => fs.statSync(path.join(dir, f)).mtimeMs);
|
|
12
|
+
return newest ? path.join(dir, newest) : null;
|
|
13
|
+
}
|
|
14
|
+
export async function logs(ctx) {
|
|
15
|
+
const dir = path.join(ctx.dataPath, 'logs');
|
|
16
|
+
// The sandbox writes this folder: never read through a link it planted there.
|
|
17
|
+
assertNoLinks(ctx.dataPath, dir);
|
|
18
|
+
const file = newestLog(dir) ??
|
|
19
|
+
fail('No sandbox logs yet in ' + dir + '.', 'Logs appear after the first start (sandbox claude).');
|
|
20
|
+
console.log('== ' + file + ' ==');
|
|
21
|
+
let printed = 0;
|
|
22
|
+
// The log is written inside the sandbox: read only its tail, and make it safe for your terminal.
|
|
23
|
+
const print = () => {
|
|
24
|
+
const size = fs.statSync(file).size;
|
|
25
|
+
const from = printed === 0 ? Math.max(0, size - 64 * 1024) : printed;
|
|
26
|
+
if (size <= from)
|
|
27
|
+
return;
|
|
28
|
+
const fd = fs.openSync(file, 'r');
|
|
29
|
+
const buffer = Buffer.alloc(Math.min(size - from, 4 * 1024 * 1024));
|
|
30
|
+
fs.readSync(fd, buffer, 0, buffer.length, from);
|
|
31
|
+
fs.closeSync(fd);
|
|
32
|
+
const text = safeText(buffer.toString('utf8'));
|
|
33
|
+
process.stdout.write(printed === 0 ? text.split('\n').slice(-120).join('\n') : text);
|
|
34
|
+
printed = from + buffer.length;
|
|
35
|
+
};
|
|
36
|
+
print();
|
|
37
|
+
if (ctx.options.follow)
|
|
38
|
+
console.error('(following; Ctrl+C to stop)');
|
|
39
|
+
while (ctx.options.follow) {
|
|
40
|
+
await sleep(1000);
|
|
41
|
+
print();
|
|
42
|
+
}
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isSandboxRunning } from '../../../host/sandbox/index.js';
|
|
2
|
+
import { syncBack } from '../../../sync/index.js';
|
|
3
|
+
export function sync(ctx) {
|
|
4
|
+
const running = isSandboxRunning();
|
|
5
|
+
const result = syncBack(ctx.dataPath, !running);
|
|
6
|
+
console.log('History: ' +
|
|
7
|
+
result.history +
|
|
8
|
+
' item(s) synced back. claude-mem: ' +
|
|
9
|
+
result.claudeMem +
|
|
10
|
+
(running ? ' (claude-mem syncs when the sandbox closes)' : ''));
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { safeText } from '../../../core/util/index.js';
|
|
3
|
+
/** "2 sessions (claude in api, codex in web)". */
|
|
4
|
+
export function describeSessions(sessions) {
|
|
5
|
+
return sessions.length === 0
|
|
6
|
+
? 'no sessions'
|
|
7
|
+
: sessions.length +
|
|
8
|
+
' session' +
|
|
9
|
+
(sessions.length === 1 ? '' : 's') +
|
|
10
|
+
' (' +
|
|
11
|
+
sessions
|
|
12
|
+
.map((s) => safeText(s.harness) + ' in ' + safeText(s.project ?? path.win32.basename(s.cwd)))
|
|
13
|
+
.join(', ') +
|
|
14
|
+
')';
|
|
15
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SandboxStatus } from '../../../core/types.js';
|
|
2
|
+
import { type Missing } from '../../../core/local-config/index.js';
|
|
3
|
+
import { type RegistryEntry } from '../../../host/projects/index.js';
|
|
4
|
+
import type { ProjectSpec } from '../../../shared/channel/index.js';
|
|
5
|
+
import { type Context } from '../context.js';
|
|
6
|
+
/** The folder the command is about: --workspace, else the current one. */
|
|
7
|
+
export declare function hereDir(ctx: Context): string;
|
|
8
|
+
export interface Located {
|
|
9
|
+
project: RegistryEntry | null;
|
|
10
|
+
guestDir: string | null;
|
|
11
|
+
}
|
|
12
|
+
/** Where this folder is in the running sandbox, if it is in it at all (nothing is registered). */
|
|
13
|
+
export declare function locateHere(ctx: Context, status: SandboxStatus | null): Located;
|
|
14
|
+
export interface Joined {
|
|
15
|
+
project: RegistryEntry | null;
|
|
16
|
+
guestDir: string;
|
|
17
|
+
spec: ProjectSpec | null;
|
|
18
|
+
harness: string | null;
|
|
19
|
+
notes: string[];
|
|
20
|
+
}
|
|
21
|
+
/** restart.ts: the sandbox was restarted for a project in this command. */
|
|
22
|
+
export declare function markRestarted(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Makes this folder a project of the running sandbox (nothing to do for the launch folder and projects already in
|
|
25
|
+
* it): its .sandbox-config.json is approved like at a launch, its protections are checked, and it is made visible.
|
|
26
|
+
* Throws NeedsRestart (host/projects) when that is impossible without a restart.
|
|
27
|
+
*/
|
|
28
|
+
export declare function joinHere(ctx: Context, status: SandboxStatus, o?: {
|
|
29
|
+
noRestart?: boolean;
|
|
30
|
+
}): Promise<Joined>;
|
|
31
|
+
/** The command that restarts the running sandbox with this folder's boot wishes (consent given by --yes). */
|
|
32
|
+
export declare function restartCommand(ctx: Context, host: string): string;
|
|
33
|
+
/** Joined without what it wants at boot: what is missing, how to restart with it, and how to always have it. */
|
|
34
|
+
export declare function missingNotes(ctx: Context, name: string, host: string, missing: Missing, shown?: boolean): string[];
|
|
35
|
+
/** Waits until the sandbox has set a project up, with its progress on a spinner (plain lines without a terminal). */
|
|
36
|
+
export declare function provisionJoined(ctx: Context, joined: Joined): Promise<void>;
|
|
37
|
+
/** joinHere, then (for another project) waits until the sandbox has set it up. */
|
|
38
|
+
export declare function readyHere(ctx: Context, status: SandboxStatus): Promise<Joined>;
|