@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
|
@@ -28,7 +28,7 @@ import { type ConfigDrift } from './config-drift.js';
|
|
|
28
28
|
* - `missing` — source exists, nothing installed in the version home ('missing').
|
|
29
29
|
* - `orphan` — installed in the home with no source ('extra'); prune's job, not sync's.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
type ResourceSyncStatus = 'synced' | 'drifted' | 'missing' | 'orphan';
|
|
32
32
|
export interface ResourceStatusRow {
|
|
33
33
|
agent: AgentId;
|
|
34
34
|
version: string;
|
|
@@ -121,27 +121,13 @@ export declare function formatResidualDrift(residual: ResidualDrift[]): string[]
|
|
|
121
121
|
* at, and `detail` says what differs when the differ knows.
|
|
122
122
|
*/
|
|
123
123
|
export declare function formatDriftRows(v: AgentVersionStatus): string[];
|
|
124
|
-
|
|
124
|
+
interface SyncStatusOptions {
|
|
125
125
|
cwd?: string;
|
|
126
126
|
/** Restrict to specific agent ids; undefined = every supported agent. */
|
|
127
127
|
agents?: AgentId[];
|
|
128
128
|
/** Restrict to specific resource kinds; undefined = all. */
|
|
129
129
|
kinds?: DoctorKind[];
|
|
130
130
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Read `.system` repo freshness WITHOUT touching the network. `git status`
|
|
133
|
-
* reports ahead/behind against the remote-tracking ref, which the detached
|
|
134
|
-
* auto-pull worker keeps warm via periodic `git fetch`. This is the same number
|
|
135
|
-
* the menu-bar surfaces; we read it once, here, so every surface agrees.
|
|
136
|
-
*/
|
|
137
|
-
export declare function getSystemRepoStatus(): Promise<SystemRepoStatus>;
|
|
138
|
-
/**
|
|
139
|
-
* Detect whether `~/.agents` (the user config layer) is git-backed. A partial
|
|
140
|
-
* install — runtime state present but no `.git` (or no `origin`) — is a distinct
|
|
141
|
-
* drift state that `agents repo sync user` heals by adopting in place (PHNX-3301),
|
|
142
|
-
* surfaced separately from per-version resource gaps. Purely local; no network.
|
|
143
|
-
*/
|
|
144
|
-
export declare function getUserRepoStatus(): Promise<UserRepoStatus>;
|
|
145
131
|
/**
|
|
146
132
|
* Compute unified sync status across the fleet. Resolves against non-project
|
|
147
133
|
* layers only (`excludeProject: true`) — the GLOBAL version home is never
|
|
@@ -149,3 +135,4 @@ export declare function getUserRepoStatus(): Promise<UserRepoStatus>;
|
|
|
149
135
|
* "missing" there would be a false gap (matches doctor's overview semantics).
|
|
150
136
|
*/
|
|
151
137
|
export declare function computeSyncStatus(options?: SyncStatusOptions): Promise<UnifiedSyncStatus>;
|
|
138
|
+
export {};
|
package/dist/lib/sync-status.js
CHANGED
|
@@ -93,7 +93,7 @@ function rowsFromReport(agent, version, report) {
|
|
|
93
93
|
* auto-pull worker keeps warm via periodic `git fetch`. This is the same number
|
|
94
94
|
* the menu-bar surfaces; we read it once, here, so every surface agrees.
|
|
95
95
|
*/
|
|
96
|
-
|
|
96
|
+
async function getSystemRepoStatus() {
|
|
97
97
|
const dir = getSystemAgentsDir();
|
|
98
98
|
const base = { dir, behind: 0, ahead: 0, branch: null, unknown: true };
|
|
99
99
|
if (!isGitRepo(dir))
|
|
@@ -119,7 +119,7 @@ export async function getSystemRepoStatus() {
|
|
|
119
119
|
* drift state that `agents repo sync user` heals by adopting in place (PHNX-3301),
|
|
120
120
|
* surfaced separately from per-version resource gaps. Purely local; no network.
|
|
121
121
|
*/
|
|
122
|
-
|
|
122
|
+
async function getUserRepoStatus() {
|
|
123
123
|
const dir = getUserAgentsDir();
|
|
124
124
|
if (!fs.existsSync(dir))
|
|
125
125
|
return { dir, notGitRepo: false };
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* arrives with `agents secrets vault unlock`, #366/#367)
|
|
16
16
|
* reconcile-> refresh({ skipPrompts }) — re-materialize resources into homes
|
|
17
17
|
*/
|
|
18
|
+
import type { ResourceSelection } from './installations/versions.js';
|
|
18
19
|
/** The umbrella flags off `agents sync`. */
|
|
19
20
|
export interface UmbrellaFlags {
|
|
20
21
|
repos?: boolean;
|
|
@@ -23,7 +24,7 @@ export interface UmbrellaFlags {
|
|
|
23
24
|
local?: boolean;
|
|
24
25
|
}
|
|
25
26
|
/** Which stages a given flag combination runs. */
|
|
26
|
-
|
|
27
|
+
interface UmbrellaPlan {
|
|
27
28
|
fetchRepos: boolean;
|
|
28
29
|
fetchSecrets: boolean;
|
|
29
30
|
reconcile: boolean;
|
|
@@ -41,7 +42,7 @@ export interface UmbrellaPlan {
|
|
|
41
42
|
* blast radius than the verb should carry by default.
|
|
42
43
|
*/
|
|
43
44
|
export declare function planUmbrellaStages(f: UmbrellaFlags): UmbrellaPlan;
|
|
44
|
-
|
|
45
|
+
interface UmbrellaResult {
|
|
45
46
|
plan: UmbrellaPlan;
|
|
46
47
|
repos?: {
|
|
47
48
|
pulled: number;
|
|
@@ -74,7 +75,7 @@ export interface UmbrellaResult {
|
|
|
74
75
|
version: string;
|
|
75
76
|
}>;
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
interface RunUmbrellaArgs {
|
|
78
79
|
flags: UmbrellaFlags;
|
|
79
80
|
/** Progress sink (already quiet-aware in the caller). */
|
|
80
81
|
log: (msg: string) => void;
|
|
@@ -87,6 +88,10 @@ export interface RunUmbrellaArgs {
|
|
|
87
88
|
* `agents sync --json` / fleet fan-out leave stdout as a single JSON object.
|
|
88
89
|
*/
|
|
89
90
|
quiet?: boolean;
|
|
91
|
+
/** Optional resource-only reconcile across installed versions. */
|
|
92
|
+
selection?: ResourceSelection;
|
|
93
|
+
/** Explicit consent for selected plugins that add executable surfaces. */
|
|
94
|
+
allowExecSurfaces?: boolean;
|
|
90
95
|
}
|
|
91
96
|
/**
|
|
92
97
|
* Execute the planned stages in order: repos -> secrets -> reconcile.
|
|
@@ -94,3 +99,4 @@ export interface RunUmbrellaArgs {
|
|
|
94
99
|
* reconcile — `agents sync` should make as much current as it can in one pass.
|
|
95
100
|
*/
|
|
96
101
|
export declare function runUmbrellaSync(args: RunUmbrellaArgs): Promise<UmbrellaResult>;
|
|
102
|
+
export {};
|
|
@@ -53,7 +53,7 @@ export function planUmbrellaStages(f) {
|
|
|
53
53
|
* reconcile — `agents sync` should make as much current as it can in one pass.
|
|
54
54
|
*/
|
|
55
55
|
export async function runUmbrellaSync(args) {
|
|
56
|
-
const { flags, log, yes, passphrase, quiet = false } = args;
|
|
56
|
+
const { flags, log, yes, passphrase, quiet = false, selection, allowExecSurfaces = false } = args;
|
|
57
57
|
const plan = planUmbrellaStages(flags);
|
|
58
58
|
const result = { plan, reconciled: false, declined: [], reconciledVersions: [] };
|
|
59
59
|
if (plan.fetchRepos) {
|
|
@@ -131,7 +131,13 @@ export async function runUmbrellaSync(args) {
|
|
|
131
131
|
}
|
|
132
132
|
if (plan.reconcile) {
|
|
133
133
|
const { refresh } = await import('./refresh.js');
|
|
134
|
-
const refreshed = await refresh({
|
|
134
|
+
const refreshed = await refresh({
|
|
135
|
+
skipPrompts: yes,
|
|
136
|
+
quiet,
|
|
137
|
+
skipClis: selection !== undefined,
|
|
138
|
+
selection,
|
|
139
|
+
allowExecSurfaces,
|
|
140
|
+
});
|
|
135
141
|
result.reconciled = true;
|
|
136
142
|
result.declined = refreshed.declined;
|
|
137
143
|
result.reconciledVersions = refreshed.reconciled;
|
|
@@ -140,14 +146,16 @@ export async function runUmbrellaSync(args) {
|
|
|
140
146
|
// rather than silently adding them (refresh mode). Soft: a machine without
|
|
141
147
|
// tailscale is a clean no-op, never a sync failure. First-run population is
|
|
142
148
|
// `agents setup` / manual `agents devices sync` (bootstrap).
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
if (!selection) {
|
|
150
|
+
const { runDeviceSync } = await import('./devices/sync.js');
|
|
151
|
+
const { reconcilePendingSentinels } = await import('./devices/pending.js');
|
|
152
|
+
const dev = await runDeviceSync({ soft: true, mode: 'refresh' });
|
|
153
|
+
if (dev.ok)
|
|
154
|
+
await reconcilePendingSentinels(dev.pending);
|
|
155
|
+
result.devices = { synced: dev.synced, pending: dev.pending.length, skipped: !dev.ok };
|
|
156
|
+
if (dev.ok) {
|
|
157
|
+
log(`devices: ${dev.synced} refreshed${dev.pending.length ? `, ${dev.pending.length} new pending` : ''}`);
|
|
158
|
+
}
|
|
151
159
|
}
|
|
152
160
|
}
|
|
153
161
|
return result;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentId } from './types.js';
|
|
2
|
-
|
|
2
|
+
interface SystemRunSyncResult {
|
|
3
3
|
/** Names rewritten per kind; empty when the sentinel matched (skip-fast). */
|
|
4
4
|
skills: string[];
|
|
5
5
|
subagents: string[];
|
|
@@ -9,3 +9,4 @@ export interface SystemRunSyncResult {
|
|
|
9
9
|
* their source directories changed since the last run for (agent, version).
|
|
10
10
|
*/
|
|
11
11
|
export declare function applySystemResourcesAtRun(agent: AgentId, version: string, versionHome: string): SystemRunSyncResult;
|
|
12
|
+
export {};
|
|
@@ -24,8 +24,6 @@ export declare enum AgentStatus {
|
|
|
24
24
|
* bug — it swept live `pending` `--after` teammates past the 50-record cap.
|
|
25
25
|
*/
|
|
26
26
|
export declare const TERMINAL_STATUSES: ReadonlySet<AgentStatus>;
|
|
27
|
-
/** True when a teammate has reached a terminal (completed/failed/stopped) status. */
|
|
28
|
-
export declare function isTerminalStatus(status: AgentStatus): boolean;
|
|
29
27
|
export type TeammateFailureStage = 'placement' | 'spawn' | 'execution' | 'dependency' | 'cloud';
|
|
30
28
|
/** Durable evidence observed at a concrete teammate lifecycle boundary. */
|
|
31
29
|
export interface TeammateFailure {
|
|
@@ -48,7 +46,7 @@ export interface TeammateFailure {
|
|
|
48
46
|
* forever". Collapsing GONE into the empty-`.exit` case is exactly the bug
|
|
49
47
|
* that left a dead `--device` teammate RUNNING indefinitely.
|
|
50
48
|
*/
|
|
51
|
-
|
|
49
|
+
interface RemoteLivenessSnapshot {
|
|
52
50
|
alive: boolean;
|
|
53
51
|
exit: string | null;
|
|
54
52
|
exitFilePresent: boolean;
|
|
@@ -145,7 +143,7 @@ export declare function checkAllClis(): Record<string, {
|
|
|
145
143
|
*/
|
|
146
144
|
export declare function checkCliSignedIn(agentType: AgentType): Promise<boolean>;
|
|
147
145
|
/** Advisory sign-in status for a `teams doctor` row. */
|
|
148
|
-
|
|
146
|
+
interface SignInAdvisory {
|
|
149
147
|
/** true / false from the probe, or null when the agent isn't installed. */
|
|
150
148
|
signedIn: boolean | null;
|
|
151
149
|
/** Whether the agent is currently a running teammate. */
|
package/dist/lib/teams/agents.js
CHANGED
|
@@ -147,7 +147,7 @@ export const TERMINAL_STATUSES = new Set([
|
|
|
147
147
|
AgentStatus.STOPPED,
|
|
148
148
|
]);
|
|
149
149
|
/** True when a teammate has reached a terminal (completed/failed/stopped) status. */
|
|
150
|
-
|
|
150
|
+
function isTerminalStatus(status) {
|
|
151
151
|
return TERMINAL_STATUSES.has(status);
|
|
152
152
|
}
|
|
153
153
|
function safeFailureMessage(message) {
|
|
@@ -11,7 +11,7 @@ import { type ForEachSpec, type ForEachTeammate } from '../workflows.js';
|
|
|
11
11
|
* fabricates a phantom teammate. Pure and deterministic — no I/O.
|
|
12
12
|
*/
|
|
13
13
|
export declare function parseProducedItems(stdout: string): string[];
|
|
14
|
-
|
|
14
|
+
interface ProduceItemsOptions {
|
|
15
15
|
/** Working directory for the producer command. */
|
|
16
16
|
cwd?: string | null;
|
|
17
17
|
/** Environment for the producer command (defaults to the current process env). */
|
|
@@ -49,7 +49,7 @@ export declare function produceItems(spec: ForEachSpec, opts?: ProduceItemsOptio
|
|
|
49
49
|
*/
|
|
50
50
|
export declare function evaluateKeepIf(votes: boolean[], keepIf: 'majority' | 'all' | 'any'): boolean;
|
|
51
51
|
/** Per-item verdict after tallying its verify panel. */
|
|
52
|
-
|
|
52
|
+
interface ForEachItemVerdict {
|
|
53
53
|
/** The produced item this verdict is for. */
|
|
54
54
|
item: string;
|
|
55
55
|
/** Zero-based index in the (capped) produced list. */
|
|
@@ -108,3 +108,4 @@ export interface RunForEachResult {
|
|
|
108
108
|
* `keep_if` gate — that vote-counting lives downstream, not here).
|
|
109
109
|
*/
|
|
110
110
|
export declare function runForEach(mgr: AgentManager, teamName: string, spec: ForEachSpec, items: string[], opts?: RunForEachOptions): Promise<RunForEachResult>;
|
|
111
|
+
export {};
|
|
@@ -133,20 +133,12 @@ export declare function parsePrUrl(prUrl: string): {
|
|
|
133
133
|
repo: string;
|
|
134
134
|
number: number;
|
|
135
135
|
} | null;
|
|
136
|
-
/** Fetch the current CI checks for a PR via `gh pr checks`. Returns [] on any gh error. */
|
|
137
|
-
export declare function fetchPrChecks(prUrl: string): Promise<PrCheck[]>;
|
|
138
|
-
/** Fetch review comments for a PR via `gh api`. Returns [] on any gh error. */
|
|
139
|
-
export declare function fetchPrReviewComments(prUrl: string): Promise<PrReviewComment[]>;
|
|
140
|
-
/** Fetch the failing-run logs for a check via `gh run view --log-failed`. Best-effort, truncated. */
|
|
141
|
-
export declare function fetchCiFailureLogs(check: PrCheck, maxChars?: number): Promise<string>;
|
|
142
|
-
/** Collect a live PR snapshot from `gh`. The poll-mode seam for `runPrWatch`. */
|
|
143
|
-
export declare function pollPrSnapshot(prUrl: string, sourceTeammate: string | null): Promise<PrSnapshot>;
|
|
144
136
|
/** A PR to watch, paired with the teammate that opened it. */
|
|
145
137
|
export interface WatchTarget {
|
|
146
138
|
prUrl: string;
|
|
147
139
|
sourceTeammate: string | null;
|
|
148
140
|
}
|
|
149
|
-
|
|
141
|
+
interface PrWatchDeps {
|
|
150
142
|
/** Discover which PRs to watch this pass (teammates may open PRs mid-run). */
|
|
151
143
|
resolveTargets: () => Promise<WatchTarget[]>;
|
|
152
144
|
/** Snapshot one PR's CI + review comments. Defaults to `pollPrSnapshot`. */
|
|
@@ -192,7 +184,7 @@ export type PrWatchEvent = {
|
|
|
192
184
|
message: string;
|
|
193
185
|
timestamp: string;
|
|
194
186
|
};
|
|
195
|
-
|
|
187
|
+
interface PrWatchOptions {
|
|
196
188
|
intervalMs?: number;
|
|
197
189
|
/** Stop after this many polls (0 / undefined = run until signalled). */
|
|
198
190
|
maxPolls?: number;
|
|
@@ -205,7 +197,7 @@ export interface PrWatchOptions {
|
|
|
205
197
|
/** Abort signal — resolves the loop at the next interval boundary. */
|
|
206
198
|
shouldStop?: () => boolean;
|
|
207
199
|
}
|
|
208
|
-
|
|
200
|
+
interface PrWatchResult {
|
|
209
201
|
polls: number;
|
|
210
202
|
spawned: number;
|
|
211
203
|
/** How many PRs escalated to a human (wave budget exhausted). */
|
|
@@ -224,3 +216,4 @@ export interface PrWatchResult {
|
|
|
224
216
|
* and `waves` hard-caps the total spawns per PR (issue #338).
|
|
225
217
|
*/
|
|
226
218
|
export declare function runPrWatch(deps: PrWatchDeps, opts?: PrWatchOptions): Promise<PrWatchResult>;
|
|
219
|
+
export {};
|
|
@@ -194,7 +194,7 @@ export function parsePrUrl(prUrl) {
|
|
|
194
194
|
// PrReviewComment shapes and hand them straight to decidePrActions.
|
|
195
195
|
// ---------------------------------------------------------------------------
|
|
196
196
|
/** Fetch the current CI checks for a PR via `gh pr checks`. Returns [] on any gh error. */
|
|
197
|
-
|
|
197
|
+
async function fetchPrChecks(prUrl) {
|
|
198
198
|
try {
|
|
199
199
|
const { stdout } = await execFileAsync('gh', ['pr', 'checks', prUrl, '--json', 'name,state,link,workflow'], { maxBuffer: 8 * 1024 * 1024 });
|
|
200
200
|
const raw = JSON.parse(stdout);
|
|
@@ -213,7 +213,7 @@ export async function fetchPrChecks(prUrl) {
|
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
/** Fetch review comments for a PR via `gh api`. Returns [] on any gh error. */
|
|
216
|
-
|
|
216
|
+
async function fetchPrReviewComments(prUrl) {
|
|
217
217
|
const parsed = parsePrUrl(prUrl);
|
|
218
218
|
if (!parsed)
|
|
219
219
|
return [];
|
|
@@ -239,7 +239,7 @@ export async function fetchPrReviewComments(prUrl) {
|
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
/** Fetch the failing-run logs for a check via `gh run view --log-failed`. Best-effort, truncated. */
|
|
242
|
-
|
|
242
|
+
async function fetchCiFailureLogs(check, maxChars = 8000) {
|
|
243
243
|
const runId = check.link?.match(/\/runs\/(\d+)/)?.[1] ?? check.link?.match(/\/actions\/runs\/(\d+)/)?.[1];
|
|
244
244
|
if (!runId)
|
|
245
245
|
return '';
|
|
@@ -255,7 +255,7 @@ export async function fetchCiFailureLogs(check, maxChars = 8000) {
|
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
/** Collect a live PR snapshot from `gh`. The poll-mode seam for `runPrWatch`. */
|
|
258
|
-
|
|
258
|
+
async function pollPrSnapshot(prUrl, sourceTeammate) {
|
|
259
259
|
const [checks, comments] = await Promise.all([
|
|
260
260
|
fetchPrChecks(prUrl),
|
|
261
261
|
fetchPrReviewComments(prUrl),
|
|
@@ -34,7 +34,7 @@ export type TeamRegistry = Record<string, TeamMeta>;
|
|
|
34
34
|
* write, which is exactly the data-loss path we are trying to close.
|
|
35
35
|
*/
|
|
36
36
|
export declare function loadTeams(): Promise<TeamRegistry>;
|
|
37
|
-
|
|
37
|
+
interface CreateTeamOptions {
|
|
38
38
|
description?: string;
|
|
39
39
|
enableWorktrees?: boolean;
|
|
40
40
|
/** Path to an existing worktree for all teammates to share. */
|
|
@@ -52,8 +52,6 @@ export declare function createTeam(name: string, options?: CreateTeamOptions): P
|
|
|
52
52
|
export declare function ensureTeam(name: string): Promise<TeamMeta>;
|
|
53
53
|
/** Mark a team as disbanded so saveMeta will not resurrect its teammates. */
|
|
54
54
|
export declare function markTeamDisbanded(name: string): Promise<void>;
|
|
55
|
-
/** Clear a disband tombstone — called when the name is re-created. */
|
|
56
|
-
export declare function clearTeamDisbanded(name: string): Promise<void>;
|
|
57
55
|
/** True when the team was disbanded and has not been re-created since. */
|
|
58
56
|
export declare function isTeamDisbanded(name: string): Promise<boolean>;
|
|
59
57
|
/** Remove a team from the registry. Returns false if the team did not exist. */
|
|
@@ -62,3 +60,4 @@ export declare function removeTeam(name: string): Promise<boolean>;
|
|
|
62
60
|
export declare function teamExists(name: string): Promise<boolean>;
|
|
63
61
|
/** Get metadata for a specific team. Returns null if team does not exist. */
|
|
64
62
|
export declare function getTeam(name: string): Promise<TeamMeta | null>;
|
|
63
|
+
export {};
|
|
@@ -151,7 +151,7 @@ export async function markTeamDisbanded(name) {
|
|
|
151
151
|
await fs.writeFile(disbandedPath(name), JSON.stringify({ team: name, disbanded_at: new Date().toISOString() }), 'utf-8');
|
|
152
152
|
}
|
|
153
153
|
/** Clear a disband tombstone — called when the name is re-created. */
|
|
154
|
-
|
|
154
|
+
async function clearTeamDisbanded(name) {
|
|
155
155
|
try {
|
|
156
156
|
await fs.unlink(disbandedPath(name));
|
|
157
157
|
}
|
|
@@ -9,22 +9,6 @@ interface RemoteSshOptions {
|
|
|
9
9
|
* single-quoted, so odd path characters stay safe.
|
|
10
10
|
*/
|
|
11
11
|
export declare function remotePathExpr(p: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Resolve the ABSOLUTE git top-level for a (possibly `~`-relative) repo path on
|
|
14
|
-
* the host, or null when it isn't a git repo / the host is unreachable. Used by
|
|
15
|
-
* `ensureRemoteRepo` to both VALIDATE and CANONICALIZE a repo location, so every
|
|
16
|
-
* downstream remote command (launch `cd`, worktree create, polling) works from an
|
|
17
|
-
* absolute path with no tilde-expansion hazard.
|
|
18
|
-
*/
|
|
19
|
-
export declare function resolveRemoteRepoRoot(target: string, repoPath: string, opts?: RemoteSshOptions): string | null;
|
|
20
|
-
/** True when `repoPath` is a git working tree on the host. */
|
|
21
|
-
export declare function isRemoteGitRepo(target: string, repoPath: string, opts?: RemoteSshOptions): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Resolve the host repo's default branch name (origin/HEAD → `main`/`master`/…).
|
|
24
|
-
* Falls back to `main` when origin/HEAD isn't set, matching the local recipe's
|
|
25
|
-
* `remote set-head` step.
|
|
26
|
-
*/
|
|
27
|
-
export declare function remoteDefaultBranch(target: string, repoPath: string, opts?: RemoteSshOptions): string;
|
|
28
12
|
/**
|
|
29
13
|
* Create a worktree on the host for a teammate, branched off the freshly-fetched
|
|
30
14
|
* default branch. Returns the absolute worktree path on the host.
|
|
@@ -40,7 +40,7 @@ export function remotePathExpr(p) {
|
|
|
40
40
|
* downstream remote command (launch `cd`, worktree create, polling) works from an
|
|
41
41
|
* absolute path with no tilde-expansion hazard.
|
|
42
42
|
*/
|
|
43
|
-
|
|
43
|
+
function resolveRemoteRepoRoot(target, repoPath, opts = {}) {
|
|
44
44
|
assertValidSshTarget(target);
|
|
45
45
|
const cmd = `git -C ${remotePathExpr(repoPath)} rev-parse --show-toplevel 2>/dev/null`;
|
|
46
46
|
const res = sshExec(target, cmd, { timeoutMs: 15000, multiplex: true, extraSshArgs: opts.extraSshArgs });
|
|
@@ -57,7 +57,7 @@ function remoteGit(target, repoPath, args, timeoutMs = 60000, opts = {}) {
|
|
|
57
57
|
return res.stdout.trim();
|
|
58
58
|
}
|
|
59
59
|
/** True when `repoPath` is a git working tree on the host. */
|
|
60
|
-
|
|
60
|
+
function isRemoteGitRepo(target, repoPath, opts = {}) {
|
|
61
61
|
assertValidSshTarget(target);
|
|
62
62
|
// remotePathExpr so a `~`/`$HOME`-relative path (the canonical repos dir) expands
|
|
63
63
|
// on the host — plain shellQuote would single-quote the tilde into a literal,
|
|
@@ -71,7 +71,7 @@ export function isRemoteGitRepo(target, repoPath, opts = {}) {
|
|
|
71
71
|
* Falls back to `main` when origin/HEAD isn't set, matching the local recipe's
|
|
72
72
|
* `remote set-head` step.
|
|
73
73
|
*/
|
|
74
|
-
|
|
74
|
+
function remoteDefaultBranch(target, repoPath, opts = {}) {
|
|
75
75
|
assertValidSshTarget(target);
|
|
76
76
|
try {
|
|
77
77
|
// Refresh origin/HEAD first so a repo cloned before the default was set resolves.
|
|
@@ -31,7 +31,7 @@ export interface DevicePlacementSignal {
|
|
|
31
31
|
pickerEligible?: boolean;
|
|
32
32
|
}
|
|
33
33
|
/** Team fields the placement cascade reads (a subset of TeamMeta). */
|
|
34
|
-
|
|
34
|
+
interface PlacementTeam {
|
|
35
35
|
devices?: string[];
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
@@ -44,7 +44,7 @@ export interface PlacementTeam {
|
|
|
44
44
|
* honors caps: an explicit pin or a pool of one is the user's own choice and
|
|
45
45
|
* is never second-guessed.
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
interface PlacementOptions {
|
|
48
48
|
/** Worker pool used when the team does not declare an explicit device pool. */
|
|
49
49
|
defaultDevices?: string[];
|
|
50
50
|
maxConcurrent?: Record<string, number>;
|
|
@@ -59,7 +59,7 @@ export interface PlacementOptions {
|
|
|
59
59
|
agentLabel?: string;
|
|
60
60
|
/**
|
|
61
61
|
* Normalized hosts boosted with `auto-launch.preferred` (set by
|
|
62
|
-
* `agents devices
|
|
62
|
+
* `agents devices config <name> auto-launch.preferred on`). A preferred device ranks ahead of a
|
|
63
63
|
* non-preferred one among the eligible survivors — after the signed-in tier
|
|
64
64
|
* (a preferred box that can't run the agent is still no use) and before load,
|
|
65
65
|
* so an operator boost overrides load-based ordering without overriding hard
|
|
@@ -69,9 +69,9 @@ export interface PlacementOptions {
|
|
|
69
69
|
preferred?: ReadonlySet<string>;
|
|
70
70
|
}
|
|
71
71
|
/** Why a device was excluded from the viable set, for the fail-loud message. */
|
|
72
|
-
|
|
72
|
+
type ExclusionReason = 'unreachable' | 'probe-timed-out' | 'overloaded' | 'capped' | 'not-installed';
|
|
73
73
|
/** A pool device dropped from the auto-pick, with the reason + live detail. */
|
|
74
|
-
|
|
74
|
+
interface ExcludedDevice {
|
|
75
75
|
device: string;
|
|
76
76
|
reason: ExclusionReason;
|
|
77
77
|
/** Present for `capped`: `running/cap`. */
|
|
@@ -155,3 +155,4 @@ export declare function pickBestDevice(devices: string[], roster: RosterEntry[],
|
|
|
155
155
|
export declare function resolvePlacement(team: PlacementTeam, explicitDevice: string | null, roster: RosterEntry[], opts?: PlacementOptions): {
|
|
156
156
|
device: string | null;
|
|
157
157
|
};
|
|
158
|
+
export {};
|
|
@@ -269,7 +269,7 @@ export function pickBestDevice(devices, roster, opts) {
|
|
|
269
269
|
const signedIn = (sa?.signedIn === true ? 0 : 1) - (sb?.signedIn === true ? 0 : 1);
|
|
270
270
|
if (signedIn !== 0)
|
|
271
271
|
return signedIn;
|
|
272
|
-
// (a2) operator-preferred device next — `agents devices
|
|
272
|
+
// (a2) operator-preferred device next — `agents devices config <name> auto-launch.preferred on`
|
|
273
273
|
// boosts a box above its load-equal peers, overriding load-based order.
|
|
274
274
|
const preferred = opts?.preferred;
|
|
275
275
|
if (preferred && preferred.size > 0) {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import type { AgentManager, AgentProcess } from './agents.js';
|
|
21
21
|
import type { TeamBudgetWatcher } from '../budget/live-team.js';
|
|
22
22
|
import type { BreachInfo } from '../budget/enforce.js';
|
|
23
|
-
|
|
23
|
+
interface WaveSummary {
|
|
24
24
|
wave: number;
|
|
25
25
|
timestamp: string;
|
|
26
26
|
team: string;
|
|
@@ -31,7 +31,7 @@ export interface WaveSummary {
|
|
|
31
31
|
failed: number;
|
|
32
32
|
drained: boolean;
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
interface SupervisorOptions {
|
|
35
35
|
team: string;
|
|
36
36
|
intervalMs?: number;
|
|
37
37
|
maxWaves?: number;
|
|
@@ -47,7 +47,7 @@ export interface SupervisorOptions {
|
|
|
47
47
|
/** Called with the breach details when the budget watcher trips. */
|
|
48
48
|
onBudgetBreach?: (breach: BreachInfo) => void;
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
interface SupervisorResult {
|
|
51
51
|
waves: number;
|
|
52
52
|
stoppedBy: 'drained' | 'max-waves' | 'signal' | 'callback' | 'budget';
|
|
53
53
|
elapsed_ms: number;
|
|
@@ -66,3 +66,4 @@ export interface SupervisorResult {
|
|
|
66
66
|
* returns false from onWave, or SIGINT/SIGTERM arrives.
|
|
67
67
|
*/
|
|
68
68
|
export declare function runSupervisor(mgr: AgentManager, opts: SupervisorOptions): Promise<SupervisorResult>;
|
|
69
|
+
export {};
|
|
@@ -12,15 +12,6 @@ export declare function getGitRoot(dir: string): Promise<string>;
|
|
|
12
12
|
* Check if a worktree directory has uncommitted changes.
|
|
13
13
|
*/
|
|
14
14
|
export declare function hasUncommittedChanges(worktreePath: string): Promise<boolean>;
|
|
15
|
-
/** Default cap on diff text so one giant worktree can't blow up the serve dashboard. */
|
|
16
|
-
export declare const DEFAULT_DIFF_MAX_BYTES = 200000;
|
|
17
|
-
/**
|
|
18
|
-
* Return the uncommitted working-tree diff for a worktree (staged + unstaged,
|
|
19
|
-
* relative to HEAD), capped so a huge diff can't overwhelm the read-only serve
|
|
20
|
-
* dashboard. Read-only: shells out to `git diff HEAD` and never mutates state.
|
|
21
|
-
* Returns '' when the path isn't a git worktree or has no pending changes.
|
|
22
|
-
*/
|
|
23
|
-
export declare function gitDiff(worktreePath: string, maxBytes?: number): Promise<string>;
|
|
24
15
|
/**
|
|
25
16
|
* Resolve the repo's default branch name (origin/HEAD → `main`/`master`/…).
|
|
26
17
|
* Refreshes origin/HEAD first so a repo cloned before the default was set resolves.
|
|
@@ -45,38 +45,6 @@ export async function hasUncommittedChanges(worktreePath) {
|
|
|
45
45
|
return false;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
/** Default cap on diff text so one giant worktree can't blow up the serve dashboard. */
|
|
49
|
-
export const DEFAULT_DIFF_MAX_BYTES = 200_000;
|
|
50
|
-
/**
|
|
51
|
-
* Return the uncommitted working-tree diff for a worktree (staged + unstaged,
|
|
52
|
-
* relative to HEAD), capped so a huge diff can't overwhelm the read-only serve
|
|
53
|
-
* dashboard. Read-only: shells out to `git diff HEAD` and never mutates state.
|
|
54
|
-
* Returns '' when the path isn't a git worktree or has no pending changes.
|
|
55
|
-
*/
|
|
56
|
-
export async function gitDiff(worktreePath, maxBytes = DEFAULT_DIFF_MAX_BYTES) {
|
|
57
|
-
// Size the capture buffer off the cap (not an arbitrary 1MB floor) so a diff
|
|
58
|
-
// that overshoots gets TRUNCATED, never silently dropped. A diff larger than
|
|
59
|
-
// the buffer overflows maxBuffer, but Node still hands us the captured prefix
|
|
60
|
-
// on the rejection — we truncate that below rather than losing it to ''.
|
|
61
|
-
const maxBuffer = maxBytes * 4;
|
|
62
|
-
const truncate = (s) => s.slice(0, maxBytes) + `\n… [diff truncated at ${maxBytes} bytes]`;
|
|
63
|
-
try {
|
|
64
|
-
const { stdout } = await execFileAsync('git', ['diff', 'HEAD'], {
|
|
65
|
-
cwd: worktreePath,
|
|
66
|
-
maxBuffer,
|
|
67
|
-
});
|
|
68
|
-
return stdout.length > maxBytes ? truncate(stdout) : stdout;
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
// ENOBUFS on an oversized diff still carries the partial capture; truncate
|
|
72
|
-
// it so the dashboard shows "[diff truncated]" instead of "no changes".
|
|
73
|
-
// A genuine non-git-worktree error has no stdout → fall through to ''.
|
|
74
|
-
const partial = err?.stdout;
|
|
75
|
-
if (typeof partial === 'string' && partial.length > 0)
|
|
76
|
-
return truncate(partial);
|
|
77
|
-
return '';
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
48
|
/**
|
|
81
49
|
* Resolve the repo's default branch name (origin/HEAD → `main`/`master`/…).
|
|
82
50
|
* Refreshes origin/HEAD first so a repo cloned before the default was set resolves.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const TERM_NOT_INSTALLED_ERROR = "The standalone `term` CLI is not installed. npm i -g @phnx-labs/term-cli";
|
|
2
|
+
/** JSON response envelope from `term`, mirroring the old PTY sidecar's shape. */
|
|
3
|
+
export interface TermResponse {
|
|
4
|
+
ok: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the `term` binary to exec: `$TERM_BIN` first (exact override, used
|
|
10
|
+
* by tests and by an operator pinning a specific install), else an ordinary
|
|
11
|
+
* PATH lookup. Returns null when neither resolves — the caller must fail loud
|
|
12
|
+
* with {@link TERM_NOT_INSTALLED_ERROR} rather than falling back to anything.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveTermBin(): string | null;
|
|
15
|
+
export interface TermStartOptions {
|
|
16
|
+
rows?: number;
|
|
17
|
+
cols?: number;
|
|
18
|
+
shell?: string;
|
|
19
|
+
cwd?: string;
|
|
20
|
+
}
|
|
21
|
+
/** `term start [-r rows] [-c cols] [-s shell] [-d cwd] --json` → the new session id. */
|
|
22
|
+
export declare function termStart(opts?: TermStartOptions): Promise<TermResponse>;
|
|
23
|
+
/** `term exec <id> <command> --json` — send a command, non-blocking. */
|
|
24
|
+
export declare function termExec(id: string, command: string): Promise<TermResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* `term write <id> <input> --raw --json` — send raw bytes to the session.
|
|
27
|
+
* `--raw` is load-bearing: the caller here always supplies already-literal
|
|
28
|
+
* bytes (e.g. `\x1b[B\r` as real control characters from a JS string), never
|
|
29
|
+
* the `pty write` CLI's `\n`/`\t`/`\e`/`\xHH` textual escape syntax, so `term`
|
|
30
|
+
* must not re-interpret them.
|
|
31
|
+
*/
|
|
32
|
+
export declare function termWrite(id: string, input: string): Promise<TermResponse>;
|
|
33
|
+
/** `term screen <id> --json` → `{ screen, exited, cols, rows }`. */
|
|
34
|
+
export declare function termScreen(id: string): Promise<TermResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* `term stop <id>` — end the session and clean up.
|
|
37
|
+
*
|
|
38
|
+
* Unlike every other verb, `stop` has no `--json` mode and prints nothing on
|
|
39
|
+
* success (confirmed against a real built `term` binary — a bare `--json`
|
|
40
|
+
* flag errors `unknown option '--json'`, and success alone leaves stdout
|
|
41
|
+
* empty), so this synthesizes the `{ ok }` envelope from the exit code
|
|
42
|
+
* instead of routing through {@link runTerm}'s stdout-JSON parse.
|
|
43
|
+
*/
|
|
44
|
+
export declare function termStop(id: string): Promise<TermResponse>;
|