@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
package/dist/commands/ssh.js
CHANGED
|
@@ -1122,7 +1122,8 @@ function registerDevicesCommands(program) {
|
|
|
1122
1122
|
agents devices config mac-mini notes "runs the releases"
|
|
1123
1123
|
agents devices config win-mini ssh.auth password
|
|
1124
1124
|
agents devices config worker ssh.identity-file ~/.ssh/worker_ed25519
|
|
1125
|
-
agents devices
|
|
1125
|
+
agents devices disable mac-mini # leave the auto-placement pool (auto-launch.enabled off)
|
|
1126
|
+
agents devices enable mac-mini # rejoin it
|
|
1126
1127
|
agents devices describe mark-1 "gpu box — cuda 12.4" # one-line purpose, shown in the list
|
|
1127
1128
|
agents devices config mac-mini interactive.host zion # where agents show YOU artifacts
|
|
1128
1129
|
agents devices render --write # write ~/.ssh/config.d/agents include
|
|
@@ -1286,11 +1287,9 @@ function registerDevicesCommands(program) {
|
|
|
1286
1287
|
// ─── devices config (unified settings surface) ────────────────────────────
|
|
1287
1288
|
//
|
|
1288
1289
|
// ONE command for every per-device setting: `agents devices config <name>
|
|
1289
|
-
// [key] [value] [--unset] [--json]`.
|
|
1290
|
-
//
|
|
1291
|
-
//
|
|
1292
|
-
// consumer's stdout stays parseable) and delegates to this same engine,
|
|
1293
|
-
// preserving its old output shape and exit codes.
|
|
1290
|
+
// [key] [value] [--unset] [--json]`. configure, note, set-interactive, set,
|
|
1291
|
+
// prefer, and unprefer are deleted (PHNX-4051) — use this command directly.
|
|
1292
|
+
// enable/disable stay as first-class sugar over auto-launch.enabled.
|
|
1294
1293
|
/** Parse a raw CLI string into a config key's typed value (bool/int pass validation, strings verbatim). */
|
|
1295
1294
|
const parseConfigValueInput = (spec, raw) => {
|
|
1296
1295
|
switch (spec.type) {
|
|
@@ -1685,8 +1684,10 @@ function registerDevicesCommands(program) {
|
|
|
1685
1684
|
the device itself; --fleet still writes a fleet-wide default those boxes
|
|
1686
1685
|
inherit until they override.
|
|
1687
1686
|
|
|
1688
|
-
|
|
1689
|
-
|
|
1687
|
+
configure, note, set, set-interactive, prefer, and unprefer are deleted;
|
|
1688
|
+
use this command directly (auto-launch.preferred, interactive.host, or
|
|
1689
|
+
any other key). enable/disable stay as first-class sugar over
|
|
1690
|
+
auto-launch.enabled.
|
|
1690
1691
|
`,
|
|
1691
1692
|
});
|
|
1692
1693
|
const roleCmd = devicesCmd
|
|
@@ -1765,182 +1766,6 @@ function registerDevicesCommands(program) {
|
|
|
1765
1766
|
long-form scratch use 'agents devices config <name> notes "…"'.
|
|
1766
1767
|
`,
|
|
1767
1768
|
});
|
|
1768
|
-
/** Deprecation notice for a retired subcommand — STDERR only, so a --json consumer's stdout stays parseable. */
|
|
1769
|
-
const configTombstoneNotice = (retired, replacement) => {
|
|
1770
|
-
console.error(chalk.yellow(`Deprecated: "agents devices ${retired}" is now "agents devices ${replacement}". Running that for you.\n`));
|
|
1771
|
-
};
|
|
1772
|
-
devicesCmd
|
|
1773
|
-
.command('enable <name>', { hidden: true })
|
|
1774
|
-
.action(async (name) => {
|
|
1775
|
-
try {
|
|
1776
|
-
configTombstoneNotice('enable <name>', 'config <name> auto-launch.enabled on');
|
|
1777
|
-
await mustGetDevice(name);
|
|
1778
|
-
// Back to the default (enabled) = remove the key.
|
|
1779
|
-
await runDevicesConfig(name, 'auto-launch.enabled', [], { unset: true, quiet: true });
|
|
1780
|
-
console.log(chalk.green(`Enabled '${name}'`) + chalk.gray(' for AGI EXT auto-launch.'));
|
|
1781
|
-
}
|
|
1782
|
-
catch (err) {
|
|
1783
|
-
console.error(chalk.red(err.message));
|
|
1784
|
-
process.exit(1);
|
|
1785
|
-
}
|
|
1786
|
-
});
|
|
1787
|
-
devicesCmd
|
|
1788
|
-
.command('disable <name>', { hidden: true })
|
|
1789
|
-
.action(async (name) => {
|
|
1790
|
-
try {
|
|
1791
|
-
configTombstoneNotice('disable <name>', 'config <name> auto-launch.enabled off');
|
|
1792
|
-
await mustGetDevice(name);
|
|
1793
|
-
await runDevicesConfig(name, 'auto-launch.enabled', ['off'], { quiet: true });
|
|
1794
|
-
console.log(chalk.green(`Disabled '${name}'`) + chalk.gray(' for AGI EXT auto-launch.'));
|
|
1795
|
-
}
|
|
1796
|
-
catch (err) {
|
|
1797
|
-
console.error(chalk.red(err.message));
|
|
1798
|
-
process.exit(1);
|
|
1799
|
-
}
|
|
1800
|
-
});
|
|
1801
|
-
devicesCmd
|
|
1802
|
-
.command('prefer <name>', { hidden: true })
|
|
1803
|
-
.action(async (name) => {
|
|
1804
|
-
try {
|
|
1805
|
-
configTombstoneNotice('prefer <name>', 'config <name> auto-launch.preferred on');
|
|
1806
|
-
await mustGetDevice(name);
|
|
1807
|
-
await runDevicesConfig(name, 'auto-launch.preferred', ['on'], { quiet: true });
|
|
1808
|
-
console.log(chalk.green(`Preferred '${name}'`) + chalk.gray(' for AGI EXT auto-launch.'));
|
|
1809
|
-
}
|
|
1810
|
-
catch (err) {
|
|
1811
|
-
console.error(chalk.red(err.message));
|
|
1812
|
-
process.exit(1);
|
|
1813
|
-
}
|
|
1814
|
-
});
|
|
1815
|
-
devicesCmd
|
|
1816
|
-
.command('unprefer <name>', { hidden: true })
|
|
1817
|
-
.action(async (name) => {
|
|
1818
|
-
try {
|
|
1819
|
-
configTombstoneNotice('unprefer <name>', 'config <name> auto-launch.preferred off');
|
|
1820
|
-
await mustGetDevice(name);
|
|
1821
|
-
// Back to the default (not preferred) = remove the key.
|
|
1822
|
-
await runDevicesConfig(name, 'auto-launch.preferred', [], { unset: true, quiet: true });
|
|
1823
|
-
console.log(chalk.green(`No longer preferring '${name}'`) + chalk.gray(' for AGI EXT auto-launch.'));
|
|
1824
|
-
}
|
|
1825
|
-
catch (err) {
|
|
1826
|
-
console.error(chalk.red(err.message));
|
|
1827
|
-
process.exit(1);
|
|
1828
|
-
}
|
|
1829
|
-
});
|
|
1830
|
-
devicesCmd
|
|
1831
|
-
.command('set-interactive [name]', { hidden: true })
|
|
1832
|
-
.option('--unset', 'clear the interactive host')
|
|
1833
|
-
.option('--json', 'output machine-readable JSON')
|
|
1834
|
-
.action(async (name, opts) => {
|
|
1835
|
-
try {
|
|
1836
|
-
configTombstoneNotice('set-interactive [name]', 'config <name> interactive.host <name>');
|
|
1837
|
-
if (opts.unset) {
|
|
1838
|
-
unsetConfigValue('interactive.host');
|
|
1839
|
-
if (opts.json)
|
|
1840
|
-
writeJson({ interactiveHost: null });
|
|
1841
|
-
else
|
|
1842
|
-
console.log(chalk.green('Cleared the interactive host.'));
|
|
1843
|
-
return;
|
|
1844
|
-
}
|
|
1845
|
-
if (name) {
|
|
1846
|
-
await mustGetDevice(name);
|
|
1847
|
-
setConfigValue('interactive.host', name);
|
|
1848
|
-
if (opts.json)
|
|
1849
|
-
writeJson({ interactiveHost: name });
|
|
1850
|
-
else
|
|
1851
|
-
console.log(chalk.green(`Interactive host: '${name}'`) + chalk.gray(' — agents show you artifacts there. Clear with --unset.'));
|
|
1852
|
-
return;
|
|
1853
|
-
}
|
|
1854
|
-
const current = getConfigValue('interactive.host').value;
|
|
1855
|
-
if (opts.json) {
|
|
1856
|
-
writeJson({ interactiveHost: current ?? null });
|
|
1857
|
-
}
|
|
1858
|
-
else if (current) {
|
|
1859
|
-
console.log(`${chalk.bold('Interactive host:')} ${chalk.cyan(current)}`);
|
|
1860
|
-
}
|
|
1861
|
-
else {
|
|
1862
|
-
console.log(chalk.gray("No interactive host set. Set one with 'agents devices config <name> interactive.host <name>'."));
|
|
1863
|
-
}
|
|
1864
|
-
}
|
|
1865
|
-
catch (err) {
|
|
1866
|
-
console.error(chalk.red(err.message));
|
|
1867
|
-
process.exit(1);
|
|
1868
|
-
}
|
|
1869
|
-
});
|
|
1870
|
-
devicesCmd
|
|
1871
|
-
.command('configure <name>', { hidden: true })
|
|
1872
|
-
.option('--max-agents <n>', 'cap concurrent agents')
|
|
1873
|
-
.option('--scheduler <on|off>', 'allow the routines scheduler (daemon) to fire on this device')
|
|
1874
|
-
.option('--json', 'output machine-readable JSON')
|
|
1875
|
-
.action(async (name, opts) => {
|
|
1876
|
-
try {
|
|
1877
|
-
configTombstoneNotice('configure <name> [--max-agents N] [--scheduler on|off]', 'config <name> <key> <value>');
|
|
1878
|
-
await mustGetDevice(name);
|
|
1879
|
-
const writes = [];
|
|
1880
|
-
if (opts.maxAgents !== undefined)
|
|
1881
|
-
writes.push(['agents.max-concurrent', opts.maxAgents]);
|
|
1882
|
-
if (opts.scheduler !== undefined) {
|
|
1883
|
-
if (opts.scheduler !== 'on' && opts.scheduler !== 'off') {
|
|
1884
|
-
throw new Error(`--scheduler expects 'on' or 'off', got '${opts.scheduler}'.`);
|
|
1885
|
-
}
|
|
1886
|
-
writes.push(['scheduler.enabled', opts.scheduler]);
|
|
1887
|
-
}
|
|
1888
|
-
for (const [key, value] of writes) {
|
|
1889
|
-
await runDevicesConfig(name, key, [value], { quiet: Boolean(opts.json) });
|
|
1890
|
-
}
|
|
1891
|
-
if (opts.json)
|
|
1892
|
-
printDevicesConfig(name, true);
|
|
1893
|
-
else if (writes.length === 0)
|
|
1894
|
-
printDevicesConfig(name, false);
|
|
1895
|
-
}
|
|
1896
|
-
catch (err) {
|
|
1897
|
-
console.error(chalk.red(err.message));
|
|
1898
|
-
process.exit(1);
|
|
1899
|
-
}
|
|
1900
|
-
});
|
|
1901
|
-
devicesCmd
|
|
1902
|
-
.command('note <name> [text...]', { hidden: true })
|
|
1903
|
-
.option('--clear', 'remove all notes from the device')
|
|
1904
|
-
.option('--json', 'output machine-readable JSON')
|
|
1905
|
-
.action(async (name, text, opts) => {
|
|
1906
|
-
try {
|
|
1907
|
-
configTombstoneNotice('note <name> [text...]', 'config <name> notes <text>');
|
|
1908
|
-
await mustGetDevice(name);
|
|
1909
|
-
if (opts.clear) {
|
|
1910
|
-
await runDevicesConfig(name, 'notes', [], { unset: true, quiet: true });
|
|
1911
|
-
if (opts.json)
|
|
1912
|
-
writeJson({ device: name, notes: [] });
|
|
1913
|
-
else
|
|
1914
|
-
console.log(chalk.green(`Cleared notes on '${name}'.`));
|
|
1915
|
-
return;
|
|
1916
|
-
}
|
|
1917
|
-
if (text.length > 0) {
|
|
1918
|
-
await runDevicesConfig(name, 'notes', text, { quiet: true });
|
|
1919
|
-
const notes = getConfigValue('notes', { device: name }).value ?? [];
|
|
1920
|
-
if (opts.json)
|
|
1921
|
-
writeJson({ device: name, notes });
|
|
1922
|
-
else
|
|
1923
|
-
console.log(chalk.green(`Noted on '${name}':`) + ` ${text.join(' ')}`);
|
|
1924
|
-
return;
|
|
1925
|
-
}
|
|
1926
|
-
const notes = getConfigValue('notes', { device: name }).value ?? [];
|
|
1927
|
-
if (opts.json) {
|
|
1928
|
-
writeJson({ device: name, notes });
|
|
1929
|
-
}
|
|
1930
|
-
else if (notes.length > 0) {
|
|
1931
|
-
console.log(chalk.bold(`Notes for '${name}'`));
|
|
1932
|
-
for (const n of notes)
|
|
1933
|
-
console.log(` ${chalk.gray('•')} ${n}`);
|
|
1934
|
-
}
|
|
1935
|
-
else {
|
|
1936
|
-
console.log(chalk.gray(`No notes on '${name}'. Add one with 'agents devices config ${name} notes "..."'.`));
|
|
1937
|
-
}
|
|
1938
|
-
}
|
|
1939
|
-
catch (err) {
|
|
1940
|
-
console.error(chalk.red(err.message));
|
|
1941
|
-
process.exit(1);
|
|
1942
|
-
}
|
|
1943
|
-
});
|
|
1944
1769
|
const runList = async (opts = {}) => {
|
|
1945
1770
|
const reg = await loadDevices();
|
|
1946
1771
|
const names = Object.keys(reg).sort();
|
|
@@ -2027,6 +1852,34 @@ function registerDevicesCommands(program) {
|
|
|
2027
1852
|
}
|
|
2028
1853
|
};
|
|
2029
1854
|
devicesCmd.action(runList);
|
|
1855
|
+
devicesCmd
|
|
1856
|
+
.command('enable <name>')
|
|
1857
|
+
.description('Put a device back in the automatic-placement pool (clears auto-launch.enabled)')
|
|
1858
|
+
.action(async (name) => {
|
|
1859
|
+
try {
|
|
1860
|
+
await mustGetDevice(name);
|
|
1861
|
+
await runDevicesConfig(name, 'auto-launch.enabled', [], { unset: true, quiet: true });
|
|
1862
|
+
console.log(chalk.green(`Enabled '${name}'`) + chalk.gray(' for automatic placement.'));
|
|
1863
|
+
}
|
|
1864
|
+
catch (err) {
|
|
1865
|
+
console.error(chalk.red(err.message));
|
|
1866
|
+
process.exit(1);
|
|
1867
|
+
}
|
|
1868
|
+
});
|
|
1869
|
+
devicesCmd
|
|
1870
|
+
.command('disable <name>')
|
|
1871
|
+
.description('Drop a device from every automatic-placement path (sets auto-launch.enabled off)')
|
|
1872
|
+
.action(async (name) => {
|
|
1873
|
+
try {
|
|
1874
|
+
await mustGetDevice(name);
|
|
1875
|
+
await runDevicesConfig(name, 'auto-launch.enabled', ['off'], { quiet: true });
|
|
1876
|
+
console.log(chalk.green(`Disabled '${name}'`) + chalk.gray(' for automatic placement.'));
|
|
1877
|
+
}
|
|
1878
|
+
catch (err) {
|
|
1879
|
+
console.error(chalk.red(err.message));
|
|
1880
|
+
process.exit(1);
|
|
1881
|
+
}
|
|
1882
|
+
});
|
|
2030
1883
|
devicesCmd
|
|
2031
1884
|
.command('list')
|
|
2032
1885
|
.alias('ls')
|
|
@@ -2214,53 +2067,6 @@ email) into a single row. Use \`agents devices harnesses\` for the per-install v
|
|
|
2214
2067
|
process.exit(1);
|
|
2215
2068
|
}
|
|
2216
2069
|
});
|
|
2217
|
-
devicesCmd
|
|
2218
|
-
.command('set <name>', { hidden: true })
|
|
2219
|
-
.option('--platform <platform>', 'windows | linux | macos')
|
|
2220
|
-
.option('--user <user>', 'login user')
|
|
2221
|
-
.option('--auth <method>', 'key | password')
|
|
2222
|
-
.option('--bundle <bundle>', 'secrets bundle holding the password (for --auth password)')
|
|
2223
|
-
.option('--bundle-key <key>', "key within the bundle (default 'password')")
|
|
2224
|
-
.option('--identity-file <path>', 'private-key path for --auth key')
|
|
2225
|
-
.option('--clear-identity-file', 'return key auth to ssh-agent/default-key discovery')
|
|
2226
|
-
.action(async (name, opts) => {
|
|
2227
|
-
try {
|
|
2228
|
-
configTombstoneNotice('set <name> [--platform|--user|--auth|--bundle|--bundle-key|--identity-file …]', 'config <name> <ssh.*|platform> <value>');
|
|
2229
|
-
const existing = await mustGetDevice(name);
|
|
2230
|
-
const nextMethod = opts.auth ?? resolveDeviceProfile(existing).auth.method;
|
|
2231
|
-
if (opts.identityFile && nextMethod !== 'key') {
|
|
2232
|
-
throw new Error('--identity-file requires key auth; pass --auth key in the same command.');
|
|
2233
|
-
}
|
|
2234
|
-
const writes = [];
|
|
2235
|
-
if (opts.platform)
|
|
2236
|
-
writes.push({ key: 'platform', value: opts.platform });
|
|
2237
|
-
if (opts.user)
|
|
2238
|
-
writes.push({ key: 'ssh.user', value: opts.user });
|
|
2239
|
-
if (opts.auth)
|
|
2240
|
-
writes.push({ key: 'ssh.auth', value: opts.auth });
|
|
2241
|
-
if (opts.bundle)
|
|
2242
|
-
writes.push({ key: 'ssh.bundle', value: opts.bundle });
|
|
2243
|
-
if (opts.bundleKey)
|
|
2244
|
-
writes.push({ key: 'ssh.bundle-key', value: opts.bundleKey });
|
|
2245
|
-
if (opts.identityFile)
|
|
2246
|
-
writes.push({ key: 'ssh.identity-file', value: opts.identityFile });
|
|
2247
|
-
if (opts.clearIdentityFile)
|
|
2248
|
-
writes.push({ key: 'ssh.identity-file' }); // unset
|
|
2249
|
-
if (writes.length === 0) {
|
|
2250
|
-
printDevicesConfig(name, false);
|
|
2251
|
-
return;
|
|
2252
|
-
}
|
|
2253
|
-
for (const w of writes) {
|
|
2254
|
-
await runDevicesConfig(name, w.key, w.value !== undefined ? [w.value] : [], { unset: w.value === undefined, quiet: true });
|
|
2255
|
-
}
|
|
2256
|
-
const d = resolveDeviceProfile((await mustGetDevice(name)));
|
|
2257
|
-
console.log(chalk.green(`Updated device '${name}'`) + chalk.gray(` (auth: ${d.auth.method}${d.auth.bundle ? ` via ${d.auth.bundle}` : ''})`));
|
|
2258
|
-
}
|
|
2259
|
-
catch (err) {
|
|
2260
|
-
console.error(chalk.red(err.message));
|
|
2261
|
-
process.exit(1);
|
|
2262
|
-
}
|
|
2263
|
-
});
|
|
2264
2070
|
devicesCmd
|
|
2265
2071
|
.command('remove <name>')
|
|
2266
2072
|
.alias('rm')
|
|
@@ -2633,12 +2439,40 @@ async function doDeviceTaskStop(ref) {
|
|
|
2633
2439
|
process.exitCode = 1;
|
|
2634
2440
|
}
|
|
2635
2441
|
}
|
|
2442
|
+
/**
|
|
2443
|
+
* Parse `--argv`'s JSON array, or report exactly what was wrong and return
|
|
2444
|
+
* undefined. Fails loud rather than coercing: a caller that meant to pass argv
|
|
2445
|
+
* and typo'd the JSON must not silently get shell-string semantics instead.
|
|
2446
|
+
*/
|
|
2447
|
+
export function parseArgvJson(raw, log = (line) => console.error(line)) {
|
|
2448
|
+
let parsed;
|
|
2449
|
+
try {
|
|
2450
|
+
parsed = JSON.parse(raw);
|
|
2451
|
+
}
|
|
2452
|
+
catch (error) {
|
|
2453
|
+
log(`--argv is not valid JSON: ${error.message}`);
|
|
2454
|
+
log(`Expected a JSON array of strings, e.g. --argv '["uptime","-p"]'`);
|
|
2455
|
+
return undefined;
|
|
2456
|
+
}
|
|
2457
|
+
if (!Array.isArray(parsed)) {
|
|
2458
|
+
log('--argv must be a JSON ARRAY of strings.');
|
|
2459
|
+
return undefined;
|
|
2460
|
+
}
|
|
2461
|
+
const bad = parsed.findIndex((token) => typeof token !== 'string');
|
|
2462
|
+
if (bad >= 0) {
|
|
2463
|
+
log(`--argv element ${bad} is ${typeof parsed[bad]}, not a string.`);
|
|
2464
|
+
log('Every element is one argv token; numbers and objects have no argv meaning.');
|
|
2465
|
+
return undefined;
|
|
2466
|
+
}
|
|
2467
|
+
return parsed;
|
|
2468
|
+
}
|
|
2636
2469
|
/** Register the `agents ssh` smart wrapper. */
|
|
2637
2470
|
function registerSshWrapper(program) {
|
|
2638
2471
|
const sshCmd = program
|
|
2639
2472
|
.command('ssh <name> [cmd...]')
|
|
2640
2473
|
.description('Connect to a registered device. Preflights reachability, picks the right shell, and authenticates (key or password-from-bundle).')
|
|
2641
2474
|
.allowUnknownOption()
|
|
2475
|
+
.option('--argv <json>', 'run a JSON array of argv tokens with exact per-token fidelity (no shell splitting)')
|
|
2642
2476
|
.addHelpText('after', `
|
|
2643
2477
|
Examples:
|
|
2644
2478
|
agents ssh yosemite-s0 # interactive login (mirrors your project dir)
|
|
@@ -2646,6 +2480,8 @@ Examples:
|
|
|
2646
2480
|
agents ssh win-mini hostname # run a command (PowerShell on Windows)
|
|
2647
2481
|
agents ssh yosemite-s0 uptime # run a command (POSIX)
|
|
2648
2482
|
agents ssh auto # affinity-pick a device (same engine as 'agents run --device auto')
|
|
2483
|
+
agents ssh box --argv '["agents","feed","post","--title","two words","a & b"]'
|
|
2484
|
+
# exact tokens: spaces and metacharacters survive
|
|
2649
2485
|
|
|
2650
2486
|
Devices come from 'agents devices'. Password auth pulls the secret from a
|
|
2651
2487
|
secrets bundle via an askpass shim — the password never touches argv.
|
|
@@ -2660,8 +2496,31 @@ the target when it exists, else the remote home. Same portable-cwd rule as
|
|
|
2660
2496
|
An 'agents browser …', 'ag browser …', or standalone 'browser …' command is
|
|
2661
2497
|
stamped AGENTS_FLEET_REMOTE so the target's browser.remote-control consent
|
|
2662
2498
|
gate applies, same as 'agents browser <verb> --device <name>'.
|
|
2499
|
+
|
|
2500
|
+
--argv takes a JSON array of strings and delivers each element as exactly ONE
|
|
2501
|
+
token on the peer, so a token containing a space, '&', '|', '$' or a quote
|
|
2502
|
+
arrives intact. The positional form keeps its existing semantics — the remote
|
|
2503
|
+
shell parses it — so the two are mutually exclusive rather than interchangeable.
|
|
2663
2504
|
`)
|
|
2664
|
-
.action(async (name, cmd) => {
|
|
2505
|
+
.action(async (name, cmd, opts) => {
|
|
2506
|
+
// `--argv` is a DIFFERENT delivery contract, not a spelling of the
|
|
2507
|
+
// positional form, so accepting both would have to silently pick one.
|
|
2508
|
+
if (opts.argv !== undefined && cmd.length > 0) {
|
|
2509
|
+
console.error(chalk.red('Pass either --argv <json> or a positional command, not both.'));
|
|
2510
|
+
console.error(chalk.gray('--argv delivers exact tokens; the positional form is parsed by the remote shell.'));
|
|
2511
|
+
process.exit(1);
|
|
2512
|
+
}
|
|
2513
|
+
let argvTokens;
|
|
2514
|
+
if (opts.argv !== undefined) {
|
|
2515
|
+
argvTokens = parseArgvJson(opts.argv);
|
|
2516
|
+
if (!argvTokens)
|
|
2517
|
+
process.exit(1);
|
|
2518
|
+
if (argvTokens.length === 0) {
|
|
2519
|
+
console.error(chalk.red('--argv needs at least one token (the program to run).'));
|
|
2520
|
+
process.exit(1);
|
|
2521
|
+
}
|
|
2522
|
+
cmd = argvTokens;
|
|
2523
|
+
}
|
|
2665
2524
|
// Hidden askpass bridge: ssh execs the shim, which re-invokes us here.
|
|
2666
2525
|
if (name === '__askpass') {
|
|
2667
2526
|
await runAskpass();
|
|
@@ -2734,7 +2593,7 @@ gate applies, same as 'agents browser <verb> --device <name>'.
|
|
|
2734
2593
|
// `agents run --device` (deriveMirroredCwd). Best-effort — a missing dir
|
|
2735
2594
|
// falls back to the remote home. An explicit `cmd` keeps its cwd (RUSH-2412).
|
|
2736
2595
|
const mirrorCwd = cmd.length === 0 ? deriveMirroredCwd(process.cwd()) : undefined;
|
|
2737
|
-
const { args, env } = buildSshInvocation(device, cmd, shim, { pinned }, { interactiveCwd: mirrorCwd });
|
|
2596
|
+
const { args, env } = buildSshInvocation(device, cmd, shim, { pinned }, { interactiveCwd: mirrorCwd, ...(argvTokens ? { argv: true } : {}) });
|
|
2738
2597
|
// Interactive login: make the local terminal's terminfo (e.g.
|
|
2739
2598
|
// xterm-ghostty) available on the remote so backspace/colors/clear work.
|
|
2740
2599
|
// Best-effort + cached per host — never blocks the login (see terminfo.ts).
|
package/dist/commands/sync.js
CHANGED
|
@@ -514,7 +514,8 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
514
514
|
// into. Any explicit flag, --yes, or --json keeps the non-interactive path.
|
|
515
515
|
// --json is a machine consumer (and the fleet fan-out injects it), so never
|
|
516
516
|
// open a picker under it.
|
|
517
|
-
const
|
|
517
|
+
const kindSelection = parseKindSelection(opts);
|
|
518
|
+
const anyExplicitFlag = !!(opts.repos || opts.secrets || opts.cloud || opts.local || kindSelection);
|
|
518
519
|
if (!quiet && !json && !opts.yes && !anyExplicitFlag && isInteractiveTerminal()) {
|
|
519
520
|
await runInteractiveReconcile(opts, outLog, errLog);
|
|
520
521
|
return;
|
|
@@ -524,7 +525,10 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
524
525
|
repos: opts.repos,
|
|
525
526
|
secrets: opts.secrets,
|
|
526
527
|
cloud: opts.cloud,
|
|
527
|
-
local
|
|
528
|
+
// A resource selector is a local reconcile unless the caller explicitly
|
|
529
|
+
// asks to fetch repos/secrets first. This keeps replacements such as
|
|
530
|
+
// `sync --mcp demo` scoped like the retired resource verb.
|
|
531
|
+
local: opts.local || (!!kindSelection && !opts.repos && !opts.secrets && !opts.cloud),
|
|
528
532
|
};
|
|
529
533
|
// Same chokepoint as `agents secrets push/pull` — prefers AGENTS_SYNC_PASSPHRASE,
|
|
530
534
|
// falls back to the deprecated master-key name with a single warning.
|
|
@@ -541,6 +545,8 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
541
545
|
passphrase,
|
|
542
546
|
// quiet under --json so refresh() cannot pollute the JSON stdout the fleet parses.
|
|
543
547
|
quiet: quiet || json,
|
|
548
|
+
selection: kindSelection,
|
|
549
|
+
allowExecSurfaces: !!opts.allowExecSurfaces,
|
|
544
550
|
log: (msg) => { if (!quiet && !json)
|
|
545
551
|
outLog(chalk.gray(` ${msg}`)); },
|
|
546
552
|
});
|
|
@@ -548,20 +554,22 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
548
554
|
// we act on central as converged by this sync rather than a stale pre-pull
|
|
549
555
|
// copy that could re-claim a profile a peer already migrated. Skipped under
|
|
550
556
|
// --cloud (fetch-only, no local reconcile).
|
|
551
|
-
if (!opts.cloud)
|
|
557
|
+
if (!opts.cloud && !kindSelection)
|
|
552
558
|
evictCentralBrowserProfilesForSync(quiet, json, outLog, errLog);
|
|
553
559
|
// Post-reconcile verification (PHNX-3186): re-read every version the reconcile
|
|
554
560
|
// wrote into and confirm it now matches source. Without this the umbrella
|
|
555
561
|
// printed `✓ sync: reconciled` unconditionally, the exact false-success the
|
|
556
562
|
// ticket reports. Residual drift downgrades the line and sets a non-zero exit.
|
|
557
|
-
const residual = result.reconciled
|
|
563
|
+
const residual = result.reconciled && !kindSelection
|
|
558
564
|
? verifyReconciled(result.reconciledVersions.map((r) => ({ agent: r.agent, version: r.version })), cwd)
|
|
559
565
|
: [];
|
|
560
566
|
// Post-reconcile repair, machine-wide: no agent scope → heal every installed
|
|
561
567
|
// agent, re-wire hooks the diff left behind, and repair managed hook runtime
|
|
562
568
|
// shims. The stale-CLI purge runs ONLY with `--prune-clis` (never automatic).
|
|
563
569
|
// Skipped under --cloud (fetch-only: nothing was reconciled to repair).
|
|
564
|
-
const repair = opts.cloud
|
|
570
|
+
const repair = opts.cloud || kindSelection
|
|
571
|
+
? null
|
|
572
|
+
: await repairAfterSync({ cwd, pruneClis: !!opts.pruneClis });
|
|
565
573
|
// A repair that left something for a human (an unresolvable shim, a failed
|
|
566
574
|
// rewire/purge) is a non-zero outcome, same as the deleted `doctor --fix`.
|
|
567
575
|
const repairFailed = repair !== null && repairHadFailures(repair);
|
|
@@ -578,6 +586,7 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
578
586
|
secrets: result.secrets,
|
|
579
587
|
devices: result.devices,
|
|
580
588
|
reconciled: result.reconciled,
|
|
589
|
+
selection: kindSelection ?? null,
|
|
581
590
|
declined: result.declined,
|
|
582
591
|
residualDrift: residual,
|
|
583
592
|
repair: repair ? repairAfterSyncJson(repair) : null,
|
|
@@ -6,14 +6,11 @@ export interface TeamRow {
|
|
|
6
6
|
/** Short id of the session that spawned this team, when the index knows it. */
|
|
7
7
|
spawnedBy?: string;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
interface PickedTeam {
|
|
10
10
|
team: string;
|
|
11
11
|
}
|
|
12
|
-
/** Format a single team as a one-line row for the list table or picker label. */
|
|
13
|
-
export declare function formatTeamRow(row: TeamRow, nameWidth: number, compositionWidth: number): string;
|
|
14
|
-
/** Build a multi-line preview string for the picker's detail pane. */
|
|
15
|
-
export declare function buildTeamPreview(row: TeamRow): string;
|
|
16
12
|
/** Print a non-interactive team table to stdout (used when output is piped). */
|
|
17
13
|
export declare function printTeamTable(rows: TeamRow[]): void;
|
|
18
14
|
/** Show an interactive team picker with fuzzy search and return the selected team name. */
|
|
19
15
|
export declare function teamPicker(rows: TeamRow[], initialSearch?: string): Promise<PickedTeam | null>;
|
|
16
|
+
export {};
|
|
@@ -131,7 +131,7 @@ function workCell(agents) {
|
|
|
131
131
|
return '';
|
|
132
132
|
}
|
|
133
133
|
/** Format a single team as a one-line row for the list table or picker label. */
|
|
134
|
-
|
|
134
|
+
function formatTeamRow(row, nameWidth, compositionWidth) {
|
|
135
135
|
const t = row.team;
|
|
136
136
|
const name = chalk.cyan(t.task_name.padEnd(nameWidth));
|
|
137
137
|
const composition = chalk.white(formatComposition(row.agents).padEnd(compositionWidth));
|
|
@@ -154,7 +154,7 @@ function displayHandle(a) {
|
|
|
154
154
|
return a.name || a.session_label || a.agent_id.slice(0, 8);
|
|
155
155
|
}
|
|
156
156
|
/** Build a multi-line preview string for the picker's detail pane. */
|
|
157
|
-
|
|
157
|
+
function buildTeamPreview(row) {
|
|
158
158
|
const t = row.team;
|
|
159
159
|
const lines = [];
|
|
160
160
|
const head = [];
|
package/dist/commands/teams.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface TeamListAgentSnapshot {
|
|
|
43
43
|
*/
|
|
44
44
|
export declare function printFeedHint(team: string): void;
|
|
45
45
|
/** Where `teams message`/`teams resume` routes a follow-up, by teammate status. */
|
|
46
|
-
|
|
46
|
+
type TeamMessageRoute = {
|
|
47
47
|
kind: 'steer';
|
|
48
48
|
} | {
|
|
49
49
|
kind: 'resume';
|
|
@@ -102,12 +102,6 @@ export declare function staleRepoError(params: {
|
|
|
102
102
|
base: string;
|
|
103
103
|
sync: string;
|
|
104
104
|
}): string;
|
|
105
|
-
/**
|
|
106
|
-
* Register the generic cloud dispatcher — staged cloud teammates get
|
|
107
|
-
* dispatched when their --after deps resolve, using repo/branch stored on
|
|
108
|
-
* the teammate itself so we don't need the original --cloud CLI args.
|
|
109
|
-
*/
|
|
110
|
-
export declare function wireCloudDispatcher(mgr: AgentManager): void;
|
|
111
105
|
export declare function cloudDispatchOptions(agent: Pick<AgentProcess, 'prompt' | 'agentType' | 'cloudRepo' | 'cloudBranch' | 'model' | 'mode'>): DispatchOptions;
|
|
112
106
|
/**
|
|
113
107
|
* Single-wave start used by `teams start` without --watch. startReady()
|
package/dist/commands/teams.js
CHANGED
|
@@ -8,7 +8,7 @@ import { mailboxDir, enqueue } from '../lib/mailbox.js';
|
|
|
8
8
|
import { resolveProvider } from '../lib/cloud/registry.js';
|
|
9
9
|
import { emit } from '../lib/feed/events.js';
|
|
10
10
|
import { maybeShowStarNudge } from '../lib/star-nudge.js';
|
|
11
|
-
import { shareRuntimeEnv } from '../lib/share
|
|
11
|
+
import { shareRuntimeEnv } from '../lib/share-runtime.js';
|
|
12
12
|
import { runSupervisor } from '../lib/teams/supervisor.js';
|
|
13
13
|
import { debug } from '../lib/teams/debug.js';
|
|
14
14
|
import { runPrWatch, DEFAULT_MAX_WAVES, } from '../lib/teams/pr-watch.js';
|
|
@@ -360,7 +360,7 @@ async function assertRepoFreshOrConfirm(params) {
|
|
|
360
360
|
* dispatched when their --after deps resolve, using repo/branch stored on
|
|
361
361
|
* the teammate itself so we don't need the original --cloud CLI args.
|
|
362
362
|
*/
|
|
363
|
-
|
|
363
|
+
function wireCloudDispatcher(mgr) {
|
|
364
364
|
mgr.setCloudDispatcher(async (a) => {
|
|
365
365
|
if (!a.cloudProvider) {
|
|
366
366
|
throw new Error(`Teammate ${a.agentId} has no cloud provider set`);
|
package/dist/commands/tmux.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* extension, raw shells, `agents teams`, routines, and the Swarm MCP can all
|
|
8
8
|
* call into.
|
|
9
9
|
*
|
|
10
|
-
* Surface mirrors `
|
|
10
|
+
* Surface mirrors the standalone `term` CLI's:
|
|
11
11
|
* agents tmux check
|
|
12
12
|
* agents tmux new <name> [--cmd ...] [--cwd DIR] [--replace] [--attach-existing] [--source S]
|
|
13
13
|
* agents tmux attach <name>
|
package/dist/commands/tmux.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* extension, raw shells, `agents teams`, routines, and the Swarm MCP can all
|
|
8
8
|
* call into.
|
|
9
9
|
*
|
|
10
|
-
* Surface mirrors `
|
|
10
|
+
* Surface mirrors the standalone `term` CLI's:
|
|
11
11
|
* agents tmux check
|
|
12
12
|
* agents tmux new <name> [--cmd ...] [--cwd DIR] [--replace] [--attach-existing] [--source S]
|
|
13
13
|
* agents tmux attach <name>
|
package/dist/commands/traces.js
CHANGED
|
@@ -3,7 +3,7 @@ import { setHelpSections } from '../lib/help.js';
|
|
|
3
3
|
import { readSyncLedger, syncTraces } from '../lib/traces/sync.js';
|
|
4
4
|
import { managedTracesBaseUrl, resolveTracesBackend } from '../lib/traces/backend.js';
|
|
5
5
|
import { showUrl } from '../lib/open-url.js';
|
|
6
|
-
import { DEFAULT_CF_BUNDLE, readCloudflareCreds } from '../lib/
|
|
6
|
+
import { DEFAULT_CF_BUNDLE, readCloudflareCreds } from '../lib/cloudflare/creds.js';
|
|
7
7
|
import { PHOENIX_ID_BASE } from '../lib/identity/client.js';
|
|
8
8
|
import { DEFAULT_BUCKET_NAME, DEFAULT_WORKER_NAME } from '../lib/traces/config.js';
|
|
9
9
|
import { DEFAULT_TRACES_DOMAIN } from '../lib/traces/backend.js';
|
|
@@ -2,6 +2,7 @@ import type { Command } from 'commander';
|
|
|
2
2
|
export interface UpgradeOptions {
|
|
3
3
|
yes?: boolean;
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
type UpgradeAction = (version: string | undefined, options: UpgradeOptions) => Promise<void>;
|
|
6
6
|
/** Register the public self-upgrade surface; the entry point supplies its runtime action. */
|
|
7
7
|
export declare function registerUpgradeCommand(program: Command, action?: UpgradeAction): Command;
|
|
8
|
+
export {};
|
package/dist/commands/utils.d.ts
CHANGED
|
@@ -119,7 +119,7 @@ export declare function resolveAgentTargetsAutoInstalling(value: string, availab
|
|
|
119
119
|
/**
|
|
120
120
|
* Same as resolveAgentTargetsAutoInstalling but returns the broader
|
|
121
121
|
* InstalledAgentTargetResult that includes `directAgents` (for paths like
|
|
122
|
-
* `agents install` and `mcp
|
|
122
|
+
* `agents install` and `sync --mcp` that fall through to unmanaged homes
|
|
123
123
|
* when no managed version is installed).
|
|
124
124
|
*/
|
|
125
125
|
export declare function resolveInstalledAgentTargetsAutoInstalling(value: string, availableAgents: readonly AgentId[], options?: {
|
package/dist/commands/utils.js
CHANGED
|
@@ -303,7 +303,7 @@ export async function resolveAgentTargetsAutoInstalling(value, availableAgents,
|
|
|
303
303
|
/**
|
|
304
304
|
* Same as resolveAgentTargetsAutoInstalling but returns the broader
|
|
305
305
|
* InstalledAgentTargetResult that includes `directAgents` (for paths like
|
|
306
|
-
* `agents install` and `mcp
|
|
306
|
+
* `agents install` and `sync --mcp` that fall through to unmanaged homes
|
|
307
307
|
* when no managed version is installed).
|
|
308
308
|
*/
|
|
309
309
|
export async function resolveInstalledAgentTargetsAutoInstalling(value, availableAgents, options = {}) {
|
|
@@ -14,7 +14,7 @@ import type { AgentId } from './types.js';
|
|
|
14
14
|
* when the weaker (email) identity is present; `discovery-only` = shown in the
|
|
15
15
|
* list but not nameable; `unsupported` = neither.
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
interface NativeAccountCapability {
|
|
18
18
|
inspection: 'strong' | 'email' | 'opaque' | 'none';
|
|
19
19
|
scope: 'version' | 'device' | 'unsupported';
|
|
20
20
|
status: 'supported' | 'conditional' | 'discovery-only' | 'unsupported';
|
|
@@ -51,3 +51,4 @@ export declare function nativeIdentityKey(info: {
|
|
|
51
51
|
email?: string | null;
|
|
52
52
|
accountKey?: string | null;
|
|
53
53
|
}, capability: NativeAccountCapability): string | null;
|
|
54
|
+
export {};
|