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,8 @@
|
|
|
1
|
+
/** Where the sandbox finds conpty.dll + OpenConsole.exe (guest/ptyhost.ts points ptyhost at it). */
|
|
2
|
+
export declare const conptyDir: (dataPath: string) => string;
|
|
3
|
+
/**
|
|
4
|
+
* Microsoft's newer pseudo console (the Microsoft.Windows.Console.ConPTY package: conpty.dll and OpenConsole.exe, the
|
|
5
|
+
* same one Windows Terminal and VS Code use), downloaded once and verified against the SHA-512 NuGet publishes. Agent
|
|
6
|
+
* sessions use it instead of the one built into Windows, which re-renders the screen and garbles it after resizes.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ensureConpty: (dataPath: string, refresh: boolean) => Promise<string>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { downloader, extractArchive, fetchJson, moveIntoPlace, stagingFolder } from '../../shared/download/index.js';
|
|
4
|
+
import { safeRemove } from '../../shared/io/index.js';
|
|
5
|
+
import { assertTestWritable } from '../test-guard.js';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { assertNoLinks, errMsg, fileExists } from '../../core/util/index.js';
|
|
8
|
+
// ---- conpty.dll -----------------------------------------------------------------------------------------------------
|
|
9
|
+
/** Where the sandbox finds conpty.dll + OpenConsole.exe (guest/ptyhost.ts points ptyhost at it). */
|
|
10
|
+
export const conptyDir = (dataPath) => path.join(dataPath, 'tools', 'conpty');
|
|
11
|
+
const NUGET_CONPTY = 'https://api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/';
|
|
12
|
+
const NugetVersionsSchema = z.object({ versions: z.array(z.string()) });
|
|
13
|
+
const NugetLeafSchema = z.object({ catalogEntry: z.string().url() });
|
|
14
|
+
const NugetCatalogSchema = z.object({ packageHash: z.string(), packageHashAlgorithm: z.literal('SHA512') });
|
|
15
|
+
/**
|
|
16
|
+
* Microsoft's newer pseudo console (the Microsoft.Windows.Console.ConPTY package: conpty.dll and OpenConsole.exe, the
|
|
17
|
+
* same one Windows Terminal and VS Code use), downloaded once and verified against the SHA-512 NuGet publishes. Agent
|
|
18
|
+
* sessions use it instead of the one built into Windows, which re-renders the screen and garbles it after resizes.
|
|
19
|
+
*/
|
|
20
|
+
export const ensureConpty = async (dataPath, refresh) => {
|
|
21
|
+
const dir = conptyDir(dataPath);
|
|
22
|
+
assertTestWritable(dir);
|
|
23
|
+
assertNoLinks(dataPath, dir);
|
|
24
|
+
if (fileExists(path.join(dir, 'conpty.dll')) && fileExists(path.join(dir, 'OpenConsole.exe')) && !refresh)
|
|
25
|
+
return 'cached';
|
|
26
|
+
const arch = process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
27
|
+
const work = stagingFolder(dir);
|
|
28
|
+
try {
|
|
29
|
+
const version = NugetVersionsSchema.parse(await fetchJson(NUGET_CONPTY + 'index.json'))
|
|
30
|
+
.versions.filter((v) => !v.includes('-'))
|
|
31
|
+
.pop();
|
|
32
|
+
if (!version)
|
|
33
|
+
throw new Error('no release found');
|
|
34
|
+
const leaf = NugetLeafSchema.parse(await fetchJson('https://api.nuget.org/v3/registration5-gz-semver2/microsoft.windows.console.conpty/' + version + '.json'));
|
|
35
|
+
const sha512 = Buffer.from(NugetCatalogSchema.parse(await fetchJson(leaf.catalogEntry)).packageHash, 'base64').toString('hex');
|
|
36
|
+
const pkg = path.join(work, 'conpty.nupkg');
|
|
37
|
+
await downloader.file(NUGET_CONPTY + version + '/microsoft.windows.console.conpty.' + version + '.nupkg', pkg, {
|
|
38
|
+
sha512,
|
|
39
|
+
});
|
|
40
|
+
const files = {
|
|
41
|
+
'conpty.dll': 'runtimes/win-' + arch + '/native/conpty.dll',
|
|
42
|
+
'OpenConsole.exe': 'build/native/runtimes/' + arch + '/OpenConsole.exe',
|
|
43
|
+
};
|
|
44
|
+
await extractArchive(pkg, path.join(work, 'x'), Object.values(files));
|
|
45
|
+
fs.mkdirSync(path.join(work, 'out'));
|
|
46
|
+
for (const [name, member] of Object.entries(files))
|
|
47
|
+
fs.copyFileSync(path.join(work, 'x', ...member.split('/')), path.join(work, 'out', name));
|
|
48
|
+
fs.writeFileSync(path.join(work, 'out', 'VERSION'), version);
|
|
49
|
+
moveIntoPlace(path.join(work, 'out'), dir);
|
|
50
|
+
return 'downloaded ' + version;
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
return "not downloaded, sessions use Windows' own pseudo console (" + errMsg(e) + ')';
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
safeRemove(work, path.dirname(work));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
@@ -3,7 +3,7 @@ export declare const terminalDir: (dataPath: string) => string;
|
|
|
3
3
|
export declare const terminalExe: (dataPath: string) => string;
|
|
4
4
|
/** Our own profile id, so the profile is found again (and user edits to it are kept) on later launches. */
|
|
5
5
|
export declare const PWSH_PROFILE_GUID = "{5f3a6c1e-7d2b-4e8a-9c41-0b6d2a8f7e93}";
|
|
6
|
-
declare const
|
|
6
|
+
declare const TerminalSettingsSchema: z.ZodObject<{
|
|
7
7
|
profiles: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodObject<{
|
|
8
8
|
guid: z.ZodOptional<z.ZodString>;
|
|
9
9
|
}, z.core.$loose>>, z.ZodObject<{
|
|
@@ -16,7 +16,7 @@ declare const TerminalSettings: z.ZodObject<{
|
|
|
16
16
|
* settings.json with the "PowerShell 7" profile shown when `visible`, else hidden (never deleted: a user's tweaks to it
|
|
17
17
|
* survive turning pwsh off and on). Pure: returns null when nothing changes.
|
|
18
18
|
*/
|
|
19
|
-
export declare const withPwshProfile: (settings: z.output<typeof
|
|
19
|
+
export declare const withPwshProfile: (settings: z.output<typeof TerminalSettingsSchema>, visible: boolean) => z.output<typeof TerminalSettingsSchema> | null;
|
|
20
20
|
/**
|
|
21
21
|
* Shows the PowerShell 7 profile once pwsh is installed in this data folder (and `allowed`, i.e. toolchains.pwsh is
|
|
22
22
|
* not off), hides it otherwise. settings.json is written by the sandbox too: read with a size cap, through no links,
|
|
@@ -29,12 +29,4 @@ export declare const ensureTerminal: (dataPath: string, refresh: boolean, option
|
|
|
29
29
|
exe: string | null;
|
|
30
30
|
message: string;
|
|
31
31
|
}>;
|
|
32
|
-
/** Where the sandbox finds conpty.dll + OpenConsole.exe (guest/ptyhost.ts points ptyhost at it). */
|
|
33
|
-
export declare const conptyDir: (dataPath: string) => string;
|
|
34
|
-
/**
|
|
35
|
-
* Microsoft's newer pseudo console (the Microsoft.Windows.Console.ConPTY package: conpty.dll and OpenConsole.exe, the
|
|
36
|
-
* same one Windows Terminal and VS Code use), downloaded once and verified against the SHA-512 NuGet publishes. Agent
|
|
37
|
-
* sessions use it instead of the one built into Windows, which re-renders the screen and garbles it after resizes.
|
|
38
|
-
*/
|
|
39
|
-
export declare const ensureConpty: (dataPath: string, refresh: boolean) => Promise<string>;
|
|
40
32
|
export {};
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// logon.cmd can open it the moment the sandbox logs in (no PowerShell window first).
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
import { safeRemove } from '
|
|
7
|
-
import { assertTestWritable } from '
|
|
5
|
+
import { downloader, githubAsset } from '../../shared/download/index.js';
|
|
6
|
+
import { safeRemove } from '../../shared/io/index.js';
|
|
7
|
+
import { assertTestWritable } from '../test-guard.js';
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import { assertNoLinks, errMsg, fileExists, parseJsonc, writeJson } from '
|
|
9
|
+
import { assertNoLinks, errMsg, fileExists, parseJsonc, writeJson } from '../../core/util/index.js';
|
|
10
10
|
export const terminalDir = (dataPath) => path.join(dataPath, 'tools', 'terminal');
|
|
11
11
|
export const terminalExe = (dataPath) => path.join(terminalDir(dataPath), 'WindowsTerminal.exe');
|
|
12
12
|
/**
|
|
@@ -21,15 +21,22 @@ const SETTINGS = {
|
|
|
21
21
|
// New tabs pick up the PATH and variables the runner writes machine-wide after the window opened.
|
|
22
22
|
compatibility: { reloadEnvironmentVariables: true },
|
|
23
23
|
warning: { confirmCloseAllTabs: false, largePaste: false, multiLinePaste: false },
|
|
24
|
-
profiles: {
|
|
24
|
+
profiles: {
|
|
25
|
+
defaults: { font: { face: 'Cascadia Mono' }, startingDirectory: '%AGENT_WORKSPACE%', closeOnExit: 'graceful' },
|
|
26
|
+
},
|
|
25
27
|
};
|
|
26
28
|
/** Our own profile id, so the profile is found again (and user edits to it are kept) on later launches. */
|
|
27
29
|
export const PWSH_PROFILE_GUID = '{5f3a6c1e-7d2b-4e8a-9c41-0b6d2a8f7e93}';
|
|
28
30
|
/** pwsh.exe as the sandbox sees it (toolchains/pwsh.ts installs it to tools\pwsh). */
|
|
29
31
|
const GUEST_PWSH = 'C:\\AgentData\\tools\\pwsh\\pwsh.exe';
|
|
30
32
|
const MAX_SETTINGS_BYTES = 1024 * 1024;
|
|
31
|
-
const
|
|
32
|
-
profiles: z
|
|
33
|
+
const TerminalSettingsSchema = z.looseObject({
|
|
34
|
+
profiles: z
|
|
35
|
+
.union([
|
|
36
|
+
z.array(z.looseObject({ guid: z.string().optional() })),
|
|
37
|
+
z.looseObject({ list: z.array(z.looseObject({ guid: z.string().optional() })).optional() }),
|
|
38
|
+
])
|
|
39
|
+
.optional(),
|
|
33
40
|
});
|
|
34
41
|
/**
|
|
35
42
|
* settings.json with the "PowerShell 7" profile shown when `visible`, else hidden (never deleted: a user's tweaks to it
|
|
@@ -42,7 +49,13 @@ export const withPwshProfile = (settings, visible) => {
|
|
|
42
49
|
if (at === -1 && !visible)
|
|
43
50
|
return null;
|
|
44
51
|
if (at === -1)
|
|
45
|
-
list.push({
|
|
52
|
+
list.push({
|
|
53
|
+
guid: PWSH_PROFILE_GUID,
|
|
54
|
+
name: 'PowerShell 7',
|
|
55
|
+
commandline: '"' + GUEST_PWSH + '" -NoLogo',
|
|
56
|
+
icon: GUEST_PWSH,
|
|
57
|
+
hidden: false,
|
|
58
|
+
});
|
|
46
59
|
else if ((list[at].hidden === true) === !visible)
|
|
47
60
|
return null;
|
|
48
61
|
else
|
|
@@ -63,7 +76,7 @@ export const syncPwshProfile = (dataPath, allowed) => {
|
|
|
63
76
|
const visible = allowed && fileExists(path.join(dataPath, 'tools', 'pwsh', 'pwsh.exe'));
|
|
64
77
|
let parsed;
|
|
65
78
|
try {
|
|
66
|
-
const result =
|
|
79
|
+
const result = TerminalSettingsSchema.safeParse(parseJsonc(fs.readFileSync(file, 'utf8'), file));
|
|
67
80
|
if (!result.success)
|
|
68
81
|
return;
|
|
69
82
|
parsed = result.data;
|
|
@@ -88,57 +101,13 @@ export const ensureTerminal = async (dataPath, refresh, options = {}) => {
|
|
|
88
101
|
}
|
|
89
102
|
return result;
|
|
90
103
|
};
|
|
91
|
-
// ---- conpty.dll ------------------------------------------------------------------------------------------------------
|
|
92
|
-
/** Where the sandbox finds conpty.dll + OpenConsole.exe (guest/ptyhost.ts points ptyhost at it). */
|
|
93
|
-
export const conptyDir = (dataPath) => path.join(dataPath, 'tools', 'conpty');
|
|
94
|
-
const NUGET_CONPTY = 'https://api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/';
|
|
95
|
-
const NugetVersions = z.object({ versions: z.array(z.string()) });
|
|
96
|
-
const NugetLeaf = z.object({ catalogEntry: z.string().url() });
|
|
97
|
-
const NugetCatalog = z.object({ packageHash: z.string(), packageHashAlgorithm: z.literal('SHA512') });
|
|
98
|
-
/**
|
|
99
|
-
* Microsoft's newer pseudo console (the Microsoft.Windows.Console.ConPTY package: conpty.dll and OpenConsole.exe, the
|
|
100
|
-
* same one Windows Terminal and VS Code use), downloaded once and verified against the SHA-512 NuGet publishes. Agent
|
|
101
|
-
* sessions use it instead of the one built into Windows, which re-renders the screen and garbles it after resizes.
|
|
102
|
-
*/
|
|
103
|
-
export const ensureConpty = async (dataPath, refresh) => {
|
|
104
|
-
const dir = conptyDir(dataPath);
|
|
105
|
-
assertTestWritable(dir);
|
|
106
|
-
assertNoLinks(dataPath, dir);
|
|
107
|
-
if (fileExists(path.join(dir, 'conpty.dll')) && fileExists(path.join(dir, 'OpenConsole.exe')) && !refresh)
|
|
108
|
-
return 'cached';
|
|
109
|
-
const arch = process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
110
|
-
const work = stagingFolder(dir);
|
|
111
|
-
try {
|
|
112
|
-
const version = NugetVersions.parse(await fetchJson(NUGET_CONPTY + 'index.json')).versions.filter((v) => !v.includes('-')).pop();
|
|
113
|
-
if (!version)
|
|
114
|
-
throw new Error('no release found');
|
|
115
|
-
const leaf = NugetLeaf.parse(await fetchJson('https://api.nuget.org/v3/registration5-gz-semver2/microsoft.windows.console.conpty/' + version + '.json'));
|
|
116
|
-
const sha512 = Buffer.from(NugetCatalog.parse(await fetchJson(leaf.catalogEntry)).packageHash, 'base64').toString('hex');
|
|
117
|
-
const pkg = path.join(work, 'conpty.nupkg');
|
|
118
|
-
await download(NUGET_CONPTY + version + '/microsoft.windows.console.conpty.' + version + '.nupkg', pkg, { sha512 });
|
|
119
|
-
const files = { 'conpty.dll': 'runtimes/win-' + arch + '/native/conpty.dll', 'OpenConsole.exe': 'build/native/runtimes/' + arch + '/OpenConsole.exe' };
|
|
120
|
-
await extractArchive(pkg, path.join(work, 'x'), Object.values(files));
|
|
121
|
-
fs.mkdirSync(path.join(work, 'out'));
|
|
122
|
-
for (const [name, member] of Object.entries(files))
|
|
123
|
-
fs.copyFileSync(path.join(work, 'x', ...member.split('/')), path.join(work, 'out', name));
|
|
124
|
-
fs.writeFileSync(path.join(work, 'out', 'VERSION'), version);
|
|
125
|
-
moveIntoPlace(path.join(work, 'out'), dir);
|
|
126
|
-
return 'downloaded ' + version;
|
|
127
|
-
}
|
|
128
|
-
catch (e) {
|
|
129
|
-
return 'not downloaded, sessions use Windows\' own pseudo console (' + errMsg(e) + ')';
|
|
130
|
-
}
|
|
131
|
-
finally {
|
|
132
|
-
safeRemove(work, path.dirname(work));
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
104
|
const installTerminal = async (dataPath, refresh) => {
|
|
136
105
|
const exe = terminalExe(dataPath);
|
|
137
106
|
const dir = terminalDir(dataPath);
|
|
138
107
|
assertTestWritable(dir);
|
|
139
108
|
const settings = path.join(dir, 'settings');
|
|
140
|
-
//
|
|
141
|
-
// the download fails). One still parked from an interrupted earlier run is the one to keep.
|
|
109
|
+
// downloader.archive replaces tools\terminal: the portable settings folder waits here meanwhile (and goes back also
|
|
110
|
+
// when the download fails). One still parked from an interrupted earlier run is the one to keep.
|
|
142
111
|
const parked = path.join(dataPath, 'tools', 'terminal-settings.parked');
|
|
143
112
|
assertNoLinks(dataPath, settings);
|
|
144
113
|
assertNoLinks(dataPath, parked);
|
|
@@ -152,7 +121,11 @@ const installTerminal = async (dataPath, refresh) => {
|
|
|
152
121
|
try {
|
|
153
122
|
const arch = process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
154
123
|
const asset = await githubAsset('microsoft/terminal', new RegExp('^Microsoft\\.WindowsTerminal_[\\d.]+_' + arch + '\\.zip$'));
|
|
155
|
-
await
|
|
124
|
+
await downloader.archive(asset.url, dir, {
|
|
125
|
+
sha256: asset.sha256,
|
|
126
|
+
locate: 'WindowsTerminal.exe',
|
|
127
|
+
fileName: asset.name,
|
|
128
|
+
});
|
|
156
129
|
fs.writeFileSync(path.join(dir, '.portable'), '');
|
|
157
130
|
return { exe, message: 'downloaded ' + asset.name };
|
|
158
131
|
}
|
|
@@ -169,6 +142,9 @@ const installTerminal = async (dataPath, refresh) => {
|
|
|
169
142
|
}
|
|
170
143
|
}
|
|
171
144
|
catch (e) {
|
|
172
|
-
return {
|
|
145
|
+
return {
|
|
146
|
+
exe: null,
|
|
147
|
+
message: 'download failed, the sandbox will use a plain PowerShell window (' + errMsg(e) + ')',
|
|
148
|
+
};
|
|
173
149
|
}
|
|
174
150
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { JsonFile } from '../../shared/io/index.js';
|
|
3
|
+
import { hostStateFile } from '../storage/index.js';
|
|
4
|
+
// ---- the views the watcher keeps in step (host-only, next to the sync state) ----------------------------------------
|
|
5
|
+
const ActiveViewSchema = z.object({
|
|
6
|
+
host: z.string().max(1024),
|
|
7
|
+
view: z.string().max(1024),
|
|
8
|
+
state: z.string().max(1024),
|
|
9
|
+
exclude: z.array(z.string().max(500)).max(500),
|
|
10
|
+
include: z.array(z.string().max(500)).max(500),
|
|
11
|
+
guestGitDir: z.string().max(1024).nullable(),
|
|
12
|
+
});
|
|
13
|
+
const activeFile = (storageRoot, dataPath) => new JsonFile(z.array(ActiveViewSchema).max(64), hostStateFile(storageRoot, dataPath, '-views.json'));
|
|
14
|
+
export const saveActiveViews = (storageRoot, dataPath, views) => activeFile(storageRoot, dataPath).write(views.map((v) => ({
|
|
15
|
+
host: v.host,
|
|
16
|
+
view: v.view,
|
|
17
|
+
state: v.state,
|
|
18
|
+
exclude: v.exclude ?? [],
|
|
19
|
+
include: v.include ?? [],
|
|
20
|
+
guestGitDir: v.guestGitDir ?? null,
|
|
21
|
+
})));
|
|
22
|
+
export const readActiveViews = (storageRoot, dataPath) => activeFile(storageRoot, dataPath).read() ?? [];
|
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
import type { Config } from '../../core/types.js';
|
|
2
|
-
import { type ViewOptions } from './view.js';
|
|
3
1
|
export { IgnoreRules } from './rules.js';
|
|
4
2
|
export { WorkspaceView, type SyncStats, type ViewOptions } from './view.js';
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export interface ViewPlan {
|
|
8
|
-
options: ViewOptions; /** The project's real .git folder, mapped at options.guestGitDir (null: none). */
|
|
9
|
-
hostGit: string | null;
|
|
10
|
-
note?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* The view for a launch, or null when the folder itself is mapped: workspaceFilter off, or a git worktree (its .git is
|
|
14
|
-
* a file pointing elsewhere, which a view cannot follow; then the folder is mapped as before and a note says so).
|
|
15
|
-
*/
|
|
16
|
-
export declare const planView: (config: Config, storageRoot: string, workspaceHost: string) => ViewPlan | null;
|
|
17
|
-
/** Why a filtered launch maps the folder itself after all (for the launch notes). */
|
|
18
|
-
export declare const viewSkipped: (config: Config, workspaceHost: string) => string | null;
|
|
19
|
-
export declare const saveActiveViews: (storageRoot: string, dataPath: string, views: ViewOptions[]) => void;
|
|
20
|
-
export declare const readActiveViews: (storageRoot: string, dataPath: string) => ViewOptions[];
|
|
3
|
+
export * from './plan.js';
|
|
4
|
+
export * from './active-views.js';
|
|
@@ -1,53 +1,6 @@
|
|
|
1
1
|
// workspaceFilter in practice: which view a launch maps instead of the project, the project's .git mapped beside it,
|
|
2
2
|
// and the host-only list of views the background watcher keeps in step while the sandbox runs.
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { z } from 'zod';
|
|
6
|
-
import { readValid, writeJsonAtomic } from '../../shared/rundir.js';
|
|
7
|
-
import { WorkspaceView } from './view.js';
|
|
8
3
|
export { IgnoreRules } from './rules.js';
|
|
9
4
|
export { WorkspaceView } from './view.js';
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
/**
|
|
13
|
-
* The view for a launch, or null when the folder itself is mapped: workspaceFilter off, or a git worktree (its .git is
|
|
14
|
-
* a file pointing elsewhere, which a view cannot follow; then the folder is mapped as before and a note says so).
|
|
15
|
-
*/
|
|
16
|
-
export const planView = (config, storageRoot, workspaceHost) => {
|
|
17
|
-
if (!config.workspaceFilter.enabled)
|
|
18
|
-
return null;
|
|
19
|
-
const git = path.join(workspaceHost, '.git');
|
|
20
|
-
let gitIsDir = false;
|
|
21
|
-
try {
|
|
22
|
-
const s = fs.lstatSync(git);
|
|
23
|
-
if (s.isFile())
|
|
24
|
-
return null;
|
|
25
|
-
gitIsDir = s.isDirectory() && !s.isSymbolicLink();
|
|
26
|
-
}
|
|
27
|
-
catch { /* no .git */ }
|
|
28
|
-
// git access "none": the agent gets no .git at all.
|
|
29
|
-
const hostGit = gitIsDir && config.provisioning.git.enabled && config.provisioning.git.access !== 'none' ? git : null;
|
|
30
|
-
return {
|
|
31
|
-
options: { ...WorkspaceView.pathsFor(storageRoot, workspaceHost), exclude: config.workspaceFilter.exclude, include: config.workspaceFilter.include, guestGitDir: hostGit ? guestGitDir(config.guestWorkspace) : null },
|
|
32
|
-
hostGit,
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
/** Why a filtered launch maps the folder itself after all (for the launch notes). */
|
|
36
|
-
export const viewSkipped = (config, workspaceHost) => {
|
|
37
|
-
if (!config.workspaceFilter.enabled)
|
|
38
|
-
return null;
|
|
39
|
-
try {
|
|
40
|
-
if (fs.lstatSync(path.join(workspaceHost, '.git')).isFile())
|
|
41
|
-
return 'workspaceFilter: ' + workspaceHost + ' is a git worktree (.git is a file); the folder is mapped as it is, git-ignored files included.';
|
|
42
|
-
}
|
|
43
|
-
catch { /* fine */ }
|
|
44
|
-
return null;
|
|
45
|
-
};
|
|
46
|
-
// ---- the views the watcher keeps in step (host-only, next to the sync state) ------------------------------------------
|
|
47
|
-
const ActiveView = z.object({
|
|
48
|
-
host: z.string().max(1024), view: z.string().max(1024), state: z.string().max(1024),
|
|
49
|
-
exclude: z.array(z.string().max(500)).max(500), include: z.array(z.string().max(500)).max(500), guestGitDir: z.string().max(1024).nullable(),
|
|
50
|
-
});
|
|
51
|
-
const activeFile = (storageRoot, dataPath) => path.join(storageRoot, 'sync', path.basename(dataPath) + '-views.json');
|
|
52
|
-
export const saveActiveViews = (storageRoot, dataPath, views) => writeJsonAtomic(activeFile(storageRoot, dataPath), views.map((v) => ({ host: v.host, view: v.view, state: v.state, exclude: v.exclude ?? [], include: v.include ?? [], guestGitDir: v.guestGitDir ?? null })));
|
|
53
|
-
export const readActiveViews = (storageRoot, dataPath) => readValid(z.array(ActiveView).max(64), activeFile(storageRoot, dataPath)) ?? [];
|
|
5
|
+
export * from './plan.js';
|
|
6
|
+
export * from './active-views.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Config } from '../../core/types.js';
|
|
2
|
+
import { type ViewOptions } from './view.js';
|
|
3
|
+
/** The project's .git as the sandbox sees it: next to the workspace (C:\Workspace\app -> C:\Workspace\app.git). */
|
|
4
|
+
export declare const guestGitDir: (guestWorkspace: string) => string;
|
|
5
|
+
export interface ViewPlan {
|
|
6
|
+
options: ViewOptions;
|
|
7
|
+
/** The project's real .git folder, mapped at options.guestGitDir (null: none). */ hostGit: string | null;
|
|
8
|
+
note?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The view for a launch, or null when the folder itself is mapped: workspaceFilter off, or a git worktree (its .git is
|
|
12
|
+
* a file pointing elsewhere, which a view cannot follow; then the folder is mapped as before and a note says so).
|
|
13
|
+
*/
|
|
14
|
+
export declare const planView: (config: Config, storageRoot: string, workspaceHost: string) => ViewPlan | null;
|
|
15
|
+
/** Why a filtered launch maps the folder itself after all (for the launch notes). */
|
|
16
|
+
export declare const viewSkipped: (config: Config, workspaceHost: string) => string | null;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { WorkspaceView } from './view.js';
|
|
4
|
+
/** The project's .git as the sandbox sees it: next to the workspace (C:\Workspace\app -> C:\Workspace\app.git). */
|
|
5
|
+
export const guestGitDir = (guestWorkspace) => guestWorkspace.replace(/[\\/]+$/, '') + '.git';
|
|
6
|
+
/**
|
|
7
|
+
* The view for a launch, or null when the folder itself is mapped: workspaceFilter off, or a git worktree (its .git is
|
|
8
|
+
* a file pointing elsewhere, which a view cannot follow; then the folder is mapped as before and a note says so).
|
|
9
|
+
*/
|
|
10
|
+
export const planView = (config, storageRoot, workspaceHost) => {
|
|
11
|
+
if (!config.workspaceFilter.enabled)
|
|
12
|
+
return null;
|
|
13
|
+
const git = path.join(workspaceHost, '.git');
|
|
14
|
+
let gitIsDir = false;
|
|
15
|
+
try {
|
|
16
|
+
const s = fs.lstatSync(git);
|
|
17
|
+
if (s.isFile())
|
|
18
|
+
return null;
|
|
19
|
+
gitIsDir = s.isDirectory() && !s.isSymbolicLink();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
/* no .git */
|
|
23
|
+
}
|
|
24
|
+
// git access "none": the agent gets no .git at all.
|
|
25
|
+
const hostGit = gitIsDir && config.provisioning.git.enabled && config.provisioning.git.access !== 'none' ? git : null;
|
|
26
|
+
return {
|
|
27
|
+
options: {
|
|
28
|
+
...WorkspaceView.pathsFor(storageRoot, workspaceHost),
|
|
29
|
+
exclude: config.workspaceFilter.exclude,
|
|
30
|
+
include: config.workspaceFilter.include,
|
|
31
|
+
guestGitDir: hostGit ? guestGitDir(config.guestWorkspace) : null,
|
|
32
|
+
},
|
|
33
|
+
hostGit,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/** Why a filtered launch maps the folder itself after all (for the launch notes). */
|
|
37
|
+
export const viewSkipped = (config, workspaceHost) => {
|
|
38
|
+
if (!config.workspaceFilter.enabled)
|
|
39
|
+
return null;
|
|
40
|
+
try {
|
|
41
|
+
if (fs.lstatSync(path.join(workspaceHost, '.git')).isFile())
|
|
42
|
+
return ('workspaceFilter: ' +
|
|
43
|
+
workspaceHost +
|
|
44
|
+
' is a git worktree (.git is a file); the folder is mapped as it is, git-ignored files included.');
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
/* fine */
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
};
|
|
@@ -30,13 +30,20 @@ export class IgnoreRules {
|
|
|
30
30
|
this.forced = ignore().add(include);
|
|
31
31
|
}
|
|
32
32
|
/** One of your include patterns lets this path in, whatever .gitignore says (even inside an ignored folder). */
|
|
33
|
-
isForced(rel) {
|
|
33
|
+
isForced(rel) {
|
|
34
|
+
return this.include.length > 0 && this.forced.ignores(rel);
|
|
35
|
+
}
|
|
34
36
|
/** Could one of your include patterns match something inside this ignored folder (so a walk must look inside)? */
|
|
35
37
|
mayIncludeInside(dir) {
|
|
36
|
-
return this.include.some((p) => {
|
|
38
|
+
return this.include.some((p) => {
|
|
39
|
+
const clean = p.replace(/^\//, '');
|
|
40
|
+
return clean.startsWith('**') || clean.startsWith(dir + '/');
|
|
41
|
+
});
|
|
37
42
|
}
|
|
38
43
|
/** Forget the .gitignore files read so far (one of them changed). */
|
|
39
|
-
reset() {
|
|
44
|
+
reset() {
|
|
45
|
+
this.perFolder.clear();
|
|
46
|
+
}
|
|
40
47
|
matcher(folder) {
|
|
41
48
|
if (this.perFolder.has(folder))
|
|
42
49
|
return this.perFolder.get(folder);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** [host size, host time, view size, view time] after the last sync; -1 = no such file. */
|
|
3
|
+
export type Seen = [number, number, number, number];
|
|
4
|
+
export declare const ManifestSchema: z.ZodRecord<z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
5
|
+
/** Most entries one walk looks at: a sandbox can create files faster than they are worth syncing. */
|
|
6
|
+
export declare const MAX_ENTRIES = 300000;
|
|
7
|
+
export declare const stamp: (file: string) => [number, number];
|
|
8
|
+
export declare const sameContent: (a: string, b: string) => boolean;
|
|
9
|
+
/** A path from an event or the manifest: relative, forward slashes, no way out of the root. */
|
|
10
|
+
export declare const safeRel: (rel: string) => string | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import crypto from 'node:crypto';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const ManifestSchema = z.record(z.string().max(1024), z.tuple([z.number(), z.number(), z.number(), z.number()]));
|
|
5
|
+
/** Most entries one walk looks at: a sandbox can create files faster than they are worth syncing. */
|
|
6
|
+
export const MAX_ENTRIES = 300000;
|
|
7
|
+
export const stamp = (file) => {
|
|
8
|
+
try {
|
|
9
|
+
const s = fs.lstatSync(file);
|
|
10
|
+
return s.isFile() ? [s.size, Math.round(s.mtimeMs)] : [-1, -1];
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [-1, -1];
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const sameContent = (a, b) => {
|
|
17
|
+
const hash = (f) => crypto.createHash('sha256').update(fs.readFileSync(f)).digest('hex');
|
|
18
|
+
try {
|
|
19
|
+
return fs.statSync(a).size === fs.statSync(b).size && hash(a) === hash(b);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
/** A path from an event or the manifest: relative, forward slashes, no way out of the root. */
|
|
26
|
+
export const safeRel = (rel) => {
|
|
27
|
+
const clean = rel.replace(/\\/g, '/').replace(/^\/+/, '');
|
|
28
|
+
if (!clean || clean.length > 1000 || clean.split('/').some((p) => p === '..' || p === '' || p.includes(':')))
|
|
29
|
+
return null;
|
|
30
|
+
return clean;
|
|
31
|
+
};
|
|
@@ -25,6 +25,7 @@ export declare class WorkspaceView {
|
|
|
25
25
|
private readonly o;
|
|
26
26
|
readonly rules: IgnoreRules;
|
|
27
27
|
private seen;
|
|
28
|
+
private readonly stateFile;
|
|
28
29
|
constructor(o: ViewOptions);
|
|
29
30
|
/** Where a project's view and its sync state live: <storage>\views\<id> and <storage>\views\<id>.json. */
|
|
30
31
|
static pathsFor(storageRoot: string, host: string): ViewPaths;
|