@phnx-labs/agents-cli 1.22.113 → 1.22.115
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/CHANGELOG.md +139 -0
- package/README.md +32 -113
- package/dist/browser.js +0 -0
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +57 -66
- package/dist/commands/accounts.d.ts +3 -77
- package/dist/commands/accounts.js +13 -366
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/audit.js +1 -1
- package/dist/commands/auth.js +0 -2
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/browser.d.ts +53 -0
- package/dist/commands/browser.js +199 -9
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/doctor.d.ts +2 -3
- package/dist/commands/doctor.js +0 -11
- package/dist/commands/events.d.ts +1 -3
- package/dist/commands/events.js +4 -7
- package/dist/commands/exec.d.ts +0 -1
- package/dist/commands/exec.js +2 -7
- package/dist/commands/feed-watch.js +52 -8
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/focus.js +1 -1
- package/dist/commands/go.d.ts +0 -17
- package/dist/commands/go.js +2 -19
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/mcp.js +8 -83
- package/dist/commands/memory.js +4 -47
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +7 -7
- package/dist/commands/plugins.js +1 -93
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/repo.js +0 -44
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +5 -2
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +23 -4
- package/dist/commands/send.d.ts +4 -4
- package/dist/commands/send.js +6 -51
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-backup-setup.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -6
- package/dist/commands/sessions-share.d.ts +5 -7
- package/dist/commands/sessions-share.js +98 -49
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +13 -104
- package/dist/commands/sessions.js +11 -18
- package/dist/commands/setup-browser.js +18 -2
- package/dist/commands/setup-computer.js +20 -6
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup-secrets.js +24 -4
- package/dist/commands/setup-terminal.d.ts +3 -0
- package/dist/commands/setup-terminal.js +22 -0
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +21 -11
- package/dist/commands/skills.js +0 -8
- package/dist/commands/ssh.d.ts +6 -0
- package/dist/commands/ssh.js +92 -233
- package/dist/commands/sync.js +14 -5
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +2 -2
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/traces.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/add.d.ts +0 -5
- package/dist/lib/accounts/add.js +1 -7
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/artifacts-client.d.ts +20 -0
- package/dist/lib/artifacts-client.js +46 -0
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +7 -7
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +59 -4
- package/dist/lib/browser/runtime-state.js +99 -18
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/service.js +21 -1
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +4 -2
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/dispatch.js +1 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/cloudflare/creds.d.ts +10 -0
- package/dist/lib/cloudflare/creds.js +46 -0
- package/dist/lib/cloudflare/provision.d.ts +35 -0
- package/dist/lib/cloudflare/provision.js +144 -0
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer/sessions-list.d.ts +55 -0
- package/dist/lib/computer/sessions-list.js +168 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -4
- package/dist/lib/daemon/daemon.js +9 -2
- package/dist/lib/daemon/feed-stream-service.d.ts +23 -0
- package/dist/lib/daemon/feed-stream-service.js +40 -0
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon-services.d.ts +3 -2
- package/dist/lib/daemon-services.js +5 -0
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +51 -6
- package/dist/lib/devices/connect.js +169 -21
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +2 -1
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +1 -1
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +2 -2
- package/dist/lib/feed/activity.d.ts +8 -33
- package/dist/lib/feed/activity.js +8 -8
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/envelope.d.ts +79 -0
- package/dist/lib/feed/envelope.js +23 -0
- package/dist/lib/feed/events.d.ts +8 -47
- package/dist/lib/feed/events.js +9 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/hub-server.d.ts +86 -0
- package/dist/lib/feed/hub-server.js +334 -0
- package/dist/lib/feed/hub.d.ts +95 -0
- package/dist/lib/feed/hub.js +255 -0
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/tool-activity.d.ts +108 -0
- package/dist/lib/feed/tool-activity.js +313 -0
- package/dist/lib/feed/tools.d.ts +198 -0
- package/dist/lib/feed/tools.js +265 -0
- package/dist/lib/feed/watch.d.ts +51 -52
- package/dist/lib/feed/watch.js +147 -17
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +3 -2
- package/dist/lib/format.js +1 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -81
- package/dist/lib/git.js +2 -199
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -24
- package/dist/lib/hosts/dispatch.js +2 -2
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +55 -4
- package/dist/lib/hosts/remote-cmd.js +125 -8
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +2 -0
- package/dist/lib/hosts/remote-cmd.test-fixture.js +22 -0
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/mcp.js +17 -11
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/probe.d.ts +4 -1
- package/dist/lib/probe.js +5 -2
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/pwsh.d.ts +33 -0
- package/dist/lib/pwsh.js +56 -0
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +15 -1
- package/dist/lib/redact.js +105 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +9 -4
- package/dist/lib/refresh.js +92 -72
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-cli.d.ts +11 -0
- package/dist/lib/secrets-cli.js +30 -0
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +7 -28
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/detached.d.ts +9 -1
- package/dist/lib/session/detached.js +31 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +2 -1
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +26 -7
- package/dist/lib/session/remote/peer-stream.js +35 -8
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +2 -7
- package/dist/lib/session/remote/watch.js +3 -3
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +2 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +8 -8
- package/dist/lib/session/sync/backend.js +3 -3
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/provision.d.ts +1 -1
- package/dist/lib/session/sync/provision.js +2 -2
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/sessions-client.js +0 -3
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/setup-tool-install.d.ts +3 -0
- package/dist/lib/setup-tool-install.js +26 -0
- package/dist/lib/setup-tool-status.d.ts +22 -0
- package/dist/lib/setup-tool-status.js +215 -0
- package/dist/lib/share-runtime.d.ts +11 -0
- package/dist/lib/share-runtime.js +63 -0
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +5 -10
- package/dist/lib/smart-launch.js +4 -12
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +49 -4
- package/dist/lib/ssh-exec.js +119 -0
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.d.ts +6 -4
- package/dist/lib/startup/command-registry.js +11 -8
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +3 -6
- package/dist/lib/storage/selection.d.ts +2 -2
- package/dist/lib/storage/selection.js +2 -2
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +9 -3
- package/dist/lib/sync-umbrella.js +18 -10
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/backend.d.ts +1 -2
- package/dist/lib/traces/backend.js +1 -2
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +2 -4
- package/dist/lib/traces/provision.js +3 -3
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +11 -9
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +3 -5
- package/scripts/postinstall.js +5 -4
- package/dist/commands/artifacts-setup.d.ts +0 -53
- package/dist/commands/artifacts-setup.js +0 -161
- package/dist/commands/artifacts.d.ts +0 -18
- package/dist/commands/artifacts.js +0 -58
- package/dist/commands/attach.d.ts +0 -12
- package/dist/commands/attach.js +0 -86
- package/dist/commands/auth-mint.d.ts +0 -12
- package/dist/commands/auth-mint.js +0 -108
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/commands/reconnect.d.ts +0 -46
- package/dist/commands/reconnect.js +0 -115
- package/dist/commands/share.d.ts +0 -293
- package/dist/commands/share.js +0 -1424
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
- package/dist/lib/share/analytics.d.ts +0 -13
- package/dist/lib/share/analytics.js +0 -45
- package/dist/lib/share/backend.d.ts +0 -120
- package/dist/lib/share/backend.js +0 -176
- package/dist/lib/share/capture.d.ts +0 -31
- package/dist/lib/share/capture.js +0 -174
- package/dist/lib/share/config.d.ts +0 -72
- package/dist/lib/share/config.js +0 -211
- package/dist/lib/share/delete.d.ts +0 -122
- package/dist/lib/share/delete.js +0 -173
- package/dist/lib/share/html.d.ts +0 -22
- package/dist/lib/share/html.js +0 -88
- package/dist/lib/share/http-error.d.ts +0 -52
- package/dist/lib/share/http-error.js +0 -65
- package/dist/lib/share/og.d.ts +0 -25
- package/dist/lib/share/og.js +0 -84
- package/dist/lib/share/provision.d.ts +0 -127
- package/dist/lib/share/provision.js +0 -285
- package/dist/lib/share/publish.d.ts +0 -388
- package/dist/lib/share/publish.js +0 -818
- package/dist/lib/share/worker-template.d.ts +0 -27
- package/dist/lib/share/worker-template.js +0 -2424
- package/dist/lib/storage/index.d.ts +0 -14
- package/dist/lib/storage/index.js +0 -14
- package/dist/lib/storage/visibility.d.ts +0 -82
- package/dist/lib/storage/visibility.js +0 -99
|
@@ -24,8 +24,6 @@ export declare function probeHost(target: string, os?: string, extraSshArgs?: st
|
|
|
24
24
|
};
|
|
25
25
|
/** ssh command that prints the remote agents-cli version. Pure/exported. */
|
|
26
26
|
export declare function buildRemoteVersionCommand(os?: string): string;
|
|
27
|
-
/** Remote agents-cli version (PATH-resolved on the remote), or null if not installed. */
|
|
28
|
-
export declare function remoteAgentsVersion(target: string, os?: string, extraSshArgs?: string[]): string | null;
|
|
29
27
|
/** ssh command that installs/upgrades agents-cli to `spec` then `agents setup`.
|
|
30
28
|
* PowerShell has no `tail`/`[ -d ]`/`||`, so the Windows branch uses native
|
|
31
29
|
* equivalents (`Select-Object -Last`, `Test-Path`). Pure/exported. */
|
|
@@ -89,7 +87,7 @@ export declare function viewHasAgentVersion(view: string, agent: string, version
|
|
|
89
87
|
/** Actionable fail-loud message for a missing remote pin (RUSH-2313). */
|
|
90
88
|
export declare function missingPinnedVersionMessage(hostName: string, agent: string, version: string, installed?: string[]): string;
|
|
91
89
|
/** Account eligibility extracted from one device's `agents view --json`. */
|
|
92
|
-
|
|
90
|
+
interface ViewAgentAccountEligibility {
|
|
93
91
|
/** At least one account can launch immediately. */
|
|
94
92
|
signedIn: boolean | undefined;
|
|
95
93
|
/** At least one account can launch immediately or enter the harness login flow. */
|
|
@@ -111,7 +109,7 @@ export interface ViewAgentAccountEligibility {
|
|
|
111
109
|
*/
|
|
112
110
|
export declare function viewAgentAccountEligibility(view: string, agent: string, now?: number): ViewAgentAccountEligibility;
|
|
113
111
|
export declare function viewAgentSignedIn(view: string, agent: string): boolean | undefined;
|
|
114
|
-
|
|
112
|
+
interface EnsureReadyOptions {
|
|
115
113
|
agent: string;
|
|
116
114
|
/**
|
|
117
115
|
* Explicit version pin (e.g. `"0.145.0"`). Concrete pins fail loud when the
|
|
@@ -143,3 +141,4 @@ export declare function evaluateHostAgentInstall(view: string, opts: EnsureReady
|
|
|
143
141
|
export declare function ensureHostReady(host: Host, opts: EnsureReadyOptions): {
|
|
144
142
|
warnings: string[];
|
|
145
143
|
};
|
|
144
|
+
export {};
|
package/dist/lib/hosts/ready.js
CHANGED
|
@@ -64,14 +64,6 @@ export function buildRemoteVersionCommand(os) {
|
|
|
64
64
|
? buildWindowsAgentsCommand({ args: ['--version'] })
|
|
65
65
|
: 'bash -lc "agents --version 2>/dev/null"';
|
|
66
66
|
}
|
|
67
|
-
/** Remote agents-cli version (PATH-resolved on the remote), or null if not installed. */
|
|
68
|
-
export function remoteAgentsVersion(target, os, extraSshArgs = []) {
|
|
69
|
-
const r = sshExec(target, buildRemoteVersionCommand(os), { timeoutMs: 20000, extraSshArgs });
|
|
70
|
-
if (r.code !== 0)
|
|
71
|
-
return null;
|
|
72
|
-
const v = r.stdout.trim();
|
|
73
|
-
return v || null;
|
|
74
|
-
}
|
|
75
67
|
/** ssh command that installs/upgrades agents-cli to `spec` then `agents setup`.
|
|
76
68
|
* PowerShell has no `tail`/`[ -d ]`/`||`, so the Windows branch uses native
|
|
77
69
|
* equivalents (`Select-Object -Last`, `Test-Path`). Pure/exported. */
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { type SshExecResult } from '../ssh-exec.js';
|
|
14
14
|
import { type HostTask } from './tasks.js';
|
|
15
|
-
|
|
15
|
+
type RemoteExitState = {
|
|
16
16
|
state: 'running';
|
|
17
17
|
} | {
|
|
18
18
|
state: 'done';
|
|
@@ -31,13 +31,6 @@ export type RemoteExitState = {
|
|
|
31
31
|
*/
|
|
32
32
|
export declare function classifyExit(res: Pick<SshExecResult, 'code' | 'stdout' | 'timedOut'>): RemoteExitState;
|
|
33
33
|
export declare function readRemoteExit(target: string, remoteExit: string, timeoutMs?: number, identityFile?: string, remoteShell?: 'posix' | 'powershell'): RemoteExitState;
|
|
34
|
-
/**
|
|
35
|
-
* Async twin of {@link readRemoteExit} for the daemon's heartbeat tick — the ssh
|
|
36
|
-
* read runs on the shared event loop, so it MUST NOT block it with a synchronous
|
|
37
|
-
* `spawnSync('ssh', …)` (PHNX-3695). `sshExecAsync` applies the same
|
|
38
|
-
* timeout/kill-grace bound.
|
|
39
|
-
*/
|
|
40
|
-
export declare function readRemoteExitAsync(target: string, remoteExit: string, timeoutMs?: number, identityFile?: string, remoteShell?: 'posix' | 'powershell'): Promise<RemoteExitState>;
|
|
41
34
|
/**
|
|
42
35
|
* Heal one record. Terminal records are immutable (and never re-probed); a
|
|
43
36
|
* `running` record is resolved to completed/failed only when the remote `.exit`
|
|
@@ -59,3 +52,4 @@ export declare function reconcileTaskAsync(task: HostTask): Promise<HostTask>;
|
|
|
59
52
|
*/
|
|
60
53
|
export declare function reconcileRunningTasks(tasks: HostTask[]): HostTask[];
|
|
61
54
|
export declare function reachabilityProbeCommand(remoteShell?: 'posix' | 'powershell'): string;
|
|
55
|
+
export {};
|
|
@@ -57,7 +57,7 @@ export function readRemoteExit(target, remoteExit, timeoutMs = 6000, identityFil
|
|
|
57
57
|
* `spawnSync('ssh', …)` (PHNX-3695). `sshExecAsync` applies the same
|
|
58
58
|
* timeout/kill-grace bound.
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
async function readRemoteExitAsync(target, remoteExit, timeoutMs = 6000, identityFile, remoteShell = 'posix') {
|
|
61
61
|
return classifyExit(await sshExecAsync(target, remoteExitCommand(remoteExit, remoteShell), remoteExitSshOpts(timeoutMs, identityFile)));
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
@@ -34,7 +34,7 @@ export interface ReconnectOutcome {
|
|
|
34
34
|
/** How long the interactive attach held after the probe returned. */
|
|
35
35
|
heldMs: number;
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
type ReconnectDecision = {
|
|
38
38
|
action: 'stop';
|
|
39
39
|
code: number;
|
|
40
40
|
} | {
|
|
@@ -81,8 +81,6 @@ export type ReconnectTarget = {
|
|
|
81
81
|
kind: 'launch';
|
|
82
82
|
id: string;
|
|
83
83
|
};
|
|
84
|
-
/** The short form shown to a human. Both kinds are uuid-shaped, so 8 chars reads the same. */
|
|
85
|
-
export declare function targetLabel(target: ReconnectTarget): string;
|
|
86
84
|
/**
|
|
87
85
|
* The command a user can run to re-enter a session after reconnect gives up.
|
|
88
86
|
* The full id is printed on its own line so it remains copyable after a drop.
|
|
@@ -124,7 +122,7 @@ export declare function afterInteractiveRemoteExit(opts: {
|
|
|
124
122
|
notice: string | undefined;
|
|
125
123
|
};
|
|
126
124
|
/** Inputs the launcher has once its interactive stream has returned. */
|
|
127
|
-
|
|
125
|
+
interface ReconnectTargetInputs {
|
|
128
126
|
agent: string;
|
|
129
127
|
sessionId?: string;
|
|
130
128
|
resolvedId?: string;
|
|
@@ -141,13 +139,7 @@ export declare function pickReconnectTarget(inputs: ReconnectTargetInputs): Reco
|
|
|
141
139
|
* a network drop. No `--attach-only`: focus resumes in place when no pane survived.
|
|
142
140
|
*/
|
|
143
141
|
export declare function reattachRemoteCommand(target: ReconnectTarget): string;
|
|
144
|
-
|
|
145
|
-
* Re-attach the live remote pane by driving the peer's `agents sessions focus`.
|
|
146
|
-
* A fast preflight probe decides reachability; only then do we run the
|
|
147
|
-
* interactive attach/resume. Returns the exit code, connected bit, and hold time.
|
|
148
|
-
*/
|
|
149
|
-
export declare function reattachRemoteSession(host: Host, target: ReconnectTarget): ReconnectOutcome;
|
|
150
|
-
export interface ReconnectLoopOpts {
|
|
142
|
+
interface ReconnectLoopOpts {
|
|
151
143
|
host: Host;
|
|
152
144
|
target: ReconnectTarget;
|
|
153
145
|
/** Exit code from the initial interactive run (treated as connected). */
|
|
@@ -159,3 +151,4 @@ export interface ReconnectLoopOpts {
|
|
|
159
151
|
}
|
|
160
152
|
/** Drive the reconnect loop from the initial run's outcome to a terminal code. */
|
|
161
153
|
export declare function reconnectInteractiveSession(opts: ReconnectLoopOpts): Promise<number>;
|
|
154
|
+
export {};
|
|
@@ -112,7 +112,7 @@ export function wrapRemoteExitCode(cmd) {
|
|
|
112
112
|
return `bash -lc ${shellQuote(guarded)}`;
|
|
113
113
|
}
|
|
114
114
|
/** The short form shown to a human. Both kinds are uuid-shaped, so 8 chars reads the same. */
|
|
115
|
-
|
|
115
|
+
function targetLabel(target) {
|
|
116
116
|
return target.id.slice(0, 8);
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
@@ -201,7 +201,7 @@ export function reattachRemoteCommand(target) {
|
|
|
201
201
|
* A fast preflight probe decides reachability; only then do we run the
|
|
202
202
|
* interactive attach/resume. Returns the exit code, connected bit, and hold time.
|
|
203
203
|
*/
|
|
204
|
-
|
|
204
|
+
function reattachRemoteSession(host, target) {
|
|
205
205
|
const sshTarget = sshTargetFor(host);
|
|
206
206
|
const extraSshArgs = hostIdentityArgs(host);
|
|
207
207
|
// Fresh (non-multiplexed) reachability probe: only a completed handshake is
|
|
@@ -30,7 +30,7 @@ export declare function getAllProviders(): HostProvider[];
|
|
|
30
30
|
* doesn't hold, and lets dispatch callers apply the device-only refusal
|
|
31
31
|
* (password auth) without re-reading the registry.
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
interface ResolvedHost extends Host {
|
|
34
34
|
device?: DeviceProfile;
|
|
35
35
|
/** True when the host is a synthesized ad-hoc `user@host` / IP / FQDN literal
|
|
36
36
|
* (never registered) rather than a device or overlay/ssh-config match. Lets the
|
|
@@ -33,7 +33,7 @@ export declare function stripRoutingFlags(args: string[], specs: StripSpec[]): s
|
|
|
33
33
|
*/
|
|
34
34
|
export declare const HOST_ROUTING_SPECS: StripSpec[];
|
|
35
35
|
/** How one `agents run` option behaves when the run is offloaded with `--device`. */
|
|
36
|
-
|
|
36
|
+
type RunOptionForwarding =
|
|
37
37
|
/** Appended to the remote `agents run` argv — same behavior local or remote. */
|
|
38
38
|
'forward'
|
|
39
39
|
/** Refused with an actionable error BEFORE dispatch — never silently dropped. */
|
|
@@ -79,7 +79,7 @@ export declare function buildRemoteAgentsInvocation(forwardedArgs: string[], rem
|
|
|
79
79
|
*/
|
|
80
80
|
export declare function posixEnvExports(env?: Record<string, string>): string;
|
|
81
81
|
/** The two remote shell dialects we build commands for. */
|
|
82
|
-
|
|
82
|
+
type RemoteShell = 'posix' | 'powershell';
|
|
83
83
|
/**
|
|
84
84
|
* Pick the remote shell dialect from a recorded OS/platform string. A Windows
|
|
85
85
|
* host (device-registry `platform: 'windows'`, or an enrolled `HostEntry.os`
|
|
@@ -105,7 +105,7 @@ export declare function encodePowershell(script: string): string;
|
|
|
105
105
|
* back to its script. Used by tests to assert on the built command. */
|
|
106
106
|
export declare function decodePowershell(encoded: string): string;
|
|
107
107
|
/** A single `agents …` invocation to run on a Windows remote. */
|
|
108
|
-
|
|
108
|
+
interface WindowsAgentsCommand {
|
|
109
109
|
/** `agents` argv (command name NOT included; `agents` is prepended). */
|
|
110
110
|
args: string[];
|
|
111
111
|
/** Env vars scoped to this invocation (POSIX `VAR=val` ↔ PS `$env:VAR=…`). */
|
|
@@ -158,12 +158,62 @@ export declare const POWERSHELL_PROGRESS_SILENCE = "$ProgressPreference = 'Silen
|
|
|
158
158
|
* every remote-JSON boundary regardless of the peer's OS.
|
|
159
159
|
*/
|
|
160
160
|
export declare function stripClixml(stdout: string): string;
|
|
161
|
+
/**
|
|
162
|
+
* Statements that run the Agents CLI on a Windows peer with EXACT argv, leaving the
|
|
163
|
+
* child's exit code in `$zq`.
|
|
164
|
+
*
|
|
165
|
+
* `& agents …` cannot be used, and the reason is not our quoting. On Windows
|
|
166
|
+
* `agents` is an npm-generated `agents.ps1`, whose body ends in
|
|
167
|
+
*
|
|
168
|
+
* & "node$exe" --no-warnings=… "$basedir/node_modules/@phnx-labs/agents-cli/dist/index.js" $args
|
|
169
|
+
*
|
|
170
|
+
* — `$args` splatted into a NATIVE program, which is the PowerShell 5.1 lossy
|
|
171
|
+
* serializer. So the loss happens INSIDE the user's shim, after our tokens were
|
|
172
|
+
* already correct: measured on a real peer, `no-such-"menu"-proof` reached the
|
|
173
|
+
* Agents parser as `no-such-menu-proof`. Quoting harder upstream cannot fix that,
|
|
174
|
+
* and rewriting a user's npm shim is not ours to do.
|
|
175
|
+
*
|
|
176
|
+
* Instead the shim is bypassed the same way `getCliLaunch` (`lib/cli-entry.ts`)
|
|
177
|
+
* resolves a launch locally: a node-script entry becomes `<node> <entry> …args`.
|
|
178
|
+
* The entry and runtime are resolved ON THE PEER from the launcher's own location —
|
|
179
|
+
* the identical two-step the shim itself performs — and executed through .NET with
|
|
180
|
+
* a `CommandLineToArgvW`-escaped argument string.
|
|
181
|
+
*
|
|
182
|
+
* A peer whose `agents` is already a native executable is used directly. A peer
|
|
183
|
+
* where neither resolves FAILS LOUD: falling back to `& agents` would silently
|
|
184
|
+
* restore the argument loss, which is worse than an error naming what is missing.
|
|
185
|
+
*
|
|
186
|
+
* The entry comes from the package's DECLARED `bin` rather than a literal
|
|
187
|
+
* `dist/index.js`, so it follows the package instead of needing to be kept in sync
|
|
188
|
+
* with it.
|
|
189
|
+
*/
|
|
190
|
+
export declare function windowsAgentsInvocation(args: string[], binName?: 'agents' | 'ag'): string;
|
|
161
191
|
export declare function windowsAgentsScript(cmd: WindowsAgentsCommand): string;
|
|
162
192
|
/**
|
|
163
193
|
* Build the `ssh <target> <cmd>` string for one `agents …` invocation on a
|
|
164
|
-
* Windows remote: a `powershell -NoProfile
|
|
194
|
+
* Windows remote: a rendered `powershell -NoProfile` call. The
|
|
165
195
|
* Windows counterpart of `bash -lc '<...>'`, shared by every `--device` site.
|
|
166
196
|
*/
|
|
197
|
+
/**
|
|
198
|
+
* Render a PowerShell script as the single command string ssh sends to a Windows
|
|
199
|
+
* peer, compressing it when that is genuinely shorter.
|
|
200
|
+
*
|
|
201
|
+
* The plain route is `-EncodedCommand <base64 of UTF-16LE>`, which inflates the
|
|
202
|
+
* script by ~2.67x. That matters because OpenSSH-for-Windows caps the whole remote
|
|
203
|
+
* command far below cmd.exe's 8191 — bisected against a live peer, 2934 characters
|
|
204
|
+
* succeed and 3102 fail — so a longer script eats the headroom a caller's
|
|
205
|
+
* arguments, `--remote-cwd` and forwarded env need.
|
|
206
|
+
*
|
|
207
|
+
* The alternative is to deflate the UTF-8 script and emit a small fixed bootstrap
|
|
208
|
+
* that inflates it back. That trades ~2.67x for ~1.33x on the compressible part,
|
|
209
|
+
* which on scripts of this shape is a large net win. The variable-free bootstrap
|
|
210
|
+
* uses `-Command` with a base64 payload and leaves stdin available to the child.
|
|
211
|
+
*
|
|
212
|
+
* Applied ONLY when the result is actually shorter: for a small script the fixed
|
|
213
|
+
* bootstrap costs more than it saves, so picking the shorter of the two keeps the
|
|
214
|
+
* plain form in play for every small caller and is obviously correct either way.
|
|
215
|
+
*/
|
|
216
|
+
export declare function renderPowershellCommand(script: string): string;
|
|
167
217
|
export declare function buildWindowsAgentsCommand(cmd: WindowsAgentsCommand): string;
|
|
168
218
|
/**
|
|
169
219
|
* Build the `ssh <target> <cmd>` string for `agents secrets import` on a Windows
|
|
@@ -192,3 +242,4 @@ export declare function buildWindowsStdinImportCommand(bundle: string, opts?: {
|
|
|
192
242
|
force?: boolean;
|
|
193
243
|
policyNever?: boolean;
|
|
194
244
|
}): string;
|
|
245
|
+
export {};
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* (`sshExec`/`sshStream`); orchestration lives in `passthrough.ts`.
|
|
9
9
|
*/
|
|
10
10
|
import { shellQuote } from '../ssh-exec.js';
|
|
11
|
+
import { pwshLiteral, pwshNativeExecStatements } from '../pwsh.js';
|
|
12
|
+
import { quoteWin32ExecArg } from '../platform/exec.js';
|
|
13
|
+
import * as zlib from 'node:zlib';
|
|
11
14
|
/**
|
|
12
15
|
* Remove routing flags (and their values) from a command's args, leaving the
|
|
13
16
|
* rest untouched and in order so they forward verbatim to the remote binary.
|
|
@@ -136,8 +139,6 @@ export const RUN_OPTION_FORWARDING = {
|
|
|
136
139
|
// On a --device dispatch the remote box runs its own run-exit sync, so this
|
|
137
140
|
// flag is never forwarded — it is a local-exit-behavior toggle, not remote.
|
|
138
141
|
traceSync: 'local-only',
|
|
139
|
-
// Deprecated alias for --device auto; resolved on the launching box before SSH.
|
|
140
|
-
smart: 'local-only',
|
|
141
142
|
// Broadcast mode (agents run --broadcast) is its own fan-out dispatch — mutually
|
|
142
143
|
// exclusive with --host. All broadcast options are local-only; exec.ts handles them
|
|
143
144
|
// before any SSH dispatch path is reached.
|
|
@@ -293,30 +294,146 @@ export function stripClixml(stdout) {
|
|
|
293
294
|
.replace(/#< CLIXML[^\n]*\r?\n?(?:\s*<Objs\b[\s\S]*?<\/Objs>)*/g, '')
|
|
294
295
|
.trim();
|
|
295
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Statements that run the Agents CLI on a Windows peer with EXACT argv, leaving the
|
|
299
|
+
* child's exit code in `$zq`.
|
|
300
|
+
*
|
|
301
|
+
* `& agents …` cannot be used, and the reason is not our quoting. On Windows
|
|
302
|
+
* `agents` is an npm-generated `agents.ps1`, whose body ends in
|
|
303
|
+
*
|
|
304
|
+
* & "node$exe" --no-warnings=… "$basedir/node_modules/@phnx-labs/agents-cli/dist/index.js" $args
|
|
305
|
+
*
|
|
306
|
+
* — `$args` splatted into a NATIVE program, which is the PowerShell 5.1 lossy
|
|
307
|
+
* serializer. So the loss happens INSIDE the user's shim, after our tokens were
|
|
308
|
+
* already correct: measured on a real peer, `no-such-"menu"-proof` reached the
|
|
309
|
+
* Agents parser as `no-such-menu-proof`. Quoting harder upstream cannot fix that,
|
|
310
|
+
* and rewriting a user's npm shim is not ours to do.
|
|
311
|
+
*
|
|
312
|
+
* Instead the shim is bypassed the same way `getCliLaunch` (`lib/cli-entry.ts`)
|
|
313
|
+
* resolves a launch locally: a node-script entry becomes `<node> <entry> …args`.
|
|
314
|
+
* The entry and runtime are resolved ON THE PEER from the launcher's own location —
|
|
315
|
+
* the identical two-step the shim itself performs — and executed through .NET with
|
|
316
|
+
* a `CommandLineToArgvW`-escaped argument string.
|
|
317
|
+
*
|
|
318
|
+
* A peer whose `agents` is already a native executable is used directly. A peer
|
|
319
|
+
* where neither resolves FAILS LOUD: falling back to `& agents` would silently
|
|
320
|
+
* restore the argument loss, which is worse than an error naming what is missing.
|
|
321
|
+
*
|
|
322
|
+
* The entry comes from the package's DECLARED `bin` rather than a literal
|
|
323
|
+
* `dist/index.js`, so it follows the package instead of needing to be kept in sync
|
|
324
|
+
* with it.
|
|
325
|
+
*/
|
|
326
|
+
export function windowsAgentsInvocation(args, binName = 'agents') {
|
|
327
|
+
const escaped = pwshLiteral(args.map(quoteWin32ExecArg).join(' '));
|
|
328
|
+
return [
|
|
329
|
+
// Set before any resolution: a non-terminating failure below would otherwise
|
|
330
|
+
// leave the exit code null, and `exit $null` reports 0.
|
|
331
|
+
`$ErrorActionPreference = 'Stop'`,
|
|
332
|
+
`$zc = Get-Command ${powershellQuote(binName)} -ErrorAction Stop`,
|
|
333
|
+
`$ze = $zc.Source`,
|
|
334
|
+
`$zr = ''`,
|
|
335
|
+
// A real native executable needs no interpreter prefix. `CommandType` alone is
|
|
336
|
+
// NOT that test: `Get-Command` reports `Application` for `agents.cmd` too, and
|
|
337
|
+
// a .cmd launcher re-parses through cmd.exe with the same argument loss as the
|
|
338
|
+
// .ps1 one — so a cmd-only install must not bypass this either.
|
|
339
|
+
`if ($zc.CommandType -ne 'Application' -or $ze -match '\\.(cmd|bat)$') {`,
|
|
340
|
+
` $zb = Split-Path $ze`,
|
|
341
|
+
` $zk = Join-Path $zb 'node_modules\\@phnx-labs\\agents-cli'`,
|
|
342
|
+
// The package's DECLARED bin, so the entry follows the package rather than a
|
|
343
|
+
// hand-synced `dist/index.js` literal that would rot on upgrade. One check
|
|
344
|
+
// covers a missing bin AND the single-string `bin` form (which yields $null).
|
|
345
|
+
` $zl = (Get-Content -Raw (Join-Path $zk 'package.json') | ConvertFrom-Json).bin.${binName}`,
|
|
346
|
+
` if (-not $zl) { throw "agents package at $zk declares no bin.${binName}" }`,
|
|
347
|
+
` $zt = Join-Path $zk $zl`,
|
|
348
|
+
` if (-not [IO.File]::Exists($zt)) { throw "agents CLI entry not found at $zt" }`,
|
|
349
|
+
// The npm shim prefers a node.exe beside itself before PATH; match that.
|
|
350
|
+
` $zd = Join-Path $zb 'node.exe'`,
|
|
351
|
+
` $ze = if ([IO.File]::Exists($zd)) { $zd } else { 'node' }`,
|
|
352
|
+
// A Windows path cannot contain `"`, so wrapping is sufficient escaping here.
|
|
353
|
+
` $zr = '--no-warnings=ExperimentalWarning "' + $zt + '" '`,
|
|
354
|
+
`}`,
|
|
355
|
+
...pwshNativeExecStatements('$ze', `$zr + ${escaped}`),
|
|
356
|
+
// Reported through a plain variable rather than by assigning the automatic
|
|
357
|
+
// $LASTEXITCODE, which nothing set here since no PowerShell command ran.
|
|
358
|
+
`$zq = $zp.ExitCode`,
|
|
359
|
+
// Never let an unknown outcome read as success.
|
|
360
|
+
`if ($null -eq $zq) { $zq = 1 }`,
|
|
361
|
+
// NEWLINE-joined, and that is required rather than stylistic: the caller joins
|
|
362
|
+
// its parts with `'; '`, which between a closing `}` and `else`/an indented block
|
|
363
|
+
// would produce invalid PowerShell.
|
|
364
|
+
].join('\n');
|
|
365
|
+
}
|
|
296
366
|
export function windowsAgentsScript(cmd) {
|
|
297
367
|
const { args, env, cwd, propagateExit = true, remapExit255 = false } = cmd;
|
|
298
|
-
|
|
368
|
+
// `Stop` FIRST, before the env assignments and the Set-Location: a failing
|
|
369
|
+
// `Set-Location` (a cwd that does not exist on the peer) must abort rather than
|
|
370
|
+
// continue into the launcher and run the command in the wrong directory.
|
|
371
|
+
const parts = [POWERSHELL_PROGRESS_SILENCE, `$ErrorActionPreference = 'Stop'`];
|
|
299
372
|
if (env)
|
|
300
373
|
for (const [k, v] of Object.entries(env))
|
|
301
374
|
parts.push(`$env:${k} = ${powershellQuote(v)}`);
|
|
302
375
|
if (cwd)
|
|
303
376
|
parts.push(`Set-Location -LiteralPath ${powershellQuote(cwd)}`);
|
|
304
|
-
parts.push(
|
|
377
|
+
parts.push(windowsAgentsInvocation(args));
|
|
305
378
|
if (propagateExit) {
|
|
306
379
|
if (remapExit255)
|
|
307
|
-
parts.push('
|
|
380
|
+
parts.push('if ($zq -eq 255) { exit 254 }', 'exit $zq');
|
|
308
381
|
else
|
|
309
|
-
parts.push('exit $
|
|
382
|
+
parts.push('exit $zq');
|
|
310
383
|
}
|
|
311
384
|
return parts.join('; ');
|
|
312
385
|
}
|
|
313
386
|
/**
|
|
314
387
|
* Build the `ssh <target> <cmd>` string for one `agents …` invocation on a
|
|
315
|
-
* Windows remote: a `powershell -NoProfile
|
|
388
|
+
* Windows remote: a rendered `powershell -NoProfile` call. The
|
|
316
389
|
* Windows counterpart of `bash -lc '<...>'`, shared by every `--device` site.
|
|
317
390
|
*/
|
|
391
|
+
/**
|
|
392
|
+
* Render a PowerShell script as the single command string ssh sends to a Windows
|
|
393
|
+
* peer, compressing it when that is genuinely shorter.
|
|
394
|
+
*
|
|
395
|
+
* The plain route is `-EncodedCommand <base64 of UTF-16LE>`, which inflates the
|
|
396
|
+
* script by ~2.67x. That matters because OpenSSH-for-Windows caps the whole remote
|
|
397
|
+
* command far below cmd.exe's 8191 — bisected against a live peer, 2934 characters
|
|
398
|
+
* succeed and 3102 fail — so a longer script eats the headroom a caller's
|
|
399
|
+
* arguments, `--remote-cwd` and forwarded env need.
|
|
400
|
+
*
|
|
401
|
+
* The alternative is to deflate the UTF-8 script and emit a small fixed bootstrap
|
|
402
|
+
* that inflates it back. That trades ~2.67x for ~1.33x on the compressible part,
|
|
403
|
+
* which on scripts of this shape is a large net win. The variable-free bootstrap
|
|
404
|
+
* uses `-Command` with a base64 payload and leaves stdin available to the child.
|
|
405
|
+
*
|
|
406
|
+
* Applied ONLY when the result is actually shorter: for a small script the fixed
|
|
407
|
+
* bootstrap costs more than it saves, so picking the shorter of the two keeps the
|
|
408
|
+
* plain form in play for every small caller and is obviously correct either way.
|
|
409
|
+
*/
|
|
410
|
+
export function renderPowershellCommand(script) {
|
|
411
|
+
const plain = `powershell -NoProfile -EncodedCommand ${encodePowershell(script)}`;
|
|
412
|
+
// Raw DEFLATE (RFC 1951) — what .NET's `DeflateStream` reads. `deflateSync`
|
|
413
|
+
// would prepend a zlib header that `DeflateStream` rejects.
|
|
414
|
+
const packed = zlib.deflateRawSync(Buffer.from(script, 'utf-8'), { level: 9 }).toString('base64');
|
|
415
|
+
// The blob is embedded DIRECTLY in a `-Command` string rather than wrapped in a
|
|
416
|
+
// second `-EncodedCommand`: routing an already-base64 payload through the encoded
|
|
417
|
+
// form would inflate it by another 2.67x and cancel most of the compression.
|
|
418
|
+
//
|
|
419
|
+
// The bootstrap is deliberately VARIABLE-FREE — one nested expression, no `$`
|
|
420
|
+
// anywhere. A `$b = …` form is unsafe here: OpenSSH-for-Windows may have
|
|
421
|
+
// PowerShell as its `DefaultShell`, in which case the outer double-quoted string
|
|
422
|
+
// is parsed by PowerShell first and `$b` would be expanded before our script ever
|
|
423
|
+
// runs. With no `$`, no `%`, no backtick and no cmd metacharacter — base64's
|
|
424
|
+
// alphabet is `A-Za-z0-9+/=` and the rest is ASCII punctuation neither shell
|
|
425
|
+
// touches inside quotes — the same text survives either default shell. stdin is
|
|
426
|
+
// untouched by both routes.
|
|
427
|
+
const bootstrap = 'iex ([IO.StreamReader]::new([IO.Compression.DeflateStream]::new('
|
|
428
|
+
+ `[IO.MemoryStream]::new([Convert]::FromBase64String('${packed}')),`
|
|
429
|
+
+ '[IO.Compression.CompressionMode]::Decompress),[Text.Encoding]::UTF8).ReadToEnd())';
|
|
430
|
+
const compressed = `powershell -NoProfile -Command "${bootstrap}"`;
|
|
431
|
+
// Only when genuinely shorter: for a small script the fixed bootstrap costs more
|
|
432
|
+
// than it saves, so this keeps the plain form in play for every small caller.
|
|
433
|
+
return compressed.length < plain.length ? compressed : plain;
|
|
434
|
+
}
|
|
318
435
|
export function buildWindowsAgentsCommand(cmd) {
|
|
319
|
-
return
|
|
436
|
+
return renderPowershellCommand(windowsAgentsScript(cmd));
|
|
320
437
|
}
|
|
321
438
|
/**
|
|
322
439
|
* Build the `ssh <target> <cmd>` string for `agents secrets import` on a Windows
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-only decoder for a rendered remote PowerShell command.
|
|
3
|
+
*
|
|
4
|
+
* `renderPowershellCommand` emits whichever of two representations is shorter: the
|
|
5
|
+
* plain `-EncodedCommand <base64 UTF-16LE>`, or a `-Command` bootstrap carrying a
|
|
6
|
+
* deflated UTF-8 payload. Tests assert on the SCRIPT, not the representation, so
|
|
7
|
+
* every suite needs both — and four copies of that parsing is exactly how one of
|
|
8
|
+
* them silently stops decoding the form it was meant to check.
|
|
9
|
+
*
|
|
10
|
+
* Named `*.test-fixture.ts` after the existing `daemon.test-fixture.ts`.
|
|
11
|
+
*/
|
|
12
|
+
import * as zlib from 'node:zlib';
|
|
13
|
+
/** The script behind either render route. Throws if the command is neither. */
|
|
14
|
+
export function decodeRenderedPowershell(command) {
|
|
15
|
+
const encoded = /-EncodedCommand (\S+)\s*$/.exec(command);
|
|
16
|
+
if (encoded)
|
|
17
|
+
return Buffer.from(encoded[1], 'base64').toString('utf16le');
|
|
18
|
+
const packed = /FromBase64String\('([A-Za-z0-9+/=]+)'\)/.exec(command);
|
|
19
|
+
if (!packed)
|
|
20
|
+
throw new Error(`not a rendered PowerShell command: ${command}`);
|
|
21
|
+
return zlib.inflateRawSync(Buffer.from(packed[1], 'base64')).toString('utf-8');
|
|
22
|
+
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import type { SessionMeta } from '../session/types.js';
|
|
20
20
|
import { type HostTask } from './tasks.js';
|
|
21
|
-
|
|
21
|
+
interface HostSessionContext {
|
|
22
22
|
/** Local directory the `agents run --device` was invoked from. */
|
|
23
23
|
cwd: string;
|
|
24
24
|
/** Prompt the run was launched with, used for the session topic. */
|
|
@@ -53,7 +53,7 @@ export declare function registerHostSession(task: HostTask, ctx: HostSessionCont
|
|
|
53
53
|
* missing/unreadable mirror or absent marker yields null, never an exception.
|
|
54
54
|
*/
|
|
55
55
|
export declare function captureRemoteSessionId(task: HostTask): HostTask | null;
|
|
56
|
-
|
|
56
|
+
interface InteractiveHostSessionContext {
|
|
57
57
|
cwd: string;
|
|
58
58
|
host: string;
|
|
59
59
|
agent: string;
|
|
@@ -68,3 +68,4 @@ export interface InteractiveHostSessionContext {
|
|
|
68
68
|
* surface and resume it by id.
|
|
69
69
|
*/
|
|
70
70
|
export declare function registerInteractiveHostSession(ctx: InteractiveHostSessionContext): void;
|
|
71
|
+
export {};
|
|
@@ -19,11 +19,9 @@ export declare function parseSshConfigHosts(content: string): string[];
|
|
|
19
19
|
export declare function parseKnownHosts(content: string): string[];
|
|
20
20
|
/** `Host` names from ~/.ssh/config, following `Include` globs (best-effort). */
|
|
21
21
|
export declare function listSshConfigHosts(): string[];
|
|
22
|
-
/** Hostnames recorded in ~/.ssh/known_hosts (hashed entries skipped). */
|
|
23
|
-
export declare function listKnownHosts(): string[];
|
|
24
22
|
/** True if `name` is a concrete `Host` stanza in ssh config. */
|
|
25
23
|
export declare function isSshConfigHost(name: string): boolean;
|
|
26
|
-
|
|
24
|
+
interface SshGResult {
|
|
27
25
|
hostname?: string;
|
|
28
26
|
user?: string;
|
|
29
27
|
port?: string;
|
|
@@ -35,3 +33,4 @@ export interface SshGResult {
|
|
|
35
33
|
* to decide whether a name is actually configured.
|
|
36
34
|
*/
|
|
37
35
|
export declare function sshResolve(name: string): SshGResult | undefined;
|
|
36
|
+
export {};
|
|
@@ -12,7 +12,6 @@ import { spawnSync } from 'child_process';
|
|
|
12
12
|
import { assertValidSshTarget } from '../ssh-exec.js';
|
|
13
13
|
const SSH_DIR = path.join(os.homedir(), '.ssh');
|
|
14
14
|
const SSH_CONFIG = path.join(SSH_DIR, 'config');
|
|
15
|
-
const KNOWN_HOSTS = path.join(SSH_DIR, 'known_hosts');
|
|
16
15
|
/**
|
|
17
16
|
* Parse `Host` stanza names from ssh config text. Wildcard/negated patterns
|
|
18
17
|
* (`*`, `?`, `!`) are skipped — they're match rules, not concrete hosts.
|
|
@@ -110,15 +109,6 @@ function globMaybe(pattern) {
|
|
|
110
109
|
return [];
|
|
111
110
|
}
|
|
112
111
|
}
|
|
113
|
-
/** Hostnames recorded in ~/.ssh/known_hosts (hashed entries skipped). */
|
|
114
|
-
export function listKnownHosts() {
|
|
115
|
-
try {
|
|
116
|
-
return parseKnownHosts(fs.readFileSync(KNOWN_HOSTS, 'utf-8'));
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
112
|
/** True if `name` is a concrete `Host` stanza in ssh config. */
|
|
123
113
|
export function isSshConfigHost(name) {
|
|
124
114
|
return listSshConfigHosts().includes(name);
|
package/dist/lib/humans.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { HumansConfig, HumanOwner } from './types.js';
|
|
2
|
-
export declare const HUMANS_VERSION: 1;
|
|
3
|
-
export declare const HUMANS_HEADER = "# humans.yaml \u2014 owner identity and notification channels\n# Managed by agents-cli. See: agents humans --help\n";
|
|
4
2
|
/**
|
|
5
3
|
* Read and parse humans.yaml. Returns null when the file does not exist or
|
|
6
4
|
* is not a valid v1 config — never throws.
|
package/dist/lib/humans.js
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
import * as fs from 'fs';
|
|
11
11
|
import * as yaml from 'yaml';
|
|
12
12
|
import { getHumansFilePath } from './state.js';
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const HUMANS_VERSION = 1;
|
|
14
|
+
const HUMANS_HEADER = `# humans.yaml — owner identity and notification channels
|
|
15
15
|
# Managed by agents-cli. See: agents humans --help
|
|
16
16
|
`;
|
|
17
17
|
/**
|
package/dist/lib/import.d.ts
CHANGED
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
* true.
|
|
18
18
|
*/
|
|
19
19
|
import type { AgentId } from './types.js';
|
|
20
|
-
|
|
20
|
+
interface ImportConfigResult {
|
|
21
21
|
success: boolean;
|
|
22
22
|
skipped?: boolean;
|
|
23
23
|
error?: string;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
interface ImportBinaryResult {
|
|
26
26
|
success: boolean;
|
|
27
27
|
skipped?: boolean;
|
|
28
28
|
error?: string;
|
|
@@ -60,7 +60,7 @@ export declare function finalizeImport(agentId: AgentId, version: string): void;
|
|
|
60
60
|
* farm from the AGENTS registry, which keeps the function pure and avoids
|
|
61
61
|
* fragile coupling in test setups that stub `lib/agents.ts`.
|
|
62
62
|
*/
|
|
63
|
-
|
|
63
|
+
interface AgentBinarySpec {
|
|
64
64
|
/** Agent id used in the marker package.json (`agents-{agentId}-{version}`). */
|
|
65
65
|
agentId: string;
|
|
66
66
|
/** npm package name (e.g. `openclaw`) — used as the `node_modules/<name>` dir. */
|
|
@@ -136,3 +136,4 @@ export declare function seedIsolatedConfigFromLocal(agentId: AgentId, version: s
|
|
|
136
136
|
skippedRuntime: string[];
|
|
137
137
|
error?: string;
|
|
138
138
|
};
|
|
139
|
+
export {};
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { type FileLockOptions } from '../fs-atomic.js';
|
|
2
2
|
import { type AgentId } from '../types.js';
|
|
3
3
|
export declare function installationLockTarget(agent: AgentId, label: string): string;
|
|
4
|
-
export declare const INSTALLATION_LOCK_STALE_MS: number;
|
|
5
|
-
export declare const INSTALLATION_LOCK_ACQUIRE_TIMEOUT_MS: number;
|
|
6
4
|
export declare const INSTALLATION_LOCK_OPTIONS: Required<FileLockOptions>;
|
|
@@ -20,8 +20,8 @@ export function installationLockTarget(agent, label) {
|
|
|
20
20
|
ensureLockTarget(target, '', 0o700);
|
|
21
21
|
return target;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const INSTALLATION_LOCK_STALE_MS = 10 * 60_000;
|
|
24
|
+
const INSTALLATION_LOCK_ACQUIRE_TIMEOUT_MS = 5 * 60_000;
|
|
25
25
|
export const INSTALLATION_LOCK_OPTIONS = {
|
|
26
26
|
staleMs: INSTALLATION_LOCK_STALE_MS,
|
|
27
27
|
acquireTimeoutMs: INSTALLATION_LOCK_ACQUIRE_TIMEOUT_MS,
|
|
@@ -44,15 +44,6 @@ import type { AgentId } from '../types.js';
|
|
|
44
44
|
* work here serializes launches against each other unnecessarily.
|
|
45
45
|
*/
|
|
46
46
|
export declare function withLaunchGate<T>(agent: AgentId, label: string, fn: () => T): Promise<T>;
|
|
47
|
-
/**
|
|
48
|
-
* Acquire the per-installation update lock, register a launch lease for
|
|
49
|
-
* `pid`, then release. For a caller that already has its own pid before the
|
|
50
|
-
* risky operation (the native shim's `$$`, exec-replaced so the pid is
|
|
51
|
-
* final) — a Node caller that spawns a child should use {@link withLaunchGate}
|
|
52
|
-
* around the spawn itself instead, since here the process already exists by
|
|
53
|
-
* the time the lock is acquired.
|
|
54
|
-
*/
|
|
55
|
-
export declare function acquireLaunchGate(agent: AgentId, label: string, pid: number): Promise<() => void>;
|
|
56
47
|
/** Keep a live launcher's lease until its operation ends, without holding the lock. */
|
|
57
48
|
export declare function withInstallationLease<T>(agent: AgentId, label: string, fn: () => Promise<T>): Promise<T>;
|
|
58
49
|
/**
|
|
@@ -91,7 +91,7 @@ export async function withLaunchGate(agent, label, fn) {
|
|
|
91
91
|
* around the spawn itself instead, since here the process already exists by
|
|
92
92
|
* the time the lock is acquired.
|
|
93
93
|
*/
|
|
94
|
-
|
|
94
|
+
async function acquireLaunchGate(agent, label, pid) {
|
|
95
95
|
return withLaunchGate(agent, label, () => recordLaunchLease(agent, label, pid));
|
|
96
96
|
}
|
|
97
97
|
/** Keep a live launcher's lease until its operation ends, without holding the lock. */
|
|
@@ -45,17 +45,6 @@ export declare function migrateRoutineDeviceToDevices(routinesDir?: string): voi
|
|
|
45
45
|
* Idempotent: a file with only `cwd` (already migrated) is skipped.
|
|
46
46
|
*/
|
|
47
47
|
export declare function migrateRoutineRemoteCwdToCwd(routinesDir?: string): void;
|
|
48
|
-
/**
|
|
49
|
-
* Pause every currently-active routine whose execution context no longer
|
|
50
|
-
* resolves ready (RUSH-2290). An agent/workflow routine with no project/cwd, a
|
|
51
|
-
* missing directory, or a non-portable path used to fire and fail every tick —
|
|
52
|
-
* the mass auth_failed / untrusted-home storm this ticket exists to stop. After
|
|
53
|
-
* the fold, such a routine is deactivated on THIS device (only), preventing it
|
|
54
|
-
* from being scheduled until `agents routines doctor --all --fix` (or a repair +
|
|
55
|
-
* `resume`) makes it ready. Never materializes a device manifest that does not
|
|
56
|
-
* yet exist, and never touches command routines (they run in the target home).
|
|
57
|
-
*/
|
|
58
|
-
export declare function pauseUnreadyEnabledRoutines(): void;
|
|
59
48
|
/**
|
|
60
49
|
* Fold the legacy watchdog enable sentinel into the `watchdog.enabled` config.
|
|
61
50
|
*
|