@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
|
@@ -14,9 +14,9 @@ export interface FeedSinkConfig {
|
|
|
14
14
|
command?: string[];
|
|
15
15
|
/**
|
|
16
16
|
* In-process delivery through the same channel-provider registry `agents
|
|
17
|
-
* send`/`agents
|
|
17
|
+
* send`/`agents send --to owner` use — the composed `{message}` body, no argv, no
|
|
18
18
|
* spawn. `'owner'` is the address alias (expands to `notify.owner.{channel,to}`
|
|
19
|
-
* in agents.yaml, same as `agents
|
|
19
|
+
* in agents.yaml, same as `agents send --to owner`); any other value is a registered
|
|
20
20
|
* channel name (or a `notify.transports` mapping) and requires `to`.
|
|
21
21
|
*/
|
|
22
22
|
channel?: string;
|
|
@@ -113,7 +113,7 @@ export declare function blockBroadcastContext(block: {
|
|
|
113
113
|
* not mask a delivered desktop notification.
|
|
114
114
|
*/
|
|
115
115
|
export declare function blockDeliveryFailure(blocked: boolean, outcomes: SinkOutcome[]): string | undefined;
|
|
116
|
-
|
|
116
|
+
interface PlannedSink {
|
|
117
117
|
name: string;
|
|
118
118
|
/** Command sink: argv to spawn (mutually exclusive with `channel`). */
|
|
119
119
|
argv?: string[];
|
|
@@ -141,49 +141,6 @@ export interface SinkOutcome {
|
|
|
141
141
|
/** stderr tail when the sink failed, for the warning line. */
|
|
142
142
|
error?: string;
|
|
143
143
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Short host label for a phone line — strip user@ and domain so
|
|
146
|
-
* `muqsit@mac-mini.tailnet.ts.net` reads as `mac-mini`.
|
|
147
|
-
*/
|
|
148
|
-
export declare function shortHost(host: string | undefined): string | undefined;
|
|
149
|
-
/** First 8 hex chars of a session id for the footer (readable, not a full uuid). */
|
|
150
|
-
export declare function shortSessionChunk(session: string | undefined): string | undefined;
|
|
151
|
-
/**
|
|
152
|
-
* Tap-to-view link for the session behind a post: the addressable console page
|
|
153
|
-
* ({@link https://prix.dev/console/sessions/<id>}, prix/web). The footer already
|
|
154
|
-
* carries a short session crumb for disambiguation; this rides the link trail so
|
|
155
|
-
* the owner can open the full transcript straight from an iMessage broadcast
|
|
156
|
-
* instead of hunting for it in the console.
|
|
157
|
-
*
|
|
158
|
-
* Accepts any real, path-safe session id — a Claude/Codex UUID *and* a native
|
|
159
|
-
* `ses_…` id from OpenCode or another harness. The console shard uploader
|
|
160
|
-
* (`traces/sync.ts`) syncs sessions with no harness filter, so all of them are
|
|
161
|
-
* addressable; a UUID-only gate would silently drop the link for every non-Claude
|
|
162
|
-
* harness (the whole point of the link). Reject only an id that could not resolve:
|
|
163
|
-
* one with a path separator (URL-unsafe, via {@link isValidMailboxId}) or the bare
|
|
164
|
-
* 8-char footer crumb (a truncated id that would 404).
|
|
165
|
-
*/
|
|
166
|
-
export declare function sessionConsoleUrl(session: string | undefined): string | undefined;
|
|
167
|
-
/**
|
|
168
|
-
* Scrub em/en dashes from outbound phone copy (house rule + iMessage readability).
|
|
169
|
-
* Collapses whitespace; does not invent meaning.
|
|
170
|
-
*/
|
|
171
|
-
export declare function scrubOutboundDashes(text: string): string;
|
|
172
|
-
/**
|
|
173
|
-
* Footer like "Sent from my iPhone" — who posted, a session crumb, which box.
|
|
174
|
-
*
|
|
175
|
-
* Sent from grok/a02da0e2 on mac-mini
|
|
176
|
-
*
|
|
177
|
-
* Agent name first; session chunk for disambiguation when many groks run;
|
|
178
|
-
* host last. Skip the uninformative default label `agent`.
|
|
179
|
-
*
|
|
180
|
-
* In `mrkdwn` the crumb (`agent/short`) becomes a Slack labeled link to the
|
|
181
|
-
* session's console page, so the human sentence reads identically while the
|
|
182
|
-
* crumb turns blue and taps through (PHNX-3698). `plain` keeps the bare sentence
|
|
183
|
-
* — it can't render a labeled link and must not dump the URL.
|
|
184
|
-
*/
|
|
185
|
-
export declare function composeBroadcastFooter(ctx: FeedBroadcastContext, format?: SinkMessageFormat): string | undefined;
|
|
186
|
-
export declare function truncateBroadcastBody(body: string): string;
|
|
187
144
|
export declare function composeBroadcastMessage(ctx: FeedBroadcastContext, format?: SinkMessageFormat): string;
|
|
188
145
|
/**
|
|
189
146
|
* Substitute `{placeholder}` tokens in an argv template. Returns undefined when
|
|
@@ -221,7 +178,7 @@ export declare function planFeedBroadcast(config: FeedBroadcastConfig | undefine
|
|
|
221
178
|
* moment `feed.broadcast` was empty, even when `notify.owner` was fully
|
|
222
179
|
* configured — so the common case (an operator who set up owner notifications
|
|
223
180
|
* but never wrote a `feed.broadcast` block) produced a `--blocked` post that
|
|
224
|
-
* looked recorded and reached nobody. `agents
|
|
181
|
+
* looked recorded and reached nobody. `agents send --to owner` already treats
|
|
225
182
|
* `notify.owner` as the default human destination; this makes an important
|
|
226
183
|
* feed post/block use that same default instead of requiring a second,
|
|
227
184
|
* redundant config block that says the same thing.
|
|
@@ -265,3 +222,4 @@ export declare function withDesktopNotify(config: FeedBroadcastConfig | undefine
|
|
|
265
222
|
* reached.
|
|
266
223
|
*/
|
|
267
224
|
export declare function runFeedBroadcast(planned: PlannedSink[], meta: Meta, timeoutMs?: number): Promise<SinkOutcome[]>;
|
|
225
|
+
export {};
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* A second sink shape (RUSH-2123) delivers **in-process** through the same
|
|
28
28
|
* channel-provider registry `agents send` uses (`channel:` instead of
|
|
29
29
|
* `command:`) — no spawn, no argv templating. `channel: owner` is the address
|
|
30
|
-
* alias that expands to `notify.owner.{channel,to}`, matching `agents
|
|
30
|
+
* alias that expands to `notify.owner.{channel,to}`, matching `agents send --to owner`.
|
|
31
31
|
* When the operator has never written a `feed.broadcast` block at all, an
|
|
32
32
|
* important-level post falls back to that owner address implicitly
|
|
33
33
|
* ({@link effectiveBroadcastConfig}) rather than reaching nobody — see that
|
|
@@ -127,7 +127,7 @@ const PLACEHOLDER = /\{([a-z_]+)\}/g;
|
|
|
127
127
|
* Short host label for a phone line — strip user@ and domain so
|
|
128
128
|
* `muqsit@mac-mini.tailnet.ts.net` reads as `mac-mini`.
|
|
129
129
|
*/
|
|
130
|
-
|
|
130
|
+
function shortHost(host) {
|
|
131
131
|
if (!host?.trim())
|
|
132
132
|
return undefined;
|
|
133
133
|
let h = host.trim();
|
|
@@ -140,7 +140,7 @@ export function shortHost(host) {
|
|
|
140
140
|
return h || undefined;
|
|
141
141
|
}
|
|
142
142
|
/** First 8 hex chars of a session id for the footer (readable, not a full uuid). */
|
|
143
|
-
|
|
143
|
+
function shortSessionChunk(session) {
|
|
144
144
|
if (!session?.trim())
|
|
145
145
|
return undefined;
|
|
146
146
|
const hex = session.replace(/-/g, '').toLowerCase();
|
|
@@ -162,7 +162,7 @@ export function shortSessionChunk(session) {
|
|
|
162
162
|
* one with a path separator (URL-unsafe, via {@link isValidMailboxId}) or the bare
|
|
163
163
|
* 8-char footer crumb (a truncated id that would 404).
|
|
164
164
|
*/
|
|
165
|
-
|
|
165
|
+
function sessionConsoleUrl(session) {
|
|
166
166
|
const id = session?.trim();
|
|
167
167
|
if (!id || !isValidMailboxId(id) || /^[0-9a-f]{8}$/i.test(id))
|
|
168
168
|
return undefined;
|
|
@@ -172,7 +172,7 @@ export function sessionConsoleUrl(session) {
|
|
|
172
172
|
* Scrub em/en dashes from outbound phone copy (house rule + iMessage readability).
|
|
173
173
|
* Collapses whitespace; does not invent meaning.
|
|
174
174
|
*/
|
|
175
|
-
|
|
175
|
+
function scrubOutboundDashes(text) {
|
|
176
176
|
return text
|
|
177
177
|
.replace(/\u2014/g, ' - ')
|
|
178
178
|
.replace(/\u2013/g, ' - ')
|
|
@@ -227,7 +227,7 @@ function linkifyKeys(text, format) {
|
|
|
227
227
|
* crumb turns blue and taps through (PHNX-3698). `plain` keeps the bare sentence
|
|
228
228
|
* — it can't render a labeled link and must not dump the URL.
|
|
229
229
|
*/
|
|
230
|
-
|
|
230
|
+
function composeBroadcastFooter(ctx, format = 'plain') {
|
|
231
231
|
const agent = ctx.agent?.trim();
|
|
232
232
|
const agentLabel = agent && agent !== 'agent' ? agent : undefined;
|
|
233
233
|
const session = shortSessionChunk(ctx.session);
|
|
@@ -283,7 +283,7 @@ export function composeBroadcastFooter(ctx, format = 'plain') {
|
|
|
283
283
|
*/
|
|
284
284
|
const PHONE_BODY_MAX_CHARS = 500;
|
|
285
285
|
const PHONE_BODY_MAX_LINES = 8;
|
|
286
|
-
|
|
286
|
+
function truncateBroadcastBody(body) {
|
|
287
287
|
if (!body)
|
|
288
288
|
return body;
|
|
289
289
|
let out = body;
|
|
@@ -508,7 +508,7 @@ export function planFeedBroadcast(config, ctx, meta) {
|
|
|
508
508
|
* moment `feed.broadcast` was empty, even when `notify.owner` was fully
|
|
509
509
|
* configured — so the common case (an operator who set up owner notifications
|
|
510
510
|
* but never wrote a `feed.broadcast` block) produced a `--blocked` post that
|
|
511
|
-
* looked recorded and reached nobody. `agents
|
|
511
|
+
* looked recorded and reached nobody. `agents send --to owner` already treats
|
|
512
512
|
* `notify.owner` as the default human destination; this makes an important
|
|
513
513
|
* feed post/block use that same default instead of requiring a second,
|
|
514
514
|
* redundant config block that says the same thing.
|
|
@@ -577,7 +577,7 @@ function runCommandSink(name, argv, timeoutMs) {
|
|
|
577
577
|
}
|
|
578
578
|
/**
|
|
579
579
|
* Deliver one `channel:` sink through the real provider registry —
|
|
580
|
-
* `resolveSendEnvelope` reuses `agents
|
|
580
|
+
* `resolveSendEnvelope` reuses `agents send --to owner`'s owner-alias expansion, and
|
|
581
581
|
* `deliverEnvelope` is the same seam `agents send` calls. A bad channel name
|
|
582
582
|
* is checked with `lookupTransport` (the non-throwing lookup) BEFORE handing
|
|
583
583
|
* off to `deliverEnvelope`: that function's own resolution `die()`s on an
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OpenBlock } from './feed/feed.js';
|
|
2
|
-
|
|
2
|
+
type OutcomeKind = 'ticket' | 'pr' | 'worktree' | 'unassigned';
|
|
3
3
|
/** Stable attribution of a block (or agent) to one deliverable. */
|
|
4
4
|
export interface OutcomeRef {
|
|
5
5
|
/** Map/JSON key, e.g. `ticket:RUSH-1125`, `pr:#534`, `worktree:headless-secrets`, `unassigned`. */
|
|
@@ -12,7 +12,7 @@ export interface OutcomeRef {
|
|
|
12
12
|
* Signals used to derive an outcome. All optional — callers pass whatever they
|
|
13
13
|
* already know (block fields, session meta, free-text questions).
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
interface OutcomeSignals {
|
|
16
16
|
ticket?: string | null;
|
|
17
17
|
pr?: string | null;
|
|
18
18
|
worktreeSlug?: string | null;
|
|
@@ -29,8 +29,6 @@ export interface OutcomeSignals {
|
|
|
29
29
|
* - Bare `#123` / `PR#123` → `#123` (no repo known)
|
|
30
30
|
*/
|
|
31
31
|
export declare function normalizePrRef(raw: string | null | undefined): string | undefined;
|
|
32
|
-
/** `https://github.com/owner/repo/pull/N` → `owner/repo`. */
|
|
33
|
-
export declare function repoFromPrUrl(url: string | null | undefined): string | undefined;
|
|
34
32
|
/** Canonical ticket id (uppercase team key). */
|
|
35
33
|
export declare function normalizeTicketRef(raw: string | null | undefined): string | undefined;
|
|
36
34
|
/**
|
|
@@ -38,8 +36,6 @@ export declare function normalizeTicketRef(raw: string | null | undefined): stri
|
|
|
38
36
|
* Exactly one outcome per call — never ambiguous, never empty.
|
|
39
37
|
*/
|
|
40
38
|
export declare function deriveOutcome(signals: OutcomeSignals): OutcomeRef;
|
|
41
|
-
/** Join question headers + bodies into one scan target for ticket/PR detection. */
|
|
42
|
-
export declare function blockScanText(block: Pick<OpenBlock, 'questions'>): string;
|
|
43
39
|
/** Outcome for a stored open block (uses stamped fields + question text). */
|
|
44
40
|
export declare function outcomeForBlock(block: OpenBlock): OutcomeRef;
|
|
45
41
|
/** Per-outcome rollup used by the default `agents feed` view. */
|
|
@@ -103,3 +99,4 @@ export declare function enrichBlockFromSession(block: OpenBlock, hint: SessionOu
|
|
|
103
99
|
* Matching order: mailboxId, then sessionId, then agentId.
|
|
104
100
|
*/
|
|
105
101
|
export declare function enrichBlocksFromSessions(blocks: OpenBlock[], sessions: SessionOutcomeHint[]): OpenBlock[];
|
|
102
|
+
export {};
|
package/dist/lib/feed-outcome.js
CHANGED
|
@@ -44,7 +44,7 @@ export function normalizePrRef(raw) {
|
|
|
44
44
|
return undefined;
|
|
45
45
|
}
|
|
46
46
|
/** `https://github.com/owner/repo/pull/N` → `owner/repo`. */
|
|
47
|
-
|
|
47
|
+
function repoFromPrUrl(url) {
|
|
48
48
|
if (!url)
|
|
49
49
|
return undefined;
|
|
50
50
|
const m = /github\.com\/([^/\s]+)\/([^/\s]+)\/pull\/\d+/i.exec(url);
|
|
@@ -116,7 +116,7 @@ export function deriveOutcome(signals) {
|
|
|
116
116
|
return UNASSIGNED;
|
|
117
117
|
}
|
|
118
118
|
/** Join question headers + bodies into one scan target for ticket/PR detection. */
|
|
119
|
-
|
|
119
|
+
function blockScanText(block) {
|
|
120
120
|
return block.questions
|
|
121
121
|
.map((q) => [q.header, q.text].filter(Boolean).join(' '))
|
|
122
122
|
.filter(Boolean)
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { type OpenBlock, type AnswerRecord } from './feed/feed.js';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
type BlockClass = 'approval' | 'decision';
|
|
3
|
+
interface ClassPolicy {
|
|
4
4
|
timeoutMinutes: number;
|
|
5
5
|
/** For approval class only: the answer to apply when the timeout fires. */
|
|
6
6
|
safeDefault?: string;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
interface FeedPolicy {
|
|
9
9
|
approval: ClassPolicy;
|
|
10
10
|
decision: ClassPolicy;
|
|
11
11
|
/** High-cost-of-delay blocks below this threshold do not page the phone. */
|
|
12
12
|
phoneNotifyThreshold: 'low' | 'medium' | 'high';
|
|
13
13
|
}
|
|
14
14
|
export declare const DEFAULT_POLICY: FeedPolicy;
|
|
15
|
-
export declare function getPolicyPath(root?: string): string;
|
|
16
15
|
export declare function loadPolicy(root?: string): FeedPolicy;
|
|
17
16
|
export declare function blockClass(block: OpenBlock): BlockClass;
|
|
18
17
|
export declare function isPhoneUrgent(block: OpenBlock, policy: FeedPolicy): boolean;
|
|
19
|
-
export declare function minutesElapsed(block: OpenBlock, now: Date): number;
|
|
20
18
|
export declare function isTimedOut(block: OpenBlock, policy: FeedPolicy, now: Date): boolean;
|
|
21
|
-
|
|
19
|
+
interface PolicyResult {
|
|
22
20
|
blockId: string;
|
|
23
21
|
action: 'none' | 'defaulted' | 'parked';
|
|
24
22
|
answer?: AnswerRecord;
|
|
@@ -28,3 +26,4 @@ export interface PolicyResult {
|
|
|
28
26
|
* Caller is responsible for persistence/logging side effects not owned by feed.ts.
|
|
29
27
|
*/
|
|
30
28
|
export declare function applyPolicyToBlock(block: OpenBlock, policy: FeedPolicy, now: Date, root?: string, mailboxRoot?: string): PolicyResult;
|
|
29
|
+
export {};
|
package/dist/lib/feed-policy.js
CHANGED
|
@@ -25,7 +25,7 @@ export const DEFAULT_POLICY = {
|
|
|
25
25
|
decision: { timeoutMinutes: 60 },
|
|
26
26
|
phoneNotifyThreshold: 'medium',
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
function getPolicyPath(root) {
|
|
29
29
|
return path.join(root ?? getUserAgentsDir(), POLICY_FILE);
|
|
30
30
|
}
|
|
31
31
|
function normalizeClassPolicy(raw, fallback) {
|
|
@@ -65,7 +65,7 @@ export function isPhoneUrgent(block, policy) {
|
|
|
65
65
|
const cost = block.costOfDelay ?? 'low';
|
|
66
66
|
return COST_RANK[cost] >= COST_RANK[policy.phoneNotifyThreshold];
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
function minutesElapsed(block, now) {
|
|
69
69
|
const ts = Date.parse(block.ts);
|
|
70
70
|
if (Number.isNaN(ts))
|
|
71
71
|
return 0;
|
package/dist/lib/feed-post.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type PidSessionEntry } from './session/pid-registry.js';
|
|
|
4
4
|
export declare const STATUS_POST_MAX_CHARS = 500;
|
|
5
5
|
/** Title is a phone subject line - about four or five words, not a paragraph. */
|
|
6
6
|
export declare const STATUS_TITLE_MAX_CHARS = 60;
|
|
7
|
-
|
|
7
|
+
interface FeedPostInput {
|
|
8
8
|
/**
|
|
9
9
|
* Short subject (required for new posts). ~4–5 words. Phone broadcasts put
|
|
10
10
|
* this on the first line so a scan names the topic before the body.
|
|
@@ -53,7 +53,7 @@ export interface FeedPostInput {
|
|
|
53
53
|
/** Override full registry list for launchId match (tests). */
|
|
54
54
|
listEntries?: () => PidSessionEntry[];
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
interface FeedPostResult {
|
|
57
57
|
event: ActivityEvent;
|
|
58
58
|
}
|
|
59
59
|
export interface PostIdentity {
|
|
@@ -78,8 +78,6 @@ export interface PostIdentity {
|
|
|
78
78
|
export declare function resolvePostIdentity(input: Pick<FeedPostInput, 'sessionId' | 'env' | 'cwd' | 'activityRoot' | 'startPid' | 'getParentPid' | 'readEntry' | 'listEntries'>): PostIdentity | undefined;
|
|
79
79
|
/** Walk up to 16 ancestors looking for a by-pid registry entry with a session. */
|
|
80
80
|
export declare function walkPidRegistry(startPid: number, getParent: (pid: number) => number | undefined, readEntry: (pid: number) => PidSessionEntry | undefined): PidSessionEntry | undefined;
|
|
81
|
-
/** Best-effort parent pid of `pid` (Linux /proc, else `ps`). */
|
|
82
|
-
export declare function parentPidOf(pid: number): number | undefined;
|
|
83
81
|
/**
|
|
84
82
|
* Turn one `--attach` token into an {@link Attachment}. Remote URLs become
|
|
85
83
|
* `link` (or a media kind when the extension is unambiguous). Local files are
|
|
@@ -112,3 +110,4 @@ export declare function normalizeStatusTitle(title: string): string;
|
|
|
112
110
|
* Throws if title/text is empty or session identity cannot be resolved.
|
|
113
111
|
*/
|
|
114
112
|
export declare function postFeedStatus(input: FeedPostInput): FeedPostResult;
|
|
113
|
+
export {};
|
package/dist/lib/feed-post.js
CHANGED
|
@@ -120,7 +120,7 @@ export function walkPidRegistry(startPid, getParent, readEntry) {
|
|
|
120
120
|
return firstHit;
|
|
121
121
|
}
|
|
122
122
|
/** Best-effort parent pid of `pid` (Linux /proc, else `ps`). */
|
|
123
|
-
|
|
123
|
+
function parentPidOf(pid) {
|
|
124
124
|
if (!Number.isInteger(pid) || pid <= 1)
|
|
125
125
|
return undefined;
|
|
126
126
|
if (process.platform === 'linux') {
|
|
@@ -20,14 +20,14 @@ export interface FeedSessionSignal {
|
|
|
20
20
|
cloudProvider?: string;
|
|
21
21
|
cloudTaskId?: string;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
interface RankedFeedBlock extends OpenBlock {
|
|
24
24
|
delayRank: NonNullable<OpenBlock['delayRank']>;
|
|
25
25
|
}
|
|
26
26
|
export declare function buildSessionSignals(active: ActiveSession[], metas?: SessionMeta[]): FeedSessionSignal[];
|
|
27
27
|
export declare function decisionIrreducibility(c: Classification): number;
|
|
28
28
|
export declare function burnUsdPerHour(signal: FeedSessionSignal | undefined, block: OpenBlock): number;
|
|
29
29
|
export declare function rankFeedBlocks(blocks: OpenBlock[], signals?: FeedSessionSignal[], now?: Date): RankedFeedBlock[];
|
|
30
|
-
export declare function recentAskCount(stats: FeedAskStats, now?: Date): number;
|
|
31
30
|
export declare function needyControlCards(stats: FeedAskStats[], signals?: FeedSessionSignal[], now?: Date, threshold?: number): OpenBlock[];
|
|
32
31
|
export declare function runawayControlCards(signals: FeedSessionSignal[], now?: Date): OpenBlock[];
|
|
33
32
|
export declare function synthesizeControlCards(signals: FeedSessionSignal[], stats: FeedAskStats[], now?: Date): OpenBlock[];
|
|
33
|
+
export {};
|
package/dist/lib/feed-ranking.js
CHANGED
|
@@ -127,7 +127,7 @@ export function rankFeedBlocks(blocks, signals = [], now = new Date()) {
|
|
|
127
127
|
return Date.parse(a.ts) - Date.parse(b.ts);
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
-
|
|
130
|
+
function recentAskCount(stats, now = new Date()) {
|
|
131
131
|
const cutoff = now.getTime() - 60 * 60_000;
|
|
132
132
|
return stats.recentAskTimestamps.filter((ts) => {
|
|
133
133
|
const parsed = Date.parse(ts);
|
|
@@ -52,7 +52,7 @@ export interface SourceAuth {
|
|
|
52
52
|
* list (PHNX-2371).
|
|
53
53
|
*/
|
|
54
54
|
export declare function fleetSecretsBundles(declared: string[] | undefined): string[];
|
|
55
|
-
|
|
55
|
+
interface DiffContext {
|
|
56
56
|
/** agents-cli version the source is on — the fleet target version. */
|
|
57
57
|
targetCliVersion: string;
|
|
58
58
|
sourceAuth: SourceAuth;
|
|
@@ -72,7 +72,7 @@ export interface DiffContext {
|
|
|
72
72
|
/** Pure: desired vs probed -> per-device diff + flat action list. */
|
|
73
73
|
export declare function diffFleet(desired: DeviceDesired[], probes: Map<string, DeviceProbe>, ctx: DiffContext): FleetPlan;
|
|
74
74
|
/** Why a declared bundle is or is not pushed to one device. */
|
|
75
|
-
|
|
75
|
+
interface SecretPushDecision {
|
|
76
76
|
push: boolean;
|
|
77
77
|
/** Where it would land on the remote. Only meaningful when `push`. */
|
|
78
78
|
backend: RemoteBackend;
|
|
@@ -108,7 +108,7 @@ export interface SecretPushDecision {
|
|
|
108
108
|
* the one fleet-shared setup-token store (PHNX-2371).
|
|
109
109
|
*/
|
|
110
110
|
export declare function decideSecretPush(bundle: string, desired: DeviceDesired, probe: DeviceProbe, ctx: DiffContext): SecretPushDecision;
|
|
111
|
-
|
|
111
|
+
interface ProbeOptions {
|
|
112
112
|
/** Also fetch per-agent installed versions (one extra `agents view --json`
|
|
113
113
|
* round-trip). Enable only when the plan has a version-pinned spec. */
|
|
114
114
|
withVersions?: boolean;
|
|
@@ -141,18 +141,17 @@ export interface DeviceApplyResult {
|
|
|
141
141
|
steps: ApplyStep[];
|
|
142
142
|
note?: string;
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
interface ExecContext {
|
|
145
145
|
targetCliVersion: string;
|
|
146
146
|
source: string;
|
|
147
147
|
sourceAuth: SourceAuth;
|
|
148
148
|
/** Set for a dry run — probe + plan only, execute nothing. */
|
|
149
149
|
dryRun?: boolean;
|
|
150
150
|
}
|
|
151
|
-
/** Execute one device's planned actions in order. Real SSH — no mocks. */
|
|
152
|
-
export declare function reconcileDevice(row: DeviceDiff, device: DeviceProfile, ctx: ExecContext): Promise<DeviceApplyResult>;
|
|
153
151
|
/** Run a pool of async tasks with a concurrency cap, preserving input order. */
|
|
154
152
|
export declare function pool<T, R>(items: T[], limit: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
155
153
|
/** Reconcile every device row in parallel (capped). */
|
|
156
154
|
export declare function runFleetApply(rows: DeviceDiff[], nameToProfile: Map<string, DeviceProfile>, ctx: ExecContext, concurrency?: number): Promise<DeviceApplyResult[]>;
|
|
157
155
|
/** Default home for source snapshots (overridable in tests). */
|
|
158
156
|
export declare function sourceHome(): string;
|
|
157
|
+
export {};
|
package/dist/lib/fleet/apply.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import * as os from 'os';
|
|
11
11
|
import { pushBundleToHost } from '../secrets-client.js';
|
|
12
|
-
import {
|
|
12
|
+
import { AUTH_STORE_ALIAS, inspectReservedAuthBundle, isReservedBundleName } from '../secrets-policy.js';
|
|
13
13
|
import { deviceIdentityArgs, sshTargetFor } from '../devices/connect.js';
|
|
14
14
|
import { readyProbe, bootstrapAgentsCli } from '../hosts/ready.js';
|
|
15
15
|
import { buildRemoteAgentsInvocation } from '../hosts/remote-cmd.js';
|
|
@@ -98,8 +98,8 @@ export function parseInstalledVersions(stdout) {
|
|
|
98
98
|
export function fleetSecretsBundles(declared) {
|
|
99
99
|
const out = [...(declared ?? [])];
|
|
100
100
|
const auth = inspectReservedAuthBundle();
|
|
101
|
-
if (auth.exists && auth.ok && !out.includes(
|
|
102
|
-
out.push(
|
|
101
|
+
if (auth.exists && auth.ok && !out.includes(AUTH_STORE_ALIAS)) {
|
|
102
|
+
out.push(AUTH_STORE_ALIAS);
|
|
103
103
|
}
|
|
104
104
|
return out;
|
|
105
105
|
}
|
|
@@ -371,7 +371,7 @@ export function parseRemoteBundles(stdout) {
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
/** Execute one device's planned actions in order. Real SSH — no mocks. */
|
|
374
|
-
|
|
374
|
+
async function reconcileDevice(row, device, ctx) {
|
|
375
375
|
if (!row.probe.reachable) {
|
|
376
376
|
return { device: row.device, ok: false, steps: [], note: row.probe.note ?? 'unreachable' };
|
|
377
377
|
}
|
|
@@ -12,7 +12,7 @@ import type { FleetManifest, DeviceDesired } from './types.js';
|
|
|
12
12
|
export declare function parseFleetManifest(raw: unknown): FleetManifest;
|
|
13
13
|
/** Read a YAML file and extract + validate its `fleet:` block. */
|
|
14
14
|
export declare function readFleetFile(filePath: string): FleetManifest;
|
|
15
|
-
|
|
15
|
+
interface ResolveContext {
|
|
16
16
|
/** Device names currently online (used to expand `devices: all`). */
|
|
17
17
|
onlineDevices: string[];
|
|
18
18
|
/** All registered device names (used to validate explicit entries). */
|
|
@@ -50,3 +50,4 @@ export declare function emptyTargetsMessage(manifest: FleetManifest): {
|
|
|
50
50
|
style: 'hint' | 'plain';
|
|
51
51
|
lines: string[];
|
|
52
52
|
};
|
|
53
|
+
export {};
|
|
@@ -3,7 +3,7 @@ import type { DeviceProfile } from '../devices/registry.js';
|
|
|
3
3
|
import { type AuthVerdict, type AuthHealth } from '../auth-health.js';
|
|
4
4
|
import { type LoginFlow } from './auth-sync.js';
|
|
5
5
|
/** A verification URL + user code scraped from a device-code login screen. */
|
|
6
|
-
|
|
6
|
+
interface ScrapedLogin {
|
|
7
7
|
url?: string;
|
|
8
8
|
code?: string;
|
|
9
9
|
}
|
|
@@ -17,7 +17,7 @@ export interface ScrapedLogin {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function scrapeLogin(screenText: string, flow: LoginFlow): ScrapedLogin;
|
|
19
19
|
/** Why a logged-out (agent, device) pair can or cannot be driven remotely. */
|
|
20
|
-
|
|
20
|
+
interface FlowClassification {
|
|
21
21
|
flow: LoginFlow | null;
|
|
22
22
|
remotable: boolean;
|
|
23
23
|
reason?: string;
|
|
@@ -38,7 +38,7 @@ export declare function classifyLoginFlow(agent: AgentId | string, platform: str
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function isPendingVerdict(verdict: AuthVerdict | undefined): boolean;
|
|
40
40
|
/** A logged-out (agent, device) pair `fleet login` will target or explain. */
|
|
41
|
-
|
|
41
|
+
interface PendingLogin {
|
|
42
42
|
device: string;
|
|
43
43
|
agent: AgentId | string;
|
|
44
44
|
platform?: string;
|
|
@@ -51,7 +51,7 @@ export interface PendingLogin {
|
|
|
51
51
|
/** Present when `!remotable` — why it must be done on the box itself. */
|
|
52
52
|
reason?: string;
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
interface SelectLoginOptions {
|
|
55
55
|
/** Include pairs already logged-in (verdict live/unverified) — for a forced re-login. */
|
|
56
56
|
includeLoggedIn?: boolean;
|
|
57
57
|
}
|
|
@@ -68,7 +68,7 @@ export interface SelectLoginOptions {
|
|
|
68
68
|
export declare function selectLoginTargets(devices: DeviceProfile[], agents: (AgentId | string)[], cache: Record<string, AuthHealth>, opts?: SelectLoginOptions): PendingLogin[];
|
|
69
69
|
/**
|
|
70
70
|
* Build the `ssh -tt <target> <loginCommand>` command string driven through the
|
|
71
|
-
*
|
|
71
|
+
* `term` CLI. `-tt` forces a tty so the remote CLI enters its interactive
|
|
72
72
|
* device-code flow; `accept-new` learns a first-seen host key without a prompt.
|
|
73
73
|
* Both the target and the login command are shell-quoted. Pure/testable.
|
|
74
74
|
*
|
|
@@ -77,7 +77,7 @@ export declare function selectLoginTargets(devices: DeviceProfile[], agents: (Ag
|
|
|
77
77
|
* are a follow-up (TODO), surfaced as an error rather than silently mis-driven.
|
|
78
78
|
*/
|
|
79
79
|
export declare function buildRemoteLoginSshCommand(target: string, flow: LoginFlow, extraSshArgs?: string[]): string;
|
|
80
|
-
|
|
80
|
+
type LoginMode = 'bulk' | 'interactive';
|
|
81
81
|
/** Per-pair status shape shared between the driver, the status endpoint, and the page. */
|
|
82
82
|
export type LoginStatusState = 'pending' | 'driving' | 'ready' | 'authorized' | 'error' | 'skipped';
|
|
83
83
|
export interface LoginStatus {
|
|
@@ -101,8 +101,8 @@ export interface LoginStatus {
|
|
|
101
101
|
* light variant via `prefers-color-scheme`.
|
|
102
102
|
*/
|
|
103
103
|
export declare function buildDashboardHtml(pending: PendingLogin[], mode: LoginMode): string;
|
|
104
|
-
/** The subset of the
|
|
105
|
-
export interface
|
|
104
|
+
/** The subset of the `term` CLI `driveRemoteLogin` needs — faked in tests. */
|
|
105
|
+
export interface TermDriver {
|
|
106
106
|
start(opts?: {
|
|
107
107
|
rows?: number;
|
|
108
108
|
cols?: number;
|
|
@@ -115,8 +115,8 @@ export interface PtyDriver {
|
|
|
115
115
|
}>;
|
|
116
116
|
stop(id: string): Promise<void>;
|
|
117
117
|
}
|
|
118
|
-
/** Real driver over the
|
|
119
|
-
export declare function
|
|
118
|
+
/** Real driver over the standalone `term` CLI (`../term-client.js`). */
|
|
119
|
+
export declare function defaultTermDriver(): TermDriver;
|
|
120
120
|
export interface DriveOptions {
|
|
121
121
|
/** Wait after launching ssh before steering / scraping (default 4000ms). */
|
|
122
122
|
initialDelayMs?: number;
|
|
@@ -125,41 +125,22 @@ export interface DriveOptions {
|
|
|
125
125
|
/** Overall scrape deadline (default 90000ms). */
|
|
126
126
|
timeoutMs?: number;
|
|
127
127
|
}
|
|
128
|
-
|
|
128
|
+
interface DriveResult extends ScrapedLogin {
|
|
129
129
|
/** True when the underlying ssh session already exited (login finished or failed). */
|
|
130
130
|
exited: boolean;
|
|
131
|
-
/** The
|
|
131
|
+
/** The term session id, so the caller can keep polling / stop it. */
|
|
132
132
|
sessionId: string;
|
|
133
133
|
}
|
|
134
134
|
/**
|
|
135
135
|
* Drive one remote device-code login: launch `ssh -tt <target> <loginCommand>`
|
|
136
|
-
* in a
|
|
136
|
+
* in a `term` session, send the flow's `deviceCodeSelect` keystrokes (if any) to reach the
|
|
137
137
|
* device-code path, then poll the screen until {@link scrapeLogin} yields both a
|
|
138
138
|
* URL and a code (or the deadline / session-exit). The human completes the code
|
|
139
139
|
* in the browser; the caller polls the credential file for completion. Testable
|
|
140
|
-
* against a fake {@link
|
|
140
|
+
* against a fake {@link TermDriver}.
|
|
141
141
|
*/
|
|
142
|
-
export declare function driveRemoteLogin(target: string, flow: LoginFlow, driver:
|
|
143
|
-
|
|
144
|
-
agents?: (AgentId | string)[];
|
|
145
|
-
devices?: string[];
|
|
146
|
-
includeLoggedIn?: boolean;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Resolve the online fleet devices, then compute pending logins
|
|
150
|
-
* from the shared auth-health cache (populated by `agents fleet ping`). Thin I/O
|
|
151
|
-
* over the pure {@link selectLoginTargets}. Devices/agents can be narrowed by the
|
|
152
|
-
* caller's flags; the default agent set is every agent with a defined flow.
|
|
153
|
-
*/
|
|
154
|
-
export declare function detectPending(opts?: DetectOptions): Promise<PendingLogin[]>;
|
|
155
|
-
/**
|
|
156
|
-
* Best-effort epoch-seconds mtime of a home-relative file on a remote box, or 0
|
|
157
|
-
* when it is absent/unreadable. Used to detect the credential file appearing /
|
|
158
|
-
* bumping after the human completes the browser step. POSIX `stat` only (the
|
|
159
|
-
* device-code agents are all POSIX-fleet).
|
|
160
|
-
*/
|
|
161
|
-
export declare function remoteFileMtime(target: string, homeRel: string, extraSshArgs?: string[]): Promise<number>;
|
|
162
|
-
export interface RunFleetLoginOptions {
|
|
142
|
+
export declare function driveRemoteLogin(target: string, flow: LoginFlow, driver: TermDriver, opts?: DriveOptions, extraSshArgs?: string[]): Promise<DriveResult>;
|
|
143
|
+
interface RunFleetLoginOptions {
|
|
163
144
|
agents?: (AgentId | string)[];
|
|
164
145
|
devices?: string[];
|
|
165
146
|
interactive?: boolean;
|
|
@@ -167,7 +148,7 @@ export interface RunFleetLoginOptions {
|
|
|
167
148
|
/** Target every device-code pair regardless of cached login state (cold cache / forced re-login). */
|
|
168
149
|
all?: boolean;
|
|
169
150
|
/** Overrides for testing / non-default cadence. */
|
|
170
|
-
driver?:
|
|
151
|
+
driver?: TermDriver;
|
|
171
152
|
drive?: DriveOptions;
|
|
172
153
|
/** Port for the local dashboard (0 = ephemeral). */
|
|
173
154
|
port?: number;
|
|
@@ -186,3 +167,4 @@ export interface RunFleetLoginOptions {
|
|
|
186
167
|
* this wires them to the live fleet.
|
|
187
168
|
*/
|
|
188
169
|
export declare function runFleetLogin(opts?: RunFleetLoginOptions): Promise<LoginStatus[]>;
|
|
170
|
+
export {};
|