@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
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One address grammar for every `--host` an extracted CLI accepts (PHNX-4090).
|
|
3
|
+
*
|
|
4
|
+
* This file is copied verbatim into agents-cli, computer-cli, browser-cli and
|
|
5
|
+
* secrets-cli, each with the same test vectors — deliberately not a published
|
|
6
|
+
* package, so no engine grows a runtime dependency on another. Keep the four
|
|
7
|
+
* copies identical; a change lands in all of them in the same delivery.
|
|
8
|
+
*
|
|
9
|
+
* ssh://[user@]host[:ssh-port] the authority port is the SSH port, never 9222
|
|
10
|
+
* cdp://host[:port] default 9222
|
|
11
|
+
* vnc://host[:port] default 5901
|
|
12
|
+
* tcp://host:port no default — a helper RPC endpoint needs one
|
|
13
|
+
* wss://host/path, ws://… a remote DevTools socket
|
|
14
|
+
* firefox-bidi://host[:port] the browser's BiDi endpoint
|
|
15
|
+
* [user@]host implicit ssh://
|
|
16
|
+
*
|
|
17
|
+
* A query (`?port=9222&os=windows`) is preserved for the consumer that knows
|
|
18
|
+
* what it means. Passwords never travel in an address: `user:secret@host` fails
|
|
19
|
+
* loud, and so does any scheme not listed above.
|
|
20
|
+
*/
|
|
21
|
+
export declare const ADDRESS_SCHEMES: readonly ["ssh", "cdp", "vnc", "tcp", "wss", "ws", "firefox-bidi"];
|
|
22
|
+
export type AddressScheme = (typeof ADDRESS_SCHEMES)[number];
|
|
23
|
+
/** Ports a scheme implies when the address carries none. `tcp` has no default. */
|
|
24
|
+
export declare const DEFAULT_PORTS: Readonly<Partial<Record<AddressScheme, number>>>;
|
|
25
|
+
export interface Address {
|
|
26
|
+
scheme: AddressScheme;
|
|
27
|
+
user?: string;
|
|
28
|
+
host: string;
|
|
29
|
+
/** The port written in the authority, if any. See {@link addressPort} for the default. */
|
|
30
|
+
port?: number;
|
|
31
|
+
/** A non-root path (`wss://hub/devtools` → `/devtools`). */
|
|
32
|
+
path?: string;
|
|
33
|
+
query: Record<string, string>;
|
|
34
|
+
/** The trimmed input, for messages. */
|
|
35
|
+
raw: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function parseAddress(input: string): Address;
|
|
38
|
+
/** The effective port: written, else the scheme's default, else undefined. */
|
|
39
|
+
export declare function addressPort(addr: Address): number | undefined;
|
|
40
|
+
/** `user@host` (or bare `host`) for an `ssh` address — what OpenSSH is given. */
|
|
41
|
+
export declare function sshTarget(addr: Address): string;
|
|
42
|
+
/**
|
|
43
|
+
* OpenSSH options carrying a non-default SSH port. `-o Port=N` rather than
|
|
44
|
+
* `-p`/`-P` so the same argv serves both `ssh` and `scp`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function sshPortArgs(addr: Address): string[];
|
|
47
|
+
/** `host:port` for a `vnc` address, defaulting the RFB display port. */
|
|
48
|
+
export declare function vncEndpoint(addr: Address): string;
|
|
49
|
+
/** `host:port` for a `tcp` address. A helper RPC endpoint has no default port. */
|
|
50
|
+
export declare function tcpEndpoint(addr: Address): string;
|
|
51
|
+
/**
|
|
52
|
+
* The DevTools port a browser endpoint means. On `ssh://` the authority port is
|
|
53
|
+
* the SSH port, so the DevTools port comes only from `?port=`; `cdp://` and
|
|
54
|
+
* `ssh://` default to 9222, path-addressed sockets (`wss://`) have none.
|
|
55
|
+
*/
|
|
56
|
+
export declare function browserEndpointPort(addr: Address): number | undefined;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One address grammar for every `--host` an extracted CLI accepts (PHNX-4090).
|
|
3
|
+
*
|
|
4
|
+
* This file is copied verbatim into agents-cli, computer-cli, browser-cli and
|
|
5
|
+
* secrets-cli, each with the same test vectors — deliberately not a published
|
|
6
|
+
* package, so no engine grows a runtime dependency on another. Keep the four
|
|
7
|
+
* copies identical; a change lands in all of them in the same delivery.
|
|
8
|
+
*
|
|
9
|
+
* ssh://[user@]host[:ssh-port] the authority port is the SSH port, never 9222
|
|
10
|
+
* cdp://host[:port] default 9222
|
|
11
|
+
* vnc://host[:port] default 5901
|
|
12
|
+
* tcp://host:port no default — a helper RPC endpoint needs one
|
|
13
|
+
* wss://host/path, ws://… a remote DevTools socket
|
|
14
|
+
* firefox-bidi://host[:port] the browser's BiDi endpoint
|
|
15
|
+
* [user@]host implicit ssh://
|
|
16
|
+
*
|
|
17
|
+
* A query (`?port=9222&os=windows`) is preserved for the consumer that knows
|
|
18
|
+
* what it means. Passwords never travel in an address: `user:secret@host` fails
|
|
19
|
+
* loud, and so does any scheme not listed above.
|
|
20
|
+
*/
|
|
21
|
+
export const ADDRESS_SCHEMES = ['ssh', 'cdp', 'vnc', 'tcp', 'wss', 'ws', 'firefox-bidi'];
|
|
22
|
+
/** Ports a scheme implies when the address carries none. `tcp` has no default. */
|
|
23
|
+
export const DEFAULT_PORTS = {
|
|
24
|
+
ssh: 22,
|
|
25
|
+
cdp: 9222,
|
|
26
|
+
vnc: 5901,
|
|
27
|
+
};
|
|
28
|
+
const SCHEME_SET = new Set(ADDRESS_SCHEMES);
|
|
29
|
+
/** A bare OpenSSH target: `host` or `user@host`, letters, digits, `.`, `_`, `-`. */
|
|
30
|
+
const IMPLICIT_SSH = /^[A-Za-z0-9._-]+(@[A-Za-z0-9._-]+)?$/;
|
|
31
|
+
export function parseAddress(input) {
|
|
32
|
+
const raw = input.trim();
|
|
33
|
+
if (!raw)
|
|
34
|
+
throw new Error('empty address');
|
|
35
|
+
if (!raw.includes('://')) {
|
|
36
|
+
if (!IMPLICIT_SSH.test(raw) || raw.startsWith('-')) {
|
|
37
|
+
throw new Error(`Invalid address ${JSON.stringify(raw)}. Expected scheme://host or user@host.`);
|
|
38
|
+
}
|
|
39
|
+
const at = raw.indexOf('@');
|
|
40
|
+
return {
|
|
41
|
+
scheme: 'ssh',
|
|
42
|
+
user: at > 0 ? raw.slice(0, at) : undefined,
|
|
43
|
+
host: at > 0 ? raw.slice(at + 1) : raw,
|
|
44
|
+
query: {},
|
|
45
|
+
raw,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
let url;
|
|
49
|
+
try {
|
|
50
|
+
url = new URL(raw);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw new Error(`Invalid address ${JSON.stringify(raw)}.`);
|
|
54
|
+
}
|
|
55
|
+
const scheme = url.protocol.replace(/:$/, '');
|
|
56
|
+
if (!SCHEME_SET.has(scheme)) {
|
|
57
|
+
throw new Error(`unsupported address scheme ${JSON.stringify(scheme)} in ${JSON.stringify(raw)}; expected one of ${ADDRESS_SCHEMES.join(', ')}`);
|
|
58
|
+
}
|
|
59
|
+
if (url.password) {
|
|
60
|
+
throw new Error('passwords are not allowed in addresses');
|
|
61
|
+
}
|
|
62
|
+
const host = url.hostname;
|
|
63
|
+
if (!host)
|
|
64
|
+
throw new Error(`Invalid address ${JSON.stringify(raw)}: missing host`);
|
|
65
|
+
const user = url.username ? decodeURIComponent(url.username) : undefined;
|
|
66
|
+
if (user?.startsWith('-') || host.startsWith('-')) {
|
|
67
|
+
throw new Error(`Invalid address ${JSON.stringify(raw)}: host or user cannot start with -`);
|
|
68
|
+
}
|
|
69
|
+
const port = url.port ? Number.parseInt(url.port, 10) : undefined;
|
|
70
|
+
if (port !== undefined && (!Number.isInteger(port) || port <= 0 || port > 65535)) {
|
|
71
|
+
throw new Error(`Invalid address ${JSON.stringify(raw)}: bad port`);
|
|
72
|
+
}
|
|
73
|
+
const query = {};
|
|
74
|
+
url.searchParams.forEach((value, key) => {
|
|
75
|
+
query[key] = value;
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
scheme: scheme,
|
|
79
|
+
user,
|
|
80
|
+
host,
|
|
81
|
+
port,
|
|
82
|
+
path: url.pathname && url.pathname !== '/' ? url.pathname : undefined,
|
|
83
|
+
query,
|
|
84
|
+
raw,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** The effective port: written, else the scheme's default, else undefined. */
|
|
88
|
+
export function addressPort(addr) {
|
|
89
|
+
return addr.port ?? DEFAULT_PORTS[addr.scheme];
|
|
90
|
+
}
|
|
91
|
+
/** `user@host` (or bare `host`) for an `ssh` address — what OpenSSH is given. */
|
|
92
|
+
export function sshTarget(addr) {
|
|
93
|
+
if (addr.scheme !== 'ssh') {
|
|
94
|
+
throw new Error(`expected ssh:// or user@host, got ${addr.scheme}:// (${addr.raw})`);
|
|
95
|
+
}
|
|
96
|
+
return addr.user ? `${addr.user}@${addr.host}` : addr.host;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* OpenSSH options carrying a non-default SSH port. `-o Port=N` rather than
|
|
100
|
+
* `-p`/`-P` so the same argv serves both `ssh` and `scp`.
|
|
101
|
+
*/
|
|
102
|
+
export function sshPortArgs(addr) {
|
|
103
|
+
if (addr.scheme !== 'ssh') {
|
|
104
|
+
throw new Error(`expected ssh:// or user@host, got ${addr.scheme}:// (${addr.raw})`);
|
|
105
|
+
}
|
|
106
|
+
return addr.port === undefined ? [] : ['-o', `Port=${addr.port}`];
|
|
107
|
+
}
|
|
108
|
+
/** `host:port` for a `vnc` address, defaulting the RFB display port. */
|
|
109
|
+
export function vncEndpoint(addr) {
|
|
110
|
+
if (addr.scheme !== 'vnc') {
|
|
111
|
+
throw new Error(`expected vnc://, got ${addr.scheme}:// (${addr.raw})`);
|
|
112
|
+
}
|
|
113
|
+
return `${addr.host}:${addressPort(addr)}`;
|
|
114
|
+
}
|
|
115
|
+
/** `host:port` for a `tcp` address. A helper RPC endpoint has no default port. */
|
|
116
|
+
export function tcpEndpoint(addr) {
|
|
117
|
+
if (addr.scheme !== 'tcp') {
|
|
118
|
+
throw new Error(`expected tcp://, got ${addr.scheme}:// (${addr.raw})`);
|
|
119
|
+
}
|
|
120
|
+
if (addr.port === undefined) {
|
|
121
|
+
throw new Error(`tcp:// requires a port (${addr.raw})`);
|
|
122
|
+
}
|
|
123
|
+
return `${addr.host}:${addr.port}`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The DevTools port a browser endpoint means. On `ssh://` the authority port is
|
|
127
|
+
* the SSH port, so the DevTools port comes only from `?port=`; `cdp://` and
|
|
128
|
+
* `ssh://` default to 9222, path-addressed sockets (`wss://`) have none.
|
|
129
|
+
*/
|
|
130
|
+
export function browserEndpointPort(addr) {
|
|
131
|
+
const fromQuery = addr.query.port ? Number.parseInt(addr.query.port, 10) : undefined;
|
|
132
|
+
if (fromQuery !== undefined) {
|
|
133
|
+
if (!Number.isInteger(fromQuery) || fromQuery <= 0 || fromQuery > 65535) {
|
|
134
|
+
throw new Error(`Invalid address ${JSON.stringify(addr.raw)}: bad ?port`);
|
|
135
|
+
}
|
|
136
|
+
return fromQuery;
|
|
137
|
+
}
|
|
138
|
+
if (addr.scheme === 'ssh')
|
|
139
|
+
return 9222;
|
|
140
|
+
if (addr.port !== undefined)
|
|
141
|
+
return addr.port;
|
|
142
|
+
return addr.scheme === 'cdp' ? 9222 : undefined;
|
|
143
|
+
}
|
|
@@ -11,8 +11,6 @@ export interface CliState {
|
|
|
11
11
|
* legacy import sites that haven't migrated to `supports()` yet.
|
|
12
12
|
*/
|
|
13
13
|
export declare const CODEX_HOOKS_MIN_VERSION = "0.116.0";
|
|
14
|
-
/** Minimum Gemini CLI version that supports the hooks system (v0.26.0, Jan 2026). */
|
|
15
|
-
export declare const GEMINI_HOOKS_MIN_VERSION = "0.26.0";
|
|
16
14
|
/**
|
|
17
15
|
* Synchronous PATH search -- no subprocess. Returns first matching binary path.
|
|
18
16
|
*
|
|
@@ -45,13 +43,13 @@ export declare function findInPath(command: string, options?: NativeBinaryResolu
|
|
|
45
43
|
* Left as call-site specials (not registry data): `getAccountInfo` and
|
|
46
44
|
* `readAuthAccountIdentity` — those are parsers, not flags.
|
|
47
45
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
type VersionStdoutMatch = 'semver' | 'openclaw';
|
|
47
|
+
type UnmanagedBinaryResolver = 'path' | 'grok-downloads';
|
|
48
|
+
type McpRegisterPath = 'cli' | 'config';
|
|
49
|
+
type McpAddHttpStyle = 'transport' | 'url';
|
|
50
|
+
type McpAddStdioStyle = 'scope' | 'simple';
|
|
51
|
+
type McpConfigWriteStyle = 'json-mcpServers' | 'yaml-mcp_servers';
|
|
52
|
+
interface AgentRegistryConfig extends AgentConfig {
|
|
55
53
|
/**
|
|
56
54
|
* Session-transcript directory as path segments under a HOME root, or null
|
|
57
55
|
* when this harness has no local session tree `agents` can walk.
|
|
@@ -96,8 +94,6 @@ export declare const ALL_AGENT_IDS: AgentId[];
|
|
|
96
94
|
* daemon/runner.ts bakeRoutineArgv — do not reintroduce a second token table.
|
|
97
95
|
*/
|
|
98
96
|
export declare const ROUTINE_AGENT_IDS: readonly string[];
|
|
99
|
-
/** Agents retained only for legacy reads, not install/import/sync targets. */
|
|
100
|
-
export declare const HARD_DEPRECATED_AGENT_IDS: AgentId[];
|
|
101
97
|
/** Agents that can receive managed installs, imports, and resource sync writes. */
|
|
102
98
|
export declare const MANAGED_AGENT_IDS: AgentId[];
|
|
103
99
|
/**
|
|
@@ -152,7 +148,7 @@ export declare function getUnmanagedCliState(agentId: AgentId): Promise<CliState
|
|
|
152
148
|
/** Resolve CLI state for all registered agents in parallel. */
|
|
153
149
|
export declare function getAllCliStates(): Promise<Partial<Record<AgentId, CliState>>>;
|
|
154
150
|
/** Info about an existing unmanaged agent installation. */
|
|
155
|
-
|
|
151
|
+
interface UnmanagedInstall {
|
|
156
152
|
agentId: AgentId;
|
|
157
153
|
configDir: string;
|
|
158
154
|
version: string | null;
|
|
@@ -284,7 +280,7 @@ export interface CredentialPresence {
|
|
|
284
280
|
*/
|
|
285
281
|
export declare function credentialPresence(agentId: AgentId, versionHome: string): CredentialPresence;
|
|
286
282
|
/** Decrypted contents of Droid's auth.v2.file (subset we consume). */
|
|
287
|
-
|
|
283
|
+
interface DroidAuthPayload {
|
|
288
284
|
access_token?: string;
|
|
289
285
|
active_organization_id?: string | null;
|
|
290
286
|
}
|
|
@@ -299,16 +295,6 @@ export interface DroidAuthPayload {
|
|
|
299
295
|
* in usage.ts.
|
|
300
296
|
*/
|
|
301
297
|
export declare function decryptDroidAuthPayload(base: string): DroidAuthPayload | null;
|
|
302
|
-
/**
|
|
303
|
-
* Decrypt a Droid `auth.v2.file` (AES-256-GCM `ivB64:tagB64:ctB64`) using the
|
|
304
|
-
* raw 32-byte key stored base64 in `auth.v2.key`, given the EXACT paths to both.
|
|
305
|
-
* Same crypto as decryptDroidAuthPayload but without the account-global HOME
|
|
306
|
-
* fallback, so the identity of a SPECIFIC version home resolves against only
|
|
307
|
-
* that home's files (carryForwardAuthFiles needs per-dir identity). Returns null
|
|
308
|
-
* on any failure (missing file/key, wrong key length, bad GCM tag, malformed
|
|
309
|
-
* JSON). Never throws.
|
|
310
|
-
*/
|
|
311
|
-
export declare function decryptDroidAuthFile(filePath: string, keyPath: string): DroidAuthPayload | null;
|
|
312
298
|
/**
|
|
313
299
|
* Stable account identity for a *file-auth* agent's credential directory
|
|
314
300
|
* (droid / kimi / antigravity), or null when the directory holds no decodable
|
|
@@ -481,7 +467,7 @@ export interface ClaudeHomeIdentity {
|
|
|
481
467
|
accountKey: string | null;
|
|
482
468
|
}
|
|
483
469
|
/** A version home's `.claude.json` plus the identity derived from it. */
|
|
484
|
-
|
|
470
|
+
interface ClaudeHomeConfig {
|
|
485
471
|
/** The config file actually read. */
|
|
486
472
|
path: string;
|
|
487
473
|
config: Record<string, any>;
|
|
@@ -557,9 +543,9 @@ export declare function unregisterMcpFromTargets(targets: {
|
|
|
557
543
|
versionSelections: Map<AgentId, string[]>;
|
|
558
544
|
}, name: string): Promise<McpTargetOperationResult[]>;
|
|
559
545
|
/** Scope at which an MCP server is registered: user-global or per-project. */
|
|
560
|
-
|
|
546
|
+
type McpScope = 'user' | 'project';
|
|
561
547
|
/** Describes an MCP server discovered in an agent's config, with its scope and command. */
|
|
562
|
-
|
|
548
|
+
interface InstalledMcp {
|
|
563
549
|
name: string;
|
|
564
550
|
scope: McpScope;
|
|
565
551
|
command?: string;
|
|
@@ -611,8 +597,6 @@ export declare function parseMcpConfig(agentId: AgentId, configPath: string): Re
|
|
|
611
597
|
export declare function listInstalledMcpsWithScope(agentId: AgentId, cwd?: string, options?: {
|
|
612
598
|
home?: string;
|
|
613
599
|
}): InstalledMcp[];
|
|
614
|
-
/** Map of agent name aliases and shorthand identifiers to canonical AgentId values. */
|
|
615
|
-
export declare const AGENT_NAME_ALIASES: Record<string, AgentId>;
|
|
616
600
|
/**
|
|
617
601
|
* Resolve a user-provided agent name (alias, shorthand, or canonical) to its AgentId.
|
|
618
602
|
* Tolerates a single typo (insertion/deletion/substitution/transposition) against
|
|
@@ -36,8 +36,6 @@ const HOME = os.homedir();
|
|
|
36
36
|
* legacy import sites that haven't migrated to `supports()` yet.
|
|
37
37
|
*/
|
|
38
38
|
export const CODEX_HOOKS_MIN_VERSION = '0.116.0';
|
|
39
|
-
/** Minimum Gemini CLI version that supports the hooks system (v0.26.0, Jan 2026). */
|
|
40
|
-
export const GEMINI_HOOKS_MIN_VERSION = '0.26.0';
|
|
41
39
|
const CLI_VERSION_CACHE_PATH = getCliVersionCachePath();
|
|
42
40
|
let cliVersionCache = null;
|
|
43
41
|
function loadCliVersionCache() {
|
|
@@ -1036,8 +1034,6 @@ export const ROUTINE_AGENT_IDS = Object.freeze([
|
|
|
1036
1034
|
'droid',
|
|
1037
1035
|
'muse',
|
|
1038
1036
|
]);
|
|
1039
|
-
/** Agents retained only for legacy reads, not install/import/sync targets. */
|
|
1040
|
-
export const HARD_DEPRECATED_AGENT_IDS = ALL_AGENT_IDS.filter((id) => AGENTS[id].deprecated?.hard);
|
|
1041
1037
|
/** Agents that can receive managed installs, imports, and resource sync writes. */
|
|
1042
1038
|
export const MANAGED_AGENT_IDS = ALL_AGENT_IDS.filter((id) => !AGENTS[id].deprecated?.hard);
|
|
1043
1039
|
/**
|
|
@@ -1519,7 +1515,7 @@ export function decryptDroidAuthPayload(base) {
|
|
|
1519
1515
|
* on any failure (missing file/key, wrong key length, bad GCM tag, malformed
|
|
1520
1516
|
* JSON). Never throws.
|
|
1521
1517
|
*/
|
|
1522
|
-
|
|
1518
|
+
function decryptDroidAuthFile(filePath, keyPath) {
|
|
1523
1519
|
try {
|
|
1524
1520
|
const blob = fs.readFileSync(filePath, 'utf-8').trim();
|
|
1525
1521
|
const key = Buffer.from(fs.readFileSync(keyPath, 'utf-8').trim(), 'base64');
|
|
@@ -3033,7 +3029,7 @@ export function listInstalledMcpsWithScope(agentId, cwd = process.cwd(), options
|
|
|
3033
3029
|
return results;
|
|
3034
3030
|
}
|
|
3035
3031
|
/** Map of agent name aliases and shorthand identifiers to canonical AgentId values. */
|
|
3036
|
-
|
|
3032
|
+
const AGENT_NAME_ALIASES = {
|
|
3037
3033
|
claude: 'claude',
|
|
3038
3034
|
'claude-code': 'claude',
|
|
3039
3035
|
cc: 'claude',
|
|
@@ -7,13 +7,6 @@
|
|
|
7
7
|
export declare const VERSION_RE: RegExp;
|
|
8
8
|
/** Canonical qualifier set, in help/display order. `pinned` ≡ `default`. */
|
|
9
9
|
export declare const AGENT_QUALIFIERS: readonly ["latest", "oldest", "pinned", "default", "all"];
|
|
10
|
-
export type AgentQualifier = (typeof AGENT_QUALIFIERS)[number];
|
|
11
|
-
/**
|
|
12
|
-
* Record-filter-only qualifiers. `any` means "no version constraint" for
|
|
13
|
-
* historical-record queries (sessions/teams resume) — accepted by the filter
|
|
14
|
-
* path but intentionally kept out of the display vocabulary.
|
|
15
|
-
*/
|
|
16
|
-
export declare const RECORD_ONLY_QUALIFIERS: readonly ["any"];
|
|
17
10
|
/**
|
|
18
11
|
* Ordering for version strings (ascending).
|
|
19
12
|
* 1. numeric segment comparison (semver-ish: `2.1.187` > `2.1.143`)
|
|
@@ -9,12 +9,6 @@
|
|
|
9
9
|
export const VERSION_RE = /^(?:latest|(?!.*\.\.)[A-Za-z0-9._+-]{1,64})$/;
|
|
10
10
|
/** Canonical qualifier set, in help/display order. `pinned` ≡ `default`. */
|
|
11
11
|
export const AGENT_QUALIFIERS = ['latest', 'oldest', 'pinned', 'default', 'all'];
|
|
12
|
-
/**
|
|
13
|
-
* Record-filter-only qualifiers. `any` means "no version constraint" for
|
|
14
|
-
* historical-record queries (sessions/teams resume) — accepted by the filter
|
|
15
|
-
* path but intentionally kept out of the display vocabulary.
|
|
16
|
-
*/
|
|
17
|
-
export const RECORD_ONLY_QUALIFIERS = ['any'];
|
|
18
12
|
/** Split a version into numeric `.`-segments (non-numeric tail → 0), e.g. `2026.2.19-2` → [2026,2,19]. */
|
|
19
13
|
function numericParts(v) {
|
|
20
14
|
return v.split('.').map((n) => parseInt(n, 10) || 0);
|
|
@@ -7,7 +7,7 @@ export interface AgentTarget {
|
|
|
7
7
|
version: string | null;
|
|
8
8
|
source: VersionSource;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
type AgentSpecErrorCode = 'empty' | 'unknown-agent' | 'missing-version' | 'invalid-version' | 'not-installed' | 'no-default' | 'none-installed' | 'multi-not-allowed';
|
|
11
11
|
/**
|
|
12
12
|
* Thrown on any bad spec — never `process.exit`, so the engine is safe on the
|
|
13
13
|
* hot path and in library contexts. `code` + `installed` let callers render a
|
|
@@ -63,3 +63,4 @@ export interface VersionFilter {
|
|
|
63
63
|
version: FilterVersion;
|
|
64
64
|
source: VersionSource | 'all-versions' | 'default';
|
|
65
65
|
}
|
|
66
|
+
export {};
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { RECIPE_IDS, runRecipe, analyticsWindow, type RecipeId, type RecipeSection, type AnalyticsWindow } from './recipes.js';
|
|
2
|
-
|
|
2
|
+
interface MixDashboard {
|
|
3
3
|
window: AnalyticsWindow;
|
|
4
4
|
durationMs: number;
|
|
5
5
|
sections: RecipeSection[];
|
|
6
6
|
}
|
|
7
|
-
/** @deprecated Use MixDashboard. */
|
|
8
|
-
export type TrendsDashboard = MixDashboard;
|
|
9
7
|
export declare function buildMixDashboard(opts?: {
|
|
10
8
|
days?: number;
|
|
11
9
|
ids?: RecipeId[];
|
|
12
10
|
}): MixDashboard;
|
|
13
|
-
/** @deprecated Use buildMixDashboard. */
|
|
14
|
-
export declare const buildTrendsDashboard: typeof buildMixDashboard;
|
|
15
11
|
export { analyticsWindow, analyticsWindow as trendsWindow, runRecipe, RECIPE_IDS, type RecipeId, type RecipeSection, type AnalyticsWindow, };
|
|
@@ -13,13 +13,6 @@
|
|
|
13
13
|
* lister, and the `trends` alias were removed — `mix` already did all three.
|
|
14
14
|
*/
|
|
15
15
|
import type { Command } from 'commander';
|
|
16
|
-
export declare function parseMixDays(raw: string | undefined): number;
|
|
17
|
-
export declare function printMixSection(section: {
|
|
18
|
-
id: string;
|
|
19
|
-
title: string;
|
|
20
|
-
rows: Array<Record<string, string | number | null>>;
|
|
21
|
-
}): void;
|
|
22
|
-
export declare function renderMixDashboard(days: number, asJson: boolean, bannerLabel?: string): void;
|
|
23
16
|
/**
|
|
24
17
|
* Attach counter-mix subcommands to a parent (typically `insights`).
|
|
25
18
|
*
|
|
@@ -17,7 +17,7 @@ import { setHelpSections } from '../help.js';
|
|
|
17
17
|
import { buildMixDashboard, analyticsWindow, runRecipe, RECIPE_IDS, } from './dashboard.js';
|
|
18
18
|
import { listRecipes } from './recipes.js';
|
|
19
19
|
import { queryUsage, usageDbPath, USAGE_KINDS } from './usage-db.js';
|
|
20
|
-
|
|
20
|
+
function parseMixDays(raw) {
|
|
21
21
|
const n = parseInt(raw ?? '7', 10);
|
|
22
22
|
return Number.isFinite(n) && n > 0 ? n : 7;
|
|
23
23
|
}
|
|
@@ -25,7 +25,7 @@ function parseLimit(raw, fallback) {
|
|
|
25
25
|
const n = parseInt(raw ?? String(fallback), 10);
|
|
26
26
|
return Number.isFinite(n) && n > 0 ? n : fallback;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
function printMixSection(section) {
|
|
29
29
|
console.log(chalk.bold(section.title));
|
|
30
30
|
if (section.rows.length === 0) {
|
|
31
31
|
console.log(chalk.gray(' (no data)'));
|
|
@@ -41,7 +41,7 @@ export function printMixSection(section) {
|
|
|
41
41
|
}
|
|
42
42
|
console.log();
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
function renderMixDashboard(days, asJson, bannerLabel = 'agents insights mix') {
|
|
45
45
|
const dash = buildMixDashboard({ days });
|
|
46
46
|
if (asJson) {
|
|
47
47
|
console.log(JSON.stringify(dash, null, 2));
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { type UsageKind } from './usage-db.js';
|
|
2
1
|
/** Time window for mix recipes under `agents insights mix`. */
|
|
3
2
|
export interface AnalyticsWindow {
|
|
4
3
|
days: number;
|
|
5
4
|
sinceIso: string;
|
|
6
5
|
}
|
|
7
|
-
/** @deprecated Use AnalyticsWindow — kept as a type alias for external callers. */
|
|
8
|
-
export type TrendsWindow = AnalyticsWindow;
|
|
9
6
|
export interface RecipeSection {
|
|
10
7
|
id: string;
|
|
11
8
|
title: string;
|
|
@@ -17,13 +14,7 @@ export declare function analyticsWindow(days: number): AnalyticsWindow;
|
|
|
17
14
|
/** @deprecated Use analyticsWindow. */
|
|
18
15
|
export declare const trendsWindow: typeof analyticsWindow;
|
|
19
16
|
export declare function recipeHarnessMix(win: AnalyticsWindow): RecipeSection;
|
|
20
|
-
export declare function recipeModelMix(win: AnalyticsWindow): RecipeSection;
|
|
21
17
|
export declare function recipeToolsPerSession(win: AnalyticsWindow): RecipeSection;
|
|
22
|
-
export declare function recipeTokenRatio(win: AnalyticsWindow): RecipeSection;
|
|
23
|
-
export declare function recipeSessionVolume(win: AnalyticsWindow): RecipeSection;
|
|
24
|
-
export declare function recipeSecretsHot(win: AnalyticsWindow): RecipeSection;
|
|
25
|
-
export declare function recipeBrowserActivity(win: AnalyticsWindow): RecipeSection;
|
|
26
|
-
export declare function recipeResourceMix(win: AnalyticsWindow): RecipeSection;
|
|
27
18
|
export type RecipeId = 'harness-mix' | 'model-mix' | 'tools-per-session' | 'token-ratio' | 'session-volume' | 'secrets-hot' | 'browser-activity' | 'resource-mix';
|
|
28
19
|
export declare const RECIPE_IDS: readonly RecipeId[];
|
|
29
20
|
export declare function runRecipe(id: RecipeId, win: AnalyticsWindow): RecipeSection;
|
|
@@ -32,6 +23,3 @@ export declare function listRecipes(): Array<{
|
|
|
32
23
|
title: string;
|
|
33
24
|
store: 'sessions' | 'usage';
|
|
34
25
|
}>;
|
|
35
|
-
export declare function hasSessionsInWindow(win: AnalyticsWindow): boolean;
|
|
36
|
-
export declare function usageKindsPresent(win: AnalyticsWindow): UsageKind[];
|
|
37
|
-
export declare function usageEventCount(kind: UsageKind, win: AnalyticsWindow): number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Database from '../sqlite.js';
|
|
2
2
|
import { getSessionsDbPath } from '../state.js';
|
|
3
|
-
import { topNamesByKind, kindMix
|
|
3
|
+
import { topNamesByKind, kindMix } from './usage-db.js';
|
|
4
4
|
export function analyticsWindow(days) {
|
|
5
5
|
const d = Number.isFinite(days) && days > 0 ? days : 7;
|
|
6
6
|
const since = new Date(Date.now() - d * 24 * 60 * 60 * 1000);
|
|
@@ -59,7 +59,7 @@ export function recipeHarnessMix(win) {
|
|
|
59
59
|
catch { /* ignore */ }
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
function recipeModelMix(win) {
|
|
63
63
|
const db = openSessions();
|
|
64
64
|
const id = 'model-mix';
|
|
65
65
|
const title = 'Model mix';
|
|
@@ -144,7 +144,7 @@ export function recipeToolsPerSession(win) {
|
|
|
144
144
|
catch { /* ignore */ }
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
|
|
147
|
+
function recipeTokenRatio(win) {
|
|
148
148
|
const db = openSessions();
|
|
149
149
|
const id = 'token-ratio';
|
|
150
150
|
const title = 'Token read→write ratio';
|
|
@@ -198,7 +198,7 @@ export function recipeTokenRatio(win) {
|
|
|
198
198
|
catch { /* ignore */ }
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
-
|
|
201
|
+
function recipeSessionVolume(win) {
|
|
202
202
|
const db = openSessions();
|
|
203
203
|
const id = 'session-volume';
|
|
204
204
|
const title = 'Session volume';
|
|
@@ -232,7 +232,7 @@ export function recipeSessionVolume(win) {
|
|
|
232
232
|
catch { /* ignore */ }
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
-
|
|
235
|
+
function recipeSecretsHot(win) {
|
|
236
236
|
const id = 'secrets-hot';
|
|
237
237
|
const title = 'Hottest secrets';
|
|
238
238
|
const rows = topNamesByKind('secret', win.sinceIso, 15);
|
|
@@ -244,7 +244,7 @@ export function recipeSecretsHot(win) {
|
|
|
244
244
|
empty: rows.length === 0,
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
|
-
|
|
247
|
+
function recipeBrowserActivity(win) {
|
|
248
248
|
const id = 'browser-activity';
|
|
249
249
|
const title = 'Browser activity';
|
|
250
250
|
const rows = topNamesByKind('browser', win.sinceIso, 15);
|
|
@@ -256,7 +256,7 @@ export function recipeBrowserActivity(win) {
|
|
|
256
256
|
empty: rows.length === 0,
|
|
257
257
|
};
|
|
258
258
|
}
|
|
259
|
-
|
|
259
|
+
function recipeResourceMix(win) {
|
|
260
260
|
const id = 'resource-mix';
|
|
261
261
|
const title = 'Resource usage mix';
|
|
262
262
|
const rows = kindMix(win.sinceIso);
|
|
@@ -298,27 +298,3 @@ export function listRecipes() {
|
|
|
298
298
|
return { id, title: s.title, store: s.store };
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
|
-
export function hasSessionsInWindow(win) {
|
|
302
|
-
const db = openSessions();
|
|
303
|
-
if (!db)
|
|
304
|
-
return false;
|
|
305
|
-
try {
|
|
306
|
-
const row = db.prepare(`SELECT 1 AS ok FROM sessions WHERE timestamp >= ? LIMIT 1`).get(win.sinceIso);
|
|
307
|
-
return Boolean(row);
|
|
308
|
-
}
|
|
309
|
-
catch {
|
|
310
|
-
return false;
|
|
311
|
-
}
|
|
312
|
-
finally {
|
|
313
|
-
try {
|
|
314
|
-
db.close();
|
|
315
|
-
}
|
|
316
|
-
catch { /* ignore */ }
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
export function usageKindsPresent(win) {
|
|
320
|
-
return listUsageKindsWithData(win.sinceIso);
|
|
321
|
-
}
|
|
322
|
-
export function usageEventCount(kind, win) {
|
|
323
|
-
return countUsage({ kind, sinceIso: win.sinceIso });
|
|
324
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type UsageKind = 'secret' | 'agent' | 'skill' | 'plugin' | 'browser' | 'computer';
|
|
2
2
|
export declare const USAGE_KINDS: readonly UsageKind[];
|
|
3
|
-
|
|
3
|
+
interface RecordUsageParams {
|
|
4
4
|
kind: UsageKind;
|
|
5
5
|
name: string;
|
|
6
6
|
event: string;
|
|
@@ -13,7 +13,7 @@ export interface RecordUsageParams {
|
|
|
13
13
|
meta?: Record<string, unknown>;
|
|
14
14
|
ts?: string;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
interface UsageEventRow {
|
|
17
17
|
ts: string;
|
|
18
18
|
kind: UsageKind;
|
|
19
19
|
name: string;
|
|
@@ -28,7 +28,6 @@ export interface UsageEventRow {
|
|
|
28
28
|
}
|
|
29
29
|
export declare function recordUsage(p: RecordUsageParams): void;
|
|
30
30
|
export declare function usageDbPath(): string;
|
|
31
|
-
export declare function analyticsDir(): string;
|
|
32
31
|
export declare function listUsageKindsWithData(sinceIso: string): UsageKind[];
|
|
33
32
|
export declare function countUsage(opts: {
|
|
34
33
|
kind?: UsageKind;
|
|
@@ -43,42 +42,16 @@ export declare function queryUsage(opts: {
|
|
|
43
42
|
sinceIso: string;
|
|
44
43
|
limit?: number;
|
|
45
44
|
}): UsageEventRow[];
|
|
46
|
-
|
|
45
|
+
interface NameCountRow {
|
|
47
46
|
name: string;
|
|
48
47
|
n: number;
|
|
49
48
|
last: string | null;
|
|
50
49
|
}
|
|
51
50
|
export declare function topNamesByKind(kind: UsageKind, sinceIso: string, limit?: number): NameCountRow[];
|
|
52
|
-
|
|
51
|
+
interface KindCountRow {
|
|
53
52
|
kind: string;
|
|
54
53
|
n: number;
|
|
55
54
|
}
|
|
56
55
|
export declare function kindMix(sinceIso: string): KindCountRow[];
|
|
57
|
-
export declare function getSecretBundleRollup(bundle: string): Array<{
|
|
58
|
-
event: string;
|
|
59
|
-
n: number;
|
|
60
|
-
last: string | null;
|
|
61
|
-
first: string | null;
|
|
62
|
-
}>;
|
|
63
|
-
export declare function getSecretBundleAgents(bundle: string): Array<{
|
|
64
|
-
agent: string;
|
|
65
|
-
n: number;
|
|
66
|
-
}>;
|
|
67
|
-
export declare function getAllSecretBundleRollups(): Array<{
|
|
68
|
-
name: string;
|
|
69
|
-
event: string;
|
|
70
|
-
n: number;
|
|
71
|
-
last: string | null;
|
|
72
|
-
first: string | null;
|
|
73
|
-
}>;
|
|
74
|
-
export declare function getSecretHistory(bundle: string | undefined, limit?: number): Array<{
|
|
75
|
-
ts: string;
|
|
76
|
-
bundle: string;
|
|
77
|
-
event: string;
|
|
78
|
-
agent: string | null;
|
|
79
|
-
host: string | null;
|
|
80
|
-
source: string | null;
|
|
81
|
-
status: string | null;
|
|
82
|
-
keyCount: number | null;
|
|
83
|
-
}>;
|
|
84
56
|
export declare function closeUsageDb(): void;
|
|
57
|
+
export {};
|