@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
|
@@ -10,7 +10,7 @@ export interface RecoveryAccount {
|
|
|
10
10
|
label: string;
|
|
11
11
|
email: string | null;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
interface SessionRecoverySelection {
|
|
14
14
|
/** Installed binary only; account homes retain their own context label. */
|
|
15
15
|
executableVersion?: string;
|
|
16
16
|
/** Explicit account selector resolved against the local candidate pool. */
|
|
@@ -38,7 +38,7 @@ export type SessionRecoveryTarget = {
|
|
|
38
38
|
account?: RecoveryAccount;
|
|
39
39
|
reason: string;
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
type NativeResumeInspection = {
|
|
42
42
|
available: true;
|
|
43
43
|
cwd?: string;
|
|
44
44
|
} | {
|
|
@@ -92,3 +92,4 @@ export declare function resolveSessionRecovery(session: SessionMeta, collect?: (
|
|
|
92
92
|
* the recovery resolver above; callers must not native-resume another version's
|
|
93
93
|
* isolated home themselves. */
|
|
94
94
|
export declare function sessionRecoveryRunArgs(session: Pick<SessionMeta, 'id'>): string[];
|
|
95
|
+
export {};
|
|
@@ -5,16 +5,30 @@ export declare const PEER_BACKOFF_BASE_MS = 2000;
|
|
|
5
5
|
export declare const PEER_BACKOFF_CAP_MS = 60000;
|
|
6
6
|
/** Consecutive failed spawns before the peer is parked. */
|
|
7
7
|
export declare const PEER_PARK_AFTER_FAILURES = 3;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Consecutive failed spawns before the peer is RETIRED — the capped 60 s ladder
|
|
10
|
+
* gives way to {@link PEER_RETIRED_RECHECK_MS}.
|
|
11
|
+
*
|
|
12
|
+
* The cap alone bounds the delay but not the total work: a box that is off for a
|
|
13
|
+
* weekend was dialed every 60 s for two days, ~2,880 ssh children per watcher
|
|
14
|
+
* per peer, each one already known to fail. Ten consecutive failures is well
|
|
15
|
+
* past any transient network event, so past that point the peer is treated as
|
|
16
|
+
* genuinely absent and re-dialed on the slow cadence instead.
|
|
17
|
+
*/
|
|
18
|
+
export declare const PEER_RETIRE_AFTER_FAILURES = 10;
|
|
19
|
+
/**
|
|
20
|
+
* Re-dial cadence for a retired peer. Still bounded rather than never, because a
|
|
21
|
+
* box can come back without anything touching the device registry — waiting
|
|
22
|
+
* only on a registry change would leave it unreachable until an operator acted.
|
|
23
|
+
*/
|
|
24
|
+
export declare const PEER_RETIRED_RECHECK_MS: number;
|
|
12
25
|
/**
|
|
13
26
|
* Reconnect delay for `failures` consecutive failed spawns: 0 for a healthy
|
|
14
|
-
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS}
|
|
27
|
+
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS},
|
|
28
|
+
* and {@link PEER_RETIRED_RECHECK_MS} once the peer is retired.
|
|
15
29
|
*/
|
|
16
|
-
export declare function peerBackoffDelayMs(failures: number, base?: number, cap?: number): number;
|
|
17
|
-
|
|
30
|
+
export declare function peerBackoffDelayMs(failures: number, base?: number, cap?: number, retireAfter?: number, retiredMs?: number): number;
|
|
31
|
+
interface PeerStreamOptions {
|
|
18
32
|
/** The device to subscribe to. */
|
|
19
33
|
device: DeviceProfile;
|
|
20
34
|
/** Remote command to run over ssh, already shell-quoted for the peer's OS. */
|
|
@@ -33,6 +47,10 @@ export interface PeerStreamOptions {
|
|
|
33
47
|
backoffCapMs?: number;
|
|
34
48
|
/** Override the park threshold (tests). */
|
|
35
49
|
parkAfterFailures?: number;
|
|
50
|
+
/** Override the retire threshold (tests). */
|
|
51
|
+
retireAfterFailures?: number;
|
|
52
|
+
/** Override the retired re-dial cadence (tests). */
|
|
53
|
+
retiredRecheckMs?: number;
|
|
36
54
|
/** Override the ssh binary (tests). */
|
|
37
55
|
sshBin?: string;
|
|
38
56
|
/** Override the parked peer's registry re-check cadence (tests). */
|
|
@@ -45,3 +63,4 @@ export interface PeerStreamOptions {
|
|
|
45
63
|
* backoff. Resolves when the signal aborts or the peer cannot be addressed.
|
|
46
64
|
*/
|
|
47
65
|
export declare function streamFromPeer(options: PeerStreamOptions): Promise<void>;
|
|
66
|
+
export {};
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
* - a peer that fails {@link PEER_PARK_AFTER_FAILURES} spawns in a row parked —
|
|
20
20
|
* it stops the reconnect cycle and re-dials only when the device registry
|
|
21
21
|
* changes or the capped backoff elapses;
|
|
22
|
+
* - a peer that fails {@link PEER_RETIRE_AFTER_FAILURES} in a row RETIRED — the
|
|
23
|
+
* capped 60 s ladder is itself unbounded in total work, so past that point the
|
|
24
|
+
* re-dial drops to {@link PEER_RETIRED_RECHECK_MS};
|
|
22
25
|
* - abort listeners removed per iteration, so a watcher open for hours does not
|
|
23
26
|
* accumulate one per reconnect on the caller's AbortSignal.
|
|
24
27
|
*/
|
|
@@ -34,17 +37,37 @@ export const PEER_BACKOFF_BASE_MS = 2_000;
|
|
|
34
37
|
export const PEER_BACKOFF_CAP_MS = 60_000;
|
|
35
38
|
/** Consecutive failed spawns before the peer is parked. */
|
|
36
39
|
export const PEER_PARK_AFTER_FAILURES = 3;
|
|
40
|
+
/**
|
|
41
|
+
* Consecutive failed spawns before the peer is RETIRED — the capped 60 s ladder
|
|
42
|
+
* gives way to {@link PEER_RETIRED_RECHECK_MS}.
|
|
43
|
+
*
|
|
44
|
+
* The cap alone bounds the delay but not the total work: a box that is off for a
|
|
45
|
+
* weekend was dialed every 60 s for two days, ~2,880 ssh children per watcher
|
|
46
|
+
* per peer, each one already known to fail. Ten consecutive failures is well
|
|
47
|
+
* past any transient network event, so past that point the peer is treated as
|
|
48
|
+
* genuinely absent and re-dialed on the slow cadence instead.
|
|
49
|
+
*/
|
|
50
|
+
export const PEER_RETIRE_AFTER_FAILURES = 10;
|
|
51
|
+
/**
|
|
52
|
+
* Re-dial cadence for a retired peer. Still bounded rather than never, because a
|
|
53
|
+
* box can come back without anything touching the device registry — waiting
|
|
54
|
+
* only on a registry change would leave it unreachable until an operator acted.
|
|
55
|
+
*/
|
|
56
|
+
export const PEER_RETIRED_RECHECK_MS = 15 * 60_000;
|
|
37
57
|
/** Bytes of a peer's stderr retained for the `unavailable` reason. */
|
|
38
|
-
|
|
58
|
+
const PEER_STDERR_BYTES = 2_048;
|
|
39
59
|
/** How often a parked peer re-checks the device registry for a refresh. */
|
|
40
|
-
|
|
60
|
+
const PEER_REGISTRY_POLL_MS = 5_000;
|
|
41
61
|
/**
|
|
42
62
|
* Reconnect delay for `failures` consecutive failed spawns: 0 for a healthy
|
|
43
|
-
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS}
|
|
63
|
+
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS},
|
|
64
|
+
* and {@link PEER_RETIRED_RECHECK_MS} once the peer is retired.
|
|
44
65
|
*/
|
|
45
|
-
export function peerBackoffDelayMs(failures, base = PEER_BACKOFF_BASE_MS, cap = PEER_BACKOFF_CAP_MS) {
|
|
66
|
+
export function peerBackoffDelayMs(failures, base = PEER_BACKOFF_BASE_MS, cap = PEER_BACKOFF_CAP_MS, retireAfter = PEER_RETIRE_AFTER_FAILURES, retiredMs = PEER_RETIRED_RECHECK_MS) {
|
|
46
67
|
if (failures <= 0)
|
|
47
68
|
return 0;
|
|
69
|
+
if (failures >= retireAfter)
|
|
70
|
+
return retiredMs;
|
|
48
71
|
return Math.min(cap, base * 2 ** (failures - 1));
|
|
49
72
|
}
|
|
50
73
|
/** Bounded tail of a child's stderr, kept for the unavailable reason. */
|
|
@@ -133,10 +156,14 @@ export async function streamFromPeer(options) {
|
|
|
133
156
|
failures += 1;
|
|
134
157
|
const exit = code == null ? 'ssh failed' : `ssh exited ${code}`;
|
|
135
158
|
const parked = failures >= parkAfter;
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
159
|
+
const retireAfter = options.retireAfterFailures ?? PEER_RETIRE_AFTER_FAILURES;
|
|
160
|
+
const retired = failures >= retireAfter;
|
|
161
|
+
const delay = peerBackoffDelayMs(failures, options.backoffBaseMs, options.backoffCapMs, retireAfter, options.retiredRecheckMs);
|
|
162
|
+
options.onUnavailable(retired
|
|
163
|
+
? `${reasonFor(exit, stderr)} — retired after ${failures} failed connections, re-dialing in ${Math.round(delay / 60_000)}min or on a device refresh`
|
|
164
|
+
: parked
|
|
165
|
+
? `${reasonFor(exit, stderr)} — parked after ${failures} failed connections, retrying in ${Math.round(delay / 1000)}s or on a device refresh`
|
|
166
|
+
: reasonFor(exit, stderr));
|
|
140
167
|
await parkedWait(options, delay);
|
|
141
168
|
}
|
|
142
169
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ParsedBundle } from '../bundle.js';
|
|
2
|
-
|
|
2
|
+
interface RemotePullResult {
|
|
3
3
|
bundles: ParsedBundle[];
|
|
4
4
|
errors: string[];
|
|
5
5
|
}
|
|
@@ -10,3 +10,4 @@ export interface RemotePullResult {
|
|
|
10
10
|
* `exportArgs` must NOT contain --device (the remote export runs for itself only).
|
|
11
11
|
*/
|
|
12
12
|
export declare function pullBundlesFromHosts(hosts: string[], exportArgs: string[]): Promise<RemotePullResult>;
|
|
13
|
+
export {};
|
|
@@ -4,7 +4,7 @@ import type { SessionMeta } from '../types.js';
|
|
|
4
4
|
import { type ToolProgramCountEnvelope, type ToolSearchEnvelope } from '../tool-index.js';
|
|
5
5
|
export { REMOTE_STDOUT_MAX_BYTES, RemoteUtf8Accumulator } from '../../ssh-exec.js';
|
|
6
6
|
export declare const REMOTE_TOOL_AGGREGATE_MAX_BYTES: number;
|
|
7
|
-
|
|
7
|
+
interface RemoteToolByteBudget {
|
|
8
8
|
remainingBytes: number;
|
|
9
9
|
exhausted: boolean;
|
|
10
10
|
}
|
|
@@ -44,7 +44,7 @@ export declare function sshCapture(target: string, remoteCmd: string, timeoutMs:
|
|
|
44
44
|
stdout: string;
|
|
45
45
|
aggregateBudgetExceeded?: boolean;
|
|
46
46
|
}>;
|
|
47
|
-
|
|
47
|
+
interface RemoteListResult {
|
|
48
48
|
sessions: SessionMeta[];
|
|
49
49
|
/** How many peer machines we attempted to reach (drives the empty-fleet tip). */
|
|
50
50
|
deviceCount: number;
|
|
@@ -65,7 +65,7 @@ export declare function isAutomaticSessionPeer(d: DeviceProfile, self: string):
|
|
|
65
65
|
* address. `forwardedArgs` are the caller's own sessions args (query + filters,
|
|
66
66
|
* already `--json`) so every peer returns the same slice this machine asked for.
|
|
67
67
|
*/
|
|
68
|
-
|
|
68
|
+
interface GatherRemoteListOptions {
|
|
69
69
|
/**
|
|
70
70
|
* Opt-in early-exit for a globally-unique id lookup (a full UUID): the first
|
|
71
71
|
* peer to return the matching row resolves the fan-out and cancels the rest.
|
|
@@ -77,7 +77,7 @@ export interface GatherRemoteListOptions {
|
|
|
77
77
|
timeoutMs?: number;
|
|
78
78
|
}
|
|
79
79
|
export declare function gatherRemoteList(forwardedArgs: string[], hosts?: string[], opts?: GatherRemoteListOptions): Promise<RemoteListResult>;
|
|
80
|
-
|
|
80
|
+
interface RemoteToolSearchResult {
|
|
81
81
|
envelopes: Array<{
|
|
82
82
|
machine: string;
|
|
83
83
|
envelope: ToolSearchEnvelope;
|
|
@@ -86,7 +86,7 @@ export interface RemoteToolSearchResult {
|
|
|
86
86
|
unreachable: string[];
|
|
87
87
|
truncated: string[];
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
interface RemoteToolProgramCountResult {
|
|
90
90
|
envelopes: Array<{
|
|
91
91
|
machine: string;
|
|
92
92
|
envelope: ToolProgramCountEnvelope;
|
|
@@ -42,7 +42,7 @@ export declare function ensureWholeIndex(forwardedArgs: string[]): string[];
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function buildRemoteCommand(forwardedArgs: string[], columns?: number, os?: string): string;
|
|
44
44
|
/** The four outcomes of one `ssh <host> agents sessions …` invocation. */
|
|
45
|
-
|
|
45
|
+
type SshOutcome = 'ok' | 'unreachable' | 'query-failed' | 'spawn-error';
|
|
46
46
|
/**
|
|
47
47
|
* Classify an ssh `spawnSync` result. ssh(1) reserves exit 255 for its own
|
|
48
48
|
* connection-layer failures (host down, timeout, refused, auth, changed host
|
|
@@ -71,7 +71,7 @@ export declare function remoteCachePath(host: string, forwardedArgs: string[]):
|
|
|
71
71
|
* skips SSH only while this returns true; unreachable fallback ignores age.
|
|
72
72
|
*/
|
|
73
73
|
export declare function isRemoteCacheFresh(mtimeMs: number, nowMs: number, maxAgeMs?: number): boolean;
|
|
74
|
-
|
|
74
|
+
interface RemoteCacheHit {
|
|
75
75
|
output: string;
|
|
76
76
|
mtimeMs: number;
|
|
77
77
|
}
|
|
@@ -105,7 +105,7 @@ export declare function serveWarmRemoteCache(host: string, forwardedArgs: string
|
|
|
105
105
|
* stderr (so a piped stdout stays exactly the cached rows); returns false when
|
|
106
106
|
* nothing is cached for this exact (host, query). */
|
|
107
107
|
export declare function replayRemoteCache(host: string, forwardedArgs: string[]): boolean;
|
|
108
|
-
|
|
108
|
+
interface RunRemoteSessionsOptions {
|
|
109
109
|
/** Skip warm cache and SSH every host (force-refresh). */
|
|
110
110
|
forceRefresh?: boolean;
|
|
111
111
|
/** Override freshness window for the warm path. */
|
|
@@ -130,3 +130,4 @@ export interface RunRemoteSessionsOptions {
|
|
|
130
130
|
* imperceptible; `maxBuffer` is generous for the rare large `--markdown <id>` dump.
|
|
131
131
|
*/
|
|
132
132
|
export declare function runRemoteSessions(hosts: string[], argv?: string[], opts?: RunRemoteSessionsOptions): void;
|
|
133
|
+
export {};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { type ActiveSession } from '../active.js';
|
|
2
2
|
import { type SessionMeta } from '../types.js';
|
|
3
3
|
import { readActiveSessionsCache } from '../session-cache.js';
|
|
4
|
-
export declare const SESSION_WATCH_VERSION: 1;
|
|
5
4
|
export declare const SESSION_WATCH_HEARTBEAT_MS = 15000;
|
|
6
|
-
export declare const SESSION_WATCH_PREVIOUS_LIMIT = 50;
|
|
7
5
|
export type SessionWatchScopeStatus = 'available' | 'unavailable';
|
|
8
6
|
export type SessionWatchEnvelope = {
|
|
9
7
|
version: 1;
|
|
@@ -76,10 +74,6 @@ export interface SessionWatchRow extends Omit<ActiveSession, 'viewingIn' | 'cont
|
|
|
76
74
|
/** Stable, opaque identity for one row within one device scope. */
|
|
77
75
|
export declare function sessionWatchRowKey(scope: string, row: ActiveSession): string;
|
|
78
76
|
export declare function toSessionWatchRow(scope: string, row: ActiveSession): SessionWatchRow;
|
|
79
|
-
/** Stable identity for a durable Previous row. It is deliberately distinct
|
|
80
|
-
* from the live row key for the same session id: both may coexist on the one
|
|
81
|
-
* stream, and the presentation layer lets the live row win while it exists. */
|
|
82
|
-
export declare function previousSessionWatchRowKey(scope: string, sessionId: string): string;
|
|
83
77
|
/** Project one durable indexed session into the same canonical watch contract
|
|
84
78
|
* as live sessions. This is the only history backfill consumed by AGI EXT. */
|
|
85
79
|
export declare function toPreviousSessionWatchRow(scope: string, session: SessionMeta): SessionWatchRow;
|
|
@@ -119,7 +113,7 @@ export declare function readPreviousSessionsForWatch(scope: string): SessionMeta
|
|
|
119
113
|
* steady state tails the canonical writer journal and never invokes a gather.
|
|
120
114
|
*/
|
|
121
115
|
export declare function watchLocalSessions(options: WatchLocalOptions): Promise<void>;
|
|
122
|
-
|
|
116
|
+
interface WatchFleetOptions {
|
|
123
117
|
signal: AbortSignal;
|
|
124
118
|
emit: (event: SessionWatchEnvelope) => void;
|
|
125
119
|
reconnectMs?: number;
|
|
@@ -130,3 +124,4 @@ export interface WatchFleetOptions {
|
|
|
130
124
|
* peer resets only its own scope. There is no recurring fleet list command.
|
|
131
125
|
*/
|
|
132
126
|
export declare function watchFleetSessions(options: WatchFleetOptions): Promise<void>;
|
|
127
|
+
export {};
|
|
@@ -13,9 +13,9 @@ import { linearIssueUrl } from '../linear.js';
|
|
|
13
13
|
import { sessionAgentSupportsResume } from '../recovery.js';
|
|
14
14
|
import { SESSION_AGENTS } from '../types.js';
|
|
15
15
|
import { activeSessionsJournalPath, activeSessionJournalIdentity, readActiveSessionsCache, noteActiveSessionsJournalReader, resolveStreamSummaryState, } from '../session-cache.js';
|
|
16
|
-
|
|
16
|
+
const SESSION_WATCH_VERSION = 1;
|
|
17
17
|
export const SESSION_WATCH_HEARTBEAT_MS = 15_000;
|
|
18
|
-
|
|
18
|
+
const SESSION_WATCH_PREVIOUS_LIMIT = 50;
|
|
19
19
|
/** Stable, opaque identity for one row within one device scope. */
|
|
20
20
|
export function sessionWatchRowKey(scope, row) {
|
|
21
21
|
const identity = activeSessionJournalIdentity(row);
|
|
@@ -58,7 +58,7 @@ function epochMs(value) {
|
|
|
58
58
|
/** Stable identity for a durable Previous row. It is deliberately distinct
|
|
59
59
|
* from the live row key for the same session id: both may coexist on the one
|
|
60
60
|
* stream, and the presentation layer lets the live row win while it exists. */
|
|
61
|
-
|
|
61
|
+
function previousSessionWatchRowKey(scope, sessionId) {
|
|
62
62
|
return createHash('sha256').update(`${scope}\0previous\0${sessionId}`).digest('base64url').slice(0, 22);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
@@ -15,7 +15,7 @@ export declare const NO_FANOUT_ENV = "AGENTS_SESSIONS_LOCAL";
|
|
|
15
15
|
* Exported for unit testing without a live tailnet.
|
|
16
16
|
*/
|
|
17
17
|
export declare function parseRemoteActive(stdout: string, machine: string): ActiveSession[];
|
|
18
|
-
|
|
18
|
+
interface RemoteActiveResult {
|
|
19
19
|
sessions: ActiveSession[];
|
|
20
20
|
/** How many peer machines we attempted to reach (drives the empty-fleet tip). */
|
|
21
21
|
deviceCount: number;
|
|
@@ -48,3 +48,4 @@ export declare function gatherRemoteActive(hosts?: string[], opts?: {
|
|
|
48
48
|
isDefinitive: (item: ActiveSession, machine: string) => boolean;
|
|
49
49
|
};
|
|
50
50
|
}): Promise<RemoteActiveResult>;
|
|
51
|
+
export {};
|
|
@@ -82,7 +82,7 @@ export declare function renderSummaryHeader(stats: SessionStats): string;
|
|
|
82
82
|
*/
|
|
83
83
|
export declare function renderSummary(events: SessionEvent[], cwd?: string): string;
|
|
84
84
|
/** Allowed values for --include/--exclude role filters. */
|
|
85
|
-
|
|
85
|
+
declare const VALID_ROLE_VALUES: readonly ["user", "assistant", "thinking", "tools"];
|
|
86
86
|
/** A single role filter value derived from VALID_ROLE_VALUES. */
|
|
87
87
|
export type RoleFilter = typeof VALID_ROLE_VALUES[number];
|
|
88
88
|
/** Options for filtering session events by role and turn range. */
|
|
@@ -108,7 +108,7 @@ export declare function filterEvents(events: SessionEvent[], opts: FilterOptions
|
|
|
108
108
|
* order so reasoning sits where it actually occurred relative to the assistant
|
|
109
109
|
* reply.
|
|
110
110
|
*/
|
|
111
|
-
|
|
111
|
+
interface RenderConversationMarkdownOptions {
|
|
112
112
|
redact?: boolean;
|
|
113
113
|
knownSecrets?: readonly string[];
|
|
114
114
|
reasoning?: 'omit' | 'fold' | 'include';
|
|
@@ -809,7 +809,7 @@ export function renderSummary(events, cwd) {
|
|
|
809
809
|
}
|
|
810
810
|
// ── Event filters ─────────────────────────────────────────────────────────────
|
|
811
811
|
/** Allowed values for --include/--exclude role filters. */
|
|
812
|
-
|
|
812
|
+
const VALID_ROLE_VALUES = ['user', 'assistant', 'thinking', 'tools'];
|
|
813
813
|
/**
|
|
814
814
|
* Parse a comma-separated role list (e.g. "user,assistant") into typed values.
|
|
815
815
|
* Throws with a clear message listing valid values on any unknown entry.
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* remote session resumed in whatever directory the user happened to be in.
|
|
21
21
|
*
|
|
22
22
|
* Callers act on the answer differently, and the difference is deliberate:
|
|
23
|
-
* `agents sessions resume`
|
|
23
|
+
* `agents sessions resume` HOPS to the owner over SSH, while
|
|
24
24
|
* `resumeSessionInPlace` — the local takeover every routed caller reaches only
|
|
25
25
|
* after deciding — REFUSES. The batch `sessions resume` needs no check of its
|
|
26
26
|
* own: each of its tabs runs the canonical `agents sessions resume <id>`
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* remote session resumed in whatever directory the user happened to be in.
|
|
21
21
|
*
|
|
22
22
|
* Callers act on the answer differently, and the difference is deliberate:
|
|
23
|
-
* `agents sessions resume`
|
|
23
|
+
* `agents sessions resume` HOPS to the owner over SSH, while
|
|
24
24
|
* `resumeSessionInPlace` — the local takeover every routed caller reaches only
|
|
25
25
|
* after deciding — REFUSES. The batch `sessions resume` needs no check of its
|
|
26
26
|
* own: each of its tabs runs the canonical `agents sessions resume <id>`
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Mirrors the host-task sidecar convention (`~/.agents/.cache/hosts/<id>.json`),
|
|
14
14
|
* one small JSON per run under `~/.agents/.cache/run-names/`.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
interface RunNameRecord {
|
|
17
17
|
sessionId: string;
|
|
18
18
|
name: string;
|
|
19
19
|
agent: string;
|
|
@@ -32,3 +32,4 @@ export declare function recordRunName(rec: Omit<RunNameRecord, 'ts'>): void;
|
|
|
32
32
|
* map when the dir doesn't exist yet.
|
|
33
33
|
*/
|
|
34
34
|
export declare function buildRunNameMap(): Map<string, string | null>;
|
|
35
|
+
export {};
|
|
@@ -8,7 +8,7 @@ import { type ActiveSession } from './active.js';
|
|
|
8
8
|
export declare const DEFAULT_ACTIVE_CACHE_MAX_AGE_MS = 15000;
|
|
9
9
|
/** Snapshot scope: this host only, or a fleet-wide merge written by a reader. */
|
|
10
10
|
export type ActiveCacheScope = 'local' | 'fleet';
|
|
11
|
-
|
|
11
|
+
interface ActiveSessionsSnapshot {
|
|
12
12
|
version: 1;
|
|
13
13
|
scope: ActiveCacheScope;
|
|
14
14
|
/** Epoch ms the sessions array was captured. */
|
|
@@ -30,7 +30,7 @@ export declare function activeSessionJournalIdentity(row: ActiveSession): string
|
|
|
30
30
|
* transcript mtime so a rewrite invalidates them. Live status is intentionally
|
|
31
31
|
* absent — see {@link LIVE_STATUS_KEYS}.
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
interface ImmutableSessionFields {
|
|
34
34
|
topic?: string;
|
|
35
35
|
firstUserMessage?: string;
|
|
36
36
|
label?: string;
|
|
@@ -76,8 +76,6 @@ export declare function setActiveSessionsSnapshotPathForTest(p: string | null):
|
|
|
76
76
|
export declare function clearActiveSnapshotMemoryForTest(): void;
|
|
77
77
|
/** Test seam: redirect the immutable-memo file. Returns the previous override. */
|
|
78
78
|
export declare function setImmutableMemoPathForTest(p: string | null): string | null;
|
|
79
|
-
/** Test seam: redirect the append-only live-state journal. */
|
|
80
|
-
export declare function setActiveSessionsJournalPathForTest(p: string | null): string | null;
|
|
81
79
|
/** Test seam: redirect the reader-presence file. Returns the previous override. */
|
|
82
80
|
export declare function setActiveSessionsReaderPresencePathForTest(p: string | null): string | null;
|
|
83
81
|
export declare function activeSessionsJournalPath(): string;
|
|
@@ -99,8 +97,6 @@ export declare function noteActiveSessionsJournalReader(nowMs?: number): void;
|
|
|
99
97
|
* {@link noteActiveSessionsJournalReader} and the following tick gathers.
|
|
100
98
|
*/
|
|
101
99
|
export declare function isActiveSessionsJournalReaderRecent(nowMs?: number, idleWindowMs?: number): boolean;
|
|
102
|
-
/** Default poll cadence for {@link watchActiveSessionsReaderPresence}. */
|
|
103
|
-
export declare const ACTIVE_SESSIONS_READER_TRANSITION_POLL_MS = 1000;
|
|
104
100
|
/**
|
|
105
101
|
* Watch for a reader going from absent/idle to present and fire `onConnect`
|
|
106
102
|
* out of band, instead of waiting for the next scheduled warm tick (RUSH-2484).
|
|
@@ -166,22 +162,6 @@ export declare function assertNoLiveStatusFields(fields: Record<string, unknown>
|
|
|
166
162
|
* refill identity fields without re-deriving them.
|
|
167
163
|
*/
|
|
168
164
|
export declare function updateImmutableMemos(sessions: ReadonlyArray<ActiveSession>, nowMs?: number): void;
|
|
169
|
-
/**
|
|
170
|
-
* Fill missing immutable fields on a live row from the memo when the transcript
|
|
171
|
-
* mtime matches. Never overwrites a field the live gather already set, and
|
|
172
|
-
* never copies live-status keys.
|
|
173
|
-
*/
|
|
174
|
-
/**
|
|
175
|
-
* Merge the daemon-computed session summary (PHNX-3939) onto a live row from the
|
|
176
|
-
* transcript-keyed `session_summaries` cache. This is the low-cost display merge:
|
|
177
|
-
* one indexed by-id read, NEVER a model call — the background
|
|
178
|
-
* SessionSummarizerService is the only producer. It fills only what the cache
|
|
179
|
-
* holds; the `pending`/`skipped` default for a row with no summary yet is applied
|
|
180
|
-
* at the watch-stream boundary ({@link resolveStreamSummaryState}), so a
|
|
181
|
-
* non-stream ActiveSession consumer is unaffected. Best-effort: a DB error leaves
|
|
182
|
-
* the row untouched.
|
|
183
|
-
*/
|
|
184
|
-
export declare function mergeSessionSummary(s: ActiveSession): ActiveSession;
|
|
185
165
|
/**
|
|
186
166
|
* The `summaryState` a watch-stream row carries when the merge left it unset:
|
|
187
167
|
* `pending` while the summarizer is READY (enabled AND has an endpoint, so a
|
|
@@ -200,7 +180,7 @@ export declare function resolveStreamSummaryState(current: import('./types.js').
|
|
|
200
180
|
*/
|
|
201
181
|
export declare function mergeSessionTimeline(s: ActiveSession): ActiveSession;
|
|
202
182
|
export declare function applyImmutableMemo(s: ActiveSession): ActiveSession;
|
|
203
|
-
|
|
183
|
+
interface LoadLocalActiveSessionsOptions {
|
|
204
184
|
/** Skip the cache and re-gather (the force-refresh path). */
|
|
205
185
|
forceRefresh?: boolean;
|
|
206
186
|
/** Freshness window; defaults to {@link DEFAULT_ACTIVE_CACHE_MAX_AGE_MS}. */
|
|
@@ -216,7 +196,7 @@ export interface LoadLocalActiveSessionsOptions {
|
|
|
216
196
|
readCache?: typeof readActiveSessionsCache;
|
|
217
197
|
writeCache?: typeof writeActiveSessionsCache;
|
|
218
198
|
}
|
|
219
|
-
|
|
199
|
+
interface LoadLocalActiveSessionsResult {
|
|
220
200
|
sessions: ActiveSession[];
|
|
221
201
|
/** True when the row set came from the warm snapshot, not a live gather. */
|
|
222
202
|
servedFromCache: boolean;
|
|
@@ -228,7 +208,7 @@ export interface LoadLocalActiveSessionsResult {
|
|
|
228
208
|
* re-gathers and rewrites the cache.
|
|
229
209
|
*/
|
|
230
210
|
export declare function loadLocalActiveSessions(opts?: LoadLocalActiveSessionsOptions): Promise<LoadLocalActiveSessionsResult>;
|
|
231
|
-
|
|
211
|
+
interface LoadFleetActiveSessionsOptions {
|
|
232
212
|
forceRefresh?: boolean;
|
|
233
213
|
maxAgeMs?: number;
|
|
234
214
|
nowMs?: number;
|
|
@@ -244,7 +224,7 @@ export interface LoadFleetActiveSessionsOptions {
|
|
|
244
224
|
readCache?: typeof readActiveSessionsCache;
|
|
245
225
|
writeCache?: typeof writeActiveSessionsCache;
|
|
246
226
|
}
|
|
247
|
-
|
|
227
|
+
interface LoadFleetActiveSessionsResult {
|
|
248
228
|
sessions: ActiveSession[];
|
|
249
229
|
remoteDeviceCount: number;
|
|
250
230
|
servedFromCache: boolean;
|
|
@@ -275,3 +255,4 @@ export declare function publishLocalActiveSessions(opts?: {
|
|
|
275
255
|
sessions: ActiveSession[];
|
|
276
256
|
capturedAt: number;
|
|
277
257
|
}>;
|
|
258
|
+
export {};
|
|
@@ -131,12 +131,6 @@ export function setImmutableMemoPathForTest(p) {
|
|
|
131
131
|
immutablePathOverride = p;
|
|
132
132
|
return prev;
|
|
133
133
|
}
|
|
134
|
-
/** Test seam: redirect the append-only live-state journal. */
|
|
135
|
-
export function setActiveSessionsJournalPathForTest(p) {
|
|
136
|
-
const prev = journalPathOverride;
|
|
137
|
-
journalPathOverride = p;
|
|
138
|
-
return prev;
|
|
139
|
-
}
|
|
140
134
|
/** Test seam: redirect the reader-presence file. Returns the previous override. */
|
|
141
135
|
export function setActiveSessionsReaderPresencePathForTest(p) {
|
|
142
136
|
const prev = readerPresencePathOverride;
|
|
@@ -194,7 +188,7 @@ export function isActiveSessionsJournalReaderRecent(nowMs = Date.now(), idleWind
|
|
|
194
188
|
}
|
|
195
189
|
}
|
|
196
190
|
/** Default poll cadence for {@link watchActiveSessionsReaderPresence}. */
|
|
197
|
-
|
|
191
|
+
const ACTIVE_SESSIONS_READER_TRANSITION_POLL_MS = 1_000;
|
|
198
192
|
/**
|
|
199
193
|
* Watch for a reader going from absent/idle to present and fire `onConnect`
|
|
200
194
|
* out of band, instead of waiting for the next scheduled warm tick (RUSH-2484).
|
|
@@ -439,7 +433,7 @@ export function updateImmutableMemos(sessions, nowMs = Date.now()) {
|
|
|
439
433
|
* non-stream ActiveSession consumer is unaffected. Best-effort: a DB error leaves
|
|
440
434
|
* the row untouched.
|
|
441
435
|
*/
|
|
442
|
-
|
|
436
|
+
function mergeSessionSummary(s) {
|
|
443
437
|
if (!s.sessionId)
|
|
444
438
|
return s;
|
|
445
439
|
try {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SessionMeta } from './types.js';
|
|
2
|
-
|
|
2
|
+
interface SessionHtmlOptions {
|
|
3
3
|
/** Whether the Markdown was rendered with redaction on — shown in the footer. */
|
|
4
4
|
redacted?: boolean;
|
|
5
5
|
}
|
|
@@ -9,26 +9,6 @@ interface Chip {
|
|
|
9
9
|
value: string;
|
|
10
10
|
}
|
|
11
11
|
export declare function escapeHtml(text: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Lift every folded reasoning block out of the Markdown, leaving a sentinel.
|
|
14
|
-
*
|
|
15
|
-
* `renderer.html` escapes raw HTML unconditionally — the transcript body is model
|
|
16
|
-
* and tool output, so nothing in it may round-trip as markup. That also escaped
|
|
17
|
-
* the `<details>` wrapper `--reasoning fold` emits, which is why the disclosure
|
|
18
|
-
* element has to be reconstructed here instead of allowlisted through.
|
|
19
|
-
*
|
|
20
|
-
* Allowlisting was tried twice and is the wrong shape: marked hands the same
|
|
21
|
-
* markup over as several different raw strings depending on context (a whole-token
|
|
22
|
-
* gate passed the opening tag and escaped the closing one in a real document), and
|
|
23
|
-
* a bare `<details>` in ordinary prose is a complete INLINE html token — so prose
|
|
24
|
-
* that merely mentions the tag would emit a live, unclosed element that swallows
|
|
25
|
-
* every later turn into it. Reconstructing both ends here makes the pairing
|
|
26
|
-
* structural: it cannot be unbalanced by anything the transcript contains.
|
|
27
|
-
*/
|
|
28
|
-
export declare function liftFoldBlocks(markdown: string): {
|
|
29
|
-
text: string;
|
|
30
|
-
blocks: string[];
|
|
31
|
-
};
|
|
32
12
|
/** Human duration — "13 minutes", never "12m 49s". */
|
|
33
13
|
export declare function formatDuration(ms: number): string;
|
|
34
14
|
/**
|
|
@@ -75,7 +75,7 @@ const FOLD_BLOCK = /<details>\n<summary>Reasoning<\/summary>\n\n([\s\S]*?)\n\n<\
|
|
|
75
75
|
* every later turn into it. Reconstructing both ends here makes the pairing
|
|
76
76
|
* structural: it cannot be unbalanced by anything the transcript contains.
|
|
77
77
|
*/
|
|
78
|
-
|
|
78
|
+
function liftFoldBlocks(markdown) {
|
|
79
79
|
const blocks = [];
|
|
80
80
|
// A transcript that literally contains the sentinel must not be able to forge a
|
|
81
81
|
// disclosure element, so break any occurrence before inserting our own.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Word } from 'unbash';
|
|
2
|
-
|
|
2
|
+
interface ShellProgramExtraction {
|
|
3
3
|
programs: string[];
|
|
4
4
|
occurrences: ShellProgramOccurrence[];
|
|
5
5
|
diagnostics: string[];
|
|
@@ -30,3 +30,4 @@ export declare function isShellExecTool(tool: string | undefined): boolean;
|
|
|
30
30
|
export declare function staticShellWord(word: Word | undefined): string | undefined;
|
|
31
31
|
/** Parse Bash without executing it and return every statically identifiable program. */
|
|
32
32
|
export declare function extractShellPrograms(source: string, depth?: number): ShellProgramExtraction;
|
|
33
|
+
export {};
|
|
@@ -49,9 +49,22 @@ export interface QuestionOption {
|
|
|
49
49
|
* {@link AwaitingReason}; `options` is present when the agent offered discrete choices.
|
|
50
50
|
*/
|
|
51
51
|
export interface StructuredQuestion {
|
|
52
|
+
/**
|
|
53
|
+
* The question itself — the trailing ask, not the whole message. For a prose
|
|
54
|
+
* question this is the extracted trailing question block (see
|
|
55
|
+
* {@link extractProseQuestion}); for a structured harness question it is the
|
|
56
|
+
* agent-supplied question text, unchanged.
|
|
57
|
+
*/
|
|
52
58
|
text: string;
|
|
53
59
|
reason: AwaitingReason;
|
|
54
60
|
options?: QuestionOption[];
|
|
61
|
+
/**
|
|
62
|
+
* Optional preceding prose for a prose question — the report/explanation that
|
|
63
|
+
* came BEFORE the trailing ask, with its Markdown and newlines preserved so a
|
|
64
|
+
* consumer can render it as context under the question. Absent for a structured
|
|
65
|
+
* harness question and when a prose question carries no preceding context.
|
|
66
|
+
*/
|
|
67
|
+
context?: string;
|
|
55
68
|
}
|
|
56
69
|
export interface DetectedPr {
|
|
57
70
|
url: string;
|
|
@@ -139,7 +152,7 @@ export interface SessionState {
|
|
|
139
152
|
/** Displayable files/screenshots attached to the session prompt. */
|
|
140
153
|
attachments?: SessionAttachment[];
|
|
141
154
|
}
|
|
142
|
-
|
|
155
|
+
interface StateContext {
|
|
143
156
|
/** Session file mtime; drives running-vs-stale. */
|
|
144
157
|
mtimeMs?: number;
|
|
145
158
|
cwd?: string;
|
|
@@ -196,13 +209,6 @@ export declare function isTicketCreateTool(name?: string, command?: string): boo
|
|
|
196
209
|
* take `#<number>`. Returns undefined when neither shape is present.
|
|
197
210
|
*/
|
|
198
211
|
export declare function extractCreatedTicket(text?: string): string | undefined;
|
|
199
|
-
/**
|
|
200
|
-
* Pull the plan markdown out of an `ExitPlanMode` tool_use event's args. The
|
|
201
|
-
* Claude tool schema is `{ plan: string }`; the transcript parser already
|
|
202
|
-
* lifts `input` onto `event.args`. Returns undefined for a missing/empty plan
|
|
203
|
-
* so consumers can rely on `plan?: string` truthiness.
|
|
204
|
-
*/
|
|
205
|
-
export declare function extractPlanText(args?: Record<string, any>): string | undefined;
|
|
206
212
|
/**
|
|
207
213
|
* Structured question from a Claude `AskUserQuestion` tool call. Its input is
|
|
208
214
|
* `{ questions: [{ question, header, options: [{label, description}] }] }` and the
|
|
@@ -212,6 +218,33 @@ export declare function extractPlanText(args?: Record<string, any>): string | un
|
|
|
212
218
|
* 1-based selection digit as `key`.
|
|
213
219
|
*/
|
|
214
220
|
export declare function structuredQuestionFromAsk(args?: Record<string, any>): StructuredQuestion | undefined;
|
|
221
|
+
/** The separated question the CLI shows: the trailing ask + optional preceding context. */
|
|
222
|
+
export interface ProseQuestion {
|
|
223
|
+
/** The trailing ask, with its original Markdown and line breaks. */
|
|
224
|
+
text: string;
|
|
225
|
+
/** The preceding report/explanation, Markdown + newlines preserved; absent when none. */
|
|
226
|
+
context?: string;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Split a run of prose into its trailing QUESTION and the CONTEXT before it,
|
|
230
|
+
* instead of flattening a whole report into one line (the old `oneLine(content)`
|
|
231
|
+
* that copied a merged report and lost its Markdown). Returns undefined when the
|
|
232
|
+
* text has no real trailing ask.
|
|
233
|
+
*
|
|
234
|
+
* Rules, each pinned by a test:
|
|
235
|
+
* - The ask must be TRAILING: the last eligible non-empty line is the question,
|
|
236
|
+
* or the search stops (a report line after the question means it isn't the ask).
|
|
237
|
+
* - A `?` that lives ONLY inside a fenced code block, an inline `code` span, or a
|
|
238
|
+
* `>` blockquote does NOT count — those lines are ineligible to end the ask
|
|
239
|
+
* (they still ride along in `context`).
|
|
240
|
+
* - Multiple/multiline related asks are kept together (a contiguous run of
|
|
241
|
+
* question / list-item / `:`-lead-in lines), never dropped.
|
|
242
|
+
* - When the ask shares ONE line with preceding prose, the leading non-question
|
|
243
|
+
* sentences peel into `context` and only the trailing question sentence(s) stay
|
|
244
|
+
* in `text`.
|
|
245
|
+
* - Both fields preserve newlines and Markdown.
|
|
246
|
+
*/
|
|
247
|
+
export declare function extractProseQuestion(raw: string): ProseQuestion | undefined;
|
|
215
248
|
/**
|
|
216
249
|
* Infer live activity + a preview from a chronological event slice. `pr` /
|
|
217
250
|
* `ticket` / `worktree` are attached by `inferSessionState`; this focuses on the
|