@phnx-labs/agents-cli 1.22.38 → 1.22.40
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 +302 -0
- package/README.md +111 -70
- package/dist/bin/agents +0 -0
- package/dist/bootstrap.js +46 -27
- package/dist/browser.js +2 -2
- package/dist/cli/command-registry.d.ts +135 -0
- package/dist/cli/command-registry.js +260 -0
- package/dist/commands/accounts.d.ts +20 -0
- package/dist/commands/accounts.js +186 -25
- package/dist/commands/apply.d.ts +3 -3
- package/dist/commands/apply.js +20 -63
- package/dist/commands/browser.js +206 -94
- package/dist/commands/budget.d.ts +7 -6
- package/dist/commands/budget.js +8 -7
- package/dist/commands/cloud.js +17 -20
- package/dist/commands/commands.js +1 -1
- package/dist/commands/computer-actions.d.ts +1 -35
- package/dist/commands/computer-actions.js +13 -181
- package/dist/commands/computer.d.ts +28 -3
- package/dist/commands/computer.js +93 -65
- package/dist/commands/config.js +47 -4
- package/dist/commands/cost.d.ts +2 -1
- package/dist/commands/cost.js +7 -6
- package/dist/commands/daemon.js +151 -4
- package/dist/commands/detach.js +1 -1
- package/dist/commands/doctor.js +19 -11
- package/dist/commands/events.js +1 -1
- package/dist/commands/exec.d.ts +2 -50
- package/dist/commands/exec.js +161 -216
- package/dist/commands/factory.js +1 -1
- package/dist/commands/feed.d.ts +2 -2
- package/dist/commands/feed.js +9 -12
- package/dist/commands/fleet-capture.js +25 -27
- package/dist/commands/focus.d.ts +2 -3
- package/dist/commands/focus.js +34 -9
- package/dist/commands/go.js +15 -5
- package/dist/commands/harness.d.ts +3 -3
- package/dist/commands/harness.js +53 -5
- package/dist/commands/hooks.js +1 -1
- package/dist/commands/import.js +2 -2
- package/dist/commands/insights.d.ts +5 -5
- package/dist/commands/insights.js +15 -9
- package/dist/commands/inspect.d.ts +2 -3
- package/dist/commands/inspect.js +4 -16
- package/dist/commands/logs.d.ts +2 -2
- package/dist/commands/logs.js +9 -9
- package/dist/commands/mcp.js +2 -2
- package/dist/commands/memory.js +1 -1
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +7 -7
- package/dist/commands/mine.d.ts +11 -8
- package/dist/commands/mine.js +11 -10
- package/dist/commands/models.js +1 -1
- package/dist/commands/modes.js +1 -1
- package/dist/commands/monitors.js +23 -6
- package/dist/commands/output.d.ts +7 -6
- package/dist/commands/output.js +11 -10
- package/dist/commands/packages.js +4 -4
- package/dist/commands/perf.js +1 -1
- package/dist/commands/permissions.js +49 -32
- package/dist/commands/plugins.d.ts +1 -1
- package/dist/commands/plugins.js +3 -3
- package/dist/commands/profiles.d.ts +6 -9
- package/dist/commands/profiles.js +8 -321
- package/dist/commands/projects.d.ts +9 -0
- package/dist/commands/projects.js +140 -8
- package/dist/commands/prune.js +5 -13
- package/dist/commands/refresh-rules.js +1 -1
- package/dist/commands/repo.d.ts +5 -7
- package/dist/commands/repo.js +34 -18
- package/dist/commands/resource-view.js +4 -0
- package/dist/commands/resume.d.ts +11 -7
- package/dist/commands/resume.js +82 -98
- package/dist/commands/route.d.ts +12 -0
- package/dist/commands/route.js +261 -0
- package/dist/commands/routines.d.ts +2 -3
- package/dist/commands/routines.js +120 -145
- package/dist/commands/rules.js +1 -1
- package/dist/commands/run-account-picker.d.ts +1 -1
- package/dist/commands/run-account-picker.js +2 -2
- package/dist/commands/run-broadcast.d.ts +21 -0
- package/dist/commands/run-broadcast.js +89 -0
- package/dist/commands/run-cloud.js +1 -1
- package/dist/commands/secrets-vault.d.ts +10 -0
- package/dist/commands/{login.js → secrets-vault.js} +34 -14
- package/dist/commands/secrets.d.ts +4 -4
- package/dist/commands/secrets.js +72 -63
- package/dist/commands/sessions-backfill.js +1 -1
- package/dist/commands/sessions-browser.d.ts +1 -1
- package/dist/commands/sessions-browser.js +9 -5
- package/dist/commands/sessions-export.js +2 -2
- package/dist/commands/sessions-inject.js +4 -5
- package/dist/commands/sessions-migrate.js +16 -27
- package/dist/commands/sessions-picker.d.ts +13 -0
- package/dist/commands/sessions-picker.js +182 -8
- package/dist/commands/sessions-resume.d.ts +7 -3
- package/dist/commands/sessions-resume.js +81 -33
- package/dist/commands/sessions-stats.js +2 -2
- package/dist/commands/sessions.d.ts +75 -68
- package/dist/commands/sessions.js +142 -180
- package/dist/commands/setup-computer.js +1 -1
- package/dist/commands/setup-fleet.js +3 -0
- package/dist/commands/setup-mine.d.ts +7 -3
- package/dist/commands/setup-mine.js +13 -8
- package/dist/commands/setup-secrets.js +2 -2
- package/dist/commands/setup-watchdog.js +2 -2
- package/dist/commands/setup.js +7 -2
- package/dist/commands/share.d.ts +65 -0
- package/dist/commands/share.js +253 -20
- package/dist/commands/skills.js +3 -3
- package/dist/commands/snapshot.d.ts +2 -2
- package/dist/commands/snapshot.js +9 -9
- package/dist/commands/ssh.d.ts +1 -1
- package/dist/commands/ssh.js +318 -48
- package/dist/commands/subagents.js +1 -1
- package/dist/commands/sync.js +24 -9
- package/dist/commands/teams.d.ts +2 -2
- package/dist/commands/teams.js +9 -18
- package/dist/commands/tmux.js +5 -1
- package/dist/commands/trash.js +1 -1
- package/dist/commands/usage.d.ts +1 -1
- package/dist/commands/usage.js +2 -2
- package/dist/commands/utils.d.ts +4 -14
- package/dist/commands/utils.js +6 -27
- package/dist/commands/versions.js +2 -2
- package/dist/commands/view.d.ts +9 -77
- package/dist/commands/view.js +23 -8
- package/dist/commands/watchdog.js +1 -1
- package/dist/commands/webhook.js +11 -25
- package/dist/commands/workflows.js +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/account-capabilities.d.ts +39 -0
- package/dist/lib/account-capabilities.js +59 -0
- package/dist/lib/account-catalog.js +1 -1
- package/dist/lib/account-registry.d.ts +66 -0
- package/dist/lib/account-registry.js +151 -5
- package/dist/lib/{rotate.d.ts → accounting/rotate.d.ts} +4 -4
- package/dist/lib/{rotate.js → accounting/rotate.js} +8 -8
- package/dist/lib/{usage.d.ts → accounting/usage.d.ts} +4 -4
- package/dist/lib/{usage.js → accounting/usage.js} +11 -11
- package/dist/lib/agent-spec/provider.js +1 -1
- package/dist/lib/agents.d.ts +72 -4
- package/dist/lib/agents.js +231 -199
- package/dist/lib/answer-router.d.ts +2 -2
- package/dist/lib/ask-classifier.d.ts +1 -1
- package/dist/lib/ask-classifier.js +1 -1
- package/dist/lib/audit/log.js +1 -1
- package/dist/lib/auth-health.d.ts +1 -1
- package/dist/lib/auth-health.js +2 -2
- package/dist/lib/brand.js +1 -1
- package/dist/lib/browser/caller-identity.d.ts +28 -0
- package/dist/lib/browser/caller-identity.js +156 -0
- package/dist/lib/browser/cdp.js +1 -1
- package/dist/lib/browser/drivers/ssh.d.ts +1 -1
- package/dist/lib/browser/drivers/ssh.js +2 -2
- package/dist/lib/browser/hygiene.d.ts +10 -2
- package/dist/lib/browser/hygiene.js +7 -4
- package/dist/lib/browser/ipc.d.ts +22 -2
- package/dist/lib/browser/ipc.js +185 -21
- package/dist/lib/browser/profiles.d.ts +67 -3
- package/dist/lib/browser/profiles.js +129 -7
- package/dist/lib/browser/remote-control.d.ts +2 -2
- package/dist/lib/browser/remote-control.js +3 -3
- package/dist/lib/browser/runtime-state.d.ts +79 -0
- package/dist/lib/browser/runtime-state.js +119 -1
- package/dist/lib/browser/service.d.ts +113 -1
- package/dist/lib/browser/service.js +454 -40
- package/dist/lib/browser/sessions-list.d.ts +2 -1
- package/dist/lib/browser/sessions-list.js +4 -13
- package/dist/lib/browser/types.d.ts +18 -0
- package/dist/lib/budget/config.js +1 -1
- package/dist/lib/budget/ledger.js +1 -1
- package/dist/lib/byok-usage.js +1 -1
- package/dist/lib/capabilities.js +3 -15
- package/dist/lib/catchup.d.ts +1 -1
- package/dist/lib/catchup.js +1 -1
- package/dist/lib/cloud/dispatch.js +1 -1
- package/dist/lib/cloud/host.d.ts +3 -3
- package/dist/lib/cloud/host.js +5 -5
- package/dist/lib/cloud/rush.d.ts +9 -21
- package/dist/lib/cloud/rush.js +33 -120
- package/dist/lib/cloud/types.d.ts +2 -2
- package/dist/lib/commands.js +3 -13
- package/dist/lib/computer/actions.d.ts +36 -0
- package/dist/lib/computer/actions.js +162 -0
- package/dist/lib/computer/dispatch.d.ts +2 -2
- package/dist/lib/computer/dispatch.js +2 -2
- package/dist/lib/computer/sessions-list.d.ts +3 -3
- package/dist/lib/computer/sessions-list.js +2 -2
- package/dist/lib/config-keys.d.ts +12 -3
- package/dist/lib/config-keys.js +29 -6
- package/dist/lib/config-machine-keys.d.ts +4 -2
- package/dist/lib/config-machine-keys.js +6 -2
- package/dist/lib/crabbox/lease.js +9 -1
- package/dist/lib/crabbox/runtimes.d.ts +32 -7
- package/dist/lib/crabbox/runtimes.js +72 -30
- package/dist/lib/{daemon.d.ts → daemon/daemon.d.ts} +59 -1
- package/dist/lib/{daemon.js → daemon/daemon.js} +237 -49
- package/dist/lib/daemon-services.d.ts +1 -1
- package/dist/lib/daemon-services.js +5 -0
- package/dist/lib/daemon-ticks.d.ts +25 -0
- package/dist/lib/daemon-ticks.js +31 -1
- package/dist/lib/daemon-webhooks.d.ts +102 -0
- package/dist/lib/daemon-webhooks.js +210 -0
- package/dist/lib/device-config.d.ts +116 -72
- package/dist/lib/device-config.js +366 -132
- package/dist/lib/devices/config-migration.d.ts +29 -34
- package/dist/lib/devices/config-migration.js +209 -130
- package/dist/lib/devices/connect.d.ts +2 -2
- package/dist/lib/devices/connect.js +2 -2
- package/dist/lib/devices/discovery-policy.d.ts +30 -0
- package/dist/lib/devices/discovery-policy.js +101 -0
- package/dist/lib/devices/fleet-inventory.js +8 -3
- package/dist/lib/devices/harness-inventory.d.ts +1 -1
- package/dist/lib/devices/harness-inventory.js +12 -3
- package/dist/lib/devices/known-hosts.js +1 -1
- package/dist/lib/devices/pool.d.ts +61 -0
- package/dist/lib/devices/pool.js +83 -0
- package/dist/lib/devices/registry.d.ts +1 -1
- package/dist/lib/devices/registry.js +1 -1
- package/dist/lib/devices/resolve-profile.d.ts +2 -2
- package/dist/lib/devices/resolve-profile.js +2 -2
- package/dist/lib/devices/resolve-target.d.ts +1 -1
- package/dist/lib/devices/resolve-target.js +4 -4
- package/dist/lib/devices/self-host.d.ts +1 -1
- package/dist/lib/devices/self-host.js +3 -3
- package/dist/lib/devices/ssh-config.d.ts +1 -1
- package/dist/lib/devices/stats-cache.js +1 -1
- package/dist/lib/devices/sync.d.ts +3 -1
- package/dist/lib/devices/sync.js +3 -3
- package/dist/lib/doctor-diff.js +4 -4
- package/dist/lib/drift-sync.js +2 -2
- package/dist/lib/drift.js +2 -2
- package/dist/lib/event-families.d.ts +1 -1
- package/dist/lib/event-stream.d.ts +1 -1
- package/dist/lib/event-stream.js +2 -2
- package/dist/lib/events-ingest.js +2 -2
- package/dist/lib/exec.d.ts +8 -5
- package/dist/lib/exec.js +19 -13
- package/dist/lib/factory/snapshot.d.ts +1 -1
- package/dist/lib/factory/snapshot.js +1 -1
- package/dist/lib/{activity.d.ts → feed/activity.d.ts} +1 -1
- package/dist/lib/{activity.js → feed/activity.js} +7 -7
- package/dist/lib/{events.d.ts → feed/events.d.ts} +2 -2
- package/dist/lib/{events.js → feed/events.js} +5 -5
- package/dist/lib/{feed.js → feed/feed.js} +4 -4
- package/dist/lib/feed-outcome.d.ts +1 -1
- package/dist/lib/feed-policy.d.ts +1 -1
- package/dist/lib/feed-policy.js +1 -1
- package/dist/lib/feed-post.d.ts +1 -1
- package/dist/lib/feed-post.js +1 -1
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -6
- package/dist/lib/fleet/apply.js +18 -45
- package/dist/lib/fleet/auth-sync.d.ts +16 -35
- package/dist/lib/fleet/auth-sync.js +16 -75
- package/dist/lib/fleet/capture.js +8 -6
- package/dist/lib/fleet/manifest.js +23 -11
- package/dist/lib/fleet/types.d.ts +19 -7
- package/dist/lib/fleet-cache.d.ts +1 -1
- package/dist/lib/fleet-cache.js +1 -1
- package/dist/lib/format.d.ts +19 -0
- package/dist/lib/format.js +44 -1
- package/dist/lib/friction-heuristics.d.ts +1 -1
- package/dist/lib/git.d.ts +24 -1
- package/dist/lib/git.js +82 -38
- package/dist/lib/heal.js +3 -3
- package/dist/lib/hooks.d.ts +18 -0
- package/dist/lib/hooks.js +113 -1
- package/dist/lib/hosts/credentials.d.ts +30 -10
- package/dist/lib/hosts/credentials.js +38 -26
- package/dist/lib/hosts/dispatch.d.ts +3 -3
- package/dist/lib/hosts/dispatch.js +3 -3
- package/dist/lib/hosts/option.d.ts +3 -3
- package/dist/lib/hosts/option.js +7 -8
- package/dist/lib/hosts/passthrough.d.ts +17 -17
- package/dist/lib/hosts/passthrough.js +67 -50
- package/dist/lib/hosts/providers/devices.d.ts +1 -1
- package/dist/lib/hosts/providers/devices.js +1 -1
- package/dist/lib/hosts/reconcile.d.ts +1 -1
- package/dist/lib/hosts/reconcile.js +1 -1
- package/dist/lib/hosts/reconnect.d.ts +1 -1
- package/dist/lib/hosts/reconnect.js +2 -2
- package/dist/lib/hosts/registry.d.ts +5 -5
- package/dist/lib/hosts/registry.js +5 -5
- package/dist/lib/hosts/remote-cmd.d.ts +10 -10
- package/dist/lib/hosts/remote-cmd.js +25 -18
- package/dist/lib/hosts/remote-os.d.ts +4 -4
- package/dist/lib/hosts/remote-os.js +4 -4
- package/dist/lib/hosts/remote-session-id.d.ts +2 -2
- package/dist/lib/hosts/remote-session-id.js +2 -2
- package/dist/lib/hosts/routing-flag.d.ts +3 -3
- package/dist/lib/hosts/routing-flag.js +4 -5
- package/dist/lib/hosts/run-target.d.ts +4 -4
- package/dist/lib/hosts/run-target.js +4 -4
- package/dist/lib/hosts/session-index.d.ts +2 -2
- package/dist/lib/hosts/session-index.js +1 -1
- package/dist/lib/hosts/session-marker.d.ts +1 -1
- package/dist/lib/hosts/session-marker.js +1 -1
- package/dist/lib/hosts/types.d.ts +2 -2
- package/dist/lib/hosts/types.js +2 -2
- package/dist/lib/import.js +1 -1
- package/dist/lib/{migrate.d.ts → installations/migrate.d.ts} +49 -1
- package/dist/lib/{migrate.js → installations/migrate.js} +265 -38
- package/dist/lib/installations/resolve.js +1 -1
- package/dist/lib/installations/strategies.js +1 -1
- package/dist/lib/installations/update.js +2 -2
- package/dist/lib/{versions.d.ts → installations/versions.d.ts} +12 -3
- package/dist/lib/{versions.js → installations/versions.js} +51 -31
- package/dist/lib/isolation-boundary-report.js +1 -1
- package/dist/lib/linear-projects.d.ts +28 -0
- package/dist/lib/linear-projects.js +30 -0
- package/dist/lib/loop.js +1 -1
- package/dist/lib/mailbox-gc.js +1 -1
- package/dist/lib/mailbox.js +1 -1
- package/dist/lib/mcp-registry.d.ts +62 -0
- package/dist/lib/mcp-registry.js +177 -0
- package/dist/lib/mcp.d.ts +5 -0
- package/dist/lib/mcp.js +124 -307
- package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
- package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
- package/dist/lib/menubar/install-menubar.d.ts +7 -0
- package/dist/lib/menubar/install-menubar.js +24 -6
- package/dist/lib/menubar/snapshot.d.ts +7 -0
- package/dist/lib/menubar/snapshot.js +8 -6
- package/dist/lib/models.js +1 -1
- package/dist/lib/monitors/config.d.ts +12 -0
- package/dist/lib/monitors/config.js +3 -0
- package/dist/lib/monitors/dispatch.js +26 -5
- package/dist/lib/monitors/engine.js +10 -0
- package/dist/lib/monitors/sources/webhook.d.ts +1 -1
- package/dist/lib/monitors/state.d.ts +42 -0
- package/dist/lib/monitors/state.js +30 -0
- package/dist/lib/notify.d.ts +1 -1
- package/dist/lib/observe-aliases.d.ts +2 -2
- package/dist/lib/observe-aliases.js +2 -11
- package/dist/lib/output/git-output.js +2 -2
- package/dist/lib/overdue.d.ts +1 -1
- package/dist/lib/overdue.js +1 -1
- package/dist/lib/permissions-registry.d.ts +65 -0
- package/dist/lib/permissions-registry.js +599 -0
- package/dist/lib/permissions.d.ts +24 -13
- package/dist/lib/permissions.js +52 -271
- package/dist/lib/picker.d.ts +16 -0
- package/dist/lib/picker.js +33 -3
- package/dist/lib/placement.d.ts +1 -1
- package/dist/lib/placement.js +4 -4
- package/dist/lib/platform/paths.d.ts +8 -0
- package/dist/lib/platform/paths.js +11 -0
- package/dist/lib/platform/posixpath.js +3 -3
- package/dist/lib/{plugin-marketplace.d.ts → plugins/plugin-marketplace.d.ts} +1 -1
- package/dist/lib/{plugin-marketplace.js → plugins/plugin-marketplace.js} +2 -2
- package/dist/lib/{plugins.d.ts → plugins/plugins.d.ts} +1 -1
- package/dist/lib/{plugins.js → plugins/plugins.js} +7 -7
- package/dist/lib/{skills.d.ts → plugins/skills.d.ts} +1 -1
- package/dist/lib/{skills.js → plugins/skills.js} +7 -7
- package/dist/lib/pricing/cost.d.ts +1 -1
- package/dist/lib/pricing/cost.js +1 -1
- package/dist/lib/profiles-presets.d.ts +1 -1
- package/dist/lib/profiles-presets.js +1 -1
- package/dist/lib/profiles.js +2 -2
- package/dist/lib/project-import.js +4 -1
- package/dist/lib/project-launch.d.ts +1 -1
- package/dist/lib/project-launch.js +3 -3
- package/dist/lib/project-pull.d.ts +128 -0
- package/dist/lib/project-pull.js +384 -0
- package/dist/lib/project-root.d.ts +2 -2
- package/dist/lib/project-root.js +2 -2
- package/dist/lib/project-status.js +1 -1
- package/dist/lib/projects.d.ts +23 -0
- package/dist/lib/projects.js +29 -6
- package/dist/lib/refresh.d.ts +12 -1
- package/dist/lib/refresh.js +16 -9
- package/dist/lib/registry.d.ts +9 -2
- package/dist/lib/registry.js +11 -4
- package/dist/lib/resources.d.ts +2 -2
- package/dist/lib/resources.js +2 -2
- package/dist/lib/routers.d.ts +81 -0
- package/dist/lib/routers.js +153 -0
- package/dist/lib/routine-context.d.ts +1 -0
- package/dist/lib/routine-context.js +7 -2
- package/dist/lib/routine-notify-owner.d.ts +1 -1
- package/dist/lib/routine-notify.d.ts +1 -1
- package/dist/lib/routine-notify.js +1 -1
- package/dist/lib/routine-process-cleanup.d.ts +1 -1
- package/dist/lib/routine-readiness.d.ts +1 -1
- package/dist/lib/routine-readiness.js +11 -4
- package/dist/lib/routines-placement.d.ts +12 -2
- package/dist/lib/routines-placement.js +20 -3
- package/dist/lib/routines-project.d.ts +1 -1
- package/dist/lib/routines-project.js +1 -1
- package/dist/lib/rules/compile.d.ts +1 -0
- package/dist/lib/rules/compile.js +10 -2
- package/dist/lib/rules/rules.js +1 -1
- package/dist/lib/run-notify.js +1 -1
- package/dist/lib/runner.d.ts +80 -2
- package/dist/lib/runner.js +241 -62
- package/dist/lib/sandbox.d.ts +1 -1
- package/dist/lib/scheduler.d.ts +1 -1
- package/dist/lib/scheduler.js +1 -1
- package/dist/lib/{routines.d.ts → scheduling/routines.d.ts} +54 -9
- package/dist/lib/{routines.js → scheduling/routines.js} +173 -14
- package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
- package/dist/lib/secrets/agent.js +2 -2
- package/dist/lib/secrets/audit.js +1 -1
- package/dist/lib/secrets/bundles.d.ts +3 -3
- package/dist/lib/secrets/bundles.js +7 -7
- package/dist/lib/secrets/index.js +1 -1
- package/dist/lib/secrets/list-filter.d.ts +1 -1
- package/dist/lib/secrets/list-filter.js +2 -2
- package/dist/lib/secrets/push.d.ts +1 -1
- package/dist/lib/secrets/push.js +10 -12
- package/dist/lib/secrets/remote.d.ts +12 -10
- package/dist/lib/secrets/remote.js +21 -14
- package/dist/lib/secrets/vault.js +2 -2
- package/dist/lib/self-heal/checks/shadowing.js +1 -1
- package/dist/lib/self-heal/checks/shims.js +1 -1
- package/dist/lib/self-update.d.ts +39 -4
- package/dist/lib/self-update.js +78 -25
- package/dist/lib/serve/control.d.ts +1 -1
- package/dist/lib/serve/control.js +4 -4
- package/dist/lib/serve/data.d.ts +1 -1
- package/dist/lib/serve/data.js +1 -1
- package/dist/lib/serve/stream.js +1 -1
- package/dist/lib/service-manifest.d.ts +29 -0
- package/dist/lib/service-manifest.js +80 -0
- package/dist/lib/session/active.d.ts +59 -7
- package/dist/lib/session/active.js +158 -17
- package/dist/lib/session/bash-command.js +1 -1
- package/dist/lib/session/claude-accounts.d.ts +1 -1
- package/dist/lib/session/claude-accounts.js +1 -1
- package/dist/lib/session/db.d.ts +10 -2
- package/dist/lib/session/db.js +25 -6
- package/dist/lib/session/discover.d.ts +77 -0
- package/dist/lib/session/discover.js +130 -25
- package/dist/lib/session/fork.js +1 -1
- package/dist/lib/session/inject.d.ts +1 -1
- package/dist/lib/session/insights.d.ts +1 -1
- package/dist/lib/session/insights.js +1 -1
- package/dist/lib/session/live-metadata.d.ts +15 -0
- package/dist/lib/session/live-metadata.js +76 -0
- package/dist/lib/session/migrate-targets.d.ts +1 -1
- package/dist/lib/session/recovery.d.ts +1 -1
- package/dist/lib/session/recovery.js +2 -2
- package/dist/lib/session/remote-active.d.ts +10 -1
- package/dist/lib/session/remote-active.js +8 -3
- package/dist/lib/session/remote-bundle.d.ts +1 -1
- package/dist/lib/session/remote-bundle.js +2 -2
- package/dist/lib/session/remote-list.d.ts +15 -4
- package/dist/lib/session/remote-list.js +40 -3
- package/dist/lib/session/remote.d.ts +5 -5
- package/dist/lib/session/remote.js +13 -17
- package/dist/lib/session/resume-command.d.ts +3 -2
- package/dist/lib/session/resume-command.js +4 -3
- package/dist/lib/session/resume-owner.d.ts +3 -3
- package/dist/lib/session/resume-owner.js +3 -3
- package/dist/lib/session/session-cache.d.ts +12 -0
- package/dist/lib/session/session-cache.js +2 -0
- package/dist/lib/session/shell-programs.js +1 -1
- package/dist/lib/session/state.js +5 -5
- package/dist/lib/session/team-filter.d.ts +1 -1
- package/dist/lib/session/team-filter.js +1 -1
- package/dist/lib/session/types.d.ts +3 -3
- package/dist/lib/session/width.d.ts +2 -2
- package/dist/lib/session/width.js +2 -2
- package/dist/lib/share/delete.d.ts +21 -0
- package/dist/lib/share/delete.js +42 -0
- package/dist/lib/share/publish.d.ts +82 -0
- package/dist/lib/share/publish.js +170 -18
- package/dist/lib/share/worker-template.js +172 -9
- package/dist/lib/shims.js +35 -7
- package/dist/lib/smart-launch.d.ts +36 -6
- package/dist/lib/smart-launch.js +65 -8
- package/dist/lib/snapshot.d.ts +4 -4
- package/dist/lib/snapshot.js +2 -2
- package/dist/lib/ssh-exec.d.ts +1 -1
- package/dist/lib/ssh-exec.js +2 -2
- package/dist/lib/ssh-tunnel.d.ts +10 -10
- package/dist/lib/ssh-tunnel.js +12 -12
- package/dist/lib/staleness/checkers/hooks.d.ts +1 -1
- package/dist/lib/staleness/checkers/hooks.js +1 -1
- package/dist/lib/staleness/detectors/permissions.js +0 -23
- package/dist/lib/staleness/detectors/plugins.js +1 -1
- package/dist/lib/staleness/fingerprint.js +1 -1
- package/dist/lib/staleness/layers.d.ts +1 -1
- package/dist/lib/staleness/layers.js +1 -1
- package/dist/lib/staleness/writers/mcp.js +3 -1
- package/dist/lib/staleness/writers/plugins.js +1 -1
- package/dist/lib/staleness/writers/types.d.ts +8 -0
- package/dist/lib/startup/command-registry.d.ts +5 -147
- package/dist/lib/startup/command-registry.js +38 -303
- package/dist/lib/startup/dev-build.d.ts +0 -21
- package/dist/lib/startup/dev-build.js +29 -8
- package/dist/lib/state.d.ts +19 -1
- package/dist/lib/state.js +120 -51
- package/dist/lib/subagents.js +1 -1
- package/dist/lib/sync-status.js +1 -1
- package/dist/lib/sync-umbrella.d.ts +6 -1
- package/dist/lib/sync-umbrella.js +9 -4
- package/dist/lib/teams/agents.js +2 -2
- package/dist/lib/teams/registry.js +1 -1
- package/dist/lib/terminal/backends/vscodium-agent.js +1 -1
- package/dist/lib/terminal/engine.js +1 -1
- package/dist/lib/terminal/index.d.ts +4 -0
- package/dist/lib/terminal/index.js +3 -0
- package/dist/lib/terminal/inject.d.ts +2 -2
- package/dist/lib/terminal/inject.js +2 -2
- package/dist/lib/terminal/transport.js +1 -1
- package/dist/lib/tmux/index.d.ts +1 -1
- package/dist/lib/tmux/index.js +1 -1
- package/dist/lib/tmux/session.d.ts +21 -5
- package/dist/lib/tmux/session.js +76 -22
- package/dist/lib/triggers/handlers.d.ts +1 -1
- package/dist/lib/triggers/handlers.js +2 -2
- package/dist/lib/triggers/webhook.d.ts +36 -2
- package/dist/lib/triggers/webhook.js +97 -42
- package/dist/lib/types.d.ts +18 -6
- package/dist/lib/usage-fleet.d.ts +1 -1
- package/dist/lib/usage-fleet.js +1 -1
- package/dist/lib/usage-refresh.d.ts +1 -1
- package/dist/lib/usage-refresh.js +3 -3
- package/dist/lib/version-duplicates.js +2 -2
- package/dist/lib/view-types.d.ts +56 -0
- package/dist/lib/view-types.js +1 -0
- package/dist/lib/watchdog/rotate.d.ts +2 -2
- package/dist/lib/watchdog/rotate.js +3 -3
- package/dist/lib/watchdog/runner.d.ts +2 -3
- package/dist/lib/watchdog/runner.js +3 -4
- package/dist/lib/workflows.js +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.js +2 -2
- package/dist/commands/bench.d.ts +0 -2
- package/dist/commands/bench.js +0 -101
- package/dist/commands/cp.d.ts +0 -84
- package/dist/commands/cp.js +0 -231
- package/dist/commands/login.d.ts +0 -2
- package/dist/lib/resources/commands.d.ts +0 -46
- package/dist/lib/resources/commands.js +0 -211
- package/dist/lib/resources/hooks.d.ts +0 -16
- package/dist/lib/resources/hooks.js +0 -153
- package/dist/lib/resources/mcp.d.ts +0 -34
- package/dist/lib/resources/mcp.js +0 -250
- package/dist/lib/resources/memory.d.ts +0 -15
- package/dist/lib/resources/memory.js +0 -46
- package/dist/lib/resources/permissions.d.ts +0 -13
- package/dist/lib/resources/permissions.js +0 -202
- package/dist/lib/resources/rules.d.ts +0 -46
- package/dist/lib/resources/rules.js +0 -179
- package/dist/lib/resources/skills.d.ts +0 -37
- package/dist/lib/resources/skills.js +0 -247
- package/dist/lib/resources/subagents.d.ts +0 -46
- package/dist/lib/resources/subagents.js +0 -202
- /package/dist/lib/{feed.d.ts → feed/feed.d.ts} +0 -0
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* This module picks the delivery mechanism from (open feed block × session
|
|
11
11
|
* liveness × runtime rail). Pure — unit-testable without a live PTY.
|
|
12
12
|
*/
|
|
13
|
-
import type { OpenBlock, BlockOption } from './feed.js';
|
|
13
|
+
import type { OpenBlock, BlockOption } from './feed/feed.js';
|
|
14
14
|
import type { ActiveSession } from './session/active.js';
|
|
15
|
-
import type { InjectTarget } from './terminal/
|
|
15
|
+
import type { InjectTarget } from './terminal/index.js';
|
|
16
16
|
export type AnswerRouteKind = 'mailbox' | 'pty' | 'tmux' | 'iterm' | 'resume' | 'refuse';
|
|
17
17
|
export interface AnswerRoute {
|
|
18
18
|
kind: AnswerRouteKind;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Rules-based on stable high-volume shapes. Pure classify/match; suppression has
|
|
14
14
|
* side effects via the feed store when applied.
|
|
15
15
|
*/
|
|
16
|
-
import type { OpenBlock } from './feed.js';
|
|
16
|
+
import type { OpenBlock } from './feed/feed.js';
|
|
17
17
|
/** Taxonomy for a published ask. Exactly one class per block. */
|
|
18
18
|
export type AskClass = 'decision' | 'approval' | 'clarification' | 'stall' | 'fyi';
|
|
19
19
|
export interface Classification {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { recordAnswer, recordMessageReceipt, removeBlock } from './feed.js';
|
|
1
|
+
import { recordAnswer, recordMessageReceipt, removeBlock } from './feed/feed.js';
|
|
2
2
|
import { enqueue, mailboxDir } from './mailbox.js';
|
|
3
3
|
/** Scan text used for classification. */
|
|
4
4
|
export function askScanText(block) {
|
package/dist/lib/audit/log.js
CHANGED
|
@@ -14,7 +14,7 @@ import { spawnSync } from 'child_process';
|
|
|
14
14
|
import { sha256 } from '../staleness/fingerprint.js';
|
|
15
15
|
import { getHistoryDir } from '../state.js';
|
|
16
16
|
import { ensureLockTarget, withFileLock } from '../fs-atomic.js';
|
|
17
|
-
import { emit } from '../events.js';
|
|
17
|
+
import { emit } from '../feed/events.js';
|
|
18
18
|
/** First record's `prevHash` — a fixed anchor so the chain has a root. */
|
|
19
19
|
export const GENESIS_HASH = 'GENESIS';
|
|
20
20
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AccountInfo } from './agents.js';
|
|
2
2
|
import type { AgentId } from './types.js';
|
|
3
|
-
import { type ProviderProbe } from './usage.js';
|
|
3
|
+
import { type ProviderProbe } from './accounting/usage.js';
|
|
4
4
|
/**
|
|
5
5
|
* - `live` — completed an authenticated request (200).
|
|
6
6
|
* - `revoked` — the server rejected the token (401/403), except Claude
|
package/dist/lib/auth-health.js
CHANGED
|
@@ -20,8 +20,8 @@ import * as fs from 'fs';
|
|
|
20
20
|
import * as path from 'path';
|
|
21
21
|
import { ALL_AGENT_IDS, getAccountInfo } from './agents.js';
|
|
22
22
|
import { getCacheDir } from './state.js';
|
|
23
|
-
import { probeClaudeStatus, probeDroidStatus, probeKimiStatus, USAGE_HEADLESS_SCOPE_MARKER, } from './usage.js';
|
|
24
|
-
import { getVersionHomePath, listInstalledVersions } from './versions.js';
|
|
23
|
+
import { probeClaudeStatus, probeDroidStatus, probeKimiStatus, USAGE_HEADLESS_SCOPE_MARKER, } from './accounting/usage.js';
|
|
24
|
+
import { getVersionHomePath, listInstalledVersions } from './installations/versions.js';
|
|
25
25
|
import { atomicWriteFileSync, ensureLockTarget, withFileLock } from './fs-atomic.js';
|
|
26
26
|
/** Agents with a live network probe wired up today. The rest are best-effort. */
|
|
27
27
|
export const LIVE_PROBE_AGENTS = new Set(['claude', 'kimi', 'droid']);
|
package/dist/lib/brand.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* personally-named binary (e.g. `jack` instead of `agents`), skinned with their
|
|
4
4
|
* name and pinned to the exact feature set they enable.
|
|
5
5
|
*
|
|
6
|
-
* A brand is minted by `agents setup mine` / `agents mine init <name>`, which
|
|
6
|
+
* A brand is minted by `agents setup mine` / `agents setup mine init <name>`, which
|
|
7
7
|
* writes a pure pass-through shim (`~/.agents/.cache/shims/<name>`) that sets
|
|
8
8
|
* `AGENTS_BRAND=<name>` then execs the real agents-cli entrypoint. The entrypoint
|
|
9
9
|
* reads `AGENTS_BRAND` to (a) present its own name/help/errors as the brand, and
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface CallerIdentity {
|
|
2
|
+
actor: string;
|
|
3
|
+
launchId?: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
/** Agent pid when identity came from the process-table anchor. */
|
|
6
|
+
agentPid?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve caller identity once per CLI process for browser IPC stamping.
|
|
10
|
+
*
|
|
11
|
+
* Starts from `process.ppid` — the shell or harness that launched this
|
|
12
|
+
* `agents browser` invocation — and walks up until a state file or known
|
|
13
|
+
* agent comm is found.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveCallerIdentity(env?: NodeJS.ProcessEnv): CallerIdentity;
|
|
16
|
+
/**
|
|
17
|
+
* True when a live task belongs to this caller. Match on sessionId or
|
|
18
|
+
* launchId — either is enough. A task with no recorded identity never
|
|
19
|
+
* matches a caller that has one (and vice versa for the no-identity case
|
|
20
|
+
* handled separately by the resolver).
|
|
21
|
+
*/
|
|
22
|
+
export declare function taskMatchesCaller(task: {
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
launchId?: string;
|
|
25
|
+
}, caller: {
|
|
26
|
+
sessionId?: string;
|
|
27
|
+
launchId?: string;
|
|
28
|
+
}): boolean;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the agent identity of whoever invoked `agents browser`.
|
|
3
|
+
*
|
|
4
|
+
* The browser daemon is shared and long-lived, so identity must be captured in
|
|
5
|
+
* the CLI process and forwarded over IPC. Order:
|
|
6
|
+
*
|
|
7
|
+
* 1. Env already set by `agents run` (`AGENT_SESSION_ID` / `AGENT_LAUNCH_ID`)
|
|
8
|
+
* 2. Session-tracker state file under `~/.agents/.cache/terminals/sessions/`
|
|
9
|
+
* (and the deployed fleet path under `state/sessions/`), keyed by
|
|
10
|
+
* process.ppid and walked up the ancestor chain
|
|
11
|
+
* 3. Process-table anchor — nearest ancestor whose comm maps to a known
|
|
12
|
+
* harness via `agentKindFromComm` (derived from SESSION_AGENTS)
|
|
13
|
+
*
|
|
14
|
+
* No per-harness env-var table: the state-file reader and the process-table
|
|
15
|
+
* classifier cover every harness by construction.
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from 'child_process';
|
|
18
|
+
import { resolveActor } from '../actor.js';
|
|
19
|
+
import { agentKindFromComm } from '../session/active.js';
|
|
20
|
+
import { loadHookSessionIndex, readStateSessionRecord, } from '../session/hook-sessions.js';
|
|
21
|
+
const MAX_ANCESTOR_WALK = 16;
|
|
22
|
+
/**
|
|
23
|
+
* Read pid→ppid→comm for one process. Returns null when the process is gone
|
|
24
|
+
* or `ps` fails.
|
|
25
|
+
*/
|
|
26
|
+
function readProc(pid) {
|
|
27
|
+
if (!pid || pid <= 1)
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
const out = execFileSync('ps', ['-p', String(pid), '-o', 'pid=,ppid=,comm='], {
|
|
31
|
+
encoding: 'utf8',
|
|
32
|
+
timeout: 1000,
|
|
33
|
+
}).trim();
|
|
34
|
+
const m = out.match(/^(\d+)\s+(\d+)\s+(.+)$/);
|
|
35
|
+
if (!m)
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
pid: parseInt(m[1], 10),
|
|
39
|
+
ppid: parseInt(m[2], 10),
|
|
40
|
+
comm: m[3].trim(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Walk ancestors starting at `startPid` (inclusive). Yields each pid once.
|
|
49
|
+
*/
|
|
50
|
+
function* ancestorPids(startPid) {
|
|
51
|
+
let cur = startPid;
|
|
52
|
+
const seen = new Set();
|
|
53
|
+
for (let i = 0; i < MAX_ANCESTOR_WALK && cur > 1 && !seen.has(cur); i++) {
|
|
54
|
+
seen.add(cur);
|
|
55
|
+
yield cur;
|
|
56
|
+
const proc = readProc(cur);
|
|
57
|
+
if (!proc)
|
|
58
|
+
return;
|
|
59
|
+
cur = proc.ppid;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Look up a session-tracker / deployed-hook state record for `pid`.
|
|
64
|
+
* Prefers the richer terminals/sessions index; falls back to the fleet
|
|
65
|
+
* state/sessions path (RUSH-2007).
|
|
66
|
+
*/
|
|
67
|
+
function stateForPid(pid, index) {
|
|
68
|
+
const fromIndex = index.byPid.get(pid);
|
|
69
|
+
if (fromIndex?.session_id)
|
|
70
|
+
return fromIndex;
|
|
71
|
+
return readStateSessionRecord(pid);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Resolve caller identity once per CLI process for browser IPC stamping.
|
|
75
|
+
*
|
|
76
|
+
* Starts from `process.ppid` — the shell or harness that launched this
|
|
77
|
+
* `agents browser` invocation — and walks up until a state file or known
|
|
78
|
+
* agent comm is found.
|
|
79
|
+
*/
|
|
80
|
+
export function resolveCallerIdentity(env = process.env) {
|
|
81
|
+
const actor = resolveActor().id;
|
|
82
|
+
let sessionId = env.AGENT_SESSION_ID || env.AGENTS_SESSION_ID || undefined;
|
|
83
|
+
let launchId = env.AGENT_LAUNCH_ID || undefined;
|
|
84
|
+
let agentPid;
|
|
85
|
+
if (sessionId && launchId) {
|
|
86
|
+
return { actor, sessionId, launchId };
|
|
87
|
+
}
|
|
88
|
+
// Start at ppid: when an agent runs a Bash tool call, the browser CLI's
|
|
89
|
+
// parent is that shell (or the agent itself when launched directly).
|
|
90
|
+
const startPid = typeof process.ppid === 'number' && process.ppid > 0 ? process.ppid : 0;
|
|
91
|
+
if (startPid > 0) {
|
|
92
|
+
let index;
|
|
93
|
+
try {
|
|
94
|
+
index = loadHookSessionIndex();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
index = undefined;
|
|
98
|
+
}
|
|
99
|
+
for (const pid of ancestorPids(startPid)) {
|
|
100
|
+
if (index) {
|
|
101
|
+
const rec = stateForPid(pid, index);
|
|
102
|
+
if (rec?.session_id) {
|
|
103
|
+
sessionId = sessionId || rec.session_id;
|
|
104
|
+
launchId = launchId || rec.launch_id;
|
|
105
|
+
agentPid = pid;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const rec = readStateSessionRecord(pid);
|
|
111
|
+
if (rec?.session_id) {
|
|
112
|
+
sessionId = sessionId || rec.session_id;
|
|
113
|
+
launchId = launchId || rec.launch_id;
|
|
114
|
+
agentPid = pid;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Process-table anchor: nearest ancestor whose comm is a known harness.
|
|
120
|
+
// Covers harnesses with no SessionStart hook (and sessions the hook missed).
|
|
121
|
+
//
|
|
122
|
+
// IMPORTANT: stamp as launchId, NEVER as sessionId. A synthetic
|
|
123
|
+
// `agent-pid:<n>` is not a real agent session UUID — if it lands in
|
|
124
|
+
// sessionId, hygiene.taskOwnerIsGone treats it as a dead session (the
|
|
125
|
+
// process-table session probe rejects non-UUID shapes) and reaps the
|
|
126
|
+
// task mid-run. launchId-only tasks are never session-reaped
|
|
127
|
+
// (hygiene.ts: launchId alone is not proof of death).
|
|
128
|
+
if (!sessionId && !launchId) {
|
|
129
|
+
for (const pid of ancestorPids(startPid)) {
|
|
130
|
+
const proc = readProc(pid);
|
|
131
|
+
if (!proc)
|
|
132
|
+
continue;
|
|
133
|
+
const kind = agentKindFromComm(proc.comm);
|
|
134
|
+
if (kind) {
|
|
135
|
+
launchId = `agent-pid:${pid}`;
|
|
136
|
+
agentPid = pid;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return { actor, sessionId, launchId, agentPid };
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* True when a live task belongs to this caller. Match on sessionId or
|
|
146
|
+
* launchId — either is enough. A task with no recorded identity never
|
|
147
|
+
* matches a caller that has one (and vice versa for the no-identity case
|
|
148
|
+
* handled separately by the resolver).
|
|
149
|
+
*/
|
|
150
|
+
export function taskMatchesCaller(task, caller) {
|
|
151
|
+
if (caller.sessionId && task.sessionId && caller.sessionId === task.sessionId)
|
|
152
|
+
return true;
|
|
153
|
+
if (caller.launchId && task.launchId && caller.launchId === task.launchId)
|
|
154
|
+
return true;
|
|
155
|
+
return false;
|
|
156
|
+
}
|
package/dist/lib/browser/cdp.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// with code 1006 ("Max decompressed message size exceeded") while the command
|
|
5
5
|
// is pending. `ws` offers no permessage-deflate by default and takes an
|
|
6
6
|
// explicit payload cap. (Reproduced live against a remote Edge over
|
|
7
|
-
// `browser --
|
|
7
|
+
// `browser --device`: fresh blank newtab passed, reused content-rich newtab
|
|
8
8
|
// failed on every Page.captureScreenshot.)
|
|
9
9
|
import WSWebSocket from 'ws';
|
|
10
10
|
const pipeTransports = new Map();
|
|
@@ -54,7 +54,7 @@ export declare function buildWindowsLaunchScript(browserType: string, port: numb
|
|
|
54
54
|
* killing only the port-owning main process orphans its children. The orphans
|
|
55
55
|
* keep the profile's SingletonLock, so every later launch against the same
|
|
56
56
|
* `--user-data-dir` delegates to the zombie tree, exits, and never binds the
|
|
57
|
-
* CDP port — `browser start --
|
|
57
|
+
* CDP port — `browser start --device` then fails until someone hand-cleans the
|
|
58
58
|
* box (found live on win-mini by the #561 e2e suite).
|
|
59
59
|
*/
|
|
60
60
|
export declare function buildWindowsKillScript(port: number): string;
|
|
@@ -8,7 +8,7 @@ import { writeProfileRuntime, clearProfileRuntime } from '../runtime-state.js';
|
|
|
8
8
|
// so existing importers of `shellQuote` from this module keep working.
|
|
9
9
|
import { shellQuote, assertValidSshTarget, controlOpts, sshConnectOpts } from '../../ssh-exec.js';
|
|
10
10
|
export { shellQuote };
|
|
11
|
-
// The `ssh -L` tunnel spawn is shared with `agents computer --
|
|
11
|
+
// The `ssh -L` tunnel spawn is shared with `agents computer --device`; it lives in
|
|
12
12
|
// the single ssh-tunnel helper. Calling it with no options preserves this
|
|
13
13
|
// driver's original foreground, stderr-captured behavior exactly.
|
|
14
14
|
import { startSSHTunnel } from '../../ssh-tunnel.js';
|
|
@@ -244,7 +244,7 @@ export function buildWindowsLaunchScript(browserType, port, customBinary) {
|
|
|
244
244
|
* killing only the port-owning main process orphans its children. The orphans
|
|
245
245
|
* keep the profile's SingletonLock, so every later launch against the same
|
|
246
246
|
* `--user-data-dir` delegates to the zombie tree, exits, and never binds the
|
|
247
|
-
* CDP port — `browser start --
|
|
247
|
+
* CDP port — `browser start --device` then fails until someone hand-cleans the
|
|
248
248
|
* box (found live on win-mini by the #561 e2e suite).
|
|
249
249
|
*/
|
|
250
250
|
export function buildWindowsKillScript(port) {
|
|
@@ -33,8 +33,16 @@ export interface ReapDeps {
|
|
|
33
33
|
sessionLiveOnProcessTable?: (sessionId: string) => Promise<boolean>;
|
|
34
34
|
}
|
|
35
35
|
export interface ReapOptions {
|
|
36
|
-
/**
|
|
37
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Idle window in ms. Default {@link DEFAULT_IDLE_MS}.
|
|
38
|
+
*
|
|
39
|
+
* `null` is the explicit "idle reaping is off" signal
|
|
40
|
+
* (`browser.task-idle-minutes=0`) — session-dead reaping below is
|
|
41
|
+
* unaffected. A caller-supplied `0` is a DIFFERENT thing and still throws
|
|
42
|
+
* (see the guard below): it is far likelier to be a bug (a value that
|
|
43
|
+
* survived `??` unset) than an intentional "reap everything immediately."
|
|
44
|
+
*/
|
|
45
|
+
idleMs?: number | null;
|
|
38
46
|
/** Clock, injectable for tests. Default `Date.now()`. */
|
|
39
47
|
now?: number;
|
|
40
48
|
/** Report what would be closed without closing anything. */
|
|
@@ -98,12 +98,15 @@ export async function taskOwnerIsGone(task, live, deps = {}) {
|
|
|
98
98
|
* asked for, and an in-flight recording is itself proof the task is in use.
|
|
99
99
|
*/
|
|
100
100
|
export async function reapAbandonedTasks(service, opts = {}) {
|
|
101
|
-
const
|
|
101
|
+
const idleDisabled = opts.idleMs === null;
|
|
102
|
+
const idleMs = idleDisabled ? undefined : (opts.idleMs ?? DEFAULT_IDLE_MS);
|
|
102
103
|
// Fail loud rather than reap everything. A caller-supplied `0` survives `??`
|
|
103
104
|
// and would close every task including one created a millisecond ago; a
|
|
104
105
|
// non-numeric value makes every `>=` comparison false and silently disables
|
|
105
|
-
// idle reaping. Both are worse than an error.
|
|
106
|
-
|
|
106
|
+
// idle reaping. Both are worse than an error. `null` (idleDisabled) skips
|
|
107
|
+
// this check entirely — that is the one deliberate way to turn idle
|
|
108
|
+
// reaping off, distinct from an accidental `0`.
|
|
109
|
+
if (!idleDisabled && (!Number.isFinite(idleMs) || idleMs <= 0)) {
|
|
107
110
|
throw new Error(`idleMs must be a positive number of milliseconds, got ${String(idleMs)}`);
|
|
108
111
|
}
|
|
109
112
|
const now = opts.now ?? Date.now();
|
|
@@ -120,7 +123,7 @@ export async function reapAbandonedTasks(service, opts = {}) {
|
|
|
120
123
|
if (await taskOwnerIsGone(task, live, deps)) {
|
|
121
124
|
reason = 'session-dead';
|
|
122
125
|
}
|
|
123
|
-
else if (now - (task.lastActionAt ?? task.createdAt) >= idleMs) {
|
|
126
|
+
else if (!idleDisabled && now - (task.lastActionAt ?? task.createdAt) >= idleMs) {
|
|
124
127
|
reason = 'idle';
|
|
125
128
|
}
|
|
126
129
|
if (!reason) {
|
|
@@ -67,16 +67,36 @@ export declare class BrowserIPCServer {
|
|
|
67
67
|
private doStop;
|
|
68
68
|
/** Release the listening binding, resolving only once it is genuinely gone. */
|
|
69
69
|
private closeServer;
|
|
70
|
+
/**
|
|
71
|
+
* Resolve `request.task` from caller identity when omitted. Page verbs may
|
|
72
|
+
* create; done/stop never create. Returns an error response to short-circuit
|
|
73
|
+
* the action, or undefined when the request is ready (task filled in).
|
|
74
|
+
*/
|
|
75
|
+
private bindTask;
|
|
70
76
|
private handleRequest;
|
|
71
77
|
}
|
|
72
78
|
/**
|
|
73
|
-
* Decide whether a running daemon is stale and must be restarted.
|
|
74
|
-
*
|
|
79
|
+
* Decide whether a running daemon is stale and must be restarted.
|
|
80
|
+
*
|
|
81
|
+
* FORWARD ONLY: restart when the daemon is *older* than this CLI so a newer
|
|
82
|
+
* install loads current code. An older CLI rides a newer daemon instead of
|
|
83
|
+
* evicting it — two installs sharing one daemon dir (keyed off $HOME) must
|
|
84
|
+
* not flap the daemon indefinitely.
|
|
85
|
+
*
|
|
75
86
|
* `undefined`/`'unknown'` means the daemon is too old to answer the `version`
|
|
76
87
|
* action reliably — don't churn it on that ambiguous signal.
|
|
88
|
+
*
|
|
89
|
+
* When numeric compare cannot order two distinct strings (e.g. two
|
|
90
|
+
* `0.0.0-dev.*` builds), treat the mismatch as a restart so a concrete
|
|
91
|
+
* code change still loads.
|
|
77
92
|
*/
|
|
78
93
|
export declare function shouldRestartStaleDaemon(daemonVersion: string | undefined, clientVersion: string): boolean;
|
|
79
94
|
export declare function sendIPCRequest(request: IPCRequest, opts?: IPCRequestOptions): Promise<IPCResponse>;
|
|
95
|
+
/**
|
|
96
|
+
* Fill actor / launchId / sessionId from the calling process when the request
|
|
97
|
+
* left them blank. Explicit values on the request always win.
|
|
98
|
+
*/
|
|
99
|
+
export declare function stampCallerIdentity(request: IPCRequest): IPCRequest;
|
|
80
100
|
/**
|
|
81
101
|
* Open one connection that can serve many browser operations. This uses the
|
|
82
102
|
* same daemon readiness and version-reconciliation path as sendIPCRequest;
|