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
|
@@ -4,10 +4,14 @@ import { type DataEntry } from '../../commands/data/collect.js';
|
|
|
4
4
|
import type { RepairResult } from '../../commands/repair/types.js';
|
|
5
5
|
import { type LogFile, type SetupReport, type UpdateStatus } from '../../services/index.js';
|
|
6
6
|
import { type App, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
7
|
-
import type { Step } from '../../tui/index.js';
|
|
8
|
-
import type { ShellExit } from '../shell.js';
|
|
9
7
|
import { ListPage, type Outcome } from './list-page.js';
|
|
10
8
|
export interface MaintenanceModel {
|
|
9
|
+
/** The data folder row (where the sandbox keeps its data). */
|
|
10
|
+
readonly dataFolder: {
|
|
11
|
+
label: string;
|
|
12
|
+
hint: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
11
15
|
/** Null until measured (measuring a big data folder takes a while). */
|
|
12
16
|
readonly data: {
|
|
13
17
|
entries: DataEntry[];
|
|
@@ -48,7 +52,6 @@ export declare class MaintenancePage extends ListPage<string> {
|
|
|
48
52
|
private doctorRows;
|
|
49
53
|
private repairRows;
|
|
50
54
|
private setupReport;
|
|
51
|
-
private seen;
|
|
52
55
|
private settings;
|
|
53
56
|
private readonly migrate;
|
|
54
57
|
private readonly health;
|
|
@@ -59,8 +62,6 @@ export declare class MaintenancePage extends ListPage<string> {
|
|
|
59
62
|
private model;
|
|
60
63
|
protected load(): Promise<void>;
|
|
61
64
|
protected options(): ListOptions<string>;
|
|
62
|
-
/** Opening a category loads what it shows (the cheap ones; data is measured on request). */
|
|
63
|
-
protected afterKey(): Promise<Step<ShellExit>>;
|
|
64
65
|
private readSettings;
|
|
65
66
|
private updateStatus;
|
|
66
67
|
/** The Updates category: look, install, go back, switch automatic updates. */
|
|
@@ -69,8 +70,11 @@ export declare class MaintenancePage extends ListPage<string> {
|
|
|
69
70
|
private loadDoctor;
|
|
70
71
|
private loadSetup;
|
|
71
72
|
protected act(result: ListResult<string>): Promise<Outcome<string>>;
|
|
73
|
+
/** The key an Enter on an Updates row stands for. */
|
|
74
|
+
private updateKey;
|
|
72
75
|
private measure;
|
|
73
76
|
private remove;
|
|
77
|
+
/** Repair shows what it does as it goes and asks before it changes anything, so it runs on the normal screen. */
|
|
74
78
|
private repair;
|
|
75
79
|
private enable;
|
|
76
80
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// Section 7: keeping things in shape. Updates (the program and your saved settings), Data & storage (the data folder,
|
|
2
|
+
// what is stored, clean-up), Health (doctor, repair and this PC's setup together), the logs, and the less common
|
|
3
|
+
// commands. Each is a category on the left and loads when you open it.
|
|
3
4
|
import _ from 'lodash';
|
|
4
5
|
import { humanBytes } from '../../../core/disk.js';
|
|
5
6
|
import { userDir } from '../../../core/config/index.js';
|
|
@@ -11,18 +12,37 @@ import { DataService, HealthService, LogsService, MigrateService, NPM_UPDATE_COM
|
|
|
11
12
|
import { describeResult } from '../../commands/maintenance/update.js';
|
|
12
13
|
import { Text, Theme, } from '../../tui/index.js';
|
|
13
14
|
import { CommandForm } from '../command-form.js';
|
|
15
|
+
import { DataFolderFlow, dataFolderRow } from '../data-folder.js';
|
|
14
16
|
import { ListPage } from './list-page.js';
|
|
15
17
|
const CATEGORIES = [
|
|
16
|
-
{
|
|
18
|
+
{
|
|
19
|
+
id: 'updates',
|
|
20
|
+
label: 'Updates',
|
|
21
|
+
description: 'Which version is installed, installing a newer one, and bringing your saved settings up to date.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'data',
|
|
25
|
+
label: 'Data & storage',
|
|
26
|
+
description: 'Where the sandbox keeps its data, what is stored, and deleting parts of it.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'health',
|
|
30
|
+
label: 'Health',
|
|
31
|
+
description: 'Checks this PC and your settings, repairs problems, and sets up Windows Sandbox.',
|
|
32
|
+
},
|
|
17
33
|
{ id: 'logs', label: 'Logs', description: "The sandbox's own logs." },
|
|
18
|
-
{ id: 'doctor', label: 'Doctor', description: 'Checks this PC and your settings.' },
|
|
19
|
-
{ id: 'repair', label: 'Repair', description: 'Finds common problems and fixes what it can.' },
|
|
20
|
-
{ id: 'settings', label: 'Saved settings', description: 'Brings your saved settings up to date with this version.' },
|
|
21
|
-
{ id: 'updates', label: 'Updates', description: 'Which version is installed, and installing a newer one.' },
|
|
22
|
-
{ id: 'setup', label: 'Set up this PC', description: 'Can this PC run Windows Sandbox?' },
|
|
23
34
|
{ id: 'more', label: 'More commands', description: 'Less common commands.' },
|
|
24
35
|
];
|
|
25
36
|
const MORE_COMMANDS = ['sync', 'audit', 'config', 'generate', 'exec', 'agent-commands'];
|
|
37
|
+
/** Plain names for the commands under More commands. */
|
|
38
|
+
const MORE_LABELS = {
|
|
39
|
+
sync: 'Copy history back now',
|
|
40
|
+
audit: 'What happened in the sandbox',
|
|
41
|
+
config: 'Your settings file',
|
|
42
|
+
generate: 'Preview a start',
|
|
43
|
+
exec: 'Run a command in the sandbox',
|
|
44
|
+
'agent-commands': 'Agent commands (Beta)',
|
|
45
|
+
};
|
|
26
46
|
const REPAIR_LABEL = {
|
|
27
47
|
ok: ['OK', Theme.ok],
|
|
28
48
|
fixed: ['FIXED', Theme.accent],
|
|
@@ -39,17 +59,28 @@ const AREA_LABEL = {
|
|
|
39
59
|
host: 'On this PC',
|
|
40
60
|
};
|
|
41
61
|
function dataItems(m) {
|
|
62
|
+
const folder = { value: 'data:folder', category: 'data', section: 'Data folder', ...m.dataFolder };
|
|
63
|
+
const clean = {
|
|
64
|
+
value: 'data:clean',
|
|
65
|
+
label: 'Clean up…',
|
|
66
|
+
category: 'data',
|
|
67
|
+
section: 'Clean up',
|
|
68
|
+
description: 'Delete caches, old sandboxes and other leftovers (the clean command, with its options).',
|
|
69
|
+
};
|
|
42
70
|
if (!m.data)
|
|
43
71
|
return [
|
|
72
|
+
folder,
|
|
44
73
|
{
|
|
45
74
|
value: 'data:measure',
|
|
46
75
|
label: 'Measure what is stored',
|
|
47
76
|
category: 'data',
|
|
48
|
-
|
|
77
|
+
section: 'Stored data',
|
|
49
78
|
description: 'Adds up the size of every folder. A big data folder takes a minute or more.',
|
|
50
79
|
},
|
|
80
|
+
clean,
|
|
51
81
|
];
|
|
52
82
|
return [
|
|
83
|
+
folder,
|
|
53
84
|
...m.data.disks.map((d) => ({
|
|
54
85
|
value: 'disk:' + d.drive,
|
|
55
86
|
label: d.drive,
|
|
@@ -67,6 +98,7 @@ function dataItems(m) {
|
|
|
67
98
|
description: cleanTargetOf(e) ? 'x deletes it.' : 'Kept on this PC on purpose; it is not deleted here.',
|
|
68
99
|
details: [Theme.muted('Folder ') + e.path],
|
|
69
100
|
})),
|
|
101
|
+
clean,
|
|
70
102
|
];
|
|
71
103
|
}
|
|
72
104
|
function updateItems(m) {
|
|
@@ -74,6 +106,7 @@ function updateItems(m) {
|
|
|
74
106
|
value: 'updates:' + id,
|
|
75
107
|
label,
|
|
76
108
|
category: 'updates',
|
|
109
|
+
section: 'This program',
|
|
77
110
|
hint,
|
|
78
111
|
description,
|
|
79
112
|
details,
|
|
@@ -89,14 +122,16 @@ function updateItems(m) {
|
|
|
89
122
|
const scope = u.scope === 'machine' ? 'for everyone on this PC' : 'for you';
|
|
90
123
|
const rows = [
|
|
91
124
|
row('version', 'Version', u.version, 'Installed ' + scope + '.'),
|
|
92
|
-
row('latest', 'Newest version', m.latest ? Theme.warn(m.latest) : Theme.muted('
|
|
93
|
-
row('auto', 'Automatic updates', u.autoUpdate ? Theme.ok('on') : Theme.muted('off'), '
|
|
125
|
+
row('latest', 'Newest version', m.latest ? Theme.warn(m.latest) : Theme.muted('not looked yet'), m.latest ? 'Enter installs it.' : 'Enter looks on GitHub for a newer version.'),
|
|
126
|
+
row('auto', 'Automatic updates', u.autoUpdate ? Theme.ok('on') : Theme.muted('off'), 'Enter switches them. ' +
|
|
94
127
|
(u.scope === 'machine'
|
|
95
128
|
? 'For everyone: needs an admin terminal.'
|
|
96
129
|
: 'A new version installs when no sandbox runs.')),
|
|
97
130
|
];
|
|
131
|
+
if (u.autoOffText)
|
|
132
|
+
rows.push(row('autooff', 'Automatic updates turned off', Theme.warn('off'), u.autoOffText, [u.autoOffText]));
|
|
98
133
|
if (u.state.previous)
|
|
99
|
-
rows.push(row('previous', 'Previous version', u.state.previous, '
|
|
134
|
+
rows.push(row('previous', 'Previous version', u.state.previous, 'Enter goes back to it.'));
|
|
100
135
|
if (u.state.failed)
|
|
101
136
|
rows.push(row('failed', 'Last failed update', Theme.error(u.state.failed.version), u.state.failed.reason, [
|
|
102
137
|
u.state.failed.reason,
|
|
@@ -113,10 +148,23 @@ export function maintenanceOptions(m) {
|
|
|
113
148
|
hint: humanBytes(f.bytes) + ' ' + ago(f.modified),
|
|
114
149
|
description: 'Enter shows the end of this log in the terminal.',
|
|
115
150
|
}));
|
|
151
|
+
// The checks take seconds (programs are run), so they are not made while you move through the categories.
|
|
152
|
+
const check = m.doctor === null && m.setup === null
|
|
153
|
+
? [
|
|
154
|
+
{
|
|
155
|
+
value: 'health:check',
|
|
156
|
+
label: 'Check this PC',
|
|
157
|
+
category: 'health',
|
|
158
|
+
section: 'Doctor',
|
|
159
|
+
description: 'Looks at this PC: Windows features, the install, the folders and the sandbox. It takes a few seconds, so it only runs when you ask.',
|
|
160
|
+
},
|
|
161
|
+
]
|
|
162
|
+
: [];
|
|
116
163
|
const doctor = (m.doctor ?? []).map(([name, detail], i) => ({
|
|
117
164
|
value: 'doctor:' + i,
|
|
118
165
|
label: name,
|
|
119
|
-
category: '
|
|
166
|
+
category: 'health',
|
|
167
|
+
section: 'Doctor',
|
|
120
168
|
hint: Text.truncate(detail, 50),
|
|
121
169
|
details: [detail],
|
|
122
170
|
}));
|
|
@@ -126,7 +174,8 @@ export function maintenanceOptions(m) {
|
|
|
126
174
|
return {
|
|
127
175
|
value: 'repair:' + i,
|
|
128
176
|
label: r.name,
|
|
129
|
-
category: '
|
|
177
|
+
category: 'health',
|
|
178
|
+
section: 'Repair',
|
|
130
179
|
hint: paint(text),
|
|
131
180
|
description: r.detail,
|
|
132
181
|
};
|
|
@@ -135,19 +184,20 @@ export function maintenanceOptions(m) {
|
|
|
135
184
|
{
|
|
136
185
|
value: 'repair:run',
|
|
137
186
|
label: 'Run the checks and fix what can be fixed',
|
|
138
|
-
category: '
|
|
139
|
-
|
|
140
|
-
description: '
|
|
187
|
+
category: 'health',
|
|
188
|
+
section: 'Repair',
|
|
189
|
+
description: 'Checks the install, data folder, settings and sandbox, lists what it would change, and asks before it fixes anything.',
|
|
141
190
|
},
|
|
142
191
|
];
|
|
143
192
|
const setup = m.setup === null
|
|
144
193
|
? []
|
|
145
194
|
: 'error' in m.setup
|
|
146
|
-
? [{ value: 'setup:error', label: m.setup.error, category: '
|
|
195
|
+
? [{ value: 'setup:error', label: m.setup.error, category: 'health', section: 'Set up this PC' }]
|
|
147
196
|
: m.setup.checks.map((c, i) => ({
|
|
148
197
|
value: 'setup:' + i,
|
|
149
198
|
label: c.name,
|
|
150
|
-
category: '
|
|
199
|
+
category: 'health',
|
|
200
|
+
section: 'Set up this PC',
|
|
151
201
|
hint: c.status === 'ok'
|
|
152
202
|
? Theme.ok('OK')
|
|
153
203
|
: c.status === 'warn'
|
|
@@ -156,12 +206,13 @@ export function maintenanceOptions(m) {
|
|
|
156
206
|
description: c.detail,
|
|
157
207
|
}));
|
|
158
208
|
const settings = 'error' in m.settings
|
|
159
|
-
? [{ value: 'settings:error', label: m.settings.error, category: 'settings' }]
|
|
209
|
+
? [{ value: 'settings:error', label: m.settings.error, category: 'updates', section: 'Saved settings' }]
|
|
160
210
|
: m.settings.pending.length
|
|
161
211
|
? m.settings.pending.map((line, i) => ({
|
|
162
212
|
value: 'settings:' + i,
|
|
163
213
|
label: line.split(':')[0],
|
|
164
|
-
category: '
|
|
214
|
+
category: 'updates',
|
|
215
|
+
section: 'Saved settings',
|
|
165
216
|
hint: Theme.warn('to update'),
|
|
166
217
|
description: 'Enter updates your saved settings (a backup is kept first).',
|
|
167
218
|
details: [line],
|
|
@@ -170,7 +221,8 @@ export function maintenanceOptions(m) {
|
|
|
170
221
|
{
|
|
171
222
|
value: 'settings:none',
|
|
172
223
|
label: 'Up to date',
|
|
173
|
-
category: '
|
|
224
|
+
category: 'updates',
|
|
225
|
+
section: 'Saved settings',
|
|
174
226
|
hint: Theme.ok('OK'),
|
|
175
227
|
description: 'Nothing to update.',
|
|
176
228
|
},
|
|
@@ -178,49 +230,90 @@ export function maintenanceOptions(m) {
|
|
|
178
230
|
const updates = updateItems(m);
|
|
179
231
|
const more = m.more.map((c) => ({
|
|
180
232
|
value: 'more:' + c.name,
|
|
181
|
-
label: Text.humanize(c.name),
|
|
233
|
+
label: MORE_LABELS[c.name] ?? Text.humanize(c.name),
|
|
182
234
|
category: 'more',
|
|
183
|
-
hint: Theme.muted('sandbox ' + c.name),
|
|
184
235
|
description: c.summary.replace(/^./, (x) => x.toUpperCase()) + '.',
|
|
185
236
|
}));
|
|
186
237
|
return {
|
|
187
238
|
path: [],
|
|
188
239
|
categories: CATEGORIES,
|
|
189
|
-
items: [...dataItems(m), ...
|
|
240
|
+
items: [...updates, ...settings, ...dataItems(m), ...check, ...doctor, ...repair, ...setup, ...logs, ...more],
|
|
190
241
|
empty: 'Nothing here yet.',
|
|
191
242
|
actions: maintenanceActions(m),
|
|
192
|
-
|
|
243
|
+
enterLabel: (_category, id) => enterLabel(id ?? '', m),
|
|
193
244
|
};
|
|
194
245
|
}
|
|
246
|
+
/** What Enter does on a row ("" = the row only shows information). */
|
|
247
|
+
function enterLabel(id, m) {
|
|
248
|
+
if (id === 'data:folder')
|
|
249
|
+
return 'change';
|
|
250
|
+
if (id === 'data:measure')
|
|
251
|
+
return 'measure';
|
|
252
|
+
if (id === 'data:clean')
|
|
253
|
+
return 'choose what';
|
|
254
|
+
if (id === 'repair:run')
|
|
255
|
+
return 'check and fix';
|
|
256
|
+
if (id === 'health:check')
|
|
257
|
+
return 'check';
|
|
258
|
+
if (id === 'updates:latest')
|
|
259
|
+
return m.latest ? 'install' : 'look';
|
|
260
|
+
if (id === 'updates:auto')
|
|
261
|
+
return 'switch';
|
|
262
|
+
if (id === 'updates:previous')
|
|
263
|
+
return 'go back';
|
|
264
|
+
if (id.startsWith('settings:') && id !== 'settings:none' && id !== 'settings:error')
|
|
265
|
+
return 'update';
|
|
266
|
+
if (id.startsWith('log:'))
|
|
267
|
+
return 'show';
|
|
268
|
+
if (id.startsWith('more:'))
|
|
269
|
+
return 'open';
|
|
270
|
+
return '';
|
|
271
|
+
}
|
|
195
272
|
function maintenanceActions(m) {
|
|
196
273
|
return (category) => {
|
|
197
274
|
switch (category) {
|
|
198
|
-
case 'data':
|
|
199
|
-
|
|
275
|
+
case 'data': {
|
|
276
|
+
const deletable = new Set((m.data?.entries ?? []).flatMap((e, i) => (cleanTargetOf(e) ? ['entry:' + i] : [])));
|
|
277
|
+
return [
|
|
278
|
+
{ key: 'm', label: 'measure again' },
|
|
279
|
+
{ key: 'x', label: 'delete', applies: (id) => deletable.has(id) },
|
|
280
|
+
];
|
|
281
|
+
}
|
|
200
282
|
case 'logs':
|
|
201
283
|
return [{ key: 'f', label: 'follow in the terminal' }];
|
|
202
|
-
case '
|
|
203
|
-
return [{ key: 'l', label: 'check again' }];
|
|
204
|
-
case 'repair':
|
|
205
|
-
return [{ key: 'f', label: 'check and fix' }];
|
|
206
|
-
case 'settings':
|
|
207
|
-
return [{ key: 'u', label: 'update now' }];
|
|
208
|
-
case 'updates':
|
|
209
|
-
return 'error' in m.updates || !m.updates.managed
|
|
210
|
-
? []
|
|
211
|
-
: [
|
|
212
|
-
{ key: 'c', label: 'check now' },
|
|
213
|
-
{ key: 'u', label: 'update now' },
|
|
214
|
-
{ key: 'r', label: 'roll back' },
|
|
215
|
-
{ key: 'a', label: 'automatic on/off' },
|
|
216
|
-
];
|
|
217
|
-
case 'setup': {
|
|
284
|
+
case 'health': {
|
|
218
285
|
const canEnable = m.setup !== null && !('error' in m.setup) && m.setup.canEnable;
|
|
219
286
|
return [
|
|
220
|
-
{ key: '
|
|
287
|
+
{ key: 'f', label: 'check and fix' },
|
|
288
|
+
{ key: 'l', label: m.doctor ? 'check again' : 'check' },
|
|
221
289
|
...(canEnable ? [{ key: 'e', label: 'turn on Windows Sandbox' }] : []),
|
|
222
290
|
];
|
|
223
291
|
}
|
|
292
|
+
case 'updates': {
|
|
293
|
+
const managed = !('error' in m.updates) && m.updates.managed;
|
|
294
|
+
const previous = !('error' in m.updates) && Boolean(m.updates.state.previous);
|
|
295
|
+
return [
|
|
296
|
+
...(managed
|
|
297
|
+
? [
|
|
298
|
+
{ key: 'c', label: 'check now' },
|
|
299
|
+
{ key: 'u', label: 'update now' },
|
|
300
|
+
{ key: 'a', label: 'automatic on/off', applies: (id) => id === 'updates:auto' },
|
|
301
|
+
...(previous
|
|
302
|
+
? [{ key: 'r', label: 'roll back', applies: (id) => id === 'updates:previous' }]
|
|
303
|
+
: []),
|
|
304
|
+
]
|
|
305
|
+
: []),
|
|
306
|
+
...('pending' in m.settings && m.settings.pending.length
|
|
307
|
+
? [
|
|
308
|
+
{
|
|
309
|
+
key: 's',
|
|
310
|
+
label: 'update saved settings',
|
|
311
|
+
applies: (id) => id.startsWith('settings:') && id !== 'settings:none',
|
|
312
|
+
},
|
|
313
|
+
]
|
|
314
|
+
: []),
|
|
315
|
+
];
|
|
316
|
+
}
|
|
224
317
|
default:
|
|
225
318
|
return [];
|
|
226
319
|
}
|
|
@@ -234,7 +327,6 @@ export class MaintenancePage extends ListPage {
|
|
|
234
327
|
doctorRows = null;
|
|
235
328
|
repairRows = null;
|
|
236
329
|
setupReport = null;
|
|
237
|
-
seen;
|
|
238
330
|
settings = { pending: [] };
|
|
239
331
|
migrate;
|
|
240
332
|
health;
|
|
@@ -255,6 +347,7 @@ export class MaintenancePage extends ListPage {
|
|
|
255
347
|
}
|
|
256
348
|
model() {
|
|
257
349
|
return {
|
|
350
|
+
dataFolder: dataFolderRow(this.ctx),
|
|
258
351
|
data: this.data,
|
|
259
352
|
logs: this.logs,
|
|
260
353
|
doctor: this.doctorRows,
|
|
@@ -282,21 +375,6 @@ export class MaintenancePage extends ListPage {
|
|
|
282
375
|
options() {
|
|
283
376
|
return maintenanceOptions(this.model());
|
|
284
377
|
}
|
|
285
|
-
/** Opening a category loads what it shows (the cheap ones; data is measured on request). */
|
|
286
|
-
async afterKey() {
|
|
287
|
-
const category = this.category;
|
|
288
|
-
if (category === this.seen)
|
|
289
|
-
return;
|
|
290
|
-
this.seen = category;
|
|
291
|
-
if (category === 'doctor' && !this.doctorRows)
|
|
292
|
-
await this.loadDoctor();
|
|
293
|
-
else if (category === 'setup' && !this.setupReport)
|
|
294
|
-
await this.loadSetup();
|
|
295
|
-
else
|
|
296
|
-
return;
|
|
297
|
-
this.rebuild(undefined);
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
378
|
readSettings() {
|
|
301
379
|
try {
|
|
302
380
|
this.settings = { pending: this.migrate.plan() };
|
|
@@ -390,6 +468,14 @@ export class MaintenancePage extends ListPage {
|
|
|
390
468
|
try {
|
|
391
469
|
if (key === 'm' || id === 'data:measure')
|
|
392
470
|
return this.measure();
|
|
471
|
+
if (id === 'data:folder' && result.kind === 'pick') {
|
|
472
|
+
const exit = await new DataFolderFlow(this.app, this.ctx).run();
|
|
473
|
+
return exit ? { exit } : { reload: true };
|
|
474
|
+
}
|
|
475
|
+
if (id === 'data:clean' && result.kind === 'pick') {
|
|
476
|
+
const argv = await new CommandForm(this.app, this.ctx, commandSpec('clean')).run();
|
|
477
|
+
return argv ? { exit: { kind: 'run', argv } } : {};
|
|
478
|
+
}
|
|
393
479
|
if (key === 'x')
|
|
394
480
|
return await this.remove(id);
|
|
395
481
|
if (key === 'f' && this.category === 'logs')
|
|
@@ -398,22 +484,21 @@ export class MaintenancePage extends ListPage {
|
|
|
398
484
|
const file = this.logs.find((l) => l.name === id.slice(4));
|
|
399
485
|
return file ? { exit: { kind: 'view', file: file.path } } : {};
|
|
400
486
|
}
|
|
401
|
-
if (this.category === 'updates')
|
|
402
|
-
return await this.updates(key ?? (id === 'updates:latest' ? 'u' : undefined));
|
|
403
|
-
if (key === 'u' || (result.kind === 'pick' && id?.startsWith('settings:')))
|
|
487
|
+
if ((result.kind === 'pick' && id?.startsWith('settings:')) || (key === 's' && this.category === 'updates'))
|
|
404
488
|
return await this.updateSettings();
|
|
405
|
-
if (
|
|
406
|
-
return this.
|
|
407
|
-
if (
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
489
|
+
if (this.category === 'updates')
|
|
490
|
+
return await this.updates(key ?? this.updateKey(id));
|
|
491
|
+
if (this.category === 'health') {
|
|
492
|
+
if (key === 'f' || id === 'repair:run')
|
|
493
|
+
return this.repair();
|
|
494
|
+
if (key === 'l' || id === 'health:check') {
|
|
495
|
+
await this.loadDoctor();
|
|
496
|
+
await this.loadSetup();
|
|
497
|
+
return {};
|
|
498
|
+
}
|
|
499
|
+
if (key === 'e')
|
|
500
|
+
return await this.enable();
|
|
414
501
|
}
|
|
415
|
-
if (key === 'e')
|
|
416
|
-
return await this.enable();
|
|
417
502
|
if (id?.startsWith('more:') && result.kind === 'pick') {
|
|
418
503
|
const spec = commandSpec(id.slice(5));
|
|
419
504
|
const argv = await new CommandForm(this.app, this.ctx, spec).run();
|
|
@@ -425,6 +510,16 @@ export class MaintenancePage extends ListPage {
|
|
|
425
510
|
}
|
|
426
511
|
return {};
|
|
427
512
|
}
|
|
513
|
+
/** The key an Enter on an Updates row stands for. */
|
|
514
|
+
updateKey(id) {
|
|
515
|
+
if (id === 'updates:latest')
|
|
516
|
+
return this.latest ? 'u' : 'c';
|
|
517
|
+
if (id === 'updates:auto')
|
|
518
|
+
return 'a';
|
|
519
|
+
if (id === 'updates:previous')
|
|
520
|
+
return 'r';
|
|
521
|
+
return undefined;
|
|
522
|
+
}
|
|
428
523
|
measure() {
|
|
429
524
|
this.busy('Measuring what is stored… this can take a minute or more');
|
|
430
525
|
const report = this.dataService.report();
|
|
@@ -453,17 +548,9 @@ export class MaintenancePage extends ListPage {
|
|
|
453
548
|
this.data = { ...this.data, entries: gone, total: _.sumBy(gone, 'bytes') };
|
|
454
549
|
return { notice: Theme.ok(Theme.glyph.ok + ' Freed ' + humanBytes(outcome.freedBytes) + '.') };
|
|
455
550
|
}
|
|
551
|
+
/** Repair shows what it does as it goes and asks before it changes anything, so it runs on the normal screen. */
|
|
456
552
|
repair() {
|
|
457
|
-
|
|
458
|
-
this.repairRows = this.health.repair();
|
|
459
|
-
const needs = this.repairRows.filter((r) => r.status === 'needs-you').length;
|
|
460
|
-
return {
|
|
461
|
-
notice: needs
|
|
462
|
-
? Theme.warn(needs + ' thing(s) need you (see NEEDS YOU).')
|
|
463
|
-
: Theme.ok(Theme.glyph.ok +
|
|
464
|
-
' All good' +
|
|
465
|
-
(this.repairRows.some((r) => r.status === 'fixed') ? ': problems were fixed.' : '.')),
|
|
466
|
-
};
|
|
553
|
+
return { exit: { kind: 'run', argv: ['repair'] } };
|
|
467
554
|
}
|
|
468
555
|
async enable() {
|
|
469
556
|
const ok = await this.app.ask('Turn on Windows Sandbox?', ['Windows asks for admin permission, then you restart Windows to finish.'], 'Turn on');
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { type SandboxStatus } from '../../../app/features/sandbox/index.js';
|
|
1
2
|
import type { Context } from '../../commands/context.js';
|
|
2
|
-
import { type DatabaseRow, type ProjectsListing
|
|
3
|
+
import { type DatabaseRow, type ProjectsListing } from '../../services/index.js';
|
|
3
4
|
import { type App, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
4
5
|
import { ListPage, type Outcome } from './list-page.js';
|
|
5
6
|
export interface SandboxModel {
|
|
6
|
-
readonly report:
|
|
7
|
+
readonly report: SandboxStatus;
|
|
7
8
|
readonly projects: ProjectsListing;
|
|
8
9
|
/** Null: the sandbox is not running or did not answer. */
|
|
9
10
|
readonly databases: DatabaseRow[] | null;
|
|
11
|
+
/** The agent "Start the sandbox" offers while nothing runs. */
|
|
12
|
+
readonly defaultAgent: string;
|
|
10
13
|
}
|
|
11
14
|
/** The list for the sandbox tab. Pure. */
|
|
12
15
|
export declare function sandboxOptions(m: SandboxModel): ListOptions<string>;
|
|
@@ -14,18 +17,16 @@ export declare class SandboxPage extends ListPage<string> {
|
|
|
14
17
|
private readonly ctx;
|
|
15
18
|
readonly label = "Sandbox";
|
|
16
19
|
private model;
|
|
17
|
-
private readonly sandbox;
|
|
18
20
|
private readonly projects;
|
|
21
|
+
private readonly operations;
|
|
19
22
|
constructor(app: App, ctx: Context);
|
|
20
23
|
protected load(): Promise<void>;
|
|
21
24
|
/** The folder `sbx-db` runs in: the sandbox's own workspace. */
|
|
22
25
|
private guestWorkspace;
|
|
23
26
|
protected options(): ListOptions<string>;
|
|
24
27
|
protected act(result: ListResult<string>): Promise<Outcome<string>>;
|
|
28
|
+
private defaultAgent;
|
|
25
29
|
private noSandbox;
|
|
26
|
-
private show;
|
|
27
|
-
private hide;
|
|
28
|
-
private stop;
|
|
29
30
|
private addRoot;
|
|
30
31
|
private forget;
|
|
31
32
|
private toggleDatabase;
|