@phnx-labs/agents-cli 1.22.112 → 1.22.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +10 -11
- package/dist/cli/command-registry.d.ts +0 -60
- package/dist/cli/command-registry.js +59 -61
- package/dist/commands/apply.d.ts +0 -4
- package/dist/commands/apply.js +3 -3
- package/dist/commands/browser-picker.d.ts +3 -6
- package/dist/commands/browser-picker.js +2 -2
- package/dist/commands/browser-sessions-picker.d.ts +2 -1
- package/dist/commands/computer-sessions-picker.d.ts +2 -1
- package/dist/commands/computer.d.ts +14 -19
- package/dist/commands/computer.js +65 -10
- package/dist/commands/config.js +46 -2
- package/dist/commands/daemon.d.ts +0 -23
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/detach-core.d.ts +2 -1
- package/dist/commands/detach.d.ts +0 -3
- package/dist/commands/detach.js +3 -3
- package/dist/commands/feed.d.ts +3 -3
- package/dist/commands/feed.js +1 -1
- package/dist/commands/focus.d.ts +4 -4
- package/dist/commands/harness-hooks.d.ts +0 -7
- package/dist/commands/harness-hooks.js +1 -1
- package/dist/commands/harness-wizard.d.ts +2 -2
- package/dist/commands/harness.d.ts +3 -8
- package/dist/commands/harness.js +1 -1
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +3 -3
- package/dist/commands/projects.d.ts +2 -18
- package/dist/commands/projects.js +89 -3
- package/dist/commands/resource-view.d.ts +3 -2
- package/dist/commands/resume.d.ts +0 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/routines.d.ts +1 -3
- package/dist/commands/routines.js +1 -1
- package/dist/commands/run-account-picker.d.ts +2 -1
- package/dist/commands/run-broadcast.d.ts +2 -1
- package/dist/commands/run-device-picker.d.ts +2 -1
- package/dist/commands/secrets-passthrough.d.ts +14 -0
- package/dist/commands/secrets-passthrough.js +21 -2
- package/dist/commands/sessions-backfill.d.ts +2 -35
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-bookmark.d.ts +0 -10
- package/dist/commands/sessions-bookmark.js +1 -1
- package/dist/commands/sessions-inject.d.ts +2 -3
- package/dist/commands/sessions-inject.js +8 -17
- package/dist/commands/sessions-picker-factory.d.ts +4 -14
- package/dist/commands/sessions-picker-factory.js +2 -2
- package/dist/commands/sessions-picker.d.ts +3 -9
- package/dist/commands/sessions-picker.js +2 -2
- package/dist/commands/sessions-resume.d.ts +2 -4
- package/dist/commands/sessions-resume.js +0 -5
- package/dist/commands/sessions-stats.d.ts +2 -1
- package/dist/commands/sessions-stop.d.ts +0 -3
- package/dist/commands/sessions-stop.js +1 -1
- package/dist/commands/sessions-tail.d.ts +2 -1
- package/dist/commands/sessions-trace.d.ts +4 -6
- package/dist/commands/sessions-trace.js +1 -1
- package/dist/commands/sessions.d.ts +14 -104
- package/dist/commands/sessions.js +22 -10
- package/dist/commands/setup-mine.d.ts +0 -6
- package/dist/commands/setup-mine.js +1 -1
- package/dist/commands/setup.d.ts +3 -4
- package/dist/commands/setup.js +1 -1
- package/dist/commands/share.d.ts +8 -8
- package/dist/commands/teams-picker.d.ts +2 -5
- package/dist/commands/teams-picker.js +2 -2
- package/dist/commands/teams.d.ts +1 -7
- package/dist/commands/teams.js +1 -1
- package/dist/commands/tmux.d.ts +1 -1
- package/dist/commands/tmux.js +1 -1
- package/dist/commands/upgrade.d.ts +2 -1
- package/dist/commands/utils.d.ts +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/lib/account-capabilities.d.ts +2 -1
- package/dist/lib/account-catalog.d.ts +4 -13
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +3 -4
- package/dist/lib/account-registry.js +1 -1
- package/dist/lib/accounting/account-launch.d.ts +4 -3
- package/dist/lib/accounting/account-pool.d.ts +2 -1
- package/dist/lib/accounting/rotate.d.ts +3 -9
- package/dist/lib/accounting/rotate.js +2 -14
- package/dist/lib/accounting/usage-sync.d.ts +5 -4
- package/dist/lib/accounting/usage.d.ts +7 -31
- package/dist/lib/accounting/usage.js +4 -4
- package/dist/lib/accounts/migrate.d.ts +8 -8
- package/dist/lib/accounts/migrate.js +1 -1
- package/dist/lib/acp/client.d.ts +3 -2
- package/dist/lib/acp/harnesses.d.ts +2 -2
- package/dist/lib/acp/harnesses.js +1 -1
- package/dist/lib/acp/run.d.ts +2 -1
- package/dist/lib/actor.d.ts +3 -2
- package/dist/lib/add-dir.d.ts +2 -17
- package/dist/lib/add-dir.js +2 -6
- package/dist/lib/address.d.ts +56 -0
- package/dist/lib/address.js +143 -0
- package/dist/lib/agent-spec/agents.d.ts +12 -28
- package/dist/lib/agent-spec/agents.js +2 -6
- package/dist/lib/agent-spec/primitives.d.ts +0 -7
- package/dist/lib/agent-spec/primitives.js +0 -6
- package/dist/lib/agent-spec/types.d.ts +2 -1
- package/dist/lib/analytics/dashboard.d.ts +1 -5
- package/dist/lib/analytics/dashboard.js +0 -2
- package/dist/lib/analytics/mix-commands.d.ts +0 -7
- package/dist/lib/analytics/mix-commands.js +3 -3
- package/dist/lib/analytics/recipes.d.ts +0 -12
- package/dist/lib/analytics/recipes.js +7 -31
- package/dist/lib/analytics/usage-db.d.ts +5 -32
- package/dist/lib/analytics/usage-db.js +1 -70
- package/dist/lib/answer-router.d.ts +7 -6
- package/dist/lib/answer-router.js +5 -11
- package/dist/lib/artifact-actions.d.ts +0 -4
- package/dist/lib/ask-classifier.d.ts +3 -4
- package/dist/lib/ask-classifier.js +0 -7
- package/dist/lib/auth-health.d.ts +3 -46
- package/dist/lib/auth-health.js +3 -3
- package/dist/lib/auth-mint.d.ts +6 -6
- package/dist/lib/auth-mint.js +5 -5
- package/dist/lib/bench/runner.d.ts +2 -2
- package/dist/lib/bench/runner.js +1 -1
- package/dist/lib/bench/storage.d.ts +0 -1
- package/dist/lib/bench/storage.js +1 -1
- package/dist/lib/boot-profile.d.ts +0 -2
- package/dist/lib/boot-profile.js +0 -4
- package/dist/lib/brand.d.ts +0 -6
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/arc-discovery.d.ts +4 -12
- package/dist/lib/browser/arc-discovery.js +1 -1
- package/dist/lib/browser/cdp.d.ts +1 -1
- package/dist/lib/browser/chrome.d.ts +2 -2
- package/dist/lib/browser/chrome.js +0 -4
- package/dist/lib/browser/chromium-discovery.d.ts +3 -2
- package/dist/lib/browser/drivers/arc.d.ts +3 -20
- package/dist/lib/browser/drivers/arc.js +2 -7
- package/dist/lib/browser/drivers/firefox.d.ts +2 -6
- package/dist/lib/browser/drivers/firefox.js +1 -1
- package/dist/lib/browser/drivers/local.d.ts +2 -1
- package/dist/lib/browser/drivers/ssh.d.ts +2 -3
- package/dist/lib/browser/drivers/ssh.js +0 -7
- package/dist/lib/browser/firefox-discovery.d.ts +4 -3
- package/dist/lib/browser/har.d.ts +8 -7
- package/dist/lib/browser/hygiene.d.ts +2 -3
- package/dist/lib/browser/hygiene.js +1 -1
- package/dist/lib/browser/ipc.d.ts +4 -3
- package/dist/lib/browser/ipc.js +1 -1
- package/dist/lib/browser/login-detection.d.ts +1 -8
- package/dist/lib/browser/registry.d.ts +2 -1
- package/dist/lib/browser/remote-control.d.ts +0 -7
- package/dist/lib/browser/remote-control.js +2 -2
- package/dist/lib/browser/resolve-target.d.ts +2 -6
- package/dist/lib/browser/resolve-target.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +4 -4
- package/dist/lib/browser/service.d.ts +4 -4
- package/dist/lib/browser/sessions-list.d.ts +0 -10
- package/dist/lib/browser/sessions-list.js +3 -3
- package/dist/lib/browser/stream.d.ts +2 -1
- package/dist/lib/browser/task-index.d.ts +4 -4
- package/dist/lib/browser/task-index.js +1 -1
- package/dist/lib/browser/types.d.ts +0 -20
- package/dist/lib/browser/types.js +1 -34
- package/dist/lib/browser/upload.d.ts +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -2
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/budget/live-cloud.d.ts +2 -1
- package/dist/lib/budget/preflight.d.ts +3 -5
- package/dist/lib/budget/preflight.js +1 -1
- package/dist/lib/catchup.d.ts +2 -1
- package/dist/lib/channels/owner-forward.d.ts +5 -4
- package/dist/lib/channels/owner-sink.js +2 -2
- package/dist/lib/channels/providers/desktop.js +1 -1
- package/dist/lib/channels/providers/rush.d.ts +2 -1
- package/dist/lib/channels/registry.d.ts +1 -1
- package/dist/lib/channels/registry.js +1 -1
- package/dist/lib/channels/resolve.d.ts +3 -2
- package/dist/lib/channels/send.d.ts +5 -4
- package/dist/lib/cli-resources.d.ts +3 -9
- package/dist/lib/cli-resources.js +1 -1
- package/dist/lib/cloud/cursor.d.ts +1 -2
- package/dist/lib/cloud/cursor.js +1 -1
- package/dist/lib/cloud/dispatch.d.ts +2 -1
- package/dist/lib/cloud/factory.d.ts +0 -2
- package/dist/lib/cloud/factory.js +1 -1
- package/dist/lib/cloud/rush.d.ts +3 -11
- package/dist/lib/cloud/rush.js +1 -1
- package/dist/lib/cloud/session-index.d.ts +2 -1
- package/dist/lib/cloud/types.d.ts +2 -1
- package/dist/lib/codex-policy.d.ts +2 -1
- package/dist/lib/commands.d.ts +7 -7
- package/dist/lib/commands.js +1 -1
- package/dist/lib/comms-render.d.ts +1 -1
- package/dist/lib/computer/context.d.ts +11 -3
- package/dist/lib/computer/context.js +2 -2
- package/dist/lib/computer/policy.d.ts +0 -12
- package/dist/lib/computer/policy.js +1 -1
- package/dist/lib/computer-client.d.ts +3 -3
- package/dist/lib/computer-client.js +0 -1
- package/dist/lib/concurrency.d.ts +2 -1
- package/dist/lib/config-keys.d.ts +16 -3
- package/dist/lib/config-keys.js +47 -2
- package/dist/lib/convert.d.ts +0 -12
- package/dist/lib/convert.js +1 -12
- package/dist/lib/crabbox/cli.d.ts +6 -24
- package/dist/lib/crabbox/cli.js +2 -28
- package/dist/lib/crabbox/lease.d.ts +5 -6
- package/dist/lib/crabbox/lease.js +1 -1
- package/dist/lib/crabbox/progress.d.ts +2 -1
- package/dist/lib/crabbox/setup-copy.d.ts +2 -3
- package/dist/lib/crabbox/setup-copy.js +1 -1
- package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
- package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
- package/dist/lib/daemon/catchup-service.d.ts +2 -1
- package/dist/lib/daemon/daemon.d.ts +4 -12
- package/dist/lib/daemon/daemon.js +42 -23
- package/dist/lib/daemon/harness-update-service.d.ts +2 -19
- package/dist/lib/daemon/harness-update-service.js +3 -3
- package/dist/lib/daemon/runner.d.ts +3 -3
- package/dist/lib/daemon/self-update-service.d.ts +1 -16
- package/dist/lib/daemon/self-update-service.js +6 -6
- package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
- package/dist/lib/daemon/supervisor.d.ts +3 -2
- package/dist/lib/daemon/testdata/process-view-daemon.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-daemon.js +14 -0
- package/dist/lib/daemon/testdata/process-view-start.d.ts +1 -0
- package/dist/lib/daemon/testdata/process-view-start.js +43 -0
- package/dist/lib/daemon-services.d.ts +2 -1
- package/dist/lib/daemon-webhooks.d.ts +1 -1
- package/dist/lib/deeplink/register.d.ts +3 -13
- package/dist/lib/deeplink/register.js +3 -3
- package/dist/lib/deeplink/url.d.ts +3 -2
- package/dist/lib/device-config.d.ts +4 -15
- package/dist/lib/device-config.js +164 -8
- package/dist/lib/devices/connect.d.ts +2 -1
- package/dist/lib/devices/discovery-policy.d.ts +3 -2
- package/dist/lib/devices/doctor-findings.js +1 -1
- package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
- package/dist/lib/devices/fleet-divergence.d.ts +2 -1
- package/dist/lib/devices/fleet.d.ts +3 -4
- package/dist/lib/devices/fleet.js +1 -1
- package/dist/lib/devices/harness-inventory.d.ts +3 -2
- package/dist/lib/devices/health-report.d.ts +3 -2
- package/dist/lib/devices/health.d.ts +1 -8
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/interactive-host.d.ts +0 -2
- package/dist/lib/devices/interactive-host.js +1 -1
- package/dist/lib/devices/known-hosts.d.ts +2 -20
- package/dist/lib/devices/known-hosts.js +2 -2
- package/dist/lib/devices/pool.d.ts +2 -1
- package/dist/lib/devices/resolve-target.d.ts +2 -2
- package/dist/lib/devices/rollout-verify.d.ts +3 -2
- package/dist/lib/devices/stats-cache.d.ts +3 -2
- package/dist/lib/devices/sync.d.ts +6 -5
- package/dist/lib/devices/worker-pick.d.ts +3 -12
- package/dist/lib/devices/worker-pick.js +1 -1
- package/dist/lib/diff-text.d.ts +2 -1
- package/dist/lib/doctor-diff.d.ts +2 -1
- package/dist/lib/drift-sync.d.ts +3 -2
- package/dist/lib/drift.d.ts +3 -3
- package/dist/lib/drift.js +1 -1
- package/dist/lib/event-families.d.ts +0 -6
- package/dist/lib/event-families.js +3 -3
- package/dist/lib/event-provenance.d.ts +4 -1
- package/dist/lib/event-provenance.js +4 -0
- package/dist/lib/events-ingest.d.ts +4 -3
- package/dist/lib/exec-account-home.d.ts +2 -4
- package/dist/lib/exec-account-home.js +1 -1
- package/dist/lib/exec-bounded.d.ts +3 -4
- package/dist/lib/exec-bounded.js +1 -1
- package/dist/lib/exec.d.ts +6 -18
- package/dist/lib/exec.js +28 -8
- package/dist/lib/factory/snapshot.d.ts +2 -2
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/feed/activity-stream.d.ts +2 -5
- package/dist/lib/feed/activity-stream.js +11 -2
- package/dist/lib/feed/activity.d.ts +16 -33
- package/dist/lib/feed/activity.js +69 -26
- package/dist/lib/feed/answer.d.ts +3 -2
- package/dist/lib/feed/attention.js +5 -1
- package/dist/lib/feed/events.d.ts +2 -47
- package/dist/lib/feed/events.js +1 -141
- package/dist/lib/feed/feed.d.ts +9 -42
- package/dist/lib/feed/feed.js +1 -60
- package/dist/lib/feed/pr-status.d.ts +0 -2
- package/dist/lib/feed/pr-status.js +1 -5
- package/dist/lib/feed/watch.d.ts +10 -2
- package/dist/lib/feed/watch.js +91 -4
- package/dist/lib/feed-broadcast.d.ts +5 -47
- package/dist/lib/feed-broadcast.js +9 -9
- package/dist/lib/feed-outcome.d.ts +3 -6
- package/dist/lib/feed-outcome.js +2 -2
- package/dist/lib/feed-policy.d.ts +5 -6
- package/dist/lib/feed-policy.js +2 -2
- package/dist/lib/feed-post.d.ts +3 -4
- package/dist/lib/feed-post.js +2 -2
- package/dist/lib/feed-ranking.d.ts +2 -2
- package/dist/lib/feed-ranking.js +1 -1
- package/dist/lib/fleet/apply.d.ts +5 -6
- package/dist/lib/fleet/apply.js +4 -4
- package/dist/lib/fleet/manifest.d.ts +2 -1
- package/dist/lib/fleet/remote-login.d.ts +18 -36
- package/dist/lib/fleet/remote-login.js +20 -19
- package/dist/lib/fleet/types.d.ts +0 -8
- package/dist/lib/fleet-cache.d.ts +1 -18
- package/dist/lib/fleet-cache.js +0 -5
- package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
- package/dist/lib/fleet-shared-repo-sync.js +1 -1
- package/dist/lib/fleet-shared-state.d.ts +3 -2
- package/dist/lib/format.d.ts +2 -1
- package/dist/lib/friction-heuristics.d.ts +2 -1
- package/dist/lib/fs-walk.d.ts +2 -1
- package/dist/lib/fuzzy.d.ts +2 -1
- package/dist/lib/gemini-settings.d.ts +0 -1
- package/dist/lib/gemini-settings.js +1 -1
- package/dist/lib/git.d.ts +7 -65
- package/dist/lib/git.js +3 -142
- package/dist/lib/github/gh-overload.d.ts +0 -4
- package/dist/lib/github/gh-overload.js +2 -2
- package/dist/lib/github/project-prs.d.ts +118 -0
- package/dist/lib/github/project-prs.js +173 -0
- package/dist/lib/github/rest.d.ts +2 -1
- package/dist/lib/harness/exec-config-version.d.ts +2 -1
- package/dist/lib/harness-auth-capabilities.d.ts +5 -4
- package/dist/lib/harness-connection-test.d.ts +2 -1
- package/dist/lib/heal.d.ts +3 -20
- package/dist/lib/heal.js +2 -39
- package/dist/lib/help.d.ts +3 -2
- package/dist/lib/helper-download.d.ts +0 -12
- package/dist/lib/helper-download.js +2 -2
- package/dist/lib/helper-versions.d.ts +2 -1
- package/dist/lib/helper-versions.js +1 -1
- package/dist/lib/hooks/install.d.ts +8 -49
- package/dist/lib/hooks/install.js +2 -96
- package/dist/lib/hooks/match.d.ts +2 -1
- package/dist/lib/hosts/credential-transport.d.ts +0 -2
- package/dist/lib/hosts/credential-transport.js +1 -1
- package/dist/lib/hosts/dispatch.d.ts +2 -34
- package/dist/lib/hosts/dispatch.js +4 -21
- package/dist/lib/hosts/logs.d.ts +2 -1
- package/dist/lib/hosts/passthrough.d.ts +1 -1
- package/dist/lib/hosts/passthrough.js +0 -1
- package/dist/lib/hosts/progress.d.ts +0 -5
- package/dist/lib/hosts/progress.js +1 -1
- package/dist/lib/hosts/ready.d.ts +3 -4
- package/dist/lib/hosts/ready.js +0 -8
- package/dist/lib/hosts/reconcile.d.ts +2 -8
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +4 -11
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +1 -1
- package/dist/lib/hosts/remote-cmd.d.ts +4 -3
- package/dist/lib/hosts/remote-session-id.d.ts +5 -27
- package/dist/lib/hosts/remote-session-id.js +18 -61
- package/dist/lib/hosts/session-index.d.ts +3 -2
- package/dist/lib/hosts/ssh-config.d.ts +2 -3
- package/dist/lib/hosts/ssh-config.js +0 -10
- package/dist/lib/humans.d.ts +0 -2
- package/dist/lib/humans.js +2 -2
- package/dist/lib/import.d.ts +4 -3
- package/dist/lib/installations/installation-lock.d.ts +0 -2
- package/dist/lib/installations/installation-lock.js +2 -2
- package/dist/lib/installations/launch-gate.d.ts +0 -9
- package/dist/lib/installations/launch-gate.js +1 -1
- package/dist/lib/installations/migrate.d.ts +0 -11
- package/dist/lib/installations/migrate.js +1 -1
- package/dist/lib/installations/shims.d.ts +1 -1
- package/dist/lib/installations/shims.js +2 -2
- package/dist/lib/installations/update-runtime.js +1 -1
- package/dist/lib/launch-identity.d.ts +10 -0
- package/dist/lib/launch-identity.js +31 -0
- package/dist/lib/linear-cache.d.ts +2 -1
- package/dist/lib/linux-userns.d.ts +2 -3
- package/dist/lib/linux-userns.js +0 -4
- package/dist/lib/loop.d.ts +2 -1
- package/dist/lib/mailbox-gc.d.ts +2 -1
- package/dist/lib/mailbox-target.d.ts +2 -1
- package/dist/lib/mailbox.d.ts +0 -6
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.js +2 -2
- package/dist/lib/mcp-registry.d.ts +2 -1
- package/dist/lib/memory.d.ts +2 -13
- package/dist/lib/memory.js +4 -4
- package/dist/lib/menubar/download-menubar.d.ts +0 -2
- package/dist/lib/menubar/download-menubar.js +1 -5
- package/dist/lib/menubar/install-menubar.d.ts +3 -14
- package/dist/lib/menubar/install-menubar.js +3 -3
- package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
- package/dist/lib/menubar/migrate-prefs.js +168 -0
- package/dist/lib/menubar/resolve-version.d.ts +1 -9
- package/dist/lib/menubar/resolve-version.js +4 -4
- package/dist/lib/menubar/snapshot.d.ts +24 -2
- package/dist/lib/menubar/snapshot.js +26 -0
- package/dist/lib/model-tier-overrides.d.ts +3 -2
- package/dist/lib/monitors/config.d.ts +0 -2
- package/dist/lib/monitors/config.js +0 -4
- package/dist/lib/monitors/engine.d.ts +1 -1
- package/dist/lib/monitors/remote.d.ts +3 -2
- package/dist/lib/monitors/sources/webhook.d.ts +2 -15
- package/dist/lib/monitors/sources/webhook.js +1 -38
- package/dist/lib/monitors/state.d.ts +4 -7
- package/dist/lib/monitors/state.js +2 -2
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/notify.js +1 -1
- package/dist/lib/onepassword.d.ts +5 -14
- package/dist/lib/onepassword.js +0 -64
- package/dist/lib/open-url.d.ts +3 -2
- package/dist/lib/openclaw-keychain.d.ts +4 -17
- package/dist/lib/openclaw-keychain.js +3 -33
- package/dist/lib/operator.d.ts +2 -2
- package/dist/lib/operator.js +1 -1
- package/dist/lib/output/git-output.d.ts +4 -14
- package/dist/lib/output/git-output.js +1 -1
- package/dist/lib/owner-message.d.ts +3 -29
- package/dist/lib/owner-message.js +3 -3
- package/dist/lib/packages/output-home.d.ts +2 -4
- package/dist/lib/packages/output-home.js +2 -2
- package/dist/lib/perf/db.d.ts +0 -2
- package/dist/lib/perf/db.js +2 -7
- package/dist/lib/permissions-registry.d.ts +2 -3
- package/dist/lib/permissions-registry.js +0 -4
- package/dist/lib/permissions.d.ts +6 -16
- package/dist/lib/permissions.js +2 -15
- package/dist/lib/picker.d.ts +6 -5
- package/dist/lib/placement.d.ts +3 -6
- package/dist/lib/placement.js +0 -17
- package/dist/lib/platform/posixpath.d.ts +2 -1
- package/dist/lib/platform/winpath.d.ts +2 -1
- package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
- package/dist/lib/plugins/plugin-marketplace.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +2 -1
- package/dist/lib/profiles-presets.d.ts +2 -1
- package/dist/lib/profiles.d.ts +3 -9
- package/dist/lib/profiles.js +1 -9
- package/dist/lib/project-doctor.d.ts +2 -1
- package/dist/lib/project-launch.d.ts +2 -2
- package/dist/lib/project-probe.d.ts +4 -3
- package/dist/lib/project-pull.d.ts +2 -1
- package/dist/lib/project-resources.d.ts +2 -2
- package/dist/lib/project-resources.js +1 -1
- package/dist/lib/project-root.d.ts +2 -6
- package/dist/lib/project-root.js +1 -1
- package/dist/lib/project-schedule.d.ts +2 -1
- package/dist/lib/project-status.d.ts +2 -16
- package/dist/lib/project-status.js +3 -3
- package/dist/lib/reconcile-and-repair.d.ts +5 -4
- package/dist/lib/redact.d.ts +7 -1
- package/dist/lib/redact.js +94 -3
- package/dist/lib/refresh-coordinator.d.ts +2 -1
- package/dist/lib/refresh.d.ts +3 -2
- package/dist/lib/remote-agents-json.d.ts +3 -2
- package/dist/lib/reserved-stores.d.ts +0 -2
- package/dist/lib/reserved-stores.js +3 -5
- package/dist/lib/resource-content-diff.d.ts +0 -2
- package/dist/lib/resource-content-diff.js +1 -1
- package/dist/lib/resource-patterns.d.ts +2 -1
- package/dist/lib/resource-profiles.d.ts +2 -8
- package/dist/lib/resource-profiles.js +3 -27
- package/dist/lib/resources/workflows.d.ts +1 -1
- package/dist/lib/resources.d.ts +4 -9
- package/dist/lib/resources.js +1 -1
- package/dist/lib/routine-context.d.ts +2 -5
- package/dist/lib/routine-context.js +2 -2
- package/dist/lib/routine-notify-owner.d.ts +8 -7
- package/dist/lib/routine-notify-owner.js +5 -5
- package/dist/lib/routine-process-cleanup.d.ts +2 -1
- package/dist/lib/routine-readiness.d.ts +0 -2
- package/dist/lib/routine-readiness.js +0 -7
- package/dist/lib/routines-project.d.ts +3 -4
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +3 -25
- package/dist/lib/rules/compile.js +1 -1
- package/dist/lib/rules/compose.d.ts +3 -9
- package/dist/lib/rules/rules.d.ts +4 -15
- package/dist/lib/rules/rules.js +1 -64
- package/dist/lib/run-defaults.d.ts +1 -1
- package/dist/lib/run-notify.d.ts +2 -1
- package/dist/lib/run-trace-sync.d.ts +1 -1
- package/dist/lib/run-trace-sync.js +1 -1
- package/dist/lib/scheduler.d.ts +2 -1
- package/dist/lib/scheduling/routines.d.ts +9 -21
- package/dist/lib/scheduling/routines.js +3 -46
- package/dist/lib/secrets-client.d.ts +0 -17
- package/dist/lib/secrets-client.js +4 -26
- package/dist/lib/secrets-policy.d.ts +12 -17
- package/dist/lib/secrets-policy.js +5 -5
- package/dist/lib/secrets-types.d.ts +3 -2
- package/dist/lib/secrets-types.js +2 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -1
- package/dist/lib/self-heal/registry.d.ts +3 -2
- package/dist/lib/self-heal/types.d.ts +1 -1
- package/dist/lib/self-heal/types.js +1 -1
- package/dist/lib/self-update.d.ts +5 -5
- package/dist/lib/self-update.js +4 -4
- package/dist/lib/session/active.js +9 -3
- package/dist/lib/session/actor-sidecar.d.ts +3 -2
- package/dist/lib/session/artifacts.d.ts +0 -2
- package/dist/lib/session/artifacts.js +1 -1
- package/dist/lib/session/bash-command.d.ts +2 -7
- package/dist/lib/session/bundle.d.ts +4 -6
- package/dist/lib/session/bundle.js +1 -5
- package/dist/lib/session/cloud.d.ts +0 -4
- package/dist/lib/session/cloud.js +2 -15
- package/dist/lib/session/db.d.ts +2 -1
- package/dist/lib/session/db.js +39 -4
- package/dist/lib/session/detached.d.ts +2 -1
- package/dist/lib/session/detached.js +2 -2
- package/dist/lib/session/digest.d.ts +2 -2
- package/dist/lib/session/digest.js +1 -1
- package/dist/lib/session/discover.js +7 -2
- package/dist/lib/session/fork.d.ts +3 -2
- package/dist/lib/session/highlights.d.ts +6 -5
- package/dist/lib/session/hook-sessions.d.ts +12 -1
- package/dist/lib/session/hook-sessions.js +139 -6
- package/dist/lib/session/host-link.d.ts +2 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/inject.js +1 -1
- package/dist/lib/session/insights.d.ts +3 -15
- package/dist/lib/session/insights.js +2 -2
- package/dist/lib/session/local-tmux-attach.d.ts +2 -18
- package/dist/lib/session/local-tmux-attach.js +1 -1
- package/dist/lib/session/migrations.d.ts +0 -1
- package/dist/lib/session/migrations.js +1 -1
- package/dist/lib/session/mirror.d.ts +5 -8
- package/dist/lib/session/mirror.js +2 -2
- package/dist/lib/session/parse.d.ts +1 -32
- package/dist/lib/session/parse.js +4 -4
- package/dist/lib/session/pid-registry.d.ts +18 -5
- package/dist/lib/session/pid-registry.js +164 -17
- package/dist/lib/session/presence.d.ts +2 -1
- package/dist/lib/session/process-view.d.ts +25 -0
- package/dist/lib/session/process-view.js +176 -0
- package/dist/lib/session/projection.d.ts +13 -0
- package/dist/lib/session/projection.js +101 -0
- package/dist/lib/session/prompt.d.ts +3 -2
- package/dist/lib/session/prompt.js +38 -1
- package/dist/lib/session/recovery.d.ts +3 -2
- package/dist/lib/session/remote/peer-stream.d.ts +2 -5
- package/dist/lib/session/remote/peer-stream.js +2 -2
- package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
- package/dist/lib/session/remote/remote-list.d.ts +5 -5
- package/dist/lib/session/remote/remote.d.ts +4 -3
- package/dist/lib/session/remote/watch.d.ts +10 -7
- package/dist/lib/session/remote/watch.js +10 -6
- package/dist/lib/session/remote-active.d.ts +2 -1
- package/dist/lib/session/render.d.ts +2 -2
- package/dist/lib/session/render.js +1 -1
- package/dist/lib/session/resume-owner.d.ts +1 -1
- package/dist/lib/session/resume-owner.js +1 -1
- package/dist/lib/session/run-names.d.ts +2 -1
- package/dist/lib/session/session-cache.d.ts +7 -26
- package/dist/lib/session/session-cache.js +17 -8
- package/dist/lib/session/share-html.d.ts +1 -21
- package/dist/lib/session/share-html.js +1 -1
- package/dist/lib/session/shell-programs.d.ts +2 -1
- package/dist/lib/session/state.d.ts +41 -8
- package/dist/lib/session/state.js +112 -11
- package/dist/lib/session/stream-render.d.ts +2 -1
- package/dist/lib/session/sync/agents.d.ts +0 -4
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +5 -5
- package/dist/lib/session/sync/managed-config.d.ts +0 -8
- package/dist/lib/session/sync/managed-key.d.ts +0 -2
- package/dist/lib/session/sync/managed-key.js +1 -1
- package/dist/lib/session/sync/r2.d.ts +4 -1
- package/dist/lib/session/sync/r2.js +4 -7
- package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
- package/dist/lib/session/tail.d.ts +2 -1
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/testdata/pid-registry-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/pid-registry-namespace.js +27 -0
- package/dist/lib/session/testdata/process-view-namespace.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-namespace.js +56 -0
- package/dist/lib/session/testdata/process-view-private.d.ts +1 -0
- package/dist/lib/session/testdata/process-view-private.js +12 -0
- package/dist/lib/session/throughput.d.ts +2 -3
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/timeline-pass.d.ts +3 -42
- package/dist/lib/session/timeline-pass.js +4 -4
- package/dist/lib/session/timeline.d.ts +3 -13
- package/dist/lib/session/timeline.js +3 -3
- package/dist/lib/session/tool-calls.d.ts +2 -2
- package/dist/lib/session/tool-calls.js +1 -1
- package/dist/lib/session/tool-index.d.ts +0 -8
- package/dist/lib/session/tool-index.js +2 -2
- package/dist/lib/session/tool-store.d.ts +2 -1
- package/dist/lib/session/trajectory-compare.d.ts +2 -1
- package/dist/lib/session/trajectory-lineage.d.ts +2 -1
- package/dist/lib/session/trajectory-text.d.ts +3 -2
- package/dist/lib/session/trajectory.d.ts +2 -1
- package/dist/lib/session/viewing-in.d.ts +2 -1
- package/dist/lib/settings-manifest.d.ts +2 -1
- package/dist/lib/share/delete.d.ts +5 -4
- package/dist/lib/share/html.d.ts +0 -2
- package/dist/lib/share/html.js +9 -9
- package/dist/lib/share/http-error.d.ts +3 -2
- package/dist/lib/share/og.d.ts +2 -1
- package/dist/lib/share/provision.d.ts +2 -2
- package/dist/lib/share/publish.d.ts +4 -13
- package/dist/lib/share/publish.js +2 -2
- package/dist/lib/shim-heal.d.ts +1 -5
- package/dist/lib/shim-heal.js +0 -6
- package/dist/lib/smart-launch.d.ts +4 -5
- package/dist/lib/smart-launch.js +1 -1
- package/dist/lib/snapshot.d.ts +3 -2
- package/dist/lib/ssh-exec.d.ts +5 -4
- package/dist/lib/ssh-tunnel.d.ts +3 -2
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
- package/dist/lib/staleness/checkers/permissions.js +1 -1
- package/dist/lib/staleness/fingerprint.d.ts +0 -7
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/prune.d.ts +3 -2
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/sources.d.ts +0 -8
- package/dist/lib/staleness/writers/sources.js +1 -1
- package/dist/lib/startup/command-registry.js +1 -1
- package/dist/lib/state.d.ts +1 -3
- package/dist/lib/state.js +1 -4
- package/dist/lib/subagents-registry.d.ts +4 -3
- package/dist/lib/subagents.d.ts +2 -1
- package/dist/lib/subagents.js +3 -2
- package/dist/lib/summarizer/pass.d.ts +3 -6
- package/dist/lib/summarizer/pass.js +2 -2
- package/dist/lib/summarizer/summarize.d.ts +4 -3
- package/dist/lib/sync-passphrase.d.ts +3 -2
- package/dist/lib/sync-status.d.ts +3 -16
- package/dist/lib/sync-status.js +2 -2
- package/dist/lib/sync-umbrella.d.ts +4 -3
- package/dist/lib/system-run-sync.d.ts +2 -1
- package/dist/lib/teams/agents.d.ts +2 -4
- package/dist/lib/teams/agents.js +1 -1
- package/dist/lib/teams/forEach.d.ts +3 -2
- package/dist/lib/teams/pr-watch.d.ts +4 -11
- package/dist/lib/teams/pr-watch.js +4 -4
- package/dist/lib/teams/registry.d.ts +2 -3
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/teams/remoteWorktree.d.ts +0 -16
- package/dist/lib/teams/remoteWorktree.js +3 -3
- package/dist/lib/teams/scheduler.d.ts +6 -5
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/supervisor.d.ts +4 -3
- package/dist/lib/teams/worktree.d.ts +0 -9
- package/dist/lib/teams/worktree.js +0 -32
- package/dist/lib/term-client.d.ts +44 -0
- package/dist/lib/term-client.js +117 -0
- package/dist/lib/terminal/inject.d.ts +3 -16
- package/dist/lib/terminal/inject.js +1 -29
- package/dist/lib/terminal/resolve.d.ts +3 -9
- package/dist/lib/terminal/resolve.js +3 -7
- package/dist/lib/tmux/binary.d.ts +2 -1
- package/dist/lib/tmux/orphan-reap.d.ts +6 -7
- package/dist/lib/tmux/orphan-reap.js +1 -1
- package/dist/lib/tmux/session.d.ts +4 -3
- package/dist/lib/traces/classify.d.ts +3 -2
- package/dist/lib/traces/config.d.ts +0 -8
- package/dist/lib/traces/insights.d.ts +2 -1
- package/dist/lib/traces/phenotype.d.ts +3 -3
- package/dist/lib/traces/provision.d.ts +1 -3
- package/dist/lib/traces/provision.js +1 -1
- package/dist/lib/traces/schema2-build.d.ts +1 -1
- package/dist/lib/traces/schema2-danger.d.ts +2 -1
- package/dist/lib/traces/schema2.d.ts +5 -4
- package/dist/lib/traces/segments.d.ts +4 -20
- package/dist/lib/traces/segments.js +3 -3
- package/dist/lib/traces/sync.d.ts +2 -3
- package/dist/lib/traces/sync.js +1 -1
- package/dist/lib/triggers/handlers.d.ts +4 -13
- package/dist/lib/triggers/handlers.js +1 -1
- package/dist/lib/triggers/webhook.d.ts +5 -27
- package/dist/lib/triggers/webhook.js +4 -4
- package/dist/lib/types.d.ts +3 -3
- package/dist/lib/usage-refresh.d.ts +4 -10
- package/dist/lib/usage-refresh.js +3 -8
- package/dist/lib/verbs.d.ts +2 -1
- package/dist/lib/version-duplicates.d.ts +2 -3
- package/dist/lib/version-duplicates.js +3 -33
- package/dist/lib/version.d.ts +2 -1
- package/dist/lib/warn-unpushed.d.ts +2 -1
- package/dist/lib/watchdog/history.d.ts +3 -2
- package/dist/lib/watchdog/log.d.ts +0 -6
- package/dist/lib/watchdog/log.js +1 -1
- package/dist/lib/watchdog/rotate.d.ts +2 -26
- package/dist/lib/watchdog/rotate.js +4 -12
- package/dist/lib/watchdog/runner.d.ts +0 -7
- package/dist/lib/watchdog/runner.js +4 -4
- package/dist/lib/watchdog/service.d.ts +2 -2
- package/dist/lib/watchdog/service.js +1 -1
- package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
- package/dist/lib/watchdog/watchdog.d.ts +2 -1
- package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
- package/dist/lib/workflows-registry.d.ts +3 -2
- package/dist/lib/workflows.d.ts +4 -7
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/worktree/held.d.ts +4 -28
- package/dist/lib/worktree/held.js +3 -3
- package/package.json +2 -3
- package/scripts/postinstall.js +5 -4
- package/dist/commands/pty.d.ts +0 -20
- package/dist/commands/pty.js +0 -404
- package/dist/lib/config-machine-keys.d.ts +0 -14
- package/dist/lib/config-machine-keys.js +0 -21
- package/dist/lib/pty-client.d.ts +0 -49
- package/dist/lib/pty-client.js +0 -315
- package/dist/lib/pty-server.d.ts +0 -59
- package/dist/lib/pty-server.js +0 -653
|
@@ -48,12 +48,12 @@ export interface ComputerTargetContext {
|
|
|
48
48
|
sshArgs: string[];
|
|
49
49
|
}
|
|
50
50
|
/** Who is acting, so the engine can stamp the action it reports back. */
|
|
51
|
-
|
|
51
|
+
interface ComputerSessionContext {
|
|
52
52
|
sessionId?: string;
|
|
53
53
|
launchId?: string;
|
|
54
54
|
actor: string;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
interface ComputerContext {
|
|
57
57
|
version: 1;
|
|
58
58
|
permissions?: {
|
|
59
59
|
allow: string[];
|
|
@@ -64,13 +64,20 @@ export interface ComputerContext {
|
|
|
64
64
|
target?: ComputerTargetContext;
|
|
65
65
|
session: ComputerSessionContext;
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
interface BuildContextOptions {
|
|
68
68
|
/** `--device <name>`, if given. */
|
|
69
69
|
device?: string;
|
|
70
70
|
/** Direct host targeting, which bypasses fleet resolution. */
|
|
71
71
|
host?: string;
|
|
72
72
|
/** Resolved path of the standalone executable, for the peer allow list. */
|
|
73
73
|
computerBin?: string;
|
|
74
|
+
/**
|
|
75
|
+
* A precomputed target (PHNX-4090: `resolveDeviceHost` in `commands/computer.ts`
|
|
76
|
+
* already resolved the device's `computer.host` config, or the ssh fallback).
|
|
77
|
+
* When present, `device` is used only to gate the local-permissions branch
|
|
78
|
+
* below — this skips a second, possibly Windows-gated, fleet resolution.
|
|
79
|
+
*/
|
|
80
|
+
target?: ComputerTargetContext;
|
|
74
81
|
}
|
|
75
82
|
/**
|
|
76
83
|
* Build the context handed to the engine on fd 3.
|
|
@@ -81,3 +88,4 @@ export interface BuildContextOptions {
|
|
|
81
88
|
* layer that can actually see the device's platform.
|
|
82
89
|
*/
|
|
83
90
|
export declare function buildComputerContext(opts?: BuildContextOptions): Promise<ComputerContext>;
|
|
91
|
+
export {};
|
|
@@ -59,8 +59,8 @@ function agentSessionId(env = process.env) {
|
|
|
59
59
|
* layer that can actually see the device's platform.
|
|
60
60
|
*/
|
|
61
61
|
export async function buildComputerContext(opts = {}) {
|
|
62
|
-
let target;
|
|
63
|
-
if (opts.device) {
|
|
62
|
+
let target = opts.target;
|
|
63
|
+
if (!target && opts.device) {
|
|
64
64
|
const resolved = await resolveRemoteDevice(opts.device, {
|
|
65
65
|
expectPlatform: 'windows',
|
|
66
66
|
forWhat: '`agents computer --device` drives the Windows computer-helper daemon, so it',
|
|
@@ -22,18 +22,6 @@ export declare function loadComputerAllowList(): string[];
|
|
|
22
22
|
export declare function loadDefaultPeers(opts?: {
|
|
23
23
|
computerBin?: string;
|
|
24
24
|
}): string[];
|
|
25
|
-
/**
|
|
26
|
-
* Parse a `host:port` VNC endpoint, defaulting the port to 5901. Pure.
|
|
27
|
-
*
|
|
28
|
-
* Kept on the consumer side because the `--vnc` FLAG is parsed here — the
|
|
29
|
-
* platform gate has to know whether a remote desktop was named before the
|
|
30
|
-
* engine is ever spawned (see `shouldBlockOffPlatform`). The RFB protocol
|
|
31
|
-
* implementation itself went to the engine.
|
|
32
|
-
*/
|
|
33
|
-
export declare function parseVncEndpoint(raw: string | undefined): {
|
|
34
|
-
host: string;
|
|
35
|
-
port: number;
|
|
36
|
-
} | null;
|
|
37
25
|
export declare function resolveTcpEndpoint(): {
|
|
38
26
|
host: string;
|
|
39
27
|
port: number;
|
|
@@ -120,7 +120,7 @@ export function loadDefaultPeers(opts = {}) {
|
|
|
120
120
|
* engine is ever spawned (see `shouldBlockOffPlatform`). The RFB protocol
|
|
121
121
|
* implementation itself went to the engine.
|
|
122
122
|
*/
|
|
123
|
-
|
|
123
|
+
function parseVncEndpoint(raw) {
|
|
124
124
|
if (!raw || raw.length === 0)
|
|
125
125
|
return null;
|
|
126
126
|
const idx = raw.lastIndexOf(':');
|
|
@@ -114,7 +114,7 @@ export declare function parseEventLines(buffer: string): {
|
|
|
114
114
|
events: ComputerActionEvent[];
|
|
115
115
|
rest: string;
|
|
116
116
|
};
|
|
117
|
-
|
|
117
|
+
interface RunComputerOptions {
|
|
118
118
|
/** argv handed to the standalone, after the program name. */
|
|
119
119
|
argv: string[];
|
|
120
120
|
/** The consumer context serialized onto fd 3. */
|
|
@@ -131,7 +131,7 @@ export interface RunComputerOptions {
|
|
|
131
131
|
*/
|
|
132
132
|
capture?: boolean;
|
|
133
133
|
}
|
|
134
|
-
|
|
134
|
+
interface RunComputerResult {
|
|
135
135
|
exitCode: number;
|
|
136
136
|
/** Engine stdout, only when `capture` was set. */
|
|
137
137
|
stdout: string;
|
|
@@ -147,4 +147,4 @@ export interface RunComputerResult {
|
|
|
147
147
|
export declare function runComputer(opts: RunComputerOptions): Promise<RunComputerResult>;
|
|
148
148
|
/** Test seam: drop the memoized bin so PATH fixtures can re-resolve. */
|
|
149
149
|
export declare function _resetComputerClientForTest(): void;
|
|
150
|
-
export
|
|
150
|
+
export {};
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
* `lsof`, multi-dotfile scans) reads to behavioral EDR as recon/enumeration. A
|
|
11
11
|
* bounded, spread-out spawn rate produces the same data without the burst signature.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
interface BoundedMapOptions {
|
|
14
14
|
/** Maximum number of `fn` calls running at once. Coerced to >= 1. */
|
|
15
15
|
concurrency: number;
|
|
16
16
|
/** Minimum spacing (ms) between successive task starts. 0 (default) = no spacing. */
|
|
17
17
|
staggerMs?: number;
|
|
18
18
|
}
|
|
19
19
|
export declare function mapBounded<T, R>(items: readonly T[], fn: (item: T, index: number) => Promise<R>, opts: BoundedMapOptions): Promise<R[]>;
|
|
20
|
+
export {};
|
|
@@ -9,7 +9,14 @@
|
|
|
9
9
|
import type { AgentId } from './types.js';
|
|
10
10
|
import { type ModelTier } from './model-tiers.js';
|
|
11
11
|
/** The top-level scope of a unified config key. */
|
|
12
|
-
export type ConfigScope = 'run' | 'interactive' | 'auto' | 'browser' | 'project' | 'device' | 'summarizer' | 'updates';
|
|
12
|
+
export type ConfigScope = 'run' | 'interactive' | 'auto' | 'browser' | 'project' | 'device' | 'summarizer' | 'updates' | 'menubar';
|
|
13
|
+
/**
|
|
14
|
+
* The AGI Menu preference leaf names under `menubar.menu.*` (PHNX-3999). The
|
|
15
|
+
* types, defaults, and enum validation for each live in `device-config.ts`'s
|
|
16
|
+
* CONFIG_KEYS (user scope); this list is only the parser's allow-set so an
|
|
17
|
+
* unknown `menubar.menu.<x>` fails loud here instead of at the store.
|
|
18
|
+
*/
|
|
19
|
+
export declare const MENUBAR_MENU_PROPERTIES: readonly ["defaultProject", "workingRowsShown", "showPreviews", "projectPriorityFilter", "hideCompletedMilestones", "bannerWhenNeedsYou", "includeOtherDeviceRequests", "groupBy", "thenBy", "projectScope", "projectSort", "ticketSort", "showPullRequests"];
|
|
13
20
|
/** A run-time default key: model, mode, effort, or tier override. */
|
|
14
21
|
export interface ParsedRunConfigKey {
|
|
15
22
|
scope: 'run';
|
|
@@ -60,8 +67,14 @@ export interface ParsedUpdatesConfigKey {
|
|
|
60
67
|
property: 'auto';
|
|
61
68
|
agent?: AgentId;
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
export
|
|
70
|
+
/** An AGI Menu preference key: `menubar.menu.<property>` (user-scope, PHNX-3999). */
|
|
71
|
+
export interface ParsedMenubarConfigKey {
|
|
72
|
+
scope: 'menubar';
|
|
73
|
+
/** Leaf name under `menubar.menu.` — one of {@link MENUBAR_MENU_PROPERTIES}. */
|
|
74
|
+
property: string;
|
|
75
|
+
}
|
|
76
|
+
export type ParsedConfigKey = ParsedRunConfigKey | ParsedInteractiveConfigKey | ParsedAutoConfigKey | ParsedBrowserConfigKey | ParsedProjectConfigKey | ParsedDeviceConfigKey | ParsedSummarizerConfigKey | ParsedUpdatesConfigKey | ParsedMenubarConfigKey;
|
|
77
|
+
export type DeviceConfigProperty = 'role' | 'max-agents' | 'scheduler' | 'daemon' | 'watchdog' | 'tmux' | 'browser.remote-control' | 'browser.task-idle-minutes' | 'notes' | 'browser.profile' | 'browser.viewer' | 'computer.host' | 'formFactor';
|
|
65
78
|
/** Normalize agent@version to use `@` consistently. */
|
|
66
79
|
export declare function formatAgentVersion(agent: AgentId, version: string): string;
|
|
67
80
|
/**
|
package/dist/lib/config-keys.js
CHANGED
|
@@ -9,6 +9,27 @@
|
|
|
9
9
|
import { AGENTS } from './agents.js';
|
|
10
10
|
import { MODEL_TIERS } from './model-tiers.js';
|
|
11
11
|
import { VERSION_RE } from './run-defaults.js';
|
|
12
|
+
/**
|
|
13
|
+
* The AGI Menu preference leaf names under `menubar.menu.*` (PHNX-3999). The
|
|
14
|
+
* types, defaults, and enum validation for each live in `device-config.ts`'s
|
|
15
|
+
* CONFIG_KEYS (user scope); this list is only the parser's allow-set so an
|
|
16
|
+
* unknown `menubar.menu.<x>` fails loud here instead of at the store.
|
|
17
|
+
*/
|
|
18
|
+
export const MENUBAR_MENU_PROPERTIES = [
|
|
19
|
+
'defaultProject',
|
|
20
|
+
'workingRowsShown',
|
|
21
|
+
'showPreviews',
|
|
22
|
+
'projectPriorityFilter',
|
|
23
|
+
'hideCompletedMilestones',
|
|
24
|
+
'bannerWhenNeedsYou',
|
|
25
|
+
'includeOtherDeviceRequests',
|
|
26
|
+
'groupBy',
|
|
27
|
+
'thenBy',
|
|
28
|
+
'projectScope',
|
|
29
|
+
'projectSort',
|
|
30
|
+
'ticketSort',
|
|
31
|
+
'showPullRequests',
|
|
32
|
+
];
|
|
12
33
|
const DEVICE_CONFIG_PROPERTIES = [
|
|
13
34
|
'browser.viewer',
|
|
14
35
|
'role',
|
|
@@ -21,6 +42,8 @@ const DEVICE_CONFIG_PROPERTIES = [
|
|
|
21
42
|
'browser.task-idle-minutes',
|
|
22
43
|
'notes',
|
|
23
44
|
'browser.profile',
|
|
45
|
+
'computer.host',
|
|
46
|
+
'formFactor',
|
|
24
47
|
];
|
|
25
48
|
/** Split an agent@version token into its parts. Accepts both `@` and `:`. */
|
|
26
49
|
function parseAgentVersion(token) {
|
|
@@ -98,6 +121,14 @@ export function parseConfigKey(key) {
|
|
|
98
121
|
if (summarizerMatch) {
|
|
99
122
|
return { scope: 'summarizer', property: summarizerMatch[1] };
|
|
100
123
|
}
|
|
124
|
+
const menubarMatch = raw.match(/^menubar\.menu\.(.+)$/);
|
|
125
|
+
if (menubarMatch) {
|
|
126
|
+
const property = menubarMatch[1];
|
|
127
|
+
if (!MENUBAR_MENU_PROPERTIES.includes(property)) {
|
|
128
|
+
throw new Error(`Unknown AGI Menu preference '${key}'. Known keys: ${MENUBAR_MENU_PROPERTIES.map((p) => `menubar.menu.${p}`).join(', ')}.`);
|
|
129
|
+
}
|
|
130
|
+
return { scope: 'menubar', property };
|
|
131
|
+
}
|
|
101
132
|
if (raw === 'updates.auto') {
|
|
102
133
|
return { scope: 'updates', property: 'auto' };
|
|
103
134
|
}
|
|
@@ -109,7 +140,7 @@ export function parseConfigKey(key) {
|
|
|
109
140
|
}
|
|
110
141
|
return { scope: 'updates', agent: agentPart, property: 'auto' };
|
|
111
142
|
}
|
|
112
|
-
const deviceMatch = raw.match(/^devices\.(.+)\.(role|max-agents|scheduler|daemon|watchdog|tmux|notes|browser\.remote-control|browser\.task-idle-minutes|browser\.profile|browser\.viewer)$/);
|
|
143
|
+
const deviceMatch = raw.match(/^devices\.(.+)\.(role|max-agents|scheduler|daemon|watchdog|tmux|notes|formFactor|browser\.remote-control|browser\.task-idle-minutes|browser\.profile|browser\.viewer|computer\.host)$/);
|
|
113
144
|
if (deviceMatch) {
|
|
114
145
|
return {
|
|
115
146
|
scope: 'device',
|
|
@@ -139,10 +170,13 @@ export function parseConfigKey(key) {
|
|
|
139
170
|
if (raw.startsWith('updates.')) {
|
|
140
171
|
throw new Error(`Invalid updates config key '${key}'. Use updates.auto or updates.<agent>.auto.`);
|
|
141
172
|
}
|
|
173
|
+
if (raw.startsWith('menubar.')) {
|
|
174
|
+
throw new Error(`Invalid AGI Menu config key '${key}'. Use ${MENUBAR_MENU_PROPERTIES.map((p) => `menubar.menu.${p}`).join(', ')}.`);
|
|
175
|
+
}
|
|
142
176
|
if (raw.startsWith('devices.')) {
|
|
143
177
|
throw new Error(`Invalid device config key '${key}'. Expected devices.<name>.<${DEVICE_CONFIG_PROPERTIES.join('|')}>.`);
|
|
144
178
|
}
|
|
145
|
-
throw new Error(`Unknown config scope in '${key}'. Use one of: run, interactive, auto, browser, project, devices, summarizer.`);
|
|
179
|
+
throw new Error(`Unknown config scope in '${key}'. Use one of: run, interactive, auto, browser, project, devices, summarizer, updates, menubar.`);
|
|
146
180
|
}
|
|
147
181
|
/** Render a parsed key back to its canonical dotted string. */
|
|
148
182
|
export function formatConfigKey(parsed) {
|
|
@@ -168,6 +202,8 @@ export function formatConfigKey(parsed) {
|
|
|
168
202
|
return `summarizer.${parsed.property}`;
|
|
169
203
|
case 'updates':
|
|
170
204
|
return parsed.agent ? `updates.${parsed.agent}.auto` : 'updates.auto';
|
|
205
|
+
case 'menubar':
|
|
206
|
+
return `menubar.menu.${parsed.property}`;
|
|
171
207
|
}
|
|
172
208
|
}
|
|
173
209
|
/** List every canonical key the command documents, with wildcards expanded to a concrete example. */
|
|
@@ -178,6 +214,9 @@ export function listKnownConfigKeys() {
|
|
|
178
214
|
keys.push(`run.<agent@version>.tier.${tier}`);
|
|
179
215
|
}
|
|
180
216
|
keys.push('interactive.host', 'auto.pool', 'browser.profile', 'browser.viewer', 'browser.device', 'project.root', 'summarizer.enabled', 'summarizer.baseUrl', 'summarizer.model', 'updates.auto', 'updates.<agent>.auto');
|
|
217
|
+
for (const prop of MENUBAR_MENU_PROPERTIES) {
|
|
218
|
+
keys.push(`menubar.menu.${prop}`);
|
|
219
|
+
}
|
|
181
220
|
for (const prop of DEVICE_CONFIG_PROPERTIES) {
|
|
182
221
|
keys.push(`devices.<name>.${prop}`);
|
|
183
222
|
}
|
|
@@ -212,6 +251,10 @@ export function devicePropertyToConfigName(property) {
|
|
|
212
251
|
return 'browser.profile';
|
|
213
252
|
case 'browser.viewer':
|
|
214
253
|
return 'browser.viewer';
|
|
254
|
+
case 'computer.host':
|
|
255
|
+
return 'computer.host';
|
|
256
|
+
case 'formFactor':
|
|
257
|
+
return 'formFactor';
|
|
215
258
|
}
|
|
216
259
|
}
|
|
217
260
|
/**
|
|
@@ -253,5 +296,7 @@ export function configKeyStorageHint(parsed) {
|
|
|
253
296
|
return parsed.agent
|
|
254
297
|
? `config.updatesAgentAuto.${parsed.agent} (central agents.yaml; syncs fleet-wide)`
|
|
255
298
|
: 'config.updatesAuto (central agents.yaml; syncs fleet-wide)';
|
|
299
|
+
case 'menubar':
|
|
300
|
+
return `config.menubarMenu${parsed.property.charAt(0).toUpperCase()}${parsed.property.slice(1)} (central agents.yaml; syncs fleet-wide)`;
|
|
256
301
|
}
|
|
257
302
|
}
|
package/dist/lib/convert.d.ts
CHANGED
|
@@ -4,16 +4,6 @@
|
|
|
4
4
|
* Handles frontmatter parsing and bidirectional translation so that slash commands
|
|
5
5
|
* authored in one format can be synced to agents that expect the other.
|
|
6
6
|
*/
|
|
7
|
-
/** Parsed YAML frontmatter from a Markdown command file. */
|
|
8
|
-
export interface MarkdownFrontmatter {
|
|
9
|
-
description?: string;
|
|
10
|
-
[key: string]: unknown;
|
|
11
|
-
}
|
|
12
|
-
/** Extract YAML frontmatter and body from a Markdown string. Returns empty frontmatter if none found. */
|
|
13
|
-
export declare function parseMarkdownFrontmatter(content: string): {
|
|
14
|
-
frontmatter: MarkdownFrontmatter;
|
|
15
|
-
body: string;
|
|
16
|
-
};
|
|
17
7
|
/** Convert a Markdown command file to Gemini's TOML format, translating $ARGUMENTS to {{args}}. */
|
|
18
8
|
export declare function markdownToToml(skillName: string, markdown: string): string;
|
|
19
9
|
/**
|
|
@@ -27,5 +17,3 @@ export declare function markdownToToml(skillName: string, markdown: string): str
|
|
|
27
17
|
* Returns a plain object so the caller can `yaml.stringify` it.
|
|
28
18
|
*/
|
|
29
19
|
export declare function markdownToGooseRecipe(commandName: string, markdown: string): Record<string, unknown>;
|
|
30
|
-
/** Convert a Gemini TOML command file back to Markdown format, translating {{args}} to $ARGUMENTS. */
|
|
31
|
-
export declare function tomlToMarkdown(toml: string): string;
|
package/dist/lib/convert.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* authored in one format can be synced to agents that expect the other.
|
|
6
6
|
*/
|
|
7
7
|
/** Extract YAML frontmatter and body from a Markdown string. Returns empty frontmatter if none found. */
|
|
8
|
-
|
|
8
|
+
function parseMarkdownFrontmatter(content) {
|
|
9
9
|
const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
10
10
|
if (!match) {
|
|
11
11
|
return { frontmatter: {}, body: content };
|
|
@@ -62,14 +62,3 @@ export function markdownToGooseRecipe(commandName, markdown) {
|
|
|
62
62
|
prompt,
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
/** Convert a Gemini TOML command file back to Markdown format, translating {{args}} to $ARGUMENTS. */
|
|
66
|
-
export function tomlToMarkdown(toml) {
|
|
67
|
-
const nameMatch = toml.match(/name\s*=\s*"([^"]+)"/);
|
|
68
|
-
const descMatch = toml.match(/description\s*=\s*"([^"]+)"/);
|
|
69
|
-
const promptMatch = toml.match(/prompt\s*=\s*(?:'''|""")([\s\S]*?)(?:'''|""")/);
|
|
70
|
-
const description = descMatch?.[1] || '';
|
|
71
|
-
let prompt = promptMatch?.[1]?.trim() || '';
|
|
72
|
-
prompt = prompt.replace(/\{\{args\}\}/g, '$ARGUMENTS');
|
|
73
|
-
const lines = ['---', `description: ${description}`, '---', '', prompt, ''];
|
|
74
|
-
return lines.join('\n');
|
|
75
|
-
}
|
|
@@ -45,7 +45,7 @@ export interface CrabboxBox {
|
|
|
45
45
|
/** Idle-timeout window in seconds, or null. */
|
|
46
46
|
idleTimeoutSecs: number | null;
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
interface CrabboxOptions {
|
|
49
49
|
/**
|
|
50
50
|
* Name of a secrets bundle whose env (e.g. `HCLOUD_TOKEN`) crabbox needs to
|
|
51
51
|
* reach its cloud provider. Resolved via agents-cli's own keychain-backed
|
|
@@ -63,21 +63,8 @@ export interface CrabboxOptions {
|
|
|
63
63
|
}
|
|
64
64
|
/** Locate the crabbox binary, or throw an actionable error. */
|
|
65
65
|
export declare function findCrabbox(): string;
|
|
66
|
-
/**
|
|
67
|
-
* Env keys that mark a secrets bundle as usable for `--lease` — the provider
|
|
68
|
-
* tokens crabbox reads to reach a cloud API. Matching a bundle needs only its
|
|
69
|
-
* declared key NAMES; only the matched key's VALUE is ever injected (see
|
|
70
|
-
* `crabboxEnv`), so an auto-detected bundle can't leak its other secrets.
|
|
71
|
-
*/
|
|
72
|
-
export declare const LEASE_PROVIDER_TOKEN_KEYS: string[];
|
|
73
66
|
/** The first bundle that declares a provider token key, or undefined. Pure over `bundles`. */
|
|
74
67
|
export declare function pickLeaseBundleFromList(bundles: SecretsBundle[]): string | undefined;
|
|
75
|
-
/**
|
|
76
|
-
* Env keys a bundle may use for a Tailscale auth key. crabbox reads
|
|
77
|
-
* `CRABBOX_TAILSCALE_AUTH_KEY` to join a leased box to the tailnet; we accept the
|
|
78
|
-
* common alternate names too and rename to that canonical key on injection.
|
|
79
|
-
*/
|
|
80
|
-
export declare const TAILSCALE_AUTH_KEY_NAMES: string[];
|
|
81
68
|
/** The first bundle + key that declares a Tailscale auth key, or undefined. Pure over `bundles`. */
|
|
82
69
|
export declare function pickTailscaleBundleFromList(bundles: SecretsBundle[]): {
|
|
83
70
|
name: string;
|
|
@@ -86,7 +73,7 @@ export declare function pickTailscaleBundleFromList(bundles: SecretsBundle[]): {
|
|
|
86
73
|
/** Test seam: drop every crabboxEnv secrets memo so each test resolves fresh. */
|
|
87
74
|
export declare function resetCrabboxSecretsMemosForTest(): void;
|
|
88
75
|
/** A resolved lease bundle: its name, plus (auto-detect only) the exact keys to inject. */
|
|
89
|
-
|
|
76
|
+
interface ResolvedLeaseBundle {
|
|
90
77
|
name: string;
|
|
91
78
|
/** When set (auto-detect), inject ONLY these keys — not the whole bundle. */
|
|
92
79
|
keys?: string[];
|
|
@@ -122,7 +109,7 @@ export declare function crabboxFind(slug: string, opts?: CrabboxOptions): Crabbo
|
|
|
122
109
|
* (mirrors scripts/sandbox.sh's `box_ready`).
|
|
123
110
|
*/
|
|
124
111
|
export declare function crabboxStatusReady(slug: string, opts?: CrabboxOptions): boolean;
|
|
125
|
-
|
|
112
|
+
interface PoolMatchOptions {
|
|
126
113
|
/**
|
|
127
114
|
* Lease pool label (shared default, or `.crabbox.yaml leaseProfile:` opt-in;
|
|
128
115
|
* see config.ts). Both sides normalize an unset profile to
|
|
@@ -149,7 +136,7 @@ export interface PoolMatchOptions {
|
|
|
149
136
|
* run may be mid-boot on it, and crabbox's idle timeout reaps genuine duds.
|
|
150
137
|
*/
|
|
151
138
|
export declare function poolReusableBoxes(boxes: CrabboxBox[], opts?: PoolMatchOptions): CrabboxBox[];
|
|
152
|
-
|
|
139
|
+
interface WarmupOptions extends CrabboxOptions {
|
|
153
140
|
class?: string;
|
|
154
141
|
profile?: string;
|
|
155
142
|
/** Provision web code-server capability on the box. */
|
|
@@ -181,7 +168,7 @@ export declare function crabboxWaitReady(slug: string, opts?: CrabboxOptions & {
|
|
|
181
168
|
intervalMs?: number;
|
|
182
169
|
sleep?: (ms: number) => Promise<void>;
|
|
183
170
|
}): Promise<CrabboxBox>;
|
|
184
|
-
|
|
171
|
+
interface CrabboxRunOptions extends CrabboxOptions {
|
|
185
172
|
/** Called with each chunk of combined stdout/stderr as it streams. */
|
|
186
173
|
onData?: (chunk: string) => void;
|
|
187
174
|
/** Force a full remote resync before running. */
|
|
@@ -189,12 +176,6 @@ export interface CrabboxRunOptions extends CrabboxOptions {
|
|
|
189
176
|
/** Refresh an existing lease with this idle window before running. */
|
|
190
177
|
renewIdleTimeoutSecs?: number;
|
|
191
178
|
}
|
|
192
|
-
/**
|
|
193
|
-
* Run `remoteCmd` on the leased box via `crabbox run` (crabbox syncs the dirty
|
|
194
|
-
* checkout and owns the SSH). Streams combined output; resolves with the remote
|
|
195
|
-
* exit code (or null if crabbox itself failed to dispatch).
|
|
196
|
-
*/
|
|
197
|
-
export declare function crabboxRun(slug: string, remoteCmd: string, opts?: CrabboxRunOptions): Promise<number | null>;
|
|
198
179
|
/**
|
|
199
180
|
* Upload `script` to the box via `crabbox run --script-stdin` and run it.
|
|
200
181
|
*
|
|
@@ -251,3 +232,4 @@ export declare function reapOrphans(opts?: CrabboxOptions & {
|
|
|
251
232
|
candidates: CrabboxBox[];
|
|
252
233
|
reaped: string[];
|
|
253
234
|
};
|
|
235
|
+
export {};
|
package/dist/lib/crabbox/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ export function findCrabbox() {
|
|
|
29
29
|
* declared key NAMES; only the matched key's VALUE is ever injected (see
|
|
30
30
|
* `crabboxEnv`), so an auto-detected bundle can't leak its other secrets.
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
const LEASE_PROVIDER_TOKEN_KEYS = ['HCLOUD_TOKEN', 'AWS_ACCESS_KEY_ID', 'DIGITALOCEAN_TOKEN', 'DO_TOKEN'];
|
|
33
33
|
/** The first bundle that declares a provider token key, or undefined. Pure over `bundles`. */
|
|
34
34
|
export function pickLeaseBundleFromList(bundles) {
|
|
35
35
|
for (const b of bundles) {
|
|
@@ -43,7 +43,7 @@ export function pickLeaseBundleFromList(bundles) {
|
|
|
43
43
|
* `CRABBOX_TAILSCALE_AUTH_KEY` to join a leased box to the tailnet; we accept the
|
|
44
44
|
* common alternate names too and rename to that canonical key on injection.
|
|
45
45
|
*/
|
|
46
|
-
|
|
46
|
+
const TAILSCALE_AUTH_KEY_NAMES = ['CRABBOX_TAILSCALE_AUTH_KEY', 'TAILSCALE_AUTH_KEY', 'TS_AUTHKEY'];
|
|
47
47
|
/** The first bundle + key that declares a Tailscale auth key, or undefined. Pure over `bundles`. */
|
|
48
48
|
export function pickTailscaleBundleFromList(bundles) {
|
|
49
49
|
for (const b of bundles) {
|
|
@@ -447,32 +447,6 @@ export async function crabboxWaitReady(slug, opts = {}) {
|
|
|
447
447
|
}
|
|
448
448
|
throw new Error(`crabbox box "${slug}" did not become ready within ${Math.round(timeoutMs / 1000)}s (state: ${last?.state ?? 'gone'}).`);
|
|
449
449
|
}
|
|
450
|
-
/**
|
|
451
|
-
* Run `remoteCmd` on the leased box via `crabbox run` (crabbox syncs the dirty
|
|
452
|
-
* checkout and owns the SSH). Streams combined output; resolves with the remote
|
|
453
|
-
* exit code (or null if crabbox itself failed to dispatch).
|
|
454
|
-
*/
|
|
455
|
-
export function crabboxRun(slug, remoteCmd, opts = {}) {
|
|
456
|
-
findCrabbox();
|
|
457
|
-
const args = ['run', '--id', slug, '--reclaim'];
|
|
458
|
-
if (opts.fullResync)
|
|
459
|
-
args.push('--full-resync');
|
|
460
|
-
args.push('--', 'bash', '-lc', remoteCmd);
|
|
461
|
-
return new Promise((resolve) => {
|
|
462
|
-
const proc = spawn('crabbox', args, { env: crabboxEnv(opts), stdio: ['ignore', 'pipe', 'pipe'] });
|
|
463
|
-
const pump = (chunk) => {
|
|
464
|
-
const s = chunk.toString('utf-8');
|
|
465
|
-
if (opts.onData)
|
|
466
|
-
opts.onData(s);
|
|
467
|
-
else
|
|
468
|
-
process.stdout.write(s);
|
|
469
|
-
};
|
|
470
|
-
proc.stdout.on('data', pump);
|
|
471
|
-
proc.stderr.on('data', pump);
|
|
472
|
-
proc.on('error', () => resolve(null));
|
|
473
|
-
proc.on('close', (code) => resolve(code));
|
|
474
|
-
});
|
|
475
|
-
}
|
|
476
450
|
/**
|
|
477
451
|
* Upload `script` to the box via `crabbox run --script-stdin` and run it.
|
|
478
452
|
*
|
|
@@ -33,7 +33,7 @@ import type { AgentId } from '../types.js';
|
|
|
33
33
|
import { type CrabboxBox } from './cli.js';
|
|
34
34
|
import { type DetectedRuntime } from './runtimes.js';
|
|
35
35
|
/** Phase signal for a lease run, so the command layer can drive a progress UI. */
|
|
36
|
-
|
|
36
|
+
type LeasePhase = {
|
|
37
37
|
kind: 'warmup';
|
|
38
38
|
backend?: string;
|
|
39
39
|
} | {
|
|
@@ -46,7 +46,7 @@ export type LeasePhase = {
|
|
|
46
46
|
} | {
|
|
47
47
|
kind: 'teardown';
|
|
48
48
|
};
|
|
49
|
-
|
|
49
|
+
interface LeaseRunOptions {
|
|
50
50
|
agent: string;
|
|
51
51
|
prompt: string;
|
|
52
52
|
mode?: string;
|
|
@@ -110,7 +110,7 @@ export interface LeaseDispatchProfile {
|
|
|
110
110
|
provider?: string;
|
|
111
111
|
fallbackModel?: string;
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
interface LeaseRunResult {
|
|
114
114
|
box: CrabboxBox;
|
|
115
115
|
exitCode: number | null;
|
|
116
116
|
toreDown: boolean;
|
|
@@ -126,8 +126,6 @@ export interface LeaseRunResult {
|
|
|
126
126
|
export declare const LEASE_BOOTSTRAP_FAILED_CODE = 97;
|
|
127
127
|
/** Build a shell-safe, collision-resistant workspace id for one lease run. */
|
|
128
128
|
export declare function leaseWorkspaceId(repoRoot: string, startedAtMs?: number, pid?: number): string;
|
|
129
|
-
/** Isolated box-home path for one run, relative to the shared box user's home. */
|
|
130
|
-
export declare function leaseHomeDir(workspaceId: string): string;
|
|
131
129
|
/**
|
|
132
130
|
* Build the single bootstrap script run on the box: ensure agents-cli, install
|
|
133
131
|
* the picked runtime CLIs, write their credentials, run the agent, then shred
|
|
@@ -136,7 +134,7 @@ export declare function leaseHomeDir(workspaceId: string): string;
|
|
|
136
134
|
export declare function buildBootstrapScript(opts: LeaseRunOptions): string;
|
|
137
135
|
/** Untouched-for-this-long ⇒ no active run holds the box, so an expired one is a stray. */
|
|
138
136
|
export declare const STRAY_GRACE_SECS = 600;
|
|
139
|
-
|
|
137
|
+
interface StrayMatchOptions {
|
|
140
138
|
/** Pool the lease belongs to (defaults to DEFAULT_CRABBOX_PROFILE). */
|
|
141
139
|
profile?: string;
|
|
142
140
|
/** Network mode of the lease (default 'public'); a box is partitioned by it. */
|
|
@@ -160,3 +158,4 @@ export interface StrayMatchOptions {
|
|
|
160
158
|
*/
|
|
161
159
|
export declare function isExpiredPoolStray(box: CrabboxBox, opts: StrayMatchOptions): boolean;
|
|
162
160
|
export declare function leaseAndRun(opts: LeaseRunOptions): Promise<LeaseRunResult>;
|
|
161
|
+
export {};
|
|
@@ -55,7 +55,7 @@ export function leaseWorkspaceId(repoRoot, startedAtMs = Date.now(), pid = proce
|
|
|
55
55
|
return `${safeRepo}-${startedAtMs.toString(36)}-${pid.toString(36)}`;
|
|
56
56
|
}
|
|
57
57
|
/** Isolated box-home path for one run, relative to the shared box user's home. */
|
|
58
|
-
|
|
58
|
+
function leaseHomeDir(workspaceId) {
|
|
59
59
|
return `lease-homes/${workspaceId}`;
|
|
60
60
|
}
|
|
61
61
|
function profileRemotePath(name) {
|
|
@@ -61,7 +61,7 @@ export declare function createSpinner(opts?: {
|
|
|
61
61
|
enabled?: boolean;
|
|
62
62
|
intervalMs?: number;
|
|
63
63
|
}): Spinner;
|
|
64
|
-
|
|
64
|
+
interface LeaseOutputRouter {
|
|
65
65
|
/** Feed a raw chunk of the crabbox run's combined stdout/stderr. */
|
|
66
66
|
push(chunk: string): void;
|
|
67
67
|
/** Flush any buffered partial line (call once the stream closes). */
|
|
@@ -91,3 +91,4 @@ export declare function createLeaseOutputRouter(cb: {
|
|
|
91
91
|
marker?: string;
|
|
92
92
|
now?: () => number;
|
|
93
93
|
}): LeaseOutputRouter;
|
|
94
|
+
export {};
|
|
@@ -22,9 +22,7 @@
|
|
|
22
22
|
* ride the box-side bootstrap script (that only echoes the `copy-setup` progress
|
|
23
23
|
* sentinel — see `buildBootstrapScript`).
|
|
24
24
|
*/
|
|
25
|
-
|
|
26
|
-
export declare const REMOTE_AGENTS_DIR = ".agents/";
|
|
27
|
-
export interface CopySetupOptions {
|
|
25
|
+
interface CopySetupOptions {
|
|
28
26
|
/** crabbox box slug to push to — its per-lease ssh key does the auth. */
|
|
29
27
|
slug: string;
|
|
30
28
|
/** Secrets bundle whose env the ssh/rsync children inherit (crabbox parity). */
|
|
@@ -90,3 +88,4 @@ export declare function buildSetupRsyncArgs(opts: {
|
|
|
90
88
|
* the returned exit codes.
|
|
91
89
|
*/
|
|
92
90
|
export declare function copySetupToBox(opts: CopySetupOptions): Promise<CopySetupResult>;
|
|
91
|
+
export {};
|
|
@@ -29,7 +29,7 @@ import * as path from 'path';
|
|
|
29
29
|
import { getUserAgentsDir } from '../state.js';
|
|
30
30
|
import { crabboxEnv, crabboxSshArgv } from './cli.js';
|
|
31
31
|
/** Remote path (relative to the box user's home) the tracked config lands in. */
|
|
32
|
-
|
|
32
|
+
const REMOTE_AGENTS_DIR = '.agents/';
|
|
33
33
|
/** Top-level paths that must never be pushed, even if somehow tracked. */
|
|
34
34
|
const NEVER_COPY = new Set(['.claude', '.claude.json']);
|
|
35
35
|
/**
|
|
@@ -28,7 +28,7 @@ export declare const USAGE_STATE_TICK_MS = 60000;
|
|
|
28
28
|
export declare const AUTH_STATE_TICK_MS: number;
|
|
29
29
|
type AccountAuthRefresh = (signal: AbortSignal) => Promise<AuthProbeRow[] | void>;
|
|
30
30
|
type AccountTransitionNotifier = (transition: DeadAccountTransition) => Promise<void>;
|
|
31
|
-
|
|
31
|
+
interface DeadAccountTransition {
|
|
32
32
|
agent: AuthProbeRow['agent'];
|
|
33
33
|
/** Display label (email / account name) — presentation only, never a key. */
|
|
34
34
|
account: string;
|
|
@@ -35,7 +35,7 @@ import type { DaemonServiceId } from '../daemon-services.js';
|
|
|
35
35
|
* through here, so what ships is what is asserted.
|
|
36
36
|
*/
|
|
37
37
|
export declare function buildAttentionNotification(item: AttentionItem, session: ActiveSession): DesktopNotification | undefined;
|
|
38
|
-
|
|
38
|
+
interface AttentionNotifyServiceOptions {
|
|
39
39
|
/** Live-session source (default: the real active-session query). Injected in tests. */
|
|
40
40
|
getSessions?: () => Promise<ActiveSession[]>;
|
|
41
41
|
/** Notifier (default: the real desktop notifier). Injected in tests to capture posts. */
|
|
@@ -67,3 +67,4 @@ export declare class AttentionNotifyService extends BasePeriodicService {
|
|
|
67
67
|
private markNotified;
|
|
68
68
|
private pruneLedger;
|
|
69
69
|
}
|
|
70
|
+
export {};
|
|
@@ -24,7 +24,7 @@ import type { DaemonServiceId } from '../daemon-services.js';
|
|
|
24
24
|
* recovering from a wedge or an OS suspend the process survived.
|
|
25
25
|
*/
|
|
26
26
|
export declare const CATCHUP_TICK_MS: number;
|
|
27
|
-
|
|
27
|
+
interface CatchupServiceDeps {
|
|
28
28
|
/**
|
|
29
29
|
* Whether the routine scheduler is currently booted. When false (the
|
|
30
30
|
* `scheduler.enabled` gate is off), the pass no-ops — there is nothing to
|
|
@@ -49,3 +49,4 @@ export declare class CatchupService extends BasePeriodicService {
|
|
|
49
49
|
protected onStop(): Promise<void>;
|
|
50
50
|
protected onTick(_ctx: DaemonContext, signal: AbortSignal): Promise<void>;
|
|
51
51
|
}
|
|
52
|
+
export {};
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon lifecycle management for the routines scheduler.
|
|
3
|
-
*
|
|
4
|
-
* The daemon is a long-running process that holds a JobScheduler and
|
|
5
|
-
* triggers jobs on their cron schedules. It can be managed via launchd
|
|
6
|
-
* (macOS), systemd (Linux), or as a plain detached process. PID tracking,
|
|
7
|
-
* log output, reload (SIGHUP), and graceful shutdown are handled here.
|
|
8
|
-
*/
|
|
9
1
|
import { isolatedHomeSuffix } from '../service-manifest.js';
|
|
10
2
|
import { getAgentsBinPath } from '../cli-entry.js';
|
|
11
3
|
import type { ServiceHealth } from './service.js';
|
|
@@ -75,7 +67,7 @@ export declare const DAEMON_AUTOSTART_FAILURE_LIMIT = 5;
|
|
|
75
67
|
* !running + enabled → boot (gate flipped on since boot)
|
|
76
68
|
* !running + !enabled → none (stay dark)
|
|
77
69
|
*/
|
|
78
|
-
|
|
70
|
+
type SchedulerGateTransition = 'reload' | 'stop' | 'boot' | 'none';
|
|
79
71
|
export declare function schedulerGateTransition(running: boolean, enabled: boolean): SchedulerGateTransition;
|
|
80
72
|
/**
|
|
81
73
|
* Wrap an async routine so it runs AT MOST ONCE, however many callers fire it.
|
|
@@ -112,7 +104,7 @@ export declare function readDaemonPid(daemonDir?: string): number | null;
|
|
|
112
104
|
export declare function writeDaemonPid(pid: number): void;
|
|
113
105
|
/** Remove the daemon PID file. */
|
|
114
106
|
export declare function removeDaemonPid(): void;
|
|
115
|
-
|
|
107
|
+
interface DaemonHeartbeat {
|
|
116
108
|
lastTick: string;
|
|
117
109
|
pid: number;
|
|
118
110
|
}
|
|
@@ -417,7 +409,7 @@ export declare function startDetached(opts?: StartDetachedOptions): {
|
|
|
417
409
|
* One piece of daemon state that a graceful `handleShutdown` removes and an
|
|
418
410
|
* escalated kill leaves behind (RUSH-2421).
|
|
419
411
|
*/
|
|
420
|
-
|
|
412
|
+
interface StopResidueArtifact {
|
|
421
413
|
label: string;
|
|
422
414
|
present: boolean;
|
|
423
415
|
/** The file names a live owner, including a stopped target that survived. */
|
|
@@ -446,7 +438,7 @@ export declare function stopResidueArtifacts(stoppedPid: number | null, survivor
|
|
|
446
438
|
* in-flight routine children that survive deliberately (SING-11a) and are
|
|
447
439
|
* reported, never killed.
|
|
448
440
|
*/
|
|
449
|
-
|
|
441
|
+
interface DaemonStopResult {
|
|
450
442
|
ok: boolean;
|
|
451
443
|
stoppedPid: number | null;
|
|
452
444
|
escalated: boolean;
|