@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
|
@@ -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 {};
|
|
@@ -14,7 +14,7 @@ export const TOOL_PROGRAM_COUNT_SCHEMA_VERSION = 1;
|
|
|
14
14
|
export const TOOL_QUERY_MAX_CLAUSES = 32;
|
|
15
15
|
export const TOOL_QUERY_MAX_CLAUSE_BYTES = 4096;
|
|
16
16
|
export const TOOL_QUERY_MAX_CALL_ROWS = 50_000;
|
|
17
|
-
|
|
17
|
+
const TOOL_QUERY_MAX_RESULT_BYTES = 8 * 1024 * 1024;
|
|
18
18
|
export const TOOL_QUERY_MAX_RESULT_SESSIONS = 1_000;
|
|
19
19
|
export const TOOL_QUERY_MAX_SERIALIZED_BYTES = 15 * 1024 * 1024;
|
|
20
20
|
export const TOOL_QUERY_MERGE_OVERHEAD_BYTES = 64 * 1024;
|
|
@@ -400,7 +400,7 @@ function tokenizeClause(source) {
|
|
|
400
400
|
return tokens;
|
|
401
401
|
}
|
|
402
402
|
/** Parse one same-call clause. Unprefixed terms search every evidence field. */
|
|
403
|
-
|
|
403
|
+
function parseToolQueryClause(source) {
|
|
404
404
|
const fields = new Set(['tool', 'program', 'input', 'output', 'status', 'exit', 'error']);
|
|
405
405
|
return tokenizeClause(source).map((token) => {
|
|
406
406
|
const colon = token.indexOf(':');
|
|
@@ -22,7 +22,7 @@ export interface ToolScanResumePoint {
|
|
|
22
22
|
*/
|
|
23
23
|
parsedOffset: number;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
interface PersistToolCallsOptions {
|
|
26
26
|
/**
|
|
27
27
|
* `replace` drops the session's stored evidence first — correct for a parse
|
|
28
28
|
* that started at byte 0. `append` merges the batch into what is already
|
|
@@ -68,3 +68,4 @@ export declare function planEventToolResume(db: Database.Database, sessionId: st
|
|
|
68
68
|
fileMtimeMs: number;
|
|
69
69
|
fileSize: number;
|
|
70
70
|
}, currentEventCount: number): EventToolScanResumePoint | null;
|
|
71
|
+
export {};
|
|
@@ -35,7 +35,7 @@ export interface TrajectoryComparison {
|
|
|
35
35
|
truncatedA: number;
|
|
36
36
|
truncatedB: number;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
interface DiffTrajectoriesOptions {
|
|
39
39
|
/** Cap on tool steps considered per side (the LCS table is O(n*m)). Default 1000. */
|
|
40
40
|
maxDiffSteps?: number;
|
|
41
41
|
}
|
|
@@ -45,3 +45,4 @@ export interface DiffTrajectoriesOptions {
|
|
|
45
45
|
* did. Never mutates either input.
|
|
46
46
|
*/
|
|
47
47
|
export declare function diffTrajectories(a: SessionTrajectory, b: SessionTrajectory, options?: DiffTrajectoriesOptions): TrajectoryComparison;
|
|
48
|
+
export {};
|
|
@@ -65,7 +65,7 @@ export interface SessionLineage {
|
|
|
65
65
|
*/
|
|
66
66
|
unresolvedParentIds: string[];
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
interface BuildLineageOptions {
|
|
69
69
|
/**
|
|
70
70
|
* Which session the graph is about. The graph is always rooted at that
|
|
71
71
|
* session's TOPMOST ancestor in the pool, so passing a child still renders its
|
|
@@ -90,3 +90,4 @@ export interface BuildLineageOptions {
|
|
|
90
90
|
* sessions in the pool supply edges but never become nodes.
|
|
91
91
|
*/
|
|
92
92
|
export declare function buildLineage(sessions: SessionMeta[], options?: BuildLineageOptions): SessionLineage;
|
|
93
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SessionTrajectory } from './trajectory.js';
|
|
2
2
|
import type { TrajectoryComparison } from './trajectory-compare.js';
|
|
3
3
|
import type { SessionLineage } from './trajectory-lineage.js';
|
|
4
|
-
|
|
4
|
+
interface RenderTrajectoryTextOptions {
|
|
5
5
|
/** Collapse to error steps and their immediate neighbours. */
|
|
6
6
|
errorsOnly?: boolean;
|
|
7
7
|
/** Cap on the step lines emitted; the remainder is collapsed with a count. */
|
|
@@ -9,7 +9,7 @@ export interface RenderTrajectoryTextOptions {
|
|
|
9
9
|
}
|
|
10
10
|
/** Render one session's trajectory as compact, ANSI-free text. */
|
|
11
11
|
export declare function renderTrajectoryText(model: SessionTrajectory, options?: RenderTrajectoryTextOptions): string;
|
|
12
|
-
|
|
12
|
+
interface RenderTrajectoryCompareTextOptions {
|
|
13
13
|
/** Cap on step lines listed per diff column; the remainder is collapsed with a count. Default 15. */
|
|
14
14
|
maxDiffLines?: number;
|
|
15
15
|
}
|
|
@@ -35,3 +35,4 @@ export declare function renderTrajectoryCompareText(cmp: TrajectoryComparison, o
|
|
|
35
35
|
* the shape of the fan-out; `agents sessions trace <child>` answers one child.
|
|
36
36
|
*/
|
|
37
37
|
export declare function renderLineageText(lineage: SessionLineage): string;
|
|
38
|
+
export {};
|
|
@@ -80,7 +80,7 @@ export interface SessionTrajectory {
|
|
|
80
80
|
/** Steps dropped by the `maxSteps` cap, surfaced so truncation is never silent. */
|
|
81
81
|
truncatedSteps: number;
|
|
82
82
|
}
|
|
83
|
-
|
|
83
|
+
interface BuildTrajectoryOptions {
|
|
84
84
|
/** Redact derived labels/details (default true; `--no-redact` is local-only). */
|
|
85
85
|
redact?: boolean;
|
|
86
86
|
/** Known secret values to mask, from `knownSecretValuesFromEnv()`. */
|
|
@@ -142,3 +142,4 @@ export declare function pairSteps(events: SessionEvent[], eventMs: number[], fir
|
|
|
142
142
|
* event array and therefore an empty trajectory — never a crash or a fabricated one.
|
|
143
143
|
*/
|
|
144
144
|
export declare function buildTrajectory(events: SessionEvent[], meta: SessionMeta, options?: BuildTrajectoryOptions): SessionTrajectory;
|
|
145
|
+
export {};
|
|
@@ -21,7 +21,7 @@ import type { TmuxClient } from '../tmux/session.js';
|
|
|
21
21
|
import type { ActiveSession } from './active.js';
|
|
22
22
|
import { type GhosttySurface } from './ghostty-tabs.js';
|
|
23
23
|
/** Where a tmux-hosted session is currently displayed. */
|
|
24
|
-
|
|
24
|
+
interface ViewingIn {
|
|
25
25
|
/** Host app of the attached client — 'ghostty', 'iterm', 'code', 'codium', … */
|
|
26
26
|
app: string;
|
|
27
27
|
/** 1-based tab number within that app, when it can be resolved. */
|
|
@@ -83,3 +83,4 @@ export declare function resolveViewingIn(session: ActiveSession, clients: TmuxCl
|
|
|
83
83
|
* Ghostty's `index of tab`. Exported for the parser test.
|
|
84
84
|
*/
|
|
85
85
|
export declare function itermTabFromSessionId(value: string | undefined): number | undefined;
|
|
86
|
+
export {};
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* `hasTrustDialogAccepted: false` to `true` — see the note on that entry.)
|
|
18
18
|
*/
|
|
19
19
|
import type { AgentId } from './types.js';
|
|
20
|
-
|
|
20
|
+
interface CarryForwardResult {
|
|
21
21
|
/** Manifest rel paths that were created or updated in the target home. */
|
|
22
22
|
applied: string[];
|
|
23
23
|
/** Backup directory holding pre-merge copies of modified target files, if any. */
|
|
@@ -39,3 +39,4 @@ export declare function fillGaps(target: Record<string, unknown>, source: Record
|
|
|
39
39
|
* Only fills gaps — never overwrites target values — so it is idempotent.
|
|
40
40
|
*/
|
|
41
41
|
export declare function carryForwardSettings(agent: AgentId, fromHome: string, toHome: string): CarryForwardResult;
|
|
42
|
+
export {};
|
|
@@ -18,11 +18,11 @@ export type RevisionsFetchFn = (url: string) => Promise<{
|
|
|
18
18
|
contentType: string;
|
|
19
19
|
body: string;
|
|
20
20
|
}>;
|
|
21
|
-
|
|
21
|
+
interface DeleteEndpoint {
|
|
22
22
|
baseUrl: string;
|
|
23
23
|
token: string;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
interface ResolvedShareTarget {
|
|
26
26
|
/** R2 object key for the page, `<user>/<slug>`. */
|
|
27
27
|
key: string;
|
|
28
28
|
/** R2 object key for the sibling OG cover, `<user>/<slug>.png`. */
|
|
@@ -45,7 +45,7 @@ export interface ResolvedShareTarget {
|
|
|
45
45
|
export declare function resolveDeleteTarget(target: string, opts?: {
|
|
46
46
|
githubUser?: string;
|
|
47
47
|
}): Promise<ResolvedShareTarget>;
|
|
48
|
-
|
|
48
|
+
interface DeleteObjectResult {
|
|
49
49
|
key: string;
|
|
50
50
|
url: string;
|
|
51
51
|
/** Whether the object resolved (non-404) before the DELETE was issued. */
|
|
@@ -66,7 +66,7 @@ export declare function deleteObject(endpoint: DeleteEndpoint, key: string, opts
|
|
|
66
66
|
deleter?: DeleteFn;
|
|
67
67
|
checker?: CheckFn;
|
|
68
68
|
}): Promise<DeleteObjectResult>;
|
|
69
|
-
|
|
69
|
+
interface DeleteShareOptions {
|
|
70
70
|
/** Skip deleting the sibling `<slug>.png` OG cover (default: delete it too). */
|
|
71
71
|
keepCover?: boolean;
|
|
72
72
|
/** Skip deleting the target's retained revisions (`<key>/rev-*`, RUSH-2683
|
|
@@ -120,3 +120,4 @@ export interface DeleteShareResult {
|
|
|
120
120
|
* are gone. Throws on an unverified takedown — never reports success for an
|
|
121
121
|
* object that still resolves. */
|
|
122
122
|
export declare function deleteShare(target: string, opts?: DeleteShareOptions): Promise<DeleteShareResult>;
|
|
123
|
+
export {};
|
package/dist/lib/share/html.d.ts
CHANGED
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
* left alone. This is not a bundler — it only fixes what would otherwise
|
|
11
11
|
* render as a broken page after a single-file publish.
|
|
12
12
|
*/
|
|
13
|
-
/** Skip inlining a sibling that would bloat the page past a reasonable PUT. */
|
|
14
|
-
export declare const MAX_INLINE_BYTES: number;
|
|
15
13
|
/**
|
|
16
14
|
* `href="file:///tmp/page.html#purpose"` → `href="#purpose"`.
|
|
17
15
|
* Bare `file:///tmp/page.html` (no hash) becomes `href="#"`.
|
package/dist/lib/share/html.js
CHANGED
|
@@ -14,7 +14,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
14
14
|
import { dirname, extname, resolve } from 'node:path';
|
|
15
15
|
import { fileURLToPath } from 'node:url';
|
|
16
16
|
/** Skip inlining a sibling that would bloat the page past a reasonable PUT. */
|
|
17
|
-
|
|
17
|
+
const MAX_INLINE_BYTES = 4 * 1024 * 1024;
|
|
18
18
|
const IMAGE_MIME = {
|
|
19
19
|
'.png': 'image/png',
|
|
20
20
|
'.jpg': 'image/jpeg',
|
|
@@ -32,15 +32,15 @@ const IMAGE_MIME = {
|
|
|
32
32
|
export function rewriteFileAnchors(html) {
|
|
33
33
|
return html.replace(/\b(href\s*=\s*["'])file:\/\/[^"'#]*(#[^"']*)?(["'])/gi, (_m, attr, hash, quote) => `${attr}${hash ?? '#'}${quote}`);
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Only a bare path or a `file:` URL can name a local asset; every other scheme
|
|
37
|
+
* is left alone. A single-letter "scheme" is a Windows drive (`C:\\x.png`), not a URL.
|
|
38
|
+
*/
|
|
35
39
|
function isRemoteOrSpecial(url) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
url.startsWith('#') ||
|
|
41
|
-
url.startsWith('mailto:') ||
|
|
42
|
-
url.startsWith('javascript:') ||
|
|
43
|
-
url.startsWith('agents:'));
|
|
40
|
+
if (url.startsWith('//') || url.startsWith('#'))
|
|
41
|
+
return true;
|
|
42
|
+
const scheme = /^([a-z][a-z0-9+.-]*):/i.exec(url)?.[1];
|
|
43
|
+
return scheme !== undefined && scheme.length > 1 && scheme.toLowerCase() !== 'file';
|
|
44
44
|
}
|
|
45
45
|
function localImagePath(url, htmlDir) {
|
|
46
46
|
if (!url || isRemoteOrSpecial(url))
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
/** The raw pieces a caller's fetch wrapper hands in — status plus the (optional)
|
|
18
18
|
* response body text and `Retry-After` header value. */
|
|
19
|
-
|
|
19
|
+
interface ShareHttpResponse {
|
|
20
20
|
status: number;
|
|
21
21
|
/** The response body text, when the caller read it (only on `!ok` paths). */
|
|
22
22
|
body?: string;
|
|
@@ -25,7 +25,7 @@ export interface ShareHttpResponse {
|
|
|
25
25
|
}
|
|
26
26
|
/** The extracted, bounded error facts. `serverMessage` is present only when the
|
|
27
27
|
* body parsed as JSON carrying a non-empty string `error`. */
|
|
28
|
-
|
|
28
|
+
interface ShareHttpError {
|
|
29
29
|
status: number;
|
|
30
30
|
serverMessage?: string;
|
|
31
31
|
retryAfter?: string;
|
|
@@ -50,3 +50,4 @@ export declare function extractShareHttpError(res: ShareHttpResponse): ShareHttp
|
|
|
50
50
|
* → `Publish failed (429) for <url> — rate limit exceeded; retry after 37s`
|
|
51
51
|
*/
|
|
52
52
|
export declare function formatShareHttpErrorDetail(err: ShareHttpError): string;
|
|
53
|
+
export {};
|
package/dist/lib/share/og.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* previously added before re-inserting). Pure string work so it's unit-testable
|
|
8
8
|
* without a browser or network.
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
interface OgFields {
|
|
11
11
|
title: string;
|
|
12
12
|
description: string;
|
|
13
13
|
imageUrl: string;
|
|
@@ -23,3 +23,4 @@ export declare function deriveMeta(html: string, fallbackTitle?: string): {
|
|
|
23
23
|
};
|
|
24
24
|
/** Splice OG + Twitter tags into `<head>` (or prepend if there's no head). Idempotent. */
|
|
25
25
|
export declare function injectOgMeta(html: string, f: OgFields): string;
|
|
26
|
+
export {};
|
|
@@ -55,7 +55,7 @@ export declare function deployWorker(apiToken: string, accountId: string, worker
|
|
|
55
55
|
/** sha256 of the rendered Worker script, so a deployed endpoint can be compared
|
|
56
56
|
* against the current `worker-template.ts` without redeploying to find out. */
|
|
57
57
|
export declare function hashWorkerScript(script: string): string;
|
|
58
|
-
|
|
58
|
+
interface UpdateWorkerResult {
|
|
59
59
|
/** sha256 of `script` (the hash the endpoint now matches, whether or not this
|
|
60
60
|
* call actually redeployed). */
|
|
61
61
|
templateHash: string;
|
|
@@ -68,7 +68,7 @@ export declare const WORKER_PHOENIX_ID_BASE_SECRET = "PHOENIX_ID_BASE";
|
|
|
68
68
|
export declare const WORKER_COLLAB_BASE_SECRET = "PRIX_ARTIFACT_COLLAB_BASE";
|
|
69
69
|
/** Cloudflare `secret_text` name the Worker reads as `env.ARTIFACT_COLLAB_SERVICE_TOKEN`. */
|
|
70
70
|
export declare const WORKER_COLLAB_SERVICE_TOKEN_SECRET = "ARTIFACT_COLLAB_SERVICE_TOKEN";
|
|
71
|
-
|
|
71
|
+
type UpdateWorkerOpts = ProvisionOptions & {
|
|
72
72
|
force?: boolean;
|
|
73
73
|
/**
|
|
74
74
|
* Phoenix ID base URL to bind as `PHOENIX_ID_BASE` after the script upload.
|
|
@@ -5,7 +5,7 @@ import { type ShareVisibility } from '../storage/visibility.js';
|
|
|
5
5
|
* response so a failed publish can surface WHY (the Worker returns
|
|
6
6
|
* `{"error":"…"}` + a `Retry-After` on a 429); they are read only on `!ok`
|
|
7
7
|
* paths, and only ever fed through the bounded {@link extractShareHttpError}. */
|
|
8
|
-
|
|
8
|
+
type PutResult = {
|
|
9
9
|
ok: boolean;
|
|
10
10
|
status: number;
|
|
11
11
|
url?: string;
|
|
@@ -15,7 +15,7 @@ export type PutResult = {
|
|
|
15
15
|
retryAfter?: string;
|
|
16
16
|
};
|
|
17
17
|
export type PutFn = (url: string, body: Buffer, headers: Record<string, string>) => Promise<PutResult>;
|
|
18
|
-
|
|
18
|
+
interface PublishEndpoint {
|
|
19
19
|
baseUrl: string;
|
|
20
20
|
token: string;
|
|
21
21
|
}
|
|
@@ -163,18 +163,9 @@ export declare function resolveShareVisibility(opts?: {
|
|
|
163
163
|
unlisted?: boolean;
|
|
164
164
|
protected?: boolean;
|
|
165
165
|
}): ShareVisibility;
|
|
166
|
-
/** Mint a fresh random viewer token for a `private` (token-gated) publish. The
|
|
167
|
-
* raw token rides ONLY in the returned URL's `?k=`; the Worker stores just its
|
|
168
|
-
* SHA-256 hash, so the object metadata never carries the secret. */
|
|
169
|
-
export declare function generateViewerToken(): string;
|
|
170
166
|
/** SHA-256 hex of a viewer token — the form the Worker also computes and stores,
|
|
171
167
|
* so a CLI-side preview of the stored hash matches. Exported for tests. */
|
|
172
168
|
export declare function hashViewerToken(token: string): string;
|
|
173
|
-
/** A 64-bit random slug tail (16 lowercase hex chars) for a capability-URL
|
|
174
|
-
* publish, so the slug can never be derived/guessed from the title (PHNX-3654).
|
|
175
|
-
* `unlisted` leans on this for obscurity; `private` uses it as defense-in-depth
|
|
176
|
-
* behind the viewer token. */
|
|
177
|
-
export declare function randomSlugTail(): string;
|
|
178
169
|
/**
|
|
179
170
|
* The loud stderr warning printed on an `unlisted` / `--private` publish
|
|
180
171
|
* (PHNX-3654): `unlisted` is obscurity, NOT read-authentication — anyone with
|
|
@@ -312,8 +303,8 @@ export declare function parseExpire(spec: string | undefined): string | undefine
|
|
|
312
303
|
* `never` / `none` / `permanent` → no expiry. Anything else → {@link parseExpire}.
|
|
313
304
|
*/
|
|
314
305
|
export declare function resolveExpire(spec: string | undefined): string | undefined;
|
|
315
|
-
|
|
316
|
-
|
|
306
|
+
type SensitiveHitKind = 'email' | 'credential';
|
|
307
|
+
interface SensitiveHit {
|
|
317
308
|
kind: SensitiveHitKind;
|
|
318
309
|
/** Short redacted sample so the error names *what* was found without dumping it. */
|
|
319
310
|
sample: string;
|
|
@@ -53,7 +53,7 @@ const VIEWER_TOKEN_BYTES = 16;
|
|
|
53
53
|
/** Mint a fresh random viewer token for a `private` (token-gated) publish. The
|
|
54
54
|
* raw token rides ONLY in the returned URL's `?k=`; the Worker stores just its
|
|
55
55
|
* SHA-256 hash, so the object metadata never carries the secret. */
|
|
56
|
-
|
|
56
|
+
function generateViewerToken() {
|
|
57
57
|
return randomBytes(VIEWER_TOKEN_BYTES).toString('base64url');
|
|
58
58
|
}
|
|
59
59
|
/** SHA-256 hex of a viewer token — the form the Worker also computes and stores,
|
|
@@ -65,7 +65,7 @@ export function hashViewerToken(token) {
|
|
|
65
65
|
* publish, so the slug can never be derived/guessed from the title (PHNX-3654).
|
|
66
66
|
* `unlisted` leans on this for obscurity; `private` uses it as defense-in-depth
|
|
67
67
|
* behind the viewer token. */
|
|
68
|
-
|
|
68
|
+
function randomSlugTail() {
|
|
69
69
|
return randomBytes(8).toString('hex');
|
|
70
70
|
}
|
|
71
71
|
/**
|
package/dist/lib/shim-heal.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SelfHealReport } from './self-heal/types.js';
|
|
2
|
-
|
|
2
|
+
interface InteractiveShimHealResult {
|
|
3
3
|
noticeLines: string[] | null;
|
|
4
4
|
report: SelfHealReport;
|
|
5
5
|
}
|
|
@@ -9,10 +9,6 @@ export interface InteractiveShimHealResult {
|
|
|
9
9
|
* won't move; a PATH entry that was just added / needs a reload).
|
|
10
10
|
*/
|
|
11
11
|
export declare function runInteractiveShimHeal(): Promise<InteractiveShimHealResult>;
|
|
12
|
-
/**
|
|
13
|
-
* Back-compat wrapper for callers that only need the persistent one-time notice.
|
|
14
|
-
*/
|
|
15
|
-
export declare function healShimsInteractive(): Promise<string[] | null>;
|
|
16
12
|
type PathNoticeState = 'ok' | 'added' | 'reload';
|
|
17
13
|
/**
|
|
18
14
|
* A stable signature of the conditions worth surfacing: the sorted set of
|
package/dist/lib/shim-heal.js
CHANGED
|
@@ -54,12 +54,6 @@ export async function runInteractiveShimHeal() {
|
|
|
54
54
|
}
|
|
55
55
|
return { noticeLines: lines.length > 0 ? lines : null, report };
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Back-compat wrapper for callers that only need the persistent one-time notice.
|
|
59
|
-
*/
|
|
60
|
-
export async function healShimsInteractive() {
|
|
61
|
-
return (await runInteractiveShimHeal()).noticeLines;
|
|
62
|
-
}
|
|
63
57
|
function noticeStatePath() {
|
|
64
58
|
return path.join(getRuntimeStateDir(), 'shim-notice.json');
|
|
65
59
|
}
|