@phnx-labs/agents-cli 1.22.112 → 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 +37 -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 +14 -104
- package/dist/commands/sessions.js +22 -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 -12
- package/dist/lib/daemon/daemon.js +42 -23
- 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/testdata/process-view-daemon.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-daemon.js +14 -0
- package/dist/lib/daemon/testdata/process-view-start.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-start.js +43 -0
- 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 +4 -1
- package/dist/lib/event-provenance.js +4 -0
- 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 +28 -8
- 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 +11 -2
- package/dist/lib/feed/activity.d.ts +16 -33
- package/dist/lib/feed/activity.js +69 -26
- 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 +10 -2
- package/dist/lib/feed/watch.js +91 -4
- 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 +2 -2
- 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 -34
- package/dist/lib/hosts/dispatch.js +4 -21
- 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/remote-session-id.d.ts +5 -27
- package/dist/lib/hosts/remote-session-id.js +18 -61
- 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/launch-identity.d.ts +10 -0
- package/dist/lib/launch-identity.js +31 -0
- 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/active.js +9 -3
- 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/db.d.ts +2 -1
- package/dist/lib/session/db.js +39 -4
- 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/discover.js +7 -2
- 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 +12 -1
- package/dist/lib/session/hook-sessions.js +139 -6
- 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/pid-registry.d.ts +18 -5
- package/dist/lib/session/pid-registry.js +164 -17
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/process-view.d.ts +25 -0
- package/dist/lib/session/process-view.js +176 -0
- package/dist/lib/session/projection.d.ts +13 -0
- package/dist/lib/session/projection.js +101 -0
- 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 +10 -7
- package/dist/lib/session/remote/watch.js +10 -6
- 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 +17 -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/testdata/pid-registry-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/pid-registry-namespace.js +27 -0
- package/dist/lib/session/testdata/process-view-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-namespace.js +56 -0
- package/dist/lib/session/testdata/process-view-private.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-private.js +12 -0
- 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
|
@@ -65,10 +65,6 @@ import { USAGE_SYNC_INTERVAL_MS } from './accounting/usage-sync.js';
|
|
|
65
65
|
* let an idle account rot longer than 5 minutes between attempts.
|
|
66
66
|
*/
|
|
67
67
|
export const REFRESH_INTERVAL_MS = 5 * 60 * 1000;
|
|
68
|
-
/** @deprecated alias — use {@link REFRESH_INTERVAL_MS}. Kept for test imports. */
|
|
69
|
-
export const REFRESH_MIN_MS = REFRESH_INTERVAL_MS;
|
|
70
|
-
/** @deprecated alias — use {@link REFRESH_INTERVAL_MS}. Kept for test imports. */
|
|
71
|
-
export const REFRESH_MAX_MS = REFRESH_INTERVAL_MS;
|
|
72
68
|
/** Burn-rate divisor retained for the pure delay helper / tests; with min=max
|
|
73
69
|
* the divisor does not change the scheduled interval. */
|
|
74
70
|
export const REFRESH_BURN_DIVISOR = 4;
|
|
@@ -126,7 +122,6 @@ export const PROVIDER_CATCHUP_MAX = 2;
|
|
|
126
122
|
* re-refresh it. Actively-used accounts stay current at zero endpoint cost, so
|
|
127
123
|
* the proactive budget is reserved for genuinely idle accounts.
|
|
128
124
|
*/
|
|
129
|
-
export const STATUSLINE_FRESH_MS = REFRESH_INTERVAL_MS;
|
|
130
125
|
/** Consecutive failed live reads before one broken account is quarantined. */
|
|
131
126
|
export const FAILURE_QUARANTINE_THRESHOLD = 3;
|
|
132
127
|
/** A chronic offender waits this long while healthy siblings keep their cadence. */
|
|
@@ -144,7 +139,7 @@ function headroomCachePath() {
|
|
|
144
139
|
return headroomCachePathOverride ?? path.join(getCacheDir(), '.usage-headroom.json');
|
|
145
140
|
}
|
|
146
141
|
/** Read the whole headroom cache (best-effort; missing/corrupt → empty map). */
|
|
147
|
-
|
|
142
|
+
function readHeadroomCache() {
|
|
148
143
|
try {
|
|
149
144
|
const parsed = JSON.parse(fs.readFileSync(headroomCachePath(), 'utf-8'));
|
|
150
145
|
if (parsed && parsed.entries && typeof parsed.entries === 'object')
|
|
@@ -254,7 +249,7 @@ function skippedHeadroomEntry(prev, usageKey, now, index) {
|
|
|
254
249
|
}
|
|
255
250
|
/**
|
|
256
251
|
* Reschedule an account we skipped because a free statusline ingest already
|
|
257
|
-
* captured it inside {@link
|
|
252
|
+
* captured it inside {@link REFRESH_INTERVAL_MS}. The statusline row IS a real,
|
|
258
253
|
* live sample, so RE-DERIVE headroom (status / minutesToLimit) from it against
|
|
259
254
|
* the prior sample — otherwise `status`/`minutesToLimit` would freeze at their
|
|
260
255
|
* last API-refresh value forever for exactly the actively-used accounts that
|
|
@@ -581,7 +576,7 @@ export async function runUsageRefresh(deps) {
|
|
|
581
576
|
if (network) {
|
|
582
577
|
const cached = deps.readCachedSnapshot?.(account.usageKey) ?? null;
|
|
583
578
|
const capturedAtMs = cached?.capturedAt?.getTime() ?? null;
|
|
584
|
-
if (cached && capturedAtMs !== null && now - capturedAtMs <
|
|
579
|
+
if (cached && capturedAtMs !== null && now - capturedAtMs < REFRESH_INTERVAL_MS) {
|
|
585
580
|
updates[account.usageKey] = freshHeadroomEntry(entry, cached, now, capturedAtMs);
|
|
586
581
|
result.skippedFresh += 1;
|
|
587
582
|
continue;
|
package/dist/lib/verbs.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare const CANONICAL_ALIASES: {
|
|
|
18
18
|
readonly rename: readonly ["mv"];
|
|
19
19
|
readonly edit: readonly [];
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
type CanonicalVerb = keyof typeof CANONICAL_ALIASES;
|
|
22
22
|
/** Apply the standard aliases for `verb` to an already-created subcommand, returning it. */
|
|
23
23
|
export declare function withAliases(cmd: Command, verb: CanonicalVerb): Command;
|
|
24
|
+
export {};
|
|
@@ -4,7 +4,7 @@ export interface VersionAccountEntry {
|
|
|
4
4
|
version: string;
|
|
5
5
|
info: AccountInfo;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
interface NewerDuplicateVersion {
|
|
8
8
|
version: string;
|
|
9
9
|
email: string | null;
|
|
10
10
|
plan: string | null;
|
|
@@ -15,7 +15,6 @@ export interface NewerDuplicateVersion {
|
|
|
15
15
|
* duplicate rule with tests.
|
|
16
16
|
*/
|
|
17
17
|
export declare function findNewerDuplicateVersions(entries: VersionAccountEntry[], selectedVersion: string): NewerDuplicateVersion[];
|
|
18
|
-
/** Collect account info for an agent and find newer duplicates of selectedVersion. */
|
|
19
|
-
export declare function getNewerDuplicateVersions(agentId: AgentId, selectedVersion: string): Promise<NewerDuplicateVersion[]>;
|
|
20
18
|
/** Format the non-interactive guidance shown by view/run when duplicates exist. */
|
|
21
19
|
export declare function formatNewerDuplicateNotice(agentId: AgentId, selectedVersion: string, duplicates: NewerDuplicateVersion[], selectedLabel?: string): string;
|
|
20
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
3
|
-
import { compareVersions
|
|
4
|
-
import {
|
|
2
|
+
import { agentLabel } from './agents.js';
|
|
3
|
+
import { compareVersions } from './installations/versions.js';
|
|
4
|
+
import { getUsageLookupKey } from './accounting/usage.js';
|
|
5
5
|
function duplicateIdentity(info) {
|
|
6
6
|
if (!info)
|
|
7
7
|
return null;
|
|
@@ -31,36 +31,6 @@ export function findNewerDuplicateVersions(entries, selectedVersion) {
|
|
|
31
31
|
plan: entry.info.plan,
|
|
32
32
|
}));
|
|
33
33
|
}
|
|
34
|
-
/** Collect account info for an agent and find newer duplicates of selectedVersion. */
|
|
35
|
-
export async function getNewerDuplicateVersions(agentId, selectedVersion) {
|
|
36
|
-
const rows = await Promise.all(listInstalledVersions(agentId).map(async (version) => {
|
|
37
|
-
const home = getVersionHomePath(agentId, version);
|
|
38
|
-
const info = await getAccountInfo(agentId, home);
|
|
39
|
-
return { version, home, info };
|
|
40
|
-
}));
|
|
41
|
-
const { canonicalByUsageKey } = buildCanonicalUsageContext(rows.map(({ version, home, info }) => ({
|
|
42
|
-
agentId,
|
|
43
|
-
home,
|
|
44
|
-
cliVersion: version,
|
|
45
|
-
info,
|
|
46
|
-
})));
|
|
47
|
-
const entries = rows.map(({ version, info }) => {
|
|
48
|
-
const key = getUsageLookupKey(info);
|
|
49
|
-
const canon = key ? canonicalByUsageKey.get(key) : undefined;
|
|
50
|
-
return {
|
|
51
|
-
version,
|
|
52
|
-
info: canon
|
|
53
|
-
? {
|
|
54
|
-
...info,
|
|
55
|
-
plan: canon.plan,
|
|
56
|
-
usageStatus: canon.usageStatus,
|
|
57
|
-
overageCredits: canon.overageCredits,
|
|
58
|
-
}
|
|
59
|
-
: info,
|
|
60
|
-
};
|
|
61
|
-
});
|
|
62
|
-
return findNewerDuplicateVersions(entries, selectedVersion);
|
|
63
|
-
}
|
|
64
34
|
/** Format the non-interactive guidance shown by view/run when duplicates exist. */
|
|
65
35
|
export function formatNewerDuplicateNotice(agentId, selectedVersion, duplicates, selectedLabel = '') {
|
|
66
36
|
if (duplicates.length === 0)
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* binary — see {@link resolveInstalledLayout}.
|
|
6
6
|
*/
|
|
7
7
|
export declare function resolveAgentsBin(): string | null;
|
|
8
|
-
|
|
8
|
+
interface InstallLayout {
|
|
9
9
|
/** The install's `dist/` directory (holds `index.js` + `lib/`). */
|
|
10
10
|
distDir: string;
|
|
11
11
|
/** The compiled CLI entry, `dist/index.js`. */
|
|
@@ -63,3 +63,4 @@ export declare function getCliVersion(pkgJsonPath?: string): string;
|
|
|
63
63
|
* 'unknown' on any error.
|
|
64
64
|
*/
|
|
65
65
|
export declare function getCliVersionFresh(pkgJsonPath?: string): string;
|
|
66
|
+
export {};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* the gate so every exit path in the run command applies it identically.
|
|
6
6
|
*/
|
|
7
7
|
export declare function shouldWarnUnpushed(mode: string, interactive: boolean): boolean;
|
|
8
|
-
|
|
8
|
+
interface UnpushedState {
|
|
9
9
|
/** cwd is inside a git work tree. */
|
|
10
10
|
isRepo: boolean;
|
|
11
11
|
/** current branch, or null when detached / not a repo. */
|
|
@@ -38,3 +38,4 @@ export declare function formatUnpushedWarning(state: UnpushedState, cwd: string)
|
|
|
38
38
|
* any failure is swallowed so it can never break a run's exit path.
|
|
39
39
|
*/
|
|
40
40
|
export declare function warnUnpushedWork(cwd: string): Promise<void>;
|
|
41
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WatchdogEvent, WatchdogEventKind } from './log.js';
|
|
2
|
-
|
|
2
|
+
interface WatchdogHistoryEntry {
|
|
3
3
|
ts: number;
|
|
4
4
|
kind: WatchdogEventKind | 'inspection';
|
|
5
5
|
sessionId?: string;
|
|
@@ -9,7 +9,7 @@ export interface WatchdogHistoryEntry {
|
|
|
9
9
|
stalledForMs?: number;
|
|
10
10
|
nudgeText?: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
interface WatchdogHistoryOptions {
|
|
13
13
|
limit?: number;
|
|
14
14
|
sinceMs?: number;
|
|
15
15
|
sessionId?: string;
|
|
@@ -18,3 +18,4 @@ export interface WatchdogHistoryOptions {
|
|
|
18
18
|
}
|
|
19
19
|
/** Select newest history and deliberately remove raw transcript tailLines. */
|
|
20
20
|
export declare function selectWatchdogHistory(events: WatchdogEvent[], options?: WatchdogHistoryOptions): WatchdogHistoryEntry[];
|
|
21
|
+
export {};
|
|
@@ -34,12 +34,6 @@ export declare function parseWatchdogEvents(text: string): WatchdogEvent[];
|
|
|
34
34
|
export declare function readWatchdogEvents(logPath?: string): WatchdogEvent[];
|
|
35
35
|
/** Serialize one event to a JSONL line (no trailing newline). */
|
|
36
36
|
export declare function formatEvent(ev: WatchdogEvent): string;
|
|
37
|
-
/**
|
|
38
|
-
* Cap on retained log lines. Mirrors the Factory reader's expectation that the
|
|
39
|
-
* writer trims (watchdogLog.ts trimToLast). Large enough to keep a useful
|
|
40
|
-
* history, small enough to bound the file the UI polls.
|
|
41
|
-
*/
|
|
42
|
-
export declare const WATCHDOG_LOG_MAX_LINES = 5000;
|
|
43
37
|
export declare const WATCHDOG_TAIL_MAX_CHARS = 4096;
|
|
44
38
|
/** Keep the newest transcript context without letting it consume the audit window. */
|
|
45
39
|
export declare function boundTailLines(lines: string[], maxChars?: number): string[];
|
package/dist/lib/watchdog/log.js
CHANGED
|
@@ -86,7 +86,7 @@ export function formatEvent(ev) {
|
|
|
86
86
|
* writer trims (watchdogLog.ts trimToLast). Large enough to keep a useful
|
|
87
87
|
* history, small enough to bound the file the UI polls.
|
|
88
88
|
*/
|
|
89
|
-
|
|
89
|
+
const WATCHDOG_LOG_MAX_LINES = 5000;
|
|
90
90
|
export const WATCHDOG_TAIL_MAX_CHARS = 4096;
|
|
91
91
|
/** Keep the newest transcript context without letting it consume the audit window. */
|
|
92
92
|
export function boundTailLines(lines, maxChars = WATCHDOG_TAIL_MAX_CHARS) {
|
|
@@ -29,16 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import type { InjectTarget } from '../terminal/index.js';
|
|
31
31
|
import type { ActiveSession } from '../session/active.js';
|
|
32
|
-
|
|
33
|
-
* Agent-reported hard-limit texts, matched against a session transcript tail.
|
|
34
|
-
* Ported verbatim from apps/ext/src/core/autoRotate.ts RATE_LIMIT_PATTERNS —
|
|
35
|
-
* kept specific on purpose: a transcript carries prose, so a loose "rate limit"
|
|
36
|
-
* match would rotate terminals whose agent merely DISCUSSED limits. The first
|
|
37
|
-
* two patterns cover the weekly/session variants, including claude's
|
|
38
|
-
* "You've hit your weekly limit · resets <time>" form.
|
|
39
|
-
*/
|
|
40
|
-
export declare const ROTATE_LIMIT_PATTERNS: RegExp[];
|
|
41
|
-
export type RotateTailVerdict = {
|
|
32
|
+
type RotateTailVerdict = {
|
|
42
33
|
kind: 'none';
|
|
43
34
|
} | {
|
|
44
35
|
kind: 'rate_limited';
|
|
@@ -136,22 +127,14 @@ export declare const DEFAULT_ROTATE_READINESS_MS = 60000;
|
|
|
136
127
|
export declare const DEFAULT_ROTATE_SKIP_COOLDOWN_MS: number;
|
|
137
128
|
/** Retry cooldown after a FAILED rotate — honored at begin via the state file. */
|
|
138
129
|
export declare const DEFAULT_ROTATE_FAILED_COOLDOWN_MS: number;
|
|
139
|
-
export declare function rotateStatePath(dir: string, sessionId: string): string;
|
|
140
130
|
export declare function readRotateState(dir: string, sessionId: string): RotateState | null;
|
|
141
131
|
export declare function writeRotateState(dir: string, state: RotateState): void;
|
|
142
|
-
export declare function clearRotateState(dir: string, sessionId: string): void;
|
|
143
132
|
/** A phase the machine still has work to do in (done/failed are terminal). */
|
|
144
133
|
export declare function isInflightPhase(phase: RotatePhase): boolean;
|
|
145
134
|
/** Every persisted rotate state (any phase) — for `watchdog status`. */
|
|
146
135
|
export declare function listRotateStates(dir: string): RotateState[];
|
|
147
136
|
/** In-flight rotates only — the set a tick's sweep must advance. */
|
|
148
137
|
export declare function listInflightRotates(dir: string): RotateState[];
|
|
149
|
-
/**
|
|
150
|
-
* One `rotate` skip event per cooldown window, tracked as
|
|
151
|
-
* <watchdog-state>/rotate-skips.json: { [sessionId]: suppressUntilMs }. A skip
|
|
152
|
-
* inside the window logs nothing and touches nothing.
|
|
153
|
-
*/
|
|
154
|
-
export declare function readRotateSkipLedger(dir: string): Record<string, number>;
|
|
155
138
|
/** True when a skip for this session is OUTSIDE its suppression window (log it). */
|
|
156
139
|
export declare function shouldLogRotateSkip(dir: string, sessionId: string, nowMs: number): boolean;
|
|
157
140
|
/** Suppress further skip events for this session until suppressUntilMs. */
|
|
@@ -186,14 +169,6 @@ export interface RotateGateResult {
|
|
|
186
169
|
* (collectRunCandidates reads daemon-written snapshots, readOnly).
|
|
187
170
|
*/
|
|
188
171
|
export declare function defaultRotateGate(): Promise<RotateGateResult>;
|
|
189
|
-
/**
|
|
190
|
-
* Default TUI-liveness probe for the relaunched session: the new session's
|
|
191
|
-
* transcript resolves under any known harness layout. `--session-id` is honored
|
|
192
|
-
* on a claude pick; for other harnesses the runner's readiness check ALSO
|
|
193
|
-
* accepts a fresh active session (started after the rotate began), so a codex
|
|
194
|
-
* pick with an unknown id is still detected.
|
|
195
|
-
*/
|
|
196
|
-
export declare function defaultRotateTranscriptLive(newSessionId: string): boolean;
|
|
197
172
|
/**
|
|
198
173
|
* The readiness FALLBACK correlation. A fresh active session counts as the
|
|
199
174
|
* relaunched TUI only when ALL of these hold:
|
|
@@ -216,3 +191,4 @@ export declare function isCorrelatedRelaunch(state: RotateState, s: ActiveSessio
|
|
|
216
191
|
* priori.
|
|
217
192
|
*/
|
|
218
193
|
export declare function defaultTuiLiveFor(state: RotateState, sessions: ActiveSession[]): boolean;
|
|
194
|
+
export {};
|
|
@@ -41,7 +41,7 @@ import { resolveWatchdogSessionPath } from './read.js';
|
|
|
41
41
|
* two patterns cover the weekly/session variants, including claude's
|
|
42
42
|
* "You've hit your weekly limit · resets <time>" form.
|
|
43
43
|
*/
|
|
44
|
-
|
|
44
|
+
const ROTATE_LIMIT_PATTERNS = [
|
|
45
45
|
/you'?ve hit your [\w-]*\s?limit/i,
|
|
46
46
|
/hit your (weekly|daily|usage|session) limit/i,
|
|
47
47
|
/usage limit (has been )?(reached|exceeded)/i,
|
|
@@ -195,7 +195,7 @@ export const DEFAULT_ROTATE_FAILED_COOLDOWN_MS = 15 * 60_000;
|
|
|
195
195
|
function rotateDir(dir) {
|
|
196
196
|
return path.join(dir, 'rotate');
|
|
197
197
|
}
|
|
198
|
-
|
|
198
|
+
function rotateStatePath(dir, sessionId) {
|
|
199
199
|
return path.join(rotateDir(dir), `${sessionId}.json`);
|
|
200
200
|
}
|
|
201
201
|
export function readRotateState(dir, sessionId) {
|
|
@@ -216,14 +216,6 @@ export function writeRotateState(dir, state) {
|
|
|
216
216
|
/* best-effort: the tray tolerates a missing/partial state file */
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
export function clearRotateState(dir, sessionId) {
|
|
220
|
-
try {
|
|
221
|
-
fs.unlinkSync(rotateStatePath(dir, sessionId));
|
|
222
|
-
}
|
|
223
|
-
catch {
|
|
224
|
-
/* already gone */
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
219
|
/** A phase the machine still has work to do in (done/failed are terminal). */
|
|
228
220
|
export function isInflightPhase(phase) {
|
|
229
221
|
return phase !== 'done' && phase !== 'failed';
|
|
@@ -255,7 +247,7 @@ export function listInflightRotates(dir) {
|
|
|
255
247
|
* <watchdog-state>/rotate-skips.json: { [sessionId]: suppressUntilMs }. A skip
|
|
256
248
|
* inside the window logs nothing and touches nothing.
|
|
257
249
|
*/
|
|
258
|
-
|
|
250
|
+
function readRotateSkipLedger(dir) {
|
|
259
251
|
try {
|
|
260
252
|
return JSON.parse(fs.readFileSync(path.join(dir, 'rotate-skips.json'), 'utf8'));
|
|
261
253
|
}
|
|
@@ -330,7 +322,7 @@ const ROTATE_TRANSCRIPT_AGENTS = ['claude', 'codex', 'gemini', 'droid'];
|
|
|
330
322
|
* accepts a fresh active session (started after the rotate began), so a codex
|
|
331
323
|
* pick with an unknown id is still detected.
|
|
332
324
|
*/
|
|
333
|
-
|
|
325
|
+
function defaultRotateTranscriptLive(newSessionId) {
|
|
334
326
|
return ROTATE_TRANSCRIPT_AGENTS.some((agent) => resolveWatchdogSessionPath(newSessionId, agent) !== undefined);
|
|
335
327
|
}
|
|
336
328
|
/** Strip trailing slashes so `/repo` and `/repo/` correlate. */
|
|
@@ -50,8 +50,6 @@ export interface WatchdogThresholds {
|
|
|
50
50
|
dormantMs: number;
|
|
51
51
|
}
|
|
52
52
|
export declare const DEFAULT_THRESHOLDS: WatchdogThresholds;
|
|
53
|
-
/** The default nudge text — a short imperative, configurable via opts.nudgeText. */
|
|
54
|
-
export declare const DEFAULT_NUDGE_TEXT = "Continue.";
|
|
55
53
|
export interface WatchdogTickOptions {
|
|
56
54
|
/** Actually inject when a nudge is decided. Default false (dry status). */
|
|
57
55
|
nudge?: boolean;
|
|
@@ -205,11 +203,6 @@ export interface WatchdogTickResult {
|
|
|
205
203
|
transitions: PresenceTransition[];
|
|
206
204
|
};
|
|
207
205
|
}
|
|
208
|
-
/**
|
|
209
|
-
* On-disk per-session policy sentinel: `<stateDir>/policy/<sessionId>` whose
|
|
210
|
-
* contents are `off` | `keep` | `handsoff`. Absent / unreadable / unknown → keep.
|
|
211
|
-
*/
|
|
212
|
-
export declare function readPolicySentinel(dir: string, sessionId: string): WatchdogPolicy;
|
|
213
206
|
/** Write a per-session policy sentinel (used by the CLI `agents watchdog policy`). */
|
|
214
207
|
export declare function writePolicySentinel(dir: string, sessionId: string, policy: WatchdogPolicy): void;
|
|
215
208
|
/** A decision for one idle session. `text` overrides the default nudge text. */
|
|
@@ -58,7 +58,7 @@ export const DEFAULT_THRESHOLDS = {
|
|
|
58
58
|
dormantMs: WATCHDOG_DORMANT_MS,
|
|
59
59
|
};
|
|
60
60
|
/** The default nudge text — a short imperative, configurable via opts.nudgeText. */
|
|
61
|
-
|
|
61
|
+
const DEFAULT_NUDGE_TEXT = 'Continue.';
|
|
62
62
|
// --- state persistence ------------------------------------------------------
|
|
63
63
|
function watchdogStateDir(opts) {
|
|
64
64
|
return opts.stateDir ?? path.join(getRuntimeStateDir(), 'watchdog');
|
|
@@ -88,7 +88,7 @@ function readNudgeLedger(dir) {
|
|
|
88
88
|
* On-disk per-session policy sentinel: `<stateDir>/policy/<sessionId>` whose
|
|
89
89
|
* contents are `off` | `keep` | `handsoff`. Absent / unreadable / unknown → keep.
|
|
90
90
|
*/
|
|
91
|
-
|
|
91
|
+
function readPolicySentinel(dir, sessionId) {
|
|
92
92
|
if (!sessionId)
|
|
93
93
|
return 'keep';
|
|
94
94
|
let raw;
|
|
@@ -133,7 +133,7 @@ function planDelivery(session, chosenText, block, allowGhosttyFocus) {
|
|
|
133
133
|
const mailboxId = mailboxIdForActiveSession(session) ?? sessionId;
|
|
134
134
|
const resolution = resolveInjectTargetForSession(session, { allowGhosttyFocus });
|
|
135
135
|
const route = resolveAnswerRoute({ mailboxId, answer: chosenText, session, block });
|
|
136
|
-
// A precise split (tmux / iTerm / vscodium
|
|
136
|
+
// A precise split (tmux / iTerm / vscodium) is the authoritative target.
|
|
137
137
|
if (resolution.addressable) {
|
|
138
138
|
return { via: 'inject', rail: resolution.rail, target: resolution.target };
|
|
139
139
|
}
|
|
@@ -821,7 +821,7 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
821
821
|
}
|
|
822
822
|
// Deliver. injectDryRun exercises the path without a real side effect: inject
|
|
823
823
|
// still calls injectFn (which honors dryRun), mailbox/resume are short-circuited.
|
|
824
|
-
// `confirmed` distinguishes a delivery we KNOW reached the agent (tmux/iterm
|
|
824
|
+
// `confirmed` distinguishes a delivery we KNOW reached the agent (tmux/iterm,
|
|
825
825
|
// mailbox, resume) from one merely dispatched (vscodium's fire-and-forget
|
|
826
826
|
// --open-url). Only a CONFIRMED delivery is booked as a landed nudge.
|
|
827
827
|
let delivered;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ActiveSession } from '../session/active.js';
|
|
2
2
|
import { type WatchdogThresholds, type WatchdogTickResult } from './runner.js';
|
|
3
|
-
|
|
3
|
+
interface WatchdogPassOptions {
|
|
4
4
|
nudge: boolean;
|
|
5
5
|
nudgeText?: string;
|
|
6
6
|
smartAgent?: string;
|
|
@@ -11,6 +11,6 @@ export interface WatchdogPassOptions {
|
|
|
11
11
|
mailboxGc?: boolean;
|
|
12
12
|
}
|
|
13
13
|
export declare function loadWatchdogSessions(): Promise<ActiveSession[]>;
|
|
14
|
-
export declare function runWatchdogMailboxGc(sessions: ActiveSession[]): void;
|
|
15
14
|
/** Execute one watchdog pass from the daemon or the explicit CLI command. */
|
|
16
15
|
export declare function runWatchdogPass(opts: WatchdogPassOptions): Promise<WatchdogTickResult>;
|
|
16
|
+
export {};
|
|
@@ -11,7 +11,7 @@ export async function loadWatchdogSessions() {
|
|
|
11
11
|
});
|
|
12
12
|
return loaded.sessions;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
function runWatchdogMailboxGc(sessions) {
|
|
15
15
|
const activeBoxIds = new Set(sessions.map(mailboxIdForActiveSession).filter((id) => Boolean(id)));
|
|
16
16
|
try {
|
|
17
17
|
gcMailbox(activeBoxIds);
|
|
@@ -24,7 +24,7 @@ export type WatchdogAgentDecider = (candidates: WatchdogCandidate[]) => Promise<
|
|
|
24
24
|
* `runTarget` is the resolved `agents run` target (a `watchdog` workflow or the
|
|
25
25
|
* bare agent id).
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
type WatchdogAgentRunner = (runTarget: string, prompt: string) => Promise<string>;
|
|
28
28
|
/**
|
|
29
29
|
* The default agent decider. `agent` is the harness the built-in prompt runs as
|
|
30
30
|
* (default 'claude'); `workflowCwd` is where a `watchdog` workflow override is
|
|
@@ -36,3 +36,4 @@ export declare function makeWatchdogAgentDecider(agent: string, opts?: {
|
|
|
36
36
|
workflowCwd?: string;
|
|
37
37
|
run?: WatchdogAgentRunner;
|
|
38
38
|
}): WatchdogAgentDecider;
|
|
39
|
+
export {};
|
|
@@ -33,7 +33,7 @@ export type StallStatus = {
|
|
|
33
33
|
kind: 'stalled';
|
|
34
34
|
stalledForMs: number;
|
|
35
35
|
};
|
|
36
|
-
|
|
36
|
+
interface ClassifyInput {
|
|
37
37
|
lastActivityMs: number;
|
|
38
38
|
nowMs: number;
|
|
39
39
|
lastNudgeMs: number | null;
|
|
@@ -47,3 +47,4 @@ export declare const WATCHDOG_SYSTEM_PROMPT = "You are the watchdog for AI codin
|
|
|
47
47
|
export declare function composePromptWithPlaybook(basePrompt: string, playbook: string): string;
|
|
48
48
|
export declare function renderWatchdogPrompt(candidates: WatchdogCandidate[], playbook?: string): string;
|
|
49
49
|
export declare function parseWatchdogResponse(stdout: string): Decision[];
|
|
50
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentId } from './types.js';
|
|
2
2
|
/** A central workflow bundle: its synced name and the source dir holding WORKFLOW.md. */
|
|
3
|
-
|
|
3
|
+
interface WorkflowSource {
|
|
4
4
|
name: string;
|
|
5
5
|
path: string;
|
|
6
6
|
}
|
|
@@ -8,7 +8,7 @@ export interface WorkflowSource {
|
|
|
8
8
|
* The complete on-disk contract for one harness's workflows. Every operation
|
|
9
9
|
* is expressed here so the engine below never branches on the agent id.
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
interface WorkflowTarget {
|
|
12
12
|
/** Noun used in ownership errors, e.g. "Kimi skill", "Grok workflow". */
|
|
13
13
|
readonly label: string;
|
|
14
14
|
/**
|
|
@@ -69,3 +69,4 @@ export declare function removeWorkflowFromVersion(agent: AgentId, version: strin
|
|
|
69
69
|
* (surfaced as `missing` at the name level, not here).
|
|
70
70
|
*/
|
|
71
71
|
export declare function workflowContentMatches(agent: AgentId, versionHome: string, name: string, sourcePath: string): boolean;
|
|
72
|
+
export {};
|
package/dist/lib/workflows.d.ts
CHANGED
|
@@ -115,7 +115,7 @@ export interface WorkflowFrontmatter {
|
|
|
115
115
|
forEach?: ForEachSpec;
|
|
116
116
|
}
|
|
117
117
|
/** A workflow found during repo discovery. */
|
|
118
|
-
|
|
118
|
+
interface DiscoveredWorkflow {
|
|
119
119
|
name: string;
|
|
120
120
|
path: string;
|
|
121
121
|
frontmatter: WorkflowFrontmatter;
|
|
@@ -184,7 +184,7 @@ export interface ForEachTeammate {
|
|
|
184
184
|
keep_if?: 'majority' | 'all' | 'any';
|
|
185
185
|
}
|
|
186
186
|
/** Result of expanding a `for_each` spec: the teammates plus cap accounting. */
|
|
187
|
-
|
|
187
|
+
interface ForEachExpansion {
|
|
188
188
|
teammates: ForEachTeammate[];
|
|
189
189
|
/** How many items the producer emitted (pre-cap). */
|
|
190
190
|
producedCount: number;
|
|
@@ -240,10 +240,6 @@ export declare function resolveAllowedSubagents(available: string[], allowedAgen
|
|
|
240
240
|
allowedStems: string[];
|
|
241
241
|
missing: string[];
|
|
242
242
|
};
|
|
243
|
-
/** The Claude tool an orchestrator uses to dispatch subagents. Must stay in a
|
|
244
|
-
* workflow's `--tools` allowlist whenever the workflow ships dispatchable
|
|
245
|
-
* subagents, or the orchestrator has no way to reach them. */
|
|
246
|
-
export declare const SUBAGENT_DISPATCH_TOOL = "Task";
|
|
247
243
|
/**
|
|
248
244
|
* Keep the subagent-dispatch tool (`Task`) in a `tools:`-restricted workflow's
|
|
249
245
|
* allowlist when the workflow actually ships subagents to dispatch.
|
|
@@ -329,7 +325,7 @@ export declare function listPluginWorkflowDirs(cwd?: string, pluginName?: string
|
|
|
329
325
|
*/
|
|
330
326
|
export declare function isBareWorkflowName(ref: string): boolean;
|
|
331
327
|
/** Parsed `agents run` workflow reference (docs/07-entrypoints). */
|
|
332
|
-
|
|
328
|
+
interface ParsedWorkflowRef {
|
|
333
329
|
/** Workflow directory name (WORKFLOW.md parent). */
|
|
334
330
|
name: string;
|
|
335
331
|
/**
|
|
@@ -404,3 +400,4 @@ export declare function iterWorkflowsCapableVersions(filter?: {
|
|
|
404
400
|
agent: AgentId;
|
|
405
401
|
version: string;
|
|
406
402
|
}>;
|
|
403
|
+
export {};
|
package/dist/lib/workflows.js
CHANGED
|
@@ -281,7 +281,7 @@ export function resolveAllowedSubagents(available, allowedAgents) {
|
|
|
281
281
|
/** The Claude tool an orchestrator uses to dispatch subagents. Must stay in a
|
|
282
282
|
* workflow's `--tools` allowlist whenever the workflow ships dispatchable
|
|
283
283
|
* subagents, or the orchestrator has no way to reach them. */
|
|
284
|
-
|
|
284
|
+
const SUBAGENT_DISPATCH_TOOL = 'Task';
|
|
285
285
|
/**
|
|
286
286
|
* Keep the subagent-dispatch tool (`Task`) in a `tools:`-restricted workflow's
|
|
287
287
|
* allowlist when the workflow actually ships subagents to dispatch.
|
|
@@ -52,24 +52,6 @@ export interface HeldWorktree {
|
|
|
52
52
|
* silently comparing against nothing.
|
|
53
53
|
*/
|
|
54
54
|
export declare function resolveDefaultRef(repoRoot: string): Promise<string | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Count commits with no patch-equivalent upstream. Returns -1 when the answer
|
|
57
|
-
* cannot be established, which the classifier treats as `merge-state-unknown`.
|
|
58
|
-
*
|
|
59
|
-
* Patch-id (`git cherry`), NOT ancestry, is load-bearing: this fleet
|
|
60
|
-
* rebase-merges, so a landed branch's SHAs are rewritten and
|
|
61
|
-
* `merge-base --is-ancestor` reports *not merged* for work that fully landed.
|
|
62
|
-
* It also subsumes the unpushed check — an unpushed commit has no upstream
|
|
63
|
-
* equivalent, so it surfaces as unmerged rather than needing a separate probe.
|
|
64
|
-
*/
|
|
65
|
-
export declare function countUnmergedCommits(worktreePath: string, defaultRef: string | null): Promise<number>;
|
|
66
|
-
/** One `git worktree list --porcelain` record. */
|
|
67
|
-
interface PorcelainEntry {
|
|
68
|
-
path: string;
|
|
69
|
-
branch: string | null;
|
|
70
|
-
detached: boolean;
|
|
71
|
-
}
|
|
72
|
-
export declare function parseWorktreePorcelain(out: string): PorcelainEntry[];
|
|
73
55
|
/**
|
|
74
56
|
* True when `child` is `parent` or sits beneath it, compared on path
|
|
75
57
|
* boundaries. A raw `startsWith` makes `.../fix-1103` look like it is inside
|
|
@@ -77,7 +59,7 @@ export declare function parseWorktreePorcelain(out: string): PorcelainEntry[];
|
|
|
77
59
|
*/
|
|
78
60
|
export declare function isInside(child: string, parent: string): boolean;
|
|
79
61
|
/** Everything the bucket decision depends on, gathered once. */
|
|
80
|
-
|
|
62
|
+
interface HeldFacts {
|
|
81
63
|
/** null for detached HEAD. */
|
|
82
64
|
branch: string | null;
|
|
83
65
|
/** `git status --porcelain` line count; -1 = could not read. */
|
|
@@ -107,16 +89,10 @@ export declare function classifyHeld(facts: HeldFacts): {
|
|
|
107
89
|
* a `.agents/worktrees` slug, so it is skipped implicitly.
|
|
108
90
|
*/
|
|
109
91
|
export declare function collectHeldWorktrees(repoRoot: string): Promise<HeldWorktree[]>;
|
|
110
|
-
/**
|
|
111
|
-
* Discover repo roots that own a `.agents/worktrees` container beneath
|
|
112
|
-
* `searchHome`. Mirrors the sweep's discovery: match directory SHAPE, prune the
|
|
113
|
-
* heavy dirs so a large home stays fast. Read-only.
|
|
114
|
-
*/
|
|
115
|
-
export declare function discoverWorktreeRepos(searchHome: string, maxDepth?: number): Promise<string[]>;
|
|
116
92
|
/** Discover + classify every held worktree beneath `searchHome`. Read-only. */
|
|
117
93
|
export declare function collectHeldWorktreesUnder(searchHome: string): Promise<HeldWorktree[]>;
|
|
118
94
|
/** A held set grouped by bucket, with the itemised entries kept. */
|
|
119
|
-
|
|
95
|
+
interface HeldSummary {
|
|
120
96
|
total: number;
|
|
121
97
|
buckets: Record<HeldBucket, HeldWorktree[]>;
|
|
122
98
|
}
|
|
@@ -128,7 +104,7 @@ export interface DeviceHeld {
|
|
|
128
104
|
held: HeldWorktree[];
|
|
129
105
|
}
|
|
130
106
|
/** A fleet-wide roll-up: every device's held worktrees, still bucketed. Pure. */
|
|
131
|
-
|
|
107
|
+
interface FleetHeldSummary extends HeldSummary {
|
|
132
108
|
devices: {
|
|
133
109
|
device: string;
|
|
134
110
|
total: number;
|
|
@@ -142,7 +118,7 @@ export interface FleetHeldSummary extends HeldSummary {
|
|
|
142
118
|
*/
|
|
143
119
|
export declare function aggregateHeld(perDevice: DeviceHeld[]): FleetHeldSummary;
|
|
144
120
|
/** Outcome of the safe recovery action on one stranded worktree. */
|
|
145
|
-
|
|
121
|
+
interface PushResult {
|
|
146
122
|
name: string;
|
|
147
123
|
branch: string | null;
|
|
148
124
|
pushed: boolean;
|
|
@@ -66,7 +66,7 @@ export async function resolveDefaultRef(repoRoot) {
|
|
|
66
66
|
* It also subsumes the unpushed check — an unpushed commit has no upstream
|
|
67
67
|
* equivalent, so it surfaces as unmerged rather than needing a separate probe.
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
async function countUnmergedCommits(worktreePath, defaultRef) {
|
|
70
70
|
if (!defaultRef)
|
|
71
71
|
return -1;
|
|
72
72
|
try {
|
|
@@ -79,7 +79,7 @@ export async function countUnmergedCommits(worktreePath, defaultRef) {
|
|
|
79
79
|
return -1;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
function parseWorktreePorcelain(out) {
|
|
83
83
|
const entries = [];
|
|
84
84
|
let cur = null;
|
|
85
85
|
for (const line of out.split('\n')) {
|
|
@@ -244,7 +244,7 @@ export async function collectHeldWorktrees(repoRoot) {
|
|
|
244
244
|
* `searchHome`. Mirrors the sweep's discovery: match directory SHAPE, prune the
|
|
245
245
|
* heavy dirs so a large home stays fast. Read-only.
|
|
246
246
|
*/
|
|
247
|
-
|
|
247
|
+
async function discoverWorktreeRepos(searchHome, maxDepth = 7) {
|
|
248
248
|
const PRUNE = new Set([
|
|
249
249
|
'node_modules', '.cache', '.npm', '.bun', 'Library', '.venv', 'dist', 'target', '.git',
|
|
250
250
|
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phnx-labs/agents-cli",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.114",
|
|
4
4
|
"description": "One CLI for all your AI coding agents - versions, config, cloud dispatch, sessions, and teams (now with first-class Grok Build CLI support)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -87,11 +87,9 @@
|
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@fontsource/inter": "^5.3.0",
|
|
89
89
|
"@fontsource/jetbrains-mono": "^5.3.0",
|
|
90
|
-
"@homebridge/node-pty-prebuilt-multiarch": "0.14.1",
|
|
91
90
|
"@inquirer/prompts": "8.5.2",
|
|
92
91
|
"@resvg/resvg-wasm": "^2.6.2",
|
|
93
92
|
"@types/proper-lockfile": "4.1.4",
|
|
94
|
-
"@xterm/headless": "6.0.0",
|
|
95
93
|
"@zed-industries/agent-client-protocol": "0.4.5",
|
|
96
94
|
"acorn": "8.18.0",
|
|
97
95
|
"aws4fetch": "1.0.20",
|
|
@@ -115,6 +113,7 @@
|
|
|
115
113
|
"yoga-wasm-web": "^0.3.3"
|
|
116
114
|
},
|
|
117
115
|
"devDependencies": {
|
|
116
|
+
"@homebridge/node-pty-prebuilt-multiarch": "0.14.1",
|
|
118
117
|
"@types/diff": "8.0.0",
|
|
119
118
|
"@types/marked-terminal": "6.1.1",
|
|
120
119
|
"@types/node": "26.1.0",
|