@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
|
@@ -4,10 +4,8 @@ import type { AgentId, Meta, NativeAccountRecord } from './types.js';
|
|
|
4
4
|
import { type DeviceProfile } from './devices/registry.js';
|
|
5
5
|
import { type SharedAuthStatus } from './fleet-shared-state.js';
|
|
6
6
|
import { selfConfiguredDeviceRole } from './device-config.js';
|
|
7
|
-
import { AUTH_STORE_ALIAS,
|
|
8
|
-
export { AUTH_STORE_ALIAS,
|
|
9
|
-
/** Filter `names` down to the ones the active resource profile allows for `secrets`. */
|
|
10
|
-
export declare function filterBundleNamesForActiveProfile(names: string[]): string[];
|
|
7
|
+
import { AUTH_STORE_ALIAS, AUTH_BUNDLE_BACKEND, RESERVED_BUNDLE_NAMES, isReservedBundleName, ReservedBundleWrongBackendError, assertReservedAuthBackend, isReservedBundleBackendError, RESERVED_STORES, reservedStoreName, isReservedStoreName, assertStorableCredentialKind, inspectReservedAuthBundle, type StorableCredentialKind } from './reserved-stores.js';
|
|
8
|
+
export { AUTH_STORE_ALIAS, AUTH_BUNDLE_BACKEND, RESERVED_BUNDLE_NAMES, isReservedBundleName, ReservedBundleWrongBackendError, assertReservedAuthBackend, isReservedBundleBackendError, RESERVED_STORES, reservedStoreName, isReservedStoreName, assertStorableCredentialKind, inspectReservedAuthBundle, type StorableCredentialKind, };
|
|
11
9
|
/**
|
|
12
10
|
* `SecretsContext.allowedBundles` for the active resource profile, or
|
|
13
11
|
* `undefined` when no profile is active (full trust — the client's default).
|
|
@@ -36,15 +34,13 @@ export declare function assertRemoteBundleFlagsUnsupported(bundleName: string, h
|
|
|
36
34
|
keysFlag: string;
|
|
37
35
|
allowExpiredFlag: string;
|
|
38
36
|
}): void;
|
|
39
|
-
/** Each import/read-back SSH operation gets this deadline plus the SSH hard-kill grace. */
|
|
40
|
-
export declare const AUTH_SYNC_PUSH_DEADLINE_MS = 20000;
|
|
41
37
|
export interface AuthSyncDevice {
|
|
42
38
|
name: string;
|
|
43
39
|
reachable: boolean;
|
|
44
40
|
pinned: boolean;
|
|
45
41
|
remoteAuth: SharedAuthStatus | 'unknown';
|
|
46
42
|
}
|
|
47
|
-
|
|
43
|
+
type AuthSyncPlanItem = {
|
|
48
44
|
action: 'push';
|
|
49
45
|
device: string;
|
|
50
46
|
} | {
|
|
@@ -53,7 +49,7 @@ export type AuthSyncPlanItem = {
|
|
|
53
49
|
reason: string;
|
|
54
50
|
};
|
|
55
51
|
export declare function planAuthBundlePush(localAuthOk: boolean, localIsPublisher: boolean, devices: AuthSyncDevice[]): AuthSyncPlanItem[];
|
|
56
|
-
|
|
52
|
+
interface AuthSyncResult {
|
|
57
53
|
publisher: string | null;
|
|
58
54
|
stateChanged: boolean;
|
|
59
55
|
pushed: string[];
|
|
@@ -66,7 +62,7 @@ export interface AuthSyncResult {
|
|
|
66
62
|
message: string;
|
|
67
63
|
}>;
|
|
68
64
|
}
|
|
69
|
-
|
|
65
|
+
interface AuthSyncDeps {
|
|
70
66
|
inspectLocal?: () => {
|
|
71
67
|
exists: boolean;
|
|
72
68
|
ok: boolean;
|
|
@@ -90,7 +86,7 @@ export interface AuthSyncDeps {
|
|
|
90
86
|
* over `zion`, and zion then skipped every peer as a non-publisher.
|
|
91
87
|
*/
|
|
92
88
|
export declare function electPublisher(ready: readonly string[], roleOf: (name: string) => ReturnType<typeof selfConfiguredDeviceRole>): string | null;
|
|
93
|
-
|
|
89
|
+
interface PublishAuthVerdictOptions {
|
|
94
90
|
inspectLocal?: () => {
|
|
95
91
|
exists: boolean;
|
|
96
92
|
ok: boolean;
|
|
@@ -98,7 +94,7 @@ export interface PublishAuthVerdictOptions {
|
|
|
98
94
|
localName?: string;
|
|
99
95
|
userAgentsDir?: string;
|
|
100
96
|
}
|
|
101
|
-
|
|
97
|
+
interface PublishAuthVerdictResult {
|
|
102
98
|
device: string;
|
|
103
99
|
status: SharedAuthStatus;
|
|
104
100
|
changed: boolean;
|
|
@@ -135,7 +131,7 @@ export interface ReservedSyncPeer {
|
|
|
135
131
|
/** bundle -> keys the peer already holds at the current fingerprint. Absent ⇒ none known. */
|
|
136
132
|
presentKeys: Record<string, ReadonlySet<string>>;
|
|
137
133
|
}
|
|
138
|
-
|
|
134
|
+
type ReservedSyncPlanItem = {
|
|
139
135
|
action: 'push';
|
|
140
136
|
device: string;
|
|
141
137
|
bundle: string;
|
|
@@ -160,7 +156,6 @@ export declare function planReservedStoreSync(accounts: ReservedSyncAccount[], p
|
|
|
160
156
|
* `workerCredential`) is not a sync target.
|
|
161
157
|
*/
|
|
162
158
|
export declare function reservedSyncTargets(meta: Pick<Meta, 'accounts' | 'deviceAccounts'>): ReservedSyncAccount[];
|
|
163
|
-
export declare function readDeliveryMemo(root?: string): Record<string, string>;
|
|
164
159
|
/**
|
|
165
160
|
* The keys a peer is KNOWN to hold, per bundle, from what we have delivered to it
|
|
166
161
|
* (memo, matched by fingerprint) plus the coarse legacy-`auth` verdict: a peer
|
|
@@ -169,7 +164,7 @@ export declare function readDeliveryMemo(root?: string): Record<string, string>;
|
|
|
169
164
|
* from the memo alone -- which is what makes a newly-added reserved account push.
|
|
170
165
|
*/
|
|
171
166
|
export declare function peerPresentKeys(peer: string, accounts: ReservedSyncAccount[], memo: Record<string, string>, legacyAuthReady: boolean): Record<string, ReadonlySet<string>>;
|
|
172
|
-
|
|
167
|
+
interface ReservedStoreSyncResult {
|
|
173
168
|
publisher: string | null;
|
|
174
169
|
/** Legacy raw reserved items adopted into their bundle on this box before planning (local repair). */
|
|
175
170
|
adopted: Array<{
|
|
@@ -190,7 +185,7 @@ export interface ReservedStoreSyncResult {
|
|
|
190
185
|
message: string;
|
|
191
186
|
}>;
|
|
192
187
|
}
|
|
193
|
-
|
|
188
|
+
interface ReservedStoreSyncDeps {
|
|
194
189
|
listDevices?: () => DeviceProfile[];
|
|
195
190
|
localName?: string;
|
|
196
191
|
userAgentsDir?: string;
|
|
@@ -224,7 +219,7 @@ export interface ReservedStoreSyncDeps {
|
|
|
224
219
|
* there is no second scheduler. The daemon runs this each tick.
|
|
225
220
|
*/
|
|
226
221
|
export declare function syncReservedStores(deps?: ReservedStoreSyncDeps): Promise<ReservedStoreSyncResult>;
|
|
227
|
-
|
|
222
|
+
interface ReconcileWorkerSlotsResult {
|
|
228
223
|
provisioned: string[];
|
|
229
224
|
skipped: Array<{
|
|
230
225
|
accountId: string;
|
|
@@ -235,7 +230,7 @@ export interface ReconcileWorkerSlotsResult {
|
|
|
235
230
|
message: string;
|
|
236
231
|
}>;
|
|
237
232
|
}
|
|
238
|
-
|
|
233
|
+
interface ReconcileWorkerSlotsDeps {
|
|
239
234
|
selfRole?: ReturnType<typeof selfConfiguredDeviceRole>;
|
|
240
235
|
readMetaFn?: () => Pick<Meta, 'accounts' | 'deviceAccounts'>;
|
|
241
236
|
hasLocalKey?: (bundle: string, key: string) => boolean;
|
|
@@ -21,7 +21,7 @@ import { getCacheDir, getUserAgentsDir, readMeta } from './state.js';
|
|
|
21
21
|
import { listNativeAccounts, readSlots } from './account-registry.js';
|
|
22
22
|
import { claudeAccountTokenKey, isClaudeWorkerHomeSeeded, provisionWorkerSlot, readReservedCredential } from './claude-account-token.js';
|
|
23
23
|
import { configuredDeviceRole, isHeadedDeviceRole, selfConfiguredDeviceRole } from './device-config.js';
|
|
24
|
-
import { AUTH_STORE_ALIAS,
|
|
24
|
+
import { AUTH_STORE_ALIAS, AUTH_BUNDLE_BACKEND, RESERVED_BUNDLE_NAMES, isReservedBundleName, ReservedBundleWrongBackendError, assertReservedAuthBackend, isReservedBundleBackendError, RESERVED_STORES, reservedStoreName, isReservedStoreName, assertStorableCredentialKind, inspectReservedAuthBundle, } from './reserved-stores.js';
|
|
25
25
|
// --- reserved per-harness credential stores (PHNX-3940 / PHNX-3989) --------
|
|
26
26
|
//
|
|
27
27
|
// Re-exported from the leaf module `reserved-stores.ts` rather than declared
|
|
@@ -31,7 +31,7 @@ import { AUTH_STORE_ALIAS, AUTH_BUNDLE_NAME, AUTH_BUNDLE_BACKEND, RESERVED_BUNDL
|
|
|
31
31
|
// ReferenceError under real ESM evaluation order, outside vitest's
|
|
32
32
|
// mock-tolerant transform). Keep the public surface unchanged for existing
|
|
33
33
|
// importers of `secrets-policy.js`.
|
|
34
|
-
export { AUTH_STORE_ALIAS,
|
|
34
|
+
export { AUTH_STORE_ALIAS, AUTH_BUNDLE_BACKEND, RESERVED_BUNDLE_NAMES, isReservedBundleName, ReservedBundleWrongBackendError, assertReservedAuthBackend, isReservedBundleBackendError, RESERVED_STORES, reservedStoreName, isReservedStoreName, assertStorableCredentialKind, inspectReservedAuthBundle, };
|
|
35
35
|
// --- resource-profile -> allowedBundles (CTX-1) -----------------------------
|
|
36
36
|
//
|
|
37
37
|
// A resource profile scopes WHICH bundle names a run may reach. The standalone
|
|
@@ -40,7 +40,7 @@ export { AUTH_STORE_ALIAS, AUTH_BUNDLE_NAME, AUTH_BUNDLE_BACKEND, RESERVED_BUNDL
|
|
|
40
40
|
// every bounded request. Absent (no active profile) means full trust, matching
|
|
41
41
|
// the client's own documented default.
|
|
42
42
|
/** Filter `names` down to the ones the active resource profile allows for `secrets`. */
|
|
43
|
-
|
|
43
|
+
function filterBundleNamesForActiveProfile(names) {
|
|
44
44
|
return filterNamesForActiveResourceProfile('secrets', names);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
@@ -98,7 +98,7 @@ export function assertRemoteBundleFlagsUnsupported(bundleName, host, opts, flagL
|
|
|
98
98
|
// async and kill-bounded so it never blocks the daemon event loop.
|
|
99
99
|
// ---------------------------------------------------------------------------
|
|
100
100
|
/** Each import/read-back SSH operation gets this deadline plus the SSH hard-kill grace. */
|
|
101
|
-
|
|
101
|
+
const AUTH_SYNC_PUSH_DEADLINE_MS = 20_000;
|
|
102
102
|
export function planAuthBundlePush(localAuthOk, localIsPublisher, devices) {
|
|
103
103
|
if (!localAuthOk) {
|
|
104
104
|
return devices.map((device) => ({ action: 'skip', device: device.name, reason: 'no local file-backed auth bundle' }));
|
|
@@ -332,7 +332,7 @@ function deliveryMemoPath(root = getCacheDir()) {
|
|
|
332
332
|
function memoKey(peer, bundle, key) {
|
|
333
333
|
return `${normalizeHost(peer)} ${bundle} ${key}`;
|
|
334
334
|
}
|
|
335
|
-
|
|
335
|
+
function readDeliveryMemo(root) {
|
|
336
336
|
try {
|
|
337
337
|
const parsed = JSON.parse(fs.readFileSync(deliveryMemoPath(root), 'utf-8'));
|
|
338
338
|
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
|
|
@@ -29,8 +29,8 @@ export type BundleValue = string | {
|
|
|
29
29
|
};
|
|
30
30
|
/** Remote (bundle@host) push destination backend. */
|
|
31
31
|
export type RemoteBackend = 'keychain' | 'file';
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
declare const SECRET_TYPES: readonly ["api-key", "token", "password", "url", "database-url", "ssh-key", "certificate", "webhook", "note"];
|
|
33
|
+
type SecretType = (typeof SECRET_TYPES)[number];
|
|
34
34
|
/** Per-secret metadata; absent fields are omitted at write time. */
|
|
35
35
|
export interface VarMeta {
|
|
36
36
|
type?: SecretType;
|
|
@@ -194,3 +194,4 @@ export interface RcSecretFinding {
|
|
|
194
194
|
/** The file-store master passphrase gets called out separately. */
|
|
195
195
|
isMasterPassphrase: boolean;
|
|
196
196
|
}
|
|
197
|
+
export {};
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* `secrets-client.ts` docblock).
|
|
12
12
|
*/
|
|
13
13
|
// --- bundle document ---------------------------------------------------
|
|
14
|
-
|
|
14
|
+
const SECRET_TYPES = [
|
|
15
15
|
'api-key',
|
|
16
16
|
'token',
|
|
17
17
|
'password',
|
|
@@ -22,3 +22,4 @@ export const SECRET_TYPES = [
|
|
|
22
22
|
'webhook',
|
|
23
23
|
'note',
|
|
24
24
|
];
|
|
25
|
+
export {};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// ENOTEMPTY the sweep exists to prevent, and nothing runs `agents upgrade` to
|
|
10
10
|
// trigger that sweep in the meantime. Periodic cadence closes that gap
|
|
11
11
|
// fleet-wide (via the daemon's self-heal service) and on demand via
|
|
12
|
-
// `agents
|
|
12
|
+
// `agents sync`.
|
|
13
13
|
//
|
|
14
14
|
// The age guard is load-bearing: a staging dir can be legitimately mid-write
|
|
15
15
|
// by a CONCURRENT upgrade this instant. Only a dir older than the guard is
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { HealCheck, HealCheckId, HealCadence, SelfHealReport } from './types.js';
|
|
2
2
|
export declare const HEAL_CHECKS: HealCheck[];
|
|
3
|
-
|
|
3
|
+
interface SelfHealOptions {
|
|
4
4
|
/** Restrict to these check ids; omit to run every registered check. */
|
|
5
5
|
checks?: HealCheckId[];
|
|
6
6
|
/** Only run checks whose cadence is in this set (daemon scheduling). */
|
|
7
7
|
cadences?: HealCadence[];
|
|
8
|
-
/** 'safe' (daemon default) or 'full' (
|
|
8
|
+
/** 'safe' (daemon default) or 'full' (agents sync). Default 'safe'. */
|
|
9
9
|
mode?: 'safe' | 'full';
|
|
10
10
|
/** Detect only — never write. Default false. */
|
|
11
11
|
dryRun?: boolean;
|
|
@@ -20,3 +20,4 @@ export declare function selfHealChangedAnything(report: SelfHealReport): boolean
|
|
|
20
20
|
export declare function selfHealNeedsAttention(report: SelfHealReport): boolean;
|
|
21
21
|
/** One-line human summary, e.g. "shims: 2 fixed; path: 1 fixed". */
|
|
22
22
|
export declare function summarizeSelfHeal(report: SelfHealReport): string;
|
|
23
|
+
export {};
|
|
@@ -2,7 +2,7 @@ export type HealCheckId = 'resources' | 'hook-runtime' | 'hook-manifest' | 'shim
|
|
|
2
2
|
/** When the daemon schedules a check. */
|
|
3
3
|
export type HealCadence = 'startup' | 'frequent' | 'periodic';
|
|
4
4
|
export interface HealCtx {
|
|
5
|
-
/** 'safe' = daemon (low-risk only); 'full' =
|
|
5
|
+
/** 'safe' = daemon (low-risk only); 'full' = agents sync (everything). */
|
|
6
6
|
mode: 'safe' | 'full';
|
|
7
7
|
/** Detect only — never write. Powers `agents doctor` (read-only) and previews. */
|
|
8
8
|
dryRun: boolean;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// when `ctx.dryRun`), mirroring the existing resource heal (heal.ts) which computes
|
|
11
11
|
// and applies together. `mode` gates how aggressive a repair may be: 'safe' (the
|
|
12
12
|
// daemon default) fixes only low-risk drift and merely reports risky conditions;
|
|
13
|
-
// 'full' (`agents
|
|
13
|
+
// 'full' (`agents sync`) applies everything.
|
|
14
14
|
/** Convenience: an all-clear result. */
|
|
15
15
|
export function okResult() {
|
|
16
16
|
return { fixed: [], needsAttention: [], ok: true };
|
|
@@ -307,7 +307,7 @@ export interface MultiInstallInventoryEntry {
|
|
|
307
307
|
/** True for the copy that is currently executing. */
|
|
308
308
|
running: boolean;
|
|
309
309
|
/**
|
|
310
|
-
* True when a bare `agents
|
|
310
|
+
* True when a bare `agents sync` deletes this copy (RUSH-2415:
|
|
311
311
|
* npx-cache / unsafe-legacy / pre-1.22.30 with a fixed peer). False for the
|
|
312
312
|
* running copy and for any duplicate --fix will not touch — a healthy
|
|
313
313
|
* >=1.22.30 peer, or a pre-1.22.30 copy with no fixed peer to fall back to;
|
|
@@ -317,7 +317,7 @@ export interface MultiInstallInventoryEntry {
|
|
|
317
317
|
}
|
|
318
318
|
/**
|
|
319
319
|
* The exact shell command that removes the install at `packageRoot` by hand —
|
|
320
|
-
* the remedy for duplicates `
|
|
320
|
+
* the remedy for duplicates `agents sync` deliberately will not purge
|
|
321
321
|
* (RUSH-2705). `--prefix` pins the target tree no matter which npm binary
|
|
322
322
|
* PATH resolves, mirroring installPackageIntoPrefix.
|
|
323
323
|
*/
|
|
@@ -347,7 +347,7 @@ export declare function isNpxCacheInstall(packageRoot: string): boolean;
|
|
|
347
347
|
*/
|
|
348
348
|
export declare function isTouchIdStormFixedVersion(version: string): boolean;
|
|
349
349
|
/**
|
|
350
|
-
* Classify discovered installs that
|
|
350
|
+
* Classify discovered installs that agents sync / upgrade may delete.
|
|
351
351
|
*
|
|
352
352
|
* Never marks the running package root. Auto-purge is limited to copies that
|
|
353
353
|
* cannot be the intended primary install:
|
|
@@ -371,7 +371,7 @@ export declare function purgeRemovableAgentsCliInstalls(candidates: RemovableAge
|
|
|
371
371
|
dryRun?: boolean;
|
|
372
372
|
runningRoot?: string;
|
|
373
373
|
}): PurgeRemovableInstallsResult;
|
|
374
|
-
/** A detected duplicate that `
|
|
374
|
+
/** A detected duplicate that `agents sync` will not purge (RUSH-2705). */
|
|
375
375
|
export interface UnresolvedDuplicateInstall {
|
|
376
376
|
packageRoot: string;
|
|
377
377
|
version: string;
|
|
@@ -393,7 +393,7 @@ export interface RemediateStaleInstallsResult extends PurgeRemovableInstallsResu
|
|
|
393
393
|
unresolved: UnresolvedDuplicateInstall[];
|
|
394
394
|
}
|
|
395
395
|
/**
|
|
396
|
-
* Scan + classify + purge in one call. Used by `agents
|
|
396
|
+
* Scan + classify + purge in one call. Used by `agents sync` and
|
|
397
397
|
* `agents upgrade` so both paths remediate the same set of latent copies.
|
|
398
398
|
*/
|
|
399
399
|
export declare function remediateStaleAgentsCliInstalls(opts: {
|
package/dist/lib/self-update.js
CHANGED
|
@@ -669,7 +669,7 @@ function withRunningInstall(installs, runningRoot, runningVersion) {
|
|
|
669
669
|
}
|
|
670
670
|
/**
|
|
671
671
|
* The exact shell command that removes the install at `packageRoot` by hand —
|
|
672
|
-
* the remedy for duplicates `
|
|
672
|
+
* the remedy for duplicates `agents sync` deliberately will not purge
|
|
673
673
|
* (RUSH-2705). `--prefix` pins the target tree no matter which npm binary
|
|
674
674
|
* PATH resolves, mirroring installPackageIntoPrefix.
|
|
675
675
|
*/
|
|
@@ -720,7 +720,7 @@ export function buildMultiInstallInventory(runningRoot, runningVersion, installs
|
|
|
720
720
|
/** True when the package root lives under npm's `_npx` cache (ephemeral runs). */
|
|
721
721
|
export function isNpxCacheInstall(packageRoot) {
|
|
722
722
|
// Split on either separator so a POSIX-shaped path is still recognized when
|
|
723
|
-
// this runs on Windows (
|
|
723
|
+
// this runs on Windows (agents sync / tests pass forward literal `_npx`
|
|
724
724
|
// paths from other boxes). `path.sep` alone missed `/home/…/_npx/…` on win32.
|
|
725
725
|
const parts = packageRoot.split(/[\\/]/);
|
|
726
726
|
return parts.includes('_npx');
|
|
@@ -741,7 +741,7 @@ export function isTouchIdStormFixedVersion(version) {
|
|
|
741
741
|
return compareVersions(version, TOUCH_ID_STORM_FIXED_SINCE) >= 0;
|
|
742
742
|
}
|
|
743
743
|
/**
|
|
744
|
-
* Classify discovered installs that
|
|
744
|
+
* Classify discovered installs that agents sync / upgrade may delete.
|
|
745
745
|
*
|
|
746
746
|
* Never marks the running package root. Auto-purge is limited to copies that
|
|
747
747
|
* cannot be the intended primary install:
|
|
@@ -866,7 +866,7 @@ export function purgeRemovableAgentsCliInstalls(candidates, opts = {}) {
|
|
|
866
866
|
return result;
|
|
867
867
|
}
|
|
868
868
|
/**
|
|
869
|
-
* Scan + classify + purge in one call. Used by `agents
|
|
869
|
+
* Scan + classify + purge in one call. Used by `agents sync` and
|
|
870
870
|
* `agents upgrade` so both paths remediate the same set of latent copies.
|
|
871
871
|
*/
|
|
872
872
|
export function remediateStaleAgentsCliInstalls(opts) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { writerProcessView } from './process-view.js';
|
|
1
2
|
/**
|
|
2
3
|
* Active-session detection across every context an agent can run in:
|
|
3
4
|
*
|
|
@@ -24,7 +25,7 @@ import { promisify } from 'util';
|
|
|
24
25
|
import { listActiveTasks } from '../cloud/store.js';
|
|
25
26
|
import { AgentManager } from '../teams/agents.js';
|
|
26
27
|
import { getTerminalsDir } from '../state.js';
|
|
27
|
-
import { readPidSessionEntry, listPidSessionEntries, prunePidSessionRegistry, sessionIdFromLivePid, isSessionIdShape, } from './pid-registry.js';
|
|
28
|
+
import { readLivePidSessionEntry as readPidSessionEntry, listPidSessionEntries, prunePidSessionRegistry, sessionIdFromLivePid, isSessionIdShape, } from './pid-registry.js';
|
|
28
29
|
import { readSessionActorRecord, writeSessionAliasRecord } from './actor-sidecar.js';
|
|
29
30
|
import { loadHookSessionIndex, resolveHookSessionRecord, readStateSessionRecord } from './hook-sessions.js';
|
|
30
31
|
import { buildClaudeLabelMap, getAgentSessionDirs } from './discover.js';
|
|
@@ -1696,8 +1697,9 @@ export async function listTmuxAgentSessions() {
|
|
|
1696
1697
|
// split) resolves to its own agent. Newest launch wins a pane (pid reuse), and
|
|
1697
1698
|
// only live pids count — a dead agent's stale entry can't light up its old pane.
|
|
1698
1699
|
const liveByPane = new Map();
|
|
1699
|
-
for (const
|
|
1700
|
-
|
|
1700
|
+
for (const recorded of listPidSessionEntries()) {
|
|
1701
|
+
const e = readPidSessionEntry(recorded.pid);
|
|
1702
|
+
if (!e?.tmuxPane)
|
|
1701
1703
|
continue;
|
|
1702
1704
|
const prev = liveByPane.get(e.tmuxPane);
|
|
1703
1705
|
if (!prev || e.startedAtMs > prev.startedAtMs)
|
|
@@ -1824,6 +1826,10 @@ export async function listTmuxAgentSessions() {
|
|
|
1824
1826
|
* terminal/headless row for the same session id.
|
|
1825
1827
|
*/
|
|
1826
1828
|
export async function getActiveSessions(opts = {}) {
|
|
1829
|
+
if (!writerProcessView()) {
|
|
1830
|
+
const { loadLocalActiveSessions } = await import('./session-cache.js');
|
|
1831
|
+
return (await loadLocalActiveSessions()).sessions;
|
|
1832
|
+
}
|
|
1827
1833
|
const [tmuxAgents, teams, terminals, cloud] = await Promise.all([
|
|
1828
1834
|
listTmuxAgentSessions().catch(() => []),
|
|
1829
1835
|
listTeamsActive({ localOnly: opts.localOnly }).catch(() => []),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SessionRunMode } from './types.js';
|
|
2
|
-
|
|
2
|
+
interface SessionActorRecord {
|
|
3
3
|
sessionId: string;
|
|
4
4
|
/** Resolved actor id (`resolveActor().id`) — the responsible human/agent. */
|
|
5
5
|
actor?: string;
|
|
@@ -36,7 +36,7 @@ export interface SessionActorRecord {
|
|
|
36
36
|
*/
|
|
37
37
|
export declare function writeSessionActorRecord(record: SessionActorRecord): void;
|
|
38
38
|
export declare function writeSessionAliasRecord(sessionId: string, alias: string): void;
|
|
39
|
-
|
|
39
|
+
type SessionAliasResolution = {
|
|
40
40
|
kind: 'resolved';
|
|
41
41
|
sessionId: string;
|
|
42
42
|
} | {
|
|
@@ -56,3 +56,4 @@ export declare function readSessionActorRecord(sessionId: string): SessionActorR
|
|
|
56
56
|
* yields an empty map.
|
|
57
57
|
*/
|
|
58
58
|
export declare function loadSessionActorIndex(): Map<string, SessionActorRecord>;
|
|
59
|
+
export {};
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
import type { SessionMeta, SessionArtifact } from './types.js';
|
|
9
9
|
/** Parse a session and return metadata for every file written or edited during it. */
|
|
10
10
|
export declare function discoverArtifacts(meta: SessionMeta): SessionArtifact[];
|
|
11
|
-
/** Refuse to load artifact files larger than this. Returns '' silently above the cap. */
|
|
12
|
-
export declare const ARTIFACT_MAX_BYTES = 50000000;
|
|
13
11
|
/** Read the current contents of an artifact file from disk. Rejects symlinks. */
|
|
14
12
|
export declare function readArtifact(artifact: SessionArtifact): string;
|
|
15
13
|
/** Resolve a user-provided name to an artifact by exact path, basename, or path suffix. */
|
|
@@ -65,7 +65,7 @@ export function discoverArtifacts(meta) {
|
|
|
65
65
|
return artifacts;
|
|
66
66
|
}
|
|
67
67
|
/** Refuse to load artifact files larger than this. Returns '' silently above the cap. */
|
|
68
|
-
|
|
68
|
+
const ARTIFACT_MAX_BYTES = 50_000_000;
|
|
69
69
|
/** Read the current contents of an artifact file from disk. Rejects symlinks. */
|
|
70
70
|
export function readArtifact(artifact) {
|
|
71
71
|
const stat = fs.lstatSync(artifact.path);
|
|
@@ -5,13 +5,7 @@
|
|
|
5
5
|
* summarize what actually happened instead of printing a wall of shell.
|
|
6
6
|
*/
|
|
7
7
|
export type BashCategory = 'vcs' | 'build-test' | 'install' | 'remote' | 'http' | 'media' | 'upscaling' | 'metadata' | 'probe' | 'search' | 'shell' | 'wait' | 'other';
|
|
8
|
-
|
|
9
|
-
category: BashCategory;
|
|
10
|
-
signal: 'high' | 'mid' | 'low';
|
|
11
|
-
action: string;
|
|
12
|
-
aliases?: string[];
|
|
13
|
-
}
|
|
14
|
-
export interface BashCommandInfo {
|
|
8
|
+
interface BashCommandInfo {
|
|
15
9
|
tool: string;
|
|
16
10
|
category: BashCategory;
|
|
17
11
|
subcommand: string;
|
|
@@ -66,3 +60,4 @@ export declare function detectBashMilestone(command: string): {
|
|
|
66
60
|
* Human-readable category label for renderers.
|
|
67
61
|
*/
|
|
68
62
|
export declare function categoryLabel(category: BashCategory): string;
|
|
63
|
+
export {};
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { type SyncAgentSpec } from './sync/agents.js';
|
|
21
21
|
export declare const BUNDLE_KIND = "agents-session-bundle";
|
|
22
|
-
export declare const BUNDLE_VERSION = 1;
|
|
23
22
|
/** First line of a bundle: what it is and how the bodies are encoded. */
|
|
24
23
|
export interface BundleHeader {
|
|
25
24
|
kind: typeof BUNDLE_KIND;
|
|
@@ -71,7 +70,7 @@ export interface FileToExport {
|
|
|
71
70
|
absPath: string;
|
|
72
71
|
label?: string;
|
|
73
72
|
}
|
|
74
|
-
|
|
73
|
+
interface BuildRecordOpts {
|
|
75
74
|
/** Scrub secrets from the body before hashing/sealing (default-on at the command layer). */
|
|
76
75
|
redact: boolean;
|
|
77
76
|
/** Non-null → seal each body with this key; null → plaintext bodies. */
|
|
@@ -85,8 +84,6 @@ export interface BuildRecordOpts {
|
|
|
85
84
|
}
|
|
86
85
|
/** Look up the sync spec for an agent id (undefined → agent not sync-representable). */
|
|
87
86
|
export declare function specForAgent(agentId: string): SyncAgentSpec | undefined;
|
|
88
|
-
/** True when an agent's sessions can be represented in a bundle (has a sync spec). */
|
|
89
|
-
export declare function isExportableAgent(agentId: string): boolean;
|
|
90
87
|
/**
|
|
91
88
|
* Read one file and turn it into a bundle record. The hash and size are always
|
|
92
89
|
* computed over the PLAINTEXT (post-redaction) body, so they equal what lands on
|
|
@@ -128,7 +125,7 @@ export interface ImportPlanItem {
|
|
|
128
125
|
targetPath: string;
|
|
129
126
|
status: ImportStatus;
|
|
130
127
|
}
|
|
131
|
-
|
|
128
|
+
interface PlanImportOpts {
|
|
132
129
|
/** Key to open encrypted record bodies (null → only plaintext bodies readable). */
|
|
133
130
|
decryptKey: Buffer | null;
|
|
134
131
|
}
|
|
@@ -152,7 +149,7 @@ export interface WriteResult {
|
|
|
152
149
|
/** Records for agents with no sync spec. */
|
|
153
150
|
unknown: number;
|
|
154
151
|
}
|
|
155
|
-
|
|
152
|
+
interface WriteImportOpts {
|
|
156
153
|
overwrite: boolean;
|
|
157
154
|
decryptKey: Buffer | null;
|
|
158
155
|
}
|
|
@@ -162,3 +159,4 @@ export interface WriteImportOpts {
|
|
|
162
159
|
* are counted and skipped.
|
|
163
160
|
*/
|
|
164
161
|
export declare function writeImport(plan: ImportPlanItem[], opts: WriteImportOpts): WriteResult;
|
|
162
|
+
export {};
|
|
@@ -24,7 +24,7 @@ import { SYNC_AGENTS, mirrorPath } from './sync/agents.js';
|
|
|
24
24
|
import { redactSecrets } from '../redact.js';
|
|
25
25
|
import { encryptTranscript, decryptTranscriptBody } from './sync/transcript-crypto.js';
|
|
26
26
|
export const BUNDLE_KIND = 'agents-session-bundle';
|
|
27
|
-
|
|
27
|
+
const BUNDLE_VERSION = 1;
|
|
28
28
|
/** SHA-256 of a file body, used for the bundle's dedup/conflict check on import. */
|
|
29
29
|
function hashContent(content) {
|
|
30
30
|
return crypto.createHash('sha256').update(content).digest('hex');
|
|
@@ -33,10 +33,6 @@ function hashContent(content) {
|
|
|
33
33
|
export function specForAgent(agentId) {
|
|
34
34
|
return SYNC_AGENTS.find(s => s.id === agentId);
|
|
35
35
|
}
|
|
36
|
-
/** True when an agent's sessions can be represented in a bundle (has a sync spec). */
|
|
37
|
-
export function isExportableAgent(agentId) {
|
|
38
|
-
return specForAgent(agentId) !== undefined;
|
|
39
|
-
}
|
|
40
36
|
/**
|
|
41
37
|
* Read one file and turn it into a bundle record. The hash and size are always
|
|
42
38
|
* computed over the PLAINTEXT (post-redaction) body, so they equal what lands on
|
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
* GET /api/v1/cloud-runs/:id/session.jsonl → raw captured jsonl
|
|
11
11
|
*/
|
|
12
12
|
import type { SessionMeta } from './types.js';
|
|
13
|
-
export declare function assertContained(candidate: string, rootDir: string): string;
|
|
14
|
-
export declare function validateCloudExecutionId(executionId: string): string;
|
|
15
13
|
/**
|
|
16
14
|
* List cloud executions the user has captured sessions for. Includes
|
|
17
15
|
* completed + needs_review + failed; an empty session_path means capture
|
|
@@ -28,5 +26,3 @@ export declare function discoverCloudSessions(options?: {
|
|
|
28
26
|
export declare function ensureCloudSessionCached(executionId: string, destPath?: string): Promise<string>;
|
|
29
27
|
/** True if filePath points into the cloud session cache dir. */
|
|
30
28
|
export declare function isCloudSessionPath(filePath: string): boolean;
|
|
31
|
-
/** Extract execution_id from a cloud cache path. */
|
|
32
|
-
export declare function executionIdFromCloudPath(filePath: string): string | null;
|
|
@@ -57,7 +57,7 @@ function agentToFormat(agent) {
|
|
|
57
57
|
return 'opencode';
|
|
58
58
|
return null;
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
function assertContained(candidate, rootDir) {
|
|
61
61
|
const root = path.resolve(rootDir);
|
|
62
62
|
const resolved = path.resolve(root, candidate);
|
|
63
63
|
if (!resolved.startsWith(root + path.sep)) {
|
|
@@ -65,7 +65,7 @@ export function assertContained(candidate, rootDir) {
|
|
|
65
65
|
}
|
|
66
66
|
return resolved;
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
function validateCloudExecutionId(executionId) {
|
|
69
69
|
if (!CLOUD_EXECUTION_ID_RE.test(executionId)) {
|
|
70
70
|
throw new Error(`Invalid cloud execution_id: ${JSON.stringify(executionId)}`);
|
|
71
71
|
}
|
|
@@ -145,16 +145,3 @@ export function isCloudSessionPath(filePath) {
|
|
|
145
145
|
const resolved = path.resolve(filePath);
|
|
146
146
|
return resolved.startsWith(root + path.sep);
|
|
147
147
|
}
|
|
148
|
-
/** Extract execution_id from a cloud cache path. */
|
|
149
|
-
export function executionIdFromCloudPath(filePath) {
|
|
150
|
-
if (!isCloudSessionPath(filePath))
|
|
151
|
-
return null;
|
|
152
|
-
const rel = path.relative(CLOUD_CACHE_DIR, filePath);
|
|
153
|
-
const parts = rel.split(path.sep);
|
|
154
|
-
try {
|
|
155
|
-
return parts[0] ? validateCloudExecutionId(parts[0]) : null;
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
}
|
package/dist/lib/session/db.d.ts
CHANGED
|
@@ -30,8 +30,9 @@ export declare const SCHEMA_VERSION = 50;
|
|
|
30
30
|
* genuine first-user-turn extractor was added.
|
|
31
31
|
* v4 (PHNX-3621 leftover) invalidates Grok rows stamped before the bounded
|
|
32
32
|
* chat_history.jsonl prefix read filled firstUserMessage.
|
|
33
|
+
* v5 (PHNX-3939) restores first-meta Codex fork ownership, including cold files.
|
|
33
34
|
*/
|
|
34
|
-
export declare const CONTENT_INDEX_VERSION =
|
|
35
|
+
export declare const CONTENT_INDEX_VERSION = 5;
|
|
35
36
|
/**
|
|
36
37
|
* Bumping this invalidates every cached facet row without touching the schema
|
|
37
38
|
* version, so a change to the extraction logic (a new metric, a corrected bucket)
|
package/dist/lib/session/db.js
CHANGED
|
@@ -16,7 +16,7 @@ import { query as queryEvents, queryToolUsageForSessions } from '../feed/events.
|
|
|
16
16
|
import { machineForSessionFile } from '../origin-machine.js';
|
|
17
17
|
import { loadSessionActorIndex, readSessionActorRecord } from './actor-sidecar.js';
|
|
18
18
|
import { scanEventToolCalls } from './tool-calls.js';
|
|
19
|
-
import { persistToolCalls, planEventToolResume, toolEvidenceSourcePath } from './tool-store.js';
|
|
19
|
+
import { persistToolCalls, planEventToolResume, purgeToolCalls, toolEvidenceSourcePath } from './tool-store.js';
|
|
20
20
|
import { buildClaudeAccountIndex, resolveClaudeAccount } from './claude-accounts.js';
|
|
21
21
|
import { extractBackgroundShells, extractSkills, extractSlashCommands, harnessTracksBackgroundShells, isSubAgentTool, } from './highlights.js';
|
|
22
22
|
import { resolveResource } from '../resources.js';
|
|
@@ -45,8 +45,9 @@ export const SCHEMA_VERSION = 50;
|
|
|
45
45
|
* genuine first-user-turn extractor was added.
|
|
46
46
|
* v4 (PHNX-3621 leftover) invalidates Grok rows stamped before the bounded
|
|
47
47
|
* chat_history.jsonl prefix read filled firstUserMessage.
|
|
48
|
+
* v5 (PHNX-3939) restores first-meta Codex fork ownership, including cold files.
|
|
48
49
|
*/
|
|
49
|
-
export const CONTENT_INDEX_VERSION =
|
|
50
|
+
export const CONTENT_INDEX_VERSION = 5;
|
|
50
51
|
/**
|
|
51
52
|
* Bump to force `agents sessions backfill resources` to re-derive every
|
|
52
53
|
* session's skill/slash-command tallies on its next run (resource_scan_ledger
|
|
@@ -1452,8 +1453,17 @@ export function getDB() {
|
|
|
1452
1453
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_mirror_synced ON sessions(mirror_synced_at)`);
|
|
1453
1454
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_routine_run_id ON sessions(routine_run_id)`);
|
|
1454
1455
|
const sessionColumns = db.prepare('PRAGMA table_info(sessions)').all();
|
|
1455
|
-
if (!sessionColumns.some(column => column.name ===
|
|
1456
|
-
|
|
1456
|
+
if (['account_id', 'phoenix_id'].some(name => !sessionColumns.some(column => column.name === name))) {
|
|
1457
|
+
// Partial upgrades can stamp the current version before every column exists.
|
|
1458
|
+
// Recheck under the writer lock so concurrent openers cannot add it twice.
|
|
1459
|
+
db.transaction(() => {
|
|
1460
|
+
const columns = db.prepare('PRAGMA table_info(sessions)').all();
|
|
1461
|
+
if (!columns.some(column => column.name === 'account_id'))
|
|
1462
|
+
db.exec('ALTER TABLE sessions ADD COLUMN account_id TEXT');
|
|
1463
|
+
if (!columns.some(column => column.name === 'phoenix_id'))
|
|
1464
|
+
db.exec('ALTER TABLE sessions ADD COLUMN phoenix_id TEXT');
|
|
1465
|
+
})();
|
|
1466
|
+
}
|
|
1457
1467
|
// Account attribution repair. Two ways a Claude row ends up wrong even at v33:
|
|
1458
1468
|
// an older CLI (whose INSERT does not name the column) writes NULL, and a DB
|
|
1459
1469
|
// migrated by a build that predates the "clear the stale email on a dark row" fix
|
|
@@ -2333,6 +2343,30 @@ export function upsertSession(meta, content, scan, assistantContent = '') {
|
|
|
2333
2343
|
});
|
|
2334
2344
|
txn();
|
|
2335
2345
|
}
|
|
2346
|
+
/** A verified Codex rollout has one native owner. An older last-meta scan may
|
|
2347
|
+
* have indexed its child bytes under the parent id. Reconcile only paths that
|
|
2348
|
+
* were successfully written, after the whole batch, so a real parent rollout
|
|
2349
|
+
* repaired in the same transaction keeps its own row regardless of scan order. */
|
|
2350
|
+
function reconcileCodexFileOwners(db, metas) {
|
|
2351
|
+
const owners = new Map(metas.filter(meta => meta.agent === 'codex' && meta.filePath).map(meta => [meta.filePath, meta.id]));
|
|
2352
|
+
const paths = [...owners.keys()];
|
|
2353
|
+
for (let i = 0; i < paths.length; i += 500) {
|
|
2354
|
+
const chunk = paths.slice(i, i + 500);
|
|
2355
|
+
const rows = db.prepare(`SELECT id, file_path FROM sessions WHERE agent = 'codex' AND file_path IN (${chunk.map(() => '?').join(',')})`)
|
|
2356
|
+
.all(...chunk);
|
|
2357
|
+
for (const row of rows) {
|
|
2358
|
+
if (owners.get(row.file_path) === row.id)
|
|
2359
|
+
continue;
|
|
2360
|
+
db.prepare('DELETE FROM sessions WHERE id = ?').run(row.id);
|
|
2361
|
+
for (const table of ['session_text', 'session_preview_cache', 'session_summaries', 'session_insights', 'session_topics', 'session_phenotypes', 'session_resource_usage', 'resource_scan_ledger']) {
|
|
2362
|
+
db.prepare(`DELETE FROM ${table} WHERE session_id = ?`).run(row.id);
|
|
2363
|
+
}
|
|
2364
|
+
// The tool ledger has a unique file path too; release the wrong binding
|
|
2365
|
+
// before the child evidence is persisted below. Transcript files stay put.
|
|
2366
|
+
purgeToolCalls(db, row.id);
|
|
2367
|
+
}
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2336
2370
|
/** Batch-upsert sessions with their FTS5 content and scan stamps in a single transaction. */
|
|
2337
2371
|
export function upsertSessionsBatch(entries) {
|
|
2338
2372
|
if (entries.length === 0)
|
|
@@ -2582,6 +2616,7 @@ export function upsertSessionsBatch(entries) {
|
|
|
2582
2616
|
}
|
|
2583
2617
|
}
|
|
2584
2618
|
}
|
|
2619
|
+
reconcileCodexFileOwners(db, writtenEntries.map(entry => entry.meta));
|
|
2585
2620
|
});
|
|
2586
2621
|
txn(enrichedEntries);
|
|
2587
2622
|
// Tool evidence shares the transcript parse above but owns an independent
|