@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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agents projects prs <PROJECT>` — every OPEN pull request across a project's
|
|
3
|
+
* attached repositories, as one machine-readable envelope for AGI Menu.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists: `agents projects status`'s `openPrs` only carries the PRs the
|
|
6
|
+
* fleet's own SESSIONS opened (the session rollup), so a project's board of open
|
|
7
|
+
* PRs — drafts, other people's PRs, anything not tied to a live session — is
|
|
8
|
+
* invisible to it. This reads the truth straight from GitHub.
|
|
9
|
+
*
|
|
10
|
+
* Design constraints (see docs conventions + the contract in
|
|
11
|
+
* `.agents/scratch/contracts-status.json`):
|
|
12
|
+
* - Repos come ONLY from the ProjectDef's own attached slugs
|
|
13
|
+
* ({@link projectRepoSlugs}); `--repo` is refused unless it is one of them.
|
|
14
|
+
* - The list is REST + paginated (`gh api repos/{repo}/pulls?state=open
|
|
15
|
+
* --paginate`), includes drafts, and applies NO author filter — it is the
|
|
16
|
+
* whole open board, not this user's mergeable set. REST is the budget the
|
|
17
|
+
* fleet's GraphQL poll loops do not drain (PHNX-3501).
|
|
18
|
+
* - `checks` / `reviewDecision` are null in the list; `--number N` enriches
|
|
19
|
+
* exactly that one PR against its live head SHA (checks via REST
|
|
20
|
+
* {@link rollupForSha}, reviewDecision via a single lazy `gh pr view`).
|
|
21
|
+
* - A per-repo fetch failure is reported as `repositories[].error` and flips
|
|
22
|
+
* `partial` — it is NEVER relabeled as "zero open PRs".
|
|
23
|
+
*/
|
|
24
|
+
import { ghExec, canonicalizeRepo, projectRepoSlugs } from './pr-mergeable.js';
|
|
25
|
+
import { rollupForSha } from './rest.js';
|
|
26
|
+
/** The jq projection that flattens a REST PR object into {@link ProjectPr}'s scalars. */
|
|
27
|
+
const PR_JQ = '{number, title, url: .html_url, isDraft: (.draft // false), ' +
|
|
28
|
+
'state: (.state // "" | ascii_upcase), updatedAt: (.updated_at // ""), ' +
|
|
29
|
+
'login: (.user.login // ""), avatarUrl: (.user.avatar_url // ""), ' +
|
|
30
|
+
'headRefName: (.head.ref // ""), baseRefName: (.base.ref // ""), ' +
|
|
31
|
+
'headSha: (.head.sha // ""), body: (.body // "")}';
|
|
32
|
+
/** Parse newline-delimited JSON (gh `--jq` streams one object per line/page). */
|
|
33
|
+
function parseNdjson(out) {
|
|
34
|
+
const rows = [];
|
|
35
|
+
for (const line of out.split('\n')) {
|
|
36
|
+
const t = line.trim();
|
|
37
|
+
if (!t)
|
|
38
|
+
continue;
|
|
39
|
+
rows.push(JSON.parse(t));
|
|
40
|
+
}
|
|
41
|
+
return rows;
|
|
42
|
+
}
|
|
43
|
+
/** Build a {@link ProjectPr} from the flattened jq row. checks/reviewDecision start null. */
|
|
44
|
+
export function rowToProjectPr(row) {
|
|
45
|
+
return {
|
|
46
|
+
number: Number(row.number),
|
|
47
|
+
title: String(row.title ?? ''),
|
|
48
|
+
url: String(row.url ?? ''),
|
|
49
|
+
isDraft: Boolean(row.isDraft),
|
|
50
|
+
state: String(row.state ?? ''),
|
|
51
|
+
updatedAt: String(row.updatedAt ?? ''),
|
|
52
|
+
author: { login: String(row.login ?? ''), avatarUrl: String(row.avatarUrl ?? '') },
|
|
53
|
+
headRefName: String(row.headRefName ?? ''),
|
|
54
|
+
baseRefName: String(row.baseRefName ?? ''),
|
|
55
|
+
headSha: String(row.headSha ?? ''),
|
|
56
|
+
body: String(row.body ?? ''),
|
|
57
|
+
checks: null,
|
|
58
|
+
reviewDecision: null,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Every OPEN PR for one repo, over REST, fully paginated, drafts included, no
|
|
63
|
+
* author filter. `--paginate` follows Link headers; `--jq` streams one flattened
|
|
64
|
+
* object per line so a multi-page result stays parseable.
|
|
65
|
+
*/
|
|
66
|
+
export async function listOpenPrs(repo, gh = ghExec) {
|
|
67
|
+
const out = await gh([
|
|
68
|
+
'api',
|
|
69
|
+
`repos/${repo}/pulls?state=open&per_page=100`,
|
|
70
|
+
'--paginate',
|
|
71
|
+
'--jq',
|
|
72
|
+
`.[] | ${PR_JQ}`,
|
|
73
|
+
]);
|
|
74
|
+
return parseNdjson(out).map(rowToProjectPr);
|
|
75
|
+
}
|
|
76
|
+
/** One PR by number, over REST (`GET repos/{repo}/pulls/{n}`). Throws if it is gone. */
|
|
77
|
+
export async function fetchOnePr(repo, number, gh = ghExec) {
|
|
78
|
+
const out = await gh(['api', `repos/${repo}/pulls/${number}`, '--jq', PR_JQ]);
|
|
79
|
+
const rows = parseNdjson(out);
|
|
80
|
+
if (rows.length === 0)
|
|
81
|
+
throw new Error(`no PR ${repo}#${number}`);
|
|
82
|
+
return rowToProjectPr(rows[0]);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* GitHub's computed review decision AND the PR's current head oid, from ONE lazy
|
|
86
|
+
* `gh pr view` (GraphQL). reviewDecision is deliberately NOT REST-derived: it is
|
|
87
|
+
* a branch-protection / CODEOWNERS decision REST cannot compute, and
|
|
88
|
+
* approximating it could mislead a merge decision (PHNX-3501 note). `headRefOid`
|
|
89
|
+
* rides the same call so the checks and the review verdict can be anchored to the
|
|
90
|
+
* SAME head — a PR that advanced between the REST read and this call would
|
|
91
|
+
* otherwise pair a stale check rollup with a current review. One call per
|
|
92
|
+
* `--number`, never a poll loop, so it does not drain the shared GraphQL budget.
|
|
93
|
+
*/
|
|
94
|
+
export async function fetchReviewAndHead(repo, number, gh = ghExec) {
|
|
95
|
+
const out = (await gh([
|
|
96
|
+
'pr', 'view', String(number), '--repo', repo, '--json', 'reviewDecision,headRefOid',
|
|
97
|
+
])).trim();
|
|
98
|
+
const parsed = out ? JSON.parse(out) : {};
|
|
99
|
+
return {
|
|
100
|
+
reviewDecision: parsed.reviewDecision || null,
|
|
101
|
+
headRefOid: parsed.headRefOid || null,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Enrich one PR with its checks + reviewDecision, both anchored to the SAME head.
|
|
106
|
+
* `gh pr view` gives the authoritative current head oid; the check rollup is run
|
|
107
|
+
* against THAT (not the possibly-staler REST head SHA), and `headSha` is updated
|
|
108
|
+
* to match, so checks and reviewDecision can never describe two different heads.
|
|
109
|
+
*/
|
|
110
|
+
export async function enrichPr(repo, pr, gh = ghExec) {
|
|
111
|
+
const { reviewDecision, headRefOid } = await fetchReviewAndHead(repo, pr.number, gh);
|
|
112
|
+
const head = headRefOid || pr.headSha;
|
|
113
|
+
const checks = await rollupForSha(repo, head, gh);
|
|
114
|
+
return { ...pr, headSha: head, checks, reviewDecision };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Resolve which repositories a run targets, restricted to the project's own
|
|
118
|
+
* attached repos. Slugs are canonicalized (a renamed repo lists nothing under
|
|
119
|
+
* its old name — `phnx-labs/agents-cli` → `phnx-labs/agi-cli`). A `--repo` that
|
|
120
|
+
* is not one of the project's attached repos (raw or canonical) is refused.
|
|
121
|
+
*/
|
|
122
|
+
export async function resolveTargetSlugs(def, repo, gh) {
|
|
123
|
+
const raw = projectRepoSlugs([def]);
|
|
124
|
+
// Canonicalize CONCURRENTLY — each `gh repo view` can take up to gh's 30s
|
|
125
|
+
// timeout, so a sequential walk of N repos would stack N×30s and blow past a
|
|
126
|
+
// native caller's bounded deadline. Repo count per project is small.
|
|
127
|
+
const canonPairs = await Promise.all(raw.map(async (slug) => [slug, await canonicalizeRepo(slug, gh)]));
|
|
128
|
+
const canon = new Map(canonPairs);
|
|
129
|
+
const canonical = [...new Set(canon.values())];
|
|
130
|
+
if (!repo)
|
|
131
|
+
return canonical;
|
|
132
|
+
const requested = await canonicalizeRepo(repo, gh);
|
|
133
|
+
const attached = raw.includes(repo) ||
|
|
134
|
+
canonical.includes(requested) ||
|
|
135
|
+
[...canon.keys()].some((k) => k === repo);
|
|
136
|
+
if (!attached) {
|
|
137
|
+
const list = raw.length ? raw.join(', ') : '(none)';
|
|
138
|
+
throw new Error(`Repo "${repo}" is not attached to project "${def.name}". Attached repos: ${list}.`);
|
|
139
|
+
}
|
|
140
|
+
return [requested];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Build the full envelope. `number` (which the command requires alongside
|
|
144
|
+
* `repo`) fetches and enriches exactly that one PR; otherwise every target
|
|
145
|
+
* repo's open PRs are listed with checks/reviewDecision left null.
|
|
146
|
+
*/
|
|
147
|
+
export async function buildProjectPrs(def, opts = {}, gh = ghExec) {
|
|
148
|
+
const project = { name: def.name, linearProjectId: def.linear?.projectId ?? null };
|
|
149
|
+
const slugs = await resolveTargetSlugs(def, opts.repo, gh);
|
|
150
|
+
// Fetch repos in PARALLEL so a native caller's overall deadline scales with the
|
|
151
|
+
// slowest repo, not the sum — a serial multi-repo walk of 30s gh calls can blow
|
|
152
|
+
// past a bounded caller timeout and lose the whole result. Repo count is small
|
|
153
|
+
// (a project's attached repos), so this is a bounded fan-out, not unbounded.
|
|
154
|
+
const repositories = await Promise.all(slugs.map(async (slug) => {
|
|
155
|
+
try {
|
|
156
|
+
let pullRequests;
|
|
157
|
+
if (opts.number !== undefined) {
|
|
158
|
+
const pr = await fetchOnePr(slug, opts.number, gh);
|
|
159
|
+
pullRequests = [await enrichPr(slug, pr, gh)];
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
pullRequests = await listOpenPrs(slug, gh);
|
|
163
|
+
}
|
|
164
|
+
return { slug, pullRequests, error: null };
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
// A fetch failure is reported, never relabeled as zero open PRs.
|
|
168
|
+
return { slug, pullRequests: [], error: err instanceof Error ? err.message : String(err) };
|
|
169
|
+
}
|
|
170
|
+
}));
|
|
171
|
+
const partial = repositories.some((r) => r.error !== null);
|
|
172
|
+
return { project, repositories, partial };
|
|
173
|
+
}
|
|
@@ -27,7 +27,7 @@ export interface RollupItem extends StatusCheck {
|
|
|
27
27
|
link?: string;
|
|
28
28
|
}
|
|
29
29
|
/** PR head identity — the SHA every check query must anchor to. */
|
|
30
|
-
|
|
30
|
+
interface PrHead {
|
|
31
31
|
number: number;
|
|
32
32
|
sha: string;
|
|
33
33
|
}
|
|
@@ -62,3 +62,4 @@ export declare function rollupForSha(repo: string, sha: string, gh?: GhExec): Pr
|
|
|
62
62
|
export declare function pendingCheckSuites(repo: string, sha: string, gh?: GhExec): Promise<number>;
|
|
63
63
|
/** True when gh stderr is the rate-limit outcome the shim should switch to REST on. */
|
|
64
64
|
export declare function isRateLimitError(stderr: string): boolean;
|
|
65
|
+
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { AgentId } from '../types.js';
|
|
2
|
-
|
|
2
|
+
interface ResolvedConfigVersion {
|
|
3
3
|
/** The version to pin, or null when unresolved / not installed. */
|
|
4
4
|
version: string | null;
|
|
5
5
|
/** The version home for that version, or null. */
|
|
6
6
|
versionHome: string | null;
|
|
7
7
|
}
|
|
8
8
|
export declare function resolveConfigVersion(agent: AgentId, cwd: string, optionsVersion?: string): ResolvedConfigVersion;
|
|
9
|
+
export {};
|
|
@@ -13,16 +13,16 @@
|
|
|
13
13
|
* working until T4 folds connect into `accounts add`.
|
|
14
14
|
*/
|
|
15
15
|
import type { AgentId } from './types.js';
|
|
16
|
-
|
|
16
|
+
type HarnessIdentityKind = 'strong' | 'email' | 'opaque';
|
|
17
17
|
/**
|
|
18
18
|
* Durable worker credential, or `none` when the harness must log in per box.
|
|
19
19
|
* Codex is both: an API key (portable, bills the API) OR a per-device
|
|
20
20
|
* ChatGPT-plan device-auth login (the plan seat; never stored in the reserved
|
|
21
21
|
* store because it is a rotating session).
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
type HarnessWorkerKind = 'setup-token' | 'none' | `api-key:${string}` | `per-device${'' | `:${string}`}`;
|
|
24
|
+
type HarnessWorker = HarnessWorkerKind | HarnessWorkerKind[];
|
|
25
|
+
interface HarnessAuthCapability {
|
|
26
26
|
/** argv after the harness binary to start native login, or null when there is no finite login command. */
|
|
27
27
|
login: string[] | null;
|
|
28
28
|
/** argv to probe login status, or null when the CLI has no status command. */
|
|
@@ -59,3 +59,4 @@ export interface LoginInvocation {
|
|
|
59
59
|
hint?: string;
|
|
60
60
|
}
|
|
61
61
|
export declare const LOGIN_INVOCATIONS: Partial<Record<AgentId, LoginInvocation>>;
|
|
62
|
+
export {};
|
|
@@ -40,7 +40,7 @@ export declare const CONNECTION_TEST_PROMPT = "say alive in one word";
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function classifyConnectionOutput(exitCode: number | null, output: string): ConnectionTestResult;
|
|
42
42
|
/** Options for {@link runHarnessConnectionTest}. */
|
|
43
|
-
|
|
43
|
+
interface ConnectionTestOptions {
|
|
44
44
|
/** Agent-side timeout passed to `agents run --timeout`. Default `60s`. */
|
|
45
45
|
timeout?: string;
|
|
46
46
|
/** Hard wall-clock cap (ms) on the child, above the agent timeout. Default 90s. */
|
|
@@ -55,3 +55,4 @@ export interface ConnectionTestOptions {
|
|
|
55
55
|
* (the request hung).
|
|
56
56
|
*/
|
|
57
57
|
export declare function runHarnessConnectionTest(name: string, opts?: ConnectionTestOptions): Promise<ConnectionTestResult>;
|
|
58
|
+
export {};
|
package/dist/lib/heal.d.ts
CHANGED
|
@@ -69,8 +69,8 @@ export interface HealResult {
|
|
|
69
69
|
refreshedPlugins: PluginRefreshResult[];
|
|
70
70
|
skippedPlugins: PluginRefreshSkip[];
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
/** 'full' (
|
|
72
|
+
interface HealOptions {
|
|
73
|
+
/** 'full' (agents sync): fix drift + refresh unknown-baseline plugins.
|
|
74
74
|
* 'safe' (daemon): missing + invalid-manifest + unmodified refresh only. */
|
|
75
75
|
mode: 'full' | 'safe';
|
|
76
76
|
/** Resolution cwd. Defaults to the home dir so no project layer is ever
|
|
@@ -85,27 +85,10 @@ export interface HealOptions {
|
|
|
85
85
|
}
|
|
86
86
|
/** True when a heal pass made (or would make) any change at all. */
|
|
87
87
|
export declare function healChangedAnything(r: HealResult): boolean;
|
|
88
|
-
/** One-line summary of a heal pass for daemon logs. */
|
|
89
|
-
export declare function summarizeHeal(r: HealResult): string;
|
|
90
|
-
/**
|
|
91
|
-
* Fire a branded desktop notification when a background heal did something
|
|
92
|
-
* noteworthy. Routed through the MenubarHelper companion (notify-desktop.ts) so
|
|
93
|
-
* it carries the agents-cli mark; clicking opens the runs folder
|
|
94
|
-
* (~/.agents/.history/runs, via the `routines:list` action the companion
|
|
95
|
-
* understands). Best-effort — a missing
|
|
96
|
-
* notifier or no display is swallowed. Silent when the pass auto-fixed everything
|
|
97
|
-
* and nothing needs the operator (no point pinging them for routine self-healing).
|
|
98
|
-
*/
|
|
99
|
-
export declare function notifyHeal(r: HealResult): void;
|
|
100
|
-
/**
|
|
101
|
-
* Strip Claude-invalid bare-name `skills`/`commands` fields from every central
|
|
102
|
-
* plugin's SOURCE plugin.json. Unambiguously safe (Claude auto-discovers both
|
|
103
|
-
* from their directories) and the precondition for those plugins loading at all.
|
|
104
|
-
*/
|
|
105
|
-
export declare function repairCentralPluginManifests(dryRun?: boolean): ManifestRepairResult[];
|
|
106
88
|
/**
|
|
107
89
|
* Run a heal pass. Repairs the central plugin layer once (manifest + stale
|
|
108
90
|
* refresh), then reconciles every targeted (agent, version) home against its
|
|
109
91
|
* live diff. Returns a full account of what changed (or would, under dryRun).
|
|
110
92
|
*/
|
|
111
93
|
export declare function heal(opts: HealOptions): Promise<HealResult>;
|
|
94
|
+
export {};
|
package/dist/lib/heal.js
CHANGED
|
@@ -31,7 +31,6 @@ import { repairPluginManifestFile } from './plugins/plugin-marketplace.js';
|
|
|
31
31
|
import * as fs from 'fs';
|
|
32
32
|
import * as path from 'path';
|
|
33
33
|
import * as os from 'os';
|
|
34
|
-
import { notifyDesktop } from './menubar/notify-desktop.js';
|
|
35
34
|
// ─── diff → selection mapping ────────────────────────────────────────────────
|
|
36
35
|
// Which ResourceSelection key each healable diff kind writes through. `rules`
|
|
37
36
|
// re-syncs via the whole-memory channel (not name-scoped); `promptcuts` is not
|
|
@@ -55,49 +54,13 @@ export function healChangedAnything(r) {
|
|
|
55
54
|
r.repairedManifests.length > 0 ||
|
|
56
55
|
r.refreshedPlugins.length > 0);
|
|
57
56
|
}
|
|
58
|
-
/** One-line summary of a heal pass for daemon logs. */
|
|
59
|
-
export function summarizeHeal(r) {
|
|
60
|
-
const parts = [];
|
|
61
|
-
const healed = totalHealed(r);
|
|
62
|
-
if (healed > 0)
|
|
63
|
-
parts.push(`${healed} resource(s) healed`);
|
|
64
|
-
if (r.repairedManifests.length > 0)
|
|
65
|
-
parts.push(`${r.repairedManifests.length} manifest(s) repaired`);
|
|
66
|
-
if (r.refreshedPlugins.length > 0)
|
|
67
|
-
parts.push(`${r.refreshedPlugins.length} plugin(s) refreshed`);
|
|
68
|
-
if (r.skippedPlugins.length > 0)
|
|
69
|
-
parts.push(`${r.skippedPlugins.length} plugin(s) need attention`);
|
|
70
|
-
return parts.length > 0 ? parts.join(', ') : 'nothing to heal';
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Fire a branded desktop notification when a background heal did something
|
|
74
|
-
* noteworthy. Routed through the MenubarHelper companion (notify-desktop.ts) so
|
|
75
|
-
* it carries the agents-cli mark; clicking opens the runs folder
|
|
76
|
-
* (~/.agents/.history/runs, via the `routines:list` action the companion
|
|
77
|
-
* understands). Best-effort — a missing
|
|
78
|
-
* notifier or no display is swallowed. Silent when the pass auto-fixed everything
|
|
79
|
-
* and nothing needs the operator (no point pinging them for routine self-healing).
|
|
80
|
-
*/
|
|
81
|
-
export function notifyHeal(r) {
|
|
82
|
-
const needsAttention = r.skippedPlugins.length;
|
|
83
|
-
const healed = totalHealed(r) + r.repairedManifests.length + r.refreshedPlugins.length;
|
|
84
|
-
if (needsAttention === 0 && healed === 0)
|
|
85
|
-
return;
|
|
86
|
-
const title = needsAttention > 0
|
|
87
|
-
? `${needsAttention} plugin${needsAttention === 1 ? '' : 's'} need attention`
|
|
88
|
-
: 'agents: auto-healed config gaps';
|
|
89
|
-
const body = needsAttention > 0
|
|
90
|
-
? `${summarizeHeal(r)}. Run: agents sync`
|
|
91
|
-
: summarizeHeal(r);
|
|
92
|
-
notifyDesktop({ title, body, action: 'routines:list' });
|
|
93
|
-
}
|
|
94
57
|
// ─── central plugin layer (version-independent, runs once per heal) ──────────
|
|
95
58
|
/**
|
|
96
59
|
* Strip Claude-invalid bare-name `skills`/`commands` fields from every central
|
|
97
60
|
* plugin's SOURCE plugin.json. Unambiguously safe (Claude auto-discovers both
|
|
98
61
|
* from their directories) and the precondition for those plugins loading at all.
|
|
99
62
|
*/
|
|
100
|
-
|
|
63
|
+
function repairCentralPluginManifests(dryRun = false) {
|
|
101
64
|
const out = [];
|
|
102
65
|
for (const p of discoverPlugins()) {
|
|
103
66
|
const manifestPath = path.join(p.root, '.claude-plugin', 'plugin.json');
|
|
@@ -265,7 +228,7 @@ export async function heal(opts) {
|
|
|
265
228
|
// unattended from the daemon (~30s after start, then every ~6h) — a sweep that
|
|
266
229
|
// walked into an isolated home would quietly refill it with shared commands,
|
|
267
230
|
// skills, hooks, MCP config and permissions. Explicitly NAMED versions
|
|
268
|
-
// (`agents
|
|
231
|
+
// (`agents sync <agent>@<version>`) are honoured as-is: naming the
|
|
269
232
|
// version is the operator's consent.
|
|
270
233
|
const sweep = (a) => listInstalledVersions(a).filter((v) => !isVersionIsolated(a, v));
|
|
271
234
|
const targets = opts.agent
|
package/dist/lib/help.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Command } from 'commander';
|
|
8
8
|
/** Description of a named command group rendered as its own section in help output. */
|
|
9
|
-
|
|
9
|
+
interface CommandGroup {
|
|
10
10
|
/** Section heading, e.g. 'Bundle commands'. */
|
|
11
11
|
title: string;
|
|
12
12
|
/** Subcommand names (in desired display order) that belong to this group. */
|
|
@@ -28,7 +28,7 @@ export declare const FRONT_DOOR_COMMAND_GROUPS: readonly CommandGroup[];
|
|
|
28
28
|
/** Mark the root program so its help only renders front-door groups + a pointer. */
|
|
29
29
|
export declare function setCompactRootHelp(program: Command): void;
|
|
30
30
|
/** Examples + Notes blocks attached to a command via setHelpSections. */
|
|
31
|
-
|
|
31
|
+
interface HelpSections {
|
|
32
32
|
examples?: string;
|
|
33
33
|
notes?: string;
|
|
34
34
|
}
|
|
@@ -45,3 +45,4 @@ export declare function setHelpSections(cmd: Command, sections: HelpSections): v
|
|
|
45
45
|
export declare function getHelpSections(cmd: Command): Readonly<HelpSections>;
|
|
46
46
|
/** Apply standardized help formatting to the root command and all subcommands. */
|
|
47
47
|
export declare function applyGlobalHelpConventions(root: Command): void;
|
|
48
|
+
export {};
|
|
@@ -81,10 +81,6 @@ export declare function helperAssetUrls(spec: HelperSpec, version: string): {
|
|
|
81
81
|
/** Extract `TeamIdentifier=XXXX` from `codesign -dv --verbose=4` output (which is
|
|
82
82
|
* emitted on stderr). Returns null when absent (ad-hoc / unsigned). */
|
|
83
83
|
export declare function parseTeamId(codesignInfo: string): string | null;
|
|
84
|
-
/** Read the bundle's designated requirement string (`codesign -d --requirements -`).
|
|
85
|
-
* codesign writes it to stdout, but capture both streams so a diagnostic on
|
|
86
|
-
* stderr can never make the pin-check read empty and falsely pass. */
|
|
87
|
-
export declare function readDesignatedRequirement(appPath: string): string;
|
|
88
84
|
/**
|
|
89
85
|
* Pure predicate (no I/O) behind the DR pin: does the requirement string pin
|
|
90
86
|
* BOTH the expected CFBundleIdentifier and the Developer ID Team? Returns null
|
|
@@ -94,14 +90,6 @@ export declare function readDesignatedRequirement(appPath: string): string;
|
|
|
94
90
|
* + team substring check against the same requirement string).
|
|
95
91
|
*/
|
|
96
92
|
export declare function checkDesignatedRequirement(req: string, bundleId: string, teamId: string): string | null;
|
|
97
|
-
/**
|
|
98
|
-
* Verify the bundle's designated requirement pins the expected CFBundleIdentifier
|
|
99
|
-
* AND Developer ID Team. macOS re-validates each new version against this stored
|
|
100
|
-
* requirement to keep an Accessibility grant alive across upgrades; a downloaded
|
|
101
|
-
* bundle whose DR drops either pin would silently revoke that grant on the next
|
|
102
|
-
* paste, so refuse it.
|
|
103
|
-
*/
|
|
104
|
-
export declare function verifyDesignatedRequirement(appPath: string, bundleId: string, teamId: string): void;
|
|
105
93
|
/**
|
|
106
94
|
* Verify a helper `.app` bundle is intact, signed by the expected Developer ID
|
|
107
95
|
* Team, (for the menu-bar helper) pinned by its designated requirement, and
|
|
@@ -73,7 +73,7 @@ export function parseTeamId(codesignInfo) {
|
|
|
73
73
|
/** Read the bundle's designated requirement string (`codesign -d --requirements -`).
|
|
74
74
|
* codesign writes it to stdout, but capture both streams so a diagnostic on
|
|
75
75
|
* stderr can never make the pin-check read empty and falsely pass. */
|
|
76
|
-
|
|
76
|
+
function readDesignatedRequirement(appPath) {
|
|
77
77
|
const r = spawnSync('/usr/bin/codesign', ['-d', '--requirements', '-', appPath], { encoding: 'utf8' });
|
|
78
78
|
return `${r.stdout ?? ''}${r.stderr ?? ''}`;
|
|
79
79
|
}
|
|
@@ -105,7 +105,7 @@ export function checkDesignatedRequirement(req, bundleId, teamId) {
|
|
|
105
105
|
* bundle whose DR drops either pin would silently revoke that grant on the next
|
|
106
106
|
* paste, so refuse it.
|
|
107
107
|
*/
|
|
108
|
-
|
|
108
|
+
function verifyDesignatedRequirement(appPath, bundleId, teamId) {
|
|
109
109
|
const err = checkDesignatedRequirement(readDesignatedRequirement(appPath), bundleId, teamId);
|
|
110
110
|
if (err)
|
|
111
111
|
throw new Error(err);
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
/** The helpers that have their own release train. */
|
|
30
30
|
export type HelperName = 'menubar';
|
|
31
31
|
/** One helper's release identity. */
|
|
32
|
-
|
|
32
|
+
interface HelperRelease {
|
|
33
33
|
/** Tag prefix — the release is `<tagPrefix>/v<version>`. */
|
|
34
34
|
tagPrefix: string;
|
|
35
35
|
/**
|
|
@@ -57,3 +57,4 @@ export declare const HELPER_RELEASES: Readonly<Record<HelperName, HelperRelease>
|
|
|
57
57
|
export declare function helperTag(helper: HelperName, version: string): string;
|
|
58
58
|
/** The floor build for one helper — the version used when nothing resolves higher. */
|
|
59
59
|
export declare function helperFloor(helper: HelperName): string;
|
|
60
|
+
export {};
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
* it would claim a distribution responsibility agents-cli no longer has.
|
|
42
42
|
*/
|
|
43
43
|
export const HELPER_RELEASES = {
|
|
44
|
-
menubar: { tagPrefix: 'menubar', floor: '1.
|
|
44
|
+
menubar: { tagPrefix: 'menubar', floor: '1.4.0' },
|
|
45
45
|
};
|
|
46
46
|
/** The release tag for one helper at one version, e.g. `menubar/v1.0.0`. */
|
|
47
47
|
export function helperTag(helper, version) {
|
|
@@ -29,7 +29,7 @@ export declare function toPortableCommand(absPath: string, home?: string, sep?:
|
|
|
29
29
|
*/
|
|
30
30
|
export declare function deduplicateVersionHookCommands(commands: string[], activeVersionHome: string): string[];
|
|
31
31
|
import type { AgentId, HookCacheConfig, HookMatches, InstalledHook, ManifestHook } from '../types.js';
|
|
32
|
-
|
|
32
|
+
type HookEntry = {
|
|
33
33
|
name: string;
|
|
34
34
|
scriptPath: string;
|
|
35
35
|
dataFile?: string;
|
|
@@ -64,15 +64,6 @@ export declare function inspectDuplicateVersionHooks(cwd?: string): DuplicateVer
|
|
|
64
64
|
* `foo.yaml`. On basename collision, the top-level file wins over a nested one.
|
|
65
65
|
*/
|
|
66
66
|
export declare function listHookEntriesFromDir(dir: string): HookEntry[];
|
|
67
|
-
/**
|
|
68
|
-
* Check if a hook exists for an agent.
|
|
69
|
-
*/
|
|
70
|
-
export declare function hookExists(agentId: AgentId, hookName: string): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Check if installed hook content matches source hook content.
|
|
73
|
-
* Compares both script file and data file (if present).
|
|
74
|
-
*/
|
|
75
|
-
export declare function hookContentMatches(agentId: AgentId, hookName: string, sourceEntry: HookEntry): boolean;
|
|
76
67
|
/**
|
|
77
68
|
* Hooks dir for an agent under an arbitrary home (version home or effective
|
|
78
69
|
* home). An agent whose `hooksDir` is configured absolute under `$HOME` (grok,
|
|
@@ -111,7 +102,7 @@ export interface HookWiringIssue {
|
|
|
111
102
|
command: string;
|
|
112
103
|
}
|
|
113
104
|
/** A generated, agents-managed hook wrapper and the inputs needed to recreate it. */
|
|
114
|
-
|
|
105
|
+
interface ManagedHookRuntimeArtifact {
|
|
115
106
|
agent: AgentId;
|
|
116
107
|
version: string;
|
|
117
108
|
name: string;
|
|
@@ -171,7 +162,7 @@ export interface HookRuntimeRepairAttempt {
|
|
|
171
162
|
}
|
|
172
163
|
/**
|
|
173
164
|
* Result of one bounded repair pass over agents-managed generated hook shims.
|
|
174
|
-
* Shared by self-heal and
|
|
165
|
+
* Shared by self-heal and agents sync; additive types for the doctor track.
|
|
175
166
|
*/
|
|
176
167
|
export interface HookRuntimeRepairReport {
|
|
177
168
|
/** Broken artifacts found before any write (inspect-only snapshot). */
|
|
@@ -184,7 +175,7 @@ export interface HookRuntimeRepairReport {
|
|
|
184
175
|
/** Human-readable lines for CheckResult.needsAttention — stable wording. */
|
|
185
176
|
needsAttention: string[];
|
|
186
177
|
}
|
|
187
|
-
|
|
178
|
+
interface RepairManagedHookRuntimeOptions {
|
|
188
179
|
/** Detect only — never write. Default false. */
|
|
189
180
|
dryRun?: boolean;
|
|
190
181
|
filter?: {
|
|
@@ -193,19 +184,6 @@ export interface RepairManagedHookRuntimeOptions {
|
|
|
193
184
|
};
|
|
194
185
|
platform?: NodeJS.Platform;
|
|
195
186
|
}
|
|
196
|
-
/**
|
|
197
|
-
* Regenerate one known-broken wrapper and prove the result is usable. Callers
|
|
198
|
-
* provide a snapshot from inspectBrokenManagedHookRuntimeArtifacts; this never
|
|
199
|
-
* loops or retries and returns a stable error for the current pass.
|
|
200
|
-
*
|
|
201
|
-
* Generation is delegated to generateHookShim (idempotent — preserves mtime when
|
|
202
|
-
* content already matches). This path never calls registerHooksToSettings,
|
|
203
|
-
* installHooks, or any sync routine.
|
|
204
|
-
*/
|
|
205
|
-
export declare function repairManagedHookRuntimeArtifact(artifact: ManagedHookRuntimeArtifact, platform?: NodeJS.Platform): {
|
|
206
|
-
repaired: boolean;
|
|
207
|
-
reason?: string;
|
|
208
|
-
};
|
|
209
187
|
/**
|
|
210
188
|
* Bounded repair of all broken agents-managed generated hook shims.
|
|
211
189
|
*
|
|
@@ -234,7 +212,7 @@ export declare function repairManagedHookRuntimeArtifacts(opts?: RepairManagedHo
|
|
|
234
212
|
* resolveHookCommand performs, so it never mutates the version home.
|
|
235
213
|
*/
|
|
236
214
|
export declare function checkVersionHookWiring(agent: AgentId, version: string): HookWiringReport;
|
|
237
|
-
|
|
215
|
+
interface VersionHookDiff {
|
|
238
216
|
agent: AgentId;
|
|
239
217
|
version: string;
|
|
240
218
|
toAdd: string[];
|
|
@@ -246,13 +224,6 @@ export interface VersionHookDiff {
|
|
|
246
224
|
* Compare a version home's hooks against central. Returns the reconciliation diff.
|
|
247
225
|
*/
|
|
248
226
|
export declare function diffVersionHooks(agent: AgentId, version: string): VersionHookDiff;
|
|
249
|
-
/**
|
|
250
|
-
* Install a single hook from central into a specific version home.
|
|
251
|
-
*/
|
|
252
|
-
export declare function installHookToVersion(agent: AgentId, version: string, hookName: string): {
|
|
253
|
-
success: boolean;
|
|
254
|
-
error?: string;
|
|
255
|
-
};
|
|
256
227
|
/**
|
|
257
228
|
* Remove a single hook (script + data file) from a specific version home.
|
|
258
229
|
* Soft-deletes to ~/.agents/.trash/hooks/.
|
|
@@ -285,10 +256,6 @@ export declare function getHookInfo(name: string): {
|
|
|
285
256
|
content: string;
|
|
286
257
|
} | null;
|
|
287
258
|
export declare function discoverHooksFromRepo(repoPath: string): string[];
|
|
288
|
-
/**
|
|
289
|
-
* Get the source hook entry from repo.
|
|
290
|
-
*/
|
|
291
|
-
export declare function getSourceHookEntry(repoPath: string, hookName: string): HookEntry | null;
|
|
292
259
|
/**
|
|
293
260
|
* Install hooks to central ~/.agents/hooks/ directory.
|
|
294
261
|
* Shims will symlink this to per-agent directories for synced agents.
|
|
@@ -353,15 +320,6 @@ export declare function selectHookManifest(manifest: Record<string, ManifestHook
|
|
|
353
320
|
* installed hook names and the source hook script paths.
|
|
354
321
|
*/
|
|
355
322
|
export declare function unmanagedHookNames(installedHookNames: string[], sourceHookScripts: string[]): string[];
|
|
356
|
-
/**
|
|
357
|
-
* Every hook script path across the resolved SOURCE roots — user
|
|
358
|
-
* (`~/.agents/hooks`), system (`~/.agents/.system/hooks`), and each enabled
|
|
359
|
-
* extra repo's `hooks/` — grouped the same way sync materializes them
|
|
360
|
-
* ({@link listHookEntriesFromDir}, which also descends one-level event-group
|
|
361
|
-
* dirs). This is the set an installed hook must be absent from to count as an
|
|
362
|
-
* orphan.
|
|
363
|
-
*/
|
|
364
|
-
export declare function listResolvedSourceHookScripts(): string[];
|
|
365
323
|
/**
|
|
366
324
|
* The orphan hooks (see {@link unmanagedHookNames}) sitting in one version home:
|
|
367
325
|
* installed hook files whose name matches no file in any configured source root.
|
|
@@ -397,7 +355,7 @@ export declare function computeCodexHookTrustHash(eventKeyLabel: string, command
|
|
|
397
355
|
* global shims. The materializer sets this so materialization stays isolated
|
|
398
356
|
* (PHNX-3838); every normal caller leaves it unset and keeps the sweep.
|
|
399
357
|
*/
|
|
400
|
-
|
|
358
|
+
interface RegisterHooksOptions {
|
|
401
359
|
skipGlobalShimSweep?: boolean;
|
|
402
360
|
}
|
|
403
361
|
export declare function registerHooksToSettings(agentId: AgentId, versionHome: string, hookManifest?: Record<string, ManifestHook>, agentsDirOverride?: string, options?: RegisterHooksOptions): {
|
|
@@ -432,7 +390,7 @@ export declare function hookRegistrationTargets(agentId: AgentId, home: string):
|
|
|
432
390
|
* entries removed.
|
|
433
391
|
*/
|
|
434
392
|
export declare function pruneVersionHomeHookEntriesFromSettings(settingsPath: string, agent: AgentId, removedVersion: string): number;
|
|
435
|
-
|
|
393
|
+
interface InstallSessionTrackerHookResult {
|
|
436
394
|
installed: boolean;
|
|
437
395
|
error?: string;
|
|
438
396
|
}
|
|
@@ -450,3 +408,4 @@ export declare function installSessionTrackerHook(agent: AgentId, version?: stri
|
|
|
450
408
|
* `syncResourcesToVersion`). Best-effort: failures are returned, not thrown.
|
|
451
409
|
*/
|
|
452
410
|
export declare function installSessionTrackerHookSync(agent: AgentId, version?: string, home?: string): InstallSessionTrackerHookResult;
|
|
411
|
+
export {};
|