@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
|
@@ -18,10 +18,6 @@
|
|
|
18
18
|
* (`downloadMenubarHelperApp`: sha256, codesign, Team, designated-requirement
|
|
19
19
|
* pin, notarization) is unchanged — resolution only chooses the version.
|
|
20
20
|
*/
|
|
21
|
-
/** The repo whose releases carry `menubar/v*` tags (same as the download URL). */
|
|
22
|
-
export declare const MENUBAR_RELEASES_API = "https://api.github.com/repos/phnx-labs/agi-cli/releases?per_page=100";
|
|
23
|
-
/** How long a resolved answer is trusted before the release list is re-read. */
|
|
24
|
-
export declare const MENUBAR_RESOLVE_TTL_MS: number;
|
|
25
21
|
/** One release as the resolver sees it — the subset of the GitHub shape it reads. */
|
|
26
22
|
export interface ReleaseCandidate {
|
|
27
23
|
tagName: string;
|
|
@@ -29,7 +25,7 @@ export interface ReleaseCandidate {
|
|
|
29
25
|
draft?: boolean;
|
|
30
26
|
prerelease?: boolean;
|
|
31
27
|
}
|
|
32
|
-
|
|
28
|
+
interface MenubarResolveCache {
|
|
33
29
|
/** Epoch ms of the release-list read this answer came from. */
|
|
34
30
|
checkedAt: number;
|
|
35
31
|
/** The newest published helper version at that time (never below the floor then). */
|
|
@@ -41,8 +37,6 @@ export interface MenubarResolveCache {
|
|
|
41
37
|
* pre-release, and carry both the zip and its `.sha256`.
|
|
42
38
|
*/
|
|
43
39
|
export declare function pickNewestMenubarVersion(candidates: ReleaseCandidate[], floor: string): string;
|
|
44
|
-
/** Where the resolved answer lives: beside the helper's own download cache. */
|
|
45
|
-
export declare function menubarResolveCachePath(): string;
|
|
46
40
|
export declare function readMenubarResolveCache(file: string): MenubarResolveCache | null;
|
|
47
41
|
/**
|
|
48
42
|
* The cached answer when it is usable offline: at or above the floor, of any
|
|
@@ -61,8 +55,6 @@ type FetchLike = (input: string, init?: {
|
|
|
61
55
|
status: number;
|
|
62
56
|
json(): Promise<unknown>;
|
|
63
57
|
}>;
|
|
64
|
-
/** Read the release list. Unauthenticated: release metadata is public and this runs at most once a day per machine. */
|
|
65
|
-
export declare function fetchMenubarReleaseCandidates(fetchImpl?: FetchLike): Promise<ReleaseCandidate[]>;
|
|
66
58
|
/**
|
|
67
59
|
* The helper version to install now: the newest published build >= floor.
|
|
68
60
|
*
|
|
@@ -26,9 +26,9 @@ import { helperFloor } from '../helper-versions.js';
|
|
|
26
26
|
import { getCliVersion } from '../version.js';
|
|
27
27
|
import { MENUBAR_HELPER_ASSET } from './download-menubar.js';
|
|
28
28
|
/** The repo whose releases carry `menubar/v*` tags (same as the download URL). */
|
|
29
|
-
|
|
29
|
+
const MENUBAR_RELEASES_API = 'https://api.github.com/repos/phnx-labs/agi-cli/releases?per_page=100';
|
|
30
30
|
/** How long a resolved answer is trusted before the release list is re-read. */
|
|
31
|
-
|
|
31
|
+
const MENUBAR_RESOLVE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
32
32
|
const TAG = /^menubar\/v(\d+\.\d+\.\d+)$/;
|
|
33
33
|
/**
|
|
34
34
|
* Pure: the newest candidate at or above `floor`, else the floor. A tag must be
|
|
@@ -51,7 +51,7 @@ export function pickNewestMenubarVersion(candidates, floor) {
|
|
|
51
51
|
return best;
|
|
52
52
|
}
|
|
53
53
|
/** Where the resolved answer lives: beside the helper's own download cache. */
|
|
54
|
-
|
|
54
|
+
function menubarResolveCachePath() {
|
|
55
55
|
return path.join(getCacheDir(), 'menubar', 'latest.json');
|
|
56
56
|
}
|
|
57
57
|
export function readMenubarResolveCache(file) {
|
|
@@ -84,7 +84,7 @@ export function cachedMenubarVersion(opts = {}) {
|
|
|
84
84
|
return cache && compareVersions(cache.version, floor) >= 0 ? cache.version : floor;
|
|
85
85
|
}
|
|
86
86
|
/** Read the release list. Unauthenticated: release metadata is public and this runs at most once a day per machine. */
|
|
87
|
-
|
|
87
|
+
async function fetchMenubarReleaseCandidates(fetchImpl = fetch) {
|
|
88
88
|
const res = await fetchImpl(MENUBAR_RELEASES_API, {
|
|
89
89
|
headers: {
|
|
90
90
|
Accept: 'application/vnd.github+json',
|
|
@@ -8,14 +8,20 @@ import type { WatchdogTickResult } from '../watchdog/runner.js';
|
|
|
8
8
|
* is deliberately NOT claimed here (the registry's cached tailscale flag is
|
|
9
9
|
* documented as stale in both directions — registry.ts isLikelyOnline).
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
interface MenubarDevice {
|
|
12
12
|
name: string;
|
|
13
13
|
platform: string;
|
|
14
|
+
/**
|
|
15
|
+
* Physical form factor for a factual hardware icon: `laptop` | `desktop` |
|
|
16
|
+
* `server` | `unknown` (PHNX-3999). A shared device-scope config fact set
|
|
17
|
+
* explicitly per device — never inferred from `platform`. `unknown` when unset.
|
|
18
|
+
*/
|
|
19
|
+
formFactor: string;
|
|
14
20
|
interactive: boolean;
|
|
15
21
|
isLocal: boolean;
|
|
16
22
|
preferred: boolean;
|
|
17
23
|
}
|
|
18
|
-
|
|
24
|
+
interface MenubarSnapshot {
|
|
19
25
|
version: 1;
|
|
20
26
|
capturedAt: string;
|
|
21
27
|
/**
|
|
@@ -29,11 +35,27 @@ export interface MenubarSnapshot {
|
|
|
29
35
|
recentSessions: Record<string, unknown>[];
|
|
30
36
|
activeSessions: Record<string, unknown>[];
|
|
31
37
|
devices: MenubarDevice[];
|
|
38
|
+
/**
|
|
39
|
+
* AGI Menu preferences (PHNX-3999), keyed by the full `menubar.menu.*` config
|
|
40
|
+
* name, carrying the EFFECTIVE value — the stored value, else the registered
|
|
41
|
+
* default. The native menu consumes this from the snapshot it already polls
|
|
42
|
+
* rather than a second preference-read mechanism. `menubar.menu.defaultProject`
|
|
43
|
+
* is omitted when unset (it has no default); every other key is always present.
|
|
44
|
+
* Writes stay one `agents config set/unset <key>` per setting.
|
|
45
|
+
*/
|
|
46
|
+
menuPreferences: Record<string, unknown>;
|
|
32
47
|
watchdog: {
|
|
33
48
|
enabled: boolean;
|
|
34
49
|
lastTick: Pick<WatchdogTickResult, 'didNudge' | 'counts'> | null;
|
|
35
50
|
};
|
|
36
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The effective AGI Menu preferences map for the snapshot: each `menubar.menu.*`
|
|
54
|
+
* key's stored value, or its registered default when unset. A key with neither
|
|
55
|
+
* (only `defaultProject`) is omitted so the native app keeps its own default.
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildMenuPreferences(): Record<string, unknown>;
|
|
37
58
|
export declare function readLastWatchdogTick(stateDir?: string): WatchdogTickResult | null;
|
|
38
59
|
/** One-process read model for AGI Menu's repeating three-minute refresh. */
|
|
39
60
|
export declare function computeMenubarSnapshot(): Promise<MenubarSnapshot>;
|
|
61
|
+
export {};
|
|
@@ -3,12 +3,31 @@ import * as path from 'path';
|
|
|
3
3
|
import { buildRoutineListJson } from '../scheduling/routines.js';
|
|
4
4
|
import { backfillActiveRowsFromIndex, isRunningLiveSession, serializeActiveSessionsForJson, serializeSessionsJson } from '../session/active.js';
|
|
5
5
|
import { getConfigValue, loadAutoLaunchPreferences } from '../device-config.js';
|
|
6
|
+
import { MENUBAR_MENU_PROPERTIES } from '../config-keys.js';
|
|
7
|
+
import { migrateMenubarPreferencesFromUserDefaults } from './migrate-prefs.js';
|
|
6
8
|
import { loadDevices } from '../devices/registry.js';
|
|
7
9
|
import { machineId } from '../machine-id.js';
|
|
8
10
|
import { querySessions } from '../session/db.js';
|
|
9
11
|
import { readActiveSessionsCache } from '../session/session-cache.js';
|
|
10
12
|
import { getRuntimeStateDir } from '../state.js';
|
|
11
13
|
import { getCliVersion } from '../version.js';
|
|
14
|
+
/**
|
|
15
|
+
* The effective AGI Menu preferences map for the snapshot: each `menubar.menu.*`
|
|
16
|
+
* key's stored value, or its registered default when unset. A key with neither
|
|
17
|
+
* (only `defaultProject`) is omitted so the native app keeps its own default.
|
|
18
|
+
*/
|
|
19
|
+
export function buildMenuPreferences() {
|
|
20
|
+
const out = {};
|
|
21
|
+
for (const prop of MENUBAR_MENU_PROPERTIES) {
|
|
22
|
+
const name = `menubar.menu.${prop}`;
|
|
23
|
+
const entry = getConfigValue(name);
|
|
24
|
+
const value = entry.value !== undefined ? entry.value : entry.spec.defaultValue;
|
|
25
|
+
if (value === undefined)
|
|
26
|
+
continue; // unset defaultProject — no default to emit
|
|
27
|
+
out[name] = value;
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
12
31
|
/**
|
|
13
32
|
* The full registered-device roster for the menu bar, from the local registry
|
|
14
33
|
* file only (no ssh, no stats probe) — as cheap as `buildRoutineListJson()`, so
|
|
@@ -26,6 +45,8 @@ async function buildMenubarDevices() {
|
|
|
26
45
|
.map((name) => ({
|
|
27
46
|
name,
|
|
28
47
|
platform: reg[name].platform,
|
|
48
|
+
// Shared device-scope fact (readable for any device); `unknown` when unset.
|
|
49
|
+
formFactor: getConfigValue('formFactor', { device: name }).value ?? 'unknown',
|
|
29
50
|
interactive: name === interactiveHost,
|
|
30
51
|
isLocal: name === self,
|
|
31
52
|
preferred: prefs[name]?.preferred === true,
|
|
@@ -41,6 +62,10 @@ export function readLastWatchdogTick(stateDir = path.join(getRuntimeStateDir(),
|
|
|
41
62
|
}
|
|
42
63
|
/** One-process read model for AGI Menu's repeating three-minute refresh. */
|
|
43
64
|
export async function computeMenubarSnapshot() {
|
|
65
|
+
// One-shot, sentinel-gated, macOS-only lift of legacy UserDefaults prefs into
|
|
66
|
+
// config before we read them. After the first run it is a cheap existsSync
|
|
67
|
+
// no-op; it never throws into the snapshot.
|
|
68
|
+
migrateMenubarPreferencesFromUserDefaults();
|
|
44
69
|
const [routines, recent, devices] = await Promise.all([
|
|
45
70
|
Promise.resolve(buildRoutineListJson()),
|
|
46
71
|
Promise.resolve(querySessions({ limit: 40, skipExistenceCheck: true })),
|
|
@@ -69,6 +94,7 @@ export async function computeMenubarSnapshot() {
|
|
|
69
94
|
recentSessions: JSON.parse(serializeSessionsJson(recent)),
|
|
70
95
|
activeSessions: serializeActiveSessionsForJson(activeSessions),
|
|
71
96
|
devices,
|
|
97
|
+
menuPreferences: buildMenuPreferences(),
|
|
72
98
|
watchdog: {
|
|
73
99
|
enabled: getConfigValue('watchdog.enabled').value === true,
|
|
74
100
|
lastTick: (() => {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { AgentId } from './types.js';
|
|
24
24
|
import { type ModelTier } from './model-tiers.js';
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
type TierOverrideMap = Partial<Record<ModelTier, string>>;
|
|
26
|
+
interface TierOverrideEntry {
|
|
27
27
|
selector: string;
|
|
28
28
|
tiers: TierOverrideMap;
|
|
29
29
|
}
|
|
@@ -41,3 +41,4 @@ export declare function listTierOverrides(): TierOverrideEntry[];
|
|
|
41
41
|
export declare function setTierOverride(selectorInput: string, tierInput: string | ModelTier, model: string): TierOverrideEntry;
|
|
42
42
|
/** Clear one tier (or all tiers when `tierInput` is omitted) for a selector. Returns true if anything changed. */
|
|
43
43
|
export declare function clearTierOverride(selectorInput: string, tierInput?: string): boolean;
|
|
44
|
+
export {};
|
|
@@ -262,5 +262,3 @@ export declare function writeMonitor(config: MonitorConfig): void;
|
|
|
262
262
|
export declare function deleteMonitor(name: string): boolean;
|
|
263
263
|
/** Enable or disable a monitor by name. */
|
|
264
264
|
export declare function setMonitorEnabled(name: string, enabled: boolean): void;
|
|
265
|
-
/** Check whether a monitor with the given name exists on disk. */
|
|
266
|
-
export declare function monitorExists(name: string): boolean;
|
|
@@ -500,7 +500,3 @@ export function setMonitorEnabled(name, enabled) {
|
|
|
500
500
|
monitor.enabled = enabled;
|
|
501
501
|
writeMonitor(monitor);
|
|
502
502
|
}
|
|
503
|
-
/** Check whether a monitor with the given name exists on disk. */
|
|
504
|
-
export function monitorExists(name) {
|
|
505
|
-
return readMonitor(name) !== null;
|
|
506
|
-
}
|
|
@@ -29,7 +29,7 @@ interface MonitorLivenessLike {
|
|
|
29
29
|
droughtNotifiedAt?: string;
|
|
30
30
|
}
|
|
31
31
|
/** The fire/no-fire decision for one observation, plus what to persist. */
|
|
32
|
-
|
|
32
|
+
interface FireDecision {
|
|
33
33
|
fire: boolean;
|
|
34
34
|
/** The value whose de-dupe signature is stored on persist. */
|
|
35
35
|
value: string;
|
|
@@ -49,7 +49,7 @@ export interface RemoteMonitor {
|
|
|
49
49
|
* must never blank the guard for the rest of the fleet.
|
|
50
50
|
*/
|
|
51
51
|
export declare function parseRemoteMonitors(stdout: string, machine: string): RemoteMonitor[];
|
|
52
|
-
|
|
52
|
+
interface FleetMonitorsResult {
|
|
53
53
|
monitors: RemoteMonitor[];
|
|
54
54
|
/** Target discovery failed before any peer was dialed — the fleet was not
|
|
55
55
|
* consulted at all, which must not read as "no duplicate anywhere". */
|
|
@@ -58,7 +58,7 @@ export interface FleetMonitorsResult {
|
|
|
58
58
|
* silently treating "we could not ask" as "there is no duplicate". */
|
|
59
59
|
skipped: string[];
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
interface GatherFleetMonitorsOptions {
|
|
62
62
|
/** When supplied, the fan-out aborts as soon as any peer returns a monitor with
|
|
63
63
|
* this behavioral fingerprint. The miss path still waits for every peer so the
|
|
64
64
|
* guard can prove absence fleet-wide. */
|
|
@@ -80,3 +80,4 @@ export interface GatherFleetMonitorsOptions {
|
|
|
80
80
|
* knowable once every peer has answered.
|
|
81
81
|
*/
|
|
82
82
|
export declare function gatherFleetMonitors(options?: GatherFleetMonitorsOptions): Promise<FleetMonitorsResult>;
|
|
83
|
+
export {};
|
|
@@ -2,22 +2,9 @@
|
|
|
2
2
|
* Webhook source evaluator.
|
|
3
3
|
*
|
|
4
4
|
* Webhooks are push-based (an inbound signed HTTP delivery), so the poll-model
|
|
5
|
-
* `evaluate` returns null.
|
|
6
|
-
* against monitors with `matchWebhook`, which reuses the github/linear matchers
|
|
7
|
-
* from lib/triggers/webhook.ts by projecting the monitor's webhook filters onto a
|
|
8
|
-
* synthesized JobConfig-shaped trigger.
|
|
5
|
+
* `evaluate` returns null.
|
|
9
6
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import type { JobTrigger } from '../../scheduling/routines.js';
|
|
12
|
-
import type { MonitorSource, MonitorConfig } from '../config.js';
|
|
7
|
+
import type { MonitorSource } from '../config.js';
|
|
13
8
|
import type { Observation } from './types.js';
|
|
14
9
|
/** Push-only: nothing to snapshot on a poll tick. */
|
|
15
10
|
export declare function evaluate(_source: MonitorSource): Promise<Observation | null>;
|
|
16
|
-
/** Project a monitor's webhook source onto a JobTrigger for the shared matcher. */
|
|
17
|
-
export declare function monitorTrigger(source: MonitorSource): JobTrigger | null;
|
|
18
|
-
/**
|
|
19
|
-
* True when an incoming webhook matches this monitor's webhook source — reuses
|
|
20
|
-
* the routines matcher (lib/triggers/webhook.ts) so github/linear filter
|
|
21
|
-
* semantics stay in one place.
|
|
22
|
-
*/
|
|
23
|
-
export declare function matchWebhook(monitor: MonitorConfig, webhook: IncomingWebhook): boolean;
|
|
@@ -2,46 +2,9 @@
|
|
|
2
2
|
* Webhook source evaluator.
|
|
3
3
|
*
|
|
4
4
|
* Webhooks are push-based (an inbound signed HTTP delivery), so the poll-model
|
|
5
|
-
* `evaluate` returns null.
|
|
6
|
-
* against monitors with `matchWebhook`, which reuses the github/linear matchers
|
|
7
|
-
* from lib/triggers/webhook.ts by projecting the monitor's webhook filters onto a
|
|
8
|
-
* synthesized JobConfig-shaped trigger.
|
|
5
|
+
* `evaluate` returns null.
|
|
9
6
|
*/
|
|
10
|
-
import { jobMatchesWebhook } from '../../triggers/webhook.js';
|
|
11
7
|
/** Push-only: nothing to snapshot on a poll tick. */
|
|
12
8
|
export function evaluate(_source) {
|
|
13
9
|
return Promise.resolve(null);
|
|
14
10
|
}
|
|
15
|
-
/** Project a monitor's webhook source onto a JobTrigger for the shared matcher. */
|
|
16
|
-
export function monitorTrigger(source) {
|
|
17
|
-
const w = source.webhook;
|
|
18
|
-
if (!w)
|
|
19
|
-
return null;
|
|
20
|
-
if (w.source === 'github') {
|
|
21
|
-
return {
|
|
22
|
-
type: 'github_event',
|
|
23
|
-
event: w.event,
|
|
24
|
-
...(w.repo ? { repo: w.repo } : {}),
|
|
25
|
-
...(w.branch ? { branch: w.branch } : {}),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
type: 'linear_event',
|
|
30
|
-
event: w.event,
|
|
31
|
-
...(w.action ? { action: w.action } : {}),
|
|
32
|
-
...(w.teamKey ? { teamKey: w.teamKey } : {}),
|
|
33
|
-
...(w.label ? { label: w.label } : {}),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* True when an incoming webhook matches this monitor's webhook source — reuses
|
|
38
|
-
* the routines matcher (lib/triggers/webhook.ts) so github/linear filter
|
|
39
|
-
* semantics stay in one place.
|
|
40
|
-
*/
|
|
41
|
-
export function matchWebhook(monitor, webhook) {
|
|
42
|
-
const trigger = monitorTrigger(monitor.source);
|
|
43
|
-
if (!trigger)
|
|
44
|
-
return false;
|
|
45
|
-
const shim = { name: monitor.name, trigger };
|
|
46
|
-
return jobMatchesWebhook(shim, webhook);
|
|
47
|
-
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { type RunMeta } from '../scheduling/routines.js';
|
|
14
14
|
import type { MonitorEvent } from './config.js';
|
|
15
15
|
/** Persisted last-seen state for one monitor. */
|
|
16
|
-
|
|
16
|
+
interface MonitorState {
|
|
17
17
|
monitorName: string;
|
|
18
18
|
/** Hash of the last-seen de-dupe signature (see hasChanged). */
|
|
19
19
|
lastHash: string;
|
|
@@ -53,12 +53,8 @@ export interface MonitorLiveness {
|
|
|
53
53
|
}
|
|
54
54
|
/** Per-monitor history root, with the (untrusted) name contained to one segment. */
|
|
55
55
|
export declare function getMonitorHistoryDir(name: string): string;
|
|
56
|
-
/** Directory holding a monitor's fire history. */
|
|
57
|
-
export declare function getMonitorFiresDir(name: string): string;
|
|
58
56
|
/** Read a monitor's last-seen state, or null if it has never been observed. */
|
|
59
57
|
export declare function readState(name: string): MonitorState | null;
|
|
60
|
-
/** Persist a monitor's state atomically (temp file + rename, like writeRunMeta). */
|
|
61
|
-
export declare function writeStateRaw(state: MonitorState): void;
|
|
62
58
|
/**
|
|
63
59
|
* Record a new observation as the monitor's last-seen state, preserving fire
|
|
64
60
|
* bookkeeping. Truncates the stored raw value so a firehose can't bloat disk.
|
|
@@ -99,7 +95,7 @@ export declare function recordFireTime(name: string, now: number, windowMs: numb
|
|
|
99
95
|
/** Write a fire record to fires/<id>/event.json and return the fire id. */
|
|
100
96
|
export declare function writeFireRecord(event: MonitorEvent, meta?: Record<string, unknown>): string;
|
|
101
97
|
/** A single fire history entry (as read back from disk). */
|
|
102
|
-
|
|
98
|
+
interface FireRecord extends MonitorEvent {
|
|
103
99
|
runId?: string;
|
|
104
100
|
action?: string;
|
|
105
101
|
ok?: boolean;
|
|
@@ -132,7 +128,7 @@ export interface FireRecord extends MonitorEvent {
|
|
|
132
128
|
/** List a monitor's fire history, chronologically ascending. */
|
|
133
129
|
export declare function listFires(name: string): FireRecord[];
|
|
134
130
|
/** The reconciled outcome of one fire, resolved against the run's live status. */
|
|
135
|
-
|
|
131
|
+
interface ReconciledFireOutcome {
|
|
136
132
|
/** True fire outcome, correcting the frozen `ok` against the run's CURRENT status. */
|
|
137
133
|
ok: boolean;
|
|
138
134
|
/** The run's live terminal status, when a runId is present and resolvable. */
|
|
@@ -184,3 +180,4 @@ export declare function evaluatePostcondition(command: string): {
|
|
|
184
180
|
* so later listings do not re-exec the command.
|
|
185
181
|
*/
|
|
186
182
|
export declare function resolveFireOutcome(jobName: string, fire: FireRecord): ReconciledFireOutcome;
|
|
183
|
+
export {};
|
|
@@ -29,7 +29,7 @@ function getLivenessPath(name) {
|
|
|
29
29
|
return path.join(getMonitorHistoryDir(name), 'liveness.json');
|
|
30
30
|
}
|
|
31
31
|
/** Directory holding a monitor's fire history. */
|
|
32
|
-
|
|
32
|
+
function getMonitorFiresDir(name) {
|
|
33
33
|
return path.join(getMonitorHistoryDir(name), 'fires');
|
|
34
34
|
}
|
|
35
35
|
/** Read a monitor's last-seen state, or null if it has never been observed. */
|
|
@@ -45,7 +45,7 @@ export function readState(name) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
/** Persist a monitor's state atomically (temp file + rename, like writeRunMeta). */
|
|
48
|
-
|
|
48
|
+
function writeStateRaw(state) {
|
|
49
49
|
ensureAgentsDir();
|
|
50
50
|
const dir = getMonitorHistoryDir(state.monitorName);
|
|
51
51
|
fs.mkdirSync(dir, { recursive: true });
|
package/dist/lib/notify.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Owner notifier — the one seam for "ping the human" messages.
|
|
3
3
|
*
|
|
4
4
|
* Every human-facing owner notification (feed urgent-block dispatch, monitor
|
|
5
|
-
* `notify` action, `agents
|
|
5
|
+
* `notify` action, `agents send --to owner`) funnels through the single channel seam:
|
|
6
6
|
* `lookupTransport(channel, meta).provider.send(text, opts)`. The recipient comes
|
|
7
7
|
* from `humans.yaml` — never a hardcoded chat id — so changing the
|
|
8
8
|
* owner is honoured by every path at once. `notify.transports` picks the actual
|
package/dist/lib/notify.js
CHANGED
|
@@ -115,7 +115,7 @@ export async function sendToOwner(text, options = {}) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
// Echo the exact per-destination body delivered, so a caller (and
|
|
118
|
-
// `agents
|
|
118
|
+
// `agents send --to owner --dry-run --json`) can see Slack got the labeled-link
|
|
119
119
|
// variant and iMessage the plain one — the observable proof of PHNX-3698.
|
|
120
120
|
deliveries.push({ ...result, body });
|
|
121
121
|
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 1Password CLI (op) integration for importing secrets from vaults.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
id: string;
|
|
6
|
-
name: string;
|
|
7
|
-
}
|
|
8
|
-
export interface OpItemSummary {
|
|
4
|
+
interface OpItemSummary {
|
|
9
5
|
id: string;
|
|
10
6
|
title: string;
|
|
11
7
|
category: string;
|
|
@@ -24,7 +20,7 @@ export interface OpField {
|
|
|
24
20
|
export interface OpItem extends OpItemSummary {
|
|
25
21
|
fields: OpField[];
|
|
26
22
|
}
|
|
27
|
-
|
|
23
|
+
interface ImportableSecret {
|
|
28
24
|
envKey: string;
|
|
29
25
|
itemTitle: string;
|
|
30
26
|
fieldLabel: string;
|
|
@@ -36,14 +32,11 @@ export interface ImportableSecret {
|
|
|
36
32
|
*/
|
|
37
33
|
description?: string;
|
|
38
34
|
}
|
|
39
|
-
|
|
35
|
+
interface SkippedField {
|
|
40
36
|
itemTitle: string;
|
|
41
37
|
fieldLabel: string;
|
|
42
38
|
reason: string;
|
|
43
39
|
}
|
|
44
|
-
export declare function assertOpAvailable(): void;
|
|
45
|
-
export declare function listVaults(): OpVault[];
|
|
46
|
-
export declare function listItems(vaultName: string): OpItemSummary[];
|
|
47
40
|
export declare function getItem(itemId: string, vaultName: string): OpItem;
|
|
48
41
|
export declare function toEnvKey(title: string): string;
|
|
49
42
|
export declare function slugify(name: string): string;
|
|
@@ -62,7 +55,7 @@ export declare function extractSecrets(items: OpItemSummary[], vaultName: string
|
|
|
62
55
|
secrets: ImportableSecret[];
|
|
63
56
|
skipped: SkippedField[];
|
|
64
57
|
};
|
|
65
|
-
|
|
58
|
+
interface PasswordItemTemplate {
|
|
66
59
|
title: string;
|
|
67
60
|
category: 'PASSWORD';
|
|
68
61
|
tags: string[];
|
|
@@ -75,6 +68,4 @@ export interface PasswordItemTemplate {
|
|
|
75
68
|
}>;
|
|
76
69
|
}
|
|
77
70
|
export declare function buildPasswordItemTemplate(title: string, value: string): PasswordItemTemplate;
|
|
78
|
-
export
|
|
79
|
-
export declare function deleteItemByTitle(title: string, vaultName: string): void;
|
|
80
|
-
export declare function createPasswordItem(title: string, value: string, vaultName: string): void;
|
|
71
|
+
export {};
|
package/dist/lib/onepassword.js
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
* 1Password CLI (op) integration for importing secrets from vaults.
|
|
3
3
|
*/
|
|
4
4
|
import { spawnSync } from 'child_process';
|
|
5
|
-
import * as fs from 'fs';
|
|
6
|
-
import * as os from 'os';
|
|
7
|
-
import * as path from 'path';
|
|
8
5
|
function runOp(args, input) {
|
|
9
6
|
const result = spawnSync('op', args, {
|
|
10
7
|
stdio: [input !== undefined ? 'pipe' : 'ignore', 'pipe', 'pipe'],
|
|
@@ -27,33 +24,6 @@ function runOp(args, input) {
|
|
|
27
24
|
}
|
|
28
25
|
return { ok: true, stdout: result.stdout };
|
|
29
26
|
}
|
|
30
|
-
export function assertOpAvailable() {
|
|
31
|
-
// `op account list` works with both CLI session tokens and the 1Password
|
|
32
|
-
// desktop biometric integration; `op whoami` fails on the latter.
|
|
33
|
-
const result = runOp(['account', 'list', '--format=json']);
|
|
34
|
-
if (!result.ok) {
|
|
35
|
-
throw new Error(result.error);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export function listVaults() {
|
|
39
|
-
const result = runOp(['vault', 'list', '--format=json']);
|
|
40
|
-
if (!result.ok)
|
|
41
|
-
throw new Error(result.error);
|
|
42
|
-
return JSON.parse(result.stdout);
|
|
43
|
-
}
|
|
44
|
-
export function listItems(vaultName) {
|
|
45
|
-
const result = runOp(['item', 'list', '--vault', vaultName, '--format=json']);
|
|
46
|
-
if (!result.ok) {
|
|
47
|
-
if (result.error.includes('vault') && result.error.includes('not found')) {
|
|
48
|
-
const vaults = listVaults();
|
|
49
|
-
const available = vaults.map((v) => v.name).join(', ');
|
|
50
|
-
throw new Error(`Vault '${vaultName}' not found. Available: ${available || '(none)'}`);
|
|
51
|
-
}
|
|
52
|
-
throw new Error(result.error);
|
|
53
|
-
}
|
|
54
|
-
const items = JSON.parse(result.stdout);
|
|
55
|
-
return items || [];
|
|
56
|
-
}
|
|
57
27
|
export function getItem(itemId, vaultName) {
|
|
58
28
|
const result = runOp(['item', 'get', itemId, '--vault', vaultName, '--format=json', '--reveal']);
|
|
59
29
|
if (!result.ok)
|
|
@@ -180,37 +150,3 @@ export function buildPasswordItemTemplate(title, value) {
|
|
|
180
150
|
],
|
|
181
151
|
};
|
|
182
152
|
}
|
|
183
|
-
export function itemExistsByTitle(title, vaultName) {
|
|
184
|
-
const result = runOp(['item', 'get', title, '--vault', vaultName, '--format=json']);
|
|
185
|
-
if (result.ok)
|
|
186
|
-
return true;
|
|
187
|
-
if (/isn't an item|not found|no item found/i.test(result.error))
|
|
188
|
-
return false;
|
|
189
|
-
throw new Error(result.error);
|
|
190
|
-
}
|
|
191
|
-
export function deleteItemByTitle(title, vaultName) {
|
|
192
|
-
const result = runOp(['item', 'delete', title, '--vault', vaultName]);
|
|
193
|
-
if (!result.ok)
|
|
194
|
-
throw new Error(result.error);
|
|
195
|
-
}
|
|
196
|
-
export function createPasswordItem(title, value, vaultName) {
|
|
197
|
-
// op item create reads stdin templates only from a real pipe; spawnSync's
|
|
198
|
-
// input plumbing is detected as empty and op silently ignores the template.
|
|
199
|
-
// The supported alternative is --template <file>, which works reliably.
|
|
200
|
-
const template = JSON.stringify(buildPasswordItemTemplate(title, value));
|
|
201
|
-
const tmpFile = path.join(os.tmpdir(), `agents-op-tpl-${process.pid}-${Date.now()}.json`);
|
|
202
|
-
fs.writeFileSync(tmpFile, template, { mode: 0o600 });
|
|
203
|
-
try {
|
|
204
|
-
const result = runOp(['item', 'create', '--template', tmpFile, '--vault', vaultName]);
|
|
205
|
-
if (!result.ok)
|
|
206
|
-
throw new Error(result.error);
|
|
207
|
-
}
|
|
208
|
-
finally {
|
|
209
|
-
try {
|
|
210
|
-
fs.unlinkSync(tmpFile);
|
|
211
|
-
}
|
|
212
|
-
catch {
|
|
213
|
-
// best-effort cleanup
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
package/dist/lib/open-url.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Where a "show the human this" call actually landed. */
|
|
2
|
-
|
|
2
|
+
type ShowOutcome = {
|
|
3
3
|
via: 'profile';
|
|
4
4
|
profile: string;
|
|
5
5
|
tabId?: string;
|
|
@@ -10,7 +10,7 @@ export type ShowOutcome = {
|
|
|
10
10
|
via: 'none';
|
|
11
11
|
reason: string;
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
interface ShowOptions {
|
|
14
14
|
/**
|
|
15
15
|
* Force the OS default handler, ignoring `browser.viewer`. This is the
|
|
16
16
|
* The programmatic escape hatch, for a caller that must use the user's own
|
|
@@ -58,3 +58,4 @@ export declare function showUrl(url: string, opts?: ShowOptions): Promise<ShowOu
|
|
|
58
58
|
* is the right viewer.
|
|
59
59
|
*/
|
|
60
60
|
export declare function showFile(filePath: string, opts?: ShowOptions): Promise<ShowOutcome>;
|
|
61
|
+
export {};
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { type SpawnSyncOptions } from 'child_process';
|
|
2
|
-
|
|
3
|
-
export declare const OPENCLAW_KEYCHAIN_PROVIDER = "agents_keychain";
|
|
4
|
-
export declare const OPENCLAW_KEYCHAIN_ENV_SERVICES: Record<string, string>;
|
|
5
|
-
export interface OpenClawSecretRef {
|
|
6
|
-
source: 'exec';
|
|
7
|
-
provider: string;
|
|
8
|
-
id: string;
|
|
9
|
-
}
|
|
10
|
-
export interface OpenClawKeychainMigrationOptions {
|
|
2
|
+
interface OpenClawKeychainMigrationOptions {
|
|
11
3
|
account?: string;
|
|
12
4
|
provider?: string;
|
|
13
5
|
agentsBin?: string;
|
|
14
6
|
}
|
|
15
|
-
|
|
7
|
+
interface OpenClawKeychainMigrationResult {
|
|
16
8
|
services: Array<{
|
|
17
9
|
envKey: string;
|
|
18
10
|
service: string;
|
|
@@ -35,17 +27,12 @@ export declare function buildOpenClawKeychainStoreInvocation(service: string, va
|
|
|
35
27
|
detached: boolean;
|
|
36
28
|
};
|
|
37
29
|
};
|
|
38
|
-
|
|
39
|
-
service: string;
|
|
40
|
-
value: string;
|
|
41
|
-
}>, account?: string): void;
|
|
42
|
-
export declare function readOpenClawKeychainService(service: string, account?: string): string;
|
|
43
|
-
export interface OpenClawExecResolverRequest {
|
|
30
|
+
interface OpenClawExecResolverRequest {
|
|
44
31
|
protocolVersion?: number;
|
|
45
32
|
provider?: string;
|
|
46
33
|
ids?: unknown;
|
|
47
34
|
}
|
|
48
|
-
|
|
35
|
+
interface OpenClawExecResolverResponse {
|
|
49
36
|
protocolVersion: 1;
|
|
50
37
|
values: Record<string, string>;
|
|
51
38
|
errors?: Record<string, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { execFileSync, spawnSync } from 'child_process';
|
|
2
1
|
import { getCliLaunch } from './cli-entry.js';
|
|
3
2
|
/**
|
|
4
3
|
* argv for writing a bare (non-`agents-cli.`) keychain item via
|
|
@@ -27,9 +26,9 @@ function buildAddGenericPasswordSpawnOptions(value) {
|
|
|
27
26
|
detached: true,
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
const OPENCLAW_KEYCHAIN_ACCOUNT = 'openclaw';
|
|
30
|
+
const OPENCLAW_KEYCHAIN_PROVIDER = 'agents_keychain';
|
|
31
|
+
const OPENCLAW_KEYCHAIN_ENV_SERVICES = {
|
|
33
32
|
OPENROUTER_API_KEY: 'openrouter-api-key',
|
|
34
33
|
LINEAR_API_KEY: 'linear-api-key',
|
|
35
34
|
GRAFANA_API_KEY: 'grafana-api-key',
|
|
@@ -213,35 +212,6 @@ export function buildOpenClawKeychainStoreInvocation(service, value, account = O
|
|
|
213
212
|
options: buildAddGenericPasswordSpawnOptions(value),
|
|
214
213
|
};
|
|
215
214
|
}
|
|
216
|
-
export function storeOpenClawKeychainServices(services, account = OPENCLAW_KEYCHAIN_ACCOUNT) {
|
|
217
|
-
if (process.platform !== 'darwin') {
|
|
218
|
-
throw new Error('OpenClaw Keychain migration must run on macOS.');
|
|
219
|
-
}
|
|
220
|
-
for (const { service, value } of services) {
|
|
221
|
-
const write = buildOpenClawKeychainStoreInvocation(service, value, account);
|
|
222
|
-
const result = spawnSync(write.command, write.args, write.options);
|
|
223
|
-
if (result.status !== 0) {
|
|
224
|
-
const msg = result.stderr?.toString().trim();
|
|
225
|
-
throw new Error(msg || `Failed to write OpenClaw Keychain service '${service}'.`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
function stripSecurityTrailingNewline(value) {
|
|
230
|
-
return value.replace(/\r?\n$/, '');
|
|
231
|
-
}
|
|
232
|
-
export function readOpenClawKeychainService(service, account = OPENCLAW_KEYCHAIN_ACCOUNT) {
|
|
233
|
-
if (!/^[A-Za-z0-9][A-Za-z0-9._:/#-]{0,255}$/.test(service)) {
|
|
234
|
-
throw new Error(`Invalid OpenClaw Keychain service id '${service}'.`);
|
|
235
|
-
}
|
|
236
|
-
if (process.platform !== 'darwin') {
|
|
237
|
-
throw new Error('OpenClaw Keychain resolver must run on macOS.');
|
|
238
|
-
}
|
|
239
|
-
const value = execFileSync('/usr/bin/security', ['find-generic-password', '-s', service, '-a', account, '-w'], {
|
|
240
|
-
encoding: 'utf-8',
|
|
241
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
242
|
-
});
|
|
243
|
-
return stripSecurityTrailingNewline(value);
|
|
244
|
-
}
|
|
245
215
|
export function resolveOpenClawKeychainRequest(request, lookup) {
|
|
246
216
|
const ids = Array.isArray(request.ids) ? request.ids.filter((id) => typeof id === 'string') : [];
|
|
247
217
|
const values = {};
|