@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Reconcile a local host-task record against the remote run's ground truth.
|
|
3
3
|
*
|
|
4
|
-
* A detached `--
|
|
4
|
+
* A detached `--device` run outlives the local follower: it keeps running and
|
|
5
5
|
* writes its exit code to `<id>.exit` on the host even if the laptop sleeps or
|
|
6
6
|
* the SSH connection drops mid-follow. When that happens the local record is
|
|
7
7
|
* left at `status:'running'` forever, because the only path that finalizes it
|
|
@@ -99,7 +99,7 @@ export declare function remoteExitNotice(sessionId: string, host: string): strin
|
|
|
99
99
|
* {@link REMOTE_EXIT_255_REMAPPED} before the wrapper exits — see the file
|
|
100
100
|
* header for why. Every other code (0, 1, …) passes through unchanged. This
|
|
101
101
|
* carries no PATH bootstrap of its own — `ensureHostReady`/`readyProbe` already
|
|
102
|
-
* gates every `--
|
|
102
|
+
* gates every `--device` dispatch on `bash -lc 'agents --version'` succeeding
|
|
103
103
|
* before a run is attempted at all, so the peer's login shell resolving `agents`
|
|
104
104
|
* is an established precondition here too. Pure string-building, so it is
|
|
105
105
|
* unit-tested without SSH (and, since the constructed script is ordinary POSIX,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auto-reconnect for an interactive `agents run --device
|
|
2
|
+
* Auto-reconnect for an interactive `agents run --device` session whose
|
|
3
3
|
* SSH link dropped.
|
|
4
4
|
*
|
|
5
5
|
* A remote interactive agent runs in a DETACHED tmux session on the peer (see
|
|
@@ -174,7 +174,7 @@ export function remoteExitNotice(sessionId, host) {
|
|
|
174
174
|
* {@link REMOTE_EXIT_255_REMAPPED} before the wrapper exits — see the file
|
|
175
175
|
* header for why. Every other code (0, 1, …) passes through unchanged. This
|
|
176
176
|
* carries no PATH bootstrap of its own — `ensureHostReady`/`readyProbe` already
|
|
177
|
-
* gates every `--
|
|
177
|
+
* gates every `--device` dispatch on `bash -lc 'agents --version'` succeeding
|
|
178
178
|
* before a run is attempted at all, so the peer's login shell resolving `agents`
|
|
179
179
|
* is an established precondition here too. Pure string-building, so it is
|
|
180
180
|
* unit-tested without SSH (and, since the constructed script is ordinary POSIX,
|
|
@@ -58,7 +58,7 @@ export interface MatchHostOptions {
|
|
|
58
58
|
resolveAuto?: () => DeviceAffinityPlan;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
* The one place a `--
|
|
61
|
+
* The one place a `--device` / `--device` token becomes a resolved host. Reads the
|
|
62
62
|
* devices registry, the agents.yaml overlay, and ssh_config, and merges them
|
|
63
63
|
* per-field (see {@link deviceHost}). One grammar for every caller: `name`,
|
|
64
64
|
* `user@name`, a tailnet FQDN, an ssh_config alias, and a literal `user@host`
|
|
@@ -77,8 +77,8 @@ export declare function matchHost(name: string, opts?: MatchHostOptions): Promis
|
|
|
77
77
|
* with it). Provider order still decides the base row (`local` first). */
|
|
78
78
|
export declare function listAllHosts(): Promise<Host[]>;
|
|
79
79
|
/**
|
|
80
|
-
* Resolve a `--
|
|
81
|
-
* caller consumes (`run --
|
|
80
|
+
* Resolve a `--device`/`--device` token for DISPATCH — the shape every offload
|
|
81
|
+
* caller consumes (`run --device`, the generic passthrough, teams placement, the
|
|
82
82
|
* cloud host provider, doctor, funnel, remote secrets). Grammar and merge come
|
|
83
83
|
* from {@link matchHost}; on top, this layer applies the device-only dispatch
|
|
84
84
|
* refusals so they hold even when an inline overlay shadows the device:
|
|
@@ -88,11 +88,11 @@ export declare function listAllHosts(): Promise<Host[]>;
|
|
|
88
88
|
* - an addressless device has nothing to dial.
|
|
89
89
|
*
|
|
90
90
|
* A bare unknown name returns null so capability-tag routing (`resolveHostByCap`,
|
|
91
|
-
* e.g. `--
|
|
91
|
+
* e.g. `--device gpu`) stays reachable, and an ad-hoc `user@host` still resolves.
|
|
92
92
|
*/
|
|
93
93
|
export declare function resolveHost(name: string): Promise<Host | null>;
|
|
94
94
|
/**
|
|
95
|
-
* Resolve a host by capability tag (e.g. `--
|
|
95
|
+
* Resolve a host by capability tag (e.g. `--device gpu`). Returns the single
|
|
96
96
|
* matching host, or throws on 0 or >1 matches unless `any` is set (then first).
|
|
97
97
|
*/
|
|
98
98
|
export declare function resolveHostByCap(cap: string, any?: boolean): Promise<Host>;
|
|
@@ -141,7 +141,7 @@ function literalHost(token, host, user) {
|
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
|
-
* The one place a `--
|
|
144
|
+
* The one place a `--device` / `--device` token becomes a resolved host. Reads the
|
|
145
145
|
* devices registry, the agents.yaml overlay, and ssh_config, and merges them
|
|
146
146
|
* per-field (see {@link deviceHost}). One grammar for every caller: `name`,
|
|
147
147
|
* `user@name`, a tailnet FQDN, an ssh_config alias, and a literal `user@host`
|
|
@@ -236,8 +236,8 @@ export async function listAllHosts() {
|
|
|
236
236
|
return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
237
237
|
}
|
|
238
238
|
/**
|
|
239
|
-
* Resolve a `--
|
|
240
|
-
* caller consumes (`run --
|
|
239
|
+
* Resolve a `--device`/`--device` token for DISPATCH — the shape every offload
|
|
240
|
+
* caller consumes (`run --device`, the generic passthrough, teams placement, the
|
|
241
241
|
* cloud host provider, doctor, funnel, remote secrets). Grammar and merge come
|
|
242
242
|
* from {@link matchHost}; on top, this layer applies the device-only dispatch
|
|
243
243
|
* refusals so they hold even when an inline overlay shadows the device:
|
|
@@ -247,7 +247,7 @@ export async function listAllHosts() {
|
|
|
247
247
|
* - an addressless device has nothing to dial.
|
|
248
248
|
*
|
|
249
249
|
* A bare unknown name returns null so capability-tag routing (`resolveHostByCap`,
|
|
250
|
-
* e.g. `--
|
|
250
|
+
* e.g. `--device gpu`) stays reachable, and an ad-hoc `user@host` still resolves.
|
|
251
251
|
*/
|
|
252
252
|
export async function resolveHost(name) {
|
|
253
253
|
const host = await matchHost(name);
|
|
@@ -267,7 +267,7 @@ export async function resolveHost(name) {
|
|
|
267
267
|
return host;
|
|
268
268
|
}
|
|
269
269
|
/**
|
|
270
|
-
* Resolve a host by capability tag (e.g. `--
|
|
270
|
+
* Resolve a host by capability tag (e.g. `--device gpu`). Returns the single
|
|
271
271
|
* matching host, or throws on 0 or >1 matches unless `any` is set (then first).
|
|
272
272
|
*/
|
|
273
273
|
export async function resolveHostByCap(cap, any = false) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure argv helpers for `--
|
|
2
|
+
* Pure argv helpers for `--device` passthrough — build the remote `agents …`
|
|
3
3
|
* invocation and strip the local-only routing flags before forwarding.
|
|
4
4
|
*
|
|
5
5
|
* Kept free of any SSH/process side effects so the two-layer quoting and the
|
|
@@ -13,7 +13,7 @@ export interface StripSpec {
|
|
|
13
13
|
long: string;
|
|
14
14
|
/** Optional single-letter short form without the dash, e.g. `H`. */
|
|
15
15
|
short?: string;
|
|
16
|
-
/** True when the flag takes a following value token (`--
|
|
16
|
+
/** True when the flag takes a following value token (`--device <name>`). */
|
|
17
17
|
takesValue: boolean;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -26,14 +26,13 @@ export interface StripSpec {
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function stripRoutingFlags(args: string[], specs: StripSpec[]): string[];
|
|
28
28
|
/**
|
|
29
|
-
* The routing flags every `--
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* binary (which would re-trigger routing).
|
|
29
|
+
* The routing flags every `--device`-capable command shares. Stripped before
|
|
30
|
+
* forwarding so the flag never leaks to the remote binary (which would
|
|
31
|
+
* re-trigger routing). `--host`/`-H` are kept for backward-compat strip only
|
|
32
|
+
* (they are no longer user-facing routing flags).
|
|
34
33
|
*/
|
|
35
34
|
export declare const HOST_ROUTING_SPECS: StripSpec[];
|
|
36
|
-
/** How one `agents run` option behaves when the run is offloaded with `--
|
|
35
|
+
/** How one `agents run` option behaves when the run is offloaded with `--device`. */
|
|
37
36
|
export type RunOptionForwarding =
|
|
38
37
|
/** Appended to the remote `agents run` argv — same behavior local or remote. */
|
|
39
38
|
'forward'
|
|
@@ -42,7 +41,7 @@ export type RunOptionForwarding =
|
|
|
42
41
|
/** Consumed by the dispatching side (routing, follow rendering, cwd portability). */
|
|
43
42
|
| 'local-only';
|
|
44
43
|
/**
|
|
45
|
-
* The forwarding contract for `agents run … --
|
|
44
|
+
* The forwarding contract for `agents run … --device`: every option of the `run`
|
|
46
45
|
* command is classified here, keyed by its commander attribute name. A
|
|
47
46
|
* commander-introspection test (run-forwarding.test.ts) fails when a run
|
|
48
47
|
* option is missing from this table, so a new option can never silently drop
|
|
@@ -161,7 +160,7 @@ export declare function windowsAgentsScript(cmd: WindowsAgentsCommand): string;
|
|
|
161
160
|
/**
|
|
162
161
|
* Build the `ssh <target> <cmd>` string for one `agents …` invocation on a
|
|
163
162
|
* Windows remote: a `powershell -NoProfile -EncodedCommand <base64>` call. The
|
|
164
|
-
* Windows counterpart of `bash -lc '<...>'`, shared by every `--
|
|
163
|
+
* Windows counterpart of `bash -lc '<...>'`, shared by every `--device` site.
|
|
165
164
|
*/
|
|
166
165
|
export declare function buildWindowsAgentsCommand(cmd: WindowsAgentsCommand): string;
|
|
167
166
|
/**
|
|
@@ -180,4 +179,5 @@ export declare function buildWindowsAgentsCommand(cmd: WindowsAgentsCommand): st
|
|
|
180
179
|
*/
|
|
181
180
|
export declare function buildWindowsStdinImportCommand(bundle: string, opts?: {
|
|
182
181
|
force?: boolean;
|
|
182
|
+
policyNever?: boolean;
|
|
183
183
|
}): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure argv helpers for `--
|
|
2
|
+
* Pure argv helpers for `--device` passthrough — build the remote `agents …`
|
|
3
3
|
* invocation and strip the local-only routing flags before forwarding.
|
|
4
4
|
*
|
|
5
5
|
* Kept free of any SSH/process side effects so the two-layer quoting and the
|
|
@@ -39,19 +39,18 @@ export function stripRoutingFlags(args, specs) {
|
|
|
39
39
|
return out;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* The routing flags every `--
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* binary (which would re-trigger routing).
|
|
42
|
+
* The routing flags every `--device`-capable command shares. Stripped before
|
|
43
|
+
* forwarding so the flag never leaks to the remote binary (which would
|
|
44
|
+
* re-trigger routing). `--host`/`-H` are kept for backward-compat strip only
|
|
45
|
+
* (they are no longer user-facing routing flags).
|
|
47
46
|
*/
|
|
48
47
|
export const HOST_ROUTING_SPECS = [
|
|
48
|
+
{ long: 'device', short: 'D', takesValue: true },
|
|
49
49
|
{ long: 'host', short: 'H', takesValue: true },
|
|
50
|
-
{ long: 'device', takesValue: true },
|
|
51
50
|
{ long: 'remote-cwd', takesValue: true },
|
|
52
51
|
];
|
|
53
52
|
/**
|
|
54
|
-
* The forwarding contract for `agents run … --
|
|
53
|
+
* The forwarding contract for `agents run … --device`: every option of the `run`
|
|
55
54
|
* command is classified here, keyed by its commander attribute name. A
|
|
56
55
|
* commander-introspection test (run-forwarding.test.ts) fails when a run
|
|
57
56
|
* option is missing from this table, so a new option can never silently drop
|
|
@@ -104,7 +103,6 @@ export const RUN_OPTION_FORWARDING = {
|
|
|
104
103
|
raw: 'local-only', // interactive builder forwards --raw itself
|
|
105
104
|
tmux: 'local-only',
|
|
106
105
|
disableTmux: 'local-only',
|
|
107
|
-
host: 'local-only',
|
|
108
106
|
device: 'local-only',
|
|
109
107
|
where: 'local-only', // expands into host/lease before dispatch; never re-forwarded
|
|
110
108
|
on: 'local-only',
|
|
@@ -120,7 +118,7 @@ export const RUN_OPTION_FORWARDING = {
|
|
|
120
118
|
tailscale: 'local-only', // --tailscale/--no-tailscale gate the lease net mode; never forwarded
|
|
121
119
|
copyCreds: 'local-only', // copies creds TO the host before dispatch — local concern only
|
|
122
120
|
// Cloud placement: chosen and dispatched from THIS machine via the provider
|
|
123
|
-
// registry; mutually exclusive with --
|
|
121
|
+
// registry; mutually exclusive with --device (placement conflict dies before
|
|
124
122
|
// dispatch), so these never have a remote argv to ride.
|
|
125
123
|
cloud: 'local-only',
|
|
126
124
|
provider: 'local-only',
|
|
@@ -135,19 +133,27 @@ export const RUN_OPTION_FORWARDING = {
|
|
|
135
133
|
notify: 'local-only',
|
|
136
134
|
// Deprecated alias for --device auto; resolved on the launching box before SSH.
|
|
137
135
|
smart: 'local-only',
|
|
136
|
+
// Broadcast mode (agents run --broadcast) is its own fan-out dispatch — mutually
|
|
137
|
+
// exclusive with --host. All broadcast options are local-only; exec.ts handles them
|
|
138
|
+
// before any SSH dispatch path is reached.
|
|
139
|
+
broadcast: 'local-only',
|
|
140
|
+
task: 'local-only',
|
|
141
|
+
listTasks: 'local-only',
|
|
142
|
+
results: 'local-only',
|
|
143
|
+
concurrency: 'local-only',
|
|
138
144
|
};
|
|
139
145
|
/** Actionable messages for value-aware rejections, keyed by attribute name. */
|
|
140
146
|
export const RUN_OPTION_REJECT_MESSAGES = {
|
|
141
|
-
terminal: '--terminal opens a tab on THIS machine; it cannot be combined with --
|
|
142
|
-
'Drop --terminal to dispatch to the
|
|
143
|
-
'To watch a remote run in a terminal, dispatch it and follow with `agents sessions
|
|
147
|
+
terminal: '--terminal opens a tab on THIS machine; it cannot be combined with --device. ' +
|
|
148
|
+
'Drop --terminal to dispatch to the device, or drop --device to open the tab here. ' +
|
|
149
|
+
'To watch a remote run in a terminal, dispatch it and follow with `agents sessions focus <id>`.',
|
|
144
150
|
secrets: '--secrets cannot cross the SSH boundary — Keychain values are never sent to a host implicitly. ' +
|
|
145
|
-
'Provision the bundle on the host first (agents secrets export --
|
|
151
|
+
'Provision the bundle on the host first (agents secrets export --device <name>), then run without --secrets; ' +
|
|
146
152
|
'workflow frontmatter secrets resolve from the HOST\'s own keychain.',
|
|
147
153
|
secretsKeys: '--secrets-keys applies to --secrets bundles, which cannot cross the SSH boundary (see --secrets).',
|
|
148
154
|
allowExpired: '--allow-expired applies to --secrets bundles, which cannot cross the SSH boundary (see --secrets).',
|
|
149
155
|
resumeCheckpoint: '--resume-checkpoint reads a local checkpoint.json — it cannot resume a run on another machine. Run it locally, or start a fresh --loop run on the host.',
|
|
150
|
-
resumeBare: '--resume with no id opens the interactive picker, which cannot run across a detached host dispatch. Pass a concrete session id: agents run <agent> --resume <id> --
|
|
156
|
+
resumeBare: '--resume with no id opens the interactive picker, which cannot run across a detached host dispatch. Pass a concrete session id: agents run <agent> --resume <id> --device <name>.',
|
|
151
157
|
};
|
|
152
158
|
/**
|
|
153
159
|
* Build the single command string for `ssh <target> <cmd>`. The forwarded args
|
|
@@ -298,7 +304,7 @@ export function windowsAgentsScript(cmd) {
|
|
|
298
304
|
/**
|
|
299
305
|
* Build the `ssh <target> <cmd>` string for one `agents …` invocation on a
|
|
300
306
|
* Windows remote: a `powershell -NoProfile -EncodedCommand <base64>` call. The
|
|
301
|
-
* Windows counterpart of `bash -lc '<...>'`, shared by every `--
|
|
307
|
+
* Windows counterpart of `bash -lc '<...>'`, shared by every `--device` site.
|
|
302
308
|
*/
|
|
303
309
|
export function buildWindowsAgentsCommand(cmd) {
|
|
304
310
|
return `powershell -NoProfile -EncodedCommand ${encodePowershell(windowsAgentsScript(cmd))}`;
|
|
@@ -319,18 +325,19 @@ export function buildWindowsAgentsCommand(cmd) {
|
|
|
319
325
|
*/
|
|
320
326
|
export function buildWindowsStdinImportCommand(bundle, opts = {}) {
|
|
321
327
|
const force = opts.force ? ' --force' : '';
|
|
328
|
+
const policy = opts.policyNever ? ' --policy never --i-understand' : '';
|
|
322
329
|
// Create AND write the temp file INSIDE the try so its finally always cleans
|
|
323
330
|
// up: if GetTempFileName succeeds but WriteAllText (or the import) then throws,
|
|
324
331
|
// the secret-bearing temp file would otherwise be left behind (RUSH-1764). $tmp
|
|
325
332
|
// starts null so a GetTempFileName that itself throws leaves nothing to remove.
|
|
326
333
|
const script = [
|
|
327
334
|
// Same CLIXML guard as windowsAgentsScript — this builder also runs `& agents …`
|
|
328
|
-
// and its raw stderr is printed to the user on failure (secrets export --
|
|
335
|
+
// and its raw stderr is printed to the user on failure (secrets export --device <win>).
|
|
329
336
|
POWERSHELL_PROGRESS_SILENCE,
|
|
330
337
|
'$in = [Console]::In.ReadToEnd()',
|
|
331
338
|
'$tmp = $null',
|
|
332
339
|
`try { $tmp = [System.IO.Path]::GetTempFileName(); [System.IO.File]::WriteAllText($tmp, $in); ` +
|
|
333
|
-
`& agents secrets import ${powershellQuote(bundle)} --from $tmp${force}; $code = $LASTEXITCODE } ` +
|
|
340
|
+
`& agents secrets import ${powershellQuote(bundle)} --from $tmp${force}${policy}; $code = $LASTEXITCODE } ` +
|
|
334
341
|
`finally { if ($tmp) { Remove-Item -LiteralPath $tmp -Force -ErrorAction SilentlyContinue } }`,
|
|
335
342
|
'if ($null -eq $code) { $code = 1 }',
|
|
336
343
|
'exit $code',
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* in `remote-cmd.ts` for how the string is consumed.
|
|
5
5
|
*
|
|
6
6
|
* Three sources, in priority order:
|
|
7
|
-
* 1. The
|
|
8
|
-
*
|
|
9
|
-
* `agents devices config <name> platform <os>`.
|
|
7
|
+
* 1. The config `platform` key (the per-device doc's config.platform,
|
|
8
|
+
* over the `fleet.defaults.config` fleet default) — the operator's
|
|
9
|
+
* explicit override, set with `agents devices config <name> platform <os>`.
|
|
10
10
|
* 2. The device registry `platform` (`windows`/`linux`/`macos`), which is
|
|
11
11
|
* populated fleet-wide by Tailscale sync — the reliable answer for a box
|
|
12
12
|
* like `win-mini` that was discovered, not hand-enrolled.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* when the overlay entry was written), for hosts that live only in that overlay.
|
|
15
15
|
*
|
|
16
16
|
* Missing/unknown from all three → `undefined`, which `remoteShellFor` maps to
|
|
17
|
-
* POSIX. Kept synchronous so the sync `agents sessions --
|
|
17
|
+
* POSIX. Kept synchronous so the sync `agents sessions --device` fan-out can use it.
|
|
18
18
|
*/
|
|
19
19
|
/** Resolve the OS/platform string for a host name, or undefined if unknown. */
|
|
20
20
|
export declare function resolveRemoteOsSync(name: string): string | undefined;
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* in `remote-cmd.ts` for how the string is consumed.
|
|
5
5
|
*
|
|
6
6
|
* Three sources, in priority order:
|
|
7
|
-
* 1. The
|
|
8
|
-
*
|
|
9
|
-
* `agents devices config <name> platform <os>`.
|
|
7
|
+
* 1. The config `platform` key (the per-device doc's config.platform,
|
|
8
|
+
* over the `fleet.defaults.config` fleet default) — the operator's
|
|
9
|
+
* explicit override, set with `agents devices config <name> platform <os>`.
|
|
10
10
|
* 2. The device registry `platform` (`windows`/`linux`/`macos`), which is
|
|
11
11
|
* populated fleet-wide by Tailscale sync — the reliable answer for a box
|
|
12
12
|
* like `win-mini` that was discovered, not hand-enrolled.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* when the overlay entry was written), for hosts that live only in that overlay.
|
|
15
15
|
*
|
|
16
16
|
* Missing/unknown from all three → `undefined`, which `remoteShellFor` maps to
|
|
17
|
-
* POSIX. Kept synchronous so the sync `agents sessions --
|
|
17
|
+
* POSIX. Kept synchronous so the sync `agents sessions --device` fan-out can use it.
|
|
18
18
|
*/
|
|
19
19
|
import { loadDevicesSync } from '../devices/registry.js';
|
|
20
20
|
import { readDeviceConfigValues } from '../device-config.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resolve a remote-created session id back to an interactive `--
|
|
2
|
+
* Resolve a remote-created session id back to an interactive `--device` launcher.
|
|
3
3
|
*
|
|
4
|
-
* A headless `--
|
|
4
|
+
* A headless `--device` run captures the remote-coined id from the followed log
|
|
5
5
|
* (the `--emit-session-id` marker — see session-marker.ts). An INTERACTIVE run
|
|
6
6
|
* has no followed log: the local TTY is wired straight through `sshStream`
|
|
7
7
|
* (stdio:'inherit'), so nothing can tap the stream for a marker without breaking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resolve a remote-created session id back to an interactive `--
|
|
2
|
+
* Resolve a remote-created session id back to an interactive `--device` launcher.
|
|
3
3
|
*
|
|
4
|
-
* A headless `--
|
|
4
|
+
* A headless `--device` run captures the remote-coined id from the followed log
|
|
5
5
|
* (the `--emit-session-id` marker — see session-marker.ts). An INTERACTIVE run
|
|
6
6
|
* has no followed log: the local TTY is wired straight through `sshStream`
|
|
7
7
|
* (stdio:'inherit'), so nothing can tap the stream for a marker without breaking
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
* `flagValue` lives here (not in passthrough.ts) for the same reason: the gate
|
|
11
11
|
* and the function body that later reads flag values share one implementation.
|
|
12
12
|
*/
|
|
13
|
-
/** Pull the value of `--
|
|
13
|
+
/** Pull the value of `--device`/`-D`/`--remote-cwd` (any form) out of an argv. */
|
|
14
14
|
export declare function flagValue(args: string[], long: string, short?: string): string | undefined;
|
|
15
15
|
/**
|
|
16
|
-
* True when argv carries any
|
|
17
|
-
* inspects: `--
|
|
16
|
+
* True when argv carries any device routing flag that {@link maybeRunOnHost}
|
|
17
|
+
* inspects: `--device`/`-D`, `--hosts`, `--devices` (space, `=`, or
|
|
18
18
|
* glued short form).
|
|
19
19
|
*
|
|
20
20
|
* Presence-only — does not validate values. Used by bootstrap before loading
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* `flagValue` lives here (not in passthrough.ts) for the same reason: the gate
|
|
11
11
|
* and the function body that later reads flag values share one implementation.
|
|
12
12
|
*/
|
|
13
|
-
/** Pull the value of `--
|
|
13
|
+
/** Pull the value of `--device`/`-D`/`--remote-cwd` (any form) out of an argv. */
|
|
14
14
|
export function flagValue(args, long, short) {
|
|
15
15
|
for (let i = 0; i < args.length; i++) {
|
|
16
16
|
const a = args[i];
|
|
@@ -26,16 +26,15 @@ export function flagValue(args, long, short) {
|
|
|
26
26
|
return undefined;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* True when argv carries any
|
|
30
|
-
* inspects: `--
|
|
29
|
+
* True when argv carries any device routing flag that {@link maybeRunOnHost}
|
|
30
|
+
* inspects: `--device`/`-D`, `--hosts`, `--devices` (space, `=`, or
|
|
31
31
|
* glued short form).
|
|
32
32
|
*
|
|
33
33
|
* Presence-only — does not validate values. Used by bootstrap before loading
|
|
34
34
|
* passthrough, and by `maybeRunStandaloneOnHost` before strip/route work.
|
|
35
35
|
*/
|
|
36
36
|
export function hasHostRoutingFlag(args) {
|
|
37
|
-
return (flagValue(args, '
|
|
38
|
-
flagValue(args, 'device') !== undefined ||
|
|
37
|
+
return (flagValue(args, 'device', 'D') !== undefined ||
|
|
39
38
|
flagValue(args, 'hosts') !== undefined ||
|
|
40
39
|
flagValue(args, 'devices') !== undefined);
|
|
41
40
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared host-run dispatch — the one path every surface uses to run an agent on
|
|
3
|
-
* another machine: `agents run --
|
|
3
|
+
* another machine: `agents run --device` (commands/exec.ts), the `host` cloud
|
|
4
4
|
* provider (`agents cloud run --provider host`), and host-placed routines.
|
|
5
5
|
*
|
|
6
6
|
* Wraps the two steps every caller needs and previously lived inline in
|
|
7
|
-
* exec.ts's `--
|
|
7
|
+
* exec.ts's `--device` branch:
|
|
8
8
|
* 1. resolution — name → capability tag → error, with the same fall-through
|
|
9
|
-
* semantics as `agents run --
|
|
9
|
+
* semantics as `agents run --device` (only "Multiple hosts tagged…" is a
|
|
10
10
|
* resolution verdict; "no host tagged" degrades to unknown-host), and
|
|
11
11
|
* 2. headless dispatch — session-id mint (Claude only), detached SSH launch,
|
|
12
12
|
* and LOCAL session-index registration so the run shows in `agents sessions`.
|
|
@@ -26,7 +26,7 @@ export declare class HostResolutionError extends Error {
|
|
|
26
26
|
constructor(message: string);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Resolve a `--
|
|
29
|
+
* Resolve a `--device` value the way `agents run` does: exact name (providers →
|
|
30
30
|
* devices → `user@host`), then capability tag. Throws `HostResolutionError`
|
|
31
31
|
* for an ambiguous tag or an unknown name; lets `DeviceOffloadUnsupportedError`
|
|
32
32
|
* (password-auth device) propagate untouched for the top-level catch.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared host-run dispatch — the one path every surface uses to run an agent on
|
|
3
|
-
* another machine: `agents run --
|
|
3
|
+
* another machine: `agents run --device` (commands/exec.ts), the `host` cloud
|
|
4
4
|
* provider (`agents cloud run --provider host`), and host-placed routines.
|
|
5
5
|
*
|
|
6
6
|
* Wraps the two steps every caller needs and previously lived inline in
|
|
7
|
-
* exec.ts's `--
|
|
7
|
+
* exec.ts's `--device` branch:
|
|
8
8
|
* 1. resolution — name → capability tag → error, with the same fall-through
|
|
9
|
-
* semantics as `agents run --
|
|
9
|
+
* semantics as `agents run --device` (only "Multiple hosts tagged…" is a
|
|
10
10
|
* resolution verdict; "no host tagged" degrades to unknown-host), and
|
|
11
11
|
* 2. headless dispatch — session-id mint (Claude only), detached SSH launch,
|
|
12
12
|
* and LOCAL session-index registration so the run shows in `agents sessions`.
|
|
@@ -30,7 +30,7 @@ export class HostResolutionError extends Error {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
* Resolve a `--
|
|
33
|
+
* Resolve a `--device` value the way `agents run` does: exact name (providers →
|
|
34
34
|
* devices → `user@host`), then capability tag. Throws `HostResolutionError`
|
|
35
35
|
* for an ambiguous tag or an unknown name; lets `DeviceOffloadUnsupportedError`
|
|
36
36
|
* (password-auth device) propagate untouched for the top-level catch.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Register host-dispatched runs (`agents run --
|
|
2
|
+
* Register host-dispatched runs (`agents run --device <h>`) into the LOCAL session
|
|
3
3
|
* index so they show up in `agents sessions` and are resolvable by id — even
|
|
4
4
|
* though the transcript itself lives on the remote host.
|
|
5
5
|
*
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
import type { SessionMeta } from '../session/types.js';
|
|
20
20
|
import { type HostTask } from './tasks.js';
|
|
21
21
|
export interface HostSessionContext {
|
|
22
|
-
/** Local directory the `agents run --
|
|
22
|
+
/** Local directory the `agents run --device` was invoked from. */
|
|
23
23
|
cwd: string;
|
|
24
24
|
/** Prompt the run was launched with, used for the session topic. */
|
|
25
25
|
prompt: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Register host-dispatched runs (`agents run --
|
|
2
|
+
* Register host-dispatched runs (`agents run --device <h>`) into the LOCAL session
|
|
3
3
|
* index so they show up in `agents sessions` and are resolvable by id — even
|
|
4
4
|
* though the transcript itself lives on the remote host.
|
|
5
5
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Relate a remote-created session id back to the launching agent.
|
|
3
3
|
*
|
|
4
|
-
* A host dispatch (`agents run --
|
|
4
|
+
* A host dispatch (`agents run --device`) launches `agents run` on the remote box.
|
|
5
5
|
* Only Claude accepts a forced `--session-id`, so for every OTHER agent the
|
|
6
6
|
* remote run coins its OWN session id (via its SessionStart hook) and the
|
|
7
7
|
* launcher never learns it — the run is orphaned in `agents sessions`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Relate a remote-created session id back to the launching agent.
|
|
3
3
|
*
|
|
4
|
-
* A host dispatch (`agents run --
|
|
4
|
+
* A host dispatch (`agents run --device`) launches `agents run` on the remote box.
|
|
5
5
|
* Only Claude accepts a forced `--session-id`, so for every OTHER agent the
|
|
6
6
|
* remote run coins its OWN session id (via its SessionStart hook) and the
|
|
7
7
|
* launcher never learns it — the run is orphaned in `agents sessions`.
|
|
@@ -19,7 +19,7 @@ export interface Host extends HostEntry {
|
|
|
19
19
|
enrolled?: boolean;
|
|
20
20
|
status?: HostStatus;
|
|
21
21
|
/**
|
|
22
|
-
* False when the host is listed for honesty but can't carry a `--
|
|
22
|
+
* False when the host is listed for honesty but can't carry a `--device` run
|
|
23
23
|
* (today: password-auth devices — offload rides BatchMode=yes ssh). Absent
|
|
24
24
|
* means dispatchable. Cap routing and target pickers filter on this.
|
|
25
25
|
*/
|
|
@@ -29,7 +29,7 @@ export interface Host extends HostEntry {
|
|
|
29
29
|
* Thrown when a device resolves but can't be used as an offload target because
|
|
30
30
|
* it authenticates with a password. The offload path runs over `sshExec`, whose
|
|
31
31
|
* `SSH_OPTS` force `BatchMode=yes` (no password prompts), so only key / ssh-config
|
|
32
|
-
* auth can carry a `--
|
|
32
|
+
* auth can carry a `--device` run. Named so the top-level catch prints the message
|
|
33
33
|
* cleanly instead of a stack trace. (Lives here, not registry.ts, so providers
|
|
34
34
|
* can throw it without a circular import; registry.ts re-exports it.)
|
|
35
35
|
*/
|
package/dist/lib/hosts/types.js
CHANGED
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
* Thrown when a device resolves but can't be used as an offload target because
|
|
13
13
|
* it authenticates with a password. The offload path runs over `sshExec`, whose
|
|
14
14
|
* `SSH_OPTS` force `BatchMode=yes` (no password prompts), so only key / ssh-config
|
|
15
|
-
* auth can carry a `--
|
|
15
|
+
* auth can carry a `--device` run. Named so the top-level catch prints the message
|
|
16
16
|
* cleanly instead of a stack trace. (Lives here, not registry.ts, so providers
|
|
17
17
|
* can throw it without a circular import; registry.ts re-exports it.)
|
|
18
18
|
*/
|
|
19
19
|
export class DeviceOffloadUnsupportedError extends Error {
|
|
20
20
|
constructor(name) {
|
|
21
|
-
super(`Device "${name}" uses password auth, which --
|
|
21
|
+
super(`Device "${name}" uses password auth, which --device offload can't use yet ` +
|
|
22
22
|
`(runs go over ssh with BatchMode=yes). Switch it to key auth with ` +
|
|
23
23
|
`\`agents devices config ${name} ssh.auth key\`.`);
|
|
24
24
|
this.name = 'DeviceOffloadUnsupportedError';
|
package/dist/lib/import.js
CHANGED
|
@@ -21,7 +21,7 @@ import * as os from 'os';
|
|
|
21
21
|
import * as path from 'path';
|
|
22
22
|
import { AGENTS, resolveNativeBinaryPath } from './agents.js';
|
|
23
23
|
import { getUserAgentsDir, getVersionsDir } from './state.js';
|
|
24
|
-
import { setGlobalDefault } from './versions.js';
|
|
24
|
+
import { setGlobalDefault } from './installations/versions.js';
|
|
25
25
|
import { createShim, createVersionedAlias, ensureShimCurrent, switchHomeFileSymlinks, assertIsolationBoundary } from './shims.js';
|
|
26
26
|
const IMPORT_VERSION_RE = /^(?:latest|[A-Za-z0-9._+-]{1,64})$/;
|
|
27
27
|
export function isValidImportVersion(version) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Called from postinstall and as a command-time fallback from agents view/use/pull.
|
|
5
5
|
* Each migration is guarded by an existence check so re-running is safe.
|
|
6
6
|
*/
|
|
7
|
-
export { foldLegacySystemRepo } from '
|
|
7
|
+
export { foldLegacySystemRepo } from '../migrate-fold.js';
|
|
8
8
|
/**
|
|
9
9
|
* Migrate a legacy single-repo agents.yaml into ~/.agents/agents.yaml.
|
|
10
10
|
*
|
|
@@ -58,6 +58,42 @@ export declare function foldBrowserSessionsIntoProfiles(browserDir?: string): vo
|
|
|
58
58
|
* can drive a fixture tree without touching the user's ~/.agents.
|
|
59
59
|
*/
|
|
60
60
|
export declare function repairSelfReferentialBinShims(versionsRoot?: string, shimsDir?: string, historyDir?: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Move the auto-detected `default` browser profile OUT of the committed central
|
|
63
|
+
* agents.yaml and into this machine's per-device file.
|
|
64
|
+
*
|
|
65
|
+
* `browser` is a CENTRAL key because named profiles a user creates are real fleet
|
|
66
|
+
* config, but the ONE `default` entry inside it is machine-local: its `binary` is
|
|
67
|
+
* an OS-specific path and its endpoint is a locally-chosen free port.
|
|
68
|
+
* `createProfile`/`updateProfile` already route that entry to `deviceBrowser`
|
|
69
|
+
* (`isMachineLocalProfile`, browser/profiles.ts) — but nothing ever removed the
|
|
70
|
+
* copy older versions had already written into the shared file, and
|
|
71
|
+
* `serializeCentral` cannot: it deletes whole KEYS that are device-scoped, and
|
|
72
|
+
* `browser` is not one.
|
|
73
|
+
*
|
|
74
|
+
* So the entry sat in the committed file and every box rewrote it with its own
|
|
75
|
+
* browser. Measured 2026-08-13, all three boxes on 1.22.38 (which HAS the writer
|
|
76
|
+
* fix) with an empty `deviceBrowser` and a machine-specific `default` in central:
|
|
77
|
+
*
|
|
78
|
+
* zion browser: chrome binary: /Applications/Google Chrome.app/...
|
|
79
|
+
* yosemite-s1 browser: brave binary: /opt/brave.com/brave/brave
|
|
80
|
+
* mark-1 (same shape)
|
|
81
|
+
*
|
|
82
|
+
* `agents repos pull user` refuses when an incoming change touches a locally
|
|
83
|
+
* modified path, so agents.yaml being permanently dirty wedged the fleet config
|
|
84
|
+
* sync outright — those boxes sat 5, 8 and 79 commits behind. (RUSH-2161)
|
|
85
|
+
*
|
|
86
|
+
* Idempotent: no-op once central carries no `default` entry. The device file is
|
|
87
|
+
* written FIRST so a crash between the two writes can never lose the profile,
|
|
88
|
+
* and an entry already in the device file wins (this machine's live value is
|
|
89
|
+
* newer than the stale central copy by construction).
|
|
90
|
+
*
|
|
91
|
+
* Central is edited through a `yaml.Document` rather than re-stringified, so the
|
|
92
|
+
* hand-written comments in the committed agents.yaml survive — a plain
|
|
93
|
+
* `yaml.stringify` would drop every one of them and rewrite the whole file,
|
|
94
|
+
* which is the same churn this migration exists to stop (see `serializeCentral`).
|
|
95
|
+
*/
|
|
96
|
+
export declare function migrateMachineLocalBrowserProfileOutOfCentral(userDir?: string, machine?: string): void;
|
|
61
97
|
/**
|
|
62
98
|
* Rename the legacy `extras-extras/` plugin-marketplace dir to `agents-extras/`
|
|
63
99
|
* inside every installed agent version-home, and rewrite cross-references in
|
|
@@ -179,5 +215,17 @@ export declare function seedActiveCursorLoginPerVersion(): void;
|
|
|
179
215
|
* `foo.yaml` beside it. Idempotent; a no-op once the dirs are clean.
|
|
180
216
|
*/
|
|
181
217
|
export declare function migrateKimiSubagentsToMarkdown(versionsDir?: string): void;
|
|
218
|
+
/**
|
|
219
|
+
* Remove the compiled "project" ruleset the compiler used to write into $HOME
|
|
220
|
+
* (RUSH-2725). `compileRulesForProject` treated any cwd with `.agents/rules`
|
|
221
|
+
* as a project — and the user layer at ~/.agents satisfies that test — so it
|
|
222
|
+
* wrote ~/AGENTS.md plus per-agent symlinks, and every session under $HOME
|
|
223
|
+
* then loaded the entire ruleset twice (global memory + "project" memory).
|
|
224
|
+
* The compiler now refuses reserved roots; this removes the artifact already
|
|
225
|
+
* on disk. Only files we provably own are touched: an AGENTS.md carrying the
|
|
226
|
+
* compiled-project header, symlinks pointing at it, and copy-fallback files
|
|
227
|
+
* (symlink-less filesystems) carrying the same header.
|
|
228
|
+
*/
|
|
229
|
+
export declare function removeHomeCompiledProjectRules(homeDir?: string): void;
|
|
182
230
|
/** Run all idempotent migrations. Safe to call multiple times. */
|
|
183
231
|
export declare function runMigration(): Promise<void>;
|