@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
|
@@ -1871,7 +1871,7 @@ export function migrateRoutineRemoteCwdToCwd(routinesDir) {
|
|
|
1871
1871
|
* `resume`) makes it ready. Never materializes a device manifest that does not
|
|
1872
1872
|
* yet exist, and never touches command routines (they run in the target home).
|
|
1873
1873
|
*/
|
|
1874
|
-
|
|
1874
|
+
function pauseUnreadyEnabledRoutines() {
|
|
1875
1875
|
const enabled = enabledRoutineNames();
|
|
1876
1876
|
if (enabled === null)
|
|
1877
1877
|
return; // no manifest yet — nothing activated to pause
|
|
@@ -358,7 +358,7 @@ export declare function listShimFileNames(): string[];
|
|
|
358
358
|
/**
|
|
359
359
|
* Prune a stale, orphaned shim: one that is NOT a managed agent shim and NOT a user
|
|
360
360
|
* alias, whose baked `AGENTS_BIN` points at an install that no longer exists. These
|
|
361
|
-
* are `exec "$AGENTS_BIN" <cmd>` command shims (browser/
|
|
361
|
+
* are `exec "$AGENTS_BIN" <cmd>` command shims (browser/teams) that
|
|
362
362
|
* `scripts/postinstall.js` writes for the LIVE install; one baked at a removed
|
|
363
363
|
* install either dies with `exit 127` or shadows the real package bin on PATH.
|
|
364
364
|
* Only removed when the baked target is gone, so a working shim is never touched —
|
|
@@ -2197,11 +2197,11 @@ export function listShimFileNames() {
|
|
|
2197
2197
|
* `computer` bin of its own: a machine that installed an older CLI has a real
|
|
2198
2198
|
* shim on PATH under the name the standalone engine now owns.
|
|
2199
2199
|
*/
|
|
2200
|
-
const LEGACY_SHIMS_ALWAYS_PRUNED = new Set(['secrets', 'sessions', 'computer']);
|
|
2200
|
+
const LEGACY_SHIMS_ALWAYS_PRUNED = new Set(['secrets', 'sessions', 'computer', 'pty']);
|
|
2201
2201
|
/**
|
|
2202
2202
|
* Prune a stale, orphaned shim: one that is NOT a managed agent shim and NOT a user
|
|
2203
2203
|
* alias, whose baked `AGENTS_BIN` points at an install that no longer exists. These
|
|
2204
|
-
* are `exec "$AGENTS_BIN" <cmd>` command shims (browser/
|
|
2204
|
+
* are `exec "$AGENTS_BIN" <cmd>` command shims (browser/teams) that
|
|
2205
2205
|
* `scripts/postinstall.js` writes for the LIVE install; one baked at a removed
|
|
2206
2206
|
* install either dies with `exit 127` or shadows the real package bin on PATH.
|
|
2207
2207
|
* Only removed when the baked target is gone, so a working shim is never touched —
|
|
@@ -299,7 +299,7 @@ async function runAutoUpdatePassUntilCancelled(opts, cancelled) {
|
|
|
299
299
|
// (`ensureShimCurrent`/`ensureVersionedAliasCurrent`). Deliberately
|
|
300
300
|
// NEVER `adoptShadowingLauncher`: that seizes a launcher this pass does
|
|
301
301
|
// not own (a user's own PATH entry, or another install's), and is an
|
|
302
|
-
// operator-triggered `
|
|
302
|
+
// operator-triggered `agents sync` action, not something an unattended
|
|
303
303
|
// background pass may do on its own. Real-pass-only, same reason as the
|
|
304
304
|
// migration above — a `--check` preview must not touch PATH or a
|
|
305
305
|
// config-dir symlink.
|
|
@@ -42,7 +42,7 @@ export declare const LINEAR_CACHE_TTL_MS: number;
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function resolveLinearApiKey(): string | null;
|
|
44
44
|
/** What a lookup found, and how much to trust it. */
|
|
45
|
-
|
|
45
|
+
interface CacheHit<T> {
|
|
46
46
|
value: T;
|
|
47
47
|
/** Age in ms. Past the TTL the value is still returned, flagged stale. */
|
|
48
48
|
ageMs: number;
|
|
@@ -68,3 +68,4 @@ export declare function parseRateLimitReset(header: string | null, nowMs: number
|
|
|
68
68
|
* `resetAtMs` comes from {@link parseRateLimitReset}; without it, back off one TTL.
|
|
69
69
|
*/
|
|
70
70
|
export declare function noteRateLimited(resetAtMs: number | undefined, nowMs: number): void;
|
|
71
|
+
export {};
|
|
@@ -13,7 +13,7 @@ export interface UsernsStatus {
|
|
|
13
13
|
reason?: string;
|
|
14
14
|
}
|
|
15
15
|
/** The raw signals the pure interpreter reasons over. */
|
|
16
|
-
|
|
16
|
+
interface UsernsInputs {
|
|
17
17
|
platform: NodeJS.Platform;
|
|
18
18
|
/**
|
|
19
19
|
* Contents of {@link APPARMOR_USERNS_SYSCTL_PATH} trimmed, or null when the
|
|
@@ -54,5 +54,4 @@ export declare function probeUnshare(): 'ok' | 'denied' | 'no-tool';
|
|
|
54
54
|
* short-circuits to `ok` without spawning anything.
|
|
55
55
|
*/
|
|
56
56
|
export declare function probeUnprivilegedUserns(platform?: NodeJS.Platform): UsernsStatus;
|
|
57
|
-
|
|
58
|
-
export declare function resetUsernsCacheForTests(): void;
|
|
57
|
+
export {};
|
package/dist/lib/linux-userns.js
CHANGED
package/dist/lib/loop.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface LoopSignal {
|
|
|
40
40
|
/** Why the loop stopped. Mirrors the teams supervisor exit reasons. */
|
|
41
41
|
export type LoopStoppedBy = 'condition-met' | 'budget' | 'stalled' | 'max' | 'signal' | 'error';
|
|
42
42
|
/** Result of a loop run. */
|
|
43
|
-
|
|
43
|
+
interface LoopResult {
|
|
44
44
|
/** Iterations actually executed. */
|
|
45
45
|
iterations: number;
|
|
46
46
|
stoppedBy: LoopStoppedBy;
|
|
@@ -152,3 +152,4 @@ export declare function defaultRunIteration(options: ExecOptions): Promise<Itera
|
|
|
152
152
|
* - `error` — an iteration threw or exited non-zero.
|
|
153
153
|
*/
|
|
154
154
|
export declare function runLoop(execOptions: ExecOptions, loop: LoopConfig, ctx: LoopContext, deps?: LoopDeps): Promise<LoopResult>;
|
|
155
|
+
export {};
|
package/dist/lib/mailbox-gc.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface GcResult {
|
|
|
6
6
|
consumedPruned: number;
|
|
7
7
|
blocksRemoved: number;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
interface GcOptions {
|
|
10
10
|
root?: string;
|
|
11
11
|
/** Feed store root. Defaults to getFeedDir(). */
|
|
12
12
|
feedRoot?: string;
|
|
@@ -20,3 +20,4 @@ export interface GcOptions {
|
|
|
20
20
|
* mailbox. For live boxes, drop expired messages and prune old consumed files.
|
|
21
21
|
*/
|
|
22
22
|
export declare function gcMailbox(activeBoxIds: Set<string>, options?: GcOptions): GcResult;
|
|
23
|
+
export {};
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ActiveSession } from './session/active.js';
|
|
8
8
|
import type { HostTask } from './hosts/tasks.js';
|
|
9
|
-
|
|
9
|
+
type MessageResolution = {
|
|
10
10
|
kind: 'cloud';
|
|
11
11
|
id: string;
|
|
12
12
|
} | {
|
|
@@ -61,3 +61,4 @@ export type HostTaskRoute = {
|
|
|
61
61
|
* latter.
|
|
62
62
|
*/
|
|
63
63
|
export declare function decideHostTaskRoute(task: HostTask | null, target: string): HostTaskRoute;
|
|
64
|
+
export {};
|
package/dist/lib/mailbox.d.ts
CHANGED
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
export declare const DEFAULT_TTL_SECONDS: number;
|
|
3
3
|
/** Env var that overrides {@link DEFAULT_TTL_SECONDS} with a duration like "24h" or "3600". */
|
|
4
4
|
export declare const MAILBOX_TTL_ENV = "AGENTS_MAILBOX_TTL";
|
|
5
|
-
/**
|
|
6
|
-
* Resolve the default mailbox TTL in seconds. Honors `AGENTS_MAILBOX_TTL`
|
|
7
|
-
* (parsed by {@link parseDuration}); falls back to 24h. A malformed env value
|
|
8
|
-
* fails loud instead of silently disabling expiry.
|
|
9
|
-
*/
|
|
10
|
-
export declare function resolveDefaultTtlSeconds(): number;
|
|
11
5
|
/** A single mailbox message. `text` may embed `host:/path` clip tokens. */
|
|
12
6
|
export interface MailboxMessage {
|
|
13
7
|
/** Unique, time-sortable id. Also the on-disk filename stem. */
|
package/dist/lib/mailbox.js
CHANGED
|
@@ -30,7 +30,7 @@ export const MAILBOX_TTL_ENV = 'AGENTS_MAILBOX_TTL';
|
|
|
30
30
|
* (parsed by {@link parseDuration}); falls back to 24h. A malformed env value
|
|
31
31
|
* fails loud instead of silently disabling expiry.
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
function resolveDefaultTtlSeconds() {
|
|
34
34
|
const raw = process.env[MAILBOX_TTL_ENV];
|
|
35
35
|
if (raw == null || raw === '')
|
|
36
36
|
return DEFAULT_TTL_SECONDS;
|
package/dist/lib/manifest.d.ts
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
import type { Manifest } from './types.js';
|
|
2
2
|
/** Canonical filename for the manifest in any agents repo or project root. */
|
|
3
3
|
export declare const MANIFEST_FILENAME = "agents.yaml";
|
|
4
|
-
/** Parse a YAML string into a typed Manifest object. */
|
|
5
|
-
export declare function parseManifest(content: string): Manifest;
|
|
6
|
-
/**
|
|
7
|
-
* Serialize a Manifest to YAML WITHOUT destroying hand-written comments.
|
|
8
|
-
*
|
|
9
|
-
* Plain `yaml.stringify(manifest)` drops every comment, so `agents mcp add`
|
|
10
|
-
* (and every other writeManifest caller) used to clobber annotations in
|
|
11
|
-
* agents.yaml. Matching `serializeCentral` in state.ts: when existing file
|
|
12
|
-
* text is provided, parse it into a `yaml.Document` (comments + key order
|
|
13
|
-
* preserved) and edit only keys that actually changed. Untouched keys and
|
|
14
|
-
* their comments stay byte-stable. Falls back to plain stringify when there
|
|
15
|
-
* is no existing document yet.
|
|
16
|
-
*/
|
|
17
|
-
export declare function serializeManifest(manifest: Manifest, existingContent?: string | null): string;
|
|
18
4
|
/** Read and parse agents.yaml from a directory. Returns null if the file does not exist. */
|
|
19
5
|
export declare function readManifest(repoPath: string): Manifest | null;
|
|
20
6
|
/** Write a Manifest object to agents.yaml in the given directory. */
|
package/dist/lib/manifest.js
CHANGED
|
@@ -14,7 +14,7 @@ export const MANIFEST_FILENAME = 'agents.yaml';
|
|
|
14
14
|
// Per-path re-entrancy depth so withManifestLock is safe against recursive calls.
|
|
15
15
|
const manifestLockDepth = new Map();
|
|
16
16
|
/** Parse a YAML string into a typed Manifest object. */
|
|
17
|
-
|
|
17
|
+
function parseManifest(content) {
|
|
18
18
|
return yaml.parse(content);
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
@@ -28,7 +28,7 @@ export function parseManifest(content) {
|
|
|
28
28
|
* their comments stay byte-stable. Falls back to plain stringify when there
|
|
29
29
|
* is no existing document yet.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
function serializeManifest(manifest, existingContent) {
|
|
32
32
|
const entries = Object.entries(manifest).filter(([, v]) => v !== undefined);
|
|
33
33
|
const isEmpty = entries.length === 0;
|
|
34
34
|
if (existingContent == null || existingContent.trim() === '') {
|
|
@@ -19,7 +19,7 @@ export type McpFormat =
|
|
|
19
19
|
/** `{ schema_version, mcp_servers: { "<name>": {transport, ..., enabled} } }` */
|
|
20
20
|
| 'muse-json';
|
|
21
21
|
/** The complete MCP contract for one agent. */
|
|
22
|
-
|
|
22
|
+
interface McpTarget {
|
|
23
23
|
/** MCP config file under a HOME root (a version home, or the real HOME). */
|
|
24
24
|
home(home: string): string;
|
|
25
25
|
/** Project-scoped MCP config file for a repo at `cwd`. */
|
|
@@ -60,3 +60,4 @@ export declare function mcpTarget(agent: AgentId): McpTarget | undefined;
|
|
|
60
60
|
* MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
|
|
61
61
|
*/
|
|
62
62
|
export declare function mcpWriteUnsupportedReason(agent: AgentId): string | null;
|
|
63
|
+
export {};
|
package/dist/lib/mcp.js
CHANGED
|
@@ -380,25 +380,31 @@ function installMcpViaClaude(binaryPath, server, versionHome) {
|
|
|
380
380
|
* Uses: codex mcp add <name> -- <cmd> [args...]
|
|
381
381
|
*/
|
|
382
382
|
function installMcpViaCodex(binaryPath, server, versionHome) {
|
|
383
|
-
|
|
383
|
+
let args;
|
|
384
|
+
if (server.config.transport === 'http') {
|
|
385
|
+
if (!server.config.url)
|
|
386
|
+
throw new Error(`HTTP MCP '${server.name}' has no url`);
|
|
387
|
+
// codex mcp add <name> --url <url>
|
|
388
|
+
args = ['mcp', 'add', server.name, '--url', server.config.url];
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
384
391
|
// codex mcp add -- <name> <cmd> [args...]
|
|
385
|
-
|
|
392
|
+
args = [
|
|
386
393
|
'mcp', 'add',
|
|
387
394
|
'--',
|
|
388
395
|
server.name,
|
|
389
396
|
server.config.command,
|
|
390
397
|
...(server.config.args || [])
|
|
391
398
|
];
|
|
392
|
-
// RUSH-1752: user-controlled MCP command/args must not reach cmd.exe unquoted.
|
|
393
|
-
const spec = execFileShellSpec(binaryPath, args);
|
|
394
|
-
execFileSync(spec.command, spec.args, {
|
|
395
|
-
stdio: 'pipe',
|
|
396
|
-
timeout: 30000,
|
|
397
|
-
env: { ...process.env, HOME: versionHome },
|
|
398
|
-
shell: spec.shell,
|
|
399
|
-
});
|
|
400
399
|
}
|
|
401
|
-
//
|
|
400
|
+
// RUSH-1752: user-controlled MCP command/args must not reach cmd.exe unquoted.
|
|
401
|
+
const spec = execFileShellSpec(binaryPath, args);
|
|
402
|
+
execFileSync(spec.command, spec.args, {
|
|
403
|
+
stdio: 'pipe',
|
|
404
|
+
timeout: 30000,
|
|
405
|
+
env: { ...process.env, HOME: versionHome },
|
|
406
|
+
shell: spec.shell,
|
|
407
|
+
});
|
|
402
408
|
}
|
|
403
409
|
export async function registerMcpCommandToTargets(targets, name, commandSpec, scope = 'user', transport = 'stdio') {
|
|
404
410
|
const results = [];
|
package/dist/lib/memory.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* target dir (see memoryTargetDir).
|
|
13
13
|
*/
|
|
14
14
|
import type { AgentId } from './types.js';
|
|
15
|
-
|
|
15
|
+
interface MemoryFact {
|
|
16
16
|
/** Filename without .md (slug). */
|
|
17
17
|
name: string;
|
|
18
18
|
/** Absolute path to the fact file. */
|
|
@@ -22,20 +22,10 @@ export interface MemoryFact {
|
|
|
22
22
|
/** First non-empty line of the body (for list display). */
|
|
23
23
|
summary: string;
|
|
24
24
|
}
|
|
25
|
-
export interface MemoryLayerDir {
|
|
26
|
-
layer: 'project' | 'user' | 'system';
|
|
27
|
-
dir: string;
|
|
28
|
-
}
|
|
29
25
|
/** User-layer memory root (~/.agents/memory/). */
|
|
30
26
|
export declare function getUserMemoryDir(): string;
|
|
31
|
-
/** System-layer memory root (~/.agents/.system/memory/). */
|
|
32
|
-
export declare function getSystemMemoryDir(): string;
|
|
33
|
-
/** Project-layer memory root when a project agents dir exists. */
|
|
34
|
-
export declare function getProjectMemoryDir(cwd?: string): string | null;
|
|
35
27
|
/** Ensure the user memory dir exists (creates MEMORY.md index if missing). */
|
|
36
28
|
export declare function ensureUserMemoryDir(): string;
|
|
37
|
-
/** Layer dirs highest-priority first. */
|
|
38
|
-
export declare function getMemoryLayerDirs(cwd?: string): MemoryLayerDir[];
|
|
39
29
|
/** List memory facts with project > user > system override on name. */
|
|
40
30
|
export declare function listMemoryFacts(cwd?: string): MemoryFact[];
|
|
41
31
|
/** Read one fact by name (winning layer). */
|
|
@@ -44,8 +34,6 @@ export declare function readMemoryFact(name: string, cwd?: string): MemoryFact |
|
|
|
44
34
|
export declare function addMemoryFact(name: string, body: string): string;
|
|
45
35
|
/** Remove a fact from the user layer. Returns true if a file was deleted. */
|
|
46
36
|
export declare function removeMemoryFact(name: string): boolean;
|
|
47
|
-
/** Rebuild MEMORY.md index from sibling fact files in a single layer dir. */
|
|
48
|
-
export declare function rebuildMemoryIndex(dir: string): void;
|
|
49
37
|
/**
|
|
50
38
|
* Per-agent target directory (relative to version home) for synced memory.
|
|
51
39
|
* Claude/Codex/OpenClaw/Grok get native-ish paths; others get a generic memory/.
|
|
@@ -79,3 +67,4 @@ export declare function getClaudeProjectMemoryDir(cwd: string): string;
|
|
|
79
67
|
* being replaced by the symlink.
|
|
80
68
|
*/
|
|
81
69
|
export declare function syncClaudeProjectMemoryDir(versionHome: string, cwd?: string): void;
|
|
70
|
+
export {};
|
package/dist/lib/memory.js
CHANGED
|
@@ -22,11 +22,11 @@ export function getUserMemoryDir() {
|
|
|
22
22
|
return path.join(getUserAgentsDir(), 'memory');
|
|
23
23
|
}
|
|
24
24
|
/** System-layer memory root (~/.agents/.system/memory/). */
|
|
25
|
-
|
|
25
|
+
function getSystemMemoryDir() {
|
|
26
26
|
return path.join(getSystemAgentsDir(), 'memory');
|
|
27
27
|
}
|
|
28
28
|
/** Project-layer memory root when a project agents dir exists. */
|
|
29
|
-
|
|
29
|
+
function getProjectMemoryDir(cwd = process.cwd()) {
|
|
30
30
|
const project = getProjectAgentsDir(cwd);
|
|
31
31
|
return project ? path.join(project, 'memory') : null;
|
|
32
32
|
}
|
|
@@ -69,7 +69,7 @@ function summarize(content) {
|
|
|
69
69
|
return '(empty)';
|
|
70
70
|
}
|
|
71
71
|
/** Layer dirs highest-priority first. */
|
|
72
|
-
|
|
72
|
+
function getMemoryLayerDirs(cwd = process.cwd()) {
|
|
73
73
|
const out = [];
|
|
74
74
|
const project = getProjectMemoryDir(cwd);
|
|
75
75
|
if (project && fs.existsSync(project))
|
|
@@ -157,7 +157,7 @@ export function removeMemoryFact(name) {
|
|
|
157
157
|
return true;
|
|
158
158
|
}
|
|
159
159
|
/** Rebuild MEMORY.md index from sibling fact files in a single layer dir. */
|
|
160
|
-
|
|
160
|
+
function rebuildMemoryIndex(dir) {
|
|
161
161
|
let facts = [];
|
|
162
162
|
try {
|
|
163
163
|
facts = fs.readdirSync(dir).filter(isFactFile).sort();
|
|
@@ -38,8 +38,6 @@ export declare function menubarHelperAssetUrls(version: string): {
|
|
|
38
38
|
};
|
|
39
39
|
/** Cache dir for the downloaded menu-bar helper, one subdir per release tag. */
|
|
40
40
|
export declare function menubarHelperCacheDir(version: string): string;
|
|
41
|
-
/** Verify a menu-bar helper `.app`: codesign + Team + DR pin + notarization. */
|
|
42
|
-
export declare function verifyMenubarHelper(appPath: string): void;
|
|
43
41
|
/**
|
|
44
42
|
* Download the menu-bar helper release asset for `version`, verify sha256 +
|
|
45
43
|
* signature + DR pin, and return the path to the extracted `MenubarHelper.app`
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* before the bundle is ever installed. This matches the release-time gate in
|
|
21
21
|
* `scripts/verify-menubar-helper.sh`.
|
|
22
22
|
*/
|
|
23
|
-
import { EXPECTED_TEAM_ID, downloadHelperApp, helperAssetUrls, helperCacheDir
|
|
23
|
+
import { EXPECTED_TEAM_ID, downloadHelperApp, helperAssetUrls, helperCacheDir } from '../helper-download.js';
|
|
24
24
|
/** The zipped `.app` release asset name. */
|
|
25
25
|
export const MENUBAR_HELPER_ASSET = 'MenubarHelper.app.zip';
|
|
26
26
|
/** The bundle directory name once extracted. */
|
|
@@ -50,10 +50,6 @@ export function menubarHelperAssetUrls(version) {
|
|
|
50
50
|
export function menubarHelperCacheDir(version) {
|
|
51
51
|
return helperCacheDir(MENUBAR_HELPER_SPEC, version);
|
|
52
52
|
}
|
|
53
|
-
/** Verify a menu-bar helper `.app`: codesign + Team + DR pin + notarization. */
|
|
54
|
-
export function verifyMenubarHelper(appPath) {
|
|
55
|
-
verifyHelperApp(appPath, MENUBAR_HELPER_SPEC);
|
|
56
|
-
}
|
|
57
53
|
/**
|
|
58
54
|
* Download the menu-bar helper release asset for `version`, verify sha256 +
|
|
59
55
|
* signature + DR pin, and return the path to the extracted `MenubarHelper.app`
|
|
@@ -45,7 +45,7 @@ export declare function serviceLabel(): string;
|
|
|
45
45
|
*/
|
|
46
46
|
/** Version label for a bundle that has none of its own (a local dev build). */
|
|
47
47
|
export declare const LOCAL_BUILD_LABEL = "local";
|
|
48
|
-
|
|
48
|
+
type MenubarStamp = {
|
|
49
49
|
source: 'release';
|
|
50
50
|
helperVersion: string;
|
|
51
51
|
} | {
|
|
@@ -64,10 +64,6 @@ export type MenubarStamp = {
|
|
|
64
64
|
* package, or a dev checkout without a built bundle).
|
|
65
65
|
*/
|
|
66
66
|
export declare function resolveInstalledMenubarExecutable(): string | null;
|
|
67
|
-
/** True if the user explicitly disabled the menu bar (don't auto-enable on upgrade). */
|
|
68
|
-
export declare function menubarDisabledByUser(): boolean;
|
|
69
|
-
/** True if the launchd plist for the menu-bar service is installed. */
|
|
70
|
-
export declare function menubarServiceInstalled(): boolean;
|
|
71
67
|
/** Where a downloaded copy of the floor release sits once fetched and verified. */
|
|
72
68
|
export declare function cachedFloorBundlePath(): string;
|
|
73
69
|
/**
|
|
@@ -76,14 +72,6 @@ export declare function cachedFloorBundlePath(): string;
|
|
|
76
72
|
* The startup self-heal installs from here, network-free.
|
|
77
73
|
*/
|
|
78
74
|
export declare function cachedReleaseBundlePath(): string;
|
|
79
|
-
/**
|
|
80
|
-
* The release version an explicit install should fetch: the newest published
|
|
81
|
-
* build, but never below what this Mac already runs — a release deleted after
|
|
82
|
-
* it was installed must not roll the helper back through `setup`/`enable`.
|
|
83
|
-
*/
|
|
84
|
-
export declare function menubarVersionToInstall(opts?: {
|
|
85
|
-
force?: boolean;
|
|
86
|
-
}): Promise<string>;
|
|
87
75
|
/** True when the bundle carries a signature the kernel will accept at launch. */
|
|
88
76
|
export declare function codesignVerifies(appPath: string): boolean;
|
|
89
77
|
/**
|
|
@@ -526,7 +514,7 @@ export declare function isMenubarProcessStaleAgainstBundle(pidStartedAtMs: numbe
|
|
|
526
514
|
*/
|
|
527
515
|
export declare function buildMenubarDoctorReport(): MenubarDoctorReport;
|
|
528
516
|
/** Outcome of one auto-update pass (`updateMenubarHelperIfNewer`). */
|
|
529
|
-
|
|
517
|
+
interface MenubarUpdateResult {
|
|
530
518
|
outcome: 'updated' | 'current' | 'skipped' | 'failed';
|
|
531
519
|
installed: string | null;
|
|
532
520
|
available: string;
|
|
@@ -567,3 +555,4 @@ export declare function updateMenubarHelperIfNewer(opts?: {
|
|
|
567
555
|
dryRun?: boolean;
|
|
568
556
|
force?: boolean;
|
|
569
557
|
}): Promise<MenubarUpdateResult>;
|
|
558
|
+
export {};
|
|
@@ -155,11 +155,11 @@ function disabledSentinelPath() {
|
|
|
155
155
|
return path.join(getRuntimeStateDir(), 'menubar.disabled');
|
|
156
156
|
}
|
|
157
157
|
/** True if the user explicitly disabled the menu bar (don't auto-enable on upgrade). */
|
|
158
|
-
|
|
158
|
+
function menubarDisabledByUser() {
|
|
159
159
|
return fs.existsSync(disabledSentinelPath());
|
|
160
160
|
}
|
|
161
161
|
/** True if the launchd plist for the menu-bar service is installed. */
|
|
162
|
-
|
|
162
|
+
function menubarServiceInstalled() {
|
|
163
163
|
return onDarwin() && fs.existsSync(servicePlistPath());
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
@@ -238,7 +238,7 @@ export function cachedReleaseBundlePath() {
|
|
|
238
238
|
* build, but never below what this Mac already runs — a release deleted after
|
|
239
239
|
* it was installed must not roll the helper back through `setup`/`enable`.
|
|
240
240
|
*/
|
|
241
|
-
|
|
241
|
+
async function menubarVersionToInstall(opts = {}) {
|
|
242
242
|
const resolved = await resolveMenubarVersion({ force: opts.force });
|
|
243
243
|
const installed = readInstalledMenubarStamp();
|
|
244
244
|
if (installed?.source === 'release' && compareVersions(installed.helperVersion, resolved) > 0)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time, CLI-owned migration of AGI Menu preferences from the macOS
|
|
3
|
+
* UserDefaults domain `com.phnx-labs.agents-menubar` into the registered
|
|
4
|
+
* `menubar.menu.*` config keys (PHNX-3999).
|
|
5
|
+
*
|
|
6
|
+
* Why here: before the preferences became `agents config` keys, the stable menu
|
|
7
|
+
* bar stored them in its own UserDefaults. A user upgrading must keep those
|
|
8
|
+
* settings, but the CLI is now the single source of truth and syncs fleet-wide,
|
|
9
|
+
* so the values are lifted into config ONCE and then owned there.
|
|
10
|
+
*
|
|
11
|
+
* The rules (from the integration contract) are all fail-safe:
|
|
12
|
+
* - macOS only. On any other platform this is a no-op (Linux derives canonical
|
|
13
|
+
* config only).
|
|
14
|
+
* - The PRODUCTION domain only — never the dev bundle
|
|
15
|
+
* `com.phnx-labs.agents-menubar.dev` (we simply never read it).
|
|
16
|
+
* - Import only KNOWN keys ({@link MENUBAR_MENU_PROPERTIES}) that are still
|
|
17
|
+
* UNSET in config — an already-set (synced) value is never overridden.
|
|
18
|
+
* - One-shot, gated by a sentinel, so a later `agents config unset` cannot
|
|
19
|
+
* resurrect the legacy value on the next run.
|
|
20
|
+
*
|
|
21
|
+
* The stable app stores each preference under its FULL `menubar.menu.*` key name
|
|
22
|
+
* (the Swift MenuPreferences local-cache key), so the migration matches on the
|
|
23
|
+
* full name. If a key is stored under a different name, it simply is not matched
|
|
24
|
+
* and the migration stays a safe no-op for it. The read uses `defaults export
|
|
25
|
+
* <domain> -` piped through `plutil` (NOT `defaults read <domain> -json`, which
|
|
26
|
+
* treats `-json` as a key and errors).
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Pure plan step: which UserDefaults entries should be imported. The stable app
|
|
30
|
+
* stores each preference under its FULL `menubar.menu.*` key name (the Swift
|
|
31
|
+
* MenuPreferences local-cache key), so we match on the full name — only known
|
|
32
|
+
* keys that are present in `userDefaults` AND currently unset in config
|
|
33
|
+
* (`isUnset`) are imported, so an already-set value is preserved. Values are
|
|
34
|
+
* returned raw; the caller coerces + validates them against each key's spec.
|
|
35
|
+
*/
|
|
36
|
+
export declare function planMenubarPrefMigration(userDefaults: Record<string, unknown>, isUnset: (fullName: string) => boolean): Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
value: unknown;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Coerce a raw UserDefaults value to the type its config key expects. The
|
|
42
|
+
* `plutil` scalar output is text, but a bool can arrive as
|
|
43
|
+
* 0/1 or "true"/"false" and an int as a numeric string, so normalize before
|
|
44
|
+
* validation. Returns undefined for a value that cannot be coerced (skipped,
|
|
45
|
+
* never forced).
|
|
46
|
+
*/
|
|
47
|
+
export declare function coerceMenubarPrefValue(name: string, raw: unknown): unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Run the one-shot migration. macOS only, gated by the sentinel, best-effort:
|
|
50
|
+
* any failure is swallowed (a migration must never break the snapshot read that
|
|
51
|
+
* calls it) and a failed read remains eligible for a later retry.
|
|
52
|
+
*/
|
|
53
|
+
export declare function migrateMenubarPreferencesFromUserDefaults(): void;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time, CLI-owned migration of AGI Menu preferences from the macOS
|
|
3
|
+
* UserDefaults domain `com.phnx-labs.agents-menubar` into the registered
|
|
4
|
+
* `menubar.menu.*` config keys (PHNX-3999).
|
|
5
|
+
*
|
|
6
|
+
* Why here: before the preferences became `agents config` keys, the stable menu
|
|
7
|
+
* bar stored them in its own UserDefaults. A user upgrading must keep those
|
|
8
|
+
* settings, but the CLI is now the single source of truth and syncs fleet-wide,
|
|
9
|
+
* so the values are lifted into config ONCE and then owned there.
|
|
10
|
+
*
|
|
11
|
+
* The rules (from the integration contract) are all fail-safe:
|
|
12
|
+
* - macOS only. On any other platform this is a no-op (Linux derives canonical
|
|
13
|
+
* config only).
|
|
14
|
+
* - The PRODUCTION domain only — never the dev bundle
|
|
15
|
+
* `com.phnx-labs.agents-menubar.dev` (we simply never read it).
|
|
16
|
+
* - Import only KNOWN keys ({@link MENUBAR_MENU_PROPERTIES}) that are still
|
|
17
|
+
* UNSET in config — an already-set (synced) value is never overridden.
|
|
18
|
+
* - One-shot, gated by a sentinel, so a later `agents config unset` cannot
|
|
19
|
+
* resurrect the legacy value on the next run.
|
|
20
|
+
*
|
|
21
|
+
* The stable app stores each preference under its FULL `menubar.menu.*` key name
|
|
22
|
+
* (the Swift MenuPreferences local-cache key), so the migration matches on the
|
|
23
|
+
* full name. If a key is stored under a different name, it simply is not matched
|
|
24
|
+
* and the migration stays a safe no-op for it. The read uses `defaults export
|
|
25
|
+
* <domain> -` piped through `plutil` (NOT `defaults read <domain> -json`, which
|
|
26
|
+
* treats `-json` as a key and errors).
|
|
27
|
+
*/
|
|
28
|
+
import { execFileSync } from 'child_process';
|
|
29
|
+
import * as fs from 'fs';
|
|
30
|
+
import * as path from 'path';
|
|
31
|
+
import { assertValidValue, configKeySpec, getConfigValue, setConfigValue } from '../device-config.js';
|
|
32
|
+
import { getRuntimeStateDir } from '../state.js';
|
|
33
|
+
import { MENUBAR_MENU_PROPERTIES } from '../config-keys.js';
|
|
34
|
+
/** The production menu-bar UserDefaults domain (NOT the `.dev` bundle). */
|
|
35
|
+
const USER_DEFAULTS_DOMAIN = 'com.phnx-labs.agents-menubar';
|
|
36
|
+
/** Sentinel marking the one-shot done; its presence blocks every later run. */
|
|
37
|
+
function sentinelPath() {
|
|
38
|
+
return path.join(getRuntimeStateDir(), 'menubar-prefs-migrated');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pure plan step: which UserDefaults entries should be imported. The stable app
|
|
42
|
+
* stores each preference under its FULL `menubar.menu.*` key name (the Swift
|
|
43
|
+
* MenuPreferences local-cache key), so we match on the full name — only known
|
|
44
|
+
* keys that are present in `userDefaults` AND currently unset in config
|
|
45
|
+
* (`isUnset`) are imported, so an already-set value is preserved. Values are
|
|
46
|
+
* returned raw; the caller coerces + validates them against each key's spec.
|
|
47
|
+
*/
|
|
48
|
+
export function planMenubarPrefMigration(userDefaults, isUnset) {
|
|
49
|
+
const plan = [];
|
|
50
|
+
for (const prop of MENUBAR_MENU_PROPERTIES) {
|
|
51
|
+
const name = `menubar.menu.${prop}`;
|
|
52
|
+
if (!(name in userDefaults))
|
|
53
|
+
continue;
|
|
54
|
+
if (!isUnset(name))
|
|
55
|
+
continue;
|
|
56
|
+
plan.push({ name, value: userDefaults[name] });
|
|
57
|
+
}
|
|
58
|
+
return plan;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Coerce a raw UserDefaults value to the type its config key expects. The
|
|
62
|
+
* `plutil` scalar output is text, but a bool can arrive as
|
|
63
|
+
* 0/1 or "true"/"false" and an int as a numeric string, so normalize before
|
|
64
|
+
* validation. Returns undefined for a value that cannot be coerced (skipped,
|
|
65
|
+
* never forced).
|
|
66
|
+
*/
|
|
67
|
+
export function coerceMenubarPrefValue(name, raw) {
|
|
68
|
+
const type = configKeySpec(name).type;
|
|
69
|
+
if (type === 'bool') {
|
|
70
|
+
if (typeof raw === 'boolean')
|
|
71
|
+
return raw;
|
|
72
|
+
if (raw === 1 || raw === '1' || raw === 'true' || raw === 'YES')
|
|
73
|
+
return true;
|
|
74
|
+
if (raw === 0 || raw === '0' || raw === 'false' || raw === 'NO')
|
|
75
|
+
return false;
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
if (type === 'int') {
|
|
79
|
+
if (typeof raw === 'number' && Number.isInteger(raw))
|
|
80
|
+
return raw;
|
|
81
|
+
if (typeof raw === 'string' && /^\d+$/.test(raw.trim()))
|
|
82
|
+
return Number.parseInt(raw.trim(), 10);
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return typeof raw === 'string' ? raw : undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read known scalar preferences from the production domain.
|
|
89
|
+
*
|
|
90
|
+
* `defaults read <domain> -json` does NOT exist — `defaults read` treats `-json`
|
|
91
|
+
* as a KEY name and errors. The correct read is `defaults export <domain> -`,
|
|
92
|
+
* which writes the domain's plist to stdout (an EMPTY plist, exit 0, when the
|
|
93
|
+
* domain is absent — a legitimate "nothing to migrate"), read one known scalar key at a time with `plutil -extract … raw`. Other
|
|
94
|
+
* defaults may contain dates or data that cannot be represented as JSON.
|
|
95
|
+
*
|
|
96
|
+
* Returns `{ ok }` so the caller can tell a genuine read/convert FAILURE (do not
|
|
97
|
+
* write the sentinel — retry next run) from an ABSENT domain (ok, empty values —
|
|
98
|
+
* mark done). A failure never fabricates an empty map.
|
|
99
|
+
*/
|
|
100
|
+
function readUserDefaultsDomain() {
|
|
101
|
+
try {
|
|
102
|
+
const plist = execFileSync('defaults', ['export', USER_DEFAULTS_DOMAIN, '-'], {
|
|
103
|
+
encoding: 'utf8', timeout: 5_000,
|
|
104
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
105
|
+
});
|
|
106
|
+
const values = {};
|
|
107
|
+
for (const property of MENUBAR_MENU_PROPERTIES) {
|
|
108
|
+
const key = `menubar.menu.${property}`;
|
|
109
|
+
try {
|
|
110
|
+
values[key] = execFileSync('plutil', ['-extract', key.replaceAll('.', '\\.'), 'raw', '-o', '-', '-'], {
|
|
111
|
+
input: plist, encoding: 'utf8', timeout: 5_000, stdio: ['pipe', 'pipe', 'ignore'],
|
|
112
|
+
}).trimEnd();
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Missing or non-scalar legacy keys are outside the preference contract.
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { ok: true, values };
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// `defaults`/`plutil` missing, a non-zero exit, or malformed output — a real
|
|
122
|
+
// failure. Do NOT claim an empty domain; the caller must retry.
|
|
123
|
+
return { ok: false, values: {} };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Run the one-shot migration. macOS only, gated by the sentinel, best-effort:
|
|
128
|
+
* any failure is swallowed (a migration must never break the snapshot read that
|
|
129
|
+
* calls it) and a failed read remains eligible for a later retry.
|
|
130
|
+
*/
|
|
131
|
+
export function migrateMenubarPreferencesFromUserDefaults() {
|
|
132
|
+
if (process.platform !== 'darwin')
|
|
133
|
+
return;
|
|
134
|
+
const sentinel = sentinelPath();
|
|
135
|
+
if (fs.existsSync(sentinel))
|
|
136
|
+
return;
|
|
137
|
+
const { ok, values } = readUserDefaultsDomain();
|
|
138
|
+
// A genuine read/convert failure must NOT mark the migration done — retry on a
|
|
139
|
+
// later run rather than silently skipping the user's real settings forever. An
|
|
140
|
+
// ABSENT domain reads ok with empty values and legitimately marks done.
|
|
141
|
+
if (!ok)
|
|
142
|
+
return;
|
|
143
|
+
try {
|
|
144
|
+
const plan = planMenubarPrefMigration(values, (name) => getConfigValue(name).value === undefined);
|
|
145
|
+
for (const { name, value } of plan) {
|
|
146
|
+
const coerced = coerceMenubarPrefValue(name, value);
|
|
147
|
+
if (coerced === undefined)
|
|
148
|
+
continue; // unrepresentable — skip, never force
|
|
149
|
+
try {
|
|
150
|
+
assertValidValue(configKeySpec(name), coerced);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
setConfigValue(name, coerced);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
fs.mkdirSync(path.dirname(sentinel), { recursive: true });
|
|
163
|
+
fs.writeFileSync(sentinel, new Date().toISOString() + '\n');
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
/* if we cannot mark it, a later run retries — still safe (idempotent) */
|
|
167
|
+
}
|
|
168
|
+
}
|