windows-development-sandbox 1.5.0 → 1.9.0
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/README.md +1 -0
- package/config.example.json +27 -1
- package/dist/app/context.d.ts +8 -0
- package/dist/app/context.js +12 -0
- package/dist/app/features/defs.d.ts +322 -0
- package/dist/app/features/defs.js +28 -0
- package/dist/app/features/sandbox/index.d.ts +2 -0
- package/dist/app/features/sandbox/index.js +3 -0
- package/dist/app/features/sandbox/sandbox.def.d.ts +193 -0
- package/dist/app/features/sandbox/sandbox.def.js +245 -0
- package/dist/app/features/sandbox/sandbox.run.d.ts +72 -0
- package/dist/app/features/sandbox/sandbox.run.js +98 -0
- package/dist/app/features/sessions/index.d.ts +2 -0
- package/dist/app/features/sessions/index.js +3 -0
- package/dist/app/features/sessions/sessions.def.d.ts +141 -0
- package/dist/app/features/sessions/sessions.def.js +176 -0
- package/dist/app/features/sessions/sessions.run.d.ts +39 -0
- package/dist/app/features/sessions/sessions.run.js +58 -0
- package/dist/{cli/menu/settings/categories.d.ts → app/features/settings/categories.def.d.ts} +4 -0
- package/dist/{cli/menu/settings/categories.js → app/features/settings/categories.def.js} +40 -46
- package/dist/app/features/settings/index.d.ts +5 -0
- package/dist/app/features/settings/index.js +6 -0
- package/dist/{cli/menu/settings/config-file.d.ts → app/features/settings/settings-file.d.ts} +1 -1
- package/dist/{cli/menu/settings/config-file.js → app/features/settings/settings-file.js} +1 -1
- package/dist/app/features/settings/settings-rows.d.ts +35 -0
- package/dist/app/features/settings/settings-rows.js +94 -0
- package/dist/app/features/settings/settings.def.d.ts +157 -0
- package/dist/app/features/settings/settings.def.js +179 -0
- package/dist/app/features/settings/settings.run.d.ts +67 -0
- package/dist/app/features/settings/settings.run.js +84 -0
- package/dist/app/kernel/define.d.ts +143 -0
- package/dist/app/kernel/define.js +42 -0
- package/dist/app/kernel/errors.d.ts +34 -0
- package/dist/app/kernel/errors.js +45 -0
- package/dist/app/kernel/fields.d.ts +70 -0
- package/dist/app/kernel/fields.js +243 -0
- package/dist/app/kernel/index.d.ts +8 -0
- package/dist/app/kernel/index.js +10 -0
- package/dist/app/kernel/io.d.ts +193 -0
- package/dist/app/kernel/io.js +126 -0
- package/dist/app/kernel/rpc.d.ts +156 -0
- package/dist/app/kernel/rpc.js +47 -0
- package/dist/{cli/menu/settings → app/kernel}/schema-node.d.ts +9 -0
- package/dist/{cli/menu/settings → app/kernel}/schema-node.js +26 -0
- package/dist/app/kernel/text.d.ts +6 -0
- package/dist/app/kernel/text.js +57 -0
- package/dist/app/kernel/view.d.ts +146 -0
- package/dist/app/kernel/view.js +28 -0
- package/dist/app/registry.d.ts +10 -0
- package/dist/app/registry.js +50 -0
- package/dist/cli/args.d.ts +18 -2
- package/dist/cli/args.js +101 -24
- package/dist/cli/commands/accounts.js +45 -17
- package/dist/cli/commands/context.d.ts +2 -0
- package/dist/cli/commands/context.js +9 -2
- package/dist/cli/commands/data/clean.js +32 -9
- package/dist/cli/commands/engine.d.ts +2 -0
- package/dist/cli/commands/engine.js +60 -0
- package/dist/cli/commands/index.d.ts +2 -1
- package/dist/cli/commands/index.js +2 -1
- package/dist/cli/commands/launch/add-root.d.ts +3 -2
- package/dist/cli/commands/launch/add-root.js +11 -10
- package/dist/cli/commands/launch/launch.js +102 -9
- package/dist/cli/commands/launch/prepare.js +6 -4
- package/dist/cli/commands/launch/running.js +2 -1
- package/dist/cli/commands/launch/summary.d.ts +2 -0
- package/dist/cli/commands/maintenance/audit.js +1 -1
- package/dist/cli/commands/maintenance/clean.d.ts +1 -1
- package/dist/cli/commands/maintenance/clean.js +17 -3
- package/dist/cli/commands/maintenance/config-share.d.ts +12 -0
- package/dist/cli/commands/maintenance/config-share.js +80 -0
- package/dist/cli/commands/maintenance/config.d.ts +1 -1
- package/dist/cli/commands/maintenance/config.js +38 -10
- package/dist/cli/commands/maintenance/doctor.d.ts +1 -1
- package/dist/cli/commands/maintenance/doctor.js +2 -4
- package/dist/cli/commands/maintenance/logs.js +14 -0
- package/dist/cli/commands/maintenance/migrate.d.ts +2 -1
- package/dist/cli/commands/maintenance/migrate.js +19 -4
- package/dist/cli/commands/maintenance/sync.js +2 -0
- package/dist/cli/commands/maintenance/update.d.ts +2 -0
- package/dist/cli/commands/maintenance/update.js +27 -4
- package/dist/cli/commands/projects/here.js +12 -7
- package/dist/cli/commands/projects/projects.js +26 -17
- package/dist/cli/commands/registry.js +10 -7
- package/dist/cli/commands/repair/checks/agents.d.ts +2 -0
- package/dist/cli/commands/repair/checks/agents.js +70 -0
- package/dist/cli/commands/repair/checks/common.d.ts +8 -0
- package/dist/cli/commands/repair/checks/common.js +22 -0
- package/dist/cli/commands/repair/checks/contained.d.ts +2 -0
- package/dist/cli/commands/repair/checks/contained.js +139 -0
- package/dist/cli/commands/repair/checks/data.d.ts +2 -0
- package/dist/cli/commands/repair/checks/data.js +241 -0
- package/dist/cli/commands/repair/checks/hcs.d.ts +7 -0
- package/dist/cli/commands/repair/checks/hcs.js +28 -0
- package/dist/cli/commands/repair/checks/index.d.ts +2 -0
- package/dist/cli/commands/repair/checks/index.js +24 -0
- package/dist/cli/commands/repair/checks/install.d.ts +5 -0
- package/dist/cli/commands/repair/checks/install.js +318 -0
- package/dist/cli/commands/repair/checks/machine.d.ts +2 -0
- package/dist/cli/commands/repair/checks/machine.js +232 -0
- package/dist/cli/commands/repair/checks/network.d.ts +6 -0
- package/dist/cli/commands/repair/checks/network.js +60 -0
- package/dist/cli/commands/repair/checks/pc.d.ts +4 -0
- package/dist/cli/commands/repair/checks/pc.js +86 -0
- package/dist/cli/commands/repair/checks/sandbox.d.ts +2 -0
- package/dist/cli/commands/repair/checks/sandbox.js +282 -0
- package/dist/cli/commands/repair/checks/settings.d.ts +2 -0
- package/dist/cli/commands/repair/checks/settings.js +169 -0
- package/dist/cli/commands/repair/checks/vpn.d.ts +2 -0
- package/dist/cli/commands/repair/checks/vpn.js +78 -0
- package/dist/cli/commands/repair/engine.d.ts +32 -0
- package/dist/cli/commands/repair/engine.js +127 -0
- package/dist/cli/commands/repair/env.d.ts +7 -0
- package/dist/cli/commands/repair/env.js +50 -0
- package/dist/cli/commands/repair/index.d.ts +1 -9
- package/dist/cli/commands/repair/index.js +2 -54
- package/dist/cli/commands/repair/log.d.ts +17 -0
- package/dist/cli/commands/repair/log.js +82 -0
- package/dist/cli/commands/repair/printer.d.ts +32 -0
- package/dist/cli/commands/repair/printer.js +132 -0
- package/dist/cli/commands/repair/run.d.ts +33 -0
- package/dist/cli/commands/repair/run.js +133 -0
- package/dist/cli/commands/repair/types.d.ts +97 -9
- package/dist/cli/commands/repair/types.js +11 -7
- package/dist/cli/commands/resume.js +2 -2
- package/dist/cli/commands/sessions/index.d.ts +0 -4
- package/dist/cli/commands/sessions/index.js +3 -7
- package/dist/cli/commands/setup/index.d.ts +5 -0
- package/dist/cli/commands/setup/index.js +25 -1
- package/dist/cli/commands/shared-use.d.ts +5 -2
- package/dist/cli/commands/shared-use.js +11 -8
- package/dist/cli/commands/storage/contained.d.ts +3 -0
- package/dist/cli/commands/storage/contained.js +179 -0
- package/dist/cli/commands/storage/index.d.ts +2 -0
- package/dist/cli/commands/storage/index.js +2 -0
- package/dist/cli/commands/storage/offer.d.ts +3 -0
- package/dist/cli/commands/storage/offer.js +91 -0
- package/dist/cli/commands/storage/storage.d.ts +8 -0
- package/dist/cli/commands/storage/storage.js +179 -0
- package/dist/cli/commands/user-config.js +2 -2
- package/dist/cli/commands/vpn.d.ts +4 -0
- package/dist/cli/commands/vpn.js +91 -0
- package/dist/cli/commands/web.d.ts +4 -0
- package/dist/cli/commands/web.js +97 -0
- package/dist/cli/history.js +1 -1
- package/dist/cli/index.js +48 -4
- package/dist/cli/manifest.d.ts +339 -97
- package/dist/cli/manifest.js +222 -67
- package/dist/cli/menu/add-agent.d.ts +47 -0
- package/dist/cli/menu/add-agent.js +168 -0
- package/dist/cli/menu/apps.d.ts +38 -3
- package/dist/cli/menu/apps.js +80 -5
- package/dist/cli/menu/command-fields.d.ts +18 -0
- package/dist/cli/menu/command-fields.js +61 -0
- package/dist/cli/menu/command-form.d.ts +22 -0
- package/dist/cli/menu/command-form.js +169 -46
- package/dist/cli/menu/data-folder.d.ts +18 -0
- package/dist/cli/menu/data-folder.js +99 -0
- package/dist/cli/menu/io-menu.d.ts +29 -0
- package/dist/cli/menu/io-menu.js +126 -0
- package/dist/cli/menu/live.d.ts +27 -0
- package/dist/cli/menu/live.js +69 -0
- package/dist/cli/menu/memory.d.ts +19 -0
- package/dist/cli/menu/memory.js +53 -0
- package/dist/cli/menu/menu.d.ts +11 -2
- package/dist/cli/menu/menu.js +36 -15
- package/dist/cli/menu/pages/accounts-page.js +55 -24
- package/dist/cli/menu/pages/agents-page.d.ts +68 -0
- package/dist/cli/menu/pages/agents-page.js +345 -0
- package/dist/cli/menu/pages/apps-page.d.ts +3 -1
- package/dist/cli/menu/pages/apps-page.js +20 -4
- package/dist/cli/menu/pages/list-page.d.ts +43 -3
- package/dist/cli/menu/pages/list-page.js +146 -12
- package/dist/cli/menu/pages/maintenance-page.d.ts +9 -5
- package/dist/cli/menu/pages/maintenance-page.js +172 -85
- package/dist/cli/menu/pages/sandbox-page.d.ts +7 -6
- package/dist/cli/menu/pages/sandbox-page.js +117 -120
- package/dist/cli/menu/pages/scopes.d.ts +1 -1
- package/dist/cli/menu/pages/sessions-page.d.ts +6 -8
- package/dist/cli/menu/pages/sessions-page.js +22 -75
- package/dist/cli/menu/pages/settings-page.d.ts +10 -14
- package/dist/cli/menu/pages/settings-page.js +95 -102
- package/dist/cli/menu/render-view.d.ts +28 -0
- package/dist/cli/menu/render-view.js +112 -0
- package/dist/cli/menu/settings/ask-path.d.ts +14 -0
- package/dist/cli/menu/settings/ask-path.js +14 -0
- package/dist/cli/menu/settings/collections/collection-editor.d.ts +8 -2
- package/dist/cli/menu/settings/collections/collection-editor.js +12 -8
- package/dist/cli/menu/settings/collections/map-editor.js +5 -1
- package/dist/cli/menu/settings/collections/object-list-editor.js +2 -2
- package/dist/cli/menu/settings/collections/object-map-editor.js +2 -2
- package/dist/cli/menu/settings/collections/string-list-editor.d.ts +10 -1
- package/dist/cli/menu/settings/collections/string-list-editor.js +23 -0
- package/dist/cli/menu/settings/draft.d.ts +1 -1
- package/dist/cli/menu/settings/format.d.ts +1 -3
- package/dist/cli/menu/settings/format.js +6 -36
- package/dist/cli/menu/settings/index.d.ts +1 -3
- package/dist/cli/menu/settings/index.js +3 -3
- package/dist/cli/menu/settings/object-editor.d.ts +6 -2
- package/dist/cli/menu/settings/object-editor.js +15 -4
- package/dist/cli/menu/settings/share.d.ts +36 -0
- package/dist/cli/menu/settings/share.js +131 -0
- package/dist/cli/menu/settings/value-editor.d.ts +10 -1
- package/dist/cli/menu/settings/value-editor.js +99 -63
- package/dist/cli/menu/several.js +7 -5
- package/dist/cli/menu/share-settings.d.ts +21 -0
- package/dist/cli/menu/share-settings.js +112 -0
- package/dist/cli/menu/shell.d.ts +53 -10
- package/dist/cli/menu/shell.js +115 -10
- package/dist/cli/menu/views.d.ts +7 -0
- package/dist/cli/menu/views.js +11 -0
- package/dist/cli/menu/vpn-login.d.ts +16 -0
- package/dist/cli/menu/vpn-login.js +74 -0
- package/dist/cli/operations/handler.d.ts +6 -0
- package/dist/cli/operations/handler.js +61 -0
- package/dist/cli/operations/index.d.ts +4 -0
- package/dist/cli/operations/index.js +5 -0
- package/dist/cli/operations/input.d.ts +6 -0
- package/dist/cli/operations/input.js +37 -0
- package/dist/cli/operations/io-cli.d.ts +7 -0
- package/dist/cli/operations/io-cli.js +62 -0
- package/dist/cli/operations/spec.d.ts +18 -0
- package/dist/cli/operations/spec.js +108 -0
- package/dist/cli/output/colors.d.ts +2 -2
- package/dist/cli/output/colors.js +2 -11
- package/dist/cli/output/index.d.ts +1 -0
- package/dist/cli/output/index.js +1 -0
- package/dist/cli/output/print.d.ts +5 -1
- package/dist/cli/output/print.js +15 -4
- package/dist/cli/output/progress.d.ts +15 -0
- package/dist/cli/output/progress.js +44 -0
- package/dist/cli/output/render-view.d.ts +4 -0
- package/dist/cli/output/render-view.js +63 -0
- package/dist/cli/services/accounts-service.d.ts +2 -0
- package/dist/cli/services/accounts-service.js +2 -2
- package/dist/cli/services/agent-commands-service.d.ts +2 -0
- package/dist/cli/services/agent-commands-service.js +11 -2
- package/dist/cli/services/health-service.d.ts +0 -6
- package/dist/cli/services/health-service.js +5 -42
- package/dist/cli/services/index.d.ts +3 -1
- package/dist/cli/services/index.js +3 -1
- package/dist/cli/services/logs-service.js +4 -3
- package/dist/cli/services/migrate-service.js +1 -1
- package/dist/cli/services/update-service.d.ts +2 -0
- package/dist/cli/services/update-service.js +13 -6
- package/dist/cli/services/vpn-service.d.ts +28 -0
- package/dist/cli/services/vpn-service.js +46 -0
- package/dist/cli/services/web-service.d.ts +22 -0
- package/dist/cli/services/web-service.js +111 -0
- package/dist/cli/tui/app.d.ts +12 -4
- package/dist/cli/tui/app.js +38 -9
- package/dist/cli/tui/dialogs/path-listing.d.ts +43 -0
- package/dist/cli/tui/dialogs/path-listing.js +127 -0
- package/dist/cli/tui/dialogs/path-picker.d.ts +67 -0
- package/dist/cli/tui/dialogs/path-picker.js +423 -0
- package/dist/cli/tui/dialogs/text-screen.d.ts +6 -0
- package/dist/cli/tui/dialogs/text-screen.js +10 -3
- package/dist/cli/tui/frame.d.ts +7 -10
- package/dist/cli/tui/frame.js +19 -10
- package/dist/cli/tui/index.d.ts +4 -3
- package/dist/cli/tui/index.js +2 -1
- package/dist/cli/tui/list/list-screen.d.ts +28 -2
- package/dist/cli/tui/list/list-screen.js +130 -66
- package/dist/cli/tui/list/list-types.d.ts +10 -4
- package/dist/cli/tui/nav.d.ts +29 -0
- package/dist/cli/tui/nav.js +67 -0
- package/dist/cli/tui/terminal.d.ts +7 -0
- package/dist/cli/tui/terminal.js +30 -10
- package/dist/cli/validate.d.ts +1 -1
- package/dist/cli/validate.js +3 -3
- package/dist/cli/version.d.ts +2 -0
- package/dist/cli/version.js +11 -0
- package/dist/core/config/defaults.js +13 -1
- package/dist/core/config/loader.js +12 -2
- package/dist/core/local-config/overrides.js +1 -0
- package/dist/core/prompt.d.ts +19 -0
- package/dist/core/prompt.js +43 -3
- package/dist/core/schema/common.d.ts +6 -0
- package/dist/core/schema/common.js +8 -0
- package/dist/core/schema/config.d.ts +36 -0
- package/dist/core/schema/config.js +26 -2
- package/dist/core/schema/harness.d.ts +2 -0
- package/dist/core/schema/harness.js +13 -2
- package/dist/core/schema/index.d.ts +3 -1
- package/dist/core/schema/index.js +3 -1
- package/dist/core/schema/profile.d.ts +1 -0
- package/dist/core/schema/profile.js +3 -0
- package/dist/core/schema/redact.d.ts +13 -0
- package/dist/core/schema/redact.js +75 -0
- package/dist/core/schema/sandbox.d.ts +6 -0
- package/dist/core/schema/sandbox.js +21 -3
- package/dist/core/schema/vpn.d.ts +18 -0
- package/dist/core/schema/vpn.js +22 -0
- package/dist/core/schema/web.d.ts +6 -0
- package/dist/core/schema/web.js +14 -0
- package/dist/core/types.d.ts +44 -0
- package/dist/core/util/fs.d.ts +2 -0
- package/dist/core/util/fs.js +9 -0
- package/dist/core/util/index.d.ts +1 -1
- package/dist/core/util/index.js +1 -1
- package/dist/guest/agents/agent-files.d.ts +54 -0
- package/dist/guest/agents/agent-files.js +67 -0
- package/dist/guest/agents/agent-installer.js +2 -9
- package/dist/guest/agents/local-state.d.ts +14 -0
- package/dist/guest/agents/local-state.js +218 -0
- package/dist/guest/agents/sbx-agent.d.ts +2 -0
- package/dist/guest/agents/sbx-agent.js +35 -0
- package/dist/guest/boot/boot.d.ts +4 -0
- package/dist/guest/boot/boot.js +51 -11
- package/dist/guest/daemon/daemon.js +8 -1
- package/dist/guest/daemon/exec.js +2 -1
- package/dist/guest/daemon/idle-shutdown.js +2 -0
- package/dist/guest/daemon/sessions.d.ts +5 -0
- package/dist/guest/daemon/sessions.js +20 -3
- package/dist/guest/entries/agent.d.ts +1 -0
- package/dist/guest/entries/agent.js +10 -0
- package/dist/guest/entries/daemon.js +5 -0
- package/dist/guest/governor/decide.d.ts +61 -0
- package/dist/guest/governor/decide.js +182 -0
- package/dist/guest/governor/governor.d.ts +42 -0
- package/dist/guest/governor/governor.js +214 -0
- package/dist/guest/governor/index.d.ts +2 -0
- package/dist/guest/governor/index.js +2 -0
- package/dist/guest/runtime/csc.d.ts +2 -0
- package/dist/guest/runtime/csc.js +2 -0
- package/dist/guest/runtime/secrets.d.ts +12 -0
- package/dist/guest/runtime/secrets.js +63 -0
- package/dist/guest/sessions/viewer.js +3 -1
- package/dist/guest/setup/claude-profile.d.ts +2 -1
- package/dist/guest/setup/claude-profile.js +12 -1
- package/dist/guest/setup/environment.d.ts +6 -0
- package/dist/guest/setup/environment.js +56 -6
- package/dist/guest/setup/path-plan.d.ts +32 -0
- package/dist/guest/setup/path-plan.js +67 -0
- package/dist/guest/setup/shell-path.d.ts +1 -0
- package/dist/guest/setup/shell-path.js +22 -0
- package/dist/guest/toolchains/languages/python.js +1 -1
- package/dist/guest/toolchains/native/rust-extras.js +4 -2
- package/dist/guest/toolchains/runtimes.js +2 -2
- package/dist/guest/vpn/index.d.ts +1 -0
- package/dist/guest/vpn/index.js +1 -0
- package/dist/guest/vpn/openvpn.d.ts +9 -0
- package/dist/guest/vpn/openvpn.js +47 -0
- package/dist/guest/vpn/tunnel.d.ts +17 -0
- package/dist/guest/vpn/tunnel.js +78 -0
- package/dist/guest/vpn/vpn.d.ts +6 -0
- package/dist/guest/vpn/vpn.js +174 -0
- package/dist/guest/vpn/wireguard.d.ts +32 -0
- package/dist/guest/vpn/wireguard.js +132 -0
- package/dist/host/agent-commands/commands.d.ts +4 -0
- package/dist/host/agent-commands/commands.js +31 -7
- package/dist/host/audit/log.d.ts +1 -1
- package/dist/host/channel/attach.d.ts +6 -2
- package/dist/host/channel/attach.js +6 -3
- package/dist/host/channel/channel.d.ts +9 -0
- package/dist/host/channel/channel.js +30 -2
- package/dist/host/engines/engine.d.ts +12 -0
- package/dist/host/engines/engine.js +1 -0
- package/dist/host/engines/hcs/check.d.ts +25 -0
- package/dist/host/engines/hcs/check.js +95 -0
- package/dist/host/engines/hcs/documents.d.ts +44 -0
- package/dist/host/engines/hcs/documents.js +155 -0
- package/dist/host/engines/hcs/engine.d.ts +39 -0
- package/dist/host/engines/hcs/engine.js +171 -0
- package/dist/host/engines/hcs/helper.d.ts +43 -0
- package/dist/host/engines/hcs/helper.js +173 -0
- package/dist/host/engines/hcs/images.d.ts +37 -0
- package/dist/host/engines/hcs/images.js +152 -0
- package/dist/host/engines/index.d.ts +7 -0
- package/dist/host/engines/index.js +5 -0
- package/dist/host/engines/registry.d.ts +16 -0
- package/dist/host/engines/registry.js +30 -0
- package/dist/host/engines/types.d.ts +58 -0
- package/dist/host/engines/types.js +1 -0
- package/dist/host/engines/windows-sandbox/engine.d.ts +16 -0
- package/dist/host/engines/windows-sandbox/engine.js +63 -0
- package/dist/host/engines/windows-sandbox/wsb-text.d.ts +2 -0
- package/dist/host/engines/windows-sandbox/wsb-text.js +29 -0
- package/dist/host/health/acl-read.d.ts +17 -0
- package/dist/host/health/acl-read.js +45 -0
- package/dist/host/health/config-backup.d.ts +11 -0
- package/dist/host/health/config-backup.js +73 -0
- package/dist/host/health/index.d.ts +6 -0
- package/dist/host/health/index.js +7 -0
- package/dist/host/health/install-state.d.ts +33 -0
- package/dist/host/health/install-state.js +110 -0
- package/dist/host/health/path-copies.d.ts +32 -0
- package/dist/host/health/path-copies.js +82 -0
- package/dist/host/health/stale.d.ts +45 -0
- package/dist/host/health/stale.js +120 -0
- package/dist/host/health/system.d.ts +37 -0
- package/dist/host/health/system.js +87 -0
- package/dist/host/install/copies.d.ts +13 -0
- package/dist/host/install/copies.js +63 -0
- package/dist/host/install/index.d.ts +1 -0
- package/dist/host/install/index.js +1 -0
- package/dist/host/launch/generate.d.ts +5 -1
- package/dist/host/launch/generate.js +73 -7
- package/dist/host/launch/index.d.ts +3 -1
- package/dist/host/launch/index.js +3 -1
- package/dist/host/launch/launch-plan.d.ts +13 -0
- package/dist/host/launch/launch-plan.js +26 -0
- package/dist/host/launch/mappings.js +2 -1
- package/dist/host/launch/risk-notes.d.ts +10 -0
- package/dist/host/launch/risk-notes.js +18 -0
- package/dist/host/launch/session-file.d.ts +2 -0
- package/dist/host/launch/session-file.js +11 -2
- package/dist/host/launch/stage.js +1 -1
- package/dist/host/launch/wsb-file.d.ts +28 -4
- package/dist/host/launch/wsb-file.js +61 -42
- package/dist/host/life/crash-report.d.ts +27 -1
- package/dist/host/life/crash-report.js +173 -7
- package/dist/host/life/host-memory.d.ts +40 -0
- package/dist/host/life/host-memory.js +137 -0
- package/dist/host/life/index.d.ts +2 -0
- package/dist/host/life/index.js +2 -0
- package/dist/host/life/stop-events.d.ts +2 -0
- package/dist/host/life/stop-events.js +20 -3
- package/dist/host/life/stop-warning.js +1 -1
- package/dist/host/life/watchdog.d.ts +54 -0
- package/dist/host/life/watchdog.js +108 -0
- package/dist/host/migrate/backup.js +3 -0
- package/dist/host/migrate/migrations/config-file.d.ts +2 -0
- package/dist/host/migrate/migrations/config-file.js +7 -0
- package/dist/host/migrate/migrations/follow-machine-storage.js +9 -1
- package/dist/host/migrate/migrations/pin-storage-root.d.ts +4 -0
- package/dist/host/migrate/migrations/pin-storage-root.js +46 -0
- package/dist/host/migrate/migrations/unpin-config-defaults.js +4 -1
- package/dist/host/migrate/registry.js +2 -1
- package/dist/host/native.d.ts +3 -2
- package/dist/host/native.js +22 -3
- package/dist/host/profile/accounts.d.ts +25 -1
- package/dist/host/profile/accounts.js +96 -13
- package/dist/host/profile/agent-accounts.d.ts +5 -1
- package/dist/host/profile/agent-accounts.js +35 -5
- package/dist/host/profile/claude-login.js +3 -2
- package/dist/host/profile/index.d.ts +2 -1
- package/dist/host/profile/index.js +1 -0
- package/dist/host/profile/plugin-share.d.ts +26 -0
- package/dist/host/profile/plugin-share.js +146 -0
- package/dist/host/projects/join.d.ts +7 -1
- package/dist/host/projects/join.js +21 -4
- package/dist/host/projects/registry.d.ts +16 -10
- package/dist/host/projects/registry.js +74 -6
- package/dist/host/sandbox/contained-deps.d.ts +2 -0
- package/dist/host/sandbox/contained-deps.js +17 -0
- package/dist/host/sandbox/index.d.ts +2 -0
- package/dist/host/sandbox/index.js +2 -0
- package/dist/host/sandbox/platform.d.ts +4 -0
- package/dist/host/sandbox/platform.js +23 -4
- package/dist/host/sandbox/tasklist.d.ts +13 -0
- package/dist/host/sandbox/tasklist.js +47 -0
- package/dist/host/secrets/index.d.ts +2 -0
- package/dist/host/secrets/index.js +2 -0
- package/dist/host/secrets/launch-secrets.d.ts +17 -0
- package/dist/host/secrets/launch-secrets.js +94 -0
- package/dist/host/secrets/secret-store.d.ts +25 -0
- package/dist/host/secrets/secret-store.js +89 -0
- package/dist/host/sharing/acl.d.ts +16 -2
- package/dist/host/sharing/acl.js +35 -10
- package/dist/host/sharing/current.js +8 -3
- package/dist/host/sharing/doctor.d.ts +2 -0
- package/dist/host/sharing/doctor.js +44 -0
- package/dist/host/sharing/group-access.d.ts +6 -0
- package/dist/host/sharing/group-access.js +24 -0
- package/dist/host/sharing/index.d.ts +2 -1
- package/dist/host/sharing/index.js +2 -1
- package/dist/host/sharing/lifecycle.d.ts +8 -2
- package/dist/host/sharing/lifecycle.js +16 -7
- package/dist/host/storage/cleanup.d.ts +2 -0
- package/dist/host/storage/cleanup.js +2 -1
- package/dist/host/storage/contained/check.d.ts +9 -0
- package/dist/host/storage/contained/check.js +37 -0
- package/dist/host/storage/contained/contained-storage.d.ts +66 -0
- package/dist/host/storage/contained/contained-storage.js +168 -0
- package/dist/host/storage/contained/disk-port.d.ts +43 -0
- package/dist/host/storage/contained/disk-port.js +122 -0
- package/dist/host/storage/contained/index.d.ts +9 -0
- package/dist/host/storage/contained/index.js +8 -0
- package/dist/host/storage/contained/layout.d.ts +28 -0
- package/dist/host/storage/contained/layout.js +45 -0
- package/dist/host/storage/contained/resolve.d.ts +4 -0
- package/dist/host/storage/contained/resolve.js +30 -0
- package/dist/host/storage/contained/setting.d.ts +1 -0
- package/dist/host/storage/contained/setting.js +5 -0
- package/dist/host/storage/contained/state.d.ts +89 -0
- package/dist/host/storage/contained/state.js +166 -0
- package/dist/host/storage/contained/transfer.d.ts +24 -0
- package/dist/host/storage/contained/transfer.js +121 -0
- package/dist/host/storage/history.d.ts +21 -0
- package/dist/host/storage/history.js +49 -0
- package/dist/host/storage/index.d.ts +6 -0
- package/dist/host/storage/index.js +6 -0
- package/dist/host/storage/move.d.ts +95 -0
- package/dist/host/storage/move.js +384 -0
- package/dist/host/storage/offer.d.ts +11 -0
- package/dist/host/storage/offer.js +36 -0
- package/dist/host/storage/providers/contained.d.ts +15 -0
- package/dist/host/storage/providers/contained.js +39 -0
- package/dist/host/storage/providers/folder.d.ts +12 -0
- package/dist/host/storage/providers/folder.js +20 -0
- package/dist/host/storage/providers/index.d.ts +4 -0
- package/dist/host/storage/providers/index.js +3 -0
- package/dist/host/storage/providers/registry.d.ts +9 -0
- package/dist/host/storage/providers/registry.js +14 -0
- package/dist/host/storage/providers/types.d.ts +33 -0
- package/dist/host/storage/providers/types.js +1 -0
- package/dist/host/storage/root.d.ts +18 -0
- package/dist/host/storage/root.js +77 -0
- package/dist/host/tools/conpty.js +3 -2
- package/dist/host/tools/windows-terminal.d.ts +2 -0
- package/dist/host/tools/windows-terminal.js +31 -12
- package/dist/host/update/index.d.ts +1 -1
- package/dist/host/update/index.js +1 -1
- package/dist/host/update/notice.d.ts +2 -0
- package/dist/host/update/notice.js +13 -1
- package/dist/host/update/update-state.d.ts +6 -0
- package/dist/host/update/update-state.js +2 -0
- package/dist/host/update/updater.d.ts +19 -0
- package/dist/host/update/updater.js +88 -12
- package/dist/host/vpn/index.d.ts +4 -0
- package/dist/host/vpn/index.js +4 -0
- package/dist/host/vpn/login.d.ts +24 -0
- package/dist/host/vpn/login.js +79 -0
- package/dist/host/vpn/nordvpn.d.ts +21 -0
- package/dist/host/vpn/nordvpn.js +77 -0
- package/dist/host/vpn/prepare.d.ts +19 -0
- package/dist/host/vpn/prepare.js +138 -0
- package/dist/host/vpn/status.d.ts +12 -0
- package/dist/host/vpn/status.js +53 -0
- package/dist/host/web/auth.d.ts +38 -0
- package/dist/host/web/auth.js +96 -0
- package/dist/host/web/backend.d.ts +14 -0
- package/dist/host/web/backend.js +1 -0
- package/dist/host/web/bridge.d.ts +27 -0
- package/dist/host/web/bridge.js +144 -0
- package/dist/host/web/browser.d.ts +3 -0
- package/dist/host/web/browser.js +23 -0
- package/dist/host/web/control.d.ts +17 -0
- package/dist/host/web/control.js +67 -0
- package/dist/host/web/index.d.ts +10 -0
- package/dist/host/web/index.js +9 -0
- package/dist/host/web/rpc.d.ts +24 -0
- package/dist/host/web/rpc.js +149 -0
- package/dist/host/web/runner.d.ts +16 -0
- package/dist/host/web/runner.js +44 -0
- package/dist/host/web/server.d.ts +47 -0
- package/dist/host/web/server.js +238 -0
- package/dist/host/web/state.d.ts +20 -0
- package/dist/host/web/state.js +41 -0
- package/dist/host/web/static-files.d.ts +13 -0
- package/dist/host/web/static-files.js +57 -0
- package/dist/runtime/agent.js +27675 -0
- package/dist/runtime/daemon.js +1950 -1122
- package/dist/runtime/db.js +302 -111
- package/dist/runtime/main.js +1560 -275
- package/dist/runtime/netproxy.js +168 -8
- package/dist/runtime/view.js +186 -13
- package/dist/selftest/accounts.test.js +40 -0
- package/dist/selftest/agent-paths.test.d.ts +2 -0
- package/dist/selftest/agent-paths.test.js +125 -0
- package/dist/selftest/app.test.d.ts +2 -0
- package/dist/selftest/app.test.js +324 -0
- package/dist/selftest/channel.test.js +18 -0
- package/dist/selftest/cli.test.js +35 -4
- package/dist/selftest/config.test.js +59 -0
- package/dist/selftest/contained.test.d.ts +2 -0
- package/dist/selftest/contained.test.js +544 -0
- package/dist/selftest/credentials.test.d.ts +2 -0
- package/dist/selftest/credentials.test.js +198 -0
- package/dist/selftest/engine.test.d.ts +2 -0
- package/dist/selftest/engine.test.js +127 -0
- package/dist/selftest/generate.test.js +1 -1
- package/dist/selftest/hcs.test.d.ts +2 -0
- package/dist/selftest/hcs.test.js +482 -0
- package/dist/selftest/health.test.d.ts +2 -0
- package/dist/selftest/health.test.js +470 -0
- package/dist/selftest/heavy-load.test.d.ts +2 -0
- package/dist/selftest/heavy-load.test.js +329 -0
- package/dist/selftest/host-sim.test.js +2 -0
- package/dist/selftest/index.js +31 -0
- package/dist/selftest/layout.test.js +14 -0
- package/dist/selftest/menu-perf.test.d.ts +2 -0
- package/dist/selftest/menu-perf.test.js +248 -0
- package/dist/selftest/menu-screens.d.ts +7 -0
- package/dist/selftest/menu-screens.js +68 -17
- package/dist/selftest/menu.test.js +603 -22
- package/dist/selftest/migrate.test.js +1 -1
- package/dist/selftest/personalization.test.js +3 -1
- package/dist/selftest/projects.test.js +39 -1
- package/dist/selftest/shared-use.test.js +64 -2
- package/dist/selftest/sharing.test.js +50 -1
- package/dist/selftest/storage.test.d.ts +2 -0
- package/dist/selftest/storage.test.js +363 -0
- package/dist/selftest/support/engine-cases.d.ts +8 -0
- package/dist/selftest/support/engine-cases.js +65 -0
- package/dist/selftest/support/engine-golden.d.ts +3 -0
- package/dist/selftest/support/engine-golden.js +66 -0
- package/dist/selftest/support/fixtures.d.ts +20 -0
- package/dist/selftest/support/hcs-probes.d.ts +17 -0
- package/dist/selftest/support/hcs-probes.js +41 -0
- package/dist/selftest/support/releases.js +1 -1
- package/dist/selftest/toolchains.test.js +21 -0
- package/dist/selftest/update-service.test.js +87 -3
- package/dist/selftest/vpn.test.d.ts +2 -0
- package/dist/selftest/vpn.test.js +412 -0
- package/dist/selftest/web.test.d.ts +2 -0
- package/dist/selftest/web.test.js +402 -0
- package/dist/shared/apps/catalogue.js +31 -0
- package/dist/shared/channel/index.d.ts +1 -0
- package/dist/shared/channel/index.js +1 -0
- package/dist/shared/channel/run-dir.d.ts +9 -1
- package/dist/shared/channel/run-dir.js +18 -1
- package/dist/shared/channel/schema.d.ts +53 -0
- package/dist/shared/channel/schema.js +38 -0
- package/dist/shared/channel/secrets.d.ts +29 -0
- package/dist/shared/channel/secrets.js +50 -0
- package/dist/shared/memory/index.d.ts +1 -0
- package/dist/shared/memory/index.js +1 -0
- package/dist/shared/memory/policy.d.ts +33 -0
- package/dist/shared/memory/policy.js +55 -0
- package/dist/shared/pty/output-filter.d.ts +14 -1
- package/dist/shared/pty/output-filter.js +22 -4
- package/dist/shared/pty/terminal.d.ts +4 -1
- package/dist/shared/pty/terminal.js +4 -2
- package/dist/shared/system.d.ts +1 -0
- package/dist/shared/system.js +1 -0
- package/dist/shared/vpn/download.d.ts +29 -0
- package/dist/shared/vpn/download.js +30 -0
- package/dist/shared/vpn/kill-switch.d.ts +18 -0
- package/dist/shared/vpn/kill-switch.js +81 -0
- package/dist/shared/vpn/ovpn.d.ts +23 -0
- package/dist/shared/vpn/ovpn.js +244 -0
- package/dist/shared/vpn/wireguard.d.ts +51 -0
- package/dist/shared/vpn/wireguard.js +227 -0
- package/dist/shared/web/index.d.ts +1 -0
- package/dist/shared/web/index.js +1 -0
- package/dist/shared/web/protocol.d.ts +61 -0
- package/dist/shared/web/protocol.js +35 -0
- package/dist/sync/sync-cycle.js +9 -5
- package/dist/sync/sync-state.d.ts +1 -0
- package/dist/sync/sync-state.js +1 -0
- package/dist/sync/watcher.d.ts +13 -0
- package/dist/sync/watcher.js +102 -3
- package/dist/web/index.html +14 -0
- package/dist/web/main-NRRS5O6Z.js +157 -0
- package/dist/web/main-T5DMCHYV.css +1 -0
- package/native/csharp/FolderSecurity.cs +29 -0
- package/native/csharp/HcsHost/AssemblyInfo.cs +14 -0
- package/native/csharp/HcsHost/Guard.cs +100 -0
- package/native/csharp/HcsHost/Hcs.cs +256 -0
- package/native/csharp/HcsHost/Json.cs +78 -0
- package/native/csharp/HcsHost/Program.cs +185 -0
- package/native/csharp/HcsHost/VirtualDisk.cs +95 -0
- package/native/csharp/HostTools/AssemblyInfo.cs +14 -0
- package/native/csharp/HostTools/MemoryStatus.cs +107 -0
- package/native/csharp/HostTools/Program.cs +58 -17
- package/native/scripts/check-contained.ps1 +28 -0
- package/native/scripts/contained-common.ps1 +241 -0
- package/native/scripts/dismount-contained.ps1 +66 -0
- package/native/scripts/memory-status.ps1 +34 -0
- package/native/scripts/mount-contained.ps1 +139 -0
- package/native/scripts/protect-data.ps1 +29 -0
- package/native/scripts/read-folder-sddl.ps1 +10 -0
- package/native/scripts/run-elevated.ps1 +17 -4
- package/native/scripts/set-folder-access.ps1 +49 -7
- package/native/scripts/stop-events.ps1 +23 -8
- package/node_modules/ws/LICENSE +20 -0
- package/node_modules/ws/README.md +548 -0
- package/node_modules/ws/browser.js +8 -0
- package/node_modules/ws/index.js +22 -0
- package/node_modules/ws/lib/buffer-util.js +131 -0
- package/node_modules/ws/lib/constants.js +19 -0
- package/node_modules/ws/lib/event-target.js +292 -0
- package/node_modules/ws/lib/extension.js +203 -0
- package/node_modules/ws/lib/limiter.js +55 -0
- package/node_modules/ws/lib/permessage-deflate.js +530 -0
- package/node_modules/ws/lib/receiver.js +743 -0
- package/node_modules/ws/lib/sender.js +607 -0
- package/node_modules/ws/lib/stream.js +161 -0
- package/node_modules/ws/lib/subprotocol.js +62 -0
- package/node_modules/ws/lib/validation.js +152 -0
- package/node_modules/ws/lib/websocket-server.js +562 -0
- package/node_modules/ws/lib/websocket.js +1421 -0
- package/node_modules/ws/package.json +74 -0
- package/node_modules/ws/wrapper.mjs +21 -0
- package/package.json +22 -5
- package/sandbox/csharp/EnvBroadcast.cs +33 -0
- package/sandbox/csharp/MemGov.cs +398 -0
- package/sandbox/csharp/PathSync.cs +90 -0
- package/sandbox/csharp/PtyHost.cs +111 -5
- package/sandbox/scripts/install-shell-path.ps1 +73 -0
- package/sandbox/scripts/set-machine-environment.ps1 +37 -4
- package/schemas/config.schema.json +136 -7
- package/schemas/sandbox-config.schema.json +17 -4
- package/dist/cli/commands/repair/checks.d.ts +0 -2
- package/dist/cli/commands/repair/checks.js +0 -246
- package/dist/cli/commands/sessions/control.d.ts +0 -4
- package/dist/cli/commands/sessions/control.js +0 -66
- package/dist/cli/commands/sessions/list.d.ts +0 -2
- package/dist/cli/commands/sessions/list.js +0 -45
- package/dist/cli/commands/sessions/status.d.ts +0 -2
- package/dist/cli/commands/sessions/status.js +0 -93
- package/dist/cli/commands/sessions/window.d.ts +0 -3
- package/dist/cli/commands/sessions/window.js +0 -18
- package/dist/cli/menu/pages/start-page.d.ts +0 -43
- package/dist/cli/menu/pages/start-page.js +0 -192
- package/dist/cli/tui/tab-bar.d.ts +0 -9
- package/dist/cli/tui/tab-bar.js +0 -33
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
// The repair checks, in the order they run. Each either confirms all is well, fixes the problem itself, or says what
|
|
2
|
-
// you need to do. Nothing under the data folder is followed through a link.
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { spawnSync } from 'node:child_process';
|
|
6
|
-
import _ from 'lodash';
|
|
7
|
-
import { GB, freeBytesAt, humanBytes } from '../../../core/disk.js';
|
|
8
|
-
import { assertTestWritable } from '../../../shared/test-guard.js';
|
|
9
|
-
import { assertNoLinks, fileExists, isLink, isWin, removeLink } from '../../../core/util/index.js';
|
|
10
|
-
import { SandboxChannel } from '../../../host/channel/index.js';
|
|
11
|
-
import { sandboxFeatureInstalled } from '../../../host/sandbox/index.js';
|
|
12
|
-
import { RunDir } from '../../../shared/channel/index.js';
|
|
13
|
-
import { removeTree } from '../data/remove.js';
|
|
14
|
-
import { deadPidFiles, findHalfInstalled, findLinks, findStagingLeftovers, globalPackages, resolvedVersionsValid, } from './finders.js';
|
|
15
|
-
import { ok, whileRunning } from './types.js';
|
|
16
|
-
function rel(root, p) {
|
|
17
|
-
return path.relative(root, p) || '.';
|
|
18
|
-
}
|
|
19
|
-
/** Fails (throws) unless every folder from the data folder to `p` is real. */
|
|
20
|
-
function guard(env, p) {
|
|
21
|
-
assertNoLinks(path.dirname(env.dataPath), p);
|
|
22
|
-
}
|
|
23
|
-
export const CHECKS = [
|
|
24
|
-
{
|
|
25
|
-
name: 'Config file',
|
|
26
|
-
run: (env) => env.configError
|
|
27
|
-
? {
|
|
28
|
-
status: 'needs-you',
|
|
29
|
-
detail: env.configError.message +
|
|
30
|
-
(env.configError.fix ? ' ' + env.configError.fix : '') +
|
|
31
|
-
' (repair never rewrites your config; built-in defaults were used for the other checks.)',
|
|
32
|
-
}
|
|
33
|
-
: ok(env.ctx.loaded.configPath ? env.ctx.loaded.configPath + ' is valid.' : 'none; using the built-in defaults.'),
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: 'Windows Sandbox feature',
|
|
37
|
-
run: () => sandboxFeatureInstalled()
|
|
38
|
-
? ok('enabled.')
|
|
39
|
-
: {
|
|
40
|
-
status: 'needs-you',
|
|
41
|
-
detail: (isWin ? 'Windows Sandbox is not turned on.' : 'This is not Windows.') +
|
|
42
|
-
' Run: sandbox setup (it checks this PC and offers to turn it on).',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'Links in the data folder',
|
|
47
|
-
run: (env) => {
|
|
48
|
-
if (isLink(env.dataPath))
|
|
49
|
-
return {
|
|
50
|
-
status: 'needs-you',
|
|
51
|
-
detail: env.dataPath +
|
|
52
|
-
' itself is a link or junction. agent-sandbox refuses to work through links; point storage.root at the real folder instead (sandbox config path).',
|
|
53
|
-
};
|
|
54
|
-
// A running sandbox can swap folders for links while we look; only check a stopped one.
|
|
55
|
-
if (env.running)
|
|
56
|
-
return whileRunning;
|
|
57
|
-
const links = findLinks(env.dataPath);
|
|
58
|
-
if (!links.length)
|
|
59
|
-
return ok('none (nothing in ' + env.dataPath + ' points elsewhere).');
|
|
60
|
-
// A link here can only have been made inside the sandbox; it could point at this PC's own files. Remove the link
|
|
61
|
-
// itself, and only if every folder above it is still real.
|
|
62
|
-
for (const link of links) {
|
|
63
|
-
guard(env, path.dirname(link));
|
|
64
|
-
removeLink(link);
|
|
65
|
-
}
|
|
66
|
-
return {
|
|
67
|
-
status: 'fixed',
|
|
68
|
-
detail: 'removed ' +
|
|
69
|
-
links.length +
|
|
70
|
-
' link(s)/junction(s) the sandbox created, without following them: ' +
|
|
71
|
-
links.map((l) => rel(env.dataPath, l)).join(', '),
|
|
72
|
-
};
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'Sandbox run state',
|
|
77
|
-
run: (env) => {
|
|
78
|
-
if (env.running)
|
|
79
|
-
return ok('a sandbox is running; its state is in use.');
|
|
80
|
-
if (isLink(new RunDir(env.dataPath).root)) {
|
|
81
|
-
new SandboxChannel(env.dataPath).reset();
|
|
82
|
-
return { status: 'fixed', detail: 'the run folder was a link; removed the link itself.' };
|
|
83
|
-
}
|
|
84
|
-
// The last sandbox's status file is normal after it closes; sessions still marked running or unanswered requests
|
|
85
|
-
// are not.
|
|
86
|
-
const ghosts = new RunDir(env.dataPath)
|
|
87
|
-
.listSessions()
|
|
88
|
-
.filter((s) => s.phase === 'running' || s.phase === 'starting').length;
|
|
89
|
-
const requests = new RunDir(env.dataPath).scanRequests();
|
|
90
|
-
const pending = requests.valid.length + requests.invalid.length;
|
|
91
|
-
if (!ghosts && !pending)
|
|
92
|
-
return ok('clean.');
|
|
93
|
-
new SandboxChannel(env.dataPath).reset();
|
|
94
|
-
return {
|
|
95
|
-
status: 'fixed',
|
|
96
|
-
detail: 'no sandbox is running, but ' +
|
|
97
|
-
_.compact([
|
|
98
|
-
ghosts && ghosts + ' session(s) were still marked running',
|
|
99
|
-
pending && pending + ' request(s) were never answered',
|
|
100
|
-
]).join(' and ') +
|
|
101
|
-
'; cleared the run state so status/attach do not show ghosts.',
|
|
102
|
-
};
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: 'Hidden-window state',
|
|
107
|
-
run: (env) => {
|
|
108
|
-
const file = path.join(env.storageRoot, 'run', 'hidden-windows.json');
|
|
109
|
-
if (!fs.existsSync(file) && !isLink(file))
|
|
110
|
-
return ok('clean.');
|
|
111
|
-
if (env.running)
|
|
112
|
-
return ok('a sandbox is running; kept.');
|
|
113
|
-
assertTestWritable(file);
|
|
114
|
-
fs.rmSync(file, { force: true });
|
|
115
|
-
return {
|
|
116
|
-
status: 'fixed',
|
|
117
|
-
detail: 'removed the saved hidden-window list from a sandbox that is no longer running.',
|
|
118
|
-
};
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
name: 'Sync watcher',
|
|
123
|
-
run: (env) => {
|
|
124
|
-
const dead = deadPidFiles(path.join(env.storageRoot, 'run'));
|
|
125
|
-
if (!dead.length)
|
|
126
|
-
return ok('no stale watcher records.');
|
|
127
|
-
for (const f of dead) {
|
|
128
|
-
assertTestWritable(f);
|
|
129
|
-
fs.rmSync(f, { force: true });
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
status: 'fixed',
|
|
133
|
-
detail: 'removed ' +
|
|
134
|
-
dead.length +
|
|
135
|
-
' record(s) of a history sync watcher that is no longer running (the next launch starts a new one).',
|
|
136
|
-
};
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
name: 'Interrupted downloads',
|
|
141
|
-
run: (env) => {
|
|
142
|
-
if (env.running)
|
|
143
|
-
return whileRunning;
|
|
144
|
-
guard(env, env.toolsDir);
|
|
145
|
-
const found = findStagingLeftovers(env.toolsDir);
|
|
146
|
-
if (!found.length)
|
|
147
|
-
return ok('none.');
|
|
148
|
-
for (const p of found)
|
|
149
|
-
removeTree(p, env.dataPath);
|
|
150
|
-
return {
|
|
151
|
-
status: 'fixed',
|
|
152
|
-
detail: 'removed ' +
|
|
153
|
-
found.length +
|
|
154
|
-
' half-finished download/copy folder(s): ' +
|
|
155
|
-
found.map((p) => rel(env.toolsDir, p)).join(', '),
|
|
156
|
-
};
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: 'Half-installed toolchains',
|
|
161
|
-
run: (env) => {
|
|
162
|
-
if (env.running)
|
|
163
|
-
return whileRunning;
|
|
164
|
-
guard(env, env.toolsDir);
|
|
165
|
-
const found = findHalfInstalled(env.toolsDir);
|
|
166
|
-
if (!found.length)
|
|
167
|
-
return ok('every toolchain folder has its program.');
|
|
168
|
-
for (const f of found)
|
|
169
|
-
removeTree(f.path, env.dataPath);
|
|
170
|
-
return {
|
|
171
|
-
status: 'fixed',
|
|
172
|
-
detail: 'removed ' +
|
|
173
|
-
found.map((f) => rel(env.toolsDir, f.path) + ' (no ' + f.missing + ')').join(', ') +
|
|
174
|
-
'; the next sandbox reinstalls them.',
|
|
175
|
-
};
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
name: 'Resolved versions cache',
|
|
180
|
-
run: (env) => {
|
|
181
|
-
const file = path.join(env.toolsDir, 'resolved-versions.json');
|
|
182
|
-
if (!fs.existsSync(file) && !isLink(file))
|
|
183
|
-
return ok('not created yet.');
|
|
184
|
-
if (env.running)
|
|
185
|
-
return whileRunning;
|
|
186
|
-
guard(env, env.toolsDir);
|
|
187
|
-
if (isLink(file)) {
|
|
188
|
-
removeLink(file);
|
|
189
|
-
return { status: 'fixed', detail: 'removed a link in place of tools\\resolved-versions.json.' };
|
|
190
|
-
}
|
|
191
|
-
if (fs.statSync(file).size < 4 * 1024 * 1024 && resolvedVersionsValid(fs.readFileSync(file, 'utf8')))
|
|
192
|
-
return ok('valid.');
|
|
193
|
-
assertTestWritable(file);
|
|
194
|
-
fs.rmSync(file, { force: true });
|
|
195
|
-
return {
|
|
196
|
-
status: 'fixed',
|
|
197
|
-
detail: 'tools\\resolved-versions.json was damaged; removed it (versions are looked up again on the next start).',
|
|
198
|
-
};
|
|
199
|
-
},
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
name: 'Installed packages',
|
|
203
|
-
run: () => {
|
|
204
|
-
const npmCli = path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');
|
|
205
|
-
if (!fileExists(npmCli))
|
|
206
|
-
return { status: 'skipped', detail: 'npm not found next to this Node (' + npmCli + ').' };
|
|
207
|
-
// cwd = Node's own folder: npm reads .npmrc from the current folder, which could be a sandbox-writable workspace.
|
|
208
|
-
const result = spawnSync(process.execPath, [npmCli, 'ls', '-g', '--json', '--depth=0'], {
|
|
209
|
-
cwd: path.dirname(process.execPath),
|
|
210
|
-
encoding: 'utf8',
|
|
211
|
-
windowsHide: true,
|
|
212
|
-
timeout: 60000,
|
|
213
|
-
maxBuffer: 16 * 1024 * 1024,
|
|
214
|
-
});
|
|
215
|
-
const names = globalPackages(result.stdout ?? '');
|
|
216
|
-
if (!names.length)
|
|
217
|
-
return { status: 'skipped', detail: 'could not read the global npm packages.' };
|
|
218
|
-
if (names.includes('agent-sandbox') && names.includes('windows-development-sandbox'))
|
|
219
|
-
return {
|
|
220
|
-
status: 'needs-you',
|
|
221
|
-
detail: 'the old agent-sandbox package is still installed next to windows-development-sandbox, and their commands clash. Run: npm uninstall -g agent-sandbox',
|
|
222
|
-
};
|
|
223
|
-
return ok(names.includes('agent-sandbox')
|
|
224
|
-
? 'agent-sandbox installed (the old name; fine on its own).'
|
|
225
|
-
: 'no old agent-sandbox package.');
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
name: 'Free disk',
|
|
230
|
-
run: (env) => {
|
|
231
|
-
const free = freeBytesAt(env.storageRoot);
|
|
232
|
-
if (free === null)
|
|
233
|
-
return { status: 'skipped', detail: 'could not check the drive of ' + env.storageRoot };
|
|
234
|
-
if (free >= 20 * GB)
|
|
235
|
-
return ok(humanBytes(free) + ' free.');
|
|
236
|
-
return {
|
|
237
|
-
status: 'warn',
|
|
238
|
-
detail: humanBytes(free) +
|
|
239
|
-
' free on the drive of ' +
|
|
240
|
-
env.storageRoot +
|
|
241
|
-
(free < 5 * GB ? ': toolchains need several GB.' : ': getting low.') +
|
|
242
|
-
' See what is stored with: sandbox data, and free space with: sandbox data clean <target>',
|
|
243
|
-
};
|
|
244
|
-
},
|
|
245
|
-
},
|
|
246
|
-
];
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { askYesNo } from '../../../core/prompt.js';
|
|
3
|
-
import { fail, safeText } from '../../../core/util/index.js';
|
|
4
|
-
import { SandboxChannel } from '../../../host/channel/index.js';
|
|
5
|
-
import { runningOwner } from '../../../host/sharing/index.js';
|
|
6
|
-
import { useSharedSandbox } from '../shared-use.js';
|
|
7
|
-
import { requireOnPc, requireRunning } from '../context.js';
|
|
8
|
-
import { working, c } from '../../output/index.js';
|
|
9
|
-
import { SandboxService, SessionsService } from '../../services/index.js';
|
|
10
|
-
/** Restarts this folder's project's sessions (--all: every session). */
|
|
11
|
-
export async function restart(ctx) {
|
|
12
|
-
requireOnPc('restart');
|
|
13
|
-
requireRunning();
|
|
14
|
-
await useSharedSandbox(ctx, { kind: 'owner-only', what: 'restart the agents' });
|
|
15
|
-
const service = new SessionsService(ctx);
|
|
16
|
-
const scope = service.restartScope(Boolean(ctx.options.all));
|
|
17
|
-
if (scope.notAProject)
|
|
18
|
-
console.log(c.dim(scope.folder + ' is not a project of the running sandbox: restarting every session.'));
|
|
19
|
-
console.log(safeText(await working('Restarting the agents' + (scope.guest ? ' of ' + scope.projectName : ''), () => service.restart(ctx.options.harness ?? null, scope.guest))));
|
|
20
|
-
return 0;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Stopping ends every project's sessions: other projects' sessions need a yes (or --yes). A script must never end them
|
|
24
|
-
* by accident, so without a terminal to ask in it fails.
|
|
25
|
-
*/
|
|
26
|
-
async function othersMayEnd(ctx, others) {
|
|
27
|
-
if (!others.length || ctx.options.yes)
|
|
28
|
-
return true;
|
|
29
|
-
const interactive = process.stdin.isTTY && process.stdout.isTTY;
|
|
30
|
-
if (!interactive)
|
|
31
|
-
fail(others.length + ' of these sessions belong to other projects, so the sandbox was not stopped.', 'Stop it anyway with: sandbox stop --yes');
|
|
32
|
-
return askYesNo(others.length + ' of them belong to other projects. Stop the whole sandbox?');
|
|
33
|
-
}
|
|
34
|
-
export async function stop(asked) {
|
|
35
|
-
requireOnPc('stop');
|
|
36
|
-
if (!new SandboxService(asked).isRunning()) {
|
|
37
|
-
console.log('No Windows Sandbox is running.');
|
|
38
|
-
return 0;
|
|
39
|
-
}
|
|
40
|
-
// Another user's sandbox: only when shared, and only after typing their name (--yes in scripts).
|
|
41
|
-
let ctx = asked;
|
|
42
|
-
if (runningOwner().kind !== 'mine') {
|
|
43
|
-
ctx = await useSharedSandbox(asked, (shared) => ({
|
|
44
|
-
kind: 'stop',
|
|
45
|
-
sessions: new SandboxChannel(shared.dataPath).currentSessions().length,
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
const service = new SandboxService(ctx);
|
|
49
|
-
// Stopping ends every project's sessions, not just this folder's: say which, and ask when others would end too.
|
|
50
|
-
const { sandbox, running, others } = service.stopPlan();
|
|
51
|
-
if (running.length)
|
|
52
|
-
console.log('Stopping ends ' +
|
|
53
|
-
running.length +
|
|
54
|
-
' session(s): ' +
|
|
55
|
-
running
|
|
56
|
-
.map((s) => safeText(s.harness) + ' in ' + safeText(s.project ?? path.win32.basename(s.cwd)))
|
|
57
|
-
.join(', ') +
|
|
58
|
-
'.');
|
|
59
|
-
if (!(await othersMayEnd(ctx, others))) {
|
|
60
|
-
console.log('Nothing changed.');
|
|
61
|
-
return 1;
|
|
62
|
-
}
|
|
63
|
-
await working('Asking the sandbox to shut down', () => service.shutdown(sandbox));
|
|
64
|
-
console.log('Sandbox is shutting down; history and claude-mem sync back when it closes.');
|
|
65
|
-
return 0;
|
|
66
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import { safeText } from '../../../core/util/index.js';
|
|
3
|
-
import { printJson, table, ago, c, shortenMiddle, termWidth } from '../../output/index.js';
|
|
4
|
-
import { SessionsService, viewerText } from '../../services/index.js';
|
|
5
|
-
import { lookAtSandbox } from '../shared-use.js';
|
|
6
|
-
export async function sessions(asked) {
|
|
7
|
-
// Another user's sandbox: shared, its sessions are listed from their folders; not shared, only whose it is.
|
|
8
|
-
const view = lookAtSandbox(asked);
|
|
9
|
-
const ctx = view.ctx;
|
|
10
|
-
if (view.limited) {
|
|
11
|
-
if (!printJson(ctx, []))
|
|
12
|
-
console.log(view.line);
|
|
13
|
-
return 0;
|
|
14
|
-
}
|
|
15
|
-
if (view.line && !ctx.options.json)
|
|
16
|
-
console.log(c.bold(view.line));
|
|
17
|
-
const service = new SessionsService(ctx);
|
|
18
|
-
const list = await service.list();
|
|
19
|
-
if (printJson(ctx, list.map((s) => _.omit(s, 'attach'))))
|
|
20
|
-
return 0;
|
|
21
|
-
if (list.length === 0) {
|
|
22
|
-
console.log('No sessions. Start one with: sandbox claude');
|
|
23
|
-
return 0;
|
|
24
|
-
}
|
|
25
|
-
// Harness, cwd and times are written by the sandbox.
|
|
26
|
-
const folderWidth = Math.max(16, termWidth() - 80);
|
|
27
|
-
table([
|
|
28
|
-
['', 'ID', 'AGENT', 'PROJECT', 'STATE', 'ATTACHED', 'FOLDER', 'STARTED'],
|
|
29
|
-
...service
|
|
30
|
-
.ordered(list)
|
|
31
|
-
.map((s) => [
|
|
32
|
-
s.here ? '*' : '',
|
|
33
|
-
s.id,
|
|
34
|
-
safeText(s.harness),
|
|
35
|
-
safeText(s.projectName ?? '-'),
|
|
36
|
-
s.phase + (s.exitCode !== undefined ? ' (' + s.exitCode + ')' : ''),
|
|
37
|
-
viewerText(s.viewers),
|
|
38
|
-
shortenMiddle(safeText(s.cwd), folderWidth),
|
|
39
|
-
ago(s.startedAt),
|
|
40
|
-
]),
|
|
41
|
-
]);
|
|
42
|
-
if (list.some((s) => s.here))
|
|
43
|
-
console.log(c.dim('* = the project of this folder'));
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import { safeText } from '../../../core/util/index.js';
|
|
3
|
-
import { printJson, table, ago, c, shortenMiddle, termWidth } from '../../output/index.js';
|
|
4
|
-
import { SandboxService } from '../../services/index.js';
|
|
5
|
-
import { lookAtSandbox } from '../shared-use.js';
|
|
6
|
-
const MECHANISM_TEXT = {
|
|
7
|
-
launch: 'started from here',
|
|
8
|
-
root: 'in a project root',
|
|
9
|
-
boot: 'mapped at start',
|
|
10
|
-
};
|
|
11
|
-
function mechanismText(mechanism) {
|
|
12
|
-
return mechanism in MECHANISM_TEXT ? MECHANISM_TEXT[mechanism] : 'wsb share';
|
|
13
|
-
}
|
|
14
|
-
function printProject(p) {
|
|
15
|
-
console.log((p.here ? '* ' : ' ') +
|
|
16
|
-
c.bold(p.name) +
|
|
17
|
-
' ' +
|
|
18
|
-
p.host +
|
|
19
|
-
' -> ' +
|
|
20
|
-
p.guest +
|
|
21
|
-
c.dim(' (' + mechanismText(p.mechanism) + ')'));
|
|
22
|
-
console.log(' setup: ' +
|
|
23
|
-
p.setup.phase +
|
|
24
|
-
(p.setup.phase === 'ready' ? '' : ' - ' + shortenMiddle(p.setup.message, termWidth() - 20)));
|
|
25
|
-
if (p.databases.length)
|
|
26
|
-
console.log(' databases: ' + p.databases.map((d) => d.database + ' :' + d.port + ' ' + d.state).join(', '));
|
|
27
|
-
for (const s of p.sessions)
|
|
28
|
-
console.log(' session ' + s.id + ' ' + s.harness + ' ' + s.viewers + ' ' + ago(s.started));
|
|
29
|
-
for (const f of p.repoGuard)
|
|
30
|
-
console.log(' ' + c.yellow('guard: ' + f));
|
|
31
|
-
}
|
|
32
|
-
export async function status(asked) {
|
|
33
|
-
// Another user's sandbox: shared, it is shown from their folders; not shared, only whose it is.
|
|
34
|
-
const view = lookAtSandbox(asked);
|
|
35
|
-
const ctx = view.ctx;
|
|
36
|
-
if (view.limited) {
|
|
37
|
-
const owner = view.owner;
|
|
38
|
-
const user = owner?.kind === 'other' ? owner.user : null;
|
|
39
|
-
if (!printJson(ctx, { sandbox: { running: true, shared: false, startedBy: user } }))
|
|
40
|
-
console.log(view.line);
|
|
41
|
-
return 0;
|
|
42
|
-
}
|
|
43
|
-
const report = await new SandboxService(ctx).status();
|
|
44
|
-
const { startedAt, ...state } = report.sandbox;
|
|
45
|
-
const info = {
|
|
46
|
-
// Same keys and order as the service's state, with the start time shown as an uptime.
|
|
47
|
-
sandbox: {
|
|
48
|
-
...(ctx.borrowed ? { startedBy: ctx.borrowed.user, shared: true } : {}),
|
|
49
|
-
running: state.running,
|
|
50
|
-
phase: state.phase,
|
|
51
|
-
message: state.message,
|
|
52
|
-
headless: state.headless,
|
|
53
|
-
uptime: state.running && startedAt ? ago(startedAt).replace(' ago', '') : null,
|
|
54
|
-
daemon: state.daemon,
|
|
55
|
-
account: state.account,
|
|
56
|
-
syncWatcher: state.syncWatcher,
|
|
57
|
-
},
|
|
58
|
-
here: report.here,
|
|
59
|
-
roots: report.roots,
|
|
60
|
-
projects: report.projects,
|
|
61
|
-
otherSessions: report.otherSessions,
|
|
62
|
-
repoGuard: report.repoGuard,
|
|
63
|
-
};
|
|
64
|
-
if (printJson(ctx, info))
|
|
65
|
-
return 0;
|
|
66
|
-
const yesNo = (v) => (typeof v === 'boolean' ? (v ? 'yes' : 'no') : String(v ?? '-'));
|
|
67
|
-
if (view.line)
|
|
68
|
-
console.log(c.bold(view.line) + c.dim('. Its window is on their desktop; use its agents here.'));
|
|
69
|
-
table(Object.entries(info.sandbox).map(([k, v]) => [_.startCase(k), safeText(yesNo(v))]));
|
|
70
|
-
if (!state.running)
|
|
71
|
-
return 0;
|
|
72
|
-
console.log('\n' +
|
|
73
|
-
c.bold('Projects') +
|
|
74
|
-
c.dim(' (* = this folder: ' + info.here.folder + (info.here.project ? '' : ', not in this sandbox') + ')'));
|
|
75
|
-
for (const p of info.projects)
|
|
76
|
-
printProject(p);
|
|
77
|
-
for (const r of info.roots)
|
|
78
|
-
console.log(' root ' + r.host + ' -> ' + r.guest + c.dim(' (every project in it opens without a restart)'));
|
|
79
|
-
for (const s of info.otherSessions)
|
|
80
|
-
console.log(' session ' + s.id + ' ' + s.harness + ' ' + s.cwd);
|
|
81
|
-
const findings = info.repoGuard.findings;
|
|
82
|
-
console.log('\n' +
|
|
83
|
-
c.bold('Repo guard') +
|
|
84
|
-
' ' +
|
|
85
|
-
info.repoGuard.guarded +
|
|
86
|
-
' folder(s) guarded; ' +
|
|
87
|
-
(findings.length
|
|
88
|
-
? c.yellow(findings.length + ' change(s) neutralised:')
|
|
89
|
-
: 'nothing from the sandbox needed neutralising'));
|
|
90
|
-
for (const f of findings.slice(-10))
|
|
91
|
-
console.log(' ' + c.yellow(safeText(f)));
|
|
92
|
-
return 0;
|
|
93
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { requireOnPc, requireRunning } from '../context.js';
|
|
2
|
-
import { SandboxService } from '../../services/index.js';
|
|
3
|
-
import { useSharedSandbox } from '../shared-use.js';
|
|
4
|
-
export async function show(ctx) {
|
|
5
|
-
requireOnPc('show');
|
|
6
|
-
requireRunning();
|
|
7
|
-
await useSharedSandbox(ctx, { kind: 'owner-only', what: 'show the window', window: true });
|
|
8
|
-
new SandboxService(ctx).showWindow();
|
|
9
|
-
return 0;
|
|
10
|
-
}
|
|
11
|
-
export async function hide(ctx) {
|
|
12
|
-
requireOnPc('hide');
|
|
13
|
-
requireRunning();
|
|
14
|
-
await useSharedSandbox(ctx, { kind: 'owner-only', what: 'hide the window', window: true });
|
|
15
|
-
await new SandboxService(ctx).hideWindow();
|
|
16
|
-
console.log('Sandbox window hidden. Bring it back with: sbx-show');
|
|
17
|
-
return 0;
|
|
18
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { Context } from '../../commands/context.js';
|
|
2
|
-
import { type App, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
3
|
-
import { ListPage, type Outcome } from './list-page.js';
|
|
4
|
-
export type WindowChoice = 'config' | 'hide' | 'show';
|
|
5
|
-
export interface StartModel {
|
|
6
|
-
readonly folder: string;
|
|
7
|
-
readonly defaultAgent: string;
|
|
8
|
-
readonly agents: readonly {
|
|
9
|
-
readonly name: string;
|
|
10
|
-
readonly ready: boolean;
|
|
11
|
-
}[];
|
|
12
|
-
readonly last: string[] | undefined;
|
|
13
|
-
readonly attach: boolean;
|
|
14
|
-
readonly window: WindowChoice;
|
|
15
|
-
/** Agents that can be run on this PC without the sandbox (see hostAgentsToShow). */
|
|
16
|
-
readonly hostAgents: readonly string[];
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* The "not sandboxed" entries: only while agent commands are on (typing the agent then starts the sandbox, so a way to
|
|
20
|
-
* run the real one is needed), one per agent found installed on this PC.
|
|
21
|
-
*/
|
|
22
|
-
export declare function hostAgentsToShow(enabled: boolean, found: readonly {
|
|
23
|
-
harness: string;
|
|
24
|
-
}[]): string[];
|
|
25
|
-
/** The command line a start stands for. Pure. */
|
|
26
|
-
export declare function startArgv(m: StartModel, agent: string, cwd: string): string[];
|
|
27
|
-
/** The list for the start tab. Pure. */
|
|
28
|
-
export declare function startOptions(m: StartModel, cwd?: string): ListOptions<string>;
|
|
29
|
-
export declare class StartPage extends ListPage<string> {
|
|
30
|
-
private readonly ctx;
|
|
31
|
-
readonly label = "Start";
|
|
32
|
-
private attach;
|
|
33
|
-
private window;
|
|
34
|
-
private folder;
|
|
35
|
-
private model;
|
|
36
|
-
constructor(app: App, ctx: Context);
|
|
37
|
-
/** Is this agent already in the sandbox's persistent storage (so starting it needs no install)? */
|
|
38
|
-
private installed;
|
|
39
|
-
private current;
|
|
40
|
-
protected load(): Promise<void>;
|
|
41
|
-
protected options(): ListOptions<string>;
|
|
42
|
-
protected act(result: ListResult<string>): Promise<Outcome<string>>;
|
|
43
|
-
}
|