windows-development-sandbox 1.18.4 → 1.23.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 -1
- package/config.example.json +17 -1
- package/dist/app/features/access/access.def.js +5 -2
- package/dist/app/features/access/access.run.js +7 -3
- package/dist/app/features/accounts/accounts.def.d.ts +33 -1
- package/dist/app/features/accounts/accounts.def.js +10 -4
- package/dist/app/features/accounts/accounts.run.d.ts +2 -0
- package/dist/app/features/accounts/accounts.run.js +7 -2
- package/dist/app/features/accounts/services.def.d.ts +7 -1
- package/dist/app/features/accounts/services.def.js +19 -16
- package/dist/app/features/accounts/services.run.d.ts +2 -0
- package/dist/app/features/accounts/services.run.js +44 -16
- package/dist/app/features/agent-commands/agent-commands.def.d.ts +37 -0
- package/dist/app/features/agent-commands/agent-commands.def.js +91 -0
- package/dist/app/features/agent-commands/agent-commands.run.d.ts +28 -0
- package/dist/app/features/agent-commands/agent-commands.run.js +35 -0
- package/dist/app/features/agent-commands/index.d.ts +2 -0
- package/dist/app/features/agent-commands/index.js +3 -0
- package/dist/app/features/agents/agents.def.d.ts +14 -1
- package/dist/app/features/agents/agents.def.js +61 -6
- package/dist/app/features/agents/agents.run.d.ts +1 -0
- package/dist/app/features/agents/agents.run.js +8 -1
- package/dist/app/features/agents/claude-env.def.d.ts +36 -0
- package/dist/app/features/agents/claude-env.def.js +305 -0
- package/dist/app/features/agents/env.def.d.ts +163 -0
- package/dist/app/features/agents/env.def.js +184 -0
- package/dist/app/features/agents/env.run.d.ts +43 -0
- package/dist/app/features/agents/env.run.js +86 -0
- package/dist/app/features/agents/index.d.ts +2 -0
- package/dist/app/features/agents/index.js +2 -0
- package/dist/app/features/defs.d.ts +171 -3
- package/dist/app/features/defs.js +9 -0
- package/dist/app/features/engine/engine.run.js +1 -1
- package/dist/app/features/github/github.def.d.ts +44 -3
- package/dist/app/features/github/github.def.js +145 -63
- package/dist/app/features/github/github.run.d.ts +9 -2
- package/dist/app/features/github/github.run.js +43 -5
- package/dist/app/features/health/health.def.js +8 -2
- package/dist/app/features/logs/logs.def.js +0 -8
- package/dist/app/features/projects/projects.def.js +2 -2
- package/dist/app/features/projects/projects.run.js +5 -5
- package/dist/app/features/sandbox/sandbox.def.js +7 -3
- package/dist/app/features/sessions/sessions.def.d.ts +4 -4
- package/dist/app/features/sessions/sessions.def.js +0 -5
- package/dist/app/features/sessions/sessions.run.d.ts +1 -1
- package/dist/app/features/sessions/sessions.run.js +2 -2
- package/dist/app/features/settings/categories.def.js +7 -2
- package/dist/app/features/settings/settings-rows.js +6 -2
- package/dist/app/features/settings/settings.def.js +1 -1
- package/dist/app/features/settings/settings.run.d.ts +8 -0
- package/dist/app/features/settings/settings.run.js +12 -3
- package/dist/app/features/storage/storage.run.js +18 -9
- package/dist/app/features/updates/update-lines.js +2 -2
- package/dist/app/features/updates/updates.def.js +1 -1
- package/dist/app/features/updates/updates.run.js +13 -3
- package/dist/app/features/vpn/vpn.def.d.ts +33 -0
- package/dist/app/features/vpn/vpn.def.js +30 -6
- package/dist/app/features/vpn/vpn.run.d.ts +11 -0
- package/dist/app/features/vpn/vpn.run.js +4 -1
- package/dist/app/features/web/web.def.js +2 -2
- package/dist/app/features/web/web.run.js +12 -4
- package/dist/app/kernel/errors.d.ts +7 -0
- package/dist/app/kernel/errors.js +18 -3
- package/dist/app/kernel/rpc.d.ts +6 -1
- package/dist/app/kernel/view.d.ts +11 -1
- package/dist/app/registry.js +7 -1
- package/dist/bin/agent-sandbox.js +2 -2
- package/dist/bin/{chunk-N4GXYTLV.js → chunk-JETGP2C3.js} +239 -72
- package/dist/bin/{chunk-MY7NLQQY.js → chunk-XZKOPGNH.js} +1 -1
- package/dist/bin/{chunk-FRPLQLSY.js → chunk-ZTTOF5V3.js} +6566 -4964
- package/dist/bin/claude-host.js +2 -2
- package/dist/bin/claude-sbx.js +2 -2
- package/dist/bin/codex-sbx.js +2 -2
- package/dist/bin/gemini-sbx.js +2 -2
- package/dist/bin/sandbox.js +2 -2
- package/dist/bin/sbx-hide.js +2 -2
- package/dist/bin/sbx-show.js +2 -2
- package/dist/cli/commands/agent-commands.d.ts +0 -1
- package/dist/cli/commands/agent-commands.js +2 -32
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.js +1 -1
- package/dist/cli/commands/launch/launch.js +2 -2
- package/dist/cli/commands/registry.js +3 -2
- package/dist/cli/manifest.d.ts +3 -3
- package/dist/cli/manifest.js +3 -2
- package/dist/cli/menu/coverage-exempt.d.ts +17 -0
- package/dist/cli/menu/coverage-exempt.js +61 -0
- package/dist/cli/menu/io-menu.d.ts +2 -0
- package/dist/cli/menu/io-menu.js +50 -5
- package/dist/cli/menu/menu.d.ts +1 -1
- package/dist/cli/menu/menu.js +3 -3
- package/dist/cli/menu/pages/accounts-page.js +1 -1
- package/dist/cli/menu/pages/agents-page.d.ts +7 -2
- package/dist/cli/menu/pages/agents-page.js +75 -13
- package/dist/cli/menu/pages/maintenance-page.d.ts +6 -0
- package/dist/cli/menu/pages/maintenance-page.js +10 -4
- package/dist/cli/menu/pages/sessions-page.d.ts +2 -0
- package/dist/cli/menu/pages/sessions-page.js +12 -4
- package/dist/cli/menu/pages/settings-page.js +13 -1
- package/dist/cli/menu/remote-menu.js +1 -1
- package/dist/cli/menu/shell.d.ts +5 -0
- package/dist/cli/menu/shell.js +13 -0
- package/dist/cli/menu/views.js +2 -1
- package/dist/cli/report.js +2 -0
- package/dist/cli/services/agent-commands-service.d.ts +2 -0
- package/dist/cli/services/agent-commands-service.js +13 -7
- package/dist/cli/services/vpn-service.d.ts +5 -1
- package/dist/cli/services/vpn-service.js +6 -1
- package/dist/cli/tui/app.d.ts +5 -0
- package/dist/cli/tui/app.js +2 -0
- package/dist/cli/tui/dialogs/text-screen.js +2 -1
- package/dist/cli/tui/terminal.js +3 -1
- package/dist/core/config/defaults.js +12 -1
- package/dist/core/detect/toolchains.js +9 -0
- package/dist/core/disk.d.ts +1 -5
- package/dist/core/disk.js +1 -16
- package/dist/core/schema/accounts.d.ts +6 -0
- package/dist/core/schema/accounts.js +13 -11
- package/dist/core/schema/codex.d.ts +29 -0
- package/dist/core/schema/codex.js +24 -0
- package/dist/core/schema/config.d.ts +58 -14
- package/dist/core/schema/config.js +6 -4
- package/dist/core/schema/github.js +1 -1
- package/dist/core/schema/index.d.ts +1 -0
- package/dist/core/schema/index.js +1 -0
- package/dist/core/schema/profile.js +8 -4
- package/dist/core/schema/resume.js +1 -1
- package/dist/core/schema/sandbox.js +3 -3
- package/dist/core/schema/toolchains.d.ts +4 -0
- package/dist/core/schema/toolchains.js +3 -0
- package/dist/core/schema/vpn.js +1 -1
- package/dist/core/schema/web.js +3 -3
- package/dist/core/types.d.ts +8 -0
- package/dist/core/util/errors.d.ts +11 -1
- package/dist/core/util/errors.js +7 -1
- package/dist/core/util/index.d.ts +1 -1
- package/dist/core/util/index.js +1 -1
- package/dist/guest/accounts/adapter.d.ts +2 -0
- package/dist/guest/accounts/adapters.js +4 -0
- package/dist/guest/accounts/apply.d.ts +10 -6
- package/dist/guest/accounts/kinds/cfx.d.ts +7 -0
- package/dist/guest/accounts/kinds/cfx.js +33 -3
- package/dist/guest/accounts/kinds/comet.d.ts +7 -0
- package/dist/guest/accounts/kinds/comet.js +50 -0
- package/dist/guest/accounts/kinds/perplexity.d.ts +2 -0
- package/dist/guest/accounts/kinds/perplexity.js +12 -0
- package/dist/guest/accounts/watch.d.ts +2 -0
- package/dist/guest/accounts/watch.js +12 -2
- package/dist/guest/agents/agent-files.d.ts +26 -6
- package/dist/guest/agents/agent-files.js +84 -14
- package/dist/guest/agents/agent-installer.js +1 -1
- package/dist/guest/agents/local-state.d.ts +5 -2
- package/dist/guest/agents/local-state.js +24 -10
- package/dist/guest/agents/profile-links.d.ts +2 -0
- package/dist/guest/agents/profile-links.js +18 -4
- package/dist/guest/apps/after-install.js +19 -0
- package/dist/guest/apps/app-installer.d.ts +11 -0
- package/dist/guest/apps/app-installer.js +69 -6
- package/dist/guest/apps/comet-unpack.d.ts +20 -0
- package/dist/guest/apps/comet-unpack.js +127 -0
- package/dist/guest/apps/index.d.ts +1 -1
- package/dist/guest/apps/index.js +1 -1
- package/dist/guest/apps/resolvers-agents-web.d.ts +2 -0
- package/dist/guest/apps/resolvers-agents-web.js +7 -0
- package/dist/guest/apps/resolvers.js +2 -0
- package/dist/guest/apps/shortcuts.d.ts +2 -0
- package/dist/guest/apps/shortcuts.js +1 -0
- package/dist/guest/apps/unpack.js +14 -4
- package/dist/guest/boot/boot.d.ts +45 -16
- package/dist/guest/boot/boot.js +325 -149
- package/dist/guest/boot/graph.d.ts +252 -0
- package/dist/guest/boot/graph.js +257 -0
- package/dist/guest/boot/guide-lines.d.ts +25 -0
- package/dist/guest/boot/guide-lines.js +41 -0
- package/dist/guest/boot/guide.d.ts +1 -4
- package/dist/guest/boot/guide.js +6 -8
- package/dist/guest/boot/runner.d.ts +77 -0
- package/dist/guest/boot/runner.js +215 -0
- package/dist/guest/browser/cdp.d.ts +71 -0
- package/dist/guest/browser/cdp.js +306 -0
- package/dist/guest/browser/comet.d.ts +28 -0
- package/dist/guest/browser/comet.js +155 -0
- package/dist/guest/daemon/project-provisioner.js +6 -1
- package/dist/guest/daemon/sessions.js +2 -1
- package/dist/guest/devtools/fivem.d.ts +1 -1
- package/dist/guest/devtools/fivem.js +243 -3
- package/dist/guest/entries/daemon.js +2 -0
- package/dist/guest/runtime/log.d.ts +12 -0
- package/dist/guest/runtime/log.js +29 -5
- package/dist/guest/runtime/pools.d.ts +24 -0
- package/dist/guest/runtime/pools.js +60 -0
- package/dist/guest/runtime/process.d.ts +4 -0
- package/dist/guest/runtime/process.js +38 -1
- package/dist/guest/runtime/status.d.ts +5 -1
- package/dist/guest/runtime/status.js +19 -0
- package/dist/guest/setup/addon-mcp.d.ts +1 -1
- package/dist/guest/setup/addon-mcp.js +52 -12
- package/dist/guest/setup/agent-addons.d.ts +3 -2
- package/dist/guest/setup/agent-addons.js +12 -3
- package/dist/guest/setup/environment.d.ts +1 -1
- package/dist/guest/setup/environment.js +25 -12
- package/dist/guest/setup/headroom.d.ts +8 -3
- package/dist/guest/setup/headroom.js +44 -15
- package/dist/guest/setup/path-plan.d.ts +28 -0
- package/dist/guest/setup/path-plan.js +69 -2
- package/dist/guest/setup/shell-path.d.ts +1 -1
- package/dist/guest/setup/shell-path.js +3 -3
- package/dist/guest/toolchains/fivem/artifacts.d.ts +48 -1
- package/dist/guest/toolchains/fivem/artifacts.js +97 -4
- package/dist/guest/toolchains/fivem/fivem.d.ts +32 -1
- package/dist/guest/toolchains/fivem/fivem.js +168 -3
- package/dist/guest/toolchains/fivem/scaffold.d.ts +35 -0
- package/dist/guest/toolchains/fivem/scaffold.js +105 -0
- package/dist/guest/toolchains/fivem/serve-plan.d.ts +34 -0
- package/dist/guest/toolchains/fivem/serve-plan.js +61 -0
- package/dist/guest/toolchains/installers.d.ts +6 -10
- package/dist/guest/toolchains/installers.js +4 -12
- package/dist/guest/toolchains/languages/go.js +1 -1
- package/dist/guest/toolchains/languages/node.js +2 -1
- package/dist/guest/toolchains/languages/php.d.ts +2 -0
- package/dist/guest/toolchains/languages/php.js +13 -1
- package/dist/guest/toolchains/languages/python-tools.js +1 -1
- package/dist/guest/toolchains/languages/ruby.js +1 -1
- package/dist/guest/toolchains/native/autosdk.d.ts +3 -0
- package/dist/guest/toolchains/native/autosdk.js +50 -0
- package/dist/guest/toolchains/native/binstall.js +1 -1
- package/dist/guest/toolchains/native/msvc/packages.js +10 -4
- package/dist/guest/toolchains/native/rust.d.ts +2 -0
- package/dist/guest/toolchains/native/rust.js +11 -4
- package/dist/guest/toolchains/native/unreal.d.ts +2 -0
- package/dist/guest/toolchains/native/unreal.js +19 -6
- package/dist/guest/toolchains/native/vcruntime.d.ts +2 -3
- package/dist/guest/toolchains/native/vcruntime.js +12 -7
- package/dist/guest/toolchains/native/visual-studio.d.ts +5 -2
- package/dist/guest/toolchains/native/visual-studio.js +127 -25
- package/dist/guest/toolchains/native/vs-request.d.ts +23 -0
- package/dist/guest/toolchains/native/vs-request.js +62 -1
- package/dist/guest/toolchains/not-yet.d.ts +1 -1
- package/dist/guest/toolchains/not-yet.js +3 -3
- package/dist/guest/toolchains/persisted.js +2 -7
- package/dist/guest/toolchains/plan.js +27 -11
- package/dist/guest/toolchains/scheduler.d.ts +2 -21
- package/dist/guest/toolchains/scheduler.js +7 -121
- package/dist/guest/toolchains/setup.d.ts +15 -2
- package/dist/guest/toolchains/setup.js +39 -20
- package/dist/guest/toolchains/signature.d.ts +5 -0
- package/dist/guest/toolchains/signature.js +22 -0
- package/dist/guest/toolchains/split.d.ts +28 -0
- package/dist/guest/toolchains/split.js +60 -0
- package/dist/guest/toolchains/steam/client.js +2 -1
- package/dist/guest/toolchains/step-scheduler.d.ts +51 -0
- package/dist/guest/toolchains/step-scheduler.js +147 -0
- package/dist/guest/toolchains/step.d.ts +13 -0
- package/dist/guest/toolchains/tools/git.js +18 -0
- package/dist/guest/vpn/openvpn.js +3 -4
- package/dist/guest/vpn/tunnel.d.ts +3 -0
- package/dist/guest/vpn/tunnel.js +10 -12
- package/dist/guest/vpn/vpn.js +6 -1
- package/dist/guest/vpn/wireguard.js +11 -4
- package/dist/host/accounts/deliver.js +7 -0
- package/dist/host/accounts/handoff.js +2 -6
- package/dist/host/accounts/index.d.ts +1 -1
- package/dist/host/accounts/index.js +1 -1
- package/dist/host/accounts/kinds/cfx.d.ts +1 -1
- package/dist/host/accounts/kinds/cfx.js +47 -4
- package/dist/host/accounts/kinds/comet.d.ts +2 -0
- package/dist/host/accounts/kinds/comet.js +6 -0
- package/dist/host/accounts/kinds/perplexity.d.ts +2 -0
- package/dist/host/accounts/kinds/perplexity.js +30 -0
- package/dist/host/accounts/leases.d.ts +9 -3
- package/dist/host/accounts/leases.js +13 -2
- package/dist/host/accounts/source.d.ts +7 -1
- package/dist/host/accounts/source.js +28 -1
- package/dist/host/accounts/sources.js +4 -0
- package/dist/host/agent-commands/commands.js +1 -1
- package/dist/host/agent-commands/forwarders.d.ts +14 -2
- package/dist/host/agent-commands/forwarders.js +31 -13
- package/dist/host/agent-commands/reconcile.d.ts +2 -1
- package/dist/host/agent-commands/reconcile.js +7 -8
- package/dist/host/agent-commands/user-path.d.ts +5 -0
- package/dist/host/agent-commands/user-path.js +13 -0
- package/dist/host/github/deliver.d.ts +1 -1
- package/dist/host/github/deliver.js +20 -1
- package/dist/host/github/index.d.ts +2 -1
- package/dist/host/github/index.js +1 -0
- package/dist/host/github/token.d.ts +13 -1
- package/dist/host/github/token.js +19 -2
- package/dist/host/github/verify.d.ts +27 -0
- package/dist/host/github/verify.js +61 -0
- package/dist/host/launch/hints/fivem.d.ts +3 -1
- package/dist/host/launch/hints/fivem.js +68 -2
- package/dist/host/launch/session-file.js +5 -0
- package/dist/host/launch/toolchains.d.ts +2 -1
- package/dist/host/launch/toolchains.js +5 -3
- package/dist/host/profile/accounts.js +2 -4
- package/dist/host/profile/claude-login.d.ts +3 -2
- package/dist/host/profile/claude-login.js +3 -13
- package/dist/host/vpn/index.d.ts +2 -1
- package/dist/host/vpn/index.js +2 -1
- package/dist/host/vpn/last.d.ts +28 -0
- package/dist/host/vpn/last.js +43 -0
- package/dist/host/vpn/login.d.ts +3 -1
- package/dist/host/vpn/login.js +17 -3
- package/dist/host/vpn/nordvpn.d.ts +2 -4
- package/dist/host/vpn/nordvpn.js +2 -24
- package/dist/runtime/agent.js +433 -90
- package/dist/runtime/daemon.js +3378 -1546
- package/dist/runtime/db.js +363 -90
- package/dist/runtime/main.js +5134 -2096
- package/dist/runtime/netproxy.js +308 -69
- package/dist/runtime/tool.js +2867 -1765
- package/dist/runtime/view.js +308 -69
- package/dist/selftest/agent-commands.test.js +45 -7
- package/dist/selftest/agent-paths.test.js +40 -13
- package/dist/selftest/agent-settings.test.d.ts +2 -0
- package/dist/selftest/agent-settings.test.js +94 -0
- package/dist/selftest/agents-web.test.d.ts +2 -0
- package/dist/selftest/agents-web.test.js +647 -0
- package/dist/selftest/app.test.js +7 -3
- package/dist/selftest/boot-runner.test.d.ts +2 -0
- package/dist/selftest/boot-runner.test.js +456 -0
- package/dist/selftest/channel.test.js +15 -0
- package/dist/selftest/cli.test.js +4 -0
- package/dist/selftest/fivem.test.js +249 -3
- package/dist/selftest/github.test.js +94 -9
- package/dist/selftest/guest-boot.test.js +3 -0
- package/dist/selftest/health.test.js +1 -1
- package/dist/selftest/index.js +10 -0
- package/dist/selftest/layout.test.js +5 -0
- package/dist/selftest/menu-coverage.test.d.ts +2 -0
- package/dist/selftest/menu-coverage.test.js +46 -0
- package/dist/selftest/menu-screens.js +37 -1
- package/dist/selftest/menu.test.js +5 -3
- package/dist/selftest/pc-installs.test.js +5 -0
- package/dist/selftest/persisted-installs.test.js +72 -0
- package/dist/selftest/service-accounts.test.js +3 -2
- package/dist/selftest/support/engine-golden.js +28 -1
- package/dist/selftest/support/fixtures.d.ts +15 -0
- package/dist/selftest/support/web-preview.d.ts +34 -1
- package/dist/selftest/support/web-preview.js +21 -18
- package/dist/selftest/toolchains.test.js +23 -1
- package/dist/selftest/ui-text.test.d.ts +7 -0
- package/dist/selftest/ui-text.test.js +300 -0
- package/dist/selftest/vpn.test.js +51 -3
- package/dist/shared/accounts/anthropic.d.ts +5 -0
- package/dist/shared/accounts/anthropic.js +15 -0
- package/dist/shared/accounts/index.d.ts +3 -0
- package/dist/shared/accounts/index.js +3 -0
- package/dist/shared/accounts/kinds/comet.d.ts +12 -0
- package/dist/shared/accounts/kinds/comet.js +64 -0
- package/dist/shared/accounts/kinds/perplexity.d.ts +8 -0
- package/dist/shared/accounts/kinds/perplexity.js +37 -0
- package/dist/shared/accounts/kinds.d.ts +24 -5
- package/dist/shared/accounts/kinds.js +86 -4
- package/dist/shared/accounts/payloads.d.ts +81 -0
- package/dist/shared/accounts/payloads.js +39 -1
- package/dist/shared/apps/agent-addons.d.ts +33 -5
- package/dist/shared/apps/agent-addons.js +95 -3
- package/dist/shared/apps/catalogue-agents-web.d.ts +14 -0
- package/dist/shared/apps/catalogue-agents-web.js +112 -0
- package/dist/shared/apps/catalogue-modding.js +32 -1
- package/dist/shared/apps/catalogue.d.ts +27 -3
- package/dist/shared/apps/catalogue.js +2 -1
- package/dist/shared/apps/index.d.ts +3 -1
- package/dist/shared/apps/index.js +3 -1
- package/dist/shared/channel/schema.d.ts +40 -3
- package/dist/shared/channel/schema.js +9 -0
- package/dist/shared/channel/secrets.d.ts +19 -0
- package/dist/shared/concurrency/index.d.ts +3 -0
- package/dist/shared/concurrency/index.js +3 -0
- package/dist/shared/concurrency/installer-retry.d.ts +6 -0
- package/dist/shared/concurrency/installer-retry.js +10 -0
- package/dist/shared/concurrency/limiter.d.ts +19 -0
- package/dist/shared/concurrency/limiter.js +67 -0
- package/dist/shared/concurrency/pools.d.ts +7 -0
- package/dist/shared/concurrency/pools.js +9 -0
- package/dist/shared/download/archive.d.ts +2 -0
- package/dist/shared/download/archive.js +11 -1
- package/dist/shared/download/bounded-fetch.d.ts +13 -0
- package/dist/shared/download/bounded-fetch.js +40 -0
- package/dist/shared/download/downloader.d.ts +5 -0
- package/dist/shared/download/downloader.js +50 -38
- package/dist/shared/download/index.d.ts +2 -1
- package/dist/shared/download/index.js +2 -1
- package/dist/shared/io/disk.d.ts +9 -0
- package/dist/shared/io/disk.js +19 -0
- package/dist/shared/io/index.d.ts +1 -0
- package/dist/shared/io/index.js +1 -0
- package/dist/shared/readiness.d.ts +9 -0
- package/dist/shared/readiness.js +11 -0
- package/dist/shared/signer.d.ts +24 -0
- package/dist/shared/signer.js +15 -0
- package/dist/shared/vpn/failure.d.ts +10 -0
- package/dist/shared/vpn/failure.js +28 -0
- package/dist/sync/watcher.js +2 -0
- package/dist/web/index.html +1 -1
- package/dist/web/{main-GVZWWP4I.js → main-CCILLX2M.js} +75 -74
- package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
- package/native/csharp/HostTools/Program.cs +14 -1
- package/native/csharp/HostTools/UserPath.cs +17 -0
- package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
- package/native/scripts/edit-user-path.ps1 +6 -2
- package/package.json +1 -1
- package/sandbox/addons/browser-use-mcp/requirements.in +1 -0
- package/sandbox/addons/browser-use-mcp/requirements.txt +2350 -0
- package/sandbox/addons/chrome-devtools-mcp/package-lock.json +38 -0
- package/sandbox/addons/chrome-devtools-mcp/package.json +7 -0
- package/sandbox/addons/comet-mcp/package-lock.json +1277 -0
- package/sandbox/addons/comet-mcp/package.json +7 -0
- package/sandbox/addons/perplexity-mcp/package-lock.json +1655 -0
- package/sandbox/addons/perplexity-mcp/package.json +7 -0
- package/sandbox/scripts/add-firewall-port.ps1 +18 -4
- package/sandbox/scripts/get-signature.ps1 +13 -0
- package/sandbox/scripts/set-machine-environment.ps1 +30 -15
- package/sandbox/templates/fivem/README.txt +6 -2
- package/sandbox/templates/fivem/cs/Client/Client.csproj +15 -0
- package/sandbox/templates/fivem/cs/Client/ClientMain.cs +20 -0
- package/sandbox/templates/fivem/cs/Server/Server.csproj +14 -0
- package/sandbox/templates/fivem/cs/Server/ServerMain.cs +20 -0
- package/sandbox/templates/fivem/cs/fxmanifest.lua +11 -0
- package/sandbox/templates/fivem/js/client.js +12 -0
- package/sandbox/templates/fivem/js/fxmanifest.lua +9 -0
- package/sandbox/templates/fivem/js/server.js +6 -0
- package/sandbox/templates/fivem/lua/client.lua +8 -0
- package/sandbox/templates/fivem/lua/fxmanifest.lua +10 -0
- package/sandbox/templates/fivem/lua/server.lua +6 -0
- package/sandbox/templates/fivem/server.cfg +37 -0
- package/sandbox/templates/fivem/ts/build.js +17 -0
- package/sandbox/templates/fivem/ts/fxmanifest.lua +9 -0
- package/sandbox/templates/fivem/ts/package.json +16 -0
- package/sandbox/templates/fivem/ts/src/client/client.ts +12 -0
- package/sandbox/templates/fivem/ts/src/client/tsconfig.json +13 -0
- package/sandbox/templates/fivem/ts/src/server/server.ts +6 -0
- package/sandbox/templates/fivem/ts/src/server/tsconfig.json +13 -0
- package/schemas/config.schema.json +120 -27
- package/schemas/sandbox-config.schema.json +45 -14
- package/sandbox/scripts/get-signer.ps1 +0 -8
package/dist/bin/claude-host.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/claude-host.ts
|
|
9
9
|
var args = process.argv.slice(2);
|
package/dist/bin/claude-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/claude-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "claude" });
|
package/dist/bin/codex-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/codex-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "codex" });
|
package/dist/bin/gemini-sbx.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/gemini-sbx.ts
|
|
9
9
|
run(process.argv.slice(2), { harness: "gemini" });
|
package/dist/bin/sandbox.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sandbox.ts
|
|
9
9
|
run(process.argv.slice(2));
|
package/dist/bin/sbx-hide.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sbx-hide.ts
|
|
9
9
|
run(process.argv.slice(2), { command: "hide" });
|
package/dist/bin/sbx-show.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JETGP2C3.js";
|
|
6
|
+
import "./chunk-ZTTOF5V3.js";
|
|
7
7
|
|
|
8
8
|
// src/bin/sbx-show.ts
|
|
9
9
|
run(process.argv.slice(2), { command: "show" });
|
|
@@ -3,4 +3,3 @@ import type { Reconciled } from '../../host/agent-commands/index.js';
|
|
|
3
3
|
import { type Context } from './context.js';
|
|
4
4
|
/** Brings this PC in line with agentCommands and says what changed (used after on/off, settings and launch). */
|
|
5
5
|
export declare function syncAgentCommands(ctx: Context, config: Config, quiet?: boolean): Reconciled | null;
|
|
6
|
-
export declare function agentCommandsCommand(ctx: Context): number;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c, table } from '../output/index.js';
|
|
1
|
+
import { c } from '../output/index.js';
|
|
3
2
|
import { AgentCommandsService } from '../services/index.js';
|
|
4
3
|
/** Brings this PC in line with agentCommands and says what changed (used after on/off, settings and launch). */
|
|
5
4
|
export function syncAgentCommands(ctx, config, quiet = false) {
|
|
@@ -7,39 +6,10 @@ export function syncAgentCommands(ctx, config, quiet = false) {
|
|
|
7
6
|
if (!result || !result.changed || quiet)
|
|
8
7
|
return result;
|
|
9
8
|
if (result.on) {
|
|
10
|
-
console.log('Agent commands
|
|
11
|
-
(result.commands.map((a) => a.command).join(', ') || 'no installed agents found'));
|
|
9
|
+
console.log('Agent commands are on for: ' + (result.commands.map((a) => a.command).join(', ') || 'no installed agents found'));
|
|
12
10
|
console.log(c.dim('Open a new terminal, then type e.g. claude in any project folder. Run the real one: set SANDBOX_AGENT_DIRECT=1'));
|
|
13
11
|
}
|
|
14
12
|
else
|
|
15
13
|
console.log('Agent commands are off: claude, codex ... run on this PC again (open a new terminal).');
|
|
16
14
|
return result;
|
|
17
15
|
}
|
|
18
|
-
export function agentCommandsCommand(ctx) {
|
|
19
|
-
const service = new AgentCommandsService(ctx);
|
|
20
|
-
service.assertOnPc();
|
|
21
|
-
const action = ctx.options.positionals[0] ?? 'status';
|
|
22
|
-
if (action === 'status') {
|
|
23
|
-
const { enabled, dir, found } = service.status();
|
|
24
|
-
console.log('Agent commands (Beta): ' + (enabled ? c.green('on') : 'off') + c.dim(' (' + dir + ')'));
|
|
25
|
-
if (found.length)
|
|
26
|
-
table(found.map((a) => [a.command, 'sandboxed ' + a.harness + (enabled ? '' : ' when on'), c.dim('real: ' + a.real)]));
|
|
27
|
-
else
|
|
28
|
-
console.log(c.dim('No agents found on this PC (claude, codex, gemini ... on your PATH).'));
|
|
29
|
-
if (!enabled)
|
|
30
|
-
console.log(c.dim('Turn on with: sandbox agent-commands on'));
|
|
31
|
-
return 0;
|
|
32
|
-
}
|
|
33
|
-
if (action !== 'on' && action !== 'off')
|
|
34
|
-
fail('Unknown action "' + action + '".', 'Use: sandbox agent-commands [status|on|off]');
|
|
35
|
-
const result = service.setEnabled(action === 'on');
|
|
36
|
-
if (result?.on) {
|
|
37
|
-
console.log('Agent commands (Beta) are on: ' +
|
|
38
|
-
(result.commands.map((a) => a.command).join(', ') || 'no installed agents found yet'));
|
|
39
|
-
console.log(c.dim('Open a new terminal, then type e.g. claude in a project folder: it starts in a hidden sandbox and attaches.'));
|
|
40
|
-
console.log(c.dim('Run the real one on this PC: set SANDBOX_AGENT_DIRECT=1 (PowerShell: $env:SANDBOX_AGENT_DIRECT=1). Turn off: sandbox agent-commands off'));
|
|
41
|
-
}
|
|
42
|
-
else
|
|
43
|
-
console.log('Agent commands are off: claude, codex ... run on this PC again. Open a new terminal.');
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
@@ -7,5 +7,5 @@ export { contextOrDefaults } from './context.js';
|
|
|
7
7
|
export { attach, db, exec } from './sessions/index.js';
|
|
8
8
|
export { resume } from './resume.js';
|
|
9
9
|
export { claudeHost, config, doctor, hostCommand, logs, migrateBeforeCommand, sync, updatesBeforeCommand, watcher, } from './maintenance/index.js';
|
|
10
|
-
export {
|
|
10
|
+
export { syncAgentCommands } from './agent-commands.js';
|
|
11
11
|
export { HANDLERS, type Handler } from './registry.js';
|
|
@@ -7,5 +7,5 @@ export { contextOrDefaults } from './context.js';
|
|
|
7
7
|
export { attach, db, exec } from './sessions/index.js';
|
|
8
8
|
export { resume } from './resume.js';
|
|
9
9
|
export { claudeHost, config, doctor, hostCommand, logs, migrateBeforeCommand, sync, updatesBeforeCommand, watcher, } from './maintenance/index.js';
|
|
10
|
-
export {
|
|
10
|
+
export { syncAgentCommands } from './agent-commands.js';
|
|
11
11
|
export { HANDLERS } from './registry.js';
|
|
@@ -74,13 +74,13 @@ class Launcher {
|
|
|
74
74
|
return this.launchSessions();
|
|
75
75
|
return this.launchHere();
|
|
76
76
|
}
|
|
77
|
-
/** agentCommands
|
|
77
|
+
/** agentCommands follows the config: a setting changed in the file takes effect here too. Never blocks. */
|
|
78
78
|
syncAgentCommands() {
|
|
79
79
|
try {
|
|
80
80
|
syncAgentCommands(this.ctx, this.ctx.loaded.config);
|
|
81
81
|
}
|
|
82
82
|
catch (e) {
|
|
83
|
-
console.warn('Agent commands
|
|
83
|
+
console.warn('Agent commands: ' + errMsg(e));
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
@@ -3,6 +3,7 @@ import { launch } from './launch/index.js';
|
|
|
3
3
|
import { setup } from './setup/index.js';
|
|
4
4
|
import { cleanData, showData } from '../../app/features/data/index.js';
|
|
5
5
|
import { attach, db, exec } from './sessions/index.js';
|
|
6
|
+
import { agentCommandsStatus } from '../../app/features/agent-commands/index.js';
|
|
6
7
|
import { listAccounts } from '../../app/features/accounts/index.js';
|
|
7
8
|
import { containedStatus, showStorage } from '../../app/features/storage/index.js';
|
|
8
9
|
import { listProjects } from '../../app/features/projects/index.js';
|
|
@@ -11,7 +12,6 @@ import { fail } from '../../core/util/index.js';
|
|
|
11
12
|
import { claudeHost, config, doctor, hostCommand, logs, sync, watcher } from './maintenance/index.js';
|
|
12
13
|
import { engine } from './engine.js';
|
|
13
14
|
import { resume } from './resume.js';
|
|
14
|
-
import { agentCommandsCommand } from './agent-commands.js';
|
|
15
15
|
import { vpn } from './vpn.js';
|
|
16
16
|
import { github } from './github.js';
|
|
17
17
|
import { web, webServer } from './web.js';
|
|
@@ -21,7 +21,6 @@ export const HANDLERS = {
|
|
|
21
21
|
generate: (ctx) => launch(ctx, true),
|
|
22
22
|
attach: attach,
|
|
23
23
|
exec: exec,
|
|
24
|
-
'agent-commands': agentCommandsCommand,
|
|
25
24
|
db: db,
|
|
26
25
|
resume: resume,
|
|
27
26
|
// The bare command lists; its actions (save, use ...) are the operations' hints.
|
|
@@ -52,6 +51,8 @@ export const HANDLERS = {
|
|
|
52
51
|
'host-claude': claudeHost,
|
|
53
52
|
host: hostCommand,
|
|
54
53
|
_watch: watcher,
|
|
54
|
+
// The bare command shows the status; on and off are the operations' hints (src/app/features/agent-commands).
|
|
55
|
+
'agent-commands': definitionHandler(agentCommandsStatus),
|
|
55
56
|
vpn: vpn,
|
|
56
57
|
github: github,
|
|
57
58
|
web: web,
|
package/dist/cli/manifest.d.ts
CHANGED
|
@@ -296,7 +296,7 @@ declare const COMMAND_LIST: readonly [{
|
|
|
296
296
|
readonly name: "account";
|
|
297
297
|
readonly summary: "agent logins (list, save, use, default, remove) and service sign-ins (status, import, login, logout)";
|
|
298
298
|
readonly group: "Projects & accounts";
|
|
299
|
-
readonly examples: readonly ["sandbox account save work save the login you signed in with inside the sandbox", "sandbox account use work the sandbox uses it (running sessions restart)", "sandbox account status the service sign-ins (Epic, Steam, Unity, signing keys ...)", "sandbox account import epic take this PC's Epic Games Launcher sign-in for sandboxes", "sandbox account login cfx type a FiveM server key to keep for sandboxes", "sandbox account logout steam forget a service sign-in", "sandbox account save free --api-key save an Anthropic API key you paste in (not shown)"];
|
|
299
|
+
readonly examples: readonly ["sandbox account save work save the login you signed in with inside the sandbox", "sandbox account use work the sandbox uses it (running sessions restart)", "sandbox account status the service sign-ins (Epic, Steam, Unity, signing keys ...)", "sandbox account import epic take this PC's Epic Games Launcher sign-in for sandboxes", "sandbox account login cfx type a FiveM server key to keep for sandboxes", "sandbox account login perplexity type a Perplexity API key (or: import perplexity --from .env)", "sandbox account logout steam forget a service sign-in", "sandbox account save free --api-key save an Anthropic API key you paste in (not shown)"];
|
|
300
300
|
readonly args: readonly [{
|
|
301
301
|
readonly name: "action";
|
|
302
302
|
readonly description: "what to do";
|
|
@@ -304,7 +304,7 @@ declare const COMMAND_LIST: readonly [{
|
|
|
304
304
|
readonly choices: readonly ["list", "save", "use", "default", "rename", "remove"];
|
|
305
305
|
}, {
|
|
306
306
|
readonly name: "name";
|
|
307
|
-
readonly description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo or
|
|
307
|
+
readonly description: "account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity or comet";
|
|
308
308
|
readonly required: false;
|
|
309
309
|
readonly choices: "accounts";
|
|
310
310
|
}];
|
|
@@ -702,7 +702,7 @@ declare const COMMAND_LIST: readonly [{
|
|
|
702
702
|
readonly examples: readonly ["sandbox config set sandbox.memoryMb 8192", "sandbox config get sandbox.memoryMb", "sandbox config reset sandbox.memoryMb", "sandbox config list", "sandbox config export team-settings.json", "sandbox config import team-settings.json"];
|
|
703
703
|
}, {
|
|
704
704
|
readonly name: "agent-commands";
|
|
705
|
-
readonly summary: "
|
|
705
|
+
readonly summary: "make claude, codex ... on this PC start in a hidden sandbox and attach";
|
|
706
706
|
readonly group: "Advanced";
|
|
707
707
|
readonly args: readonly [{
|
|
708
708
|
readonly name: "action";
|
package/dist/cli/manifest.js
CHANGED
|
@@ -286,6 +286,7 @@ const COMMAND_LIST = [
|
|
|
286
286
|
'sandbox account status the service sign-ins (Epic, Steam, Unity, signing keys ...)',
|
|
287
287
|
"sandbox account import epic take this PC's Epic Games Launcher sign-in for sandboxes",
|
|
288
288
|
'sandbox account login cfx type a FiveM server key to keep for sandboxes',
|
|
289
|
+
'sandbox account login perplexity type a Perplexity API key (or: import perplexity --from .env)',
|
|
289
290
|
'sandbox account logout steam forget a service sign-in',
|
|
290
291
|
'sandbox account save free --api-key save an Anthropic API key you paste in (not shown)',
|
|
291
292
|
],
|
|
@@ -298,7 +299,7 @@ const COMMAND_LIST = [
|
|
|
298
299
|
},
|
|
299
300
|
{
|
|
300
301
|
name: 'name',
|
|
301
|
-
description: 'account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo or
|
|
302
|
+
description: 'account name, or the service (status, import, login, logout): epic, steam, unity, cfx, keystore, play, expo, appstore, perplexity or comet',
|
|
302
303
|
required: false,
|
|
303
304
|
choices: 'accounts',
|
|
304
305
|
},
|
|
@@ -491,7 +492,7 @@ const COMMAND_LIST = [
|
|
|
491
492
|
},
|
|
492
493
|
{
|
|
493
494
|
name: 'agent-commands',
|
|
494
|
-
summary: '
|
|
495
|
+
summary: 'make claude, codex ... on this PC start in a hidden sandbox and attach',
|
|
495
496
|
group: 'Advanced',
|
|
496
497
|
args: [{ name: 'action', description: 'on, off or status', required: false, choices: ['status', 'on', 'off'] }],
|
|
497
498
|
options: [],
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SECTION_LABELS } from './shell.js';
|
|
2
|
+
type Section = (typeof SECTION_LABELS)[number];
|
|
3
|
+
export type CommandPlace = {
|
|
4
|
+
readonly place: `${Section}${string}`;
|
|
5
|
+
} | {
|
|
6
|
+
readonly exempt: string;
|
|
7
|
+
};
|
|
8
|
+
/** Every command of cli/manifest.ts (hand-written and from the shared core's CLI hints). */
|
|
9
|
+
export declare const COMMAND_PLACES: Readonly<Record<string, CommandPlace>>;
|
|
10
|
+
/**
|
|
11
|
+
* Operations and queries that declare `surfaces.except.menu`: the id and why the menu does without them. A definition
|
|
12
|
+
* with a menu exemption that is not here fails the coverage test.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MENU_EXEMPT: Readonly<Record<string, string>>;
|
|
15
|
+
/** Setting keys (or key prefixes ending in a dot) the menu's Settings page does not list as a row. */
|
|
16
|
+
export declare const SETTING_PLACES: Readonly<Record<string, string>>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Every command of cli/manifest.ts (hand-written and from the shared core's CLI hints). */
|
|
2
|
+
export const COMMAND_PLACES = {
|
|
3
|
+
launch: { place: 'Agents > Start (with the options of the tab)' },
|
|
4
|
+
start: { place: 'Agents > Start several' },
|
|
5
|
+
generate: { place: 'Maintenance > More commands' },
|
|
6
|
+
attach: { place: 'Sessions (Enter on a session)' },
|
|
7
|
+
resume: { place: 'Sessions (key o: reopen last sessions)' },
|
|
8
|
+
db: { place: 'Sandbox > Databases' },
|
|
9
|
+
exec: { place: 'Maintenance > More commands' },
|
|
10
|
+
projects: { place: 'Sandbox > Projects' },
|
|
11
|
+
account: { place: 'Accounts' },
|
|
12
|
+
data: { place: 'Maintenance > Data' },
|
|
13
|
+
storage: { place: 'Maintenance > Storage' },
|
|
14
|
+
engine: { place: 'Maintenance > Engine' },
|
|
15
|
+
sync: { place: 'Maintenance > More commands' },
|
|
16
|
+
logs: { place: 'Maintenance > Logs (key f follows)' },
|
|
17
|
+
setup: { place: 'Maintenance > Health' },
|
|
18
|
+
doctor: { place: 'Maintenance > Health' },
|
|
19
|
+
repair: { place: 'Maintenance > Health' },
|
|
20
|
+
'self-test': { exempt: 'a developer check that refuses to run outside a throwaway machine' },
|
|
21
|
+
config: { place: 'Settings (every setting) and Maintenance > More commands' },
|
|
22
|
+
'agent-commands': { place: 'Agents > Agent commands' },
|
|
23
|
+
vpn: { place: 'Settings > Network > VPN' },
|
|
24
|
+
github: { place: 'Accounts > GitHub (and Settings > Security)' },
|
|
25
|
+
'host-claude': { place: 'Agents > On this PC' },
|
|
26
|
+
host: { place: 'Agents > On this PC' },
|
|
27
|
+
menu: { exempt: 'it is the menu' },
|
|
28
|
+
web: { place: 'Maintenance > Web UI' },
|
|
29
|
+
remote: { exempt: "it opens this menu on another Windows user's web UI: the menu cannot start itself inside itself" },
|
|
30
|
+
_watch: { exempt: 'internal: the background history sync' },
|
|
31
|
+
_web: { exempt: 'internal: the web server process' },
|
|
32
|
+
show: { place: 'Sandbox > Status' },
|
|
33
|
+
hide: { place: 'Sandbox > Status' },
|
|
34
|
+
stop: { place: 'Sandbox > Status' },
|
|
35
|
+
cleanup: { place: 'Sandbox > Status (when a dead sandbox left programs behind)' },
|
|
36
|
+
restart: { place: 'Sessions (key r)' },
|
|
37
|
+
shell: { place: 'Sessions (key s)' },
|
|
38
|
+
close: { place: 'Sessions' },
|
|
39
|
+
clean: { place: 'Maintenance > Data' },
|
|
40
|
+
update: { place: 'Maintenance > Updates' },
|
|
41
|
+
migrate: { place: 'Maintenance > Updates' },
|
|
42
|
+
status: { place: 'Sandbox > Status' },
|
|
43
|
+
sessions: { place: 'Sessions' },
|
|
44
|
+
audit: { place: 'Maintenance > Activity' },
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Operations and queries that declare `surfaces.except.menu`: the id and why the menu does without them. A definition
|
|
48
|
+
* with a menu exemption that is not here fails the coverage test.
|
|
49
|
+
*/
|
|
50
|
+
export const MENU_EXEMPT = {
|
|
51
|
+
'agents.start': 'the menu starts agents with launch, which can boot the sandbox and attach this terminal',
|
|
52
|
+
'engine.check': 'the Engine category shows every engine and its check with the fixes (engine.status)',
|
|
53
|
+
'files.browse': 'the menu asks for a path as text and checks it',
|
|
54
|
+
'settings.get': 'Settings shows every value',
|
|
55
|
+
};
|
|
56
|
+
/** Setting keys (or key prefixes ending in a dot) the menu's Settings page does not list as a row. */
|
|
57
|
+
export const SETTING_PLACES = {
|
|
58
|
+
'apps.install': 'the Apps section (a tick per app)',
|
|
59
|
+
'apps.custom': 'the Apps section (your own apps)',
|
|
60
|
+
$schema: 'not a setting: the JSON schema address of the file',
|
|
61
|
+
};
|
|
@@ -22,6 +22,8 @@ export declare class MenuOperations {
|
|
|
22
22
|
perform(action: Action, where: Where, busy?: ShowBusy, onOutput?: (output: unknown) => void): Promise<Performed>;
|
|
23
23
|
/** The values of an action's fields, from the editors that fit them (undefined: one was backed out of). */
|
|
24
24
|
private fields;
|
|
25
|
+
/** A failure that names a fix: a dialog with the fix as a button; its result replaces the failure notice. */
|
|
26
|
+
private offerFix;
|
|
25
27
|
/**
|
|
26
28
|
* Runs a definition with this input and returns the notice to show: its text (✓), the problem and its fix (✘), or
|
|
27
29
|
* undefined when a question was declined (nothing changed, nothing to say).
|
package/dist/cli/menu/io-menu.js
CHANGED
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
import { operationById } from '../../app/features/defs.js';
|
|
6
6
|
import { runDefinition } from '../../app/registry.js';
|
|
7
7
|
import { Cancelled, ioFromAsker, SchemaNode, toWireError, } from '../../app/kernel/index.js';
|
|
8
|
+
import { spawn } from 'node:child_process';
|
|
8
9
|
import { errMsg } from '../../core/util/index.js';
|
|
10
|
+
import { SYSTEM } from '../../shared/system.js';
|
|
9
11
|
import { Theme } from '../tui/index.js';
|
|
10
12
|
import { askPath } from './settings/ask-path.js';
|
|
11
13
|
import { ValueEditor } from './settings/value-editor.js';
|
|
14
|
+
import { MENU_VIEWS } from './views.js';
|
|
12
15
|
async function ask(app, where, q, said) {
|
|
13
16
|
const lines = [...said, ...(q.lines ?? []), ...('problem' in q && q.problem ? [Theme.warn(q.problem)] : [])];
|
|
14
17
|
const path = [...where];
|
|
@@ -51,8 +54,27 @@ async function ask(app, where, q, said) {
|
|
|
51
54
|
});
|
|
52
55
|
}
|
|
53
56
|
}
|
|
57
|
+
/** The menu section (and category) that shows a view, for a link to it. */
|
|
58
|
+
function placeOf(view) {
|
|
59
|
+
const place = MENU_VIEWS.find((m) => m.view.id === view);
|
|
60
|
+
if (!place)
|
|
61
|
+
return undefined;
|
|
62
|
+
return { section: place.section, ...(view === 'agentEnv' ? { category: 'env' } : {}) };
|
|
63
|
+
}
|
|
64
|
+
/** Opens a page in the browser (https://github.com/ only). */
|
|
65
|
+
function openUrl(href) {
|
|
66
|
+
if (!/^https:\/\/github\.com\//.test(href))
|
|
67
|
+
return;
|
|
68
|
+
const child = spawn(SYSTEM.cmd(), ['/c', 'start', '""', href.replace(/&/g, '^&')], {
|
|
69
|
+
stdio: 'ignore',
|
|
70
|
+
detached: true,
|
|
71
|
+
windowsHide: true,
|
|
72
|
+
});
|
|
73
|
+
child.on('error', () => undefined);
|
|
74
|
+
child.unref();
|
|
75
|
+
}
|
|
54
76
|
/** Where a link goes in the menu: what needs the terminal is run on the normal screen. */
|
|
55
|
-
function follow(target) {
|
|
77
|
+
function follow(target, app) {
|
|
56
78
|
switch (target.kind) {
|
|
57
79
|
case 'terminal':
|
|
58
80
|
return { exit: { kind: 'run', argv: ['attach', target.session] } };
|
|
@@ -60,8 +82,19 @@ function follow(target) {
|
|
|
60
82
|
return { exit: { kind: 'run', argv: ['launch', '--harness', target.agent] } };
|
|
61
83
|
case 'command':
|
|
62
84
|
return { exit: { kind: 'run', argv: [...target.argv] } };
|
|
63
|
-
case 'view':
|
|
64
|
-
|
|
85
|
+
case 'view': {
|
|
86
|
+
const place = placeOf(target.view);
|
|
87
|
+
if (!place || !app)
|
|
88
|
+
return {};
|
|
89
|
+
return app.goTo(place.section, { category: place.category }).then(() => ({}));
|
|
90
|
+
}
|
|
91
|
+
case 'setting':
|
|
92
|
+
if (!app)
|
|
93
|
+
return {};
|
|
94
|
+
return app.goTo('Settings', { search: target.key }).then(() => ({}));
|
|
95
|
+
case 'url':
|
|
96
|
+
openUrl(target.href);
|
|
97
|
+
return { notice: Theme.muted('Opened ' + target.href + ' in your browser.') };
|
|
65
98
|
}
|
|
66
99
|
}
|
|
67
100
|
export class MenuOperations {
|
|
@@ -74,7 +107,7 @@ export class MenuOperations {
|
|
|
74
107
|
/** Does what an action of a page says: follows a link, or asks for its fields and runs its operation. */
|
|
75
108
|
async perform(action, where, busy, onOutput) {
|
|
76
109
|
if (action.kind === 'link')
|
|
77
|
-
return follow(action.target);
|
|
110
|
+
return follow(action.target, this.app);
|
|
78
111
|
const def = operationById(action.op);
|
|
79
112
|
if (!def)
|
|
80
113
|
return { notice: Theme.error(Theme.glyph.cross + ' Unknown operation ' + action.op + '.') };
|
|
@@ -105,6 +138,17 @@ export class MenuOperations {
|
|
|
105
138
|
}
|
|
106
139
|
return answers;
|
|
107
140
|
}
|
|
141
|
+
/** A failure that names a fix: a dialog with the fix as a button; its result replaces the failure notice. */
|
|
142
|
+
async offerFix(problem, where, busy) {
|
|
143
|
+
const fix = problem.action;
|
|
144
|
+
const def = fix ? operationById(fix.op) : undefined;
|
|
145
|
+
if (!fix || !def)
|
|
146
|
+
return undefined;
|
|
147
|
+
const yes = await this.app.ask(problem.message, problem.fix ? [problem.fix] : [], fix.label);
|
|
148
|
+
if (!yes)
|
|
149
|
+
return undefined;
|
|
150
|
+
return (await this.run(def, fix.input ?? {}, where, busy)) ?? Theme.ok(Theme.glyph.ok + ' Done.');
|
|
151
|
+
}
|
|
108
152
|
/**
|
|
109
153
|
* Runs a definition with this input and returns the notice to show: its text (✓), the problem and its fix (✘), or
|
|
110
154
|
* undefined when a question was declined (nothing changed, nothing to say).
|
|
@@ -129,7 +173,8 @@ export class MenuOperations {
|
|
|
129
173
|
const problem = toWireError(e);
|
|
130
174
|
if (problem.kind === 'bug')
|
|
131
175
|
return Theme.error(Theme.glyph.cross + ' ' + errMsg(e));
|
|
132
|
-
|
|
176
|
+
const notice = Theme.error(Theme.glyph.cross + ' ' + problem.message) + (problem.fix ? Theme.muted(' ' + problem.fix) : '');
|
|
177
|
+
return (await this.offerFix(problem, where, busy)) ?? notice;
|
|
133
178
|
}
|
|
134
179
|
}
|
|
135
180
|
}
|
package/dist/cli/menu/menu.d.ts
CHANGED
|
@@ -23,6 +23,6 @@ export declare class Menu {
|
|
|
23
23
|
private execute;
|
|
24
24
|
/** Shows the end of a log on the normal screen. */
|
|
25
25
|
private view;
|
|
26
|
-
/** After a save: agent commands
|
|
26
|
+
/** After a save: agent commands may have been switched, which changes this PC. */
|
|
27
27
|
private applyAgentCommands;
|
|
28
28
|
}
|
package/dist/cli/menu/menu.js
CHANGED
|
@@ -168,7 +168,7 @@ export class Menu {
|
|
|
168
168
|
await pressAnyKey(Theme.muted('Press any key for the menu…'));
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
|
-
/** After a save: agent commands
|
|
171
|
+
/** After a save: agent commands may have been switched, which changes this PC. */
|
|
172
172
|
applyAgentCommands(saved) {
|
|
173
173
|
if (!saved.files.some((f) => !f.isProject))
|
|
174
174
|
return undefined;
|
|
@@ -177,11 +177,11 @@ export class Menu {
|
|
|
177
177
|
if (!result?.changed)
|
|
178
178
|
return undefined;
|
|
179
179
|
return result.on
|
|
180
|
-
? 'Agent commands
|
|
180
|
+
? 'Agent commands are on: open a new terminal.'
|
|
181
181
|
: 'Agent commands are off: claude, codex ... run on this PC again (open a new terminal).';
|
|
182
182
|
}
|
|
183
183
|
catch (e) {
|
|
184
|
-
return 'Agent commands
|
|
184
|
+
return 'Agent commands: ' + errMsg(e);
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
}
|
|
@@ -33,7 +33,7 @@ export function accountsOptions(m) {
|
|
|
33
33
|
...m.services.map((s) => ({
|
|
34
34
|
id: serviceCategory(s.kind),
|
|
35
35
|
label: s.label,
|
|
36
|
-
description: 'Your ' + s.label + ' sign-in for sandboxes that use ' + s.
|
|
36
|
+
description: 'Your ' + s.label + ' sign-in for sandboxes that use ' + s.usedFor + '.',
|
|
37
37
|
})),
|
|
38
38
|
],
|
|
39
39
|
items: [
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AgentCommandsStatus as AgentCommandsFacts } from '../../../app/features/agent-commands/index.js';
|
|
2
|
+
import { type AgentEnv, type AgentsList } from '../../../app/features/agents/index.js';
|
|
2
3
|
import type { ConfigFile } from '../../../app/features/settings/index.js';
|
|
3
4
|
import type { Context } from '../../commands/context.js';
|
|
4
5
|
import { type App, type Category, type ListOptions, type ListResult } from '../../tui/index.js';
|
|
@@ -17,8 +18,12 @@ export interface AgentsModel {
|
|
|
17
18
|
readonly window: WindowChoice;
|
|
18
19
|
/** Agents that can be run on this PC without the sandbox (see hostAgentsToShow). */
|
|
19
20
|
readonly hostAgents: readonly string[];
|
|
21
|
+
/** Whether agent commands are on and which agents were found (the "On this PC" category). */
|
|
22
|
+
readonly agentCommands?: AgentCommandsFacts;
|
|
20
23
|
/** The agents you added yourself: only these can be removed (the built-in ones stay). */
|
|
21
24
|
readonly removable?: readonly string[];
|
|
25
|
+
/** Claude's environment variables (the Claude environment tab); missing when Claude is not an agent here. */
|
|
26
|
+
readonly claudeEnv?: AgentEnv;
|
|
22
27
|
}
|
|
23
28
|
/** The agents page's data as the agents view takes it. Pure. */
|
|
24
29
|
export declare function agentsList(m: AgentsModel): AgentsList;
|
|
@@ -34,7 +39,7 @@ export declare function startArgv(m: AgentsModel, agent: string, cwd: string): s
|
|
|
34
39
|
/** Settings has unsaved changes to the agents (their list or the default): the agent operations wait for them. */
|
|
35
40
|
export declare function agentsHaveStagedChanges(file: ConfigFile, draft: Draft): boolean;
|
|
36
41
|
/** The categories of the agents section; "On this PC" only when there is something in it. Pure. */
|
|
37
|
-
export declare function agentCategories(m: Pick<AgentsModel, 'folder' | 'hostAgents'>): Category[];
|
|
42
|
+
export declare function agentCategories(m: Pick<AgentsModel, 'folder' | 'hostAgents' | 'claudeEnv'>): Category[];
|
|
38
43
|
/** The list for the agents section. Pure. */
|
|
39
44
|
export declare function agentsOptions(m: AgentsModel, cwd?: string): ListOptions<string>;
|
|
40
45
|
export declare class AgentsPage extends ListPage<string> {
|