@phnx-labs/agents-cli 1.22.112 → 1.22.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +10 -11
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +59 -61
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +3 -3
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +21 -2
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -5
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +14 -104
- package/dist/commands/sessions.js +22 -10
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +1 -1
- package/dist/commands/share.d.ts +8 -8
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +1 -1
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +5 -5
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +4 -4
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +1 -1
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -12
- package/dist/lib/daemon/daemon.js +42 -23
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon/testdata/process-view-daemon.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-daemon.js +14 -0
- package/dist/lib/daemon/testdata/process-view-start.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-start.js +43 -0
- package/dist/lib/daemon-services.d.ts +2 -1
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +2 -1
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +4 -1
- package/dist/lib/event-provenance.js +4 -0
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +28 -8
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +11 -2
- package/dist/lib/feed/activity.d.ts +16 -33
- package/dist/lib/feed/activity.js +69 -26
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/events.d.ts +2 -47
- package/dist/lib/feed/events.js +1 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/watch.d.ts +10 -2
- package/dist/lib/feed/watch.js +91 -4
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +2 -2
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +2 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -65
- package/dist/lib/git.js +3 -142
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -34
- package/dist/lib/hosts/dispatch.js +4 -21
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +4 -3
- package/dist/lib/hosts/remote-session-id.d.ts +5 -27
- package/dist/lib/hosts/remote-session-id.js +18 -61
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/launch-identity.d.ts +10 -0
- package/dist/lib/launch-identity.js +31 -0
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +7 -1
- package/dist/lib/redact.js +94 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +3 -2
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +4 -26
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/active.js +9 -3
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/db.d.ts +2 -1
- package/dist/lib/session/db.js +39 -4
- package/dist/lib/session/detached.d.ts +2 -1
- package/dist/lib/session/detached.js +2 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/discover.js +7 -2
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +12 -1
- package/dist/lib/session/hook-sessions.js +139 -6
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/pid-registry.d.ts +18 -5
- package/dist/lib/session/pid-registry.js +164 -17
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/process-view.d.ts +25 -0
- package/dist/lib/session/process-view.js +176 -0
- package/dist/lib/session/projection.d.ts +13 -0
- package/dist/lib/session/projection.js +101 -0
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +2 -5
- package/dist/lib/session/remote/peer-stream.js +2 -2
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +10 -7
- package/dist/lib/session/remote/watch.js +10 -6
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +17 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +5 -5
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/testdata/pid-registry-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/pid-registry-namespace.js +27 -0
- package/dist/lib/session/testdata/process-view-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-namespace.js +56 -0
- package/dist/lib/session/testdata/process-view-private.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-private.js +12 -0
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/share/delete.d.ts +5 -4
- package/dist/lib/share/html.d.ts +0 -2
- package/dist/lib/share/html.js +9 -9
- package/dist/lib/share/http-error.d.ts +3 -2
- package/dist/lib/share/og.d.ts +2 -1
- package/dist/lib/share/provision.d.ts +2 -2
- package/dist/lib/share/publish.d.ts +4 -13
- package/dist/lib/share/publish.js +2 -2
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +4 -5
- package/dist/lib/smart-launch.js +1 -1
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +5 -4
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.js +1 -1
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +1 -4
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +4 -3
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +1 -3
- package/dist/lib/traces/provision.js +1 -1
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +3 -3
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +2 -3
- package/scripts/postinstall.js +5 -4
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ActorKind } from '../actor.js';
|
|
2
2
|
import type { EventRecord } from './events.js';
|
|
3
3
|
/** Recognizable milestone events, ordered first in any activity lane. */
|
|
4
|
-
|
|
4
|
+
type MilestoneEvent = 'plan.created' | 'pr.opened' | 'pr.merged' | 'worktree.created' | 'worktree.removed' | 'commit.created' | 'pushed' | 'subagent.spawned' | 'artifact.created' | 'task.completed' | 'checklist.created'
|
|
5
5
|
/** Bash-driven deliverables detected by command parsing. */
|
|
6
6
|
| 'video.rendered' | 'video.converted' | 'image.upscaled' | 'metadata.edited'
|
|
7
7
|
/** Deliberate agent-authored progress post (`agents feed post`). */
|
|
@@ -136,11 +136,17 @@ export declare function appendActivityEvent(event: Omit<ActivityEvent, 'v' | 'ti
|
|
|
136
136
|
export declare function parseActivityLine(line: string): ActivityEvent | undefined;
|
|
137
137
|
/** Per-session byte budget for a bounded tail read of an activity log. */
|
|
138
138
|
export declare const ACTIVITY_TAIL_BYTES: number;
|
|
139
|
+
/** Read-only process-local diagnostics; no event content or file paths. */
|
|
140
|
+
export declare function getActivityCacheStats(): {
|
|
141
|
+
entries: number;
|
|
142
|
+
parsedTails: number;
|
|
143
|
+
bytes: number;
|
|
144
|
+
maxBytes: number;
|
|
145
|
+
tailReads: number;
|
|
146
|
+
};
|
|
139
147
|
/** Read all events for one session (bounded tail). */
|
|
140
148
|
export declare function readSessionActivity(sessionId: string, root?: string, maxBytes?: number): ActivityEvent[];
|
|
141
|
-
|
|
142
|
-
export declare function listActivitySessions(root?: string): string[];
|
|
143
|
-
export interface RecentActivityOptions {
|
|
149
|
+
interface RecentActivityOptions {
|
|
144
150
|
/** Only include events at or after this epoch-ms. */
|
|
145
151
|
sinceMs?: number;
|
|
146
152
|
/** Cap the number of returned events (most recent first). */
|
|
@@ -163,7 +169,7 @@ export interface RecentActivityOptions {
|
|
|
163
169
|
* tail of each file, so cost scales with active sessions, not transcript size.
|
|
164
170
|
*/
|
|
165
171
|
export declare function readRecentActivity(opts?: RecentActivityOptions): ActivityEvent[];
|
|
166
|
-
|
|
172
|
+
interface CollapsedActivity {
|
|
167
173
|
/** Milestone events, individually preserved, newest first. */
|
|
168
174
|
milestones: ActivityEvent[];
|
|
169
175
|
/** Routine events rolled up to counts, e.g. { 'file.edited': 12 }. */
|
|
@@ -177,32 +183,12 @@ export interface CollapsedActivity {
|
|
|
177
183
|
* deliverables in full and collapses the noise.
|
|
178
184
|
*/
|
|
179
185
|
export declare function collapseActivity(events: ActivityEvent[]): CollapsedActivity;
|
|
180
|
-
/**
|
|
181
|
-
* Normalize one activity event into the shared {@link EventRecord} shape so the
|
|
182
|
-
* agent-semantic stream reads through the same reader as operational events.
|
|
183
|
-
* `module` is stamped `activity` so `--module` filters partition the two cleanly.
|
|
184
|
-
*/
|
|
185
|
-
export declare function activityEventToRecord(ev: ActivityEvent): EventRecord;
|
|
186
186
|
/** Read recent activity across sessions as unified {@link EventRecord}s. */
|
|
187
187
|
export declare function readActivityAsEventRecords(opts?: RecentActivityOptions): EventRecord[];
|
|
188
|
-
/** Glyph + color + human label per event, so the lane reads at a glance. */
|
|
189
|
-
export declare const EVENT_STYLE: Record<string, {
|
|
190
|
-
glyph: string;
|
|
191
|
-
color: (s: string) => string;
|
|
192
|
-
label: string;
|
|
193
|
-
}>;
|
|
194
|
-
export declare function styleForEvent(event: string): {
|
|
195
|
-
glyph: string;
|
|
196
|
-
color: (s: string) => string;
|
|
197
|
-
label: string;
|
|
198
|
-
};
|
|
199
188
|
/** One rendered activity line: ` <rel> [host] <glyph label> detail url`. */
|
|
200
189
|
export declare function formatActivityLine(ev: ActivityEvent, opts?: {
|
|
201
190
|
showHost?: boolean;
|
|
202
191
|
}): string;
|
|
203
|
-
/** Glyph per attachment kind, so an artifact row reads at a glance. */
|
|
204
|
-
export declare const ATTACHMENT_GLYPH: Record<string, string>;
|
|
205
|
-
export declare function attachmentGlyph(kind: string): string;
|
|
206
192
|
/** Display name for an attachment: its `name`, else the basename of its href. */
|
|
207
193
|
export declare function attachmentName(att: Attachment): string;
|
|
208
194
|
/**
|
|
@@ -211,7 +197,7 @@ export declare function attachmentName(att: Attachment): string;
|
|
|
211
197
|
*/
|
|
212
198
|
export declare function shortSessionId(sessionId: string): string;
|
|
213
199
|
/** Extra identity resolved at display time by joining the session index. */
|
|
214
|
-
|
|
200
|
+
interface ProgressJoin {
|
|
215
201
|
ticketId?: string;
|
|
216
202
|
prUrl?: string;
|
|
217
203
|
label?: string;
|
|
@@ -247,7 +233,7 @@ export interface EnrichedActivityEvent extends ActivityEvent {
|
|
|
247
233
|
* Facts pulled off a live session to enrich its activity events. Keyed by
|
|
248
234
|
* `sessionId`; every field optional so callers pass whatever they resolved.
|
|
249
235
|
*/
|
|
250
|
-
|
|
236
|
+
interface ActivitySessionHint {
|
|
251
237
|
sessionId?: string | null;
|
|
252
238
|
/** Tracker ticket id (from `ActiveSession.ticket`). */
|
|
253
239
|
ticket?: string | null;
|
|
@@ -311,9 +297,9 @@ export declare function mergeActivityEvents(...groups: EnrichedActivityEvent[][]
|
|
|
311
297
|
export declare function capActivityEvents(events: EnrichedActivityEvent[], limit: number, opts?: {
|
|
312
298
|
all?: boolean;
|
|
313
299
|
}): EnrichedActivityEvent[];
|
|
314
|
-
|
|
300
|
+
type ActivityGroupBy = 'project' | 'device' | 'agent';
|
|
315
301
|
/** One bucket of the grouped view. */
|
|
316
|
-
|
|
302
|
+
interface ActivityGroup {
|
|
317
303
|
/** Grouping value; empty string for the "unknown" bucket. */
|
|
318
304
|
key: string;
|
|
319
305
|
/** Display label. */
|
|
@@ -350,8 +336,6 @@ export declare function formatEnrichedActivityLine(ev: EnrichedActivityEvent, op
|
|
|
350
336
|
showProject?: boolean;
|
|
351
337
|
indent?: string;
|
|
352
338
|
}): string;
|
|
353
|
-
/** Max device names named in a group header before the rest collapse to `+N`. */
|
|
354
|
-
export declare const GROUP_HEADER_DEVICE_LIMIT = 3;
|
|
355
339
|
/**
|
|
356
340
|
* The distinct machines a group's events ran on, most-active first then
|
|
357
341
|
* alphabetical — so a project header can say WHERE the work happened without
|
|
@@ -381,8 +365,6 @@ export declare function formatActivityGroupMeta(group: ActivityGroup, opts?: {
|
|
|
381
365
|
* a logging hiccup never blocks a tool call.
|
|
382
366
|
*/
|
|
383
367
|
export declare const ACTIVITY_LOG_HOOK_SCRIPT: string;
|
|
384
|
-
/** Hook manifest entries (agents.yaml shape) for the activity-log hook. */
|
|
385
|
-
export declare const ACTIVITY_HOOK_DEFINITIONS: Record<string, Record<string, unknown>>;
|
|
386
368
|
/**
|
|
387
369
|
* Install the activity-log hook script into the user hooks dir and add its
|
|
388
370
|
* manifest entries to the user agents.yaml. Mirrors {@link ensureFeedPublishHook}
|
|
@@ -392,3 +374,4 @@ export declare function ensureActivityLogHook(userAgentsDir?: string): {
|
|
|
392
374
|
installed: boolean;
|
|
393
375
|
error?: string;
|
|
394
376
|
};
|
|
377
|
+
export {};
|
|
@@ -198,14 +198,67 @@ function readTail(file, maxBytes) {
|
|
|
198
198
|
// sessions or directories a long-lived consumer visits. Never expose cached
|
|
199
199
|
// objects: callers enrich and mutate returned events (including nested values).
|
|
200
200
|
const ACTIVITY_CACHE_BYTES = 32 * 1024 * 1024;
|
|
201
|
-
const ACTIVITY_CACHE_FILES = 1024;
|
|
202
201
|
const activityTails = new Map();
|
|
202
|
+
// A separate LRU of payload references lets pressure release parsed events
|
|
203
|
+
// without repeatedly walking thousands of summaries that cannot shrink.
|
|
204
|
+
const activityTailPayloads = new Map();
|
|
203
205
|
let activityTailBytes = 0;
|
|
206
|
+
let activityTailReads = 0;
|
|
207
|
+
/** Read-only process-local diagnostics; no event content or file paths. */
|
|
208
|
+
export function getActivityCacheStats() {
|
|
209
|
+
return {
|
|
210
|
+
entries: activityTails.size,
|
|
211
|
+
parsedTails: activityTailPayloads.size,
|
|
212
|
+
bytes: activityTailBytes,
|
|
213
|
+
maxBytes: ACTIVITY_CACHE_BYTES,
|
|
214
|
+
tailReads: activityTailReads,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
204
217
|
function forgetActivityTail(key) {
|
|
205
218
|
const old = activityTails.get(key);
|
|
206
219
|
if (old)
|
|
207
220
|
activityTailBytes -= old.weight;
|
|
208
221
|
activityTails.delete(key);
|
|
222
|
+
activityTailPayloads.delete(key);
|
|
223
|
+
}
|
|
224
|
+
function activitySummaryWeight(key, stamp) {
|
|
225
|
+
return (key.length + stamp.length) * 2 + 256;
|
|
226
|
+
}
|
|
227
|
+
function retainActivityTail(key, result, sinceMs) {
|
|
228
|
+
const summaryWeight = activitySummaryWeight(key, result.stamp);
|
|
229
|
+
// Even metadata is byte-bounded. A tail whose summary cannot fit still
|
|
230
|
+
// returns normally, but must not evict the cache or be retained over budget.
|
|
231
|
+
if (summaryWeight > ACTIVITY_CACHE_BYTES)
|
|
232
|
+
return;
|
|
233
|
+
const retained = { ...result };
|
|
234
|
+
if (result.newestMs < sinceMs || result.weight > ACTIVITY_CACHE_BYTES / 2) {
|
|
235
|
+
retained.events = undefined;
|
|
236
|
+
retained.weight = summaryWeight;
|
|
237
|
+
}
|
|
238
|
+
// Prefer compact history over payloads, retaining all summaries that fit
|
|
239
|
+
// instead of imposing a file-count cap that thrashes on each directory scan.
|
|
240
|
+
for (const [oldKey, old] of activityTailPayloads) {
|
|
241
|
+
if (activityTailBytes + retained.weight <= ACTIVITY_CACHE_BYTES)
|
|
242
|
+
break;
|
|
243
|
+
const weight = activitySummaryWeight(oldKey, old.stamp);
|
|
244
|
+
activityTailBytes -= old.weight - weight;
|
|
245
|
+
old.events = undefined;
|
|
246
|
+
old.weight = weight;
|
|
247
|
+
activityTailPayloads.delete(oldKey);
|
|
248
|
+
}
|
|
249
|
+
// If all existing entries are summaries, sacrifice the incoming payload
|
|
250
|
+
// before evicting history. The current caller still receives result.events.
|
|
251
|
+
if (activityTailBytes + retained.weight > ACTIVITY_CACHE_BYTES) {
|
|
252
|
+
retained.events = undefined;
|
|
253
|
+
retained.weight = summaryWeight;
|
|
254
|
+
}
|
|
255
|
+
while (activityTailBytes + retained.weight > ACTIVITY_CACHE_BYTES) {
|
|
256
|
+
forgetActivityTail(activityTails.keys().next().value);
|
|
257
|
+
}
|
|
258
|
+
activityTails.set(key, retained);
|
|
259
|
+
if (retained.events)
|
|
260
|
+
activityTailPayloads.set(key, retained);
|
|
261
|
+
activityTailBytes += retained.weight;
|
|
209
262
|
}
|
|
210
263
|
function activityStamp(file) {
|
|
211
264
|
// ctime catches same-size rewrites even when a producer restores mtime;
|
|
@@ -228,9 +281,14 @@ function readActivityTail(file, maxBytes, sinceMs = -Infinity) {
|
|
|
228
281
|
if (cached?.stamp === stamp && (cached.events || cached.newestMs < sinceMs)) {
|
|
229
282
|
activityTails.delete(key);
|
|
230
283
|
activityTails.set(key, cached);
|
|
284
|
+
if (cached.events) {
|
|
285
|
+
activityTailPayloads.delete(key);
|
|
286
|
+
activityTailPayloads.set(key, cached);
|
|
287
|
+
}
|
|
231
288
|
return cached;
|
|
232
289
|
}
|
|
233
290
|
forgetActivityTail(key);
|
|
291
|
+
activityTailReads++;
|
|
234
292
|
const text = readTail(file, maxBytes);
|
|
235
293
|
// Transient I/O failure is not an empty file snapshot; retry next read.
|
|
236
294
|
if (text === undefined)
|
|
@@ -256,27 +314,12 @@ function readActivityTail(file, maxBytes, sinceMs = -Infinity) {
|
|
|
256
314
|
}
|
|
257
315
|
// Bound retained source-derived strings, objects, and entry overhead. Large
|
|
258
316
|
// one-off tails still read normally, but cannot displace the entire cache.
|
|
259
|
-
const weight = text.length * 2 + events.length * 1024 + key
|
|
317
|
+
const weight = text.length * 2 + events.length * 1024 + activitySummaryWeight(key, stamp);
|
|
260
318
|
const result = { stamp, events, newestMs, weight };
|
|
261
319
|
try {
|
|
262
320
|
// A writer racing the read must not pin a mixed snapshot as unchanged.
|
|
263
321
|
if (activityStamp(file) === stamp) {
|
|
264
|
-
|
|
265
|
-
forgetActivityTail(activityTails.keys().next().value);
|
|
266
|
-
const summaryWeight = key.length * 2 + 256;
|
|
267
|
-
const retained = weight <= ACTIVITY_CACHE_BYTES / 2 ? { ...result } : { ...result, events: undefined, weight: summaryWeight };
|
|
268
|
-
// Retain timestamp summaries even when parsed tails exceed the budget:
|
|
269
|
-
// otherwise a large historical corpus thrashes on every cursor poll.
|
|
270
|
-
for (const [oldKey, old] of activityTails) {
|
|
271
|
-
if (activityTailBytes + retained.weight <= ACTIVITY_CACHE_BYTES)
|
|
272
|
-
break;
|
|
273
|
-
const summary = oldKey.length * 2 + 256;
|
|
274
|
-
activityTailBytes -= old.weight - summary;
|
|
275
|
-
old.events = undefined;
|
|
276
|
-
old.weight = summary;
|
|
277
|
-
}
|
|
278
|
-
activityTails.set(key, retained);
|
|
279
|
-
activityTailBytes += retained.weight;
|
|
322
|
+
retainActivityTail(key, result, sinceMs);
|
|
280
323
|
}
|
|
281
324
|
}
|
|
282
325
|
catch { /* Deleted during the read: return this snapshot without caching. */ }
|
|
@@ -288,7 +331,7 @@ export function readSessionActivity(sessionId, root, maxBytes = ACTIVITY_TAIL_BY
|
|
|
288
331
|
return structuredClone(readActivityTail(activityPath(dir, sessionId), maxBytes).events ?? []);
|
|
289
332
|
}
|
|
290
333
|
/** List session ids that have an activity log. */
|
|
291
|
-
|
|
334
|
+
function listActivitySessions(root) {
|
|
292
335
|
const dir = root ?? getActivityDir();
|
|
293
336
|
try {
|
|
294
337
|
return fs.readdirSync(dir).filter(n => n.endsWith('.jsonl')).map(n => n.slice(0, -'.jsonl'.length));
|
|
@@ -352,7 +395,7 @@ export function collapseActivity(events) {
|
|
|
352
395
|
* agent-semantic stream reads through the same reader as operational events.
|
|
353
396
|
* `module` is stamped `activity` so `--module` filters partition the two cleanly.
|
|
354
397
|
*/
|
|
355
|
-
|
|
398
|
+
function activityEventToRecord(ev) {
|
|
356
399
|
return {
|
|
357
400
|
ts: ev.ts,
|
|
358
401
|
tz: '',
|
|
@@ -395,7 +438,7 @@ export function readActivityAsEventRecords(opts = {}) {
|
|
|
395
438
|
// Rendering (shared by the feed activity lane and `agents feed --filter updates`)
|
|
396
439
|
// ---------------------------------------------------------------------------
|
|
397
440
|
/** Glyph + color + human label per event, so the lane reads at a glance. */
|
|
398
|
-
|
|
441
|
+
const EVENT_STYLE = {
|
|
399
442
|
'plan.created': { glyph: '◆', color: chalk.cyan, label: 'plan created' },
|
|
400
443
|
'pr.opened': { glyph: '⇡', color: chalk.green, label: 'PR opened' },
|
|
401
444
|
'pr.merged': { glyph: '✔', color: chalk.green, label: 'PR merged' },
|
|
@@ -412,7 +455,7 @@ export const EVENT_STYLE = {
|
|
|
412
455
|
'factory.launch': { glyph: '⌁', color: chalk.cyan, label: 'factory launch' },
|
|
413
456
|
'bash.executed': { glyph: '$', color: chalk.gray, label: 'command run' },
|
|
414
457
|
};
|
|
415
|
-
|
|
458
|
+
function styleForEvent(event) {
|
|
416
459
|
return EVENT_STYLE[event] ?? { glyph: '•', color: chalk.white, label: event };
|
|
417
460
|
}
|
|
418
461
|
/** One rendered activity line: ` <rel> [host] <glyph label> detail url`. */
|
|
@@ -435,14 +478,14 @@ export function formatActivityLine(ev, opts = {}) {
|
|
|
435
478
|
// chips (agent · session · host · project) and any attached artifacts.
|
|
436
479
|
// ---------------------------------------------------------------------------
|
|
437
480
|
/** Glyph per attachment kind, so an artifact row reads at a glance. */
|
|
438
|
-
|
|
481
|
+
const ATTACHMENT_GLYPH = {
|
|
439
482
|
image: '🖼',
|
|
440
483
|
audio: '♪',
|
|
441
484
|
video: '▶',
|
|
442
485
|
file: '📎',
|
|
443
486
|
link: '↗',
|
|
444
487
|
};
|
|
445
|
-
|
|
488
|
+
function attachmentGlyph(kind) {
|
|
446
489
|
return ATTACHMENT_GLYPH[kind] ?? '📎';
|
|
447
490
|
}
|
|
448
491
|
/** Display name for an attachment: its `name`, else the basename of its href. */
|
|
@@ -703,7 +746,7 @@ export function formatEnrichedActivityLine(ev, opts = {}) {
|
|
|
703
746
|
return `${opts.indent ?? ''}${base}${suffix}`;
|
|
704
747
|
}
|
|
705
748
|
/** Max device names named in a group header before the rest collapse to `+N`. */
|
|
706
|
-
|
|
749
|
+
const GROUP_HEADER_DEVICE_LIMIT = 3;
|
|
707
750
|
/**
|
|
708
751
|
* The distinct machines a group's events ran on, most-active first then
|
|
709
752
|
* alphabetical — so a project header can say WHERE the work happened without
|
|
@@ -1604,7 +1647,7 @@ if __name__ == "__main__":
|
|
|
1604
1647
|
pass # fail open
|
|
1605
1648
|
`;
|
|
1606
1649
|
/** Hook manifest entries (agents.yaml shape) for the activity-log hook. */
|
|
1607
|
-
|
|
1650
|
+
const ACTIVITY_HOOK_DEFINITIONS = {
|
|
1608
1651
|
'activity-log-intent': {
|
|
1609
1652
|
agents: ['claude'],
|
|
1610
1653
|
events: ['PreToolUse'],
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type ActiveSession } from '../session/active.js';
|
|
2
2
|
import { type MessageReceipt } from './feed.js';
|
|
3
|
-
|
|
3
|
+
interface VerifiedOperator {
|
|
4
4
|
id?: string;
|
|
5
5
|
verified: boolean;
|
|
6
6
|
label?: string;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
interface FeedAnswerResult {
|
|
9
9
|
status: 'delivered' | 'already_answered';
|
|
10
10
|
receipt: MessageReceipt;
|
|
11
11
|
}
|
|
@@ -27,3 +27,4 @@ export declare function forwardFeedAnswer(input: {
|
|
|
27
27
|
text?: string;
|
|
28
28
|
operatorId?: string;
|
|
29
29
|
}): Promise<FeedAnswerResult>;
|
|
30
|
+
export {};
|
|
@@ -50,7 +50,11 @@ function structuredToBlockQuestion(sq) {
|
|
|
50
50
|
const options = sq.options?.length
|
|
51
51
|
? sq.options.map((o) => ({ label: o.label, ...(o.description ? { description: o.description } : {}) }))
|
|
52
52
|
: undefined;
|
|
53
|
-
return {
|
|
53
|
+
return {
|
|
54
|
+
text: sq.text,
|
|
55
|
+
...(options ? { options } : {}),
|
|
56
|
+
...(sq.context ? { context: sq.context } : {}),
|
|
57
|
+
};
|
|
54
58
|
}
|
|
55
59
|
/** A label slugged to the `[a-z0-9-]+` id shape the notify argv and UIs echo back. */
|
|
56
60
|
function slugId(label) {
|
|
@@ -75,17 +75,6 @@ export interface EventPayload {
|
|
|
75
75
|
[key: string]: unknown;
|
|
76
76
|
}
|
|
77
77
|
export type EventRecord = EventMeta & EventPayload;
|
|
78
|
-
/**
|
|
79
|
-
* Move root-level and interim flat-history event families into dated directories.
|
|
80
|
-
*
|
|
81
|
-
* The common case is a whole-family rename into an empty destination. A
|
|
82
|
-
* Each segment is assigned to the local calendar day of its filesystem mtime;
|
|
83
|
-
* new writes are split by day at source. A partially completed migration keeps
|
|
84
|
-
* the destination active file authoritative and assigns a fresh archive number,
|
|
85
|
-
* so no record is overwritten or silently discarded. The legacy active-file
|
|
86
|
-
* lock serializes this with older installed processes that still append there.
|
|
87
|
-
*/
|
|
88
|
-
export declare function migrateLegacyEventLogs(userDir?: string): number;
|
|
89
78
|
/**
|
|
90
79
|
* Replace a prompt string with length + short SHA so we can correlate runs
|
|
91
80
|
* without persisting the raw text. Returns the fields to spread into a payload.
|
|
@@ -158,14 +147,6 @@ export declare function emitRoutineEndAsync(meta: RoutineEndMeta): Promise<void>
|
|
|
158
147
|
* const result = time('parse-config', () => parseConfig(path));
|
|
159
148
|
*/
|
|
160
149
|
export declare function time<T>(label: string, fn: () => T, payload?: EventPayload): T;
|
|
161
|
-
/**
|
|
162
|
-
* Measure execution time of an async function.
|
|
163
|
-
* Emits a perf.timing event with the duration.
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* const result = await timeAsync('fetch-data', () => fetchData(url));
|
|
167
|
-
*/
|
|
168
|
-
export declare function timeAsync<T>(label: string, fn: () => Promise<T>, payload?: EventPayload): Promise<T>;
|
|
169
150
|
/**
|
|
170
151
|
* Create a timing context for measuring multiple phases of an operation.
|
|
171
152
|
* Useful for tracking startup time vs execution time.
|
|
@@ -182,15 +163,6 @@ export declare function createTimer(label: string, payload?: EventPayload): {
|
|
|
182
163
|
end: (endPayload?: EventPayload) => void;
|
|
183
164
|
elapsed: () => number;
|
|
184
165
|
};
|
|
185
|
-
/**
|
|
186
|
-
* Higher-order function that wraps an async function with timing.
|
|
187
|
-
* The wrapper emits start/end events automatically.
|
|
188
|
-
*
|
|
189
|
-
* @example
|
|
190
|
-
* const timedFetch = withTiming('fetch', fetchData, { service: 'api' });
|
|
191
|
-
* const result = await timedFetch(url);
|
|
192
|
-
*/
|
|
193
|
-
export declare function withTiming<Args extends unknown[], R>(label: string, fn: (...args: Args) => Promise<R>, basePayload?: EventPayload): (...args: Args) => Promise<R>;
|
|
194
166
|
/**
|
|
195
167
|
* Emit a command.start event with CLI args.
|
|
196
168
|
* Returns a done() function to emit command.end with duration.
|
|
@@ -202,10 +174,6 @@ export declare function withTiming<Args extends unknown[], R>(label: string, fn:
|
|
|
202
174
|
* done({ exitCode: 0 });
|
|
203
175
|
*/
|
|
204
176
|
export declare function emitCommand(command: string, args?: string[], payload?: EventPayload): (endPayload?: EventPayload) => void;
|
|
205
|
-
/**
|
|
206
|
-
* Emit an error event with full details.
|
|
207
|
-
*/
|
|
208
|
-
export declare function emitError(err: Error | string, payload?: EventPayload): void;
|
|
209
177
|
/**
|
|
210
178
|
* Emit a friction event — a structured, point-of-use record of a failure or
|
|
211
179
|
* block the CLI just hit. `surface` is the subsystem (teams, browser, secrets,
|
|
@@ -213,7 +181,7 @@ export declare function emitError(err: Error | string, payload?: EventPayload):
|
|
|
213
181
|
* the same failure across sessions (e.g. 'remote-cwd-on-add', 'not-installed').
|
|
214
182
|
*/
|
|
215
183
|
export declare function emitFriction(surface: string, failureId: string, payload?: EventPayload): void;
|
|
216
|
-
|
|
184
|
+
interface RotationResult {
|
|
217
185
|
removedByAge: number;
|
|
218
186
|
removedBySize: number;
|
|
219
187
|
bytesReclaimed: number;
|
|
@@ -250,20 +218,7 @@ export declare function queryToolUsageForSessions(sessionIds: ReadonlySet<string
|
|
|
250
218
|
usedBrowser: boolean;
|
|
251
219
|
usedComputer: boolean;
|
|
252
220
|
}>;
|
|
253
|
-
|
|
254
|
-
* Get performance stats for a specific label.
|
|
255
|
-
*/
|
|
256
|
-
export declare function getTimingStats(label: string, options?: {
|
|
257
|
-
days?: number;
|
|
258
|
-
}): {
|
|
259
|
-
count: number;
|
|
260
|
-
avgMs: number;
|
|
261
|
-
minMs: number;
|
|
262
|
-
maxMs: number;
|
|
263
|
-
p50Ms: number;
|
|
264
|
-
p95Ms: number;
|
|
265
|
-
} | null;
|
|
266
|
-
export interface EventStats {
|
|
221
|
+
interface EventStats {
|
|
267
222
|
totalEvents: number;
|
|
268
223
|
byLevel: Record<string, number>;
|
|
269
224
|
byEvent: Record<string, number>;
|
package/dist/lib/feed/events.js
CHANGED
|
@@ -233,7 +233,7 @@ function ensureLogsDir() {
|
|
|
233
233
|
* so no record is overwritten or silently discarded. The legacy active-file
|
|
234
234
|
* lock serializes this with older installed processes that still append there.
|
|
235
235
|
*/
|
|
236
|
-
|
|
236
|
+
function migrateLegacyEventLogs(userDir = userAgentsDir()) {
|
|
237
237
|
if (_eventsPathOverride || _legacyMigrationChecked)
|
|
238
238
|
return 0;
|
|
239
239
|
_legacyMigrationChecked = true;
|
|
@@ -660,56 +660,6 @@ export function time(label, fn, payload = {}) {
|
|
|
660
660
|
throw err;
|
|
661
661
|
}
|
|
662
662
|
}
|
|
663
|
-
/**
|
|
664
|
-
* Measure execution time of an async function.
|
|
665
|
-
* Emits a perf.timing event with the duration.
|
|
666
|
-
*
|
|
667
|
-
* @example
|
|
668
|
-
* const result = await timeAsync('fetch-data', () => fetchData(url));
|
|
669
|
-
*/
|
|
670
|
-
export async function timeAsync(label, fn, payload = {}) {
|
|
671
|
-
const start = Date.now();
|
|
672
|
-
try {
|
|
673
|
-
const result = await fn();
|
|
674
|
-
const durationMs = Date.now() - start;
|
|
675
|
-
emit('perf.timing', {
|
|
676
|
-
...payload,
|
|
677
|
-
label,
|
|
678
|
-
durationMs,
|
|
679
|
-
status: 'success',
|
|
680
|
-
});
|
|
681
|
-
recordPerfTiming({
|
|
682
|
-
label,
|
|
683
|
-
durationMs,
|
|
684
|
-
status: 'success',
|
|
685
|
-
agent: payload.agent,
|
|
686
|
-
version: payload.version,
|
|
687
|
-
sessionId: payload.sessionId,
|
|
688
|
-
cwd: payload.cwd,
|
|
689
|
-
});
|
|
690
|
-
return result;
|
|
691
|
-
}
|
|
692
|
-
catch (err) {
|
|
693
|
-
const durationMs = Date.now() - start;
|
|
694
|
-
emit('perf.timing', {
|
|
695
|
-
...payload,
|
|
696
|
-
label,
|
|
697
|
-
durationMs,
|
|
698
|
-
status: 'error',
|
|
699
|
-
error: err instanceof Error ? err.message : String(err),
|
|
700
|
-
});
|
|
701
|
-
recordPerfTiming({
|
|
702
|
-
label,
|
|
703
|
-
durationMs,
|
|
704
|
-
status: 'error',
|
|
705
|
-
agent: payload.agent,
|
|
706
|
-
version: payload.version,
|
|
707
|
-
sessionId: payload.sessionId,
|
|
708
|
-
cwd: payload.cwd,
|
|
709
|
-
});
|
|
710
|
-
throw err;
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
663
|
/**
|
|
714
664
|
* Create a timing context for measuring multiple phases of an operation.
|
|
715
665
|
* Useful for tracking startup time vs execution time.
|
|
@@ -755,59 +705,6 @@ export function createTimer(label, payload = {}) {
|
|
|
755
705
|
},
|
|
756
706
|
};
|
|
757
707
|
}
|
|
758
|
-
/**
|
|
759
|
-
* Higher-order function that wraps an async function with timing.
|
|
760
|
-
* The wrapper emits start/end events automatically.
|
|
761
|
-
*
|
|
762
|
-
* @example
|
|
763
|
-
* const timedFetch = withTiming('fetch', fetchData, { service: 'api' });
|
|
764
|
-
* const result = await timedFetch(url);
|
|
765
|
-
*/
|
|
766
|
-
export function withTiming(label, fn, basePayload = {}) {
|
|
767
|
-
return async (...args) => {
|
|
768
|
-
const start = Date.now();
|
|
769
|
-
try {
|
|
770
|
-
const result = await fn(...args);
|
|
771
|
-
const durationMs = Date.now() - start;
|
|
772
|
-
emit('perf.timing', {
|
|
773
|
-
...basePayload,
|
|
774
|
-
label,
|
|
775
|
-
durationMs,
|
|
776
|
-
status: 'success',
|
|
777
|
-
});
|
|
778
|
-
recordPerfTiming({
|
|
779
|
-
label,
|
|
780
|
-
durationMs,
|
|
781
|
-
status: 'success',
|
|
782
|
-
agent: basePayload.agent,
|
|
783
|
-
version: basePayload.version,
|
|
784
|
-
sessionId: basePayload.sessionId,
|
|
785
|
-
cwd: basePayload.cwd,
|
|
786
|
-
});
|
|
787
|
-
return result;
|
|
788
|
-
}
|
|
789
|
-
catch (err) {
|
|
790
|
-
const durationMs = Date.now() - start;
|
|
791
|
-
emit('perf.timing', {
|
|
792
|
-
...basePayload,
|
|
793
|
-
label,
|
|
794
|
-
durationMs,
|
|
795
|
-
status: 'error',
|
|
796
|
-
error: err instanceof Error ? err.message : String(err),
|
|
797
|
-
});
|
|
798
|
-
recordPerfTiming({
|
|
799
|
-
label,
|
|
800
|
-
durationMs,
|
|
801
|
-
status: 'error',
|
|
802
|
-
agent: basePayload.agent,
|
|
803
|
-
version: basePayload.version,
|
|
804
|
-
sessionId: basePayload.sessionId,
|
|
805
|
-
cwd: basePayload.cwd,
|
|
806
|
-
});
|
|
807
|
-
throw err;
|
|
808
|
-
}
|
|
809
|
-
};
|
|
810
|
-
}
|
|
811
708
|
// ─── Command Tracking ─────────────────────────────────────────────────────────
|
|
812
709
|
/**
|
|
813
710
|
* Emit a command.start event with CLI args.
|
|
@@ -827,18 +724,6 @@ export function emitCommand(command, args = [], payload = {}) {
|
|
|
827
724
|
cwd: process.cwd(),
|
|
828
725
|
});
|
|
829
726
|
}
|
|
830
|
-
// ─── Error Tracking ───────────────────────────────────────────────────────────
|
|
831
|
-
/**
|
|
832
|
-
* Emit an error event with full details.
|
|
833
|
-
*/
|
|
834
|
-
export function emitError(err, payload = {}) {
|
|
835
|
-
const error = err instanceof Error ? err : new Error(err);
|
|
836
|
-
emit('error', {
|
|
837
|
-
...payload,
|
|
838
|
-
error: error.message,
|
|
839
|
-
errorStack: truncate(error.stack, 1000),
|
|
840
|
-
});
|
|
841
|
-
}
|
|
842
727
|
/**
|
|
843
728
|
* Emit a friction event — a structured, point-of-use record of a failure or
|
|
844
729
|
* block the CLI just hit. `surface` is the subsystem (teams, browser, secrets,
|
|
@@ -1183,31 +1068,6 @@ export function queryToolUsageForSessions(sessionIds) {
|
|
|
1183
1068
|
}
|
|
1184
1069
|
return result;
|
|
1185
1070
|
}
|
|
1186
|
-
// ─── Stats ────────────────────────────────────────────────────────────────────
|
|
1187
|
-
/**
|
|
1188
|
-
* Get performance stats for a specific label.
|
|
1189
|
-
*/
|
|
1190
|
-
export function getTimingStats(label, options = {}) {
|
|
1191
|
-
const days = options.days ?? 7;
|
|
1192
|
-
const startDate = new Date();
|
|
1193
|
-
startDate.setDate(startDate.getDate() - days);
|
|
1194
|
-
const events = query({
|
|
1195
|
-
startDate,
|
|
1196
|
-
eventTypes: ['perf.timing'],
|
|
1197
|
-
}).filter(e => e.label === label && typeof e.durationMs === 'number');
|
|
1198
|
-
if (events.length === 0)
|
|
1199
|
-
return null;
|
|
1200
|
-
const durations = events.map(e => e.durationMs).sort((a, b) => a - b);
|
|
1201
|
-
const sum = durations.reduce((a, b) => a + b, 0);
|
|
1202
|
-
return {
|
|
1203
|
-
count: durations.length,
|
|
1204
|
-
avgMs: Math.round(sum / durations.length),
|
|
1205
|
-
minMs: durations[0],
|
|
1206
|
-
maxMs: durations[durations.length - 1],
|
|
1207
|
-
p50Ms: durations[Math.floor(durations.length * 0.5)],
|
|
1208
|
-
p95Ms: durations[Math.floor(durations.length * 0.95)],
|
|
1209
|
-
};
|
|
1210
|
-
}
|
|
1211
1071
|
export function stats(options = {}) {
|
|
1212
1072
|
const days = options.days ?? 7;
|
|
1213
1073
|
const startDate = new Date();
|