@phnx-labs/agents-cli 1.22.113 → 1.22.115
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 +139 -0
- package/README.md +32 -113
- package/dist/browser.js +0 -0
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +57 -66
- package/dist/commands/accounts.d.ts +3 -77
- package/dist/commands/accounts.js +13 -366
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/audit.js +1 -1
- package/dist/commands/auth.js +0 -2
- 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/browser.d.ts +53 -0
- package/dist/commands/browser.js +199 -9
- 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/doctor.d.ts +2 -3
- package/dist/commands/doctor.js +0 -11
- package/dist/commands/events.d.ts +1 -3
- package/dist/commands/events.js +4 -7
- package/dist/commands/exec.d.ts +0 -1
- package/dist/commands/exec.js +2 -7
- package/dist/commands/feed-watch.js +52 -8
- 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/focus.js +1 -1
- package/dist/commands/go.d.ts +0 -17
- package/dist/commands/go.js +2 -19
- 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/logs.js +1 -1
- package/dist/commands/mcp.js +8 -83
- package/dist/commands/memory.js +4 -47
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +7 -7
- package/dist/commands/plugins.js +1 -93
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/repo.js +0 -44
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +5 -2
- 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 +23 -4
- package/dist/commands/send.d.ts +4 -4
- package/dist/commands/send.js +6 -51
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-backup-setup.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 -6
- package/dist/commands/sessions-share.d.ts +5 -7
- package/dist/commands/sessions-share.js +98 -49
- 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 +11 -18
- package/dist/commands/setup-browser.js +18 -2
- package/dist/commands/setup-computer.js +20 -6
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup-secrets.js +24 -4
- package/dist/commands/setup-terminal.d.ts +3 -0
- package/dist/commands/setup-terminal.js +22 -0
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +21 -11
- package/dist/commands/skills.js +0 -8
- package/dist/commands/ssh.d.ts +6 -0
- package/dist/commands/ssh.js +92 -233
- package/dist/commands/sync.js +14 -5
- 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 +2 -2
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/traces.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/add.d.ts +0 -5
- package/dist/lib/accounts/add.js +1 -7
- 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/artifacts-client.d.ts +20 -0
- package/dist/lib/artifacts-client.js +46 -0
- 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 +7 -7
- 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 +59 -4
- package/dist/lib/browser/runtime-state.js +99 -18
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/service.js +21 -1
- 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 +4 -2
- 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/dispatch.js +1 -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/cloudflare/creds.d.ts +10 -0
- package/dist/lib/cloudflare/creds.js +46 -0
- package/dist/lib/cloudflare/provision.d.ts +35 -0
- package/dist/lib/cloudflare/provision.js +144 -0
- 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/sessions-list.d.ts +55 -0
- package/dist/lib/computer/sessions-list.js +168 -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 +9 -2
- package/dist/lib/daemon/feed-stream-service.d.ts +23 -0
- package/dist/lib/daemon/feed-stream-service.js +40 -0
- 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 +3 -2
- package/dist/lib/daemon-services.js +5 -0
- 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 +51 -6
- package/dist/lib/devices/connect.js +169 -21
- 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/envelope.d.ts +79 -0
- package/dist/lib/feed/envelope.js +23 -0
- package/dist/lib/feed/events.d.ts +8 -47
- package/dist/lib/feed/events.js +9 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/hub-server.d.ts +86 -0
- package/dist/lib/feed/hub-server.js +334 -0
- package/dist/lib/feed/hub.d.ts +95 -0
- package/dist/lib/feed/hub.js +255 -0
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/tool-activity.d.ts +108 -0
- package/dist/lib/feed/tool-activity.js +313 -0
- package/dist/lib/feed/tools.d.ts +198 -0
- package/dist/lib/feed/tools.js +265 -0
- package/dist/lib/feed/watch.d.ts +51 -52
- package/dist/lib/feed/watch.js +147 -17
- 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 +3 -2
- package/dist/lib/format.js +1 -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 -81
- package/dist/lib/git.js +2 -199
- 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 +55 -4
- package/dist/lib/hosts/remote-cmd.js +125 -8
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +2 -0
- package/dist/lib/hosts/remote-cmd.test-fixture.js +22 -0
- 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/mcp.js +17 -11
- 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/probe.d.ts +4 -1
- package/dist/lib/probe.js +5 -2
- 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/pwsh.d.ts +33 -0
- package/dist/lib/pwsh.js +56 -0
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +15 -1
- package/dist/lib/redact.js +105 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +9 -4
- package/dist/lib/refresh.js +92 -72
- 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-cli.d.ts +11 -0
- package/dist/lib/secrets-cli.js +30 -0
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +7 -28
- 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 +9 -1
- package/dist/lib/session/detached.js +31 -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 +26 -7
- package/dist/lib/session/remote/peer-stream.js +35 -8
- 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 +8 -8
- package/dist/lib/session/sync/backend.js +3 -3
- 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/provision.d.ts +1 -1
- package/dist/lib/session/sync/provision.js +2 -2
- 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/sessions-client.js +0 -3
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/setup-tool-install.d.ts +3 -0
- package/dist/lib/setup-tool-install.js +26 -0
- package/dist/lib/setup-tool-status.d.ts +22 -0
- package/dist/lib/setup-tool-status.js +215 -0
- package/dist/lib/share-runtime.d.ts +11 -0
- package/dist/lib/share-runtime.js +63 -0
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +5 -10
- package/dist/lib/smart-launch.js +4 -12
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +49 -4
- package/dist/lib/ssh-exec.js +119 -0
- 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.d.ts +6 -4
- package/dist/lib/startup/command-registry.js +11 -8
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +3 -6
- package/dist/lib/storage/selection.d.ts +2 -2
- package/dist/lib/storage/selection.js +2 -2
- 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 +9 -3
- package/dist/lib/sync-umbrella.js +18 -10
- 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/backend.d.ts +1 -2
- package/dist/lib/traces/backend.js +1 -2
- 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 +2 -4
- package/dist/lib/traces/provision.js +3 -3
- 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 +11 -9
- 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 +3 -5
- package/scripts/postinstall.js +5 -4
- package/dist/commands/artifacts-setup.d.ts +0 -53
- package/dist/commands/artifacts-setup.js +0 -161
- package/dist/commands/artifacts.d.ts +0 -18
- package/dist/commands/artifacts.js +0 -58
- package/dist/commands/attach.d.ts +0 -12
- package/dist/commands/attach.js +0 -86
- package/dist/commands/auth-mint.d.ts +0 -12
- package/dist/commands/auth-mint.js +0 -108
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/commands/reconnect.d.ts +0 -46
- package/dist/commands/reconnect.js +0 -115
- package/dist/commands/share.d.ts +0 -293
- package/dist/commands/share.js +0 -1424
- 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
- package/dist/lib/share/analytics.d.ts +0 -13
- package/dist/lib/share/analytics.js +0 -45
- package/dist/lib/share/backend.d.ts +0 -120
- package/dist/lib/share/backend.js +0 -176
- package/dist/lib/share/capture.d.ts +0 -31
- package/dist/lib/share/capture.js +0 -174
- package/dist/lib/share/config.d.ts +0 -72
- package/dist/lib/share/config.js +0 -211
- package/dist/lib/share/delete.d.ts +0 -122
- package/dist/lib/share/delete.js +0 -173
- package/dist/lib/share/html.d.ts +0 -22
- package/dist/lib/share/html.js +0 -88
- package/dist/lib/share/http-error.d.ts +0 -52
- package/dist/lib/share/http-error.js +0 -65
- package/dist/lib/share/og.d.ts +0 -25
- package/dist/lib/share/og.js +0 -84
- package/dist/lib/share/provision.d.ts +0 -127
- package/dist/lib/share/provision.js +0 -285
- package/dist/lib/share/publish.d.ts +0 -388
- package/dist/lib/share/publish.js +0 -818
- package/dist/lib/share/worker-template.d.ts +0 -27
- package/dist/lib/share/worker-template.js +0 -2424
- package/dist/lib/storage/index.d.ts +0 -14
- package/dist/lib/storage/index.js +0 -14
- package/dist/lib/storage/visibility.d.ts +0 -82
- package/dist/lib/storage/visibility.js +0 -99
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `term` client — thin subprocess wrapper over the standalone `term` CLI
|
|
3
|
+
* (published separately as `@phnx-labs/term-cli`), the PTY engine this repo
|
|
4
|
+
* used to own directly (`agents pty`, removed in PHNX-4091). `term` mirrors the
|
|
5
|
+
* old `agents pty` verbs/flags/JSON shapes 1:1 (`start`, `exec`, `read`,
|
|
6
|
+
* `write`, `screen`, `signal`, `resize`, `list`, `stop`, `server start|stop|
|
|
7
|
+
* status`, hidden `_server`) and owns starting/reusing its own background
|
|
8
|
+
* sidecar itself — this client never manages that process, it only shells out
|
|
9
|
+
* to the CLI and parses one line of JSON per call.
|
|
10
|
+
*
|
|
11
|
+
* Resolution order:
|
|
12
|
+
* 1. `$TERM_BIN` — an explicit override (a full path, or a PATH-resolvable
|
|
13
|
+
* name other than `term`). Sets the exact binary this client execs; the
|
|
14
|
+
* one legitimate use besides pointing at a real install is a test double.
|
|
15
|
+
* 2. `findInPath('term')` — the ordinary PATH lookup (skips this CLI's own
|
|
16
|
+
* shims dir, same as every other native-binary resolution in this repo).
|
|
17
|
+
*
|
|
18
|
+
* Neither resolving is the expected state until `@phnx-labs/term-cli` is
|
|
19
|
+
* published and installed — every call fails loud with
|
|
20
|
+
* {@link TERM_NOT_INSTALLED_ERROR} rather than silently no-op'ing.
|
|
21
|
+
*/
|
|
22
|
+
import { execFile } from 'node:child_process';
|
|
23
|
+
import { findInPath } from './agent-spec/agents.js';
|
|
24
|
+
export const TERM_NOT_INSTALLED_ERROR = 'The standalone `term` CLI is not installed. npm i -g @phnx-labs/term-cli';
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the `term` binary to exec: `$TERM_BIN` first (exact override, used
|
|
27
|
+
* by tests and by an operator pinning a specific install), else an ordinary
|
|
28
|
+
* PATH lookup. Returns null when neither resolves — the caller must fail loud
|
|
29
|
+
* with {@link TERM_NOT_INSTALLED_ERROR} rather than falling back to anything.
|
|
30
|
+
*/
|
|
31
|
+
export function resolveTermBin() {
|
|
32
|
+
const override = process.env.TERM_BIN;
|
|
33
|
+
if (override && override.trim().length > 0)
|
|
34
|
+
return override.trim();
|
|
35
|
+
return findInPath('term');
|
|
36
|
+
}
|
|
37
|
+
/** Run one `term <args>` invocation and parse the trailing JSON line from stdout. */
|
|
38
|
+
function runTerm(args) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const bin = resolveTermBin();
|
|
41
|
+
if (!bin) {
|
|
42
|
+
reject(new Error(TERM_NOT_INSTALLED_ERROR));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
execFile(bin, args, { maxBuffer: 16 * 1024 * 1024, timeout: 30_000 }, (err, stdout, stderr) => {
|
|
46
|
+
const out = stdout.toString().trim();
|
|
47
|
+
if (!out) {
|
|
48
|
+
reject(new Error(`term ${args[0]} produced no output: ${stderr.toString().trim() || (err ? err.message : 'unknown error')}`));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// `term` may emit progress on earlier lines; the response is the last line.
|
|
52
|
+
const line = out.split('\n').pop() ?? '';
|
|
53
|
+
try {
|
|
54
|
+
resolve(JSON.parse(line));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
reject(new Error(`Invalid JSON from term: ${out.slice(0, 200)}`));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** `term start [-r rows] [-c cols] [-s shell] [-d cwd] --json` → the new session id. */
|
|
63
|
+
export function termStart(opts = {}) {
|
|
64
|
+
const args = ['start', '--json'];
|
|
65
|
+
if (opts.rows)
|
|
66
|
+
args.push('-r', String(opts.rows));
|
|
67
|
+
if (opts.cols)
|
|
68
|
+
args.push('-c', String(opts.cols));
|
|
69
|
+
if (opts.shell)
|
|
70
|
+
args.push('-s', opts.shell);
|
|
71
|
+
if (opts.cwd)
|
|
72
|
+
args.push('-d', opts.cwd);
|
|
73
|
+
return runTerm(args);
|
|
74
|
+
}
|
|
75
|
+
/** `term exec <id> <command> --json` — send a command, non-blocking. */
|
|
76
|
+
export function termExec(id, command) {
|
|
77
|
+
return runTerm(['exec', id, command, '--json']);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* `term write <id> <input> --raw --json` — send raw bytes to the session.
|
|
81
|
+
* `--raw` is load-bearing: the caller here always supplies already-literal
|
|
82
|
+
* bytes (e.g. `\x1b[B\r` as real control characters from a JS string), never
|
|
83
|
+
* the `pty write` CLI's `\n`/`\t`/`\e`/`\xHH` textual escape syntax, so `term`
|
|
84
|
+
* must not re-interpret them.
|
|
85
|
+
*/
|
|
86
|
+
export function termWrite(id, input) {
|
|
87
|
+
return runTerm(['write', id, input, '--raw', '--json']);
|
|
88
|
+
}
|
|
89
|
+
/** `term screen <id> --json` → `{ screen, exited, cols, rows }`. */
|
|
90
|
+
export function termScreen(id) {
|
|
91
|
+
return runTerm(['screen', id, '--json']);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* `term stop <id>` — end the session and clean up.
|
|
95
|
+
*
|
|
96
|
+
* Unlike every other verb, `stop` has no `--json` mode and prints nothing on
|
|
97
|
+
* success (confirmed against a real built `term` binary — a bare `--json`
|
|
98
|
+
* flag errors `unknown option '--json'`, and success alone leaves stdout
|
|
99
|
+
* empty), so this synthesizes the `{ ok }` envelope from the exit code
|
|
100
|
+
* instead of routing through {@link runTerm}'s stdout-JSON parse.
|
|
101
|
+
*/
|
|
102
|
+
export function termStop(id) {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
const bin = resolveTermBin();
|
|
105
|
+
if (!bin) {
|
|
106
|
+
reject(new Error(TERM_NOT_INSTALLED_ERROR));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
execFile(bin, ['stop', id], { maxBuffer: 16 * 1024 * 1024, timeout: 30_000 }, (err, _stdout, stderr) => {
|
|
110
|
+
if (err) {
|
|
111
|
+
resolve({ ok: false, error: stderr.toString().trim() || err.message });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
resolve({ ok: true });
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
@@ -33,8 +33,6 @@
|
|
|
33
33
|
* via System Events keystrokes, stealing focus. The resolver refuses
|
|
34
34
|
* to route here by default (see resolve.ts); it stays behind an
|
|
35
35
|
* explicit opt-in.
|
|
36
|
-
* - pty → the `agents pty write` sidecar path (ptyRequest). Local-only —
|
|
37
|
-
* the sidecar is not an engine transport surface.
|
|
38
36
|
*
|
|
39
37
|
* Ink-TUI Enter semantics: Claude's Ink TUI swallows an Enter fused to the text,
|
|
40
38
|
* so the default path delivers the text and the Enter as TWO SEPARATE writes
|
|
@@ -45,8 +43,7 @@ import { type HostResolver } from './transport.js';
|
|
|
45
43
|
import { type LaunchSpec, type EngineContext } from './types.js';
|
|
46
44
|
/**
|
|
47
45
|
* An already-running surface to type into. A superset of the engine's launch
|
|
48
|
-
* `Backend
|
|
49
|
-
* be injected into.
|
|
46
|
+
* `Backend`.
|
|
50
47
|
*/
|
|
51
48
|
export type InjectTarget = {
|
|
52
49
|
backend: 'tmux';
|
|
@@ -70,9 +67,6 @@ export type InjectTarget = {
|
|
|
70
67
|
} | {
|
|
71
68
|
backend: 'ghostty';
|
|
72
69
|
window?: string;
|
|
73
|
-
} | {
|
|
74
|
-
backend: 'pty';
|
|
75
|
-
id: string;
|
|
76
70
|
};
|
|
77
71
|
export type InjectBackend = InjectTarget['backend'];
|
|
78
72
|
export interface InjectOptions {
|
|
@@ -101,10 +95,9 @@ export interface InjectResult {
|
|
|
101
95
|
/**
|
|
102
96
|
* Delivery is CONFIRMED to have reached the running agent, not merely dispatched.
|
|
103
97
|
*
|
|
104
|
-
* For tmux / iterm / ghostty
|
|
98
|
+
* For tmux / iterm / ghostty, `ok` already means delivered: `tmux
|
|
105
99
|
* send-keys` errors on a missing pane, `osascript write text` errors on a bad
|
|
106
|
-
* session id
|
|
107
|
-
* successful transport IS the confirmation. For **vscodium**, `ok` only means the
|
|
100
|
+
* session id — so a successful transport IS the confirmation. For **vscodium**, `ok` only means the
|
|
108
101
|
* editor CLI accepted the `--open-url` hand-off; whether the swarm-ext extension
|
|
109
102
|
* actually parsed the verb and typed anything is unknown from the CLI side (the
|
|
110
103
|
* ext must ack — RUSH follow-up). So vscodium is delivered-but-UNCONFIRMED, and
|
|
@@ -117,12 +110,6 @@ export interface InjectResult {
|
|
|
117
110
|
specs?: LaunchSpec[];
|
|
118
111
|
error?: string;
|
|
119
112
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Whether a successful transport on this backend CONFIRMS delivery to the agent.
|
|
122
|
-
* Everything but vscodium self-confirms (see InjectResult.confirmed); vscodium's
|
|
123
|
-
* `--open-url` is fire-and-forget until the swarm-ext extension acks the verb.
|
|
124
|
-
*/
|
|
125
|
-
export declare function backendConfirmsDelivery(backend: InjectBackend): boolean;
|
|
126
113
|
/**
|
|
127
114
|
* argv for `tmux send-keys` targeting a pane by id. Starts with `tmux` (like the
|
|
128
115
|
* engine's `tmuxTabArgv`) so the same transport runs it locally or over SSH. The
|
|
@@ -33,15 +33,12 @@
|
|
|
33
33
|
* via System Events keystrokes, stealing focus. The resolver refuses
|
|
34
34
|
* to route here by default (see resolve.ts); it stays behind an
|
|
35
35
|
* explicit opt-in.
|
|
36
|
-
* - pty → the `agents pty write` sidecar path (ptyRequest). Local-only —
|
|
37
|
-
* the sidecar is not an engine transport surface.
|
|
38
36
|
*
|
|
39
37
|
* Ink-TUI Enter semantics: Claude's Ink TUI swallows an Enter fused to the text,
|
|
40
38
|
* so the default path delivers the text and the Enter as TWO SEPARATE writes
|
|
41
39
|
* (swarmify's `sendText(text,false)` then `sendText('\r',false)`). `combined`
|
|
42
40
|
* opts into one fused write for plain shells / REPLs.
|
|
43
41
|
*/
|
|
44
|
-
import { ptyRequest } from '../pty-client.js';
|
|
45
42
|
import { appleScriptStr } from './quote.js';
|
|
46
43
|
import { runSpec } from './transport.js';
|
|
47
44
|
import { itermBackend, ghosttyBackend } from './backends/index.js';
|
|
@@ -51,7 +48,7 @@ import { currentContext } from './types.js';
|
|
|
51
48
|
* Everything but vscodium self-confirms (see InjectResult.confirmed); vscodium's
|
|
52
49
|
* `--open-url` is fire-and-forget until the swarm-ext extension acks the verb.
|
|
53
50
|
*/
|
|
54
|
-
|
|
51
|
+
function backendConfirmsDelivery(backend) {
|
|
55
52
|
return backend !== 'vscodium';
|
|
56
53
|
}
|
|
57
54
|
/** Carriage return — what Enter delivers into a raw PTY/tmux byte stream. */
|
|
@@ -185,28 +182,6 @@ export function vscodiumInjectUri(scheme, terminalId, text, opts) {
|
|
|
185
182
|
export function vscodiumInjectSpec(target, text, opts) {
|
|
186
183
|
return { argv: [target.cli, '--open-url', vscodiumInjectUri(target.scheme, target.terminalId, text, opts)] };
|
|
187
184
|
}
|
|
188
|
-
// --- pty --------------------------------------------------------------------
|
|
189
|
-
async function injectPty(target, text, o) {
|
|
190
|
-
if (o.host && o.host !== 'local') {
|
|
191
|
-
return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: 'pty injection is local-only (the sidecar is not a remote surface)' };
|
|
192
|
-
}
|
|
193
|
-
// Same Ink-safe split as tmux: text write, then a separate CR write.
|
|
194
|
-
const writes = o.enter && o.combined ? [text + CR] : o.enter ? [text, CR] : [text];
|
|
195
|
-
if (o.dryRun)
|
|
196
|
-
return { ok: true, confirmed: true, backend: 'pty', writes: writes.length };
|
|
197
|
-
try {
|
|
198
|
-
for (const input of writes) {
|
|
199
|
-
const res = await ptyRequest('write', target.id, { input });
|
|
200
|
-
if (!res.ok)
|
|
201
|
-
return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: res.error ?? 'pty write failed' };
|
|
202
|
-
}
|
|
203
|
-
// A successful sidecar write reached the fd — real delivery.
|
|
204
|
-
return { ok: true, confirmed: true, backend: 'pty', writes: writes.length };
|
|
205
|
-
}
|
|
206
|
-
catch (err) {
|
|
207
|
-
return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: err instanceof Error ? err.message : String(err) };
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
185
|
// --- public entry -----------------------------------------------------------
|
|
211
186
|
/**
|
|
212
187
|
* Deliver `text` (+ Enter) into an existing terminal surface. Resolves the
|
|
@@ -216,9 +191,6 @@ async function injectPty(target, text, o) {
|
|
|
216
191
|
export async function injectIntoTerminal(target, text, opts = {}) {
|
|
217
192
|
const enter = opts.enter !== false;
|
|
218
193
|
const combined = opts.combined === true;
|
|
219
|
-
if (target.backend === 'pty') {
|
|
220
|
-
return injectPty(target, text, { enter, combined, host: opts.host, dryRun: opts.dryRun });
|
|
221
|
-
}
|
|
222
194
|
// tmux + AppleScript + editor-CLI backends all run through the engine transport.
|
|
223
195
|
const specs = target.backend === 'tmux'
|
|
224
196
|
? tmuxInjectSpecs(target, text, { enter, combined, socket: opts.socket })
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Resolution reads the agent's INHERITED ENV (via session provenance) plus the
|
|
12
12
|
* IDE's live-terminals registry (off disk) — no cooperation from the agent:
|
|
13
13
|
*
|
|
14
|
-
* tmux > iterm > vscodium
|
|
14
|
+
* tmux > iterm > vscodium
|
|
15
15
|
*
|
|
16
16
|
* tmux wins whenever present: a `tmux send-keys -t <pane>` reaches the pane no
|
|
17
17
|
* matter which host app (iTerm / Ghostty / VS Code) is above it, so it's correct
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import type { ActiveSession } from '../session/active.js';
|
|
26
26
|
import type { InjectTarget } from './inject.js';
|
|
27
27
|
/** A resolved rail, or an honest refusal. The watchdog acts only on `addressable: true`. */
|
|
28
|
-
export type InjectRail = 'tmux' | 'iterm' | 'vscodium' | 'ghostty'
|
|
28
|
+
export type InjectRail = 'tmux' | 'iterm' | 'vscodium' | 'ghostty';
|
|
29
29
|
export type InjectResolution = {
|
|
30
30
|
addressable: true;
|
|
31
31
|
rail: InjectRail;
|
|
@@ -43,12 +43,6 @@ export interface ResolveOptions {
|
|
|
43
43
|
* a Ghostty session with no tmux resolves to un-addressable instead.
|
|
44
44
|
*/
|
|
45
45
|
allowGhosttyFocus?: boolean;
|
|
46
|
-
/**
|
|
47
|
-
* A known `agents pty` sidecar id for this session, if the caller has one. No
|
|
48
|
-
* automatic sessionId -> pty mapping exists yet, so pty is only emitted when
|
|
49
|
-
* supplied here (the lowest-precedence rail).
|
|
50
|
-
*/
|
|
51
|
-
ptyId?: string;
|
|
52
46
|
}
|
|
53
47
|
/**
|
|
54
48
|
* Human-facing recovery hint for a session the resolver judged un-addressable.
|
|
@@ -59,7 +53,7 @@ export declare function addressabilityRecoveryHint(session: ActiveSession, fallb
|
|
|
59
53
|
/**
|
|
60
54
|
* Resolve a target from an already-fetched ActiveSession. Pure — no I/O — so the
|
|
61
55
|
* precedence logic is unit-testable without the process table. This is where the
|
|
62
|
-
* tmux > iterm > vscodium
|
|
56
|
+
* tmux > iterm > vscodium precedence and the Ghostty refusal live.
|
|
63
57
|
*/
|
|
64
58
|
export declare function resolveInjectTargetForSession(session: ActiveSession, opts?: ResolveOptions): InjectResolution;
|
|
65
59
|
/**
|
|
@@ -33,12 +33,12 @@ export function addressabilityRecoveryHint(session, fallbackId) {
|
|
|
33
33
|
if (session.host) {
|
|
34
34
|
return `Host '${session.host}' has no addressable rail here. ${interactive ? `Enable tmux wrapping with \`${tmuxCmd}\` and re-launch, or ` : ''}use \`${resumeCmd}\` to continue this session.`;
|
|
35
35
|
}
|
|
36
|
-
return `This session has no addressable terminal rail (not tmux, iTerm, an IDE terminal
|
|
36
|
+
return `This session has no addressable terminal rail (not tmux, iTerm, or an IDE terminal). ${interactive ? `Enable tmux wrapping with \`${tmuxCmd}\` and re-launch, or ` : ''}use \`${resumeCmd}\` to continue this session.`;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Resolve a target from an already-fetched ActiveSession. Pure — no I/O — so the
|
|
40
40
|
* precedence logic is unit-testable without the process table. This is where the
|
|
41
|
-
* tmux > iterm > vscodium
|
|
41
|
+
* tmux > iterm > vscodium precedence and the Ghostty refusal live.
|
|
42
42
|
*/
|
|
43
43
|
export function resolveInjectTargetForSession(session, opts = {}) {
|
|
44
44
|
const prov = session.provenance;
|
|
@@ -77,11 +77,7 @@ export function resolveInjectTargetForSession(session, opts = {}) {
|
|
|
77
77
|
target: { backend: 'vscodium', terminalId: session.sessionId, cli: variant.cli, scheme: variant.scheme },
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
// 4.
|
|
81
|
-
if (opts.ptyId) {
|
|
82
|
-
return { addressable: true, rail: 'pty', target: { backend: 'pty', id: opts.ptyId } };
|
|
83
|
-
}
|
|
84
|
-
// 5. Ghostty — no per-split addressing exists. Refuse by default; the coarse,
|
|
80
|
+
// 4. Ghostty — no per-split addressing exists. Refuse by default; the coarse,
|
|
85
81
|
// focus-stealing window path is opt-in only.
|
|
86
82
|
if (session.host === 'ghostty') {
|
|
87
83
|
if (opts.allowGhosttyFocus) {
|
|
@@ -37,7 +37,7 @@ export declare class TmuxCommandError extends Error {
|
|
|
37
37
|
readonly code: number | null;
|
|
38
38
|
constructor(message: string, stderr: string, stdout: string, code: number | null);
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
interface RunTmuxOptions {
|
|
41
41
|
/** Socket path (default: shared server socket). */
|
|
42
42
|
socket?: string;
|
|
43
43
|
/** Args after `tmux -S <socket>` — e.g. `['has-session', '-t', 'foo']`. */
|
|
@@ -76,3 +76,4 @@ export declare function attachTmux(opts: {
|
|
|
76
76
|
args: string[];
|
|
77
77
|
env?: NodeJS.ProcessEnv;
|
|
78
78
|
}): Promise<number>;
|
|
79
|
+
export {};
|
|
@@ -98,8 +98,6 @@
|
|
|
98
98
|
* entirely (env is inherently unreadable cross-process there without a native
|
|
99
99
|
* helper); it is not a parsing bug {@link parseTmuxSessionMarker} can fix.
|
|
100
100
|
*/
|
|
101
|
-
/** Grace between SIGTERM and SIGKILL for a reaped orphan. */
|
|
102
|
-
export declare const REAP_GRACE_MS = 2000;
|
|
103
101
|
/** Env var `runInTmux` stamps into the pane, inherited by every descendant. */
|
|
104
102
|
export declare const TMUX_SESSION_ENV = "AGENT_TMUX_SESSION_NAME";
|
|
105
103
|
/** One process, with the fields the reaper attributes on. */
|
|
@@ -119,15 +117,15 @@ export interface PaneOwner {
|
|
|
119
117
|
attached: boolean;
|
|
120
118
|
}
|
|
121
119
|
/** Why a process was selected, for human output and tests. */
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
type OrphanReason = 'tmux-agent-exited' | 'detached-helper';
|
|
121
|
+
interface OrphanCandidate {
|
|
124
122
|
pid: number;
|
|
125
123
|
args: string;
|
|
126
124
|
reason: OrphanReason;
|
|
127
125
|
/** Owning tmux session, when the process carried the marker. */
|
|
128
126
|
tmuxSession?: string;
|
|
129
127
|
}
|
|
130
|
-
|
|
128
|
+
interface OrphanReapResult {
|
|
131
129
|
/** Processes signalled (SIGTERM, escalated to SIGKILL when they ignore it). */
|
|
132
130
|
killed: number;
|
|
133
131
|
/** One human-readable line per reaped process. */
|
|
@@ -148,7 +146,7 @@ export interface OrphanReapResult {
|
|
|
148
146
|
* Registry rather than per-agent branches: a second harness with the same shape
|
|
149
147
|
* is one entry, and the completeness of the table is what a reviewer checks.
|
|
150
148
|
*/
|
|
151
|
-
|
|
149
|
+
interface DetachedHelperRule {
|
|
152
150
|
/** Harness id, for the reap detail line. */
|
|
153
151
|
agent: string;
|
|
154
152
|
/** Owner pid the helper declares in its own argv, or undefined when it is not this rule's process. */
|
|
@@ -247,7 +245,7 @@ export declare function readAgentProcesses(opts?: {
|
|
|
247
245
|
pids?: number[];
|
|
248
246
|
}): Promise<AgentProcess[]>;
|
|
249
247
|
/** One socket's pane-ownership read. `ok: false` means tmux never actually answered. */
|
|
250
|
-
|
|
248
|
+
interface PaneOwnersRead {
|
|
251
249
|
/**
|
|
252
250
|
* `true` when tmux completed the query (whatever its exit code — a nonzero
|
|
253
251
|
* exit from `list-panes -a` IS tmux affirmatively answering "no server /
|
|
@@ -314,3 +312,4 @@ export declare function reapProcessesForTmuxSession(name: string, socket?: strin
|
|
|
314
312
|
graceMs?: number;
|
|
315
313
|
pids?: number[];
|
|
316
314
|
}): Promise<OrphanReapResult>;
|
|
315
|
+
export {};
|
|
@@ -113,7 +113,7 @@ const PS_TIMEOUT_MS = 10_000;
|
|
|
113
113
|
*/
|
|
114
114
|
const TMUX_QUERY_TIMEOUT_MS = 10_000;
|
|
115
115
|
/** Grace between SIGTERM and SIGKILL for a reaped orphan. */
|
|
116
|
-
|
|
116
|
+
const REAP_GRACE_MS = 2_000;
|
|
117
117
|
/** Env var `runInTmux` stamps into the pane, inherited by every descendant. */
|
|
118
118
|
export const TMUX_SESSION_ENV = 'AGENT_TMUX_SESSION_NAME';
|
|
119
119
|
/**
|
|
@@ -127,7 +127,7 @@ export declare function teardownIfAgentExited(name: string, socket?: string): Pr
|
|
|
127
127
|
*/
|
|
128
128
|
export declare function killAll(socket?: string): Promise<number>;
|
|
129
129
|
/** Result returned by {@link reapDeadTmuxPanes}. */
|
|
130
|
-
|
|
130
|
+
interface ReapDeadPanesResult {
|
|
131
131
|
/** Number of tmux sessions killed. */
|
|
132
132
|
reaped: number;
|
|
133
133
|
/** Names of reaped sessions. */
|
|
@@ -196,7 +196,7 @@ export interface TmuxClient {
|
|
|
196
196
|
*/
|
|
197
197
|
export declare function listClients(socket?: string): Promise<TmuxClient[]>;
|
|
198
198
|
/** A dead pane's exit status, read from tmux while the pane lingers under remain-on-exit. */
|
|
199
|
-
|
|
199
|
+
interface PaneExit {
|
|
200
200
|
/** False when the pane/socket no longer exists or tmux could not query it. */
|
|
201
201
|
found: boolean;
|
|
202
202
|
/** True once the process that ran in the pane has exited (pane is dead). */
|
|
@@ -283,7 +283,7 @@ export declare function markSessionHookSchema(name: string, socket?: string, tim
|
|
|
283
283
|
* its attach client returns — without that, a resume-attach has no handle to ask
|
|
284
284
|
* tmux what happened and can only assume success (EXEC-23b).
|
|
285
285
|
*/
|
|
286
|
-
|
|
286
|
+
type ResumePreparation = {
|
|
287
287
|
decision: 'attach';
|
|
288
288
|
pane: string;
|
|
289
289
|
} | {
|
|
@@ -381,3 +381,4 @@ export interface CaptureOptions {
|
|
|
381
381
|
export declare function capturePane(opts: CaptureOptions): Promise<string>;
|
|
382
382
|
/** Read a session's provenance JSON, if present. */
|
|
383
383
|
export declare function readSessionMeta(name: string): SessionMeta | null;
|
|
384
|
+
export {};
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* `traces.agents-cli.sh` Worker. Zero Cloudflare setup.
|
|
7
7
|
*
|
|
8
8
|
* BYO path (future): TRACES_BASE_URL + TRACES_WRITE_TOKEN env vars. Not
|
|
9
|
-
* exposed in the CLI for M1 — follow-on milestone
|
|
10
|
-
* `agents artifacts setup`.
|
|
9
|
+
* exposed in the CLI for M1 — follow-on milestone.
|
|
11
10
|
*/
|
|
12
11
|
export declare const DEFAULT_TRACES_DOMAIN = "traces.agents-cli.sh";
|
|
13
12
|
export interface TracesBackend {
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* `traces.agents-cli.sh` Worker. Zero Cloudflare setup.
|
|
7
7
|
*
|
|
8
8
|
* BYO path (future): TRACES_BASE_URL + TRACES_WRITE_TOKEN env vars. Not
|
|
9
|
-
* exposed in the CLI for M1 — follow-on milestone
|
|
10
|
-
* `agents artifacts setup`.
|
|
9
|
+
* exposed in the CLI for M1 — follow-on milestone.
|
|
11
10
|
*/
|
|
12
11
|
import { readSession } from '../identity/client.js';
|
|
13
12
|
import { selectStorageBackendKind } from '../storage/selection.js';
|
|
@@ -26,7 +26,7 @@ export interface DriftSignal {
|
|
|
26
26
|
stallDelta: number;
|
|
27
27
|
severity: 'degrading' | 'stable' | 'improving';
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
interface TopicEvidence {
|
|
30
30
|
cwd?: string | null;
|
|
31
31
|
gitBranch?: string | null;
|
|
32
32
|
topic?: string | null;
|
|
@@ -38,7 +38,7 @@ export interface ClassifiedTopic {
|
|
|
38
38
|
key: string;
|
|
39
39
|
label: string;
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
interface ToolCallFailure {
|
|
42
42
|
tool: string;
|
|
43
43
|
exit_code?: number | null;
|
|
44
44
|
status_code?: number | null;
|
|
@@ -57,3 +57,4 @@ export declare function classifyCause(call: ToolCallFailure): TraceFailureCause;
|
|
|
57
57
|
* not enough signal to distinguish noise from drift.
|
|
58
58
|
*/
|
|
59
59
|
export declare function computeDriftSignal(history: BucketStats[][], today: BucketStats[]): DriftSignal[];
|
|
60
|
+
export {};
|
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
/** Isolated Cloudflare resources for the private Phoenix trace store. */
|
|
2
|
-
export interface TracesConfig {
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
accountId: string;
|
|
5
|
-
workerName: string;
|
|
6
|
-
bucketName: string;
|
|
7
|
-
domain?: string;
|
|
8
|
-
}
|
|
9
1
|
export declare const DEFAULT_WORKER_NAME = "agents-traces";
|
|
10
2
|
export declare const DEFAULT_BUCKET_NAME = "agents-traces";
|
|
@@ -59,7 +59,7 @@ export interface FailurePattern {
|
|
|
59
59
|
/** Movement vs the same pattern id in the previous shard. */
|
|
60
60
|
drift: 'up' | 'flat' | 'down';
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
interface ComputedInsights {
|
|
63
63
|
/** Top-K patterns ranked by wastedMs (impact) — a rare 1-occurrence/8h loop still surfaces. */
|
|
64
64
|
failurePatterns: FailurePattern[];
|
|
65
65
|
/** Sum of wastedMs across every cluster found this sync, not just the top-K rows above. */
|
|
@@ -110,3 +110,4 @@ export declare function computeInsights(rows: readonly SyncRow[], calls: readonl
|
|
|
110
110
|
* `tool` is the synthetic `silent-stall` and `key` is the duration bucket.
|
|
111
111
|
*/
|
|
112
112
|
export declare function computeBehavioralPatterns(facetsBySession: ReadonlyMap<string, Pick<InsightFacets, 'frictionSignals'>>, prevShard?: TracesIndexShard | null): FailurePattern[];
|
|
113
|
+
export {};
|
|
@@ -25,12 +25,12 @@ export type FailurePhenotype = 'false-termination' | 'premature-completion' | 'o
|
|
|
25
25
|
* - `human-takeover`: the final substantive action was a human-facing ask/wait.
|
|
26
26
|
* - `invalid-env` : environment/setup failures dominated the session.
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
type TraceOutcome = 'merged' | 'tests-green' | 'partial' | 'abandoned' | 'human-takeover' | 'invalid-env';
|
|
29
|
+
interface PhenotypeResult {
|
|
30
30
|
phenotype: FailurePhenotype | null;
|
|
31
31
|
reason: string;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
interface OutcomeResult {
|
|
34
34
|
outcome: TraceOutcome;
|
|
35
35
|
confidence: 'high' | 'medium' | 'low';
|
|
36
36
|
reason: string;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { type CloudflareRequester } from '../
|
|
1
|
+
import { type CloudflareRequester } from '../cloudflare/provision.js';
|
|
2
2
|
interface ProvisionOptions {
|
|
3
3
|
request?: CloudflareRequester;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
export declare function setPhoenixIdBaseSecret(apiToken: string, accountId: string, workerName: string, phoenixIdBase: string, opts?: ProvisionOptions): Promise<void>;
|
|
7
|
-
export interface ProvisionTracesOptions extends ProvisionOptions {
|
|
5
|
+
interface ProvisionTracesOptions extends ProvisionOptions {
|
|
8
6
|
apiToken: string;
|
|
9
7
|
accountId: string;
|
|
10
8
|
workerName: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// Cloudflare orchestration for the private agents-traces store. The generic
|
|
2
|
-
// request primitives live in
|
|
2
|
+
// request primitives live in cloudflare/provision; only the isolated traces resource
|
|
3
3
|
// choices and Worker template belong here.
|
|
4
4
|
import { randomBytes } from 'node:crypto';
|
|
5
|
-
import { addCustomDomain, createBucket, deployWorker, enableWorkersDev, findZoneId, putWorkerSecret, } from '../
|
|
5
|
+
import { addCustomDomain, createBucket, deployWorker, enableWorkersDev, findZoneId, putWorkerSecret, } from '../cloudflare/provision.js';
|
|
6
6
|
import { DEFAULT_TRACES_DOMAIN } from './backend.js';
|
|
7
7
|
import { renderTracesWorkerScript } from './worker-template.js';
|
|
8
8
|
/** Bind the Phoenix identity base URL used to verify every trace read and write. */
|
|
9
|
-
|
|
9
|
+
async function setPhoenixIdBaseSecret(apiToken, accountId, workerName, phoenixIdBase, opts = {}) {
|
|
10
10
|
const normalized = phoenixIdBase.replace(/\/+$/, '').trim();
|
|
11
11
|
if (!normalized)
|
|
12
12
|
throw new Error('PHOENIX_ID_BASE is required to verify trace requests.');
|
|
@@ -68,7 +68,7 @@ export declare function unwrapShellExec(command: string): string;
|
|
|
68
68
|
export declare function mapBashCategory(cat: ClassifierCategory, argv: string[]): BashCategory;
|
|
69
69
|
/** Build the per-segment BashAction list for a bash command. */
|
|
70
70
|
export declare function buildBashActions(unwrapped: string): BashAction[];
|
|
71
|
-
|
|
71
|
+
interface BuildDetailV2Options {
|
|
72
72
|
redact?: boolean;
|
|
73
73
|
knownSecrets?: readonly string[];
|
|
74
74
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* action was flagged, so the console can group by operation without re-parsing.
|
|
22
22
|
*/
|
|
23
23
|
import type { BashDanger } from './schema2.js';
|
|
24
|
-
|
|
24
|
+
interface DangerVerdict {
|
|
25
25
|
danger: BashDanger;
|
|
26
26
|
/** Short stable label naming the operation, e.g. `recursive-delete`. Omitted for `normal`. */
|
|
27
27
|
destructiveOperation?: string;
|
|
@@ -34,3 +34,4 @@ export interface DangerVerdict {
|
|
|
34
34
|
* expands to), because the operation itself is the danger, not its target.
|
|
35
35
|
*/
|
|
36
36
|
export declare function classifyActionDanger(argv: string[], _argvComplete?: boolean): DangerVerdict;
|
|
37
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type StepOutcome = 'ok' | 'error' | 'running' | 'unknown';
|
|
2
|
-
|
|
2
|
+
interface SessionStepBase {
|
|
3
3
|
ordinal: number;
|
|
4
4
|
startMs: number;
|
|
5
5
|
durationMs: number;
|
|
@@ -17,15 +17,15 @@ export interface ThinkingStep extends SessionStepBase {
|
|
|
17
17
|
lane: 'think';
|
|
18
18
|
outcome: 'ok' | 'running' | 'unknown';
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
interface ExecutionBase extends SessionStepBase {
|
|
21
21
|
kind: 'execution';
|
|
22
22
|
lane: string;
|
|
23
23
|
callId?: string;
|
|
24
24
|
/** The tool call this execution targets (hook/permission → the guarded call). */
|
|
25
25
|
targetCallId?: string;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
type ToolExecutionType = 'bash' | 'edit' | 'write' | 'read' | 'grep' | 'generic';
|
|
28
|
+
interface ToolExecutionBase extends ExecutionBase {
|
|
29
29
|
executionType: ToolExecutionType;
|
|
30
30
|
tool: string;
|
|
31
31
|
result: ExecutionResult;
|
|
@@ -147,3 +147,4 @@ export interface HookExecution extends ExecutionBase {
|
|
|
147
147
|
result: ExecutionResult;
|
|
148
148
|
}
|
|
149
149
|
export type SessionStepV2 = ThinkingStep | BashExecution | EditExecution | WriteExecution | ReadExecution | GrepExecution | GenericToolExecution | PermissionExecution | HookExecution;
|
|
150
|
+
export {};
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const TASK_TYPES: readonly ["bugfix", "feature", "refactor", "test", "chore", "other"];
|
|
15
15
|
export type TaskType = (typeof TASK_TYPES)[number];
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
declare const FAILURE_TIMINGS: readonly ["early", "mid", "late"];
|
|
17
|
+
type FailureTiming = (typeof FAILURE_TIMINGS)[number];
|
|
18
18
|
/** The #1 group-by axis: compare the pair, never the model alone. */
|
|
19
|
-
|
|
19
|
+
interface SegmentAgent {
|
|
20
20
|
model: string;
|
|
21
21
|
harness: string;
|
|
22
22
|
}
|
|
@@ -70,19 +70,11 @@ export interface Percentiles {
|
|
|
70
70
|
export interface LatencyInsight {
|
|
71
71
|
firstToolMs: Percentiles;
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
interface SegmentDimensions {
|
|
74
74
|
agent: SegmentAgent;
|
|
75
75
|
taskType: TaskType;
|
|
76
76
|
failureTiming: FailureTiming | null;
|
|
77
77
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Tool name → file action. Lowercased. Write-family is a new file; Edit-family
|
|
80
|
-
* is a patch. Anything else is ignored for diff-shape.
|
|
81
|
-
*/
|
|
82
|
-
export declare const FILE_ACTION_TOOLS: ReadonlyArray<{
|
|
83
|
-
action: SegmentFile['action'];
|
|
84
|
-
tools: readonly string[];
|
|
85
|
-
}>;
|
|
86
78
|
type DiffShape = {
|
|
87
79
|
files: readonly SegmentFile[];
|
|
88
80
|
testOnly: boolean;
|
|
@@ -101,14 +93,6 @@ export declare const TASK_TYPE_RULES: ReadonlyArray<{
|
|
|
101
93
|
patterns: readonly RegExp[];
|
|
102
94
|
shape?: keyof Pick<DiffShape, 'testOnly' | 'newOnly' | 'choreOnly'>;
|
|
103
95
|
}>;
|
|
104
|
-
/**
|
|
105
|
-
* Normalized position of the first failing step inside the session span.
|
|
106
|
-
* Early failures cascade — highest-signal bucket. Exclusive upper bound.
|
|
107
|
-
*/
|
|
108
|
-
export declare const FAILURE_TIMING_BUCKETS: ReadonlyArray<{
|
|
109
|
-
timing: FailureTiming;
|
|
110
|
-
maxExclusive: number;
|
|
111
|
-
}>;
|
|
112
96
|
/** Model × harness unit — the #1 group-by axis. */
|
|
113
97
|
export declare function deriveAgent(session: SegmentSession): SegmentAgent;
|
|
114
98
|
/**
|