@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
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* shape + mtime — same function, driven off the normalized events.
|
|
16
16
|
*/
|
|
17
17
|
import * as path from 'path';
|
|
18
|
+
import { Lexer } from 'marked';
|
|
18
19
|
import { isCompletedTodoStatus, SNAPSHOT_TODO_TOOLS, summarizeToolUse } from './parse.js';
|
|
19
20
|
import { isShellExecTool } from './shell-programs.js';
|
|
20
21
|
import { classifyFileChanges } from './digest.js';
|
|
@@ -367,7 +368,7 @@ export function extractCreatedTicket(text) {
|
|
|
367
368
|
* lifts `input` onto `event.args`. Returns undefined for a missing/empty plan
|
|
368
369
|
* so consumers can rely on `plan?: string` truthiness.
|
|
369
370
|
*/
|
|
370
|
-
|
|
371
|
+
function extractPlanText(args) {
|
|
371
372
|
const plan = args?.plan;
|
|
372
373
|
if (typeof plan !== 'string')
|
|
373
374
|
return undefined;
|
|
@@ -432,13 +433,110 @@ function eventStampMs(e, mtimeMs) {
|
|
|
432
433
|
return ms;
|
|
433
434
|
}
|
|
434
435
|
/** Does an assistant message read as a question directed at the user? */
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
436
|
+
/** Strip inline-code spans so a `?` living only inside `code` never reads as a question. */
|
|
437
|
+
function stripInlineCode(s) {
|
|
438
|
+
return s.replace(/`[^`]*`/g, '');
|
|
439
|
+
}
|
|
440
|
+
/** Whether one line's prose ENDS an ask (trailing '?' or an interrogative phrase). */
|
|
441
|
+
function lineIsQuestion(line) {
|
|
442
|
+
const probe = stripInlineCode(line.trim());
|
|
443
|
+
return QUESTION_TRAILING.test(probe) || QUESTION_PHRASE.test(probe);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Split a run of prose into its trailing QUESTION and the CONTEXT before it,
|
|
447
|
+
* instead of flattening a whole report into one line (the old `oneLine(content)`
|
|
448
|
+
* that copied a merged report and lost its Markdown). Returns undefined when the
|
|
449
|
+
* text has no real trailing ask.
|
|
450
|
+
*
|
|
451
|
+
* Rules, each pinned by a test:
|
|
452
|
+
* - The ask must be TRAILING: the last eligible non-empty line is the question,
|
|
453
|
+
* or the search stops (a report line after the question means it isn't the ask).
|
|
454
|
+
* - A `?` that lives ONLY inside a fenced code block, an inline `code` span, or a
|
|
455
|
+
* `>` blockquote does NOT count — those lines are ineligible to end the ask
|
|
456
|
+
* (they still ride along in `context`).
|
|
457
|
+
* - Multiple/multiline related asks are kept together (a contiguous run of
|
|
458
|
+
* question / list-item / `:`-lead-in lines), never dropped.
|
|
459
|
+
* - When the ask shares ONE line with preceding prose, the leading non-question
|
|
460
|
+
* sentences peel into `context` and only the trailing question sentence(s) stay
|
|
461
|
+
* in `text`.
|
|
462
|
+
* - Both fields preserve newlines and Markdown.
|
|
463
|
+
*/
|
|
464
|
+
export function extractProseQuestion(raw) {
|
|
465
|
+
const content = (raw ?? '').replace(/\r\n/g, '\n');
|
|
466
|
+
if (!content.trim())
|
|
467
|
+
return undefined;
|
|
468
|
+
const lines = content.split('\n');
|
|
469
|
+
// Mark lines that may NOT end the ask: fenced-code (delimiters + body) and
|
|
470
|
+
// blockquotes. They remain part of context; they just can't BE the question.
|
|
471
|
+
const eligible = [];
|
|
472
|
+
let fence;
|
|
473
|
+
for (const line of lines) {
|
|
474
|
+
const t = line.trim();
|
|
475
|
+
const delimiter = /^(`{3,}|~{3,})(.*)$/.exec(t);
|
|
476
|
+
if (fence) {
|
|
477
|
+
if (delimiter && delimiter[1][0] === fence.marker && delimiter[1].length >= fence.length && !delimiter[2].trim())
|
|
478
|
+
fence = undefined;
|
|
479
|
+
eligible.push(false);
|
|
480
|
+
continue;
|
|
481
|
+
}
|
|
482
|
+
if (delimiter) {
|
|
483
|
+
fence = { marker: delimiter[1][0], length: delimiter[1].length };
|
|
484
|
+
eligible.push(false);
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
eligible.push(!/^>/.test(t)); // blockquote line is ineligible
|
|
488
|
+
}
|
|
489
|
+
// The trailing ask: the last eligible non-empty line must itself be a question.
|
|
490
|
+
let qEnd = -1;
|
|
491
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
492
|
+
if (!eligible[i] || !lines[i].trim())
|
|
493
|
+
continue;
|
|
494
|
+
if (lineIsQuestion(lines[i]))
|
|
495
|
+
qEnd = i;
|
|
496
|
+
break; // first eligible non-empty line from the end decides it
|
|
497
|
+
}
|
|
498
|
+
if (qEnd === -1)
|
|
499
|
+
return undefined;
|
|
500
|
+
// Expand upward over contiguous eligible non-empty ask/lead-in lines so a
|
|
501
|
+
// multi-line ask ("Questions:\n- A?\n- B?") stays whole.
|
|
502
|
+
let blockStart = qEnd;
|
|
503
|
+
for (let i = qEnd - 1; i >= 0; i--) {
|
|
504
|
+
if (!eligible[i])
|
|
505
|
+
break;
|
|
506
|
+
if (!lines[i].trim())
|
|
507
|
+
break; // blank line ends the paragraph/block
|
|
508
|
+
blockStart = i;
|
|
509
|
+
}
|
|
510
|
+
const contextAbove = lines.slice(0, blockStart).join('\n').trim();
|
|
511
|
+
let block = lines.slice(blockStart, qEnd + 1).join('\n').trim();
|
|
512
|
+
// Only plain text can contribute a sentence boundary. Code, links and other
|
|
513
|
+
// inline Markdown remain whole, even when their content contains punctuation.
|
|
514
|
+
let inlineContext = '';
|
|
515
|
+
if (!/^\s*(?:[-*]|\d+[.)])\s/m.test(block)) {
|
|
516
|
+
const boundaries = [];
|
|
517
|
+
let offset = 0;
|
|
518
|
+
for (const token of Lexer.lexInline(block)) {
|
|
519
|
+
if (token.type === 'text') {
|
|
520
|
+
for (const match of token.raw.matchAll(/(?<=[.!?])\s+/g))
|
|
521
|
+
boundaries.push(offset + match.index + match[0].length);
|
|
522
|
+
}
|
|
523
|
+
offset += token.raw.length;
|
|
524
|
+
}
|
|
525
|
+
const starts = [0, ...boundaries];
|
|
526
|
+
const sentences = starts.map((start, i) => block.slice(start, starts[i + 1] ?? block.length));
|
|
527
|
+
let firstQ = sentences.length - 1;
|
|
528
|
+
for (let i = sentences.length - 1; i >= 0; i--) {
|
|
529
|
+
if (lineIsQuestion(sentences[i]))
|
|
530
|
+
firstQ = i;
|
|
531
|
+
else
|
|
532
|
+
break;
|
|
533
|
+
}
|
|
534
|
+
inlineContext = sentences.slice(0, firstQ).join('').trim();
|
|
535
|
+
block = sentences.slice(firstQ).join('').trim();
|
|
536
|
+
}
|
|
537
|
+
const trailingContext = lines.slice(qEnd + 1).join('\n').trim();
|
|
538
|
+
const context = [contextAbove, inlineContext, trailingContext].filter(Boolean).join('\n\n').trim() || undefined;
|
|
539
|
+
return { text: block, context };
|
|
442
540
|
}
|
|
443
541
|
/** Human-readable one-liner for the latest event (message text or tool action). */
|
|
444
542
|
function describeEvent(e) {
|
|
@@ -559,9 +657,12 @@ export function inferActivity(events, ctx = {}) {
|
|
|
559
657
|
// kept the question forever).
|
|
560
658
|
const askedAtMs = eventStampMs(last, ctx.mtimeMs) ?? ctx.mtimeMs;
|
|
561
659
|
const questionFresh = askedAtMs != null && nowMs - askedAtMs < PROSE_QUESTION_FRESH_MS;
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
660
|
+
const prose = questionFresh ? extractProseQuestion(last.content ?? '') : undefined;
|
|
661
|
+
if (prose) {
|
|
662
|
+
const question = { text: prose.text, reason: 'question' };
|
|
663
|
+
if (prose.context)
|
|
664
|
+
question.context = prose.context;
|
|
665
|
+
return { ...base, activity: 'waiting_input', awaitingReason: 'question', question };
|
|
565
666
|
}
|
|
566
667
|
return { ...base, activity: 'idle' };
|
|
567
668
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { SessionAgentId } from './types.js';
|
|
2
|
-
|
|
2
|
+
type StreamLineRenderer = (line: string) => string | null;
|
|
3
3
|
export declare function makeStreamRenderer(agent: SessionAgentId, cwd?: string): StreamLineRenderer;
|
|
4
|
+
export {};
|
|
@@ -67,8 +67,6 @@ export declare const SYNC_AGENTS: SyncAgentSpec[];
|
|
|
67
67
|
* by session id so a session present in multiple version homes is uploaded once.
|
|
68
68
|
*/
|
|
69
69
|
export declare function listLocalTranscripts(spec: SyncAgentSpec): LocalTranscript[];
|
|
70
|
-
/** Session ids this machine holds locally (live home), used to skip mirror writes. */
|
|
71
|
-
export declare function localSessionIds(spec: SyncAgentSpec): Set<string>;
|
|
72
70
|
/**
|
|
73
71
|
* Absolute mirror path for a remote machine's transcript — lands in a scan root.
|
|
74
72
|
*
|
|
@@ -90,7 +88,5 @@ export declare function mirrorPath(spec: SyncAgentSpec, machine: string, relKey:
|
|
|
90
88
|
* one object per constituent file of the session directory.
|
|
91
89
|
*/
|
|
92
90
|
export declare function objectKey(machine: string, agentId: string, sessionId: string, relKey?: string): string;
|
|
93
|
-
/** R2 object key for a machine's manifest. */
|
|
94
|
-
export declare function manifestKey(machine: string): string;
|
|
95
91
|
/** Prefix under which all machine manifests live (for discovery). */
|
|
96
92
|
export declare const SESSIONS_PREFIX = "sessions/";
|
|
Binary file
|
|
@@ -18,16 +18,15 @@
|
|
|
18
18
|
* MANAGED-FIRST — the mere PRESENCE of an r2.backups bundle is NOT a BYO
|
|
19
19
|
* override. A signed-in user with a stale r2.backups bundle still backs up to
|
|
20
20
|
* managed unless they opt out explicitly: `--byo`, `AGENTS_SESSIONS_BACKEND=byo`,
|
|
21
|
-
* or a DI write token. This mirrors
|
|
22
|
-
* config is deliberately not an override) so the product's
|
|
23
|
-
* contract is identical across surfaces.
|
|
21
|
+
* or a DI write token. This mirrors the artifact-share backend contract (a
|
|
22
|
+
* persisted BYO config is deliberately not an override) so the product's
|
|
23
|
+
* managed-first contract is identical across surfaces.
|
|
24
24
|
*/
|
|
25
25
|
import { type PhoenixSession } from '../../identity/client.js';
|
|
26
26
|
import { type R2Config } from './config.js';
|
|
27
|
-
export type SessionsBackendKind = 'managed' | 'byo';
|
|
28
27
|
/** Env var that forces the BYO path. Value must be exactly `byo`. */
|
|
29
28
|
export declare const SESSIONS_BACKEND_ENV = "AGENTS_SESSIONS_BACKEND";
|
|
30
|
-
|
|
29
|
+
interface ManagedSessionsBackend {
|
|
31
30
|
kind: 'managed';
|
|
32
31
|
/** Public base URL of the managed sessions Worker, no trailing slash. */
|
|
33
32
|
baseUrl: string;
|
|
@@ -36,13 +35,13 @@ export interface ManagedSessionsBackend {
|
|
|
36
35
|
/** Phoenix userId — the object-store namespace prefix (path segment 0). */
|
|
37
36
|
userId: string;
|
|
38
37
|
}
|
|
39
|
-
|
|
38
|
+
interface ByoSessionsBackend {
|
|
40
39
|
kind: 'byo';
|
|
41
40
|
/** The resolved r2.backups credentials for the S3-compatible client. */
|
|
42
41
|
r2: R2Config;
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
type SessionsBackend = ManagedSessionsBackend | ByoSessionsBackend;
|
|
44
|
+
interface ResolveSessionsBackendOpts {
|
|
46
45
|
/** Force the BYO r2.backups path even when signed in. */
|
|
47
46
|
byo?: boolean;
|
|
48
47
|
/** DI seam — a static write token selects BYO (tests / self-host). */
|
|
@@ -59,3 +58,4 @@ export declare function shouldUseManagedSessions(opts?: ResolveSessionsBackendOp
|
|
|
59
58
|
* lives here, not in the shared policy.
|
|
60
59
|
*/
|
|
61
60
|
export declare function resolveSessionsBackend(opts?: ResolveSessionsBackendOpts): SessionsBackend;
|
|
61
|
+
export {};
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* MANAGED-FIRST — the mere PRESENCE of an r2.backups bundle is NOT a BYO
|
|
19
19
|
* override. A signed-in user with a stale r2.backups bundle still backs up to
|
|
20
20
|
* managed unless they opt out explicitly: `--byo`, `AGENTS_SESSIONS_BACKEND=byo`,
|
|
21
|
-
* or a DI write token. This mirrors
|
|
22
|
-
* config is deliberately not an override) so the product's
|
|
23
|
-
* contract is identical across surfaces.
|
|
21
|
+
* or a DI write token. This mirrors the artifact-share backend contract (a
|
|
22
|
+
* persisted BYO config is deliberately not an override) so the product's
|
|
23
|
+
* managed-first contract is identical across surfaces.
|
|
24
24
|
*/
|
|
25
25
|
import { readSession } from '../../identity/client.js';
|
|
26
26
|
import { selectStorageBackendKind } from '../../storage/selection.js';
|
|
@@ -17,13 +17,5 @@ export declare const DEFAULT_SESSIONS_DOMAIN = "sessions.agents-cli.sh";
|
|
|
17
17
|
export declare const DEFAULT_SESSIONS_WORKER_NAME = "agents-sessions";
|
|
18
18
|
/** R2 bucket name backing the managed sessions Worker. */
|
|
19
19
|
export declare const DEFAULT_SESSIONS_BUCKET_NAME = "agents-sessions";
|
|
20
|
-
/** Isolated Cloudflare resources for the managed session-backup store. */
|
|
21
|
-
export interface SessionsConfig {
|
|
22
|
-
baseUrl: string;
|
|
23
|
-
accountId: string;
|
|
24
|
-
workerName: string;
|
|
25
|
-
bucketName: string;
|
|
26
|
-
domain?: string;
|
|
27
|
-
}
|
|
28
20
|
/** Public base URL of the managed sessions Worker, no trailing slash. */
|
|
29
21
|
export declare function managedSessionsBaseUrl(): string;
|
|
@@ -31,8 +31,6 @@ export declare const ESCROW_REL_KEY = "__key/backup-dek";
|
|
|
31
31
|
export declare function backupKeyCachePath(): string;
|
|
32
32
|
/** The DEK cached locally for this Phoenix user, or null. */
|
|
33
33
|
export declare function readCachedBackupKey(userId: string): Buffer | null;
|
|
34
|
-
/** Persist a DEK (base64) for this Phoenix user in the local 0600 cache. */
|
|
35
|
-
export declare function cacheBackupKey(userId: string, b64: string): void;
|
|
36
34
|
/**
|
|
37
35
|
* Resolve the managed backup DEK for `userId`, minting + escrowing one on first
|
|
38
36
|
* use. NEVER returns null — the managed path must not upload plaintext.
|
|
@@ -66,7 +66,7 @@ export function readCachedBackupKey(userId) {
|
|
|
66
66
|
return decodeDek(readCache()[userId]);
|
|
67
67
|
}
|
|
68
68
|
/** Persist a DEK (base64) for this Phoenix user in the local 0600 cache. */
|
|
69
|
-
|
|
69
|
+
function cacheBackupKey(userId, b64) {
|
|
70
70
|
const file = backupKeyCachePath();
|
|
71
71
|
fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
72
72
|
ensureLockTarget(file, '{}', 0o700);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Cloudflare orchestration for the managed session-backup store. The generic
|
|
2
|
-
// request primitives live in
|
|
2
|
+
// request primitives live in cloudflare/provision; only the isolated sessions
|
|
3
3
|
// resource choices and Worker template belong here. Mirrors lib/traces/provision.ts.
|
|
4
4
|
//
|
|
5
5
|
// This is the OPERATOR provisioning path — cutting the `agents-sessions` Worker +
|
|
6
6
|
// bucket + custom domain once. Product traffic never runs it; a signed-in user
|
|
7
7
|
// talks to the already-deployed Worker through `SessionsHttpClient`.
|
|
8
|
-
import { addCustomDomain, createBucket, deployWorker, enableWorkersDev, findZoneId, putWorkerSecret, } from '../../
|
|
8
|
+
import { addCustomDomain, createBucket, deployWorker, enableWorkersDev, findZoneId, putWorkerSecret, } from '../../cloudflare/provision.js';
|
|
9
9
|
import { DEFAULT_SESSIONS_BUCKET_NAME, DEFAULT_SESSIONS_DOMAIN, DEFAULT_SESSIONS_WORKER_NAME, } from './managed-config.js';
|
|
10
10
|
import { renderSessionsWorkerScript } from './worker-template.js';
|
|
11
11
|
/** Bind the Phoenix identity base URL used to verify every session read and write. */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Linux-only; rclone-mount needs macFUSE).
|
|
11
11
|
*/
|
|
12
12
|
import type { R2Config } from './config.js';
|
|
13
|
-
|
|
13
|
+
interface HeadResult {
|
|
14
14
|
size: number;
|
|
15
15
|
etag: string;
|
|
16
16
|
}
|
|
@@ -35,3 +35,6 @@ export declare class R2Client {
|
|
|
35
35
|
* {@link SessionsBackupClient} interface (managed lists with no prefix). */
|
|
36
36
|
list(prefix?: string): Promise<string[]>;
|
|
37
37
|
}
|
|
38
|
+
/** Single pass: sequential replaces would double-decode `&lt;` into `<`. */
|
|
39
|
+
export declare function decodeXml(s: string): string;
|
|
40
|
+
export {};
|
|
@@ -108,13 +108,10 @@ export class R2Client {
|
|
|
108
108
|
return keys;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
.replace(/>/g, '>')
|
|
116
|
-
.replace(/"/g, '"')
|
|
117
|
-
.replace(/'/g, "'");
|
|
111
|
+
const XML_ENTITIES = { '&': '&', '<': '<', '>': '>', '"': '"', ''': "'" };
|
|
112
|
+
/** Single pass: sequential replaces would double-decode `&lt;` into `<`. */
|
|
113
|
+
export function decodeXml(s) {
|
|
114
|
+
return s.replace(/&(?:amp|lt|gt|quot|apos);/g, (entity) => XML_ENTITIES[entity] ?? entity);
|
|
118
115
|
}
|
|
119
116
|
async function safeText(res) {
|
|
120
117
|
try {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import type { R2Config } from './config.js';
|
|
27
27
|
/** Serialized envelope stored as the R2 object body when encryption is on. */
|
|
28
|
-
|
|
28
|
+
interface TranscriptEnvelope {
|
|
29
29
|
/** Envelope format version. */
|
|
30
30
|
v: 1;
|
|
31
31
|
alg: 'aes-256-gcm';
|
|
@@ -75,3 +75,4 @@ export declare function decryptEnvelope(envelope: TranscriptEnvelope, key: Buffe
|
|
|
75
75
|
* - Plaintext body → returned verbatim (legacy/unencrypted object).
|
|
76
76
|
*/
|
|
77
77
|
export declare function decryptTranscriptBody(body: string, key: Buffer | null): string;
|
|
78
|
+
export {};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { SessionAgentId, SessionEvent } from './types.js';
|
|
11
11
|
/** A tail read: the last few normalized events plus the raw text they came from. */
|
|
12
|
-
|
|
12
|
+
interface SessionTail {
|
|
13
13
|
events: SessionEvent[];
|
|
14
14
|
/** The raw JSONL chunk (leading partial line dropped), for content-level math. */
|
|
15
15
|
content: string;
|
|
@@ -35,3 +35,4 @@ export declare function readSessionTailWithRaw(filePath: string, agent: SessionA
|
|
|
35
35
|
* wrapper over {@link readSessionTailWithRaw} for callers that only need events.
|
|
36
36
|
*/
|
|
37
37
|
export declare function readSessionTail(filePath: string, agent: SessionAgentId, maxBytes?: number, maxEvents?: number): SessionEvent[];
|
|
38
|
+
export {};
|
|
@@ -40,7 +40,7 @@ export declare function _resetTeamOriginIndex(): void;
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function enrichTeamOrigins(sessions: SessionMeta[]): SessionMeta[];
|
|
42
42
|
/** Result of splitting sessions into visible and hidden (team-origin) groups. */
|
|
43
|
-
|
|
43
|
+
interface FilterResult {
|
|
44
44
|
visible: SessionMeta[];
|
|
45
45
|
hiddenCount: number;
|
|
46
46
|
}
|
|
@@ -8,9 +8,7 @@
|
|
|
8
8
|
* straight off `agents sessions --active --json` instead (issue #741).
|
|
9
9
|
*/
|
|
10
10
|
/** Agents whose transcript formats report per-turn output-token usage. */
|
|
11
|
-
|
|
12
|
-
/** Rolling window (seconds) the throughput average is computed over. */
|
|
13
|
-
export declare const DEFAULT_THROUGHPUT_WINDOW_SEC = 60;
|
|
11
|
+
type ThroughputAgent = 'claude' | 'codex' | 'gemini';
|
|
14
12
|
/**
|
|
15
13
|
* Output-token throughput (tokens/sec) over the last `windowSec` seconds.
|
|
16
14
|
*
|
|
@@ -28,3 +26,4 @@ export declare const DEFAULT_THROUGHPUT_WINDOW_SEC = 60;
|
|
|
28
26
|
* tokens: {output, thoughts}}]}`. Caller must pass the whole file.
|
|
29
27
|
*/
|
|
30
28
|
export declare function computeTokPerSec(sessionContent: string, agent: ThroughputAgent, windowSec?: number, now?: number): number;
|
|
29
|
+
export {};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* straight off `agents sessions --active --json` instead (issue #741).
|
|
9
9
|
*/
|
|
10
10
|
/** Rolling window (seconds) the throughput average is computed over. */
|
|
11
|
-
|
|
11
|
+
const DEFAULT_THROUGHPUT_WINDOW_SEC = 60;
|
|
12
12
|
/**
|
|
13
13
|
* Output-token throughput (tokens/sec) over the last `windowSec` seconds.
|
|
14
14
|
*
|
|
@@ -19,30 +19,15 @@
|
|
|
19
19
|
* picks it up whole.
|
|
20
20
|
*/
|
|
21
21
|
import type { ActiveSession } from './active.js';
|
|
22
|
-
import { type SessionTimelineCacheRow, type SessionTimelineEntry } from './db.js';
|
|
23
22
|
import type { SessionAgentId, SessionEvent } from './types.js';
|
|
24
|
-
/** Sessions folded per tick. The tick's own deadline is 30 s; this stays well inside it. */
|
|
25
|
-
export declare const TIMELINE_PASS_MAX_PER_TICK = 8;
|
|
26
23
|
/** Bytes one session may consume in one tick. A bigger backlog catches up over ticks. */
|
|
27
24
|
export declare const TIMELINE_PASS_MAX_BYTES_PER_SESSION: number;
|
|
28
|
-
/**
|
|
29
|
-
* Bytes the whole pass may consume in one tick, across every session.
|
|
30
|
-
*
|
|
31
|
-
* The per-session cap alone is not a bound on the TICK: on a cold cache eight
|
|
32
|
-
* live sessions each fold from offset 0, and eight multi-megabyte transcripts
|
|
33
|
-
* parsed back to back is what blew the 30 s `session-state` deadline and parked
|
|
34
|
-
* the service on this fleet (observed 2026-09-06). A tick budget makes a cold
|
|
35
|
-
* start catch up over a few ticks instead of stalling one.
|
|
36
|
-
*/
|
|
37
|
-
export declare const TIMELINE_PASS_MAX_BYTES_PER_TICK: number;
|
|
38
25
|
/**
|
|
39
26
|
* Ceiling on a whole-file re-parse for a harness with no resumable reader.
|
|
40
27
|
* Beyond it the timeline is reported `partial` rather than wedging the tick —
|
|
41
28
|
* the same honesty rule the tool index applies at its own in-memory limit.
|
|
42
29
|
*/
|
|
43
30
|
export declare const TIMELINE_PASS_MAX_WHOLE_FILE_BYTES: number;
|
|
44
|
-
/** Events folded from one non-resumable whole-file parse before reporting `partial`. */
|
|
45
|
-
export declare const TIMELINE_PASS_MAX_EVENTS = 20000;
|
|
46
31
|
/**
|
|
47
32
|
* How long a non-resumable harness's timeline may go stale before the pass
|
|
48
33
|
* re-parses its transcript whole.
|
|
@@ -56,7 +41,7 @@ export declare const TIMELINE_PASS_MAX_EVENTS = 20000;
|
|
|
56
41
|
* quarter of the cost.
|
|
57
42
|
*/
|
|
58
43
|
export declare const TIMELINE_PASS_NON_RESUMABLE_MIN_INTERVAL_MS = 60000;
|
|
59
|
-
|
|
44
|
+
interface TimelinePassResult {
|
|
60
45
|
/** Sessions whose timeline was folded and written this tick. */
|
|
61
46
|
computed: number;
|
|
62
47
|
/** Sessions whose cached timeline already matched the transcript bytes. */
|
|
@@ -64,7 +49,7 @@ export interface TimelinePassResult {
|
|
|
64
49
|
/** Sessions skipped: unreadable transcript, no id/file, or no parseable transcript. */
|
|
65
50
|
skipped: number;
|
|
66
51
|
}
|
|
67
|
-
|
|
52
|
+
interface TimelinePassOptions {
|
|
68
53
|
/** Live rows to fold. Defaults to the local active-sessions cache. */
|
|
69
54
|
sessions?: ActiveSession[];
|
|
70
55
|
budget?: number;
|
|
@@ -88,31 +73,6 @@ export interface TimelinePassOptions {
|
|
|
88
73
|
* fold two different event streams for the same session.
|
|
89
74
|
*/
|
|
90
75
|
export declare function parseTimelineEvents(filePath: string, agent: SessionAgentId): SessionEvent[];
|
|
91
|
-
/** One session's fold: the entry to cache, and what it actually cost to produce. */
|
|
92
|
-
export interface SessionTimelineFold {
|
|
93
|
-
entry: SessionTimelineEntry;
|
|
94
|
-
/**
|
|
95
|
-
* Bytes this fold READ off disk — what the tick's byte budget is debited by.
|
|
96
|
-
*
|
|
97
|
-
* Not the transcript's growth delta: a non-resumable harness re-parses the
|
|
98
|
-
* WHOLE file every time, so eight 3 MiB sessions grown by 10 KB each read
|
|
99
|
-
* 24 MiB, not 80 KB. Charging the delta is what let a tick overrun its budget
|
|
100
|
-
* by an order of magnitude.
|
|
101
|
-
*/
|
|
102
|
-
bytesRead: number;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Fold one session's new transcript bytes and return the entry to cache.
|
|
106
|
-
* Exported for tests: this is where the resume decision and the whole-file
|
|
107
|
-
* fallback live, and both are worth pinning without a daemon.
|
|
108
|
-
*
|
|
109
|
-
* `byteBudget` is the TICK's remaining allowance. Each branch derives its own
|
|
110
|
-
* ceiling from it — the resumable chunk read is additionally capped per session,
|
|
111
|
-
* while a whole-file re-parse is gated on a budget that can actually reach a
|
|
112
|
-
* real transcript. A session that genuinely does not fit gets a `partial` row
|
|
113
|
-
* stating why, never silence.
|
|
114
|
-
*/
|
|
115
|
-
export declare function foldSessionTimeline(session: ActiveSession, filePath: string, fileSize: number, prior: SessionTimelineCacheRow | undefined, nowMs?: number, byteBudget?: number): SessionTimelineFold | undefined;
|
|
116
76
|
/**
|
|
117
77
|
* Fold the timelines of the live local sessions, bounded, once per tick.
|
|
118
78
|
* Returns what it did so the daemon tick can log it like every other pass.
|
|
@@ -127,3 +87,4 @@ export declare function runTimelinePass(opts?: TimelinePassOptions): Promise<Tim
|
|
|
127
87
|
export declare function runTimelinePassSync(opts: TimelinePassOptions & {
|
|
128
88
|
sessions: ActiveSession[];
|
|
129
89
|
}): TimelinePassResult;
|
|
90
|
+
export {};
|
|
@@ -24,7 +24,7 @@ import { parseClaudeContent, parseCodexItemsContent, parseSession } from './pars
|
|
|
24
24
|
import { toolEvidenceSourcePath } from './tool-store.js';
|
|
25
25
|
import { compactTimelineState, emptyTimelineState, foldTimeline, projectSessionFiles, projectTimeline, unavailableTimeline, TIMELINE_EXTRACTOR_VERSION, } from './timeline.js';
|
|
26
26
|
/** Sessions folded per tick. The tick's own deadline is 30 s; this stays well inside it. */
|
|
27
|
-
|
|
27
|
+
const TIMELINE_PASS_MAX_PER_TICK = 8;
|
|
28
28
|
/** Bytes one session may consume in one tick. A bigger backlog catches up over ticks. */
|
|
29
29
|
export const TIMELINE_PASS_MAX_BYTES_PER_SESSION = 4 * 1024 * 1024;
|
|
30
30
|
/**
|
|
@@ -36,7 +36,7 @@ export const TIMELINE_PASS_MAX_BYTES_PER_SESSION = 4 * 1024 * 1024;
|
|
|
36
36
|
* the service on this fleet (observed 2026-09-06). A tick budget makes a cold
|
|
37
37
|
* start catch up over a few ticks instead of stalling one.
|
|
38
38
|
*/
|
|
39
|
-
|
|
39
|
+
const TIMELINE_PASS_MAX_BYTES_PER_TICK = 8 * 1024 * 1024;
|
|
40
40
|
/**
|
|
41
41
|
* Ceiling on a whole-file re-parse for a harness with no resumable reader.
|
|
42
42
|
* Beyond it the timeline is reported `partial` rather than wedging the tick —
|
|
@@ -44,7 +44,7 @@ export const TIMELINE_PASS_MAX_BYTES_PER_TICK = 8 * 1024 * 1024;
|
|
|
44
44
|
*/
|
|
45
45
|
export const TIMELINE_PASS_MAX_WHOLE_FILE_BYTES = 16 * 1024 * 1024;
|
|
46
46
|
/** Events folded from one non-resumable whole-file parse before reporting `partial`. */
|
|
47
|
-
|
|
47
|
+
const TIMELINE_PASS_MAX_EVENTS = 20_000;
|
|
48
48
|
/**
|
|
49
49
|
* How long a non-resumable harness's timeline may go stale before the pass
|
|
50
50
|
* re-parses its transcript whole.
|
|
@@ -139,7 +139,7 @@ function mib(bytes) {
|
|
|
139
139
|
* real transcript. A session that genuinely does not fit gets a `partial` row
|
|
140
140
|
* stating why, never silence.
|
|
141
141
|
*/
|
|
142
|
-
|
|
142
|
+
function foldSessionTimeline(session, filePath, fileSize, prior, nowMs = Date.now(), byteBudget = TIMELINE_PASS_MAX_BYTES_PER_TICK) {
|
|
143
143
|
const agent = (session.kind ?? 'claude');
|
|
144
144
|
// A settled state stamped at the file's current size, so an unavailable or
|
|
145
145
|
// over-limit session is recognized as up to date next tick instead of being
|
|
@@ -33,16 +33,6 @@ import type { SessionEvent, SessionFileChange, SessionFiles, SessionRequest, Ses
|
|
|
33
33
|
export declare const TIMELINE_EXTRACTOR_VERSION = 1;
|
|
34
34
|
/** Steps carried on the row in full; everything older folds into a counter. */
|
|
35
35
|
export declare const TIMELINE_KEEP_STEPS = 8;
|
|
36
|
-
/** File rows carried on the row in full; `total` still reports the real count. */
|
|
37
|
-
export declare const TIMELINE_KEEP_FILES = 8;
|
|
38
|
-
/**
|
|
39
|
-
* Steps kept in the persisted resume state. A long session narrates for hours,
|
|
40
|
-
* and the state is re-read every tick, so the fold rolls everything past this
|
|
41
|
-
* into {@link TimelineState.dropped} — exact totals, bounded bytes.
|
|
42
|
-
*/
|
|
43
|
-
export declare const TIMELINE_STATE_MAX_STEPS = 200;
|
|
44
|
-
/** Paths kept in the persisted resume state; older ones roll into `filesDropped`. */
|
|
45
|
-
export declare const TIMELINE_STATE_MAX_FILES = 200;
|
|
46
36
|
/** One file the session touched, as accumulated during the fold. */
|
|
47
37
|
interface TimelineFileEntry {
|
|
48
38
|
op: SessionFileChange['op'];
|
|
@@ -115,7 +105,7 @@ export declare function classifyCommandVerb(command: string | undefined): Sessio
|
|
|
115
105
|
/** The verb class for one tool call: the harness's own if it classified it, else derived. */
|
|
116
106
|
export declare function verbClassForEvent(event: SessionEvent): SessionVerbClass;
|
|
117
107
|
/** Options the fold needs that are not on the events themselves. */
|
|
118
|
-
|
|
108
|
+
interface FoldTimelineOptions {
|
|
119
109
|
/** Row attachments, so an image the prose never named still rides the request. */
|
|
120
110
|
attachments?: import('./types.js').SessionAttachment[];
|
|
121
111
|
/** Stop after this many events and mark the state `truncated` (the projection reads `partial`). */
|
|
@@ -135,9 +125,9 @@ export interface FoldTimelineOptions {
|
|
|
135
125
|
*/
|
|
136
126
|
export declare function foldTimeline(events: SessionEvent[], prior?: TimelineState, opts?: FoldTimelineOptions): TimelineState;
|
|
137
127
|
/** The activity values that mean the agent is mid-step, so the newest step is live. */
|
|
138
|
-
|
|
128
|
+
type TimelineActivity = string | undefined;
|
|
139
129
|
/** How {@link projectTimeline} scrubs the transcript text it is about to ship. */
|
|
140
|
-
|
|
130
|
+
interface ProjectTimelineOptions {
|
|
141
131
|
/** Redact secrets from every projected string. Default true — see below. */
|
|
142
132
|
redact?: boolean;
|
|
143
133
|
/** Known credential values to mask verbatim; defaults to {@link knownSecretValuesFromEnv}. */
|
|
@@ -36,15 +36,15 @@ export const TIMELINE_EXTRACTOR_VERSION = 1;
|
|
|
36
36
|
/** Steps carried on the row in full; everything older folds into a counter. */
|
|
37
37
|
export const TIMELINE_KEEP_STEPS = 8;
|
|
38
38
|
/** File rows carried on the row in full; `total` still reports the real count. */
|
|
39
|
-
|
|
39
|
+
const TIMELINE_KEEP_FILES = 8;
|
|
40
40
|
/**
|
|
41
41
|
* Steps kept in the persisted resume state. A long session narrates for hours,
|
|
42
42
|
* and the state is re-read every tick, so the fold rolls everything past this
|
|
43
43
|
* into {@link TimelineState.dropped} — exact totals, bounded bytes.
|
|
44
44
|
*/
|
|
45
|
-
|
|
45
|
+
const TIMELINE_STATE_MAX_STEPS = 200;
|
|
46
46
|
/** Paths kept in the persisted resume state; older ones roll into `filesDropped`. */
|
|
47
|
-
|
|
47
|
+
const TIMELINE_STATE_MAX_FILES = 200;
|
|
48
48
|
/** A narration beat that said nothing and ran nothing merges into the next one within this window. */
|
|
49
49
|
const NARRATION_MERGE_MS = 2_000;
|
|
50
50
|
/** A thinking block shorter than this is a fragment, not a beat worth showing. */
|
|
@@ -8,7 +8,6 @@ export declare const TOOL_PENDING_MAX_BYTES: number;
|
|
|
8
8
|
export declare const TOOL_PENDING_MAX_CALLS = 256;
|
|
9
9
|
export declare const TOOL_CHANGED_MAX_CALLS = 10000;
|
|
10
10
|
export declare const TOOL_INDEX_LIMIT_ORDINAL: number;
|
|
11
|
-
export declare const TOOL_TEXT_PROCESSING_MAX_BYTES: number;
|
|
12
11
|
export declare const TOOL_SHELL_PARSE_MAX_BYTES: number;
|
|
13
12
|
export declare const TOOL_INDEX_VERSION = 9;
|
|
14
13
|
export type ToolCallOutcome = 'ok' | 'error' | 'unknown';
|
|
@@ -97,7 +96,7 @@ export interface EventToolScanResumePoint {
|
|
|
97
96
|
/** How many events had been folded when the snapshot was taken. */
|
|
98
97
|
eventCount: number;
|
|
99
98
|
}
|
|
100
|
-
|
|
99
|
+
interface EventToolScanResult {
|
|
101
100
|
/** The CHANGED calls — an append-safe upsert set, not the whole history. */
|
|
102
101
|
calls: IndexedToolCall[];
|
|
103
102
|
/** Serialized-ready snapshot to persist for the next incremental scan. */
|
|
@@ -130,3 +129,4 @@ export declare function toolCallKey(sessionId: string, ordinal: number): string;
|
|
|
130
129
|
export declare function collectClaudeToolCalls(collector: ToolCallCollector, parsed: any): void;
|
|
131
130
|
/** Fold one raw Codex rollout record into the resumable call collector. */
|
|
132
131
|
export declare function collectCodexToolCalls(collector: ToolCallCollector, parsed: any): void;
|
|
132
|
+
export {};
|
|
@@ -10,7 +10,7 @@ export const TOOL_PENDING_MAX_BYTES = 1024 * 1024;
|
|
|
10
10
|
export const TOOL_PENDING_MAX_CALLS = 256;
|
|
11
11
|
export const TOOL_CHANGED_MAX_CALLS = 10_000;
|
|
12
12
|
export const TOOL_INDEX_LIMIT_ORDINAL = Number.MAX_SAFE_INTEGER;
|
|
13
|
-
|
|
13
|
+
const TOOL_TEXT_PROCESSING_MAX_BYTES = 64 * 1024;
|
|
14
14
|
export const TOOL_SHELL_PARSE_MAX_BYTES = 64 * 1024;
|
|
15
15
|
// Bumped to 9 for Codex tool-outcome classification (PHNX-3761): Codex results
|
|
16
16
|
// arrive as a string or input_text[] rather than an object, so every one used to
|
|
@@ -6,7 +6,6 @@ export declare const TOOL_PROGRAM_COUNT_SCHEMA_VERSION = 1;
|
|
|
6
6
|
export declare const TOOL_QUERY_MAX_CLAUSES = 32;
|
|
7
7
|
export declare const TOOL_QUERY_MAX_CLAUSE_BYTES = 4096;
|
|
8
8
|
export declare const TOOL_QUERY_MAX_CALL_ROWS = 50000;
|
|
9
|
-
export declare const TOOL_QUERY_MAX_RESULT_BYTES: number;
|
|
10
9
|
export declare const TOOL_QUERY_MAX_RESULT_SESSIONS = 1000;
|
|
11
10
|
export declare const TOOL_QUERY_MAX_SERIALIZED_BYTES: number;
|
|
12
11
|
export declare const TOOL_QUERY_MERGE_OVERHEAD_BYTES: number;
|
|
@@ -90,16 +89,9 @@ export declare function ensureToolIndex(sessions: SessionMeta[], limits?: {
|
|
|
90
89
|
maxBytes?: number;
|
|
91
90
|
verifySourceStamps?: boolean;
|
|
92
91
|
}): Promise<ToolIndexCoverage>;
|
|
93
|
-
interface QueryTerm {
|
|
94
|
-
field?: 'tool' | 'program' | 'input' | 'output' | 'status' | 'exit' | 'error';
|
|
95
|
-
value: string;
|
|
96
|
-
}
|
|
97
|
-
/** Parse one same-call clause. Unprefixed terms search every evidence field. */
|
|
98
|
-
export declare function parseToolQueryClause(source: string): QueryTerm[];
|
|
99
92
|
/** A count has one unambiguous subject: one exact `program:<name>` term. */
|
|
100
93
|
export declare function parseToolProgramCountClause(source: string): string;
|
|
101
94
|
/** Count exact, pre-indexed static program sites without reading transcripts. */
|
|
102
95
|
export declare function countToolProgramOccurrences(sessions: SessionMeta[], program: string, coverage: ToolIndexCoverage, machine: string): ToolProgramCountEnvelope;
|
|
103
96
|
/** Query cached evidence; every repeated clause must select a distinct call. */
|
|
104
97
|
export declare function searchToolCalls(sessions: SessionMeta[], clauseSources: string[], coverage: ToolIndexCoverage, resultLimit?: number): ToolSearchEnvelope;
|
|
105
|
-
export {};
|