@phnx-labs/agents-cli 1.22.113 → 1.22.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +10 -11
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +59 -61
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +3 -3
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +21 -2
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -5
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +13 -104
- package/dist/commands/sessions.js +10 -10
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +1 -1
- package/dist/commands/share.d.ts +8 -8
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +1 -1
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +5 -5
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +4 -4
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +1 -1
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -4
- package/dist/lib/daemon/daemon.js +1 -1
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon-services.d.ts +2 -1
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +2 -1
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +2 -1
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +1 -1
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +2 -2
- package/dist/lib/feed/activity.d.ts +8 -33
- package/dist/lib/feed/activity.js +8 -8
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/events.d.ts +2 -47
- package/dist/lib/feed/events.js +1 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/watch.d.ts +1 -2
- package/dist/lib/feed/watch.js +0 -1
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +2 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -65
- package/dist/lib/git.js +3 -142
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -24
- package/dist/lib/hosts/dispatch.js +2 -2
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +4 -3
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +7 -1
- package/dist/lib/redact.js +94 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +3 -2
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +4 -26
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/detached.d.ts +2 -1
- package/dist/lib/session/detached.js +2 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +2 -1
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +2 -5
- package/dist/lib/session/remote/peer-stream.js +2 -2
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +2 -7
- package/dist/lib/session/remote/watch.js +3 -3
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +2 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +5 -5
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/share/delete.d.ts +5 -4
- package/dist/lib/share/html.d.ts +0 -2
- package/dist/lib/share/html.js +9 -9
- package/dist/lib/share/http-error.d.ts +3 -2
- package/dist/lib/share/og.d.ts +2 -1
- package/dist/lib/share/provision.d.ts +2 -2
- package/dist/lib/share/publish.d.ts +4 -13
- package/dist/lib/share/publish.js +2 -2
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +4 -5
- package/dist/lib/smart-launch.js +1 -1
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +5 -4
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.js +1 -1
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +1 -4
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +4 -3
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +1 -3
- package/dist/lib/traces/provision.js +1 -1
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +3 -3
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +2 -3
- package/scripts/postinstall.js +5 -4
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
|
@@ -55,7 +55,7 @@ export type HostLink =
|
|
|
55
55
|
* the extension agree on when a window is dead.
|
|
56
56
|
*/
|
|
57
57
|
export declare const HOST_HEARTBEAT_STALE_MS: number;
|
|
58
|
-
|
|
58
|
+
interface HostLinkInput {
|
|
59
59
|
/** The agent process is still alive (already pid-reuse-checked by the caller). */
|
|
60
60
|
pidAlive: boolean;
|
|
61
61
|
/**
|
|
@@ -102,3 +102,4 @@ export declare function classifyHostLink(input: HostLinkInput): HostLink;
|
|
|
102
102
|
* Pure — same injected signals as the classifier.
|
|
103
103
|
*/
|
|
104
104
|
export declare function hostWindowLost(input: HostLinkInput): boolean;
|
|
105
|
+
export {};
|
|
@@ -13,6 +13,6 @@ import type { InjectTarget } from '../terminal/index.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* Map a session's `ReplyRail` to an engine `InjectTarget`. Today only tmux rails
|
|
15
15
|
* are externally addressable (provenance.ts:143-149); a null rail yields null and
|
|
16
|
-
* the caller must supply a target another way (a
|
|
16
|
+
* the caller must supply a target another way (a macOS window).
|
|
17
17
|
*/
|
|
18
18
|
export declare function injectTargetFromReplyRail(rail: ReplyRail): InjectTarget | null;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* Map a session's `ReplyRail` to an engine `InjectTarget`. Today only tmux rails
|
|
13
13
|
* are externally addressable (provenance.ts:143-149); a null rail yields null and
|
|
14
|
-
* the caller must supply a target another way (a
|
|
14
|
+
* the caller must supply a target another way (a macOS window).
|
|
15
15
|
*/
|
|
16
16
|
export function injectTargetFromReplyRail(rail) {
|
|
17
17
|
if (rail && rail.rail === 'tmux') {
|
|
@@ -21,14 +21,6 @@
|
|
|
21
21
|
* the raw file count rather than quietly differing.
|
|
22
22
|
*/
|
|
23
23
|
import type { SessionEvent } from './types.js';
|
|
24
|
-
/**
|
|
25
|
-
* Minimum quiet time after the assistant's last event before a user message
|
|
26
|
-
* is classified as an **agent silent stall**: the model went quiet on its own
|
|
27
|
-
* and sat idle until the human resumed. Shorter gaps are normal turn-taking.
|
|
28
|
-
* 5 minutes is long enough to exclude "user typing the next instruction" and
|
|
29
|
-
* short enough to catch "went silent mid-task until I said continue."
|
|
30
|
-
*/
|
|
31
|
-
export declare const SILENT_STALL_SECONDS = 300;
|
|
32
24
|
/** Behavioural facets of one session. Serialized as JSON into `session_insights`. */
|
|
33
25
|
export interface InsightFacets {
|
|
34
26
|
toolCounts: Record<string, number>;
|
|
@@ -112,11 +104,6 @@ export interface InsightFacets {
|
|
|
112
104
|
* can be re-bucketed for a different display timezone without re-parsing.
|
|
113
105
|
*/
|
|
114
106
|
export declare function computeInsightFacets(events: SessionEvent[], timezoneOffsetMinutes?: number): InsightFacets;
|
|
115
|
-
/**
|
|
116
|
-
* Classify a long quiet gap after the assistant's last event as an agent silent stall.
|
|
117
|
-
* Optionally also marks an explicit resume nudge ("continue", …) after that silence.
|
|
118
|
-
*/
|
|
119
|
-
export declare function classifySilentStall(gapSeconds: number, userText: string, friction: Record<string, number>, corrections: Record<string, number>): void;
|
|
120
107
|
/** Percentile of a numeric sample, nearest-rank. Returns 0 for an empty sample. */
|
|
121
108
|
export declare function percentile(values: number[], p: number): number;
|
|
122
109
|
/** Bucket response gaps for display. Returns every bucket, including empty ones. */
|
|
@@ -132,7 +119,7 @@ export interface SessionSpan {
|
|
|
132
119
|
endMs: number;
|
|
133
120
|
}
|
|
134
121
|
/** How much work ran concurrently, and how much of it straddled two accounts. */
|
|
135
|
-
|
|
122
|
+
interface OverlapReport {
|
|
136
123
|
/** Pairs of sessions whose spans intersect. */
|
|
137
124
|
overlappingPairs: number;
|
|
138
125
|
/** Of those, pairs belonging to DIFFERENT accounts. */
|
|
@@ -169,9 +156,10 @@ export interface InsightAction {
|
|
|
169
156
|
evidenceCount: number;
|
|
170
157
|
sampleSessionIds: string[];
|
|
171
158
|
}
|
|
172
|
-
|
|
159
|
+
interface SessionFacetEvidence {
|
|
173
160
|
id: string;
|
|
174
161
|
facets: InsightFacets;
|
|
175
162
|
}
|
|
176
163
|
/** Build a stable, evidence-backed action list without exposing transcript text. */
|
|
177
164
|
export declare function buildInsightActions(sessions: SessionFacetEvidence[]): InsightAction[];
|
|
165
|
+
export {};
|
|
@@ -60,7 +60,7 @@ const GAP_CEILING_SECONDS = 3600;
|
|
|
60
60
|
* 5 minutes is long enough to exclude "user typing the next instruction" and
|
|
61
61
|
* short enough to catch "went silent mid-task until I said continue."
|
|
62
62
|
*/
|
|
63
|
-
|
|
63
|
+
const SILENT_STALL_SECONDS = 300;
|
|
64
64
|
/** Response-gap buckets, in ascending order. Upper bound is exclusive. */
|
|
65
65
|
const GAP_BUCKETS = [
|
|
66
66
|
['<10s', 10], ['10-30s', 30], ['30s-1m', 60], ['1-2m', 120],
|
|
@@ -326,7 +326,7 @@ const RESUME_NUDGE_PATTERN = /\b(?:continue|keep going|don'?t stop|resume|pick u
|
|
|
326
326
|
* Classify a long quiet gap after the assistant's last event as an agent silent stall.
|
|
327
327
|
* Optionally also marks an explicit resume nudge ("continue", …) after that silence.
|
|
328
328
|
*/
|
|
329
|
-
|
|
329
|
+
function classifySilentStall(gapSeconds, userText, friction, corrections) {
|
|
330
330
|
for (const [label, min, max] of SILENT_STALL_BUCKETS) {
|
|
331
331
|
if (gapSeconds >= min && gapSeconds < max) {
|
|
332
332
|
bump(friction, label);
|
|
@@ -14,24 +14,7 @@ export declare function resolveTmuxAliasState(selector: string, socket?: string)
|
|
|
14
14
|
* identity to another machine.
|
|
15
15
|
*/
|
|
16
16
|
export declare function shouldAttachLocalTmuxAliasBeforeFleet(selector: string | undefined, hosts: string[]): selector is string;
|
|
17
|
-
|
|
18
|
-
* Attach a live tmux session named exactly as the selector, without needing the
|
|
19
|
-
* session index to know anything about it.
|
|
20
|
-
*
|
|
21
|
-
* SES-41 requires a `ag-<agent>-<8hex>` tmux alias to resolve, but the alias's
|
|
22
|
-
* hex is the LAUNCH id, not the harness session id, and for a harness that
|
|
23
|
-
* writes no `state/sessions/<pid>.json` record there is no mapping back to a
|
|
24
|
-
* SessionMeta at all. The pane is the thing the user asked for, and its NAME is
|
|
25
|
-
* sufficient to attach it — so an unattributable session is still reachable
|
|
26
|
-
* instead of being a dead end that forces raw `tmux -S … attach`.
|
|
27
|
-
*
|
|
28
|
-
* Returns false when this is not an alias, the server/session is absent, or
|
|
29
|
-
* every pane is dead — the caller then continues to normal id resolution.
|
|
30
|
-
* SES-39's "re-read `pane_dead` immediately before attach" is honoured here:
|
|
31
|
-
* liveness is queried at attach time, not read from a roster.
|
|
32
|
-
*/
|
|
33
|
-
export declare function attachLiveTmuxAlias(selector: string): Promise<boolean>;
|
|
34
|
-
export type LocalAliasBySuffix = {
|
|
17
|
+
type LocalAliasBySuffix = {
|
|
35
18
|
kind: 'alias';
|
|
36
19
|
alias: string;
|
|
37
20
|
} | {
|
|
@@ -67,3 +50,4 @@ export declare function resolveUniqueLocalLiveAliasBySuffix(shortId: string, soc
|
|
|
67
50
|
* resolution / the fleet race.
|
|
68
51
|
*/
|
|
69
52
|
export declare function attachLocalLiveSelector(selector: string | undefined, hosts: string[]): Promise<boolean>;
|
|
53
|
+
export {};
|
|
@@ -67,7 +67,7 @@ export function shouldAttachLocalTmuxAliasBeforeFleet(selector, hosts) {
|
|
|
67
67
|
* SES-39's "re-read `pane_dead` immediately before attach" is honoured here:
|
|
68
68
|
* liveness is queried at attach time, not read from a roster.
|
|
69
69
|
*/
|
|
70
|
-
|
|
70
|
+
async function attachLiveTmuxAlias(selector) {
|
|
71
71
|
const socket = getDefaultSocketPath();
|
|
72
72
|
if (await resolveTmuxAliasState(selector, socket) !== 'live')
|
|
73
73
|
return false;
|
|
@@ -24,7 +24,6 @@ export interface MigrationRecord {
|
|
|
24
24
|
status: 'completed' | 'failed';
|
|
25
25
|
error?: string;
|
|
26
26
|
}
|
|
27
|
-
export declare function migrationsLedgerPath(): string;
|
|
28
27
|
/**
|
|
29
28
|
* Append one migration event. A ledger write must never break a migration that
|
|
30
29
|
* otherwise succeeded, so a write failure is a visible warning, not a throw.
|
|
@@ -13,7 +13,7 @@ import * as fs from 'fs';
|
|
|
13
13
|
import * as path from 'path';
|
|
14
14
|
import chalk from 'chalk';
|
|
15
15
|
import { homeDir } from '../platform/paths.js';
|
|
16
|
-
|
|
16
|
+
function migrationsLedgerPath() {
|
|
17
17
|
return path.join(homeDir(), '.agents', '.history', 'migrations.jsonl');
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -21,10 +21,6 @@
|
|
|
21
21
|
* consume so its DB is not written with rows it never renders.
|
|
22
22
|
*/
|
|
23
23
|
import { type ConfiguredDeviceRole } from '../device-config.js';
|
|
24
|
-
/** Cap on sessions published per device — the payload stays what a picker shows. */
|
|
25
|
-
export declare const SESSION_MIRROR_MAX_ROWS = 200;
|
|
26
|
-
/** First-user-message snippet ceiling; the full turn stays on the owning box. */
|
|
27
|
-
export declare const SESSION_MIRROR_SNIPPET_MAX = 280;
|
|
28
24
|
/** Mirror rows older than this since their last sync are pruned (staleness/size ceiling). */
|
|
29
25
|
export declare const SESSION_MIRROR_MAX_AGE_MS: number;
|
|
30
26
|
/** Caps for the timeline block on a published mirror row. */
|
|
@@ -32,12 +28,12 @@ export declare const SESSION_MIRROR_MAX_STEPS = 8;
|
|
|
32
28
|
export declare const SESSION_MIRROR_STEP_TEXT_MAX = 160;
|
|
33
29
|
export declare const SESSION_MIRROR_REQUEST_MAX = 2000;
|
|
34
30
|
export declare const SESSION_MIRROR_MAX_FILES = 8;
|
|
35
|
-
|
|
31
|
+
interface PublishSessionMirrorOptions {
|
|
36
32
|
userAgentsDir?: string;
|
|
37
33
|
device?: string;
|
|
38
34
|
limit?: number;
|
|
39
35
|
}
|
|
40
|
-
|
|
36
|
+
interface PublishSessionMirrorResult {
|
|
41
37
|
published: boolean;
|
|
42
38
|
changed: boolean;
|
|
43
39
|
count: number;
|
|
@@ -47,14 +43,14 @@ export interface PublishSessionMirrorResult {
|
|
|
47
43
|
}
|
|
48
44
|
/** Publish this device's most-recent local sessions into its owned shared-state file. */
|
|
49
45
|
export declare function publishSessionMirrorToSharedStore(options?: PublishSessionMirrorOptions): Promise<PublishSessionMirrorResult>;
|
|
50
|
-
|
|
46
|
+
interface ConsumeSessionMirrorOptions {
|
|
51
47
|
userAgentsDir?: string;
|
|
52
48
|
device?: string;
|
|
53
49
|
role?: ConfiguredDeviceRole;
|
|
54
50
|
now?: number;
|
|
55
51
|
maxAgeMs?: number;
|
|
56
52
|
}
|
|
57
|
-
|
|
53
|
+
interface ConsumeSessionMirrorResult {
|
|
58
54
|
sources: string[];
|
|
59
55
|
merged: number;
|
|
60
56
|
pruned: number;
|
|
@@ -71,3 +67,4 @@ export interface ConsumeSessionMirrorResult {
|
|
|
71
67
|
* marked worker skips: the mirror feeds an interactive picker it never renders.
|
|
72
68
|
*/
|
|
73
69
|
export declare function consumeSessionMirrorFromSharedStore(options?: ConsumeSessionMirrorOptions): ConsumeSessionMirrorResult;
|
|
70
|
+
export {};
|
|
@@ -26,9 +26,9 @@ import { getUserAgentsDir } from '../state.js';
|
|
|
26
26
|
import { machineId, normalizeHost } from './sync/config.js';
|
|
27
27
|
import { pruneMirrorSessions, queryLocalOriginSessionsForMirror, upsertMirrorSession, } from './db.js';
|
|
28
28
|
/** Cap on sessions published per device — the payload stays what a picker shows. */
|
|
29
|
-
|
|
29
|
+
const SESSION_MIRROR_MAX_ROWS = 200;
|
|
30
30
|
/** First-user-message snippet ceiling; the full turn stays on the owning box. */
|
|
31
|
-
|
|
31
|
+
const SESSION_MIRROR_SNIPPET_MAX = 280;
|
|
32
32
|
/** Mirror rows older than this since their last sync are pruned (staleness/size ceiling). */
|
|
33
33
|
export const SESSION_MIRROR_MAX_AGE_MS = 14 * 24 * 60 * 60_000;
|
|
34
34
|
/** Caps for the timeline block on a published mirror row. */
|
|
@@ -71,17 +71,6 @@ export declare function parseClaude(filePath: string, opts?: ParseSessionOptions
|
|
|
71
71
|
export declare function parseClaudeContent(content: string, opts?: ParseSessionOptions): SessionEvent[];
|
|
72
72
|
/** Parse a Codex JSONL session file into normalized events. */
|
|
73
73
|
export declare function parseCodex(filePath: string): SessionEvent[];
|
|
74
|
-
/**
|
|
75
|
-
* Extract target file path(s) from a Codex apply_patch envelope. The patch body
|
|
76
|
-
* opens with `*** Begin Patch` and carries one or more file ops of the form
|
|
77
|
-
* `*** Update File: <path>` / `*** Add File: <path>` / `*** Delete File: <path>`.
|
|
78
|
-
* Returns every path in order (a multi-file patch emits multiple paths so
|
|
79
|
-
* artifact discovery sees each file — RUSH-1410). Empty when unparseable.
|
|
80
|
-
*/
|
|
81
|
-
export declare function applyPatchTargets(input: string): Array<{
|
|
82
|
-
path: string;
|
|
83
|
-
op: 'Add' | 'Update' | 'Delete';
|
|
84
|
-
}>;
|
|
85
74
|
export declare function applyPatchTargetPaths(input: string): string[];
|
|
86
75
|
/**
|
|
87
76
|
* Codex writes its turn TWICE in one rollout: the raw `response_item` records
|
|
@@ -119,14 +108,6 @@ export declare function parseGemini(filePath: string): SessionEvent[];
|
|
|
119
108
|
* request step and a completion step that share the id).
|
|
120
109
|
*/
|
|
121
110
|
export declare function parseAntigravity(dbPath: string): SessionEvent[];
|
|
122
|
-
/**
|
|
123
|
-
* Separator between a container file and the id it holds inside a *composite*
|
|
124
|
-
* session `file_path`. Some harnesses keep every session in ONE file (OpenCode's
|
|
125
|
-
* single `opencode.db`), so the index stores `<container>#<session-id>` rather
|
|
126
|
-
* than one path per session — e.g.
|
|
127
|
-
* `/home/u/.local/share/opencode/opencode.db#ses_02410a2c…`.
|
|
128
|
-
*/
|
|
129
|
-
export declare const SESSION_FILE_PATH_SEP = "#";
|
|
130
111
|
/**
|
|
131
112
|
* Split a stored session `file_path` into its on-disk container and the optional
|
|
132
113
|
* in-container fragment. For a plain per-session file the container is the path
|
|
@@ -179,7 +160,7 @@ export declare function sessionFilePathContainer(filePath: string): string;
|
|
|
179
160
|
* session that committed / opened / merged a PR and to report a tool-failure
|
|
180
161
|
* count the event stream cannot supply.
|
|
181
162
|
*/
|
|
182
|
-
|
|
163
|
+
interface GrokSessionSignals {
|
|
183
164
|
gitCommitCount: number;
|
|
184
165
|
prCreatedCount: number;
|
|
185
166
|
prMergedCount: number;
|
|
@@ -232,18 +213,6 @@ export declare function parseOpenCode(filePath: string): SessionEvent[];
|
|
|
232
213
|
export declare function parseOpencodeCloud(filePath: string): SessionEvent[];
|
|
233
214
|
/** Parse a Rush JSONL session file into normalized events. */
|
|
234
215
|
export declare function parseRush(filePath: string): SessionEvent[];
|
|
235
|
-
/**
|
|
236
|
-
* Muse Code session.jsonl → normalized events.
|
|
237
|
-
*
|
|
238
|
-
* Muse records an append-only event log. We map:
|
|
239
|
-
* - runtime.command_intake.received / turn_submit → user message
|
|
240
|
-
* - assistant_message_committed → assistant message
|
|
241
|
-
* - model_completed.usage → usage
|
|
242
|
-
* - tool-related events when present
|
|
243
|
-
*/
|
|
244
|
-
export declare function parseMuse(filePath: string): SessionEvent[];
|
|
245
|
-
/** Parse a Hermes session JSON file into normalized events. */
|
|
246
|
-
export declare function parseHermes(filePath: string): SessionEvent[];
|
|
247
216
|
/** Parse a Kimi session state.json file by reading its agents/main/wire.jsonl. */
|
|
248
217
|
export declare function parseKimi(filePath: string): SessionEvent[];
|
|
249
218
|
/** Parse Cursor's Anthropic-shaped message JSONL transcript. */
|
|
@@ -609,7 +609,7 @@ export function parseCodex(filePath) {
|
|
|
609
609
|
* Returns every path in order (a multi-file patch emits multiple paths so
|
|
610
610
|
* artifact discovery sees each file — RUSH-1410). Empty when unparseable.
|
|
611
611
|
*/
|
|
612
|
-
|
|
612
|
+
function applyPatchTargets(input) {
|
|
613
613
|
const targets = [];
|
|
614
614
|
const re = /^\*\*\* (Update|Add|Delete) File: (.+)$/gm;
|
|
615
615
|
for (const m of input.matchAll(re)) {
|
|
@@ -1391,7 +1391,7 @@ export function parseAntigravity(dbPath) {
|
|
|
1391
1391
|
* than one path per session — e.g.
|
|
1392
1392
|
* `/home/u/.local/share/opencode/opencode.db#ses_02410a2c…`.
|
|
1393
1393
|
*/
|
|
1394
|
-
|
|
1394
|
+
const SESSION_FILE_PATH_SEP = '#';
|
|
1395
1395
|
/**
|
|
1396
1396
|
* Split a stored session `file_path` into its on-disk container and the optional
|
|
1397
1397
|
* in-container fragment. For a plain per-session file the container is the path
|
|
@@ -2086,7 +2086,7 @@ export function parseRush(filePath) {
|
|
|
2086
2086
|
* - model_completed.usage → usage
|
|
2087
2087
|
* - tool-related events when present
|
|
2088
2088
|
*/
|
|
2089
|
-
|
|
2089
|
+
function parseMuse(filePath) {
|
|
2090
2090
|
const content = safeReadSessionFile(filePath);
|
|
2091
2091
|
const lines = content.split('\n').filter((l) => l.trim());
|
|
2092
2092
|
const events = [];
|
|
@@ -2166,7 +2166,7 @@ export function parseMuse(filePath) {
|
|
|
2166
2166
|
return events;
|
|
2167
2167
|
}
|
|
2168
2168
|
/** Parse a Hermes session JSON file into normalized events. */
|
|
2169
|
-
|
|
2169
|
+
function parseHermes(filePath) {
|
|
2170
2170
|
let session;
|
|
2171
2171
|
try {
|
|
2172
2172
|
session = JSON.parse(safeReadSessionFile(filePath));
|
|
@@ -44,7 +44,7 @@ export declare function loadPresence(dir?: string): Record<string, PresenceRecor
|
|
|
44
44
|
export declare function savePresence(map: Record<string, PresenceRecord>, dir?: string): void;
|
|
45
45
|
/** The subset of an `ActiveSession` the presence adapter reads (structural, so
|
|
46
46
|
* this module doesn't import the heavy active-session graph). */
|
|
47
|
-
|
|
47
|
+
interface ActiveSessionLike {
|
|
48
48
|
sessionId?: string;
|
|
49
49
|
kind: string;
|
|
50
50
|
/** 'terminal' (interactive) | 'headless' | 'teams' | 'cloud' | ... */
|
|
@@ -83,3 +83,4 @@ export declare function reconcilePresence(prev: Record<string, PresenceRecord>,
|
|
|
83
83
|
next: Record<string, PresenceRecord>;
|
|
84
84
|
transitions: PresenceTransition[];
|
|
85
85
|
};
|
|
86
|
+
export {};
|
|
@@ -66,7 +66,7 @@ export declare function cleanSessionPrompt(raw: string): string;
|
|
|
66
66
|
* path, a pasted shell line, or a skill's install directory.
|
|
67
67
|
*/
|
|
68
68
|
export type UserPromptKind = 'text' | 'image' | 'command' | 'skill';
|
|
69
|
-
|
|
69
|
+
interface ClassifiedPrompt {
|
|
70
70
|
/**
|
|
71
71
|
* The one-line, display-ready form of the prompt — never a bare path. NOT
|
|
72
72
|
* length-capped: the recap card shows it in full; row consumers cap it
|
|
@@ -132,7 +132,7 @@ export declare function extractSessionTopic(raw: string): string | undefined;
|
|
|
132
132
|
* dropped in, or an `@path` directory reference. `name` is the basename (or the
|
|
133
133
|
* `@ref` verbatim) — the sidebar renders these as chips beside the request text.
|
|
134
134
|
*/
|
|
135
|
-
|
|
135
|
+
interface RequestAttachmentRef {
|
|
136
136
|
kind: 'image' | 'file' | 'dir';
|
|
137
137
|
name: string;
|
|
138
138
|
}
|
|
@@ -194,3 +194,4 @@ export declare function firstSentence(text: string, cap?: number): string;
|
|
|
194
194
|
export declare function tidyRequest(raw: string | undefined, opts?: {
|
|
195
195
|
attachments?: SessionAttachment[];
|
|
196
196
|
}, depth?: number): TidyRequest | undefined;
|
|
197
|
+
export {};
|
|
@@ -193,7 +193,7 @@ export function cleanSessionPrompt(raw) {
|
|
|
193
193
|
let text = stripTeamWrappers(raw).replace(/\r/g, '').trim();
|
|
194
194
|
if (!text)
|
|
195
195
|
return '';
|
|
196
|
-
text = text
|
|
196
|
+
text = stripXmlLikeTags(text);
|
|
197
197
|
const meaningful = text
|
|
198
198
|
.split('\n')
|
|
199
199
|
.map(line => line.trim())
|
|
@@ -201,6 +201,43 @@ export function cleanSessionPrompt(raw) {
|
|
|
201
201
|
.filter(line => !NOISE_LINE_PATTERNS.some(pattern => pattern.test(line)));
|
|
202
202
|
return meaningful.join('\n').trim();
|
|
203
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Remove XML-like tags in one pass, including nested fragments such as
|
|
206
|
+
* `<scr<b>ipt>`. A candidate starts only with a valid tag-name prefix, so
|
|
207
|
+
* ordinary comparisons such as `1 < 2 > 0` remain prose.
|
|
208
|
+
*/
|
|
209
|
+
function stripXmlLikeTags(text) {
|
|
210
|
+
const chunks = [];
|
|
211
|
+
let plainStart = 0;
|
|
212
|
+
let tagStart = -1;
|
|
213
|
+
let depth = 0;
|
|
214
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
215
|
+
const char = text[index];
|
|
216
|
+
if (depth === 0) {
|
|
217
|
+
if (char !== '<')
|
|
218
|
+
continue;
|
|
219
|
+
const firstNameIndex = text[index + 1] === '/' ? index + 2 : index + 1;
|
|
220
|
+
if (!/[a-z_]/i.test(text[firstNameIndex] ?? ''))
|
|
221
|
+
continue;
|
|
222
|
+
chunks.push(text.slice(plainStart, index));
|
|
223
|
+
tagStart = index;
|
|
224
|
+
depth = 1;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (char === '<') {
|
|
228
|
+
depth += 1;
|
|
229
|
+
}
|
|
230
|
+
else if (char === '>' && --depth === 0) {
|
|
231
|
+
plainStart = index + 1;
|
|
232
|
+
tagStart = -1;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (tagStart !== -1)
|
|
236
|
+
chunks.push(text.slice(tagStart));
|
|
237
|
+
else
|
|
238
|
+
chunks.push(text.slice(plainStart));
|
|
239
|
+
return chunks.join('');
|
|
240
|
+
}
|
|
204
241
|
/**
|
|
205
242
|
* A skill invocation injects a system line naming the skill's install directory:
|
|
206
243
|
* "Base directory for this skill: /home/.../skills/<name>"
|
|
@@ -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,12 @@ 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
|
-
/** Bytes of a peer's stderr retained for the `unavailable` reason. */
|
|
9
|
-
export declare const PEER_STDERR_BYTES = 2048;
|
|
10
|
-
/** How often a parked peer re-checks the device registry for a refresh. */
|
|
11
|
-
export declare const PEER_REGISTRY_POLL_MS = 5000;
|
|
12
8
|
/**
|
|
13
9
|
* Reconnect delay for `failures` consecutive failed spawns: 0 for a healthy
|
|
14
10
|
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS}.
|
|
15
11
|
*/
|
|
16
12
|
export declare function peerBackoffDelayMs(failures: number, base?: number, cap?: number): number;
|
|
17
|
-
|
|
13
|
+
interface PeerStreamOptions {
|
|
18
14
|
/** The device to subscribe to. */
|
|
19
15
|
device: DeviceProfile;
|
|
20
16
|
/** Remote command to run over ssh, already shell-quoted for the peer's OS. */
|
|
@@ -45,3 +41,4 @@ export interface PeerStreamOptions {
|
|
|
45
41
|
* backoff. Resolves when the signal aborts or the peer cannot be addressed.
|
|
46
42
|
*/
|
|
47
43
|
export declare function streamFromPeer(options: PeerStreamOptions): Promise<void>;
|
|
44
|
+
export {};
|
|
@@ -35,9 +35,9 @@ export const PEER_BACKOFF_CAP_MS = 60_000;
|
|
|
35
35
|
/** Consecutive failed spawns before the peer is parked. */
|
|
36
36
|
export const PEER_PARK_AFTER_FAILURES = 3;
|
|
37
37
|
/** Bytes of a peer's stderr retained for the `unavailable` reason. */
|
|
38
|
-
|
|
38
|
+
const PEER_STDERR_BYTES = 2_048;
|
|
39
39
|
/** How often a parked peer re-checks the device registry for a refresh. */
|
|
40
|
-
|
|
40
|
+
const PEER_REGISTRY_POLL_MS = 5_000;
|
|
41
41
|
/**
|
|
42
42
|
* Reconnect delay for `failures` consecutive failed spawns: 0 for a healthy
|
|
43
43
|
* peer, then {@link PEER_BACKOFF_BASE_MS} doubling to {@link PEER_BACKOFF_CAP_MS}.
|
|
@@ -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';
|