@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
|
@@ -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. */
|
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dispatch a headless `agents …` command onto a host over SSH.
|
|
3
|
-
*
|
|
4
|
-
* The command is launched detached (`nohup … &`) writing combined output to a
|
|
5
|
-
* remote log and its exit code to a sibling `.exit` file, so progress survives a
|
|
6
|
-
* dropped connection (followed via offset-tail in progress.ts). This is the
|
|
7
|
-
* offload win: the process/thread/file fan-out happens on the host, not the
|
|
8
|
-
* laptop. `agents run` uses it; `agents teams start --watch --device` reuses the
|
|
9
|
-
* same core so a remote team supervisor keeps running after you disconnect.
|
|
10
|
-
*/
|
|
11
1
|
import type { Host } from './types.js';
|
|
12
2
|
import { type HostTask } from './tasks.js';
|
|
13
3
|
import { type HostCredentials } from './credentials.js';
|
|
14
4
|
import { deriveMirroredCwd, homeRemainder, remoteCdPrefix } from '../project-root.js';
|
|
15
5
|
export { deriveMirroredCwd, homeRemainder, remoteCdPrefix };
|
|
16
|
-
/**
|
|
17
|
-
* Diagnostic helper for RUSH-2441: log the requested agent and initial remote
|
|
18
|
-
* `agents run` argv without changing normal command output.
|
|
19
|
-
*/
|
|
20
|
-
export declare function logForwardedArgs(kind: string, agent: string, version: string | undefined, args: string[], hasPrompt: boolean): void;
|
|
21
6
|
/**
|
|
22
7
|
* Merge the resolved actor's provenance env UNDER a caller-supplied env, so every
|
|
23
8
|
* remote `agents …` invocation forwards `AGENTS_ACTOR*` / `GIT_*` across the SSH
|
|
@@ -160,25 +145,8 @@ export interface DispatchOptions {
|
|
|
160
145
|
/** Copy runtime credentials to the host before the run and shred them after. */
|
|
161
146
|
copyCreds?: HostCredentials;
|
|
162
147
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Build the remote `agents run …` argv for a host dispatch. Pure so the
|
|
165
|
-
* session-id / resume flag wiring is unit-testable without an SSH round-trip.
|
|
166
|
-
* `--session-id` and `--resume` are mutually exclusive (the CLI rejects both);
|
|
167
|
-
* resume wins when — defensively — both are set.
|
|
168
|
-
*
|
|
169
|
-
* Every field here is classified 'forward' in RUN_OPTION_FORWARDING
|
|
170
|
-
* (remote-cmd.ts) — keep the two in lockstep; run-forwarding.test.ts asserts
|
|
171
|
-
* the table side.
|
|
172
|
-
*/
|
|
173
|
-
/** Compose `agent[@version][#account]` so the peer resolves ITS slot (PHNX-3940 T5). */
|
|
174
|
-
export declare function runAgentSpecArg(opts: {
|
|
175
|
-
agent: string;
|
|
176
|
-
version?: string;
|
|
177
|
-
account?: string;
|
|
178
|
-
accountPicker?: boolean;
|
|
179
|
-
}): string;
|
|
180
148
|
export declare function buildRunForwardedArgs(opts: DispatchOptions): string[];
|
|
181
|
-
|
|
149
|
+
interface InteractiveDispatchOptions {
|
|
182
150
|
agent: string;
|
|
183
151
|
/** Explicit agent version pin (e.g. "2.1.207") to forward as `agent@version`. */
|
|
184
152
|
version?: string;
|
|
@@ -239,7 +207,7 @@ export declare function buildInteractiveRunForwardedArgs(opts: InteractiveDispat
|
|
|
239
207
|
export declare function runInteractiveOnHost(host: Host, opts: InteractiveDispatchOptions): Promise<number>;
|
|
240
208
|
/** Dispatch an `agents run <agent> "<prompt>"` onto a host (the `run --device` path). */
|
|
241
209
|
export declare function dispatchToHost(host: Host, opts: DispatchOptions): Promise<DispatchResult>;
|
|
242
|
-
|
|
210
|
+
interface CommandDispatchOptions {
|
|
243
211
|
/** `agents …` args (command name first), already stripped of routing flags. */
|
|
244
212
|
forwardedArgs: string[];
|
|
245
213
|
remoteCwd?: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { launchIdentityEnv } from '../launch-identity.js';
|
|
1
2
|
/**
|
|
2
3
|
* Dispatch a headless `agents …` command onto a host over SSH.
|
|
3
4
|
*
|
|
@@ -30,7 +31,7 @@ export { deriveMirroredCwd, homeRemainder, remoteCdPrefix };
|
|
|
30
31
|
* Diagnostic helper for RUSH-2441: log the requested agent and initial remote
|
|
31
32
|
* `agents run` argv without changing normal command output.
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
+
function logForwardedArgs(kind, agent, version, args, hasPrompt) {
|
|
34
35
|
if (!process.env.AGENTS_DISPATCH_DEBUG)
|
|
35
36
|
return;
|
|
36
37
|
const safeArgs = [...args];
|
|
@@ -63,7 +64,7 @@ const REMOTE_DIR = '$HOME/.agents/.cache/hosts';
|
|
|
63
64
|
* collision, mirroring `buildExecEnv`'s `...options.env` precedence (exec.ts).
|
|
64
65
|
*/
|
|
65
66
|
export function withActorEnv(env) {
|
|
66
|
-
return { ...actorEnv(resolveActor()), ...
|
|
67
|
+
return { ...actorEnv(resolveActor()), ...launchIdentityEnv(), ...(env ?? {}) };
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
69
70
|
* The shell-export prelude prepended to EVERY remote `agents run` dispatch —
|
|
@@ -88,24 +89,6 @@ export function remoteRunShellPrelude(agent, extra = {}) {
|
|
|
88
89
|
const exports = posixEnvExports(withActorEnv({ ...guard, ...extra }));
|
|
89
90
|
return exports ? `${exports}; ` : '';
|
|
90
91
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Forward the launching editor tab's `AGENT_TERMINAL_ID` across the SSH hop.
|
|
93
|
-
*
|
|
94
|
-
* Factory stamps it on every terminal it spawns, and the remote `agents run`
|
|
95
|
-
* records it in its pid registry (`writePidSessionEntry`) — which is what lets a
|
|
96
|
-
* tab ask the device "which session is MY terminal running?" instead of guessing
|
|
97
|
-
* from local state. Without the forward the remote registry has no terminal id,
|
|
98
|
-
* that question is unanswerable, and the tab is stuck with its spawn-time id even
|
|
99
|
-
* after the agent has moved to a different session (a `/clear`, or an exit and
|
|
100
|
-
* rerun in the same tab).
|
|
101
|
-
*
|
|
102
|
-
* Same shape as the actor provenance above: absent when the launch did not come
|
|
103
|
-
* from a tracked terminal, never fabricated.
|
|
104
|
-
*/
|
|
105
|
-
function terminalIdEnv() {
|
|
106
|
-
const terminalId = process.env.AGENT_TERMINAL_ID?.trim();
|
|
107
|
-
return terminalId ? { AGENT_TERMINAL_ID: terminalId } : {};
|
|
108
|
-
}
|
|
109
92
|
/**
|
|
110
93
|
* Launch a detached login-shell command in its own Unix session/process group.
|
|
111
94
|
*
|
|
@@ -360,7 +343,7 @@ async function launchDetached(host, target, opts) {
|
|
|
360
343
|
* the table side.
|
|
361
344
|
*/
|
|
362
345
|
/** Compose `agent[@version][#account]` so the peer resolves ITS slot (PHNX-3940 T5). */
|
|
363
|
-
|
|
346
|
+
function runAgentSpecArg(opts) {
|
|
364
347
|
if (opts.accountPicker)
|
|
365
348
|
return `${opts.agent}#`;
|
|
366
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 {};
|
|
@@ -103,7 +103,7 @@ export declare function renderForwardDecision(command: string, allArgs: string[]
|
|
|
103
103
|
env?: Record<string, string>;
|
|
104
104
|
};
|
|
105
105
|
/** Injectable dependencies for {@link runFleetPassthrough} — used by tests. */
|
|
106
|
-
|
|
106
|
+
interface FleetPassthroughOptions {
|
|
107
107
|
/** Override the device registry loader (tests). */
|
|
108
108
|
loadDevices?: () => Promise<DeviceRegistry>;
|
|
109
109
|
/** Override the per-device runner (tests). Defaults to `runOnDevice`. */
|
|
@@ -131,11 +131,6 @@ export declare function buildStreamingFollowCommand(opts: {
|
|
|
131
131
|
}): string;
|
|
132
132
|
/** Extract the remote watcher frame from stderr, if the stream ended normally. */
|
|
133
133
|
export declare function parseStreamingExitFrame(stderr: Buffer, taskId: string): Buffer | null;
|
|
134
|
-
/**
|
|
135
|
-
* File identity (`dev:ino`) of a path on the remote host, or null if it can't be
|
|
136
|
-
* stat'd. GNU (`-c`) then BSD (`-f`) format, so it works on Linux and macOS hosts.
|
|
137
|
-
*/
|
|
138
|
-
export declare function readRemoteFileId(target: string, remotePath: string, extraSshArgs?: string[]): string | null;
|
|
139
134
|
/**
|
|
140
135
|
* True when the local mirror file IS the very file we're tailing — the
|
|
141
136
|
* localhost-as-host case, where `remoteLog` ($HOME-expanded) and `localLogPath`
|
|
@@ -177,7 +177,7 @@ export function parseStreamingExitFrame(stderr, taskId) {
|
|
|
177
177
|
* File identity (`dev:ino`) of a path on the remote host, or null if it can't be
|
|
178
178
|
* stat'd. GNU (`-c`) then BSD (`-f`) format, so it works on Linux and macOS hosts.
|
|
179
179
|
*/
|
|
180
|
-
|
|
180
|
+
function readRemoteFileId(target, remotePath, extraSshArgs) {
|
|
181
181
|
const res = sshExec(target, `stat -c '%d:%i' ${remotePath} 2>/dev/null || stat -f '%d:%i' ${remotePath} 2>/dev/null`, { timeoutMs: 8000, extraSshArgs });
|
|
182
182
|
const id = res.stdout.trim();
|
|
183
183
|
return id || null;
|
|
@@ -24,8 +24,6 @@ export declare function probeHost(target: string, os?: string, extraSshArgs?: st
|
|
|
24
24
|
};
|
|
25
25
|
/** ssh command that prints the remote agents-cli version. Pure/exported. */
|
|
26
26
|
export declare function buildRemoteVersionCommand(os?: string): string;
|
|
27
|
-
/** Remote agents-cli version (PATH-resolved on the remote), or null if not installed. */
|
|
28
|
-
export declare function remoteAgentsVersion(target: string, os?: string, extraSshArgs?: string[]): string | null;
|
|
29
27
|
/** ssh command that installs/upgrades agents-cli to `spec` then `agents setup`.
|
|
30
28
|
* PowerShell has no `tail`/`[ -d ]`/`||`, so the Windows branch uses native
|
|
31
29
|
* equivalents (`Select-Object -Last`, `Test-Path`). Pure/exported. */
|
|
@@ -89,7 +87,7 @@ export declare function viewHasAgentVersion(view: string, agent: string, version
|
|
|
89
87
|
/** Actionable fail-loud message for a missing remote pin (RUSH-2313). */
|
|
90
88
|
export declare function missingPinnedVersionMessage(hostName: string, agent: string, version: string, installed?: string[]): string;
|
|
91
89
|
/** Account eligibility extracted from one device's `agents view --json`. */
|
|
92
|
-
|
|
90
|
+
interface ViewAgentAccountEligibility {
|
|
93
91
|
/** At least one account can launch immediately. */
|
|
94
92
|
signedIn: boolean | undefined;
|
|
95
93
|
/** At least one account can launch immediately or enter the harness login flow. */
|
|
@@ -111,7 +109,7 @@ export interface ViewAgentAccountEligibility {
|
|
|
111
109
|
*/
|
|
112
110
|
export declare function viewAgentAccountEligibility(view: string, agent: string, now?: number): ViewAgentAccountEligibility;
|
|
113
111
|
export declare function viewAgentSignedIn(view: string, agent: string): boolean | undefined;
|
|
114
|
-
|
|
112
|
+
interface EnsureReadyOptions {
|
|
115
113
|
agent: string;
|
|
116
114
|
/**
|
|
117
115
|
* Explicit version pin (e.g. `"0.145.0"`). Concrete pins fail loud when the
|
|
@@ -143,3 +141,4 @@ export declare function evaluateHostAgentInstall(view: string, opts: EnsureReady
|
|
|
143
141
|
export declare function ensureHostReady(host: Host, opts: EnsureReadyOptions): {
|
|
144
142
|
warnings: string[];
|
|
145
143
|
};
|
|
144
|
+
export {};
|
package/dist/lib/hosts/ready.js
CHANGED
|
@@ -64,14 +64,6 @@ export function buildRemoteVersionCommand(os) {
|
|
|
64
64
|
? buildWindowsAgentsCommand({ args: ['--version'] })
|
|
65
65
|
: 'bash -lc "agents --version 2>/dev/null"';
|
|
66
66
|
}
|
|
67
|
-
/** Remote agents-cli version (PATH-resolved on the remote), or null if not installed. */
|
|
68
|
-
export function remoteAgentsVersion(target, os, extraSshArgs = []) {
|
|
69
|
-
const r = sshExec(target, buildRemoteVersionCommand(os), { timeoutMs: 20000, extraSshArgs });
|
|
70
|
-
if (r.code !== 0)
|
|
71
|
-
return null;
|
|
72
|
-
const v = r.stdout.trim();
|
|
73
|
-
return v || null;
|
|
74
|
-
}
|
|
75
67
|
/** ssh command that installs/upgrades agents-cli to `spec` then `agents setup`.
|
|
76
68
|
* PowerShell has no `tail`/`[ -d ]`/`||`, so the Windows branch uses native
|
|
77
69
|
* equivalents (`Select-Object -Last`, `Test-Path`). Pure/exported. */
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { type SshExecResult } from '../ssh-exec.js';
|
|
14
14
|
import { type HostTask } from './tasks.js';
|
|
15
|
-
|
|
15
|
+
type RemoteExitState = {
|
|
16
16
|
state: 'running';
|
|
17
17
|
} | {
|
|
18
18
|
state: 'done';
|
|
@@ -31,13 +31,6 @@ export type RemoteExitState = {
|
|
|
31
31
|
*/
|
|
32
32
|
export declare function classifyExit(res: Pick<SshExecResult, 'code' | 'stdout' | 'timedOut'>): RemoteExitState;
|
|
33
33
|
export declare function readRemoteExit(target: string, remoteExit: string, timeoutMs?: number, identityFile?: string, remoteShell?: 'posix' | 'powershell'): RemoteExitState;
|
|
34
|
-
/**
|
|
35
|
-
* Async twin of {@link readRemoteExit} for the daemon's heartbeat tick — the ssh
|
|
36
|
-
* read runs on the shared event loop, so it MUST NOT block it with a synchronous
|
|
37
|
-
* `spawnSync('ssh', …)` (PHNX-3695). `sshExecAsync` applies the same
|
|
38
|
-
* timeout/kill-grace bound.
|
|
39
|
-
*/
|
|
40
|
-
export declare function readRemoteExitAsync(target: string, remoteExit: string, timeoutMs?: number, identityFile?: string, remoteShell?: 'posix' | 'powershell'): Promise<RemoteExitState>;
|
|
41
34
|
/**
|
|
42
35
|
* Heal one record. Terminal records are immutable (and never re-probed); a
|
|
43
36
|
* `running` record is resolved to completed/failed only when the remote `.exit`
|
|
@@ -59,3 +52,4 @@ export declare function reconcileTaskAsync(task: HostTask): Promise<HostTask>;
|
|
|
59
52
|
*/
|
|
60
53
|
export declare function reconcileRunningTasks(tasks: HostTask[]): HostTask[];
|
|
61
54
|
export declare function reachabilityProbeCommand(remoteShell?: 'posix' | 'powershell'): string;
|
|
55
|
+
export {};
|
|
@@ -57,7 +57,7 @@ export function readRemoteExit(target, remoteExit, timeoutMs = 6000, identityFil
|
|
|
57
57
|
* `spawnSync('ssh', …)` (PHNX-3695). `sshExecAsync` applies the same
|
|
58
58
|
* timeout/kill-grace bound.
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
async function readRemoteExitAsync(target, remoteExit, timeoutMs = 6000, identityFile, remoteShell = 'posix') {
|
|
61
61
|
return classifyExit(await sshExecAsync(target, remoteExitCommand(remoteExit, remoteShell), remoteExitSshOpts(timeoutMs, identityFile)));
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
@@ -34,7 +34,7 @@ export interface ReconnectOutcome {
|
|
|
34
34
|
/** How long the interactive attach held after the probe returned. */
|
|
35
35
|
heldMs: number;
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
type ReconnectDecision = {
|
|
38
38
|
action: 'stop';
|
|
39
39
|
code: number;
|
|
40
40
|
} | {
|
|
@@ -81,8 +81,6 @@ export type ReconnectTarget = {
|
|
|
81
81
|
kind: 'launch';
|
|
82
82
|
id: string;
|
|
83
83
|
};
|
|
84
|
-
/** The short form shown to a human. Both kinds are uuid-shaped, so 8 chars reads the same. */
|
|
85
|
-
export declare function targetLabel(target: ReconnectTarget): string;
|
|
86
84
|
/**
|
|
87
85
|
* The command a user can run to re-enter a session after reconnect gives up.
|
|
88
86
|
* The full id is printed on its own line so it remains copyable after a drop.
|
|
@@ -124,7 +122,7 @@ export declare function afterInteractiveRemoteExit(opts: {
|
|
|
124
122
|
notice: string | undefined;
|
|
125
123
|
};
|
|
126
124
|
/** Inputs the launcher has once its interactive stream has returned. */
|
|
127
|
-
|
|
125
|
+
interface ReconnectTargetInputs {
|
|
128
126
|
agent: string;
|
|
129
127
|
sessionId?: string;
|
|
130
128
|
resolvedId?: string;
|
|
@@ -141,13 +139,7 @@ export declare function pickReconnectTarget(inputs: ReconnectTargetInputs): Reco
|
|
|
141
139
|
* a network drop. No `--attach-only`: focus resumes in place when no pane survived.
|
|
142
140
|
*/
|
|
143
141
|
export declare function reattachRemoteCommand(target: ReconnectTarget): string;
|
|
144
|
-
|
|
145
|
-
* Re-attach the live remote pane by driving the peer's `agents sessions focus`.
|
|
146
|
-
* A fast preflight probe decides reachability; only then do we run the
|
|
147
|
-
* interactive attach/resume. Returns the exit code, connected bit, and hold time.
|
|
148
|
-
*/
|
|
149
|
-
export declare function reattachRemoteSession(host: Host, target: ReconnectTarget): ReconnectOutcome;
|
|
150
|
-
export interface ReconnectLoopOpts {
|
|
142
|
+
interface ReconnectLoopOpts {
|
|
151
143
|
host: Host;
|
|
152
144
|
target: ReconnectTarget;
|
|
153
145
|
/** Exit code from the initial interactive run (treated as connected). */
|
|
@@ -159,3 +151,4 @@ export interface ReconnectLoopOpts {
|
|
|
159
151
|
}
|
|
160
152
|
/** Drive the reconnect loop from the initial run's outcome to a terminal code. */
|
|
161
153
|
export declare function reconnectInteractiveSession(opts: ReconnectLoopOpts): Promise<number>;
|
|
154
|
+
export {};
|
|
@@ -112,7 +112,7 @@ export function wrapRemoteExitCode(cmd) {
|
|
|
112
112
|
return `bash -lc ${shellQuote(guarded)}`;
|
|
113
113
|
}
|
|
114
114
|
/** The short form shown to a human. Both kinds are uuid-shaped, so 8 chars reads the same. */
|
|
115
|
-
|
|
115
|
+
function targetLabel(target) {
|
|
116
116
|
return target.id.slice(0, 8);
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
@@ -201,7 +201,7 @@ export function reattachRemoteCommand(target) {
|
|
|
201
201
|
* A fast preflight probe decides reachability; only then do we run the
|
|
202
202
|
* interactive attach/resume. Returns the exit code, connected bit, and hold time.
|
|
203
203
|
*/
|
|
204
|
-
|
|
204
|
+
function reattachRemoteSession(host, target) {
|
|
205
205
|
const sshTarget = sshTargetFor(host);
|
|
206
206
|
const extraSshArgs = hostIdentityArgs(host);
|
|
207
207
|
// Fresh (non-multiplexed) reachability probe: only a completed handshake is
|
|
@@ -30,7 +30,7 @@ export declare function getAllProviders(): HostProvider[];
|
|
|
30
30
|
* doesn't hold, and lets dispatch callers apply the device-only refusal
|
|
31
31
|
* (password auth) without re-reading the registry.
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
interface ResolvedHost extends Host {
|
|
34
34
|
device?: DeviceProfile;
|
|
35
35
|
/** True when the host is a synthesized ad-hoc `user@host` / IP / FQDN literal
|
|
36
36
|
* (never registered) rather than a device or overlay/ssh-config match. Lets the
|
|
@@ -33,7 +33,7 @@ export declare function stripRoutingFlags(args: string[], specs: StripSpec[]): s
|
|
|
33
33
|
*/
|
|
34
34
|
export declare const HOST_ROUTING_SPECS: StripSpec[];
|
|
35
35
|
/** How one `agents run` option behaves when the run is offloaded with `--device`. */
|
|
36
|
-
|
|
36
|
+
type RunOptionForwarding =
|
|
37
37
|
/** Appended to the remote `agents run` argv — same behavior local or remote. */
|
|
38
38
|
'forward'
|
|
39
39
|
/** Refused with an actionable error BEFORE dispatch — never silently dropped. */
|
|
@@ -79,7 +79,7 @@ export declare function buildRemoteAgentsInvocation(forwardedArgs: string[], rem
|
|
|
79
79
|
*/
|
|
80
80
|
export declare function posixEnvExports(env?: Record<string, string>): string;
|
|
81
81
|
/** The two remote shell dialects we build commands for. */
|
|
82
|
-
|
|
82
|
+
type RemoteShell = 'posix' | 'powershell';
|
|
83
83
|
/**
|
|
84
84
|
* Pick the remote shell dialect from a recorded OS/platform string. A Windows
|
|
85
85
|
* host (device-registry `platform: 'windows'`, or an enrolled `HostEntry.os`
|
|
@@ -105,7 +105,7 @@ export declare function encodePowershell(script: string): string;
|
|
|
105
105
|
* back to its script. Used by tests to assert on the built command. */
|
|
106
106
|
export declare function decodePowershell(encoded: string): string;
|
|
107
107
|
/** A single `agents …` invocation to run on a Windows remote. */
|
|
108
|
-
|
|
108
|
+
interface WindowsAgentsCommand {
|
|
109
109
|
/** `agents` argv (command name NOT included; `agents` is prepended). */
|
|
110
110
|
args: string[];
|
|
111
111
|
/** Env vars scoped to this invocation (POSIX `VAR=val` ↔ PS `$env:VAR=…`). */
|
|
@@ -192,3 +192,4 @@ export declare function buildWindowsStdinImportCommand(bundle: string, opts?: {
|
|
|
192
192
|
force?: boolean;
|
|
193
193
|
policyNever?: boolean;
|
|
194
194
|
}): string;
|
|
195
|
+
export {};
|
|
@@ -9,37 +9,15 @@
|
|
|
9
9
|
*
|
|
10
10
|
* The launcher forwards a launch id it controls (`--env AGENT_LAUNCH_ID=<id>`);
|
|
11
11
|
* the remote `agents run` adopts it (exec.ts `resolveLaunchId`), so the remote
|
|
12
|
-
* SessionStart hook records the agent's REAL session id
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* the
|
|
16
|
-
* (session/hook-sessions.ts), just across the SSH hop.
|
|
12
|
+
* SessionStart hook records the agent's REAL session id. After the stream
|
|
13
|
+
* returns we ask the owning CLI to join that hook with the durable launch
|
|
14
|
+
* registry, using the same index as local focus/session projection. This also
|
|
15
|
+
* supports the deployed legacy hook containing only session_id and pid.
|
|
17
16
|
*
|
|
18
17
|
* This gives the interactive path a real per-agent id to register in the local
|
|
19
18
|
* session index and to reconnect against, for Codex/Kimi/Grok/Gemini — closing
|
|
20
19
|
* the gap RUSH-2033 left for every non-Claude agent (Claude still forces its own
|
|
21
20
|
* id up front and never reaches here).
|
|
22
21
|
*/
|
|
23
|
-
/**
|
|
24
|
-
* Pick the real session id for `launchId` from the remote hook records.
|
|
25
|
-
*
|
|
26
|
-
* `recordsJson` is the newline-delimited JSON the remote read emits — one record
|
|
27
|
-
* per line (a `cat` of every `sessions/*.json`). Scan for the record whose
|
|
28
|
-
* `launch_id` matches and return its `session_id`; when several match (pid reuse,
|
|
29
|
-
* a lingering file) the NEWEST by `ts` wins, mirroring the local reader's
|
|
30
|
-
* keep-newest tie-break (session/hook-sessions.ts). Pure so the correlation is
|
|
31
|
-
* unit-testable from fixtures with no SSH. Returns undefined when no record
|
|
32
|
-
* carries the launch id (the hook hasn't landed yet, or a hookless harness).
|
|
33
|
-
*/
|
|
34
|
-
export declare function pickRemoteSessionId(recordsJson: string, launchId: string): string | undefined;
|
|
35
|
-
/**
|
|
36
|
-
* Read the remote hook-session dir over ssh and resolve the real session id the
|
|
37
|
-
* remote run recorded under `launchId`. One round-trip, best-effort: any ssh
|
|
38
|
-
* failure, a missing dir, or an absent record yields undefined — the caller then
|
|
39
|
-
* keeps the un-mapped run rather than a fabricated id.
|
|
40
|
-
*
|
|
41
|
-
* `$HOME` expands on the REMOTE login shell (never the local box). The glob is a
|
|
42
|
-
* literal path with no user input, so it is injection-safe; a `2>/dev/null` on a
|
|
43
|
-
* globless dir keeps the command quiet when the dir is empty or absent.
|
|
44
|
-
*/
|
|
22
|
+
/** Resolve on the execution owner through the canonical read-only CLI projection. */
|
|
45
23
|
export declare function resolveRemoteSessionId(target: string, launchId: string, timeoutMs?: number): string | undefined;
|