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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Config, GitAccess } from '../../core/types.js';
|
|
2
|
+
import { type AppEntry } from './catalogue.js';
|
|
3
|
+
/** A catalogue `exe` that is a regex ("/.../") matches names with a version in them. */
|
|
4
|
+
export declare const exeMatcher: (exe: string) => ((name: string) => boolean);
|
|
5
|
+
/** The apps to install, in order: 7-Zip first when anything needs it to unpack. */
|
|
6
|
+
export declare const appsToInstall: (apps: Config["apps"], gitAccess: GitAccess) => {
|
|
7
|
+
entries: AppEntry[];
|
|
8
|
+
skipped: string[];
|
|
9
|
+
};
|
|
10
|
+
/** Does any chosen app draw with OpenGL (so the Mesa step must run first)? */
|
|
11
|
+
export declare const appsNeedMesa: (apps: Config["apps"] | undefined) => boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { appById } from './catalogue.js';
|
|
2
|
+
/** A catalogue `exe` that is a regex ("/.../") matches names with a version in them. */
|
|
3
|
+
export const exeMatcher = (exe) => {
|
|
4
|
+
const regex = /^\/(.+)\/$/.exec(exe);
|
|
5
|
+
if (regex) {
|
|
6
|
+
const r = new RegExp(regex[1], 'i');
|
|
7
|
+
return (name) => r.test(name);
|
|
8
|
+
}
|
|
9
|
+
return (name) => name.toLowerCase() === exe.toLowerCase();
|
|
10
|
+
};
|
|
11
|
+
/** Your own program as a catalogue entry (its folder is apps\custom\<id>). */
|
|
12
|
+
const customEntry = (id, app) => ({
|
|
13
|
+
id: 'custom/' + id,
|
|
14
|
+
name: app.name,
|
|
15
|
+
category: 'utilities',
|
|
16
|
+
about: 'Your own program.',
|
|
17
|
+
size: '?',
|
|
18
|
+
source: app.github && app.asset ? { github: app.github, asset: app.asset } : { url: app.url },
|
|
19
|
+
unpack: app.unpack,
|
|
20
|
+
exe: app.exe,
|
|
21
|
+
cli: app.cli,
|
|
22
|
+
});
|
|
23
|
+
/** The apps to install, in order: 7-Zip first when anything needs it to unpack. */
|
|
24
|
+
export const appsToInstall = (apps, gitAccess) => {
|
|
25
|
+
const chosen = apps.install.flatMap((id) => {
|
|
26
|
+
const e = appById(id);
|
|
27
|
+
return e && !e.setting ? [e] : [];
|
|
28
|
+
});
|
|
29
|
+
const skipped = chosen
|
|
30
|
+
.filter((e) => e.fullGitOnly && gitAccess !== 'full')
|
|
31
|
+
.map((e) => e.name + ' (needs provisioning.git.access "full")');
|
|
32
|
+
const allowed = [
|
|
33
|
+
...chosen.filter((e) => !(e.fullGitOnly && gitAccess !== 'full')),
|
|
34
|
+
...Object.entries(apps.custom).map(([id, app]) => customEntry(id, app)),
|
|
35
|
+
];
|
|
36
|
+
const needs7zip = allowed.some((e) => e.needs?.includes('7zip') || e.unpack === 'nsis') && !allowed.some((e) => e.id === '7zip');
|
|
37
|
+
return { entries: [...(needs7zip ? [appById('7zip')] : []), ...allowed], skipped };
|
|
38
|
+
};
|
|
39
|
+
/** Does any chosen app draw with OpenGL (so the Mesa step must run first)? */
|
|
40
|
+
export const appsNeedMesa = (apps) => Boolean(apps?.install.some((id) => appById(id)?.needs?.includes('mesa')));
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GuestRequest, GuestResponse, ProjectStatus, SandboxStatus, SessionStatus } from './schema.js';
|
|
2
|
+
/** Ids become file names, so only a strict alphabet is allowed (no separators, no dots). */
|
|
3
|
+
export declare function safeId(id: string): string;
|
|
4
|
+
export declare function now(): string;
|
|
5
|
+
/** The run folder of one data folder: where each message lives, and reading them validated. */
|
|
6
|
+
export declare class RunDir {
|
|
7
|
+
readonly root: string;
|
|
8
|
+
readonly sandboxFile: string;
|
|
9
|
+
readonly requestsDir: string;
|
|
10
|
+
readonly responsesDir: string;
|
|
11
|
+
readonly sessionsDir: string;
|
|
12
|
+
readonly projectsDir: string;
|
|
13
|
+
/** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
|
|
14
|
+
readonly auditDir: string;
|
|
15
|
+
constructor(dataDir: string);
|
|
16
|
+
requestFile(id: string): string;
|
|
17
|
+
responseFile(id: string): string;
|
|
18
|
+
sessionFile(id: string): string;
|
|
19
|
+
projectFile(name: string): string;
|
|
20
|
+
readSandboxStatus(): SandboxStatus | null;
|
|
21
|
+
readSession(id: string): SessionStatus | null;
|
|
22
|
+
readResponse(id: string): GuestResponse | null;
|
|
23
|
+
listSessions(): SessionStatus[];
|
|
24
|
+
readProjectStatus(name: string): ProjectStatus | null;
|
|
25
|
+
listProjectStatus(): ProjectStatus[];
|
|
26
|
+
scanRequests(): {
|
|
27
|
+
valid: GuestRequest[];
|
|
28
|
+
invalid: string[];
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// The run folder (<data>\run on the host, C:\AgentData\run in the sandbox) is the host <-> sandbox channel. No
|
|
2
|
+
// network needed: boot status, requests (host -> guest) and responses/status (guest -> host) are small JSON files,
|
|
3
|
+
// written atomically and parsed with the channel schemas on read. Anything that does not parse is ignored.
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { GuestRequestSchema, GuestResponseSchema, IdSchema, ProjectStatusSchema, SandboxStatusSchema, SessionStatusSchema, } from './schema.js';
|
|
7
|
+
import { readValid } from '../io/index.js';
|
|
8
|
+
/** Ids become file names, so only a strict alphabet is allowed (no separators, no dots). */
|
|
9
|
+
export function safeId(id) {
|
|
10
|
+
return IdSchema.parse(id);
|
|
11
|
+
}
|
|
12
|
+
export function now() {
|
|
13
|
+
return new Date().toISOString();
|
|
14
|
+
}
|
|
15
|
+
/** Message files in a folder (strict names only), validated; invalid ones are reported separately for deletion. */
|
|
16
|
+
const scan = (schema, dir) => {
|
|
17
|
+
if (!fs.existsSync(dir))
|
|
18
|
+
return { valid: [], invalid: [] };
|
|
19
|
+
const valid = [];
|
|
20
|
+
const invalid = [];
|
|
21
|
+
for (const name of fs.readdirSync(dir)) {
|
|
22
|
+
if (name.endsWith('.tmp'))
|
|
23
|
+
continue;
|
|
24
|
+
const message = /^[A-Za-z0-9_-]{1,64}\.json$/.test(name) ? readValid(schema, path.join(dir, name)) : null;
|
|
25
|
+
if (message)
|
|
26
|
+
valid.push(message);
|
|
27
|
+
else
|
|
28
|
+
invalid.push(path.join(dir, name));
|
|
29
|
+
}
|
|
30
|
+
return { valid, invalid };
|
|
31
|
+
};
|
|
32
|
+
/** The run folder of one data folder: where each message lives, and reading them validated. */
|
|
33
|
+
export class RunDir {
|
|
34
|
+
root;
|
|
35
|
+
sandboxFile;
|
|
36
|
+
requestsDir;
|
|
37
|
+
responsesDir;
|
|
38
|
+
sessionsDir;
|
|
39
|
+
projectsDir;
|
|
40
|
+
/** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
|
|
41
|
+
auditDir;
|
|
42
|
+
constructor(dataDir) {
|
|
43
|
+
this.root = path.join(dataDir, 'run');
|
|
44
|
+
this.sandboxFile = path.join(this.root, 'sandbox.json');
|
|
45
|
+
this.requestsDir = path.join(this.root, 'requests');
|
|
46
|
+
this.responsesDir = path.join(this.root, 'responses');
|
|
47
|
+
this.sessionsDir = path.join(this.root, 'sessions');
|
|
48
|
+
this.projectsDir = path.join(this.root, 'projects');
|
|
49
|
+
this.auditDir = path.join(this.root, 'audit');
|
|
50
|
+
}
|
|
51
|
+
requestFile(id) {
|
|
52
|
+
return path.join(this.requestsDir, safeId(id) + '.json');
|
|
53
|
+
}
|
|
54
|
+
responseFile(id) {
|
|
55
|
+
return path.join(this.responsesDir, safeId(id) + '.json');
|
|
56
|
+
}
|
|
57
|
+
sessionFile(id) {
|
|
58
|
+
return path.join(this.sessionsDir, safeId(id) + '.json');
|
|
59
|
+
}
|
|
60
|
+
projectFile(name) {
|
|
61
|
+
return path.join(this.projectsDir, safeId(name) + '.json');
|
|
62
|
+
}
|
|
63
|
+
readSandboxStatus() {
|
|
64
|
+
return readValid(SandboxStatusSchema, this.sandboxFile);
|
|
65
|
+
}
|
|
66
|
+
readSession(id) {
|
|
67
|
+
return readValid(SessionStatusSchema, this.sessionFile(id));
|
|
68
|
+
}
|
|
69
|
+
readResponse(id) {
|
|
70
|
+
return readValid(GuestResponseSchema, this.responseFile(id));
|
|
71
|
+
}
|
|
72
|
+
listSessions() {
|
|
73
|
+
return scan(SessionStatusSchema, this.sessionsDir).valid.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
|
|
74
|
+
}
|
|
75
|
+
readProjectStatus(name) {
|
|
76
|
+
return readValid(ProjectStatusSchema, this.projectFile(name));
|
|
77
|
+
}
|
|
78
|
+
listProjectStatus() {
|
|
79
|
+
return scan(ProjectStatusSchema, this.projectsDir).valid.slice(0, 64);
|
|
80
|
+
}
|
|
81
|
+
scanRequests() {
|
|
82
|
+
return scan(GuestRequestSchema, this.requestsDir);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
2
|
+
export declare const IdSchema: z.ZodString;
|
|
3
|
+
export declare const AttachEndpointSchema: z.ZodObject<{
|
|
4
4
|
addresses: z.ZodArray<z.ZodString>;
|
|
5
5
|
port: z.ZodNumber;
|
|
6
6
|
token: z.ZodString;
|
|
7
7
|
}, z.core.$strict>;
|
|
8
|
+
/** The boot's progress in a shape the host can show: step n of m, what is being set up now, how many are done. */
|
|
9
|
+
export declare const BootProgressSchema: z.ZodObject<{
|
|
10
|
+
step: z.ZodNumber;
|
|
11
|
+
steps: z.ZodNumber;
|
|
12
|
+
title: z.ZodString;
|
|
13
|
+
active: z.ZodArray<z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
percent: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
}, z.core.$strict>>;
|
|
17
|
+
done: z.ZodNumber;
|
|
18
|
+
total: z.ZodNumber;
|
|
19
|
+
}, z.core.$strict>;
|
|
8
20
|
/** C:\AgentData\run\sandbox.json: boot progress of the sandbox as a whole. */
|
|
9
|
-
export declare const
|
|
21
|
+
export declare const SandboxStatusSchema: z.ZodObject<{
|
|
10
22
|
launchId: z.ZodString;
|
|
11
23
|
phase: z.ZodEnum<{
|
|
12
24
|
provisioning: "provisioning";
|
|
@@ -20,13 +32,24 @@ export declare const SandboxStatus: z.ZodObject<{
|
|
|
20
32
|
guestWorkspace: z.ZodString;
|
|
21
33
|
headless: z.ZodBoolean;
|
|
22
34
|
addresses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
progress: z.ZodCatch<z.ZodOptional<z.ZodObject<{
|
|
36
|
+
step: z.ZodNumber;
|
|
37
|
+
steps: z.ZodNumber;
|
|
38
|
+
title: z.ZodString;
|
|
39
|
+
active: z.ZodArray<z.ZodObject<{
|
|
40
|
+
name: z.ZodString;
|
|
41
|
+
percent: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
}, z.core.$strict>>;
|
|
43
|
+
done: z.ZodNumber;
|
|
44
|
+
total: z.ZodNumber;
|
|
45
|
+
}, z.core.$strict>>>;
|
|
23
46
|
}, z.core.$strip>;
|
|
24
47
|
/**
|
|
25
48
|
* A project the host registered after boot (sandbox claude from another folder): everything the guest needs to
|
|
26
49
|
* provision it and run its sessions with its own environment, resolved on the host exactly like a fresh launch (its
|
|
27
50
|
* approved .sandbox-config.json, version files, toolchain detection, database plan). Host -> guest only.
|
|
28
51
|
*/
|
|
29
|
-
export declare const
|
|
52
|
+
export declare const ProjectSpecSchema: z.ZodObject<{
|
|
30
53
|
name: z.ZodString;
|
|
31
54
|
workspace: z.ZodString;
|
|
32
55
|
workspaceHost: z.ZodString;
|
|
@@ -53,6 +76,11 @@ export declare const ProjectSpec: z.ZodObject<{
|
|
|
53
76
|
targets: z.ZodArray<z.ZodString>;
|
|
54
77
|
crates: z.ZodArray<z.ZodString>;
|
|
55
78
|
targetDir: z.ZodString;
|
|
79
|
+
linker: z.ZodEnum<{
|
|
80
|
+
lld: "lld";
|
|
81
|
+
gnu: "gnu";
|
|
82
|
+
}>;
|
|
83
|
+
linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
|
|
56
84
|
}, z.core.$strict>;
|
|
57
85
|
msvc: z.ZodObject<{
|
|
58
86
|
enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
|
|
@@ -140,10 +168,10 @@ export declare const ProjectSpec: z.ZodObject<{
|
|
|
140
168
|
database: z.ZodEnum<{
|
|
141
169
|
postgres: "postgres";
|
|
142
170
|
mysql: "mysql";
|
|
171
|
+
sqlserver: "sqlserver";
|
|
143
172
|
mongodb: "mongodb";
|
|
144
173
|
redis: "redis";
|
|
145
174
|
dynamodb: "dynamodb";
|
|
146
|
-
sqlserver: "sqlserver";
|
|
147
175
|
}>;
|
|
148
176
|
reasons: z.ZodArray<z.ZodString>;
|
|
149
177
|
version: z.ZodString;
|
|
@@ -164,7 +192,7 @@ export declare const ProjectSpec: z.ZodObject<{
|
|
|
164
192
|
hooks: z.ZodBoolean;
|
|
165
193
|
}, z.core.$strict>;
|
|
166
194
|
/** C:\AgentData\run\requests\<id>.json: the ONLY things the host can ask the sandbox to do. */
|
|
167
|
-
export declare const
|
|
195
|
+
export declare const GuestRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
168
196
|
kind: z.ZodLiteral<"session">;
|
|
169
197
|
id: z.ZodString;
|
|
170
198
|
harness: z.ZodString;
|
|
@@ -197,6 +225,11 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
197
225
|
targets: z.ZodArray<z.ZodString>;
|
|
198
226
|
crates: z.ZodArray<z.ZodString>;
|
|
199
227
|
targetDir: z.ZodString;
|
|
228
|
+
linker: z.ZodEnum<{
|
|
229
|
+
lld: "lld";
|
|
230
|
+
gnu: "gnu";
|
|
231
|
+
}>;
|
|
232
|
+
linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
|
|
200
233
|
}, z.core.$strict>;
|
|
201
234
|
msvc: z.ZodObject<{
|
|
202
235
|
enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
|
|
@@ -284,10 +317,10 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
284
317
|
database: z.ZodEnum<{
|
|
285
318
|
postgres: "postgres";
|
|
286
319
|
mysql: "mysql";
|
|
320
|
+
sqlserver: "sqlserver";
|
|
287
321
|
mongodb: "mongodb";
|
|
288
322
|
redis: "redis";
|
|
289
323
|
dynamodb: "dynamodb";
|
|
290
|
-
sqlserver: "sqlserver";
|
|
291
324
|
}>;
|
|
292
325
|
reasons: z.ZodArray<z.ZodString>;
|
|
293
326
|
version: z.ZodString;
|
|
@@ -349,6 +382,11 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
349
382
|
targets: z.ZodArray<z.ZodString>;
|
|
350
383
|
crates: z.ZodArray<z.ZodString>;
|
|
351
384
|
targetDir: z.ZodString;
|
|
385
|
+
linker: z.ZodEnum<{
|
|
386
|
+
lld: "lld";
|
|
387
|
+
gnu: "gnu";
|
|
388
|
+
}>;
|
|
389
|
+
linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
|
|
352
390
|
}, z.core.$strict>;
|
|
353
391
|
msvc: z.ZodObject<{
|
|
354
392
|
enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
|
|
@@ -436,10 +474,10 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
436
474
|
database: z.ZodEnum<{
|
|
437
475
|
postgres: "postgres";
|
|
438
476
|
mysql: "mysql";
|
|
477
|
+
sqlserver: "sqlserver";
|
|
439
478
|
mongodb: "mongodb";
|
|
440
479
|
redis: "redis";
|
|
441
480
|
dynamodb: "dynamodb";
|
|
442
|
-
sqlserver: "sqlserver";
|
|
443
481
|
}>;
|
|
444
482
|
reasons: z.ZodArray<z.ZodString>;
|
|
445
483
|
version: z.ZodString;
|
|
@@ -479,7 +517,7 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
479
517
|
createdAt: z.ZodString;
|
|
480
518
|
}, z.core.$strict>], "kind">;
|
|
481
519
|
/** C:\AgentData\run\responses\<id>.json: the guest's reply. */
|
|
482
|
-
export declare const
|
|
520
|
+
export declare const GuestResponseSchema: z.ZodObject<{
|
|
483
521
|
id: z.ZodString;
|
|
484
522
|
ok: z.ZodBoolean;
|
|
485
523
|
message: z.ZodString;
|
|
@@ -489,7 +527,7 @@ export declare const GuestResponse: z.ZodObject<{
|
|
|
489
527
|
finishedAt: z.ZodString;
|
|
490
528
|
}, z.core.$strip>;
|
|
491
529
|
/** C:\AgentData\run\sessions\<id>.json: one agent session (its own pseudo console and terminal tab). */
|
|
492
|
-
export declare const
|
|
530
|
+
export declare const SessionStatusSchema: z.ZodObject<{
|
|
493
531
|
id: z.ZodString;
|
|
494
532
|
launchId: z.ZodString;
|
|
495
533
|
harness: z.ZodString;
|
|
@@ -511,8 +549,10 @@ export declare const SessionStatus: z.ZodObject<{
|
|
|
511
549
|
token: z.ZodString;
|
|
512
550
|
}, z.core.$strict>>;
|
|
513
551
|
}, z.core.$strip>;
|
|
514
|
-
/**
|
|
515
|
-
|
|
552
|
+
/**
|
|
553
|
+
* C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped).
|
|
554
|
+
*/
|
|
555
|
+
export declare const ProjectStatusSchema: z.ZodObject<{
|
|
516
556
|
name: z.ZodString;
|
|
517
557
|
workspace: z.ZodString;
|
|
518
558
|
phase: z.ZodEnum<{
|
|
@@ -528,10 +568,11 @@ export declare const ProjectStatus: z.ZodObject<{
|
|
|
528
568
|
}, z.core.$strip>>;
|
|
529
569
|
summary: z.ZodArray<z.ZodString>;
|
|
530
570
|
}, z.core.$strip>;
|
|
531
|
-
export type
|
|
532
|
-
export type
|
|
533
|
-
export type
|
|
534
|
-
export type
|
|
535
|
-
export type
|
|
536
|
-
export type
|
|
537
|
-
export type
|
|
571
|
+
export type ProjectSpec = z.output<typeof ProjectSpecSchema>;
|
|
572
|
+
export type ProjectStatus = z.output<typeof ProjectStatusSchema>;
|
|
573
|
+
export type AttachEndpoint = z.output<typeof AttachEndpointSchema>;
|
|
574
|
+
export type SandboxStatus = z.output<typeof SandboxStatusSchema>;
|
|
575
|
+
export type BootProgress = z.output<typeof BootProgressSchema>;
|
|
576
|
+
export type GuestRequest = z.output<typeof GuestRequestSchema>;
|
|
577
|
+
export type GuestResponse = z.output<typeof GuestResponseSchema>;
|
|
578
|
+
export type SessionStatus = z.output<typeof SessionStatusSchema>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// The host <-> sandbox channel messages, defined once with zod. Both sides parse what they read: the guest only acts on
|
|
2
|
+
// these request kinds, and the host treats everything the guest writes as untrusted (shapes checked, sizes capped).
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { HarnessSchema, ToolchainsSchema } from '../../core/schema/index.js';
|
|
5
|
+
export const IdSchema = z.string().regex(/^[A-Za-z0-9_-]{1,64}$/, 'invalid id');
|
|
6
|
+
const Text = (max = 4096) => z.string().max(max);
|
|
7
|
+
const TimeSchema = Text(64);
|
|
8
|
+
export const AttachEndpointSchema = z.strictObject({
|
|
9
|
+
addresses: z.array(Text(64)).max(16),
|
|
10
|
+
port: z.number().int().min(1024).max(65535),
|
|
11
|
+
token: Text(256),
|
|
12
|
+
});
|
|
13
|
+
/** The boot's progress in a shape the host can show: step n of m, what is being set up now, how many are done. */
|
|
14
|
+
export const BootProgressSchema = z.strictObject({
|
|
15
|
+
step: z.number().int().min(1).max(32),
|
|
16
|
+
steps: z.number().int().min(1).max(32),
|
|
17
|
+
title: Text(120),
|
|
18
|
+
/** Being set up now; percent while it downloads (when the size is known). */
|
|
19
|
+
active: z.array(z.strictObject({ name: Text(64), percent: z.number().int().min(0).max(100).optional() })).max(8),
|
|
20
|
+
done: z.number().int().min(0).max(1000),
|
|
21
|
+
total: z.number().int().min(0).max(1000),
|
|
22
|
+
});
|
|
23
|
+
/** C:\AgentData\run\sandbox.json: boot progress of the sandbox as a whole. */
|
|
24
|
+
export const SandboxStatusSchema = z.object({
|
|
25
|
+
launchId: Text(64),
|
|
26
|
+
phase: z.enum(['booting', 'provisioning', 'ready', 'failed']),
|
|
27
|
+
message: Text(),
|
|
28
|
+
updatedAt: TimeSchema,
|
|
29
|
+
workspaceHost: Text(),
|
|
30
|
+
guestWorkspace: Text(),
|
|
31
|
+
headless: z.boolean(),
|
|
32
|
+
/** The sandbox's IPv4 addresses (for network.forwardPorts; the host only uses ones on its Hyper-V network). */
|
|
33
|
+
addresses: z.array(z.string().max(45)).max(8).optional(),
|
|
34
|
+
/** A malformed progress is dropped, never the status (the phase still counts). */
|
|
35
|
+
progress: BootProgressSchema.optional().catch(undefined),
|
|
36
|
+
});
|
|
37
|
+
const VersionSchema = z.strictObject({ spec: Text(128), source: Text(256) });
|
|
38
|
+
const DatabasePlanSchema = z.strictObject({
|
|
39
|
+
database: z.enum(['postgres', 'mysql', 'sqlserver', 'mongodb', 'redis', 'dynamodb']),
|
|
40
|
+
reasons: z.array(Text(1024)).max(32),
|
|
41
|
+
version: Text(64),
|
|
42
|
+
port: z.number().int().min(1024).max(65535),
|
|
43
|
+
adminPort: z.number().int().min(1024).max(65535).optional(),
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* A project the host registered after boot (sandbox claude from another folder): everything the guest needs to
|
|
47
|
+
* provision it and run its sessions with its own environment, resolved on the host exactly like a fresh launch (its
|
|
48
|
+
* approved .sandbox-config.json, version files, toolchain detection, database plan). Host -> guest only.
|
|
49
|
+
*/
|
|
50
|
+
export const ProjectSpecSchema = z.strictObject({
|
|
51
|
+
name: IdSchema,
|
|
52
|
+
/** Inside the sandbox: C:\Projects\<name>. */
|
|
53
|
+
workspace: Text(1024),
|
|
54
|
+
workspaceHost: Text(1024),
|
|
55
|
+
toolchains: ToolchainsSchema,
|
|
56
|
+
versions: z.strictObject({ node: VersionSchema, nodeExtra: z.array(Text(128)).max(16), python: VersionSchema }),
|
|
57
|
+
databases: z.array(DatabasePlanSchema).max(8),
|
|
58
|
+
/** Agents this project may start that the sandbox did not boot with (its .sandbox-config.json "harness"). */
|
|
59
|
+
harnesses: z.record(Text(64), HarnessSchema).refine((h) => Object.keys(h).length <= 8, 'at most 8 agents'),
|
|
60
|
+
/** Its hooks were staged in C:\AgentLaunch\projects\<name>\hooks. */
|
|
61
|
+
hooks: z.boolean(),
|
|
62
|
+
});
|
|
63
|
+
/** C:\AgentData\run\requests\<id>.json: the ONLY things the host can ask the sandbox to do. */
|
|
64
|
+
export const GuestRequestSchema = z.discriminatedUnion('kind', [
|
|
65
|
+
z.strictObject({
|
|
66
|
+
kind: z.literal('session'),
|
|
67
|
+
id: IdSchema,
|
|
68
|
+
harness: Text(64),
|
|
69
|
+
args: z.array(Text()).max(256),
|
|
70
|
+
cwd: Text(),
|
|
71
|
+
project: ProjectSpecSchema.optional(),
|
|
72
|
+
harnessSpec: HarnessSchema.optional(),
|
|
73
|
+
createdAt: TimeSchema,
|
|
74
|
+
}),
|
|
75
|
+
/** Provision a registered project without starting an agent (sandbox start / exec / db from its folder). */
|
|
76
|
+
z.strictObject({ kind: z.literal('project'), id: IdSchema, project: ProjectSpecSchema, createdAt: TimeSchema }),
|
|
77
|
+
z.strictObject({
|
|
78
|
+
kind: z.literal('exec'),
|
|
79
|
+
id: IdSchema,
|
|
80
|
+
command: z.array(Text()).min(1).max(256),
|
|
81
|
+
cwd: Text(),
|
|
82
|
+
timeoutSeconds: z.number().positive().max(86400),
|
|
83
|
+
createdAt: TimeSchema,
|
|
84
|
+
}),
|
|
85
|
+
/** cwd: only the sessions in this folder or below (one project's); omitted = every session. */
|
|
86
|
+
z.strictObject({
|
|
87
|
+
kind: z.literal('restart'),
|
|
88
|
+
id: IdSchema,
|
|
89
|
+
harness: Text(64).nullable(),
|
|
90
|
+
cwd: Text().optional(),
|
|
91
|
+
createdAt: TimeSchema,
|
|
92
|
+
}),
|
|
93
|
+
z.strictObject({ kind: z.literal('ping'), id: IdSchema, createdAt: TimeSchema }),
|
|
94
|
+
]);
|
|
95
|
+
/** C:\AgentData\run\responses\<id>.json: the guest's reply. */
|
|
96
|
+
export const GuestResponseSchema = z.object({
|
|
97
|
+
id: IdSchema,
|
|
98
|
+
ok: z.boolean(),
|
|
99
|
+
message: Text(65536),
|
|
100
|
+
exitCode: z.number().int().optional(),
|
|
101
|
+
stdout: Text(4 * 1024 * 1024).optional(),
|
|
102
|
+
stderr: Text(4 * 1024 * 1024).optional(),
|
|
103
|
+
finishedAt: TimeSchema,
|
|
104
|
+
});
|
|
105
|
+
/** C:\AgentData\run\sessions\<id>.json: one agent session (its own pseudo console and terminal tab). */
|
|
106
|
+
export const SessionStatusSchema = z.object({
|
|
107
|
+
id: IdSchema,
|
|
108
|
+
launchId: Text(64),
|
|
109
|
+
harness: Text(64),
|
|
110
|
+
cwd: Text(),
|
|
111
|
+
/** The project it runs in: its hub name, or the launch folder's for the first project. */
|
|
112
|
+
project: Text(64).optional(),
|
|
113
|
+
phase: z.enum(['starting', 'running', 'exited', 'failed']),
|
|
114
|
+
message: Text(),
|
|
115
|
+
updatedAt: TimeSchema,
|
|
116
|
+
startedAt: TimeSchema,
|
|
117
|
+
exitCode: z.number().int().optional(),
|
|
118
|
+
attach: AttachEndpointSchema.optional(),
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped).
|
|
122
|
+
*/
|
|
123
|
+
export const ProjectStatusSchema = z.object({
|
|
124
|
+
name: IdSchema,
|
|
125
|
+
workspace: Text(1024),
|
|
126
|
+
phase: z.enum(['provisioning', 'ready', 'failed']),
|
|
127
|
+
message: Text(),
|
|
128
|
+
updatedAt: TimeSchema,
|
|
129
|
+
databases: z.array(z.object({ database: Text(32), port: z.number().int() })).max(16),
|
|
130
|
+
summary: z.array(Text(512)).max(64),
|
|
131
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fresh `<destination>.staging-<hex>` folder next to `destination`: fill it, then moveIntoPlace. An interrupted copy
|
|
3
|
+
* or extraction leaves only the staging folder (cleanup/repair remove those), never a half-filled destination.
|
|
4
|
+
*/
|
|
5
|
+
export declare const stagingFolder: (destination: string) => string;
|
|
6
|
+
/** Replaces `destination` with the finished `work` folder (a folder rename: the destination is never half there). */
|
|
7
|
+
export declare const moveIntoPlace: (work: string, destination: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Extracts .zip / .nupkg / .7z / .tar.gz with the tar.exe that ships with Windows, falling back to Expand-Archive.
|
|
10
|
+
* `members` limits it to those paths inside the archive (e.g. skip pgAdmin in the PostgreSQL zip).
|
|
11
|
+
*/
|
|
12
|
+
export declare const extractArchive: (archive: string, destination: string, members?: string[]) => Promise<void>;
|
|
13
|
+
export declare const findFile: (root: string, name: string, maxDepth?: number) => string | null;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
import { safeRemove } from '../io/index.js';
|
|
5
|
+
import { SYSTEM } from '../system.js';
|
|
6
|
+
import { spawnAsync } from './spawn.js';
|
|
7
|
+
/**
|
|
8
|
+
* A fresh `<destination>.staging-<hex>` folder next to `destination`: fill it, then moveIntoPlace. An interrupted copy
|
|
9
|
+
* or extraction leaves only the staging folder (cleanup/repair remove those), never a half-filled destination.
|
|
10
|
+
*/
|
|
11
|
+
export const stagingFolder = (destination) => destination + '.staging-' + crypto.randomBytes(3).toString('hex');
|
|
12
|
+
/** Replaces `destination` with the finished `work` folder (a folder rename: the destination is never half there). */
|
|
13
|
+
export const moveIntoPlace = (work, destination) => {
|
|
14
|
+
safeRemove(destination, path.dirname(destination));
|
|
15
|
+
fs.mkdirSync(path.dirname(destination), { recursive: true });
|
|
16
|
+
fs.renameSync(work, destination);
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Extracts .zip / .nupkg / .7z / .tar.gz with the tar.exe that ships with Windows, falling back to Expand-Archive.
|
|
20
|
+
* `members` limits it to those paths inside the archive (e.g. skip pgAdmin in the PostgreSQL zip).
|
|
21
|
+
*/
|
|
22
|
+
export const extractArchive = async (archive, destination, members = []) => {
|
|
23
|
+
fs.mkdirSync(destination, { recursive: true });
|
|
24
|
+
let status = await spawnAsync(SYSTEM.tar(), ['-xf', archive, '-C', destination, ...members]);
|
|
25
|
+
if (status !== 0 && /\.(zip|nupkg)$/i.test(archive)) {
|
|
26
|
+
const zip = archive.endsWith('.zip') ? archive : archive + '.zip';
|
|
27
|
+
if (zip !== archive)
|
|
28
|
+
fs.copyFileSync(archive, zip);
|
|
29
|
+
status = await spawnAsync(SYSTEM.powershell(), [
|
|
30
|
+
'-NoLogo',
|
|
31
|
+
'-NoProfile',
|
|
32
|
+
'-Command',
|
|
33
|
+
"Expand-Archive -LiteralPath '" +
|
|
34
|
+
zip.replace(/'/g, "''") +
|
|
35
|
+
"' -DestinationPath '" +
|
|
36
|
+
destination.replace(/'/g, "''") +
|
|
37
|
+
"' -Force",
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
if (status !== 0)
|
|
41
|
+
throw new Error('Could not extract ' + archive);
|
|
42
|
+
};
|
|
43
|
+
export const findFile = (root, name, maxDepth = 4) => {
|
|
44
|
+
if (maxDepth < 0 || !fs.existsSync(root))
|
|
45
|
+
return null;
|
|
46
|
+
const entries = fs.readdirSync(root, { withFileTypes: true });
|
|
47
|
+
for (const entry of entries)
|
|
48
|
+
if (entry.isFile() && entry.name.toLowerCase() === name.toLowerCase())
|
|
49
|
+
return path.join(root, entry.name);
|
|
50
|
+
for (const entry of entries)
|
|
51
|
+
if (entry.isDirectory()) {
|
|
52
|
+
const found = findFile(path.join(root, entry.name), name, maxDepth - 1);
|
|
53
|
+
if (found)
|
|
54
|
+
return found;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Expected checksums of a download; any that are given must match. */
|
|
2
|
+
export interface Checksums {
|
|
3
|
+
sha256?: string | null;
|
|
4
|
+
sha512?: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface ArchiveOptions extends Checksums {
|
|
7
|
+
/** Keep only the folder holding this file. */
|
|
8
|
+
locate?: string;
|
|
9
|
+
/** Folders above `locate`'s to keep. */
|
|
10
|
+
up?: number;
|
|
11
|
+
fileName?: string;
|
|
12
|
+
members?: string[];
|
|
13
|
+
}
|
|
14
|
+
/** Who wants coarse download progress: called as a download starts (in the caller's async context), returns its reporter. */
|
|
15
|
+
export type DownloadWatcher = () => ((fraction: number) => void) | null;
|
|
16
|
+
export declare class Downloader {
|
|
17
|
+
/** downloads.requireChecksum: refuse anything without an expected hash. The guest sets it from session.json. */
|
|
18
|
+
requireChecksum: boolean;
|
|
19
|
+
private watcher;
|
|
20
|
+
/** Reports coarse progress of the downloads that start from now on to `watcher` (null: stop). */
|
|
21
|
+
watch(watcher: DownloadWatcher | null): void;
|
|
22
|
+
/**
|
|
23
|
+
* Streams a download to disk, hashing as it goes: big archives (PostgreSQL is ~330 MB) never sit in memory, and the
|
|
24
|
+
* event loop stays free so other toolchains keep downloading meanwhile. A mismatch (or any failure) leaves no file
|
|
25
|
+
* behind.
|
|
26
|
+
*/
|
|
27
|
+
file(url: string, destination: string, expected?: string | null | Checksums): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Downloads + extracts into `destination` atomically (staging folder, then rename). With `locate`, only the folder
|
|
30
|
+
* holding that file is kept (`up` folders above it, e.g. locate ruby.exe with up 1 keeps the folder around bin).
|
|
31
|
+
*/
|
|
32
|
+
archive(url: string, destination: string, options?: ArchiveOptions): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** The one downloader of this process. */
|
|
35
|
+
export declare const downloader: Downloader;
|