@phnx-labs/agents-cli 1.22.113 → 1.22.114
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 +29 -0
- package/README.md +10 -11
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +59 -61
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- 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/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/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- 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/message.d.ts +1 -1
- package/dist/commands/message.js +3 -3
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +1 -1
- 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 +21 -2
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.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 -5
- 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 +10 -10
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +1 -1
- package/dist/commands/share.d.ts +8 -8
- 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 +1 -1
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.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/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/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 +5 -5
- 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 +4 -4
- package/dist/lib/browser/service.d.ts +4 -4
- 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 +1 -1
- 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/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/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-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 +1 -1
- 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 +2 -1
- 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 +2 -1
- 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/events.d.ts +2 -47
- package/dist/lib/feed/events.js +1 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/watch.d.ts +1 -2
- package/dist/lib/feed/watch.js +0 -1
- 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 +2 -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 -65
- package/dist/lib/git.js +3 -142
- 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 +4 -3
- 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/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/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/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +7 -1
- package/dist/lib/redact.js +94 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +3 -2
- 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-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +4 -26
- 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 +2 -1
- package/dist/lib/session/detached.js +2 -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 +2 -5
- package/dist/lib/session/remote/peer-stream.js +2 -2
- 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 +5 -5
- 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/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/settings-manifest.d.ts +2 -1
- package/dist/lib/share/delete.d.ts +5 -4
- package/dist/lib/share/html.d.ts +0 -2
- package/dist/lib/share/html.js +9 -9
- package/dist/lib/share/http-error.d.ts +3 -2
- package/dist/lib/share/og.d.ts +2 -1
- package/dist/lib/share/provision.d.ts +2 -2
- package/dist/lib/share/publish.d.ts +4 -13
- package/dist/lib/share/publish.js +2 -2
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +4 -5
- package/dist/lib/smart-launch.js +1 -1
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +5 -4
- 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.js +1 -1
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +1 -4
- 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 +4 -3
- 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/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 +1 -3
- package/dist/lib/traces/provision.js +1 -1
- 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 +3 -3
- 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 +2 -3
- package/scripts/postinstall.js +5 -4
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- 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
|
@@ -54,7 +54,7 @@ export declare function activeRunSkipStreak(runs: RunMeta[]): number;
|
|
|
54
54
|
*/
|
|
55
55
|
export declare function launcherClaimPid(): number | null;
|
|
56
56
|
/** How a routine attempt was triggered, plus the schedule slot it belongs to. */
|
|
57
|
-
|
|
57
|
+
interface RoutineTrigger {
|
|
58
58
|
kind: NonNullable<RunMeta['triggerKind']>;
|
|
59
59
|
/** UTC fire time for a schedule/catchup attempt; keys the single-fire slot claim. */
|
|
60
60
|
scheduledFor?: Date | string;
|
|
@@ -103,7 +103,7 @@ export declare function buildJobCommand(config: JobConfig, resolvedPrompt: strin
|
|
|
103
103
|
export declare function snapshotRoutineTranscriptBase(meta: Pick<RunMeta, 'jobName' | 'agent' | 'version'>, runDir: string, overlayHome?: string): void;
|
|
104
104
|
export declare function archiveRoutineTranscripts(meta: Pick<RunMeta, 'jobName' | 'runId' | 'agent' | 'version'>, runDir: string, overlayHome?: string): void;
|
|
105
105
|
/** Pre-flight version/account selection for a routine job. */
|
|
106
|
-
|
|
106
|
+
interface RoutineLaunchPlan {
|
|
107
107
|
/** Ordered attempts: primary first, then same-agent failover accounts. */
|
|
108
108
|
chain: FallbackEntry[];
|
|
109
109
|
/** Full rotation result when strategy selected among healthy accounts; null when pinned. */
|
|
@@ -219,7 +219,7 @@ declare function executeJobOnHost(config: JobConfig, opts: {
|
|
|
219
219
|
* observes the live running→terminal transition (the monitor tick would already
|
|
220
220
|
* see a finalized record and skip it). Never let a hook throw into finalization.
|
|
221
221
|
*/
|
|
222
|
-
|
|
222
|
+
interface RoutineHooks {
|
|
223
223
|
/** Called once with the finalized meta when the run reaches a terminal state. */
|
|
224
224
|
onFinish?: (meta: RunMeta) => void;
|
|
225
225
|
}
|
|
@@ -35,16 +35,7 @@
|
|
|
35
35
|
*/
|
|
36
36
|
import { BasePeriodicService, type DaemonContext } from './service.js';
|
|
37
37
|
import type { DaemonServiceId } from '../daemon-services.js';
|
|
38
|
-
|
|
39
|
-
* Hard cap per tick: a real download + npm/bun install + verify can
|
|
40
|
-
* legitimately take minutes on a slow link. 15 minutes matches the task's
|
|
41
|
-
* stated budget and is short relative to the ~75min cadence. Exported so the
|
|
42
|
-
* on-demand `request-self-update` IPC handler (`browser/ipc.ts`) can bound
|
|
43
|
-
* its own `AbortController` on the SAME budget the periodic tick runs under —
|
|
44
|
-
* one deadline, not two independently-tuned numbers that could drift apart.
|
|
45
|
-
*/
|
|
46
|
-
export declare const SELF_UPDATE_DEADLINE_MS: number;
|
|
47
|
-
export interface SelfUpdateOutcome {
|
|
38
|
+
interface SelfUpdateOutcome {
|
|
48
39
|
updated: boolean;
|
|
49
40
|
reason?: string;
|
|
50
41
|
}
|
|
@@ -75,7 +66,6 @@ export interface SelfUpdateDeps {
|
|
|
75
66
|
syncSystemRepo(): Promise<void>;
|
|
76
67
|
syncLocal(): Promise<void>;
|
|
77
68
|
}
|
|
78
|
-
export declare function fetchLatestNpmMetadata(signal: AbortSignal): Promise<NpmLatestMetadata>;
|
|
79
69
|
/**
|
|
80
70
|
* Install + byte-verify `metadata` into `packageRoot`'s install, exactly the
|
|
81
71
|
* sequence `bootstrap.ts`'s `installResolvedPackage` runs for `agents
|
|
@@ -101,7 +91,6 @@ export declare function fetchLatestNpmMetadata(signal: AbortSignal): Promise<Npm
|
|
|
101
91
|
* it's guarding (found in review, PHNX-3695).
|
|
102
92
|
*/
|
|
103
93
|
export declare function installAndVerifyDefault(metadata: NpmLatestMetadata, packageRoot: string, signal: AbortSignal): Promise<void>;
|
|
104
|
-
export declare function defaultSelfUpdateDeps(): SelfUpdateDeps;
|
|
105
94
|
/**
|
|
106
95
|
* Core self-update decision + action, shared by the periodic tick
|
|
107
96
|
* ({@link SelfUpdateService.onTick}) and the on-demand IPC path
|
|
@@ -167,10 +156,6 @@ export declare function triggerSelfUpdateInBackground(ctx: DaemonContext, deps?:
|
|
|
167
156
|
* reason, or `null` to proceed to the (backgrounded) install path.
|
|
168
157
|
*/
|
|
169
158
|
export declare function selfUpdateSyncDeclineReason(deps?: SelfUpdateDeps): string | null;
|
|
170
|
-
export declare const DEV_BUILD_DECLINE = "dev build \u2014 self-update is a no-op";
|
|
171
|
-
export declare const SHADOW_DECLINE = "another agents binary shadows this install \u2014 self-update is a no-op";
|
|
172
|
-
/** True when the package on disk is a strictly newer release than the one this process booted with. */
|
|
173
|
-
export declare function installedIsNewerThanRunning(installed: string, running: string): boolean;
|
|
174
159
|
export declare class SelfUpdateService extends BasePeriodicService {
|
|
175
160
|
readonly id: DaemonServiceId;
|
|
176
161
|
readonly intervalMs: number;
|
|
@@ -56,7 +56,7 @@ const SELF_UPDATE_TICK_MS = 75 * 60_000;
|
|
|
56
56
|
* its own `AbortController` on the SAME budget the periodic tick runs under —
|
|
57
57
|
* one deadline, not two independently-tuned numbers that could drift apart.
|
|
58
58
|
*/
|
|
59
|
-
|
|
59
|
+
const SELF_UPDATE_DEADLINE_MS = 15 * 60_000;
|
|
60
60
|
/**
|
|
61
61
|
* First tick fires 5 minutes after daemon boot — deliberately longer than
|
|
62
62
|
* self-heal's 30s stagger (`self-heal-service.ts`): self-heal repairs local
|
|
@@ -67,7 +67,7 @@ export const SELF_UPDATE_DEADLINE_MS = 15 * 60_000;
|
|
|
67
67
|
* a restart). Every later tick still fires on the normal cadence.
|
|
68
68
|
*/
|
|
69
69
|
const SELF_UPDATE_STARTUP_DELAY_MS = 5 * 60_000;
|
|
70
|
-
|
|
70
|
+
async function fetchLatestNpmMetadata(signal) {
|
|
71
71
|
const response = await fetch(`https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`, { signal });
|
|
72
72
|
if (!response.ok) {
|
|
73
73
|
throw new Error(`registry.npmjs.org responded ${response.status}`);
|
|
@@ -148,7 +148,7 @@ export async function installAndVerifyDefault(metadata, packageRoot, signal) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
|
|
151
|
+
function defaultSelfUpdateDeps() {
|
|
152
152
|
return {
|
|
153
153
|
currentVersion: () => getCliVersion(),
|
|
154
154
|
installedVersion: () => getCliVersionFresh(),
|
|
@@ -362,10 +362,10 @@ export function selfUpdateSyncDeclineReason(deps = defaultSelfUpdateDeps()) {
|
|
|
362
362
|
}
|
|
363
363
|
return null;
|
|
364
364
|
}
|
|
365
|
-
|
|
366
|
-
|
|
365
|
+
const DEV_BUILD_DECLINE = 'dev build — self-update is a no-op';
|
|
366
|
+
const SHADOW_DECLINE = 'another agents binary shadows this install — self-update is a no-op';
|
|
367
367
|
/** True when the package on disk is a strictly newer release than the one this process booted with. */
|
|
368
|
-
|
|
368
|
+
function installedIsNewerThanRunning(installed, running) {
|
|
369
369
|
if (installed === 'unknown' || running === 'unknown')
|
|
370
370
|
return false;
|
|
371
371
|
return compareVersions(installed, running) > 0;
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { BasePeriodicService, type DaemonContext } from './service.js';
|
|
26
26
|
import type { DaemonServiceId } from '../daemon-services.js';
|
|
27
|
-
|
|
27
|
+
interface StateDirCheckServiceOptions {
|
|
28
28
|
lifetimePath: string;
|
|
29
29
|
lifetimeToken: string;
|
|
30
30
|
onMissing: () => void;
|
|
@@ -41,3 +41,4 @@ export declare class StateDirCheckService extends BasePeriodicService {
|
|
|
41
41
|
protected onStop(): Promise<void>;
|
|
42
42
|
protected onTick(ctx: DaemonContext): Promise<void>;
|
|
43
43
|
}
|
|
44
|
+
export {};
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import type { DaemonServiceId } from '../daemon-services.js';
|
|
34
34
|
import type { DaemonContext, DaemonService, ServiceHealth } from './service.js';
|
|
35
|
-
|
|
35
|
+
interface ServiceSupervisorOptions {
|
|
36
36
|
/** Consecutive thrown tick failures before a service is parked. Deadline breaches park immediately. Default 3. */
|
|
37
37
|
parkAfterFailures?: number;
|
|
38
38
|
/** First restart backoff delay, doubled on each further failed restart attempt. Default 5s. */
|
|
@@ -48,7 +48,7 @@ export interface ServiceSupervisorOptions {
|
|
|
48
48
|
*/
|
|
49
49
|
lifecycleDeadlineMs?: number;
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
interface RegisterServiceOptions {
|
|
52
52
|
/** Register the lifecycle owner but leave it stopped until a live enable. */
|
|
53
53
|
enabled?: boolean;
|
|
54
54
|
}
|
|
@@ -135,3 +135,4 @@ export declare class ServiceSupervisor {
|
|
|
135
135
|
private recordFailure;
|
|
136
136
|
private finishTick;
|
|
137
137
|
}
|
|
138
|
+
export {};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
/** Every service the daemon can host. IDs are kebab-case and stable. */
|
|
10
10
|
export type DaemonServiceId = 'scheduler' | 'catchup' | 'monitors' | 'browser-ipc' | 'webhook-receiver' | 'self-heal' | 'self-update' | 'account-state' | 'account-auth' | 'watchdog' | 'device-probe' | 'state-dir-check' | 'session-index' | 'session-title' | 'auth-sync' | 'usage-sync' | 'daemon-heartbeat' | 'tmux-reap' | 'browser-task-reap' | 'session-state' | 'session-summarizer' | 'attention-notify' | 'harness-update';
|
|
11
11
|
/** Human-readable metadata for each service. */
|
|
12
|
-
|
|
12
|
+
interface DaemonServiceDef {
|
|
13
13
|
id: DaemonServiceId;
|
|
14
14
|
title: string;
|
|
15
15
|
description: string;
|
|
@@ -55,3 +55,4 @@ export declare function queueDaemonServiceRestart(id: DaemonServiceId): void;
|
|
|
55
55
|
* daemon; never throws. Clears the file so a request is applied at most once.
|
|
56
56
|
*/
|
|
57
57
|
export declare function drainDaemonServiceRestartQueue(): DaemonServiceId[];
|
|
58
|
+
export {};
|
|
@@ -35,7 +35,7 @@ export interface HostedReceiverConfig {
|
|
|
35
35
|
/** Public Funnel exposure; omit to bind localhost only. */
|
|
36
36
|
funnel?: HostedReceiverFunnel;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
interface DaemonWebhooksConfig {
|
|
39
39
|
receivers: HostedReceiverConfig[];
|
|
40
40
|
}
|
|
41
41
|
/** Path to `~/.agents/daemon/webhooks.yaml`. */
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const AGENTS_URL_SCHEME = "agents";
|
|
2
|
-
|
|
3
|
-
export interface SchemeStatus {
|
|
2
|
+
interface SchemeStatus {
|
|
4
3
|
registered: boolean;
|
|
5
4
|
platform: NodeJS.Platform;
|
|
6
5
|
/** One human line: where the handler is, or why it is not registered. */
|
|
@@ -11,15 +10,6 @@ export interface SchemeStatus {
|
|
|
11
10
|
* out of the handler command.
|
|
12
11
|
*/
|
|
13
12
|
export declare function shQuote(p: string): string;
|
|
14
|
-
/**
|
|
15
|
-
* Resolve how the OS handler should invoke this CLI, as an already-quoted
|
|
16
|
-
* command prefix (without the `open <url>` suffix).
|
|
17
|
-
*
|
|
18
|
-
* A macOS GUI app does NOT inherit the shell PATH, so the handler must use an
|
|
19
|
-
* absolute path. Prefer the `agents` shim on PATH (directly executable); fall
|
|
20
|
-
* back to `<node> <entry>` for a bare JS install.
|
|
21
|
-
*/
|
|
22
|
-
export declare function resolveAgentsInvocation(platform?: NodeJS.Platform): string;
|
|
23
13
|
/** The freedesktop `.desktop` entry that claims `x-scheme-handler/agents`. */
|
|
24
14
|
export declare function linuxDesktopEntry(invocation: string): string;
|
|
25
15
|
/**
|
|
@@ -33,10 +23,9 @@ export declare function macPlistBuddyCommands(plistPath: string): string[][];
|
|
|
33
23
|
/** `reg add` argv lists that register the scheme under HKCU on Windows. */
|
|
34
24
|
export declare function windowsRegistryCommands(invocation: string): string[][];
|
|
35
25
|
export declare function linuxDesktopPath(home?: string): string;
|
|
36
|
-
export declare function macAppPath(home?: string): string;
|
|
37
26
|
/** Whether the handler artifact exists on disk (a cheap, side-effect-free check). */
|
|
38
27
|
export declare function agentsUrlSchemeStatus(platform?: NodeJS.Platform, home?: string): SchemeStatus;
|
|
39
|
-
|
|
28
|
+
interface RegisterOptions {
|
|
40
29
|
platform?: NodeJS.Platform;
|
|
41
30
|
home?: string;
|
|
42
31
|
/** Skip if already present (used by best-effort callers like setup). */
|
|
@@ -47,3 +36,4 @@ export declare function unregisterAgentsUrlScheme(opts?: {
|
|
|
47
36
|
platform?: NodeJS.Platform;
|
|
48
37
|
home?: string;
|
|
49
38
|
}): SchemeStatus;
|
|
39
|
+
export {};
|
|
@@ -23,7 +23,7 @@ import * as os from 'node:os';
|
|
|
23
23
|
import * as path from 'node:path';
|
|
24
24
|
import { getAgentsBinPath } from '../cli-entry.js';
|
|
25
25
|
export const AGENTS_URL_SCHEME = 'agents';
|
|
26
|
-
|
|
26
|
+
const MAC_BUNDLE_ID = 'dev.agents.urlhandler';
|
|
27
27
|
const LINUX_DESKTOP_FILE = 'agents-url-handler.desktop';
|
|
28
28
|
const MAC_APP_NAME = 'AgentsURLHandler.app';
|
|
29
29
|
// ---------------------------------------------------------------------------
|
|
@@ -44,7 +44,7 @@ export function shQuote(p) {
|
|
|
44
44
|
* absolute path. Prefer the `agents` shim on PATH (directly executable); fall
|
|
45
45
|
* back to `<node> <entry>` for a bare JS install.
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
function resolveAgentsInvocation(platform = os.platform()) {
|
|
48
48
|
const onPath = whichAgents(platform);
|
|
49
49
|
if (onPath)
|
|
50
50
|
return platform === 'win32' ? `"${onPath}"` : shQuote(onPath);
|
|
@@ -123,7 +123,7 @@ export function windowsRegistryCommands(invocation) {
|
|
|
123
123
|
export function linuxDesktopPath(home = os.homedir()) {
|
|
124
124
|
return path.join(home, '.local', 'share', 'applications', LINUX_DESKTOP_FILE);
|
|
125
125
|
}
|
|
126
|
-
|
|
126
|
+
function macAppPath(home = os.homedir()) {
|
|
127
127
|
return path.join(home, 'Applications', MAC_APP_NAME);
|
|
128
128
|
}
|
|
129
129
|
// ---------------------------------------------------------------------------
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
* agents://session/<id> — resume <id>, owner host resolved from the id
|
|
17
17
|
* agents://session/<id>?host=<name> — the same, with a routing hint
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
interface AgentsSessionLink {
|
|
20
20
|
kind: 'session';
|
|
21
21
|
/** The session id (or short-id/alias) to resume. */
|
|
22
22
|
id: string;
|
|
23
23
|
/** Optional owning-host hint; resume self-resolves the owner from the id regardless. */
|
|
24
24
|
host?: string;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
interface AgentsUrlError {
|
|
27
27
|
error: string;
|
|
28
28
|
}
|
|
29
29
|
export declare function isDeepLinkSessionId(raw: string): boolean;
|
|
@@ -32,3 +32,4 @@ export declare function isDeepLinkSessionId(raw: string): boolean;
|
|
|
32
32
|
* {@link AgentsUrlError} with a human reason. Never throws.
|
|
33
33
|
*/
|
|
34
34
|
export declare function parseAgentsUrl(input: string): AgentsSessionLink | AgentsUrlError;
|
|
35
|
+
export {};
|
|
@@ -44,7 +44,7 @@ export type ConfigScope = 'user' | 'device';
|
|
|
44
44
|
*/
|
|
45
45
|
export type ConfigVisibility = 'shared' | 'machine';
|
|
46
46
|
/** Value type of a config key — drives validation and `--json` rendering. */
|
|
47
|
-
|
|
47
|
+
type ConfigType = 'string' | 'int' | 'bool' | 'string-list';
|
|
48
48
|
/** Fields every key carries, regardless of scope. */
|
|
49
49
|
interface ConfigKeySpecBase {
|
|
50
50
|
/** CLI dotted name, e.g. `interactive.host`. */
|
|
@@ -81,7 +81,7 @@ export interface ConfigEntry {
|
|
|
81
81
|
source: ConfigSource;
|
|
82
82
|
}
|
|
83
83
|
/** Options scoping a read/write: a specific device (default: this machine), or the fleet-defaults layer. */
|
|
84
|
-
|
|
84
|
+
interface ConfigTarget {
|
|
85
85
|
device?: string;
|
|
86
86
|
/** Write/read the fleet-wide defaults layer (central fleet.defaults.config). */
|
|
87
87
|
fleet?: boolean;
|
|
@@ -92,16 +92,8 @@ declare const DEVICE_ROLES: readonly ["worker", "personal", "desktop"];
|
|
|
92
92
|
declare const AUTO_POOL_MODES: readonly ["workers", "all"];
|
|
93
93
|
export declare const CONFIG_KEYS: readonly ConfigKeySpec[];
|
|
94
94
|
export declare function configKeySpec(name: string): ConfigKeySpec;
|
|
95
|
-
/**
|
|
96
|
-
|
|
97
|
-
* process. A failure is loud but non-fatal — config reads must keep working,
|
|
98
|
-
* and the next process retries the fold. Honors AGENTS_SKIP_MIGRATION=1, the
|
|
99
|
-
* same gate bootstrap's runMigration uses (tests pin it so a fork never folds
|
|
100
|
-
* the developer's real ~/.agents as a side effect).
|
|
101
|
-
*/
|
|
102
|
-
export declare function ensureDeviceConfigMigrated(): void;
|
|
103
|
-
/** The fleet-defaults config layer (central `fleet.defaults.config`; {} when unset). */
|
|
104
|
-
export declare function readFleetConfigDefaults(): Record<string, unknown>;
|
|
95
|
+
/** Throw when `value` does not match the key's declared type or validation. */
|
|
96
|
+
export declare function assertValidValue(spec: ConfigKeySpec, value: unknown): void;
|
|
105
97
|
/**
|
|
106
98
|
* The effective device-scope config block for `device`: fleet.defaults.config
|
|
107
99
|
* overlaid with the per-device doc's config:. This is the single read path
|
|
@@ -130,9 +122,6 @@ export declare function getConfigValueAsync(name: string, opts?: ConfigTarget):
|
|
|
130
122
|
* must not hard-fail. Asking for such a key by name still errors.
|
|
131
123
|
*/
|
|
132
124
|
export declare function listConfig(opts?: ConfigTarget): ConfigEntry[];
|
|
133
|
-
/** List user-scope config keys with their values. Used to show inherited settings
|
|
134
|
-
* in per-device views without implying those keys are device-local. */
|
|
135
|
-
export declare function listUserConfig(): ConfigEntry[];
|
|
136
125
|
/**
|
|
137
126
|
* Set a config key (validated). Device-scope keys target this machine unless
|
|
138
127
|
* `opts.device` names a peer; `opts.fleet` writes the fleet-wide defaults layer
|
|
@@ -39,6 +39,7 @@ import { atomicWriteFileSync } from './fs-atomic.js';
|
|
|
39
39
|
import { machineId } from './machine-id.js';
|
|
40
40
|
import { assertValidDeviceName, assertRegistrableDeviceName } from './devices/registry.js';
|
|
41
41
|
import { migrateDeviceConfigStores } from './devices/config-migration.js';
|
|
42
|
+
import { parseAddress } from './address.js';
|
|
42
43
|
import { isAgentId } from './types.js';
|
|
43
44
|
const DEVICE_PLATFORMS = ['windows', 'linux', 'macos', 'unknown'];
|
|
44
45
|
const SSH_AUTH_METHODS = ['key', 'password'];
|
|
@@ -46,6 +47,16 @@ const SSH_AUTH_METHODS = ['key', 'password'];
|
|
|
46
47
|
const DEVICE_ROLES = ['worker', 'personal', 'desktop'];
|
|
47
48
|
/** Which devices automatic placement may pick — see the `auto.pool` key below. */
|
|
48
49
|
const AUTO_POOL_MODES = ['workers', 'all'];
|
|
50
|
+
/**
|
|
51
|
+
* A device's physical form factor (`formFactor` key) — a factual hardware fact
|
|
52
|
+
* the menu bar shows as an icon. Set explicitly per device (no inference from
|
|
53
|
+
* platform, no hardcoded device names). `unknown` is the effective default.
|
|
54
|
+
*/
|
|
55
|
+
const DEVICE_FORM_FACTORS = ['laptop', 'desktop', 'server', 'unknown'];
|
|
56
|
+
/** A validate() that accepts only one of `allowed` — the enum-string keys reuse it. */
|
|
57
|
+
function oneOf(name, allowed) {
|
|
58
|
+
return (v) => (allowed.includes(v) ? null : `${name} must be one of ${allowed.join(' | ')}.`);
|
|
59
|
+
}
|
|
49
60
|
export const CONFIG_KEYS = [
|
|
50
61
|
{
|
|
51
62
|
name: 'interactive.host',
|
|
@@ -133,6 +144,28 @@ export const CONFIG_KEYS = [
|
|
|
133
144
|
type: 'string',
|
|
134
145
|
description: 'Browser profile `agents browser start` resolves to without --profile (set via `agents browser use`).',
|
|
135
146
|
},
|
|
147
|
+
{
|
|
148
|
+
name: 'computer.host',
|
|
149
|
+
yamlKey: 'computerHost',
|
|
150
|
+
scope: 'device',
|
|
151
|
+
visibility: 'shared',
|
|
152
|
+
type: 'string',
|
|
153
|
+
description: 'The --host address (PHNX-4090) `agents computer --device <name>` forwards to the standalone engine: ' +
|
|
154
|
+
'ssh://[user@]host[:port], vnc://host[:port], or tcp://host:port. Unset falls back to the fleet ssh ' +
|
|
155
|
+
'identity (ssh://user@host resolved against the device registry).',
|
|
156
|
+
validate: (v) => {
|
|
157
|
+
try {
|
|
158
|
+
const addr = parseAddress(v);
|
|
159
|
+
if (addr.scheme !== 'ssh' && addr.scheme !== 'vnc' && addr.scheme !== 'tcp') {
|
|
160
|
+
return `computer.host speaks ssh://, vnc:// and tcp:// only (got ${addr.scheme}://).`;
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
return err?.message ?? String(err);
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
},
|
|
136
169
|
{
|
|
137
170
|
name: 'browser.device',
|
|
138
171
|
yamlKey: 'defaultBrowserDevice',
|
|
@@ -344,6 +377,134 @@ export const CONFIG_KEYS = [
|
|
|
344
377
|
defaultValue: false,
|
|
345
378
|
description: 'Boost this device in `--device auto` ranking (default off) — picked ahead of load-equal peers when eligible.',
|
|
346
379
|
},
|
|
380
|
+
{
|
|
381
|
+
name: 'formFactor',
|
|
382
|
+
yamlKey: 'formFactor',
|
|
383
|
+
scope: 'device',
|
|
384
|
+
visibility: 'shared',
|
|
385
|
+
type: 'string',
|
|
386
|
+
defaultValue: 'unknown',
|
|
387
|
+
description: "This device's physical form factor, a factual hardware fact the menu bar renders as an icon: " +
|
|
388
|
+
'laptop, desktop, server, or unknown. Synced fleet-wide (any box may set it for any device). Set it ' +
|
|
389
|
+
'explicitly — never inferred from the OS platform. Unset reads as `unknown`.',
|
|
390
|
+
validate: oneOf('formFactor', DEVICE_FORM_FACTORS),
|
|
391
|
+
},
|
|
392
|
+
// ─── AGI Menu preferences (PHNX-3999) ──────────────────────────────────────
|
|
393
|
+
// User-scope so one value syncs fleet-wide via `agents repo push/pull` and the
|
|
394
|
+
// native menu reads it from `agents config list --json`. Names mirror the Swift
|
|
395
|
+
// MenuPreferences local-cache keys. `config list` OMITS an unset key, so the
|
|
396
|
+
// native app falls back to its own known defaults — the defaults documented
|
|
397
|
+
// here match those, they are not substituted on read.
|
|
398
|
+
{
|
|
399
|
+
name: 'menubar.menu.defaultProject',
|
|
400
|
+
yamlKey: 'menubarMenuDefaultProject',
|
|
401
|
+
scope: 'user',
|
|
402
|
+
type: 'string',
|
|
403
|
+
description: 'AGI Menu: the project name the menu opens focused on. Unset = no default project.',
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
name: 'menubar.menu.workingRowsShown',
|
|
407
|
+
yamlKey: 'menubarMenuWorkingRowsShown',
|
|
408
|
+
scope: 'user',
|
|
409
|
+
type: 'int',
|
|
410
|
+
defaultValue: 3,
|
|
411
|
+
description: 'AGI Menu: how many working (in-progress) rows to show per group — 2, 3, or 4.',
|
|
412
|
+
validate: (v) => ([2, 3, 4].includes(v) ? null : 'menubar.menu.workingRowsShown must be 2, 3, or 4.'),
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
name: 'menubar.menu.showPreviews',
|
|
416
|
+
yamlKey: 'menubarMenuShowPreviews',
|
|
417
|
+
scope: 'user',
|
|
418
|
+
type: 'bool',
|
|
419
|
+
defaultValue: true,
|
|
420
|
+
description: 'AGI Menu: show the session preview line under each row.',
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: 'menubar.menu.projectPriorityFilter',
|
|
424
|
+
yamlKey: 'menubarMenuProjectPriorityFilter',
|
|
425
|
+
scope: 'user',
|
|
426
|
+
type: 'string',
|
|
427
|
+
defaultValue: 'all',
|
|
428
|
+
description: 'AGI Menu: minimum project priority shown — all, urgent, high, or medium.',
|
|
429
|
+
validate: oneOf('menubar.menu.projectPriorityFilter', ['all', 'urgent', 'high', 'medium']),
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
name: 'menubar.menu.hideCompletedMilestones',
|
|
433
|
+
yamlKey: 'menubarMenuHideCompletedMilestones',
|
|
434
|
+
scope: 'user',
|
|
435
|
+
type: 'bool',
|
|
436
|
+
defaultValue: true,
|
|
437
|
+
description: 'AGI Menu: hide milestones that are fully complete.',
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: 'menubar.menu.bannerWhenNeedsYou',
|
|
441
|
+
yamlKey: 'menubarMenuBannerWhenNeedsYou',
|
|
442
|
+
scope: 'user',
|
|
443
|
+
type: 'bool',
|
|
444
|
+
defaultValue: true,
|
|
445
|
+
description: 'AGI Menu: show a top banner when a session needs the operator.',
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
name: 'menubar.menu.includeOtherDeviceRequests',
|
|
449
|
+
yamlKey: 'menubarMenuIncludeOtherDeviceRequests',
|
|
450
|
+
scope: 'user',
|
|
451
|
+
type: 'bool',
|
|
452
|
+
defaultValue: true,
|
|
453
|
+
description: 'AGI Menu: include needs-you requests from sessions on OTHER fleet devices.',
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
name: 'menubar.menu.groupBy',
|
|
457
|
+
yamlKey: 'menubarMenuGroupBy',
|
|
458
|
+
scope: 'user',
|
|
459
|
+
type: 'string',
|
|
460
|
+
defaultValue: 'project',
|
|
461
|
+
description: 'AGI Menu: primary grouping of rows — none, project, agent, or device.',
|
|
462
|
+
validate: oneOf('menubar.menu.groupBy', ['none', 'project', 'agent', 'device']),
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
name: 'menubar.menu.thenBy',
|
|
466
|
+
yamlKey: 'menubarMenuThenBy',
|
|
467
|
+
scope: 'user',
|
|
468
|
+
type: 'string',
|
|
469
|
+
defaultValue: 'none',
|
|
470
|
+
description: 'AGI Menu: secondary grouping within each group — none, project, agent, or device.',
|
|
471
|
+
validate: oneOf('menubar.menu.thenBy', ['none', 'project', 'agent', 'device']),
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
name: 'menubar.menu.projectScope',
|
|
475
|
+
yamlKey: 'menubarMenuProjectScope',
|
|
476
|
+
scope: 'user',
|
|
477
|
+
type: 'string',
|
|
478
|
+
defaultValue: 'cycle',
|
|
479
|
+
description: 'AGI Menu: which project issues to show — the current cycle only, or all.',
|
|
480
|
+
validate: oneOf('menubar.menu.projectScope', ['cycle', 'all']),
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
name: 'menubar.menu.projectSort',
|
|
484
|
+
yamlKey: 'menubarMenuProjectSort',
|
|
485
|
+
scope: 'user',
|
|
486
|
+
type: 'string',
|
|
487
|
+
defaultValue: 'updated',
|
|
488
|
+
description: 'AGI Menu: how projects are ordered — updated, priority, or name.',
|
|
489
|
+
validate: oneOf('menubar.menu.projectSort', ['updated', 'priority', 'name']),
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
name: 'menubar.menu.ticketSort',
|
|
493
|
+
yamlKey: 'menubarMenuTicketSort',
|
|
494
|
+
scope: 'user',
|
|
495
|
+
type: 'string',
|
|
496
|
+
defaultValue: 'priority',
|
|
497
|
+
description: 'AGI Menu: how tickets within a project are ordered — priority, updated, or title.',
|
|
498
|
+
validate: oneOf('menubar.menu.ticketSort', ['priority', 'updated', 'title']),
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
name: 'menubar.menu.showPullRequests',
|
|
502
|
+
yamlKey: 'menubarMenuShowPullRequests',
|
|
503
|
+
scope: 'user',
|
|
504
|
+
type: 'bool',
|
|
505
|
+
defaultValue: true,
|
|
506
|
+
description: 'AGI Menu: show the open pull requests section for each project.',
|
|
507
|
+
},
|
|
347
508
|
];
|
|
348
509
|
/** Look up a key spec by CLI dotted name, or throw listing the known keys. */
|
|
349
510
|
/**
|
|
@@ -377,7 +538,7 @@ export function configKeySpec(name) {
|
|
|
377
538
|
return spec;
|
|
378
539
|
}
|
|
379
540
|
/** Throw when `value` does not match the key's declared type or validation. */
|
|
380
|
-
function assertValidValue(spec, value) {
|
|
541
|
+
export function assertValidValue(spec, value) {
|
|
381
542
|
switch (spec.type) {
|
|
382
543
|
case 'string':
|
|
383
544
|
if (typeof value !== 'string' || value.length === 0) {
|
|
@@ -413,7 +574,7 @@ let migrationDone = false;
|
|
|
413
574
|
* same gate bootstrap's runMigration uses (tests pin it so a fork never folds
|
|
414
575
|
* the developer's real ~/.agents as a side effect).
|
|
415
576
|
*/
|
|
416
|
-
|
|
577
|
+
function ensureDeviceConfigMigrated() {
|
|
417
578
|
if (migrationDone || process.env.AGENTS_SKIP_MIGRATION === '1')
|
|
418
579
|
return;
|
|
419
580
|
try {
|
|
@@ -499,7 +660,7 @@ function writeDeviceDoc(device, doc) {
|
|
|
499
660
|
atomicWriteFileSync(p, META_HEADER + yaml.stringify(doc));
|
|
500
661
|
}
|
|
501
662
|
/** The fleet-defaults config layer (central `fleet.defaults.config`; {} when unset). */
|
|
502
|
-
|
|
663
|
+
function readFleetConfigDefaults() {
|
|
503
664
|
const config = readMeta().fleet?.defaults?.config;
|
|
504
665
|
return config && typeof config === 'object' && !Array.isArray(config) ? config : {};
|
|
505
666
|
}
|
|
@@ -609,11 +770,6 @@ export function listConfig(opts) {
|
|
|
609
770
|
: CONFIG_KEYS;
|
|
610
771
|
return visible.map((spec) => getConfigValue(spec.name, opts));
|
|
611
772
|
}
|
|
612
|
-
/** List user-scope config keys with their values. Used to show inherited settings
|
|
613
|
-
* in per-device views without implying those keys are device-local. */
|
|
614
|
-
export function listUserConfig() {
|
|
615
|
-
return CONFIG_KEYS.filter((spec) => spec.scope === 'user').map((spec) => getConfigValue(spec.name));
|
|
616
|
-
}
|
|
617
773
|
// ─── Writes ───────────────────────────────────────────────────────────────────
|
|
618
774
|
/** The fleet manifest for a defaults write: `devices` materializes as an
|
|
619
775
|
* explicit empty map (NOT 'all') so `agents apply` targets nothing until the
|
|
@@ -91,7 +91,7 @@ export declare function markFleetRemote(cmd: string[], device: Pick<DeviceProfil
|
|
|
91
91
|
*/
|
|
92
92
|
export declare function buildInteractiveShellCommand(device: DeviceProfile, mirrorCwd: string | undefined): string | undefined;
|
|
93
93
|
/** Host-key posture for {@link buildSshInvocation}. */
|
|
94
|
-
|
|
94
|
+
interface SshHostKeyOptions {
|
|
95
95
|
/**
|
|
96
96
|
* True when the device's host key is already pinned in the managed
|
|
97
97
|
* known_hosts store — connections then verify with `StrictHostKeyChecking=yes`
|
|
@@ -162,3 +162,4 @@ export declare function buildAskpassShimBody(launch?: {
|
|
|
162
162
|
* protocol back into the CLI, which then resolves the bundle.
|
|
163
163
|
*/
|
|
164
164
|
export declare function writeAskpassShim(): string;
|
|
165
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
type DeviceDiscoveryStatus = 'approved' | 'ignored';
|
|
2
|
+
interface DeviceDiscoveryReconcileResult {
|
|
3
3
|
approved: string[];
|
|
4
4
|
ignored: string[];
|
|
5
5
|
registered: string[];
|
|
@@ -40,3 +40,4 @@ export declare function loadDeviceDiscoveryPolicies(): Map<string, DeviceDiscove
|
|
|
40
40
|
export declare function reconcileDeviceDiscoveryPolicies(): Promise<DeviceDiscoveryReconcileResult>;
|
|
41
41
|
/** Complete reconciliation from real `tailscale status --json` output. */
|
|
42
42
|
export declare function registerApprovedDevicesFromTailscale(json: string, approved: string[], ignored: string[], missing: string[]): Promise<DeviceDiscoveryReconcileResult>;
|
|
43
|
+
export {};
|
|
@@ -244,7 +244,7 @@ export function remediationFor(finding) {
|
|
|
244
244
|
case 'content-drift':
|
|
245
245
|
case 'stale':
|
|
246
246
|
// doctor diagnoses; `agents sync` fixes (the superset of the old
|
|
247
|
-
// `
|
|
247
|
+
// `agents sync`). A bare `agents sync <agent>` hits only the default
|
|
248
248
|
// version, so an agent-only row collapsed across versions must ask for
|
|
249
249
|
// @all to reach every one it covers.
|
|
250
250
|
if (agent && version)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Serve a cached snapshot without recomputing while it is younger than this. */
|
|
2
2
|
export declare const DOCTOR_OVERVIEW_FRESH_MS = 90000;
|
|
3
3
|
/** Injectable IO + clock so tests exercise the real fs at a temp dir, no mocks. */
|
|
4
|
-
|
|
4
|
+
interface DoctorOverviewCacheDeps {
|
|
5
5
|
/** Cache directory (default: the real `~/.agents/.cache`). */
|
|
6
6
|
dir?: string;
|
|
7
7
|
/** Clock (default: {@link Date.now}). */
|
|
@@ -29,7 +29,7 @@ export declare function invalidateDoctorOverviewCache(deps?: DoctorOverviewCache
|
|
|
29
29
|
* the way out. Call `release()` in a `finally` so a compute that throws still
|
|
30
30
|
* frees the lock promptly (idempotent).
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
interface OverviewGate {
|
|
33
33
|
cached: string | null;
|
|
34
34
|
release?: () => void;
|
|
35
35
|
}
|
|
@@ -50,3 +50,4 @@ export declare function enterDoctorOverviewGate(opts?: {
|
|
|
50
50
|
forceRefresh?: boolean;
|
|
51
51
|
freshMs?: number;
|
|
52
52
|
}, deps?: DoctorOverviewCacheDeps): Promise<OverviewGate>;
|
|
53
|
+
export {};
|
|
@@ -111,7 +111,7 @@ export interface FleetDivergence {
|
|
|
111
111
|
/** Human-readable one-liner, ready for the warnings list. */
|
|
112
112
|
message: string;
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
interface FleetDivergenceReport {
|
|
115
115
|
/** Name of the device used as the comparison baseline (the local machine). */
|
|
116
116
|
baseline: string;
|
|
117
117
|
divergences: FleetDivergence[];
|
|
@@ -132,3 +132,4 @@ export interface FleetDivergenceReport {
|
|
|
132
132
|
* JSON output — and the tests — are stable.
|
|
133
133
|
*/
|
|
134
134
|
export declare function compareFleetInventories(devices: DeviceInventory[], baselineName: string): FleetDivergenceReport;
|
|
135
|
+
export {};
|
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
import type { DeviceProfile, DeviceRegistry } from './registry.js';
|
|
11
11
|
import type { DeviceStats } from './health.js';
|
|
12
12
|
export type FleetSkipReason = 'offline' | 'no-address';
|
|
13
|
-
/** npm dist-tags / semver pins only — rejects shell metacharacters. */
|
|
14
|
-
export declare const FLEET_VERSION_RE: RegExp;
|
|
15
13
|
export interface FleetTarget {
|
|
16
14
|
device: DeviceProfile;
|
|
17
15
|
/** When set, this device is not reached (skip with reason). */
|
|
@@ -112,7 +110,7 @@ export declare function runLocalCommand(cmd: string[], opts?: {
|
|
|
112
110
|
* cannot inject shell metacharacters into the remote command line.
|
|
113
111
|
*/
|
|
114
112
|
export declare function upgradeCommand(version?: string): string[];
|
|
115
|
-
|
|
113
|
+
interface RunFleetOptions {
|
|
116
114
|
/**
|
|
117
115
|
* Name of THIS machine. Its target runs the command **locally** (no ssh) — a
|
|
118
116
|
* box can't reliably ssh to itself and doesn't need to. Omit to ssh every
|
|
@@ -132,7 +130,7 @@ export interface RunFleetOptions {
|
|
|
132
130
|
* recorded as `failed` so one bad device never aborts the rest.
|
|
133
131
|
*/
|
|
134
132
|
export declare function runFleet(targets: FleetTarget[], cmd: string[], opts?: RunFleetOptions): FleetRunResult[];
|
|
135
|
-
|
|
133
|
+
interface FanOutDeviceOptions {
|
|
136
134
|
/**
|
|
137
135
|
* Per-device deadline in milliseconds. When set, any probe that does not
|
|
138
136
|
* settle within this window is abandoned via `Promise.race` against a
|
|
@@ -149,3 +147,4 @@ export interface FanOutDeviceOptions {
|
|
|
149
147
|
}
|
|
150
148
|
/** Run one async probe per device in parallel, preserving input order. */
|
|
151
149
|
export declare function fanOutDevices<T, Target extends FanOutDeviceTarget = FanOutDeviceTarget>(targets: Target[], probe: (target: Target) => Promise<T>, opts?: FanOutDeviceOptions): Promise<FanOutDeviceResult<T>[]>;
|
|
150
|
+
export {};
|