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
package/dist/host/channel.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
// Host side of the sandbox channel: follow the boot and send requests (sessions, exec, restart, ping). Attaching a
|
|
2
|
-
// terminal to a session is in attach.ts. Everything read from the run folder is guest-written and treated as untrusted.
|
|
3
|
-
import crypto from 'node:crypto';
|
|
4
|
-
import fs from 'node:fs';
|
|
5
|
-
import { assertNoLinks, fail, isLink, removeLink, safeText, sleep } from '../core/util.js';
|
|
6
|
-
import { isWithin } from '../shared/projects.js';
|
|
7
|
-
import { listSessions, now, readProjectStatus, readResponse, readSandboxStatus, readSession, runPaths, writeJsonAtomic } from '../shared/rundir.js';
|
|
8
|
-
import { safeRemove } from '../shared/safe-remove.js';
|
|
9
|
-
import { assertTestWritable, refuseInSelfTest } from './test-guard.js';
|
|
10
|
-
const BOOT_TIMEOUT_MS = 30 * 60 * 1000;
|
|
11
|
-
const id = () => Date.now().toString(36) + crypto.randomBytes(3).toString('hex');
|
|
12
|
-
const until = async (timeoutMs, isAlive, poll, timeoutMessage) => {
|
|
13
|
-
const deadline = Date.now() + timeoutMs;
|
|
14
|
-
for (let round = 0; Date.now() < deadline; round++) {
|
|
15
|
-
const value = poll();
|
|
16
|
-
if (value !== null && value !== undefined)
|
|
17
|
-
return value;
|
|
18
|
-
if (round % 10 === 0 && !isAlive())
|
|
19
|
-
fail('Windows Sandbox closed (or is not running).', 'Start it again with sandbox claude; sandbox logs shows what happened.');
|
|
20
|
-
await sleep(500);
|
|
21
|
-
}
|
|
22
|
-
fail(timeoutMessage, 'Check what the sandbox is doing with sandbox logs -f (or sbx-show to see its window).');
|
|
23
|
-
};
|
|
24
|
-
const printLine = (line) => console.log(line);
|
|
25
|
-
/** Waits until the sandbox finished provisioning, reporting each boot step. */
|
|
26
|
-
export const waitForReady = (dataPath, launchId, isAlive, progress = (m) => printLine(' [sandbox] ' + m)) => {
|
|
27
|
-
let last = '';
|
|
28
|
-
return until(BOOT_TIMEOUT_MS, isAlive, () => {
|
|
29
|
-
const status = readSandboxStatus(dataPath);
|
|
30
|
-
if (!status || (launchId !== null && status.launchId !== launchId))
|
|
31
|
-
return null;
|
|
32
|
-
if (status.message !== last) {
|
|
33
|
-
progress(safeText(status.message).slice(0, 300));
|
|
34
|
-
last = status.message;
|
|
35
|
-
}
|
|
36
|
-
if (status.phase === 'failed')
|
|
37
|
-
fail('The sandbox failed to start: ' + status.message, 'See sandbox logs for details; the sandbox window shows the error too (sbx-show if headless).');
|
|
38
|
-
return status.phase === 'ready' ? status : null;
|
|
39
|
-
}, 'Timed out waiting for the sandbox to finish provisioning.');
|
|
40
|
-
};
|
|
41
|
-
export const sendRequest = (dataPath, request) => {
|
|
42
|
-
assertTestWritable(dataPath);
|
|
43
|
-
// Asking the sandbox to power off is the one request with an effect outside it, so the self-test never sends it.
|
|
44
|
-
if (request.kind === 'exec' && /shutdown/i.test(request.command[0] ?? ''))
|
|
45
|
-
refuseInSelfTest('shut down Windows Sandbox');
|
|
46
|
-
assertNoLinks(dataPath, runPaths(dataPath).requests);
|
|
47
|
-
writeJsonAtomic(runPaths(dataPath).request(request.id), request);
|
|
48
|
-
};
|
|
49
|
-
export const waitForResponse = (dataPath, requestId, isAlive, timeoutMs) => until(timeoutMs, isAlive, () => {
|
|
50
|
-
const response = readResponse(dataPath, requestId);
|
|
51
|
-
if (response)
|
|
52
|
-
try {
|
|
53
|
-
assertNoLinks(dataPath, runPaths(dataPath).responses);
|
|
54
|
-
fs.rmSync(runPaths(dataPath).response(requestId), { force: true });
|
|
55
|
-
}
|
|
56
|
-
catch { /* a planted link: the answer is read, nothing is deleted */ }
|
|
57
|
-
return response;
|
|
58
|
-
}, 'The sandbox did not answer (its session daemon may have stopped).');
|
|
59
|
-
/** project: a project registered after boot (provisioned first). harnessSpec: the agent's definition, for an agent the sandbox did not boot with. */
|
|
60
|
-
export const requestSession = (dataPath, harness, args, cwd, extra = {}) => {
|
|
61
|
-
const requestId = id();
|
|
62
|
-
sendRequest(dataPath, { kind: 'session', id: requestId, harness, args, cwd, ...(extra.project ? { project: extra.project } : {}), ...(extra.harnessSpec ? { harnessSpec: extra.harnessSpec } : {}), createdAt: now() });
|
|
63
|
-
return requestId;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Provisions a registered project without starting an agent and waits for it, printing its progress (the guest's
|
|
67
|
-
* run\projects\<name>.json) as it goes. Throws when it failed.
|
|
68
|
-
*/
|
|
69
|
-
export const prepareProject = async (dataPath, project, isAlive, progress = (m) => printLine(' [' + project.name + '] ' + m)) => {
|
|
70
|
-
const requestId = id();
|
|
71
|
-
sendRequest(dataPath, { kind: 'project', id: requestId, project, createdAt: now() });
|
|
72
|
-
let last = '';
|
|
73
|
-
const response = await until(60 * 60 * 1000, isAlive, () => {
|
|
74
|
-
const status = readProjectStatus(dataPath, project.name);
|
|
75
|
-
if (status && status.message !== last) {
|
|
76
|
-
progress(safeText(status.message).slice(0, 300));
|
|
77
|
-
last = status.message;
|
|
78
|
-
}
|
|
79
|
-
return readResponse(dataPath, requestId);
|
|
80
|
-
}, 'Timed out waiting for the project to be set up.');
|
|
81
|
-
try {
|
|
82
|
-
assertNoLinks(dataPath, runPaths(dataPath).responses);
|
|
83
|
-
fs.rmSync(runPaths(dataPath).response(requestId), { force: true });
|
|
84
|
-
}
|
|
85
|
-
catch { /* read, nothing deleted */ }
|
|
86
|
-
if (!response.ok)
|
|
87
|
-
fail(safeText(response.message), 'See sandbox logs for details.');
|
|
88
|
-
return response;
|
|
89
|
-
};
|
|
90
|
-
export const waitForSession = (dataPath, sessionId, isAlive, timeoutMs = 15 * 60 * 1000, progress = (m) => printLine(' [session] ' + m)) => {
|
|
91
|
-
let last = '';
|
|
92
|
-
return until(timeoutMs, isAlive, () => {
|
|
93
|
-
const session = readSession(dataPath, sessionId);
|
|
94
|
-
if (!session)
|
|
95
|
-
return null;
|
|
96
|
-
if (session.message !== last) {
|
|
97
|
-
progress(safeText(session.message).slice(0, 300));
|
|
98
|
-
last = session.message;
|
|
99
|
-
}
|
|
100
|
-
if (session.phase === 'failed')
|
|
101
|
-
fail('The agent session failed to start: ' + session.message, 'See sandbox logs for details.');
|
|
102
|
-
if (session.phase === 'exited')
|
|
103
|
-
fail('The agent exited right away (code ' + session.exitCode + ').', 'Check sandbox logs; a wrong agent argument is the usual cause.');
|
|
104
|
-
return session.phase === 'running' ? session : null;
|
|
105
|
-
}, 'Timed out waiting for the session to start.');
|
|
106
|
-
};
|
|
107
|
-
/** Runs a command inside the sandbox (in the workspace or a folder below it) and returns its output. */
|
|
108
|
-
export const execInSandbox = async (dataPath, command, cwd, timeoutSeconds, isAlive) => {
|
|
109
|
-
const requestId = id();
|
|
110
|
-
sendRequest(dataPath, { kind: 'exec', id: requestId, command, cwd, timeoutSeconds, createdAt: now() });
|
|
111
|
-
return waitForResponse(dataPath, requestId, isAlive, (timeoutSeconds + 30) * 1000);
|
|
112
|
-
};
|
|
113
|
-
/** Restarts running sessions in place (they resume via the harness's resumeArguments, e.g. claude --continue). */
|
|
114
|
-
export const restartSessions = async (dataPath, harness, isAlive, cwd) => {
|
|
115
|
-
const requestId = id();
|
|
116
|
-
sendRequest(dataPath, { kind: 'restart', id: requestId, harness, ...(cwd ? { cwd } : {}), createdAt: now() });
|
|
117
|
-
return waitForResponse(dataPath, requestId, isAlive, 30000);
|
|
118
|
-
};
|
|
119
|
-
export const pingSandbox = async (dataPath, isAlive) => {
|
|
120
|
-
const requestId = id();
|
|
121
|
-
sendRequest(dataPath, { kind: 'ping', id: requestId, createdAt: now() });
|
|
122
|
-
return waitForResponse(dataPath, requestId, isAlive, 15000);
|
|
123
|
-
};
|
|
124
|
-
export const runningSessions = (dataPath) => listSessions(dataPath).filter((s) => s.phase === 'running');
|
|
125
|
-
/** Most sessions the host will ever contact for one listing: a sandbox can write as many session files as it likes. */
|
|
126
|
-
export const MAX_QUERIED_SESSIONS = 32;
|
|
127
|
-
/** Running sessions of the sandbox that is running now (its launch id), newest last, capped. */
|
|
128
|
-
export const currentSessions = (dataPath) => {
|
|
129
|
-
const launchId = readSandboxStatus(dataPath)?.launchId;
|
|
130
|
-
return runningSessions(dataPath).filter((s) => s.launchId === launchId).slice(-MAX_QUERIED_SESSIONS);
|
|
131
|
-
};
|
|
132
|
-
/** Sessions in this guest folder or below (one project's) first, each group newest first. */
|
|
133
|
-
export const sessionsFirstIn = (sessions, guestDir) => {
|
|
134
|
-
const newest = [...sessions].reverse();
|
|
135
|
-
if (!guestDir)
|
|
136
|
-
return newest;
|
|
137
|
-
return [...newest.filter((s) => isWithin(guestDir, s.cwd)), ...newest.filter((s) => !isWithin(guestDir, s.cwd))];
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* The session with this id (or id prefix), else the most recently started running one: in `guestDir` (the project
|
|
141
|
-
* you are in) when it has one, else any.
|
|
142
|
-
*/
|
|
143
|
-
export const pickSession = (dataPath, sessionId, guestDir = null) => {
|
|
144
|
-
const running = runningSessions(dataPath);
|
|
145
|
-
if (running.length === 0)
|
|
146
|
-
fail('No agent session is running in the sandbox.', 'Start one with sandbox claude (it opens a new session in the running sandbox).');
|
|
147
|
-
if (!sessionId)
|
|
148
|
-
return sessionsFirstIn(running, guestDir)[0];
|
|
149
|
-
return running.find((s) => s.id === sessionId || s.id.startsWith(sessionId)) ?? fail('No running session "' + sessionId + '".', 'Running sessions: ' + running.map((s) => s.id).join(', ') + ' (sandbox sessions lists them).');
|
|
150
|
-
};
|
|
151
|
-
/** Forgets status from a previous sandbox run so nothing stale is picked up. */
|
|
152
|
-
export const resetRunDir = (dataPath) => {
|
|
153
|
-
const p = runPaths(dataPath);
|
|
154
|
-
// A link (planted by a sandbox) is removed itself and never followed, including `run` itself.
|
|
155
|
-
if (isLink(p.run)) {
|
|
156
|
-
removeLink(p.run);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
for (const target of [p.sandbox, p.requests, p.responses, p.sessions, p.projects]) {
|
|
160
|
-
safeRemove(target, dataPath);
|
|
161
|
-
}
|
|
162
|
-
};
|
package/dist/host/generate.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { GenerateOptions, Generated } from '../core/types.js';
|
|
2
|
-
import { decideToolchains } from '../core/detect-toolchains.js';
|
|
3
|
-
/** Which toolchains the project needs ("auto" settings follow the project's files and what this PC has). */
|
|
4
|
-
export declare const decideProjectToolchains: (o: Pick<GenerateOptions, "run" | "pcLanguages">) => ReturnType<typeof decideToolchains>;
|
|
5
|
-
/**
|
|
6
|
-
* env.cmd, which logon.cmd calls before it opens Windows Terminal: Terminal expands "%AGENT_WORKSPACE%" (the starting
|
|
7
|
-
* folder of new tabs) from its own environment, and the runtime only sets the variable machine-wide after Terminal
|
|
8
|
-
* started. `%` is doubled for cmd; a Windows path holds no quotes.
|
|
9
|
-
*/
|
|
10
|
-
export declare const logonEnv: (workspace: string) => string;
|
|
11
|
-
export declare const generateSandbox: (o: GenerateOptions) => Generated & {
|
|
12
|
-
personalization: string;
|
|
13
|
-
};
|
package/dist/host/generate.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// Writes a launch folder for one sandbox: session.json (what the guest needs to know), the bundled runtime, hooks, the
|
|
2
|
-
// staged Claude settings and the .wsb file that starts Windows Sandbox. The pieces live in launch/.
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import crypto from 'node:crypto';
|
|
6
|
-
import { decideToolchains, resolveToolchains } from '../core/detect-toolchains.js';
|
|
7
|
-
import { readPwshScripts, usesPwsh } from '../core/detect-pwsh.js';
|
|
8
|
-
import { dirExists, ensureDir, fail, writeJson } from '../core/util.js';
|
|
9
|
-
import { substDrives } from '../shared/guest-paths.js';
|
|
10
|
-
import { PROJECTS_GUEST, hubName } from '../shared/projects.js';
|
|
11
|
-
import { planBootProjects } from './launch/projects.js';
|
|
12
|
-
import { hostClaudeDir, stageClaudeProfile } from './claude-profile.js';
|
|
13
|
-
import { databaseCatalog, planDatabases } from './database-plan.js';
|
|
14
|
-
import { collectMappings } from './launch/mappings.js';
|
|
15
|
-
import { copyRuntime, stageGitIdentity, stageHooks } from './launch/stage.js';
|
|
16
|
-
import { buildWsb, resolveMemoryMb } from './launch/wsb.js';
|
|
17
|
-
import { capturePersonalization } from './personalize.js';
|
|
18
|
-
import { pcLanguages } from './pc-scan.js';
|
|
19
|
-
import { msvcHint, projectEntries } from './project-scan.js';
|
|
20
|
-
import { assertTestWritable } from './test-guard.js';
|
|
21
|
-
const NO_PROFILE = { hostDir: null, staged: [], skipped: [], credentials: false, secretsRemoved: [] };
|
|
22
|
-
/** Which toolchains the project needs ("auto" settings follow the project's files and what this PC has). */
|
|
23
|
-
export const decideProjectToolchains = (o) => {
|
|
24
|
-
const { config, workspaceHost } = o.run;
|
|
25
|
-
const msvcScript = config.toolchains.msvc.enabled === 'auto' ? msvcHint(workspaceHost) : undefined;
|
|
26
|
-
const pwshScript = config.toolchains.pwsh.enabled === 'auto' ? usesPwsh(readPwshScripts(workspaceHost)) : null;
|
|
27
|
-
const hints = { ...(msvcScript ? { msvc: msvcScript } : {}), ...(pwshScript ? { pwsh: pwshScript } : {}) };
|
|
28
|
-
return decideToolchains(config.toolchains, projectEntries(workspaceHost), o.pcLanguages ?? pcLanguages(), hints);
|
|
29
|
-
};
|
|
30
|
-
/** What was found on this PC to copy instead of download. */
|
|
31
|
-
const hostToolsOf = (probe) => ({
|
|
32
|
-
node: Boolean(probe.nodeDir),
|
|
33
|
-
nodeVersion: probe.nodeDir || probe.nvmNode ? probe.hostNodeVersion.replace(/^v/, '') : null,
|
|
34
|
-
harnessExecutable: probe.harnessExe?.file ?? null,
|
|
35
|
-
git: Boolean(probe.gitDir),
|
|
36
|
-
nvm: Boolean(probe.nvmDir),
|
|
37
|
-
volta: Boolean(probe.volta),
|
|
38
|
-
pyenv: Boolean(probe.pyenv),
|
|
39
|
-
});
|
|
40
|
-
/**
|
|
41
|
-
* env.cmd, which logon.cmd calls before it opens Windows Terminal: Terminal expands "%AGENT_WORKSPACE%" (the starting
|
|
42
|
-
* folder of new tabs) from its own environment, and the runtime only sets the variable machine-wide after Terminal
|
|
43
|
-
* started. `%` is doubled for cmd; a Windows path holds no quotes.
|
|
44
|
-
*/
|
|
45
|
-
export const logonEnv = (workspace) => '@set "AGENT_WORKSPACE=' + workspace.replace(/[\r\n"]/g, '').replace(/%/g, '%%') + '"\r\n';
|
|
46
|
-
export const generateSandbox = (o) => {
|
|
47
|
-
const { config, dataPath, workspaceHost, harnessName, storageRoot } = o.run;
|
|
48
|
-
const harness = harnessName === 'none' ? null : config.harnesses[harnessName] ?? fail('Unknown agent: ' + harnessName, 'Configured agents: ' + Object.keys(config.harnesses).join(', '));
|
|
49
|
-
if (!dirExists(workspaceHost))
|
|
50
|
-
fail('The workspace folder does not exist: ' + workspaceHost, 'cd into the project first.');
|
|
51
|
-
assertTestWritable(storageRoot);
|
|
52
|
-
assertTestWritable(dataPath);
|
|
53
|
-
// Checked before anything is written, so a refusal leaves nothing behind.
|
|
54
|
-
const memoryMb = resolveMemoryMb(config.sandbox, o.freeMemoryBytes);
|
|
55
|
-
const launchId = Date.now() + '-' + crypto.randomBytes(3).toString('hex');
|
|
56
|
-
const launchPath = path.join(storageRoot, 'launches', launchId);
|
|
57
|
-
ensureDir(launchPath);
|
|
58
|
-
ensureDir(dataPath);
|
|
59
|
-
const boot = planBootProjects({ run: o.run, packageRoot: o.packageRoot, extraProjects: o.extraProjects, knownProjects: o.knownProjects });
|
|
60
|
-
const mappings = collectMappings(o, launchPath, boot);
|
|
61
|
-
const profile = harnessName === 'claude' ? stageClaudeProfile(config.claudeProfile, launchPath, workspaceHost, config.secrets) : NO_PROFILE;
|
|
62
|
-
stageGitIdentity(launchPath);
|
|
63
|
-
const personalization = config.personalization.enabled ? capturePersonalization(launchPath) : 'disabled';
|
|
64
|
-
const databases = o.databases ?? planDatabases(config.databases, workspaceHost);
|
|
65
|
-
const toolchainDecisions = decideProjectToolchains(o);
|
|
66
|
-
const session = {
|
|
67
|
-
launchId,
|
|
68
|
-
project: path.basename(workspaceHost),
|
|
69
|
-
projectId: hubName(workspaceHost, []),
|
|
70
|
-
workspace: config.guestWorkspace,
|
|
71
|
-
workspaceHost,
|
|
72
|
-
projectsDir: PROJECTS_GUEST,
|
|
73
|
-
roots: boot.roots.map((r) => r.guest),
|
|
74
|
-
...(o.autoSession === false ? { autoSession: false } : {}),
|
|
75
|
-
harnessName,
|
|
76
|
-
harness,
|
|
77
|
-
harnessArguments: o.harnessArgs,
|
|
78
|
-
persistAgentState: config.storage.persistAgentState,
|
|
79
|
-
networking: config.sandbox.networking,
|
|
80
|
-
headless: config.sandbox.headless,
|
|
81
|
-
network: config.network,
|
|
82
|
-
provisioning: config.provisioning,
|
|
83
|
-
// "auto" is decided here, so the guest and the launch table agree.
|
|
84
|
-
toolchains: resolveToolchains(config.toolchains, toolchainDecisions),
|
|
85
|
-
databases,
|
|
86
|
-
databaseCatalog: databaseCatalog(config.databases),
|
|
87
|
-
versions: o.run.versions,
|
|
88
|
-
attach: config.attach,
|
|
89
|
-
hooks: config.hooks,
|
|
90
|
-
downloads: config.downloads,
|
|
91
|
-
hostTools: hostToolsOf(o.probe),
|
|
92
|
-
claudeProfile: { overwrite: config.claudeProfile.overwrite, items: profile.staged, credentials: profile.credentials, hostConfigDir: profile.hostDir ?? hostClaudeDir(config.claudeProfile), syncClaudeMem: config.claudeProfile.syncClaudeMem },
|
|
93
|
-
personalization: fs.existsSync(path.join(launchPath, 'personalize', 'personalize.reg')),
|
|
94
|
-
substDrives: substDrives(mappings.map((m) => m.guest)),
|
|
95
|
-
cpuLimitPercent: config.sandbox.cpuLimit === 'none' ? null : config.sandbox.cpuLimit,
|
|
96
|
-
pageFileMb: config.sandbox.pageFileMb,
|
|
97
|
-
apps: config.apps,
|
|
98
|
-
auditProcesses: config.audit.enabled && config.audit.processes,
|
|
99
|
-
};
|
|
100
|
-
const sessionPath = path.join(launchPath, 'session.json');
|
|
101
|
-
writeJson(sessionPath, session);
|
|
102
|
-
fs.writeFileSync(path.join(launchPath, 'env.cmd'), logonEnv(session.workspace), 'utf8');
|
|
103
|
-
copyRuntime(o.packageRoot, launchPath);
|
|
104
|
-
stageHooks(o.packageRoot, launchPath, o.run.scripts);
|
|
105
|
-
const wsbPath = path.join(launchPath, 'agent.wsb');
|
|
106
|
-
fs.writeFileSync(wsbPath, buildWsb(config, memoryMb, mappings), 'utf8');
|
|
107
|
-
return { wsbPath, launchPath, launchId, sessionPath, memoryMb, mappings, profile, personalization, databases, toolchains: toolchainDecisions, projects: boot };
|
|
108
|
-
};
|
package/dist/host/join.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ResolvedRun } from '../core/types.js';
|
|
2
|
-
import { type ProjectSpecT } from '../shared/schema.js';
|
|
3
|
-
import { type ProjectMapper, type RegistryEntry } from './projects.js';
|
|
4
|
-
/** The launch folder of the running sandbox (host-only storage; its id comes from the guest, so it is checked). */
|
|
5
|
-
export declare const runningLaunchPath: (storageRoot: string, dataPath: string) => string | null;
|
|
6
|
-
/** What a session or command from this folder needs: where it is inside, and (for another project) its spec. */
|
|
7
|
-
export interface Joined {
|
|
8
|
-
project: RegistryEntry;
|
|
9
|
-
guestDir: string;
|
|
10
|
-
spec: ProjectSpecT | null;
|
|
11
|
-
run: ResolvedRun | null;
|
|
12
|
-
notes: string[];
|
|
13
|
-
}
|
|
14
|
-
/** The project spec the guest provisions from (scans the project folder like a launch does). */
|
|
15
|
-
export declare const projectSpec: (run: ResolvedRun, entry: RegistryEntry, hooks: boolean) => ProjectSpecT;
|
|
16
|
-
/**
|
|
17
|
-
* Makes `hostDir` usable in the running sandbox. The launch folder (or a folder below it) needs nothing; any other
|
|
18
|
-
* folder is resolved with `resolve` (the caller's resolveRun, with the approval prompt), checked, and registered.
|
|
19
|
-
*/
|
|
20
|
-
export declare const joinRunning: (o: {
|
|
21
|
-
storageRoot: string;
|
|
22
|
-
dataPath: string;
|
|
23
|
-
packageRoot: string;
|
|
24
|
-
hostDir: string;
|
|
25
|
-
wsbShare: boolean;
|
|
26
|
-
resolve: (projectRoot: string) => Promise<ResolvedRun>;
|
|
27
|
-
mapper?: ProjectMapper;
|
|
28
|
-
}) => Promise<Joined>;
|
package/dist/host/join.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// Joining the running sandbox from another folder. The folder's run is resolved exactly as a fresh launch would
|
|
2
|
-
// resolve it (its approved .sandbox-config.json, versions, toolchain detection, database plan), checked against the
|
|
3
|
-
// running sandbox's machine-wide protections, made visible inside (host/projects.ts: a project root, a project
|
|
4
|
-
// mapped at boot, or wsb share) and described to the guest, which provisions what is missing before its session.
|
|
5
|
-
// When none of those can make it visible, NeedsRestart reaches the caller, which offers a restart.
|
|
6
|
-
import fs from 'node:fs';
|
|
7
|
-
import path from 'node:path';
|
|
8
|
-
import { checkJoin, protectionsOf } from '../core/project-policy.js';
|
|
9
|
-
import { resolveToolchains } from '../core/detect-toolchains.js';
|
|
10
|
-
import { assertNoLinks, fail } from '../core/util.js';
|
|
11
|
-
import { Id } from '../shared/schema.js';
|
|
12
|
-
import { readSandboxStatus } from '../shared/rundir.js';
|
|
13
|
-
import { syncProjectIn } from '../sync/watcher.js';
|
|
14
|
-
import { planDatabases } from './database-plan.js';
|
|
15
|
-
import { decideProjectToolchains } from './generate.js';
|
|
16
|
-
import { projectHere, projectMapper, readRegistry, rememberProject, rootHere } from './projects.js';
|
|
17
|
-
import { stageScripts } from './launch/stage.js';
|
|
18
|
-
import { addRepoSnapshot } from './repo-guard.js';
|
|
19
|
-
/** The launch folder of the running sandbox (host-only storage; its id comes from the guest, so it is checked). */
|
|
20
|
-
export const runningLaunchPath = (storageRoot, dataPath) => {
|
|
21
|
-
const launchId = readSandboxStatus(dataPath)?.launchId;
|
|
22
|
-
if (!launchId || !/^\d+-[0-9a-f]{6}$/.test(launchId) || readRegistry(storageRoot)?.launchId !== launchId)
|
|
23
|
-
return null;
|
|
24
|
-
const launchPath = path.join(storageRoot, 'launches', launchId);
|
|
25
|
-
assertNoLinks(storageRoot, launchPath);
|
|
26
|
-
return fs.existsSync(path.join(launchPath, 'session.json')) ? launchPath : null;
|
|
27
|
-
};
|
|
28
|
-
/** The project spec the guest provisions from (scans the project folder like a launch does). */
|
|
29
|
-
export const projectSpec = (run, entry, hooks) => {
|
|
30
|
-
const { config } = run;
|
|
31
|
-
const toolchains = resolveToolchains(config.toolchains, decideProjectToolchains({ run }));
|
|
32
|
-
const harness = run.harnessName === 'none' ? null : config.harnesses[run.harnessName];
|
|
33
|
-
return {
|
|
34
|
-
name: Id.parse(entry.name), workspace: entry.guest, workspaceHost: entry.host, toolchains, versions: run.versions,
|
|
35
|
-
databases: planDatabases(config.databases, run.workspaceHost).slice(0, 8),
|
|
36
|
-
harnesses: harness ? { [run.harnessName]: harness } : {},
|
|
37
|
-
hooks,
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Makes `hostDir` usable in the running sandbox. The launch folder (or a folder below it) needs nothing; any other
|
|
42
|
-
* folder is resolved with `resolve` (the caller's resolveRun, with the approval prompt), checked, and registered.
|
|
43
|
-
*/
|
|
44
|
-
export const joinRunning = async (o) => {
|
|
45
|
-
const here = projectHere(o.storageRoot, o.hostDir);
|
|
46
|
-
if (here?.project.primary)
|
|
47
|
-
return { ...here, spec: null, run: null, notes: [] };
|
|
48
|
-
const registry = readRegistry(o.storageRoot) ?? fail('The running sandbox was started by an older version, so it cannot take another folder.', 'Stop it (sandbox stop) and start it again.');
|
|
49
|
-
// A folder below a project already in the sandbox uses that project; anything else becomes a project of its own.
|
|
50
|
-
const root = here?.project.host ?? path.resolve(o.hostDir);
|
|
51
|
-
const run = await o.resolve(root);
|
|
52
|
-
const check = checkJoin(registry.protections, protectionsOf(run.config));
|
|
53
|
-
if (check.stricter.length) {
|
|
54
|
-
fail('This project needs stricter protection than the running sandbox has, and those settings are machine-wide:\n ' + check.stricter.join('\n '), 'Its sessions cannot get them without changing them for the sessions already running. Stop the sandbox (sandbox stop) and start it from ' + root + '.');
|
|
55
|
-
}
|
|
56
|
-
const mapper = o.mapper ?? projectMapper({ storageRoot: o.storageRoot, packageRoot: o.packageRoot, wsbShare: o.wsbShare });
|
|
57
|
-
// Guarded from now on. A folder the sandbox could already write (inside a root, or mapped at boot) and that has no
|
|
58
|
-
// snapshot from the launch gets an empty one: what is there now may have been planted, so it counts as new.
|
|
59
|
-
// Anything else is snapshotted before it becomes visible.
|
|
60
|
-
addRepoSnapshot(o.dataPath, root, { empty: Boolean(here) || Boolean(rootHere(o.storageRoot, root)) });
|
|
61
|
-
const entry = mapper.register(root);
|
|
62
|
-
rememberProject(o.storageRoot, entry.host);
|
|
63
|
-
const launchPath = runningLaunchPath(o.storageRoot, o.dataPath);
|
|
64
|
-
// Your hooks in ~/.agent-sandbox/hooks ran at boot (once per sandbox); the project's own scripts ("scripts" in its
|
|
65
|
-
// .sandbox-config.json, --script) run before its first agent. The launch folder is read-only for the sandbox, but
|
|
66
|
-
// this side can still add them to it.
|
|
67
|
-
const hooks = Boolean(launchPath) && run.scripts.length > 0;
|
|
68
|
-
if (launchPath && hooks)
|
|
69
|
-
stageScripts(path.join(launchPath, 'projects', entry.name, 'hooks', 'pre-agent'), run.scripts);
|
|
70
|
-
try {
|
|
71
|
-
syncProjectIn(o.dataPath, { hostWorkspace: entry.host, guestWorkspace: entry.guest });
|
|
72
|
-
}
|
|
73
|
-
catch { /* history is a convenience; never block the session */ }
|
|
74
|
-
const notes = [...run.notes, ...check.looser.map((l) => 'The running sandbox is stricter: ' + l + '.')];
|
|
75
|
-
return { project: entry, guestDir: here ? here.guestDir : entry.guest, spec: projectSpec(run, entry, hooks), run, notes };
|
|
76
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { ResolvedRun } from '../../core/types.js';
|
|
2
|
-
import { type RootMapping } from '../../shared/projects.js';
|
|
3
|
-
/** More folders than this would make the .wsb (and every boot) unwieldy; the rest join with a restart later. */
|
|
4
|
-
export declare const MAX_BOOT_PROJECTS = 48;
|
|
5
|
-
export interface BootProjects {
|
|
6
|
-
roots: RootMapping[];
|
|
7
|
-
projects: RootMapping[];
|
|
8
|
-
notes: string[];
|
|
9
|
-
}
|
|
10
|
-
export declare const planBootProjects: (o: {
|
|
11
|
-
run: ResolvedRun;
|
|
12
|
-
packageRoot: string;
|
|
13
|
-
extraProjects?: string[];
|
|
14
|
-
knownProjects?: string[];
|
|
15
|
-
}) => BootProjects;
|
package/dist/host/launch/wsb.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// The .wsb file Windows Sandbox starts from: memory, devices and the folders mapped in.
|
|
2
|
-
import os from 'node:os';
|
|
3
|
-
import { fail, xmlEscape } from '../../core/util.js';
|
|
4
|
-
import { MIRROR_ROOT, sandboxFolder } from '../../shared/guest-paths.js';
|
|
5
|
-
export const GUEST = { launch: 'C:\\AgentLaunch', data: 'C:\\AgentData', hostTools: 'C:\\HostTools', mirror: MIRROR_ROOT };
|
|
6
|
-
const toggle = (value) => (value ? 'Enable' : 'Disable');
|
|
7
|
-
/** "auto": free RAM minus the reserve, but never more than maxMemoryMb or maxMemoryPercent of the PC's total RAM. */
|
|
8
|
-
export const resolveMemoryMb = (sandbox, freeMemoryBytes = os.freemem(), totalMemoryBytes = os.totalmem()) => {
|
|
9
|
-
if (sandbox.memoryMb !== 'auto')
|
|
10
|
-
return sandbox.memoryMb;
|
|
11
|
-
const freeMb = Math.floor(freeMemoryBytes / 1048576);
|
|
12
|
-
const shareMb = Math.floor((totalMemoryBytes / 1048576) * sandbox.maxMemoryPercent / 100);
|
|
13
|
-
const rounded = Math.floor(Math.min(sandbox.maxMemoryMb, shareMb, freeMb - sandbox.reserveHostMb) / 1024) * 1024;
|
|
14
|
-
if (rounded < 4096)
|
|
15
|
-
fail('Not enough free RAM for the sandbox (' + freeMb + ' MB free, ' + sandbox.reserveHostMb + ' MB kept for this PC).', 'Close some apps, lower sandbox.reserveHostMb, or set sandbox.memoryMb to a fixed value (>= 4096).');
|
|
16
|
-
return rounded;
|
|
17
|
-
};
|
|
18
|
-
export const buildWsb = (config, memoryMb, mappings) => {
|
|
19
|
-
const s = config.sandbox;
|
|
20
|
-
// Guest paths on other drive letters (F:\x) really live under C:\Mirror\F; bootstrap.ps1 substs F: onto it at boot.
|
|
21
|
-
const folders = mappings.map((m) => '<MappedFolder><HostFolder>' + xmlEscape(m.host) + '</HostFolder><SandboxFolder>' + xmlEscape(sandboxFolder(m.guest)) + '</SandboxFolder><ReadOnly>' + String(m.readOnly) + '</ReadOnly></MappedFolder>').join('');
|
|
22
|
-
return '<Configuration>'
|
|
23
|
-
+ '<MemoryInMB>' + memoryMb + '</MemoryInMB>'
|
|
24
|
-
+ '<vGPU>' + toggle(s.vGpu) + '</vGPU>'
|
|
25
|
-
+ '<Networking>' + toggle(s.networking) + '</Networking>'
|
|
26
|
-
+ '<ClipboardRedirection>' + toggle(s.clipboard) + '</ClipboardRedirection>'
|
|
27
|
-
+ '<AudioInput>' + toggle(s.audioInput) + '</AudioInput>'
|
|
28
|
-
+ '<VideoInput>' + toggle(s.videoInput) + '</VideoInput>'
|
|
29
|
-
+ '<PrinterRedirection>' + toggle(s.printerRedirection) + '</PrinterRedirection>'
|
|
30
|
-
+ '<ProtectedClient>' + toggle(s.protectedClient) + '</ProtectedClient>'
|
|
31
|
-
+ '<MappedFolders>' + folders + '</MappedFolders>'
|
|
32
|
-
+ '<LogonCommand><Command>' + xmlEscape(GUEST.launch + '\\sandbox\\logon.cmd') + '</Command></LogonCommand>'
|
|
33
|
-
+ '</Configuration>';
|
|
34
|
-
};
|
package/dist/host/motw.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/** What Windows runs when you open it (not source files such as .js or .py: those need a program you choose). */
|
|
2
|
-
export declare const RISKY: RegExp;
|
|
3
|
-
/** Marks one file if it is a program or script (and a plain file, not a link). Returns true when it marked it. */
|
|
4
|
-
export declare const markFromSandbox: (file: string) => boolean;
|
|
5
|
-
/** Has this file the mark? */
|
|
6
|
-
export declare const isMarked: (file: string) => boolean;
|
|
7
|
-
/** Watches the projects while the sandbox runs and marks what appears or changes; returns a function that stops it. */
|
|
8
|
-
export declare const watchAndMark: (projects: string[], note?: (message: string) => void) => (() => void);
|
|
9
|
-
/** The projects to watch and mark (empty: storage.markSandboxFiles is off). */
|
|
10
|
-
export declare const saveMarkedProjects: (storageRoot: string, dataPath: string, projects: string[]) => void;
|
|
11
|
-
export declare const readMarkedProjects: (storageRoot: string, dataPath: string) => string[];
|
|
12
|
-
/** The data folder's size, measured by the watcher when a sandbox closes (measuring at launch would be slow). */
|
|
13
|
-
export declare const saveDataSize: (storageRoot: string, dataPath: string, bytes: number) => void;
|
|
14
|
-
export declare const readDataSize: (storageRoot: string, dataPath: string) => {
|
|
15
|
-
bytes: number;
|
|
16
|
-
at: string;
|
|
17
|
-
} | null;
|
package/dist/host/motw.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
// storage.markSandboxFiles: programs and scripts that appear or change in a project while a sandbox runs get Windows'
|
|
2
|
-
// "downloaded from the internet" mark (the Zone.Identifier stream, zone 3). Running one on this PC then goes through
|
|
3
|
-
// SmartScreen, and PowerShell's RemoteSigned policy refuses an unsigned marked script. So something an agent planted is
|
|
4
|
-
// not run by a double-click or a habit. Runs in the background watcher; only the mark is written, never the file.
|
|
5
|
-
import fs from 'node:fs';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
import { readValid, writeJsonAtomic } from '../shared/rundir.js';
|
|
9
|
-
/** What Windows runs when you open it (not source files such as .js or .py: those need a program you choose). */
|
|
10
|
-
export const RISKY = /\.(exe|dll|com|scr|pif|msi|msix|msp|appx|appxbundle|bat|cmd|ps1|psm1|psd1|vbs|vbe|wsf|wsh|hta|lnk|url|jar|reg|cpl|application|gadget|chm)$/i;
|
|
11
|
-
const MARK = '[ZoneTransfer]\r\nZoneId=3\r\nHostUrl=about:windows-development-sandbox\r\n';
|
|
12
|
-
/** Folders not worth watching closely (git's own files; dependency and build folders are still marked). */
|
|
13
|
-
const SKIP = /(^|[\\/])\.git([\\/]|$)/i;
|
|
14
|
-
/** Marks one file if it is a program or script (and a plain file, not a link). Returns true when it marked it. */
|
|
15
|
-
export const markFromSandbox = (file) => {
|
|
16
|
-
if (!RISKY.test(file) || SKIP.test(file))
|
|
17
|
-
return false;
|
|
18
|
-
try {
|
|
19
|
-
const stat = fs.lstatSync(file);
|
|
20
|
-
if (!stat.isFile())
|
|
21
|
-
return false;
|
|
22
|
-
fs.writeFileSync(file + ':Zone.Identifier', MARK);
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
/** Has this file the mark? */
|
|
30
|
-
export const isMarked = (file) => {
|
|
31
|
-
try {
|
|
32
|
-
return fs.readFileSync(file + ':Zone.Identifier', 'utf8').includes('ZoneId=3');
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/** Watches the projects while the sandbox runs and marks what appears or changes; returns a function that stops it. */
|
|
39
|
-
export const watchAndMark = (projects, note = () => undefined) => {
|
|
40
|
-
const pending = new Set();
|
|
41
|
-
let timer;
|
|
42
|
-
const flush = () => {
|
|
43
|
-
timer = undefined;
|
|
44
|
-
const marked = [...pending].filter(markFromSandbox);
|
|
45
|
-
pending.clear();
|
|
46
|
-
if (marked.length)
|
|
47
|
-
note('marked as from the sandbox (SmartScreen asks before they run here): ' + marked.slice(0, 10).map((f) => path.basename(f)).join(', ') + (marked.length > 10 ? ' and ' + (marked.length - 10) + ' more' : ''));
|
|
48
|
-
};
|
|
49
|
-
const watchers = projects.flatMap((project) => {
|
|
50
|
-
try {
|
|
51
|
-
return [fs.watch(project, { recursive: true }, (_event, file) => {
|
|
52
|
-
const rel = file ? String(file) : '';
|
|
53
|
-
if (!rel || !RISKY.test(rel) || SKIP.test(rel))
|
|
54
|
-
return;
|
|
55
|
-
pending.add(path.join(project, rel));
|
|
56
|
-
timer ??= setTimeout(flush, 1000);
|
|
57
|
-
})];
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return [];
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
return () => { watchers.forEach((w) => w.close()); clearTimeout(timer); if (pending.size)
|
|
64
|
-
flush(); };
|
|
65
|
-
};
|
|
66
|
-
// ---- what the watcher marks, and the size of the persisted data (host-only files next to the sync state) ----------
|
|
67
|
-
const marksFile = (storageRoot, dataPath) => path.join(storageRoot, 'sync', path.basename(dataPath) + '-mark.json');
|
|
68
|
-
const sizeFile = (storageRoot, dataPath) => path.join(storageRoot, 'sync', path.basename(dataPath) + '-size.json');
|
|
69
|
-
/** The projects to watch and mark (empty: storage.markSandboxFiles is off). */
|
|
70
|
-
export const saveMarkedProjects = (storageRoot, dataPath, projects) => writeJsonAtomic(marksFile(storageRoot, dataPath), projects);
|
|
71
|
-
export const readMarkedProjects = (storageRoot, dataPath) => readValid(z.array(z.string().max(1024)).max(64), marksFile(storageRoot, dataPath)) ?? [];
|
|
72
|
-
/** The data folder's size, measured by the watcher when a sandbox closes (measuring at launch would be slow). */
|
|
73
|
-
export const saveDataSize = (storageRoot, dataPath, bytes) => writeJsonAtomic(sizeFile(storageRoot, dataPath), { bytes, at: new Date().toISOString() });
|
|
74
|
-
export const readDataSize = (storageRoot, dataPath) => readValid(z.object({ bytes: z.number().min(0), at: z.string().max(40) }), sizeFile(storageRoot, dataPath));
|
package/dist/host/pc-scan.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type Database } from '../core/detect-databases.js';
|
|
2
|
-
import { type AutoToolchain } from '../core/detect-toolchains.js';
|
|
3
|
-
/** Languages this PC has (their commands on PATH; Windows' Store stubs for python do not count). */
|
|
4
|
-
export declare const pcLanguages: () => AutoToolchain[];
|
|
5
|
-
/** Database services installed on this PC (names from the service control manager; nothing is started or changed). */
|
|
6
|
-
export declare const hostDatabases: () => Database[];
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface RegValue {
|
|
2
|
-
key: string;
|
|
3
|
-
name: string;
|
|
4
|
-
kind: string;
|
|
5
|
-
value: string | number | string[];
|
|
6
|
-
}
|
|
7
|
-
/** Formats captured values as a .reg file (UTF-16 friendly text; written as UTF-16LE with BOM). */
|
|
8
|
-
export declare const toRegFile: (values: RegValue[]) => string;
|
|
9
|
-
/** Writes personalize.reg (+ the wallpaper image) into `<launch>\personalize`. Returns a short summary. */
|
|
10
|
-
export declare const capturePersonalization: (launchPath: string) => string;
|