@phnx-labs/agents-cli 1.22.113 → 1.22.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +10 -11
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +59 -61
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +3 -3
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +21 -2
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -5
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +13 -104
- package/dist/commands/sessions.js +10 -10
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +1 -1
- package/dist/commands/share.d.ts +8 -8
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +1 -1
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +5 -5
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +4 -4
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +1 -1
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -4
- package/dist/lib/daemon/daemon.js +1 -1
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon-services.d.ts +2 -1
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +2 -1
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +2 -1
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +1 -1
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +2 -2
- package/dist/lib/feed/activity.d.ts +8 -33
- package/dist/lib/feed/activity.js +8 -8
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/events.d.ts +2 -47
- package/dist/lib/feed/events.js +1 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/watch.d.ts +1 -2
- package/dist/lib/feed/watch.js +0 -1
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +2 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -65
- package/dist/lib/git.js +3 -142
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -24
- package/dist/lib/hosts/dispatch.js +2 -2
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +4 -3
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +7 -1
- package/dist/lib/redact.js +94 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +3 -2
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +4 -26
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/detached.d.ts +2 -1
- package/dist/lib/session/detached.js +2 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +2 -1
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +2 -5
- package/dist/lib/session/remote/peer-stream.js +2 -2
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +2 -7
- package/dist/lib/session/remote/watch.js +3 -3
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +2 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +5 -5
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/share/delete.d.ts +5 -4
- package/dist/lib/share/html.d.ts +0 -2
- package/dist/lib/share/html.js +9 -9
- package/dist/lib/share/http-error.d.ts +3 -2
- package/dist/lib/share/og.d.ts +2 -1
- package/dist/lib/share/provision.d.ts +2 -2
- package/dist/lib/share/publish.d.ts +4 -13
- package/dist/lib/share/publish.js +2 -2
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +4 -5
- package/dist/lib/smart-launch.js +1 -1
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +5 -4
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.js +1 -1
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +1 -4
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +4 -3
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +1 -3
- package/dist/lib/traces/provision.js +1 -1
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +3 -3
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +2 -3
- package/scripts/postinstall.js +5 -4
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
|
@@ -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 {};
|
|
@@ -607,76 +607,12 @@ function copyHook(entry, targetDir) {
|
|
|
607
607
|
fs.copyFileSync(entry.dataFile, dataTarget);
|
|
608
608
|
}
|
|
609
609
|
}
|
|
610
|
-
/**
|
|
611
|
-
* Check if a hook exists for an agent.
|
|
612
|
-
*/
|
|
613
|
-
export function hookExists(agentId, hookName) {
|
|
614
|
-
const agent = AGENTS[agentId];
|
|
615
|
-
if (!agent.supportsHooks) {
|
|
616
|
-
return false;
|
|
617
|
-
}
|
|
618
|
-
const hooksDir = getHooksDir(agentId);
|
|
619
|
-
if (!fs.existsSync(hooksDir)) {
|
|
620
|
-
return false;
|
|
621
|
-
}
|
|
622
|
-
const files = fs.readdirSync(hooksDir);
|
|
623
|
-
return files.some((file) => {
|
|
624
|
-
const ext = path.extname(file);
|
|
625
|
-
const baseName = path.basename(file, ext);
|
|
626
|
-
return baseName === hookName && SCRIPT_EXTENSIONS.has(ext);
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
610
|
/**
|
|
630
611
|
* Normalize content for comparison (trim, normalize line endings).
|
|
631
612
|
*/
|
|
632
613
|
function normalizeContent(content) {
|
|
633
614
|
return content.replace(/\r\n/g, '\n').trim();
|
|
634
615
|
}
|
|
635
|
-
/**
|
|
636
|
-
* Get the installed hook entry for an agent.
|
|
637
|
-
*/
|
|
638
|
-
function getInstalledHookEntry(agentId, hookName) {
|
|
639
|
-
const hooksDir = getHooksDir(agentId);
|
|
640
|
-
const entries = listHookEntriesFromDir(hooksDir);
|
|
641
|
-
return entries.find((e) => e.name === hookName) || null;
|
|
642
|
-
}
|
|
643
|
-
/**
|
|
644
|
-
* Check if installed hook content matches source hook content.
|
|
645
|
-
* Compares both script file and data file (if present).
|
|
646
|
-
*/
|
|
647
|
-
export function hookContentMatches(agentId, hookName, sourceEntry) {
|
|
648
|
-
const agent = AGENTS[agentId];
|
|
649
|
-
if (!agent.supportsHooks) {
|
|
650
|
-
return false;
|
|
651
|
-
}
|
|
652
|
-
const installedEntry = getInstalledHookEntry(agentId, hookName);
|
|
653
|
-
if (!installedEntry) {
|
|
654
|
-
return false;
|
|
655
|
-
}
|
|
656
|
-
try {
|
|
657
|
-
const installedScript = fs.readFileSync(installedEntry.scriptPath, 'utf-8');
|
|
658
|
-
const sourceScript = fs.readFileSync(sourceEntry.scriptPath, 'utf-8');
|
|
659
|
-
if (normalizeContent(installedScript) !== normalizeContent(sourceScript)) {
|
|
660
|
-
return false;
|
|
661
|
-
}
|
|
662
|
-
const hasInstalledData = !!installedEntry.dataFile;
|
|
663
|
-
const hasSourceData = !!sourceEntry.dataFile;
|
|
664
|
-
if (hasInstalledData !== hasSourceData) {
|
|
665
|
-
return false;
|
|
666
|
-
}
|
|
667
|
-
if (hasInstalledData && hasSourceData) {
|
|
668
|
-
const installedData = fs.readFileSync(installedEntry.dataFile, 'utf-8');
|
|
669
|
-
const sourceData = fs.readFileSync(sourceEntry.dataFile, 'utf-8');
|
|
670
|
-
if (normalizeContent(installedData) !== normalizeContent(sourceData)) {
|
|
671
|
-
return false;
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
return true;
|
|
675
|
-
}
|
|
676
|
-
catch {
|
|
677
|
-
return false;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
616
|
/**
|
|
681
617
|
* Hooks dir for an agent under an arbitrary home (version home or effective
|
|
682
618
|
* home). An agent whose `hooksDir` is configured absolute under `$HOME` (grok,
|
|
@@ -977,7 +913,7 @@ function stableHookRuntimeRepairFailure(before, err) {
|
|
|
977
913
|
* content already matches). This path never calls registerHooksToSettings,
|
|
978
914
|
* installHooks, or any sync routine.
|
|
979
915
|
*/
|
|
980
|
-
|
|
916
|
+
function repairManagedHookRuntimeArtifact(artifact, platform = process.platform) {
|
|
981
917
|
const before = hookRuntimeProblem(artifact, platform);
|
|
982
918
|
// Already healthy (e.g. race with another pass) — no-op, no needsAttention.
|
|
983
919
|
if (!before)
|
|
@@ -1269,28 +1205,6 @@ export function diffVersionHooks(agent, version) {
|
|
|
1269
1205
|
}
|
|
1270
1206
|
return { agent, version, toAdd: toAdd.sort(), toUpdate: toUpdate.sort(), matched, orphans: orphans.sort() };
|
|
1271
1207
|
}
|
|
1272
|
-
/**
|
|
1273
|
-
* Install a single hook from central into a specific version home.
|
|
1274
|
-
*/
|
|
1275
|
-
export function installHookToVersion(agent, version, hookName) {
|
|
1276
|
-
const gate = supports(agent, 'hooks', version);
|
|
1277
|
-
if (!gate.ok) {
|
|
1278
|
-
return { success: false, error: explainSkip(agent, 'hooks', gate, version) };
|
|
1279
|
-
}
|
|
1280
|
-
const central = listHookEntriesFromDir(getCentralHooksDir()).find((e) => e.name === hookName);
|
|
1281
|
-
if (!central) {
|
|
1282
|
-
return { success: false, error: `Hook '${hookName}' not found in central` };
|
|
1283
|
-
}
|
|
1284
|
-
const targetDir = getVersionHooksDir(agent, version);
|
|
1285
|
-
try {
|
|
1286
|
-
fs.mkdirSync(targetDir, { recursive: true });
|
|
1287
|
-
copyHook(central, targetDir);
|
|
1288
|
-
}
|
|
1289
|
-
catch (err) {
|
|
1290
|
-
return { success: false, error: err.message };
|
|
1291
|
-
}
|
|
1292
|
-
return { success: true };
|
|
1293
|
-
}
|
|
1294
1208
|
/**
|
|
1295
1209
|
* Remove a single hook (script + data file) from a specific version home.
|
|
1296
1210
|
* Soft-deletes to ~/.agents/.trash/hooks/.
|
|
@@ -1400,14 +1314,6 @@ export function discoverHooksFromRepo(repoPath) {
|
|
|
1400
1314
|
const hooksDir = path.join(repoPath, 'hooks');
|
|
1401
1315
|
return listHookEntriesFromDir(hooksDir).map((h) => h.name);
|
|
1402
1316
|
}
|
|
1403
|
-
/**
|
|
1404
|
-
* Get the source hook entry from repo.
|
|
1405
|
-
*/
|
|
1406
|
-
export function getSourceHookEntry(repoPath, hookName) {
|
|
1407
|
-
const hooksDir = path.join(repoPath, 'hooks');
|
|
1408
|
-
const entries = listHookEntriesFromDir(hooksDir);
|
|
1409
|
-
return entries.find((e) => e.name === hookName) || null;
|
|
1410
|
-
}
|
|
1411
1317
|
/**
|
|
1412
1318
|
* Install hooks to central ~/.agents/hooks/ directory.
|
|
1413
1319
|
* Shims will symlink this to per-agent directories for synced agents.
|
|
@@ -1625,7 +1531,7 @@ export function unmanagedHookNames(installedHookNames, sourceHookScripts) {
|
|
|
1625
1531
|
* dirs). This is the set an installed hook must be absent from to count as an
|
|
1626
1532
|
* orphan.
|
|
1627
1533
|
*/
|
|
1628
|
-
|
|
1534
|
+
function listResolvedSourceHookScripts() {
|
|
1629
1535
|
const roots = [
|
|
1630
1536
|
getUserHooksDir(),
|
|
1631
1537
|
getSystemHooksDir(),
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { HookMatches } from '../types.js';
|
|
16
16
|
/** Runtime context passed to a hook by the agent CLI. */
|
|
17
|
-
|
|
17
|
+
interface HookInput {
|
|
18
18
|
hook_event_name?: string;
|
|
19
19
|
prompt?: string;
|
|
20
20
|
tool_name?: string;
|
|
@@ -34,3 +34,4 @@ export declare function isSafeHookRegex(source: string): boolean;
|
|
|
34
34
|
* if it should be skipped.
|
|
35
35
|
*/
|
|
36
36
|
export declare function shouldFire(matches: HookMatches | undefined, input: HookInput): boolean;
|
|
37
|
+
export {};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/** The host part of an ssh target (`user@host` -> `host`) for known_hosts matching. */
|
|
2
|
-
export declare function hostKeyLookupName(target: string): string;
|
|
3
1
|
/** Refuse durable credential transfer until the destination SSH key is pinned. */
|
|
4
2
|
export declare function assertCredentialTransportHostPinned(target: string, pinned?: boolean): void;
|
|
5
3
|
/**
|
|
@@ -13,7 +13,7 @@ import { resolveHost } from './registry.js';
|
|
|
13
13
|
import { sshTargetFor } from './types.js';
|
|
14
14
|
import { isHostPinned } from '../devices/known-hosts.js';
|
|
15
15
|
/** The host part of an ssh target (`user@host` -> `host`) for known_hosts matching. */
|
|
16
|
-
|
|
16
|
+
function hostKeyLookupName(target) {
|
|
17
17
|
return target.split('@').pop() ?? target;
|
|
18
18
|
}
|
|
19
19
|
/** Refuse durable credential transfer until the destination SSH key is pinned. */
|
|
@@ -3,11 +3,6 @@ import { type HostTask } from './tasks.js';
|
|
|
3
3
|
import { type HostCredentials } from './credentials.js';
|
|
4
4
|
import { deriveMirroredCwd, homeRemainder, remoteCdPrefix } from '../project-root.js';
|
|
5
5
|
export { deriveMirroredCwd, homeRemainder, remoteCdPrefix };
|
|
6
|
-
/**
|
|
7
|
-
* Diagnostic helper for RUSH-2441: log the requested agent and initial remote
|
|
8
|
-
* `agents run` argv without changing normal command output.
|
|
9
|
-
*/
|
|
10
|
-
export declare function logForwardedArgs(kind: string, agent: string, version: string | undefined, args: string[], hasPrompt: boolean): void;
|
|
11
6
|
/**
|
|
12
7
|
* Merge the resolved actor's provenance env UNDER a caller-supplied env, so every
|
|
13
8
|
* remote `agents …` invocation forwards `AGENTS_ACTOR*` / `GIT_*` across the SSH
|
|
@@ -150,25 +145,8 @@ export interface DispatchOptions {
|
|
|
150
145
|
/** Copy runtime credentials to the host before the run and shred them after. */
|
|
151
146
|
copyCreds?: HostCredentials;
|
|
152
147
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Build the remote `agents run …` argv for a host dispatch. Pure so the
|
|
155
|
-
* session-id / resume flag wiring is unit-testable without an SSH round-trip.
|
|
156
|
-
* `--session-id` and `--resume` are mutually exclusive (the CLI rejects both);
|
|
157
|
-
* resume wins when — defensively — both are set.
|
|
158
|
-
*
|
|
159
|
-
* Every field here is classified 'forward' in RUN_OPTION_FORWARDING
|
|
160
|
-
* (remote-cmd.ts) — keep the two in lockstep; run-forwarding.test.ts asserts
|
|
161
|
-
* the table side.
|
|
162
|
-
*/
|
|
163
|
-
/** Compose `agent[@version][#account]` so the peer resolves ITS slot (PHNX-3940 T5). */
|
|
164
|
-
export declare function runAgentSpecArg(opts: {
|
|
165
|
-
agent: string;
|
|
166
|
-
version?: string;
|
|
167
|
-
account?: string;
|
|
168
|
-
accountPicker?: boolean;
|
|
169
|
-
}): string;
|
|
170
148
|
export declare function buildRunForwardedArgs(opts: DispatchOptions): string[];
|
|
171
|
-
|
|
149
|
+
interface InteractiveDispatchOptions {
|
|
172
150
|
agent: string;
|
|
173
151
|
/** Explicit agent version pin (e.g. "2.1.207") to forward as `agent@version`. */
|
|
174
152
|
version?: string;
|
|
@@ -229,7 +207,7 @@ export declare function buildInteractiveRunForwardedArgs(opts: InteractiveDispat
|
|
|
229
207
|
export declare function runInteractiveOnHost(host: Host, opts: InteractiveDispatchOptions): Promise<number>;
|
|
230
208
|
/** Dispatch an `agents run <agent> "<prompt>"` onto a host (the `run --device` path). */
|
|
231
209
|
export declare function dispatchToHost(host: Host, opts: DispatchOptions): Promise<DispatchResult>;
|
|
232
|
-
|
|
210
|
+
interface CommandDispatchOptions {
|
|
233
211
|
/** `agents …` args (command name first), already stripped of routing flags. */
|
|
234
212
|
forwardedArgs: string[];
|
|
235
213
|
remoteCwd?: string;
|
|
@@ -31,7 +31,7 @@ export { deriveMirroredCwd, homeRemainder, remoteCdPrefix };
|
|
|
31
31
|
* Diagnostic helper for RUSH-2441: log the requested agent and initial remote
|
|
32
32
|
* `agents run` argv without changing normal command output.
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
function logForwardedArgs(kind, agent, version, args, hasPrompt) {
|
|
35
35
|
if (!process.env.AGENTS_DISPATCH_DEBUG)
|
|
36
36
|
return;
|
|
37
37
|
const safeArgs = [...args];
|
|
@@ -343,7 +343,7 @@ async function launchDetached(host, target, opts) {
|
|
|
343
343
|
* the table side.
|
|
344
344
|
*/
|
|
345
345
|
/** Compose `agent[@version][#account]` so the peer resolves ITS slot (PHNX-3940 T5). */
|
|
346
|
-
|
|
346
|
+
function runAgentSpecArg(opts) {
|
|
347
347
|
if (opts.accountPicker)
|
|
348
348
|
return `${opts.agent}#`;
|
|
349
349
|
let spec = opts.agent;
|
package/dist/lib/hosts/logs.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* concise default.) Kept in one place so the two commands can never drift.
|
|
12
12
|
*/
|
|
13
13
|
import { type HostTask } from './tasks.js';
|
|
14
|
-
|
|
14
|
+
interface HostLogResult {
|
|
15
15
|
/** False when no host task with this id exists (caller may fall through to sessions). */
|
|
16
16
|
found: boolean;
|
|
17
17
|
/** Process exit code to adopt when the task was shown/followed. */
|
|
@@ -35,3 +35,4 @@ export declare function hostTaskLogJson(id: string): {
|
|
|
35
35
|
};
|
|
36
36
|
/** Last `n` lines of `text`, prefixed with an elision note when truncated. */
|
|
37
37
|
export declare function tailLines(text: string, n: number): string;
|
|
38
|
+
export {};
|