@phnx-labs/agents-cli 1.22.113 → 1.22.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -0
- package/README.md +32 -113
- package/dist/browser.js +0 -0
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +57 -66
- package/dist/commands/accounts.d.ts +3 -77
- package/dist/commands/accounts.js +13 -366
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/audit.js +1 -1
- package/dist/commands/auth.js +0 -2
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/browser.d.ts +53 -0
- package/dist/commands/browser.js +199 -9
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/doctor.d.ts +2 -3
- package/dist/commands/doctor.js +0 -11
- package/dist/commands/events.d.ts +1 -3
- package/dist/commands/events.js +4 -7
- package/dist/commands/exec.d.ts +0 -1
- package/dist/commands/exec.js +2 -7
- package/dist/commands/feed-watch.js +52 -8
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/focus.js +1 -1
- package/dist/commands/go.d.ts +0 -17
- package/dist/commands/go.js +2 -19
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/mcp.js +8 -83
- package/dist/commands/memory.js +4 -47
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +7 -7
- package/dist/commands/plugins.js +1 -93
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/repo.js +0 -44
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +5 -2
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +23 -4
- package/dist/commands/send.d.ts +4 -4
- package/dist/commands/send.js +6 -51
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-backup-setup.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -6
- package/dist/commands/sessions-share.d.ts +5 -7
- package/dist/commands/sessions-share.js +98 -49
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +13 -104
- package/dist/commands/sessions.js +11 -18
- package/dist/commands/setup-browser.js +18 -2
- package/dist/commands/setup-computer.js +20 -6
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup-secrets.js +24 -4
- package/dist/commands/setup-terminal.d.ts +3 -0
- package/dist/commands/setup-terminal.js +22 -0
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +21 -11
- package/dist/commands/skills.js +0 -8
- package/dist/commands/ssh.d.ts +6 -0
- package/dist/commands/ssh.js +92 -233
- package/dist/commands/sync.js +14 -5
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +2 -2
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/traces.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/add.d.ts +0 -5
- package/dist/lib/accounts/add.js +1 -7
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/artifacts-client.d.ts +20 -0
- package/dist/lib/artifacts-client.js +46 -0
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +7 -7
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +59 -4
- package/dist/lib/browser/runtime-state.js +99 -18
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/service.js +21 -1
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +4 -2
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/dispatch.js +1 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/cloudflare/creds.d.ts +10 -0
- package/dist/lib/cloudflare/creds.js +46 -0
- package/dist/lib/cloudflare/provision.d.ts +35 -0
- package/dist/lib/cloudflare/provision.js +144 -0
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer/sessions-list.d.ts +55 -0
- package/dist/lib/computer/sessions-list.js +168 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -4
- package/dist/lib/daemon/daemon.js +9 -2
- package/dist/lib/daemon/feed-stream-service.d.ts +23 -0
- package/dist/lib/daemon/feed-stream-service.js +40 -0
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon-services.d.ts +3 -2
- package/dist/lib/daemon-services.js +5 -0
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +51 -6
- package/dist/lib/devices/connect.js +169 -21
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +2 -1
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +1 -1
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +2 -2
- package/dist/lib/feed/activity.d.ts +8 -33
- package/dist/lib/feed/activity.js +8 -8
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/envelope.d.ts +79 -0
- package/dist/lib/feed/envelope.js +23 -0
- package/dist/lib/feed/events.d.ts +8 -47
- package/dist/lib/feed/events.js +9 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/hub-server.d.ts +86 -0
- package/dist/lib/feed/hub-server.js +334 -0
- package/dist/lib/feed/hub.d.ts +95 -0
- package/dist/lib/feed/hub.js +255 -0
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/tool-activity.d.ts +108 -0
- package/dist/lib/feed/tool-activity.js +313 -0
- package/dist/lib/feed/tools.d.ts +198 -0
- package/dist/lib/feed/tools.js +265 -0
- package/dist/lib/feed/watch.d.ts +51 -52
- package/dist/lib/feed/watch.js +147 -17
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +3 -2
- package/dist/lib/format.js +1 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -81
- package/dist/lib/git.js +2 -199
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -24
- package/dist/lib/hosts/dispatch.js +2 -2
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +55 -4
- package/dist/lib/hosts/remote-cmd.js +125 -8
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +2 -0
- package/dist/lib/hosts/remote-cmd.test-fixture.js +22 -0
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/mcp.js +17 -11
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/probe.d.ts +4 -1
- package/dist/lib/probe.js +5 -2
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/pwsh.d.ts +33 -0
- package/dist/lib/pwsh.js +56 -0
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +15 -1
- package/dist/lib/redact.js +105 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +9 -4
- package/dist/lib/refresh.js +92 -72
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-cli.d.ts +11 -0
- package/dist/lib/secrets-cli.js +30 -0
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +7 -28
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/detached.d.ts +9 -1
- package/dist/lib/session/detached.js +31 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +2 -1
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +26 -7
- package/dist/lib/session/remote/peer-stream.js +35 -8
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +2 -7
- package/dist/lib/session/remote/watch.js +3 -3
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +2 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +8 -8
- package/dist/lib/session/sync/backend.js +3 -3
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/provision.d.ts +1 -1
- package/dist/lib/session/sync/provision.js +2 -2
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/sessions-client.js +0 -3
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/setup-tool-install.d.ts +3 -0
- package/dist/lib/setup-tool-install.js +26 -0
- package/dist/lib/setup-tool-status.d.ts +22 -0
- package/dist/lib/setup-tool-status.js +215 -0
- package/dist/lib/share-runtime.d.ts +11 -0
- package/dist/lib/share-runtime.js +63 -0
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +5 -10
- package/dist/lib/smart-launch.js +4 -12
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +49 -4
- package/dist/lib/ssh-exec.js +119 -0
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.d.ts +6 -4
- package/dist/lib/startup/command-registry.js +11 -8
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +3 -6
- package/dist/lib/storage/selection.d.ts +2 -2
- package/dist/lib/storage/selection.js +2 -2
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +9 -3
- package/dist/lib/sync-umbrella.js +18 -10
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/backend.d.ts +1 -2
- package/dist/lib/traces/backend.js +1 -2
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +2 -4
- package/dist/lib/traces/provision.js +3 -3
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +11 -9
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +3 -5
- package/scripts/postinstall.js +5 -4
- package/dist/commands/artifacts-setup.d.ts +0 -53
- package/dist/commands/artifacts-setup.js +0 -161
- package/dist/commands/artifacts.d.ts +0 -18
- package/dist/commands/artifacts.js +0 -58
- package/dist/commands/attach.d.ts +0 -12
- package/dist/commands/attach.js +0 -86
- package/dist/commands/auth-mint.d.ts +0 -12
- package/dist/commands/auth-mint.js +0 -108
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/commands/reconnect.d.ts +0 -46
- package/dist/commands/reconnect.js +0 -115
- package/dist/commands/share.d.ts +0 -293
- package/dist/commands/share.js +0 -1424
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
- package/dist/lib/share/analytics.d.ts +0 -13
- package/dist/lib/share/analytics.js +0 -45
- package/dist/lib/share/backend.d.ts +0 -120
- package/dist/lib/share/backend.js +0 -176
- package/dist/lib/share/capture.d.ts +0 -31
- package/dist/lib/share/capture.js +0 -174
- package/dist/lib/share/config.d.ts +0 -72
- package/dist/lib/share/config.js +0 -211
- package/dist/lib/share/delete.d.ts +0 -122
- package/dist/lib/share/delete.js +0 -173
- package/dist/lib/share/html.d.ts +0 -22
- package/dist/lib/share/html.js +0 -88
- package/dist/lib/share/http-error.d.ts +0 -52
- package/dist/lib/share/http-error.js +0 -65
- package/dist/lib/share/og.d.ts +0 -25
- package/dist/lib/share/og.js +0 -84
- package/dist/lib/share/provision.d.ts +0 -127
- package/dist/lib/share/provision.js +0 -285
- package/dist/lib/share/publish.d.ts +0 -388
- package/dist/lib/share/publish.js +0 -818
- package/dist/lib/share/worker-template.d.ts +0 -27
- package/dist/lib/share/worker-template.js +0 -2424
- package/dist/lib/storage/index.d.ts +0 -14
- package/dist/lib/storage/index.js +0 -14
- package/dist/lib/storage/visibility.d.ts +0 -82
- package/dist/lib/storage/visibility.js +0 -99
|
@@ -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 {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { installCli, resolveCliManifest } from './cli-resources.js';
|
|
2
|
+
import { getCachedToolSetup, refreshToolSetup } from './setup-tool-status.js';
|
|
3
|
+
const PACKAGES = {
|
|
4
|
+
browser: '@phnx-labs/browser-cli@0.1.3',
|
|
5
|
+
computer: '@phnx-labs/computer-cli@0.1.5',
|
|
6
|
+
};
|
|
7
|
+
/** Use the host installer; setup must not install or start a tool from a read. */
|
|
8
|
+
export async function installSetupTool(tool) {
|
|
9
|
+
if (getCachedToolSetup().find((row) => row.tool === tool)?.installed)
|
|
10
|
+
return true;
|
|
11
|
+
const manifest = resolveCliManifest(tool) ?? {
|
|
12
|
+
name: tool,
|
|
13
|
+
check: { kind: 'which', cmd: tool },
|
|
14
|
+
install: [{ npm: PACKAGES[tool] }],
|
|
15
|
+
source: 'builtin',
|
|
16
|
+
path: '',
|
|
17
|
+
};
|
|
18
|
+
const result = installCli(manifest);
|
|
19
|
+
if (result.error)
|
|
20
|
+
console.error(result.error);
|
|
21
|
+
const rows = await refreshToolSetup(tool);
|
|
22
|
+
const installed = rows[0]?.installed === true;
|
|
23
|
+
if (!installed && !result.error)
|
|
24
|
+
console.error(`${tool} installation did not produce a standalone executable on PATH.`);
|
|
25
|
+
return result.installed && installed;
|
|
26
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const SETUP_TOOLS: readonly ["browser", "computer", "secrets"];
|
|
2
|
+
export type SetupTool = typeof SETUP_TOOLS[number];
|
|
3
|
+
export interface ToolSetupRow {
|
|
4
|
+
tool: SetupTool;
|
|
5
|
+
installed: boolean | null;
|
|
6
|
+
executable?: string;
|
|
7
|
+
version?: string;
|
|
8
|
+
readiness: 'ready' | 'needs-setup' | 'permission-required' | 'stopped' | 'unsupported' | 'unknown';
|
|
9
|
+
detail: string;
|
|
10
|
+
checkedAtMs: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface ToolSetupOptions {
|
|
13
|
+
cacheDir?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function toolSetupCacheDir(options?: ToolSetupOptions): string;
|
|
16
|
+
/** Presence is metadata; health is the last explicit check, never a timer probe. */
|
|
17
|
+
export declare function getCachedToolSetup(options?: ToolSetupOptions): ToolSetupRow[];
|
|
18
|
+
export declare function toolReadiness(tool: SetupTool, status: unknown): Pick<ToolSetupRow, 'readiness' | 'detail'>;
|
|
19
|
+
/** A shared disk lock coalesces overlapping requests from separate CLI clients. */
|
|
20
|
+
export declare function refreshToolSetup(tool?: SetupTool | 'all', options?: ToolSetupOptions): Promise<ToolSetupRow[]>;
|
|
21
|
+
/** File notifications are shared by the daemon collector; no background probes. */
|
|
22
|
+
export declare function subscribeToolSetup(listener: (rows: ToolSetupRow[]) => void, options?: ToolSetupOptions): () => void;
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { findInPath } from './agent-spec/agents.js';
|
|
4
|
+
import { getCacheDir, getDeviceMetaPath, getHelpersDir, getUserAgentsDir } from './state.js';
|
|
5
|
+
import { atomicWriteJsonSync, withFileLockAsync } from './fs-atomic.js';
|
|
6
|
+
import { probeCapture } from './probe.js';
|
|
7
|
+
import { invocation, isStandaloneComputer } from './computer-client.js';
|
|
8
|
+
import { getSocketPath as browserSocketPath } from './browser/ipc.js';
|
|
9
|
+
export const SETUP_TOOLS = ['browser', 'computer', 'secrets'];
|
|
10
|
+
export function toolSetupCacheDir(options = {}) {
|
|
11
|
+
return path.join(options.cacheDir ?? getCacheDir(), 'setup-tools');
|
|
12
|
+
}
|
|
13
|
+
function cachePath(tool, options) {
|
|
14
|
+
return path.join(toolSetupCacheDir(options), `${tool}.json`);
|
|
15
|
+
}
|
|
16
|
+
function setupInputs(tool) {
|
|
17
|
+
const inputs = [path.join(getUserAgentsDir(), 'agents.yaml'), getDeviceMetaPath()];
|
|
18
|
+
if (tool === 'browser')
|
|
19
|
+
inputs.push(browserSocketPath());
|
|
20
|
+
if (tool === 'computer')
|
|
21
|
+
inputs.push(process.env.COMPUTER_HELPER_SOCKET || path.join(getHelpersDir(), 'computer.sock'));
|
|
22
|
+
return inputs;
|
|
23
|
+
}
|
|
24
|
+
function inputStamp(tool) {
|
|
25
|
+
return setupInputs(tool).map((file) => {
|
|
26
|
+
try {
|
|
27
|
+
const stat = fs.statSync(file);
|
|
28
|
+
return `${file}:${stat.ino}:${stat.mtimeMs}:${stat.size}`;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return `${file}:missing`;
|
|
32
|
+
}
|
|
33
|
+
}).join('|');
|
|
34
|
+
}
|
|
35
|
+
function binaryMetadata(tool) {
|
|
36
|
+
const empty = { tool, installed: false, readiness: 'needs-setup', detail: 'CLI is not installed.', checkedAtMs: null };
|
|
37
|
+
try {
|
|
38
|
+
const explicit = process.env[`${tool.toUpperCase()}_BIN`]?.trim();
|
|
39
|
+
const accept = (candidate) => {
|
|
40
|
+
if (tool === 'computer')
|
|
41
|
+
return isStandaloneComputer(candidate);
|
|
42
|
+
if (tool === 'browser') {
|
|
43
|
+
try {
|
|
44
|
+
return !fs.realpathSync(candidate).endsWith(path.join('dist', 'browser.js'));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
};
|
|
52
|
+
let executable = explicit ? (accept(explicit) ? explicit : null) : findInPath(tool, { accept });
|
|
53
|
+
if (!executable)
|
|
54
|
+
return { row: empty, fingerprint: 'missing' };
|
|
55
|
+
if (/\.(cmd|ps1)$/i.test(executable)) {
|
|
56
|
+
const packageDir = path.join(path.dirname(executable), 'node_modules', '@phnx-labs', `${tool}-cli`);
|
|
57
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(packageDir, 'package.json'), 'utf8'));
|
|
58
|
+
const entry = typeof pkg.bin === 'string' ? pkg.bin : pkg.bin?.[tool];
|
|
59
|
+
if (pkg.name !== `@phnx-labs/${tool}-cli` || typeof entry !== 'string')
|
|
60
|
+
throw new Error('unrecognized npm launcher');
|
|
61
|
+
const resolved = path.resolve(packageDir, entry);
|
|
62
|
+
if (!resolved.startsWith(`${path.resolve(packageDir)}${path.sep}`))
|
|
63
|
+
throw new Error('invalid npm entrypoint');
|
|
64
|
+
executable = resolved;
|
|
65
|
+
}
|
|
66
|
+
fs.accessSync(executable, process.platform === 'win32' || /\.[cm]?js$/i.test(executable) ? fs.constants.R_OK : fs.constants.X_OK);
|
|
67
|
+
const real = fs.realpathSync(executable);
|
|
68
|
+
const stat = fs.statSync(real);
|
|
69
|
+
if (!stat.isFile())
|
|
70
|
+
throw new Error('not a file');
|
|
71
|
+
let version;
|
|
72
|
+
let dir = path.dirname(real);
|
|
73
|
+
for (let depth = 0; depth < 5; depth++) {
|
|
74
|
+
try {
|
|
75
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
|
|
76
|
+
if (pkg.name === `@phnx-labs/${tool}-cli` && typeof pkg.version === 'string') {
|
|
77
|
+
version = pkg.version;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch { /* Executables need not be npm packages. */ }
|
|
82
|
+
const parent = path.dirname(dir);
|
|
83
|
+
if (parent === dir)
|
|
84
|
+
break;
|
|
85
|
+
dir = parent;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
fingerprint: `${real}:${stat.size}:${stat.mtimeMs}:${version ?? ''}|${inputStamp(tool)}`,
|
|
89
|
+
row: { tool, installed: true, executable, version, readiness: 'unknown', detail: 'Installed. Health has not been checked.', checkedAtMs: null },
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return { fingerprint: 'unavailable', row: { ...empty, installed: null, readiness: 'unknown', detail: 'Executable could not be inspected.' } };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function readCache(tool, options) {
|
|
97
|
+
try {
|
|
98
|
+
const cached = JSON.parse(fs.readFileSync(cachePath(tool, options), 'utf8'));
|
|
99
|
+
if (cached.v === 1 && cached.row?.tool === tool && typeof cached.fingerprint === 'string')
|
|
100
|
+
return cached;
|
|
101
|
+
}
|
|
102
|
+
catch { /* No health result yet. */ }
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/** Presence is metadata; health is the last explicit check, never a timer probe. */
|
|
106
|
+
export function getCachedToolSetup(options = {}) {
|
|
107
|
+
return SETUP_TOOLS.map((tool) => {
|
|
108
|
+
const { row, fingerprint } = binaryMetadata(tool);
|
|
109
|
+
const cached = readCache(tool, options);
|
|
110
|
+
return cached?.fingerprint === fingerprint ? { ...cached.row, executable: row.executable, version: row.version } : row;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
export function toolReadiness(tool, status) {
|
|
114
|
+
if (!status || typeof status !== 'object')
|
|
115
|
+
return { readiness: 'unknown', detail: 'The CLI returned an unreadable health result.' };
|
|
116
|
+
const value = status;
|
|
117
|
+
if (tool === 'computer') {
|
|
118
|
+
if (value.installed === false)
|
|
119
|
+
return { readiness: 'needs-setup', detail: 'CLI installed; computer helper needs setup.' };
|
|
120
|
+
if (value.running === true && value.trusted === true)
|
|
121
|
+
return { readiness: 'ready', detail: 'Helper is running and Accessibility is granted. Screen Recording is checked when capturing.' };
|
|
122
|
+
if (value.running === true && value.trusted === false)
|
|
123
|
+
return { readiness: 'permission-required', detail: 'Grant Accessibility to Agents Computer in System Settings.' };
|
|
124
|
+
if (value.running === false)
|
|
125
|
+
return { readiness: 'stopped', detail: 'Computer helper is stopped or unreachable.' };
|
|
126
|
+
}
|
|
127
|
+
if (tool === 'browser') {
|
|
128
|
+
if (value.running === true)
|
|
129
|
+
return { readiness: 'ready', detail: 'Browser service is running.' };
|
|
130
|
+
if (value.running === false)
|
|
131
|
+
return { readiness: 'stopped', detail: 'Browser service is stopped.' };
|
|
132
|
+
}
|
|
133
|
+
return { readiness: 'unknown', detail: typeof value.error === 'string' && value.error.trim() ? value.error.slice(0, 500) : 'The CLI did not report a recognized health state.' };
|
|
134
|
+
}
|
|
135
|
+
async function checkTool(row) {
|
|
136
|
+
if (!row.installed || !row.executable)
|
|
137
|
+
return { ...row, checkedAtMs: Date.now() };
|
|
138
|
+
// The standalone has no non-interactive health JSON. Do not list bundles or
|
|
139
|
+
// unlock the broker merely to paint a settings row.
|
|
140
|
+
if (row.tool === 'secrets')
|
|
141
|
+
return { ...row, checkedAtMs: Date.now(), detail: 'Installed. Secret access is checked when used; this check does not unlock secrets.' };
|
|
142
|
+
try {
|
|
143
|
+
const { command, prefix } = invocation(row.executable);
|
|
144
|
+
const { stdout } = await probeCapture(command, [...prefix, 'status', '--json'], 8000, { acceptedExitCodes: [0, 1], maxOutputBytes: 256 * 1024 });
|
|
145
|
+
return { ...row, ...toolReadiness(row.tool, JSON.parse(stdout)), checkedAtMs: Date.now() };
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return { ...row, readiness: 'unknown', detail: 'Health check failed or timed out. Check again to retry.', checkedAtMs: Date.now() };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** A shared disk lock coalesces overlapping requests from separate CLI clients. */
|
|
152
|
+
export async function refreshToolSetup(tool = 'all', options = {}) {
|
|
153
|
+
const requestedAt = Date.now();
|
|
154
|
+
const dir = toolSetupCacheDir(options);
|
|
155
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
156
|
+
for (const selected of tool === 'all' ? SETUP_TOOLS : [tool]) {
|
|
157
|
+
const file = cachePath(selected, options);
|
|
158
|
+
await withFileLockAsync(file, async () => {
|
|
159
|
+
const metadata = binaryMetadata(selected);
|
|
160
|
+
const cached = readCache(selected, options);
|
|
161
|
+
if (cached?.fingerprint === metadata.fingerprint && (cached.row.checkedAtMs ?? 0) >= requestedAt)
|
|
162
|
+
return;
|
|
163
|
+
const row = await checkTool(metadata.row);
|
|
164
|
+
atomicWriteJsonSync(file, { v: 1, fingerprint: metadata.fingerprint, row });
|
|
165
|
+
}, { realpath: false, acquireTimeoutMs: 20_000 });
|
|
166
|
+
}
|
|
167
|
+
return getCachedToolSetup(options).filter((row) => tool === 'all' || row.tool === tool);
|
|
168
|
+
}
|
|
169
|
+
/** File notifications are shared by the daemon collector; no background probes. */
|
|
170
|
+
export function subscribeToolSetup(listener, options = {}) {
|
|
171
|
+
const dir = toolSetupCacheDir(options);
|
|
172
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
173
|
+
const paths = new Set([dir, ...(process.env.PATH ?? '').split(path.delimiter).filter(Boolean)]);
|
|
174
|
+
for (const tool of SETUP_TOOLS)
|
|
175
|
+
for (const input of setupInputs(tool))
|
|
176
|
+
paths.add(path.dirname(input));
|
|
177
|
+
for (const row of getCachedToolSetup(options)) {
|
|
178
|
+
if (row.executable) {
|
|
179
|
+
paths.add(path.dirname(row.executable));
|
|
180
|
+
try {
|
|
181
|
+
paths.add(path.dirname(fs.realpathSync(row.executable)));
|
|
182
|
+
}
|
|
183
|
+
catch { /* Removed since discovery. */ }
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
let previous = JSON.stringify(getCachedToolSetup(options));
|
|
187
|
+
let debounce;
|
|
188
|
+
const changed = () => {
|
|
189
|
+
if (debounce)
|
|
190
|
+
return;
|
|
191
|
+
debounce = setTimeout(() => {
|
|
192
|
+
debounce = undefined;
|
|
193
|
+
const rows = getCachedToolSetup(options);
|
|
194
|
+
const next = JSON.stringify(rows);
|
|
195
|
+
if (next !== previous) {
|
|
196
|
+
previous = next;
|
|
197
|
+
listener(rows);
|
|
198
|
+
}
|
|
199
|
+
}, 150);
|
|
200
|
+
debounce.unref();
|
|
201
|
+
};
|
|
202
|
+
const watchers = [];
|
|
203
|
+
for (const target of paths) {
|
|
204
|
+
try {
|
|
205
|
+
const watcher = fs.watch(target, { persistent: false }, changed);
|
|
206
|
+
watcher.on('error', changed);
|
|
207
|
+
watchers.push(watcher);
|
|
208
|
+
}
|
|
209
|
+
catch { /* Absent PATH entries have no executable to report. */ }
|
|
210
|
+
}
|
|
211
|
+
changed();
|
|
212
|
+
return () => { if (debounce)
|
|
213
|
+
clearTimeout(debounce); for (const watcher of watchers)
|
|
214
|
+
watcher.close(); };
|
|
215
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Best-effort runtime env for spawned agents. Never throws AND never prompts.
|
|
2
|
+
*
|
|
3
|
+
* Auto-injecting the share write token on every `agents run` is a background
|
|
4
|
+
* convenience, NOT a user-initiated secret access — so it MUST NOT raise a Touch
|
|
5
|
+
* ID sheet (SEC-13: an agent launch never pops biometry on its own). The read is
|
|
6
|
+
* always `agentOnly`: it resolves the token only from the injected env or an
|
|
7
|
+
* already-held / no-ACL bundle, and silently returns undefined otherwise (the
|
|
8
|
+
* agent can still publish via its own `artifacts share` credentials). For
|
|
9
|
+
* zero-friction auto-share with no prompt: unlock once (`agents secrets unlock
|
|
10
|
+
* share`) or make it no-ACL (`agents secrets policy share never`). */
|
|
11
|
+
export declare function shareRuntimeEnv(): Record<string, string> | undefined;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Runtime share-token injection for spawned agents.
|
|
2
|
+
//
|
|
3
|
+
// The artifact share ENGINE moved to `@phnx-labs/artifacts-cli` (PHNX-3992);
|
|
4
|
+
// agents-cli no longer publishes artifacts itself. What stays here is the thin
|
|
5
|
+
// glue that lets a dispatched agent inherit the operator's BYO write token so
|
|
6
|
+
// its own `artifacts share` can publish headlessly: `run`/`teams`/`cloud`
|
|
7
|
+
// dispatch call `shareRuntimeEnv()` and forward the result into the agent env.
|
|
8
|
+
// artifacts-cli honors the same `SHARE_WRITE_TOKEN` variable, so the injection
|
|
9
|
+
// contract is unchanged by the extraction.
|
|
10
|
+
//
|
|
11
|
+
// The endpoint config still lives in `agents.yaml` under `share:` (Meta.share)
|
|
12
|
+
// so a previously-provisioned BYO endpoint keeps syncing fleet-wide; the raw
|
|
13
|
+
// write token lives in the keychain-backed `share` secrets bundle, never on disk.
|
|
14
|
+
import { readMeta } from './state.js';
|
|
15
|
+
import { bundleExistsSync as bundleExists, readAndResolveBundleEnvSync as readAndResolveBundleEnv, } from './secrets-client.js';
|
|
16
|
+
const SHARE_BUNDLE = 'share';
|
|
17
|
+
const SHARE_TOKEN_KEY = 'WRITE_TOKEN';
|
|
18
|
+
const SHARE_TOKEN_ENV_KEY = 'SHARE_WRITE_TOKEN';
|
|
19
|
+
/** Trim; empty / whitespace-only strings are absent. */
|
|
20
|
+
function nonempty(v) {
|
|
21
|
+
const t = v?.trim();
|
|
22
|
+
return t ? t : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Whether a BYO share endpoint is still configured in `agents.yaml`. */
|
|
25
|
+
function hasShareEndpoint() {
|
|
26
|
+
return !!nonempty(readMeta().share?.baseUrl);
|
|
27
|
+
}
|
|
28
|
+
/** The write token as injected ephemerally into fleet/cloud agents. */
|
|
29
|
+
function readWriteTokenEnv(env = process.env) {
|
|
30
|
+
const token = env[SHARE_TOKEN_ENV_KEY]?.trim();
|
|
31
|
+
return token ? token : null;
|
|
32
|
+
}
|
|
33
|
+
/** Best-effort runtime env for spawned agents. Never throws AND never prompts.
|
|
34
|
+
*
|
|
35
|
+
* Auto-injecting the share write token on every `agents run` is a background
|
|
36
|
+
* convenience, NOT a user-initiated secret access — so it MUST NOT raise a Touch
|
|
37
|
+
* ID sheet (SEC-13: an agent launch never pops biometry on its own). The read is
|
|
38
|
+
* always `agentOnly`: it resolves the token only from the injected env or an
|
|
39
|
+
* already-held / no-ACL bundle, and silently returns undefined otherwise (the
|
|
40
|
+
* agent can still publish via its own `artifacts share` credentials). For
|
|
41
|
+
* zero-friction auto-share with no prompt: unlock once (`agents secrets unlock
|
|
42
|
+
* share`) or make it no-ACL (`agents secrets policy share never`). */
|
|
43
|
+
export function shareRuntimeEnv() {
|
|
44
|
+
if (!hasShareEndpoint())
|
|
45
|
+
return undefined;
|
|
46
|
+
const fromEnv = readWriteTokenEnv();
|
|
47
|
+
if (fromEnv)
|
|
48
|
+
return { [SHARE_TOKEN_ENV_KEY]: fromEnv };
|
|
49
|
+
try {
|
|
50
|
+
if (!bundleExists(SHARE_BUNDLE))
|
|
51
|
+
return undefined;
|
|
52
|
+
const { env } = readAndResolveBundleEnv(SHARE_BUNDLE, {
|
|
53
|
+
caller: 'share',
|
|
54
|
+
keys: [SHARE_TOKEN_KEY],
|
|
55
|
+
agentOnly: true, // never raise a Touch ID sheet on an agent launch (SEC-13)
|
|
56
|
+
});
|
|
57
|
+
const token = env[SHARE_TOKEN_KEY];
|
|
58
|
+
return token ? { [SHARE_TOKEN_ENV_KEY]: token } : undefined;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
}
|
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
|
}
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
import { type AffinityRow } from './session/db.js';
|
|
9
9
|
import { type DevicePlacementSignal } from './teams/scheduler.js';
|
|
10
10
|
import type { AgentType } from './teams/agents.js';
|
|
11
|
-
/** Peakiness of usage weights; >1 amplifies the most-used option. */
|
|
12
|
-
export declare const DEFAULT_AFFINITY_ALPHA = 1.3;
|
|
13
11
|
export interface WeightedCandidate {
|
|
14
12
|
key: string;
|
|
15
13
|
launches: number;
|
|
@@ -41,7 +39,7 @@ export declare function sampleWeighted(candidates: WeightedCandidate[], rng?: ()
|
|
|
41
39
|
* keep agents off).
|
|
42
40
|
*/
|
|
43
41
|
export declare function listOnlineDeviceNames(localName?: string): string[];
|
|
44
|
-
|
|
42
|
+
interface DeviceAffinityOptions {
|
|
45
43
|
sinceDays?: number;
|
|
46
44
|
alpha?: number;
|
|
47
45
|
/**
|
|
@@ -64,7 +62,7 @@ export interface DeviceAffinityPlan {
|
|
|
64
62
|
pickedDeviceKey: string | null;
|
|
65
63
|
}
|
|
66
64
|
/** Live placement plan used by the explicit `--device auto` surface. */
|
|
67
|
-
|
|
65
|
+
interface DeviceAutoPlan {
|
|
68
66
|
/** null means the local machine won the comparison. */
|
|
69
67
|
host: string | null;
|
|
70
68
|
candidates: Array<{
|
|
@@ -114,21 +112,17 @@ export declare function resolveDeviceAuto(agent?: string, opts?: {
|
|
|
114
112
|
export declare function resolveDeviceAffinity(opts?: DeviceAffinityOptions): DeviceAffinityPlan;
|
|
115
113
|
/** True when a host flag value means affinity pick. */
|
|
116
114
|
export declare function isDeviceAuto(value: string | undefined | null): boolean;
|
|
117
|
-
|
|
115
|
+
type DeviceAutoHostOptions = {
|
|
118
116
|
host?: string;
|
|
119
117
|
device?: string;
|
|
120
118
|
on?: string;
|
|
121
119
|
computer?: string;
|
|
122
|
-
/** @deprecated Hidden alias for `--device auto`. */
|
|
123
|
-
smart?: boolean;
|
|
124
120
|
balanced?: boolean;
|
|
125
121
|
strategy?: string;
|
|
126
122
|
};
|
|
127
123
|
export type DeviceAutoApplyResult = {
|
|
128
124
|
/** True when automatic placement ran successfully. */
|
|
129
125
|
attempted: boolean;
|
|
130
|
-
/** True when deprecated `--smart` was seen. */
|
|
131
|
-
deprecationSmart: boolean;
|
|
132
126
|
/** Present when affinity resolved without error. */
|
|
133
127
|
banner?: {
|
|
134
128
|
hostLabel: string;
|
|
@@ -137,7 +131,7 @@ export type DeviceAutoApplyResult = {
|
|
|
137
131
|
};
|
|
138
132
|
};
|
|
139
133
|
/**
|
|
140
|
-
* Apply `--device auto`
|
|
134
|
+
* Apply `--device auto` onto run options.
|
|
141
135
|
* Mutates `options` in place. Placement failures propagate without rewriting
|
|
142
136
|
* `auto`, so callers fail loud instead of silently launching locally.
|
|
143
137
|
*/
|
|
@@ -146,3 +140,4 @@ export declare function applyDeviceAutoToOptions(options: DeviceAutoHostOptions,
|
|
|
146
140
|
agent?: string;
|
|
147
141
|
accountPickerRequested?: boolean;
|
|
148
142
|
}): Promise<DeviceAutoApplyResult>;
|
|
143
|
+
export {};
|
package/dist/lib/smart-launch.js
CHANGED
|
@@ -13,7 +13,7 @@ import { normalizeHost } from './machine-id.js';
|
|
|
13
13
|
import { probePoolSignals } from './teams/placement-probe.js';
|
|
14
14
|
import { pickBestDevice } from './teams/scheduler.js';
|
|
15
15
|
/** Peakiness of usage weights; >1 amplifies the most-used option. */
|
|
16
|
-
|
|
16
|
+
const DEFAULT_AFFINITY_ALPHA = 1.3;
|
|
17
17
|
/**
|
|
18
18
|
* Convert affinity rows into positive weights: launches^α (floor 1 for any
|
|
19
19
|
* row with launches > 0 so a single-use host still participates).
|
|
@@ -176,7 +176,7 @@ export async function resolveDeviceAuto(agent, opts = {}) {
|
|
|
176
176
|
if (eligiblePool.length === 0) {
|
|
177
177
|
throw new Error(formatNoHealthyDeviceError(pool, signals, agent));
|
|
178
178
|
}
|
|
179
|
-
// `agents devices
|
|
179
|
+
// `agents devices config <name> auto-launch.preferred on` boosts a device in the ranking — resolved
|
|
180
180
|
// over the same pool so a fleet default reaches a doc-less box.
|
|
181
181
|
const preferred = opts.preferred ?? autoLaunchPreferredSet(pool, { roster: pool });
|
|
182
182
|
const picked = pickBestDevice(eligiblePool, [], { signals, agentLabel: agent, preferred });
|
|
@@ -260,21 +260,14 @@ export function isDeviceAuto(value) {
|
|
|
260
260
|
}
|
|
261
261
|
const HOST_SLOTS = ['host', 'device', 'on', 'computer'];
|
|
262
262
|
/**
|
|
263
|
-
* Apply `--device auto`
|
|
263
|
+
* Apply `--device auto` onto run options.
|
|
264
264
|
* Mutates `options` in place. Placement failures propagate without rewriting
|
|
265
265
|
* `auto`, so callers fail loud instead of silently launching locally.
|
|
266
266
|
*/
|
|
267
267
|
export async function applyDeviceAutoToOptions(options, deps = {}) {
|
|
268
|
-
let deprecationSmart = false;
|
|
269
|
-
if (options.smart) {
|
|
270
|
-
const anyHost = HOST_SLOTS.some((k) => typeof options[k] === 'string' && options[k].trim() !== '');
|
|
271
|
-
if (!anyHost)
|
|
272
|
-
options.device = 'auto';
|
|
273
|
-
deprecationSmart = true;
|
|
274
|
-
}
|
|
275
268
|
const hasAuto = HOST_SLOTS.some((k) => isDeviceAuto(options[k]));
|
|
276
269
|
if (!hasAuto) {
|
|
277
|
-
return { attempted: false
|
|
270
|
+
return { attempted: false };
|
|
278
271
|
}
|
|
279
272
|
const accountPickerRequested = deps.accountPickerRequested ?? false;
|
|
280
273
|
const resolve = deps.resolve ?? ((accountPicker) => resolveDeviceAuto(deps.agent, { accountPicker }));
|
|
@@ -296,7 +289,6 @@ export async function applyDeviceAutoToOptions(options, deps = {}) {
|
|
|
296
289
|
const acctNote = accountPickerRequested ? 'accounts=picker' : 'accounts=balanced';
|
|
297
290
|
return {
|
|
298
291
|
attempted: true,
|
|
299
|
-
deprecationSmart,
|
|
300
292
|
banner: { hostLabel, deviceHint, acctNote },
|
|
301
293
|
};
|
|
302
294
|
}
|
package/dist/lib/snapshot.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ import type { AgentId } from './types.js';
|
|
|
19
19
|
import type { UnifiedSyncStatus } from './sync-status.js';
|
|
20
20
|
import type { ViewJsonAgent } from './view-types.js';
|
|
21
21
|
/** One open-block row in the optional feed summary (no full question bodies). */
|
|
22
|
-
|
|
22
|
+
interface SnapshotFeedBlock {
|
|
23
23
|
blockId: string;
|
|
24
24
|
sessionId: string;
|
|
25
25
|
host: string;
|
|
@@ -66,7 +66,7 @@ export interface FleetSnapshot {
|
|
|
66
66
|
/** Present when --with-sync (UnifiedSyncStatus; does not replace `agents sync status`). */
|
|
67
67
|
sync?: UnifiedSyncStatus;
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
interface ComputeSnapshotOptions {
|
|
70
70
|
/** Restrict inventory to one agent id. */
|
|
71
71
|
agent?: AgentId;
|
|
72
72
|
/** Local sessions only — no cross-machine SSH fan-out. Default true for cheap polls. */
|
|
@@ -101,3 +101,4 @@ export declare function assembleSnapshot(parts: {
|
|
|
101
101
|
* `local: false` (or hosts) to match full `sessions --active` fleet scope.
|
|
102
102
|
*/
|
|
103
103
|
export declare function computeSnapshot(opts?: ComputeSnapshotOptions): Promise<FleetSnapshot>;
|
|
104
|
+
export {};
|