@phnx-labs/agents-cli 1.22.39 → 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 +294 -0
- package/README.md +111 -70
- package/dist/bin/agents +0 -0
- package/dist/bootstrap.js +45 -26
- 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 +16 -3
- 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 +160 -215
- 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 +186 -64
- 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 +2 -1
- package/dist/lib/config-keys.js +8 -4
- package/dist/lib/config-machine-keys.d.ts +4 -2
- package/dist/lib/config-machine-keys.js +5 -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 +85 -75
- package/dist/lib/device-config.js +279 -141
- 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 +10 -5
- package/dist/lib/devices/pool.js +5 -7
- 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 +4 -4
- package/dist/lib/exec.js +11 -11
- 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} +13 -1
- package/dist/lib/{migrate.js → installations/migrate.js} +160 -40
- 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 +4 -4
- package/dist/lib/smart-launch.js +6 -4
- 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
|
@@ -14,7 +14,7 @@ import { homeDir } from '../lib/platform/index.js';
|
|
|
14
14
|
import { capableAgents } from '../lib/capabilities.js';
|
|
15
15
|
import { cloneRepo } from '../lib/git.js';
|
|
16
16
|
import { discoverSubagentsFromRepo, installSubagentCentrally, listInstalledSubagents, getInstalledSubagent, listSubagentsForAgent, iterSubagentsCapableVersions, removeSubagentFromVersion, } from '../lib/subagents.js';
|
|
17
|
-
import { listInstalledVersions, syncResourcesToVersion, getGlobalDefault, getVersionHomePath, promptAgentVersionSelection, } from '../lib/versions.js';
|
|
17
|
+
import { listInstalledVersions, syncResourcesToVersion, getGlobalDefault, getVersionHomePath, promptAgentVersionSelection, } from '../lib/installations/versions.js';
|
|
18
18
|
import { getSubagentsDir, recordVersionResources } from '../lib/state.js';
|
|
19
19
|
import { requireDestructiveArg, promptRemovalTargets, parseCommaSeparatedList, resolveAgentTargetsAutoInstalling, } from './utils.js';
|
|
20
20
|
import { showResourceList, buildTargetsSection, } from './resource-view.js';
|
package/dist/commands/sync.js
CHANGED
|
@@ -34,7 +34,7 @@ import { Option } from 'commander';
|
|
|
34
34
|
import chalk from 'chalk';
|
|
35
35
|
import { resolveSyncPassphraseFromEnv } from '../lib/secrets/sync-passphrase.js';
|
|
36
36
|
import { agentLabel, resolveAgentName, MANAGED_AGENT_IDS, isAgentHardDeprecated, hardDeprecationError } from '../lib/agents.js';
|
|
37
|
-
import { isVersionInstalled, syncResourcesToVersion, parseAgentSpec, resolveVersion, resolveVersionAlias, listInstalledVersions, getAvailableResources, getActuallySyncedResources, getProjectOnlyResources, getNewResources, hasNewResources, promptResourceSelection, promptNewResourceSelection, buildSelection, mergeRepoScopedSelections, listRepoNames, getVersionHomePath, } from '../lib/versions.js';
|
|
37
|
+
import { isVersionInstalled, syncResourcesToVersion, parseAgentSpec, resolveVersion, resolveVersionAlias, listInstalledVersions, getAvailableResources, getActuallySyncedResources, getProjectOnlyResources, getNewResources, hasNewResources, promptResourceSelection, promptNewResourceSelection, buildSelection, mergeRepoScopedSelections, listRepoNames, getVersionHomePath, } from '../lib/installations/versions.js';
|
|
38
38
|
import { capableAgents } from '../lib/capabilities.js';
|
|
39
39
|
import { parseHookManifest, registerHooksToSettings } from '../lib/hooks.js';
|
|
40
40
|
import { compileRulesForProject } from '../lib/rules/compile.js';
|
|
@@ -134,7 +134,7 @@ export function addSelectorOptions(cmd) {
|
|
|
134
134
|
export function registerSyncCommand(program) {
|
|
135
135
|
const cmd = addHostOption(program.command('sync [agentSpec] [repo]'))
|
|
136
136
|
.summary('Make this machine current, or sync resources into one agent')
|
|
137
|
-
.description('With an [agentSpec], syncs resources (commands, skills, hooks, rules, MCPs, plugins, etc.) into that installed agent version — previews changes and lets you pick. e.g. "claude", "claude@2.1.142", a selector: @latest / @oldest / @pinned (= @default), or @all for every installed version.\n\nAppend a [repo] (or pass --repo) to scope the sync to a single DotAgent repo — system / user / project / <alias>. e.g. "agents sync claude@all system" reconciles only the system repo\'s resources into every installed Claude.\n\nGive a DotAgent repo name ALONE — "agents sync system" / "agents sync user" / "agents sync <alias>" — to git-sync that one repo: git pull --rebase against origin when the tree is clean; when it is dirty, fast-forward anyway if no incoming path is uncommitted, else refuse and name what collided. The user repo and extra aliases also push local commits up; the system repo is a pull-only mirror.\n\nWith NO agent, runs the umbrella verb: fetch the config repos then reconcile them into every installed agent. Secrets are opt-in — add --secrets to pull secret bundles. Session transcripts are queryable live via "agents sessions --
|
|
137
|
+
.description('With an [agentSpec], syncs resources (commands, skills, hooks, rules, MCPs, plugins, etc.) into that installed agent version — previews changes and lets you pick. e.g. "claude", "claude@2.1.142", a selector: @latest / @oldest / @pinned (= @default), or @all for every installed version.\n\nAppend a [repo] (or pass --repo) to scope the sync to a single DotAgent repo — system / user / project / <alias>. e.g. "agents sync claude@all system" reconciles only the system repo\'s resources into every installed Claude.\n\nGive a DotAgent repo name ALONE — "agents sync system" / "agents sync user" / "agents sync <alias>" — to git-sync that one repo: git pull --rebase against origin when the tree is clean; when it is dirty, fast-forward anyway if no incoming path is uncommitted, else refuse and name what collided. The user repo and extra aliases also push local commits up; the system repo is a pull-only mirror.\n\nWith NO agent, runs the umbrella verb: fetch the config repos then reconcile them into every installed agent. Secrets are opt-in — add --secrets to pull secret bundles. Session transcripts are queryable live via "agents sessions --device <machine>", or moved with "agents sessions export/import". Also: --cloud (fetch only), --local (reconcile only).')
|
|
138
138
|
.option('--agent <agent>', 'Agent identifier (legacy form; prefer the positional spec)')
|
|
139
139
|
.option('--agent-version <version>', 'Version to sync into (legacy form; prefer "agent@version" or --version)')
|
|
140
140
|
.option('--repo <name>', 'Scope the sync to a single DotAgent repo: system / user / project / <alias> (also accepted as a positional)')
|
|
@@ -146,7 +146,7 @@ export function registerSyncCommand(program) {
|
|
|
146
146
|
.option('--quiet', 'Suppress all output (exit code indicates success)', false)
|
|
147
147
|
.option('--dry-run', 'Show what would be synced without making any changes', false)
|
|
148
148
|
.option('--allow-exec-surfaces', 'Allow syncing plugin exec surfaces (scripts, binaries) — off by default for safety', false)
|
|
149
|
-
.option('--json', 'Emit machine-readable JSON (also accepted so fleet fan-out via --
|
|
149
|
+
.option('--json', 'Emit machine-readable JSON (also accepted so fleet fan-out via --device all can parse each peer)', false)
|
|
150
150
|
// Umbrella verb (no agent given): make this machine current.
|
|
151
151
|
.option('--repos', 'Umbrella: git-pull ~/.agents + enabled ~/.agents-* extras', false)
|
|
152
152
|
.option('--secrets', 'Umbrella: pull encrypted secret bundles from the remote', false)
|
|
@@ -317,7 +317,7 @@ async function runInteractiveReconcile(opts, outLog, errLog) {
|
|
|
317
317
|
/**
|
|
318
318
|
* The umbrella verb: bare `agents sync` (no agent) makes this machine current.
|
|
319
319
|
* Resolves the flags + a secrets passphrase (env-only for now; tokenized auth
|
|
320
|
-
* arrives with `agents
|
|
320
|
+
* arrives with `agents secrets vault unlock`) and runs the fetch+reconcile stages, then prints
|
|
321
321
|
* a one-line summary. Stage failures are non-fatal and surfaced as warnings.
|
|
322
322
|
*/
|
|
323
323
|
async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
@@ -357,13 +357,15 @@ async function runUmbrella(opts, quiet, outLog, errLog, json = false) {
|
|
|
357
357
|
});
|
|
358
358
|
if (json) {
|
|
359
359
|
emitJson({
|
|
360
|
-
|
|
360
|
+
// A refused resource is not a clean sync (RUSH-2700).
|
|
361
|
+
ok: result.declined.length === 0,
|
|
361
362
|
mode: 'umbrella',
|
|
362
363
|
plan: result.plan,
|
|
363
364
|
repos: result.repos,
|
|
364
365
|
secrets: result.secrets,
|
|
365
366
|
devices: result.devices,
|
|
366
367
|
reconciled: result.reconciled,
|
|
368
|
+
declined: result.declined,
|
|
367
369
|
});
|
|
368
370
|
return;
|
|
369
371
|
}
|
|
@@ -498,7 +500,7 @@ async function runSync(agentSpec, repoArg, opts) {
|
|
|
498
500
|
if (!agentId) {
|
|
499
501
|
// No agent specified → the umbrella verb: make this machine current
|
|
500
502
|
// (fetch repos + secrets + sessions, then reconcile all installed agents).
|
|
501
|
-
// This is the path fleet fan-out (`--
|
|
503
|
+
// This is the path fleet fan-out (`--device all`) hits with injected --json.
|
|
502
504
|
await runUmbrella(opts, quiet, outLog, errLog, json);
|
|
503
505
|
return;
|
|
504
506
|
}
|
|
@@ -575,7 +577,8 @@ async function runSync(agentSpec, repoArg, opts) {
|
|
|
575
577
|
}
|
|
576
578
|
if (json) {
|
|
577
579
|
emitJson({
|
|
578
|
-
ok
|
|
580
|
+
// Any version that refused a write makes the whole run not-ok (RUSH-2700).
|
|
581
|
+
ok: versions.every(({ result }) => result.declined.length === 0),
|
|
579
582
|
mode: 'agent-all',
|
|
580
583
|
agent: agentId,
|
|
581
584
|
repo: repoScope,
|
|
@@ -591,6 +594,7 @@ async function runSync(agentSpec, repoArg, opts) {
|
|
|
591
594
|
plugins: result.plugins,
|
|
592
595
|
workflows: result.workflows,
|
|
593
596
|
pruned: result.pruned,
|
|
597
|
+
declined: result.declined,
|
|
594
598
|
})),
|
|
595
599
|
});
|
|
596
600
|
}
|
|
@@ -810,7 +814,10 @@ async function runSync(agentSpec, repoArg, opts) {
|
|
|
810
814
|
/** Stable `--json` payload for a single agent@version resource sync. */
|
|
811
815
|
function agentSyncJson(agent, version, result, repo) {
|
|
812
816
|
return {
|
|
813
|
-
ok
|
|
817
|
+
// A refused resource is not a clean sync. `ok` was hardcoded true, so the
|
|
818
|
+
// machine surface (`--host all` fan-out) reported success for exactly the
|
|
819
|
+
// silent no-op this changed (RUSH-2677).
|
|
820
|
+
ok: result.declined.length === 0,
|
|
814
821
|
mode: 'agent',
|
|
815
822
|
agent,
|
|
816
823
|
version,
|
|
@@ -826,6 +833,7 @@ function agentSyncJson(agent, version, result, repo) {
|
|
|
826
833
|
workflows: result.workflows,
|
|
827
834
|
projectSkipped: result.projectSkipped,
|
|
828
835
|
pruned: result.pruned,
|
|
836
|
+
declined: result.declined,
|
|
829
837
|
};
|
|
830
838
|
}
|
|
831
839
|
function anyResources(r) {
|
|
@@ -864,7 +872,7 @@ function printSyncDetail(result, agent, version, cwd) {
|
|
|
864
872
|
const prunedLines = Object.entries(result.pruned)
|
|
865
873
|
.filter(([, names]) => names.length > 0)
|
|
866
874
|
.map(([kind, names]) => ({ kind, items: names }));
|
|
867
|
-
if (lines.length === 0 && prunedLines.length === 0) {
|
|
875
|
+
if (lines.length === 0 && prunedLines.length === 0 && result.declined.length === 0) {
|
|
868
876
|
console.log(chalk.gray(`Already in sync — ${agentLabel(agent)}@${version}`));
|
|
869
877
|
if (kept)
|
|
870
878
|
console.log(chalk.gray(kept));
|
|
@@ -891,6 +899,13 @@ function printSyncDetail(result, agent, version, cwd) {
|
|
|
891
899
|
for (const { kind, items } of prunedLines)
|
|
892
900
|
printKindLine(kind, items, kindWidth, chalk.yellow);
|
|
893
901
|
}
|
|
902
|
+
// A resource agents-cli refused to write is reported, never swallowed — an
|
|
903
|
+
// empty synced list on its own reads as "nothing to do" (RUSH-2677).
|
|
904
|
+
if (result.declined.length > 0) {
|
|
905
|
+
console.log(chalk.yellow(`Not written to ${agentLabel(agent)}@${version}:`));
|
|
906
|
+
for (const reason of result.declined)
|
|
907
|
+
console.log(` ${chalk.yellow(reason)}`);
|
|
908
|
+
}
|
|
894
909
|
if (kept)
|
|
895
910
|
console.log(chalk.gray(kept));
|
|
896
911
|
}
|
package/dist/commands/teams.d.ts
CHANGED
|
@@ -115,8 +115,8 @@ spawners?: Map<string, TeamSpawner>): {
|
|
|
115
115
|
};
|
|
116
116
|
/**
|
|
117
117
|
* `teams add --remote-cwd` is a no-op trap. `--remote-cwd` comes from the shared
|
|
118
|
-
* `--
|
|
119
|
-
* to a host, but `teams add` special-cases `--
|
|
118
|
+
* `--device` option family (option.ts) and is meaningful for commands that *route*
|
|
119
|
+
* to a host, but `teams add` special-cases `--device`/`--device` as PLACEMENT, so
|
|
120
120
|
* the flag is never read — a teammate's directory is the team's repo plus its
|
|
121
121
|
* `--worktree`, not a path passed here. Silently ignoring it misleads you into
|
|
122
122
|
* thinking it set the teammate's repo path (the exact wrong model that turns one
|
package/dist/commands/teams.js
CHANGED
|
@@ -6,7 +6,7 @@ import * as path from 'path';
|
|
|
6
6
|
import { AgentManager, AgentStatus, checkCliSignedIn, collectTeamsDoctorData, getAgentsDir, VALID_TASK_TYPES, } from '../lib/teams/agents.js';
|
|
7
7
|
import { mailboxDir, enqueue } from '../lib/mailbox.js';
|
|
8
8
|
import { resolveProvider } from '../lib/cloud/registry.js';
|
|
9
|
-
import { emit } from '../lib/events.js';
|
|
9
|
+
import { emit } from '../lib/feed/events.js';
|
|
10
10
|
import { maybeShowStarNudge } from '../lib/star-nudge.js';
|
|
11
11
|
import { shareRuntimeEnv } from '../lib/share/config.js';
|
|
12
12
|
import { runSupervisor } from '../lib/teams/supervisor.js';
|
|
@@ -26,13 +26,13 @@ import { resolveRemoteOsSync } from '../lib/hosts/remote-os.js';
|
|
|
26
26
|
import { remoteWorktreeDirty, removeRemoteWorktree, ensureRemoteRepo, remoteCommitsBehindDefault } from '../lib/teams/remoteWorktree.js';
|
|
27
27
|
import { getRemoteUrl } from '../lib/git.js';
|
|
28
28
|
import { machineId } from '../lib/session/sync/config.js';
|
|
29
|
-
import { isVersionInstalled, resolveVersionAlias, resolveVersionAliasLoose } from '../lib/versions.js';
|
|
29
|
+
import { isVersionInstalled, resolveVersionAlias, resolveVersionAliasLoose } from '../lib/installations/versions.js';
|
|
30
30
|
import { AGENTS, warnAgentDeprecated } from '../lib/agents.js';
|
|
31
31
|
import { discoverSessions, parseTimeFilter, resolveSessionById } from '../lib/session/discover.js';
|
|
32
32
|
import { renderSessionLog } from './sessions.js';
|
|
33
33
|
import { buildPreview as buildSessionPreview } from './sessions-picker.js';
|
|
34
34
|
import { parseExecEnv } from '../lib/exec.js';
|
|
35
|
-
import { checkRunAccountReadiness } from '../lib/rotate.js';
|
|
35
|
+
import { checkRunAccountReadiness } from '../lib/accounting/rotate.js';
|
|
36
36
|
import { teamPicker, printTeamTable } from './teams-picker.js';
|
|
37
37
|
import { teamSpawners } from '../lib/session/db.js';
|
|
38
38
|
import { itemPicker } from '../lib/picker.js';
|
|
@@ -1155,8 +1155,8 @@ async function pickTeamOr(mgr, command) {
|
|
|
1155
1155
|
}
|
|
1156
1156
|
/**
|
|
1157
1157
|
* `teams add --remote-cwd` is a no-op trap. `--remote-cwd` comes from the shared
|
|
1158
|
-
* `--
|
|
1159
|
-
* to a host, but `teams add` special-cases `--
|
|
1158
|
+
* `--device` option family (option.ts) and is meaningful for commands that *route*
|
|
1159
|
+
* to a host, but `teams add` special-cases `--device`/`--device` as PLACEMENT, so
|
|
1160
1160
|
* the flag is never read — a teammate's directory is the team's repo plus its
|
|
1161
1161
|
* `--worktree`, not a path passed here. Silently ignoring it misleads you into
|
|
1162
1162
|
* thinking it set the teammate's repo path (the exact wrong model that turns one
|
|
@@ -1347,7 +1347,6 @@ export function registerTeamsCommands(program) {
|
|
|
1347
1347
|
.option('--enable-worktrees', 'Each teammate works in its own git worktree (requires --worktree on add)')
|
|
1348
1348
|
.option('--use-worktree <path>', 'All teammates share this existing worktree path (mutually exclusive with --enable-worktrees)')
|
|
1349
1349
|
.option('--devices <list>', 'Pool of machines this team may run teammates on (comma-separated). Enables distributed auto-scheduling.')
|
|
1350
|
-
.option('--hosts <list>', 'Alias for --devices.')
|
|
1351
1350
|
.option('--repo <urlOrPath>', 'How each remote (--device) teammate gets the code — ONE git URL/path for the whole team (existing checkout reused, else cloned). A team is single-repo; for work across repos, make one team per repo. Defaults to this checkout origin.')
|
|
1352
1351
|
.option('--project <slug>', "Work this team on a defined project: its primary directory is each local teammate's base cwd, its other directories become --add-dir grants")
|
|
1353
1352
|
.option('--json', 'Output machine-readable JSON')
|
|
@@ -1460,7 +1459,7 @@ export function registerTeamsCommands(program) {
|
|
|
1460
1459
|
.option('--confirm', 'Proceed even when the base checkout/repo is behind origin/main (a stale repo otherwise blocks the add)')
|
|
1461
1460
|
.option('--json', 'Output machine-readable JSON')
|
|
1462
1461
|
.action(async (team, teammate, task, opts) => {
|
|
1463
|
-
// `--remote-cwd` rides the shared --
|
|
1462
|
+
// `--remote-cwd` rides the shared --device option family but is never read by
|
|
1464
1463
|
// `teams add` (placement, not routing). Fail loud with guidance rather than
|
|
1465
1464
|
// silently ignoring it — see remoteCwdOnAddError. `!== undefined` so even an
|
|
1466
1465
|
// explicit empty value (`--remote-cwd ""`) is rejected, not silently dropped.
|
|
@@ -1495,17 +1494,9 @@ export function registerTeamsCommands(program) {
|
|
|
1495
1494
|
// device gets the code) before we resolve a per-teammate --device pin.
|
|
1496
1495
|
await ensureTeam(team);
|
|
1497
1496
|
const teamMeta = await getTeam(team);
|
|
1498
|
-
//
|
|
1499
|
-
//
|
|
1500
|
-
|
|
1501
|
-
let explicitDevice = (() => {
|
|
1502
|
-
const h = opts.host;
|
|
1503
|
-
const d = opts.device;
|
|
1504
|
-
if (h && d && h !== d) {
|
|
1505
|
-
dieFriction('teams', 'conflicting-host-device', 'Conflicting --host/--device values — pass just one.');
|
|
1506
|
-
}
|
|
1507
|
-
return h ?? d ?? null;
|
|
1508
|
-
})();
|
|
1497
|
+
// For `teams add` the passthrough special-cases --device as PLACEMENT,
|
|
1498
|
+
// not routing, so the local action reads it here.
|
|
1499
|
+
let explicitDevice = opts.device ?? null;
|
|
1509
1500
|
// `auto` is the same live fleet sentinel `agents run --device auto` resolves
|
|
1510
1501
|
// (RUSH-2185) — pick the concrete device name up front so the local-machine
|
|
1511
1502
|
// check right below (and every dieFriction message further down) sees the
|
package/dist/commands/tmux.js
CHANGED
|
@@ -24,7 +24,7 @@ import chalk from 'chalk';
|
|
|
24
24
|
import { truncate } from '../lib/format.js';
|
|
25
25
|
import * as path from 'path';
|
|
26
26
|
import { setHelpSections } from '../lib/help.js';
|
|
27
|
-
import { assertTmuxAvailable, attachTmux, capturePane, createSession, getDefaultSocketPath, getTmuxVersion, hasSession, isTmuxInstalled, isTmuxVersionSupported, killAll, killSession, listSessions, MIN_TMUX_VERSION, readSessionMeta, sendKeys, splitPane, TmuxCommandError, TmuxSessionError, TmuxUnavailableError, } from '../lib/tmux/index.js';
|
|
27
|
+
import { assertTmuxAvailable, attachTmux, capturePane, createSession, ensureSessionHookRepaired, getDefaultSocketPath, getTmuxVersion, hasSession, isTmuxInstalled, isTmuxVersionSupported, killAll, killSession, listSessions, MIN_TMUX_VERSION, readSessionMeta, sendKeys, splitPane, TmuxCommandError, TmuxSessionError, TmuxUnavailableError, } from '../lib/tmux/index.js';
|
|
28
28
|
/** Register the `agents tmux` command tree. */
|
|
29
29
|
export function registerTmuxCommands(program) {
|
|
30
30
|
const tmux = program
|
|
@@ -158,6 +158,10 @@ export function registerTmuxCommands(program) {
|
|
|
158
158
|
console.error(chalk.red('attach requires a TTY. Run this from an interactive shell.'));
|
|
159
159
|
process.exit(1);
|
|
160
160
|
}
|
|
161
|
+
// Repair a legacy/stale pane-died hook before handing the session to an
|
|
162
|
+
// attach client — the 5-min daemon reconcile that used to cover this was
|
|
163
|
+
// deleted; attach-time repair is what closes the gap now (RUSH-2435).
|
|
164
|
+
await ensureSessionHookRepaired(name, socket);
|
|
161
165
|
const code = await attachTmux({ socket, args: ['attach-session', '-t', `=${name}`] });
|
|
162
166
|
process.exit(code);
|
|
163
167
|
});
|
package/dist/commands/trash.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as fs from 'fs';
|
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { resolveAgentName, agentLabel } from '../lib/agents.js';
|
|
5
5
|
import { getTrashVersionsDir } from '../lib/state.js';
|
|
6
|
-
import { getVersionDir } from '../lib/versions.js';
|
|
6
|
+
import { getVersionDir } from '../lib/installations/versions.js';
|
|
7
7
|
function listTrashEntries(filterAgent) {
|
|
8
8
|
const root = getTrashVersionsDir();
|
|
9
9
|
if (!fs.existsSync(root))
|
package/dist/commands/usage.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { Command } from 'commander';
|
|
14
14
|
import type { AgentId } from '../lib/types.js';
|
|
15
|
-
import { getUsageInfoForIdentity } from '../lib/usage.js';
|
|
15
|
+
import { getUsageInfoForIdentity } from '../lib/accounting/usage.js';
|
|
16
16
|
/** One agent's usage snapshot — the unit the text and --json renderers share. */
|
|
17
17
|
export interface AgentUsageRecord {
|
|
18
18
|
agent: AgentId;
|
package/dist/commands/usage.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { addHostOption } from '../lib/hosts/option.js';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { ALL_AGENT_IDS, AGENTS, getAccountInfo, agentLabel, resolveAgentName, formatAgentError, } from '../lib/agents.js';
|
|
4
|
-
import { listInstalledVersions, getGlobalDefault, getVersionHomePath } from '../lib/versions.js';
|
|
5
|
-
import { agentReportsUsage, formatUsageSection, getUsageInfoForIdentity } from '../lib/usage.js';
|
|
4
|
+
import { listInstalledVersions, getGlobalDefault, getVersionHomePath } from '../lib/installations/versions.js';
|
|
5
|
+
import { agentReportsUsage, formatUsageSection, getUsageInfoForIdentity } from '../lib/accounting/usage.js';
|
|
6
6
|
export function registerUsageCommand(program) {
|
|
7
7
|
addHostOption(program.command('usage [agent]'))
|
|
8
8
|
.description('Show rate-limit / quota usage per agent')
|
package/dist/commands/utils.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Command } from 'commander';
|
|
8
8
|
import type { AgentId } from '../lib/types.js';
|
|
9
|
-
import { type InstalledAgentTargetResult, type VersionSelectionResult } from '../lib/versions.js';
|
|
9
|
+
import { type InstalledAgentTargetResult, type VersionSelectionResult } from '../lib/installations/versions.js';
|
|
10
10
|
/**
|
|
11
11
|
* Resolve a read/list command's `@version` filter through the agent-spec engine,
|
|
12
12
|
* exiting cleanly on a bad spec. Drop-in for the old
|
|
@@ -15,14 +15,8 @@ import { type InstalledAgentTargetResult, type VersionSelectionResult } from '..
|
|
|
15
15
|
* @latest/@oldest/@x.y.z → concrete.
|
|
16
16
|
*/
|
|
17
17
|
export declare function resolveListFilterOrExit(agent: AgentId, qualifier: string | undefined | null): string | undefined;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
21
|
-
export declare function isPromptCancelled(err: unknown): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* True when stdin/stdout are attached to a real terminal.
|
|
24
|
-
*/
|
|
25
|
-
export declare function isInteractiveTerminal(): boolean;
|
|
18
|
+
import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList } from '../lib/format.js';
|
|
19
|
+
export { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList };
|
|
26
20
|
/** The resolved I/O surface for one command invocation — the human/agent split. */
|
|
27
21
|
export interface Surface {
|
|
28
22
|
/** Machine-readable output was requested (`--json`). */
|
|
@@ -73,10 +67,6 @@ export declare function requireDestructiveArg(opts: {
|
|
|
73
67
|
* Print long content directly in non-interactive shells, use a pager only for real terminals.
|
|
74
68
|
*/
|
|
75
69
|
export declare function printWithPager(output: string, lineCount: number): void;
|
|
76
|
-
/**
|
|
77
|
-
* Parse a comma-separated CLI list, trimming whitespace and dropping empties.
|
|
78
|
-
*/
|
|
79
|
-
export declare function parseCommaSeparatedList(value: string | undefined): string[];
|
|
80
70
|
/**
|
|
81
71
|
* A target for resource removal: agent + version.
|
|
82
72
|
*/
|
|
@@ -127,4 +117,4 @@ export declare function resolveInstalledAgentTargetsAutoInstalling(value: string
|
|
|
127
117
|
yes?: boolean;
|
|
128
118
|
allVersions?: boolean;
|
|
129
119
|
}): Promise<InstalledAgentTargetResult | null>;
|
|
130
|
-
export { VersionNotInstalledError } from '../lib/versions.js';
|
|
120
|
+
export { VersionNotInstalledError } from '../lib/installations/versions.js';
|
package/dist/commands/utils.js
CHANGED
|
@@ -10,7 +10,7 @@ import chalk from 'chalk';
|
|
|
10
10
|
import ora from 'ora';
|
|
11
11
|
import { confirm } from '@inquirer/prompts';
|
|
12
12
|
import { agentLabel, resolveAgentName } from '../lib/agents.js';
|
|
13
|
-
import { installVersion, listInstalledVersions, resolveAgentVersionTargets, resolveInstalledAgentTargets, } from '../lib/versions.js';
|
|
13
|
+
import { installVersion, listInstalledVersions, resolveAgentVersionTargets, resolveInstalledAgentTargets, } from '../lib/installations/versions.js';
|
|
14
14
|
import { resolveListFilter, AgentSpecError } from '../lib/agent-spec/index.js';
|
|
15
15
|
/**
|
|
16
16
|
* Resolve a read/list command's `@version` filter through the agent-spec engine,
|
|
@@ -31,20 +31,10 @@ export function resolveListFilterOrExit(agent, qualifier) {
|
|
|
31
31
|
throw e;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
export
|
|
38
|
-
return err instanceof Error && (err.name === 'ExitPromptError' ||
|
|
39
|
-
err.message.includes('force closed') ||
|
|
40
|
-
err.message.includes('User force closed'));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* True when stdin/stdout are attached to a real terminal.
|
|
44
|
-
*/
|
|
45
|
-
export function isInteractiveTerminal() {
|
|
46
|
-
return Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
47
|
-
}
|
|
34
|
+
// Defined in lib/format.ts so `lib/` callers don't have to import upward into
|
|
35
|
+
// the command layer; re-exported here for the ~50 command-layer consumers.
|
|
36
|
+
import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList } from '../lib/format.js';
|
|
37
|
+
export { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList };
|
|
48
38
|
/**
|
|
49
39
|
* Compute a command's I/O surface once, in one place, instead of each command
|
|
50
40
|
* re-deriving the human-vs-agent split (and raw-sniffing `process.std*.isTTY`
|
|
@@ -126,17 +116,6 @@ export function printWithPager(output, lineCount) {
|
|
|
126
116
|
process.stdout.write(output.endsWith('\n') ? output : `${output}\n`);
|
|
127
117
|
}
|
|
128
118
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Parse a comma-separated CLI list, trimming whitespace and dropping empties.
|
|
131
|
-
*/
|
|
132
|
-
export function parseCommaSeparatedList(value) {
|
|
133
|
-
if (!value)
|
|
134
|
-
return [];
|
|
135
|
-
return value
|
|
136
|
-
.split(',')
|
|
137
|
-
.map((item) => item.trim())
|
|
138
|
-
.filter(Boolean);
|
|
139
|
-
}
|
|
140
119
|
/**
|
|
141
120
|
* Prompt user to select which agent/version targets to remove a resource from.
|
|
142
121
|
* If only one target, returns it without prompting. If multiple, shows checkbox.
|
|
@@ -317,4 +296,4 @@ export async function resolveInstalledAgentTargetsAutoInstalling(value, availabl
|
|
|
317
296
|
}
|
|
318
297
|
// Re-export so callers can `catch (err) { if (err instanceof VersionNotInstalledError) … }`
|
|
319
298
|
// without reaching into ../lib/versions directly.
|
|
320
|
-
export { VersionNotInstalledError } from '../lib/versions.js';
|
|
299
|
+
export { VersionNotInstalledError } from '../lib/installations/versions.js';
|
|
@@ -5,11 +5,11 @@ import * as fs from 'fs';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { select, confirm, checkbox } from '@inquirer/prompts';
|
|
7
7
|
import { AGENTS, MANAGED_AGENT_IDS, accountOrgBadge, getAccountEmail, getAccountInfo, agentLabel, warnAgentDeprecated, isAgentHardDeprecated, hardDeprecationError, isSelfUpdatingAgent, } from '../lib/agents.js';
|
|
8
|
-
import { formatUsageSummary, getUsageInfoForIdentity, getUsageInfoByIdentity, getUsageLookupKey, isUsageHeadlessScopeError, } from '../lib/usage.js';
|
|
8
|
+
import { formatUsageSummary, getUsageInfoForIdentity, getUsageInfoByIdentity, getUsageLookupKey, isUsageHeadlessScopeError, } from '../lib/accounting/usage.js';
|
|
9
9
|
import { viewAction } from './view.js';
|
|
10
10
|
import { resolveConfiguredModel, formatAgentIdentity } from '../lib/models.js';
|
|
11
11
|
import { readManifest, writeManifest, createDefaultManifest } from '../lib/manifest.js';
|
|
12
|
-
import { installVersion, removeVersion, listInstalledVersions, isVersionInstalled, isLatestInstalled, isOldestInstalled, getGlobalDefault, setGlobalDefault, markVersionIsolated, setIsolatedDefault, isVersionIsolated, getVersionHomePath, getVersionDir, syncResourcesToVersion, parseAgentSpec, promptResourceSelection, promptNewResourceSelection, getAvailableResources, getActuallySyncedResources, getNewResources, getProjectOnlyResources, hasNewResources, printTrashFooter, } from '../lib/versions.js';
|
|
12
|
+
import { installVersion, removeVersion, listInstalledVersions, isVersionInstalled, isLatestInstalled, isOldestInstalled, getGlobalDefault, setGlobalDefault, markVersionIsolated, setIsolatedDefault, isVersionIsolated, getVersionHomePath, getVersionDir, syncResourcesToVersion, parseAgentSpec, promptResourceSelection, promptNewResourceSelection, getAvailableResources, getActuallySyncedResources, getNewResources, getProjectOnlyResources, hasNewResources, printTrashFooter, } from '../lib/installations/versions.js';
|
|
13
13
|
import { carryForwardSettings } from '../lib/settings-manifest.js';
|
|
14
14
|
import { createShim, createVersionedAlias, supportsIsolatedInstall, isIsolationProtected, CONFIG_ENV_ISOLATED_AGENTS, removeShim, shimExists, getShimsDir, getShimPath, getPathShadowingExecutable, isShimsInPath, getPathSetupInstructions, addShimsToPath, switchConfigSymlink, switchHomeFileSymlinks, } from '../lib/shims.js';
|
|
15
15
|
import { isInteractiveTerminal, isPromptCancelled, requireInteractiveSelection } from './utils.js';
|
package/dist/commands/view.d.ts
CHANGED
|
@@ -10,11 +10,19 @@ import type { Command } from 'commander';
|
|
|
10
10
|
import { accountDisplayLabel } from '../lib/agents.js';
|
|
11
11
|
import type { AccountInfo } from '../lib/agents.js';
|
|
12
12
|
import type { AgentId } from '../lib/types.js';
|
|
13
|
-
import {
|
|
13
|
+
import type { ResourceSection, ViewJsonAgent } from '../lib/view-types.js';
|
|
14
|
+
export type { ResourceItemJson, ResourceSection, SyncState, VersionResourcesJson, ViewJsonAgent, ViewJsonVersion } from '../lib/view-types.js';
|
|
14
15
|
import { type ProfileSummary } from '../lib/profiles.js';
|
|
15
16
|
import { type ByokUsageResult } from '../lib/byok-usage.js';
|
|
16
17
|
/** Shared account identity formatter, re-exported for the view-specific tests. */
|
|
17
18
|
export declare const accountColumnLabel: typeof accountDisplayLabel;
|
|
19
|
+
/**
|
|
20
|
+
* The account column with the durable native-account name folded in: when the
|
|
21
|
+
* signed-in identity of `agentId` has been named via `agents accounts name`,
|
|
22
|
+
* render `work · email` instead of the bare email. Falls back to the plain
|
|
23
|
+
* display label when the identity is unnamed.
|
|
24
|
+
*/
|
|
25
|
+
export declare function namedAccountColumnLabel(agentId: AgentId, info: AccountInfo | undefined): string;
|
|
18
26
|
export interface AccountOrderedVersion {
|
|
19
27
|
version: string;
|
|
20
28
|
email: string | null;
|
|
@@ -32,7 +40,6 @@ export declare function compareAccountOrderedVersions(a: AccountOrderedVersion,
|
|
|
32
40
|
* gutter, but interior empties stay padded so later columns stay aligned.
|
|
33
41
|
*/
|
|
34
42
|
export declare function joinViewColumns(cols: string[]): string;
|
|
35
|
-
type SyncState = 'synced' | 'new' | 'modified' | 'deleted';
|
|
36
43
|
/** Per-section filter flags. When any are true, only those sections render. */
|
|
37
44
|
export interface ViewSectionFilter {
|
|
38
45
|
commands?: boolean;
|
|
@@ -59,80 +66,6 @@ export declare function descriptionForPrefix(desc: string | undefined, prefix: s
|
|
|
59
66
|
* host is missing is flagged rather than silently listed as runnable.
|
|
60
67
|
*/
|
|
61
68
|
export declare function renderHarnessBlocks(harnesses: ProfileSummary[], installedHosts: Set<AgentId>, showPaths: boolean, byokMap?: Map<string, ByokUsageResult>): void;
|
|
62
|
-
/** Machine-readable entry for a single installed version. */
|
|
63
|
-
export interface ViewJsonVersion {
|
|
64
|
-
version: string;
|
|
65
|
-
isDefault: boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Installed with `--isolated`. The human view has shown this since the isolated
|
|
68
|
-
* tag landed, but JSON carried no signal at all, so tooling could not tell a
|
|
69
|
-
* sandboxed copy from one that owns the user's launcher and real config.
|
|
70
|
-
*/
|
|
71
|
-
isolated: boolean;
|
|
72
|
-
/**
|
|
73
|
-
* The isolated copy a bare `agents run <agent>` resolves to. Separate from
|
|
74
|
-
* `isDefault`, which is the GLOBAL default an isolated version can never be —
|
|
75
|
-
* reporting only `isDefault: false` hid the fact that this one is selected.
|
|
76
|
-
*/
|
|
77
|
-
isIsolatedDefault: boolean;
|
|
78
|
-
signedIn: boolean;
|
|
79
|
-
email: string | null;
|
|
80
|
-
accountId?: string | null;
|
|
81
|
-
organizationType?: string | null;
|
|
82
|
-
organizationName?: string | null;
|
|
83
|
-
plan: string | null;
|
|
84
|
-
usageStatus: 'available' | 'rate_limited' | 'out_of_credits' | null;
|
|
85
|
-
overageCredits?: {
|
|
86
|
-
amount: number;
|
|
87
|
-
currency: string;
|
|
88
|
-
} | null;
|
|
89
|
-
windows: Array<{
|
|
90
|
-
key: 'session' | 'week' | 'sonnet_week' | 'month';
|
|
91
|
-
label?: string;
|
|
92
|
-
usedPercent: number;
|
|
93
|
-
resetsAt: string | null;
|
|
94
|
-
}>;
|
|
95
|
-
lastActive: string | null;
|
|
96
|
-
path: string;
|
|
97
|
-
configuredModel?: {
|
|
98
|
-
model: string;
|
|
99
|
-
source: ConfiguredModelSource;
|
|
100
|
-
} | null;
|
|
101
|
-
/** Present only when --resources / --detailed (or --json with a section
|
|
102
|
-
* flag) is passed: this version's resource inventory with git sync-state. */
|
|
103
|
-
resources?: VersionResourcesJson;
|
|
104
|
-
}
|
|
105
|
-
/** Machine-readable entry for one agent's installed versions. */
|
|
106
|
-
export interface ViewJsonAgent {
|
|
107
|
-
agent: AgentId;
|
|
108
|
-
versions: ViewJsonVersion[];
|
|
109
|
-
/** Custom harnesses that run on this agent as their host CLI. */
|
|
110
|
-
harnesses: ProfileSummary[];
|
|
111
|
-
}
|
|
112
|
-
/** Resource sections that --resources can include in --json output. */
|
|
113
|
-
export type ResourceSection = 'commands' | 'skills' | 'mcp' | 'memory' | 'hooks' | 'workflows' | 'plugins';
|
|
114
|
-
/** One resource entry in `--json --resources` output. */
|
|
115
|
-
export interface ResourceItemJson {
|
|
116
|
-
name: string;
|
|
117
|
-
scope?: 'user' | 'project';
|
|
118
|
-
/** Git sync-state vs ~/.agents. Omitted for project-scoped resources or when
|
|
119
|
-
* ~/.agents isn't a git repo. When queried via --host it reflects the
|
|
120
|
-
* remote's ~/.agents — i.e. per-host resource drift. */
|
|
121
|
-
syncState?: SyncState;
|
|
122
|
-
description?: string;
|
|
123
|
-
/** Skills only, when > 0. */
|
|
124
|
-
ruleCount?: number;
|
|
125
|
-
}
|
|
126
|
-
/** Per-version resource inventory; one key per requested section. */
|
|
127
|
-
export interface VersionResourcesJson {
|
|
128
|
-
commands?: ResourceItemJson[];
|
|
129
|
-
skills?: ResourceItemJson[];
|
|
130
|
-
mcp?: ResourceItemJson[];
|
|
131
|
-
memory?: ResourceItemJson[];
|
|
132
|
-
hooks?: ResourceItemJson[];
|
|
133
|
-
workflows?: ResourceItemJson[];
|
|
134
|
-
plugins?: ResourceItemJson[];
|
|
135
|
-
}
|
|
136
69
|
/** Build the set of resource sections to include in `--json` from the
|
|
137
70
|
* `--resources` / `--detailed` flags, plus (in --json mode) the per-section
|
|
138
71
|
* boolean filters (`--skills` etc.) that plain `--json` historically ignored. */
|
|
@@ -183,4 +116,3 @@ export declare function viewAction(agentArg?: string, options?: {
|
|
|
183
116
|
} & ViewSectionFilter): Promise<void>;
|
|
184
117
|
/** Register the `agents view` command. */
|
|
185
118
|
export declare function registerViewCommand(program: Command): void;
|
|
186
|
-
export {};
|
package/dist/commands/view.js
CHANGED
|
@@ -8,21 +8,22 @@ import { AGENTS, ALL_AGENT_IDS, accountDisplayLabel, getAllCliStates, getUnmanag
|
|
|
8
8
|
import { ambientClaudeToken, loginHint } from '../lib/signin-badge.js';
|
|
9
9
|
import { machineId } from '../lib/machine-id.js';
|
|
10
10
|
import { authCacheKey, formatCheckedAge, readAuthHealthCache } from '../lib/auth-health.js';
|
|
11
|
-
import { agentReportsUsage, deriveUsageStatusFromSnapshot, formatUsageSection, formatUsageSummary, formatUsageStatusBadge, getUsageInfoForIdentity, getUsageInfoByIdentity, getUsageLookupKey, isUsageHeadlessScopeError, } from '../lib/usage.js';
|
|
11
|
+
import { agentReportsUsage, deriveUsageStatusFromSnapshot, formatUsageSection, formatUsageSummary, formatUsageStatusBadge, getUsageInfoForIdentity, getUsageInfoByIdentity, getUsageLookupKey, isUsageHeadlessScopeError, } from '../lib/accounting/usage.js';
|
|
12
12
|
import { readManifest } from '../lib/manifest.js';
|
|
13
|
-
import { listInstalledVersions, listInstalledVersionDirs, getGlobalDefault, getVersionHomePath, getVersionDir, removeVersion, printTrashFooter, reconcileStaleLatestForAgent, isGlobalBinaryAgent, getLiveVersion, isVersionIsolated, getIsolatedDefault, } from '../lib/versions.js';
|
|
13
|
+
import { listInstalledVersions, listInstalledVersionDirs, getGlobalDefault, getVersionHomePath, getVersionDir, removeVersion, printTrashFooter, reconcileStaleLatestForAgent, isGlobalBinaryAgent, getLiveVersion, isVersionIsolated, getIsolatedDefault, } from '../lib/installations/versions.js';
|
|
14
14
|
import { ensureVersionedAliasCurrent, removeShim, } from '../lib/shims.js';
|
|
15
15
|
import { getAgentResources } from '../lib/resources.js';
|
|
16
16
|
import { renderMergedResources } from '../lib/merged-resources.js';
|
|
17
17
|
import { resolveVersionFilter, AgentSpecError } from '../lib/agent-spec/index.js';
|
|
18
18
|
import { listCliStatus } from '../lib/cli-resources.js';
|
|
19
19
|
import { isCapable } from '../lib/capabilities.js';
|
|
20
|
-
import { discoverPlugins, pluginSupportsAgent } from '../lib/plugins.js';
|
|
21
|
-
import { getAgentsDir, getUserAgentsDir, getEffectivePromptcutsPath, readMergedPromptcuts } from '../lib/state.js';
|
|
20
|
+
import { discoverPlugins, pluginSupportsAgent } from '../lib/plugins/plugins.js';
|
|
21
|
+
import { getAgentsDir, getUserAgentsDir, getEffectivePromptcutsPath, readMergedPromptcuts, readMeta } from '../lib/state.js';
|
|
22
|
+
import { listNativeAccounts } from '../lib/account-registry.js';
|
|
22
23
|
import { isGitRepo, getGitSyncStatus } from '../lib/git.js';
|
|
23
24
|
import { getCentralRulesFileName } from '../lib/rules/rules.js';
|
|
24
25
|
import { composeRulesFromState } from '../lib/rules/compose.js';
|
|
25
|
-
import { getConfiguredRunStrategy } from '../lib/rotate.js';
|
|
26
|
+
import { getConfiguredRunStrategy } from '../lib/accounting/rotate.js';
|
|
26
27
|
import { resolveRunDefaults } from '../lib/run-defaults.js';
|
|
27
28
|
import { resolveConfiguredModel } from '../lib/models.js';
|
|
28
29
|
import { listProfiles, profileExists, profileSummary, readProfile } from '../lib/profiles.js';
|
|
@@ -33,6 +34,20 @@ import { formatPath, isInteractiveTerminal, isPromptCancelled } from './utils.js
|
|
|
33
34
|
import { terminalWidth, truncateToWidth, stringWidth, padToWidth } from '../lib/session/width.js';
|
|
34
35
|
/** Shared account identity formatter, re-exported for the view-specific tests. */
|
|
35
36
|
export const accountColumnLabel = accountDisplayLabel;
|
|
37
|
+
/**
|
|
38
|
+
* The account column with the durable native-account name folded in: when the
|
|
39
|
+
* signed-in identity of `agentId` has been named via `agents accounts name`,
|
|
40
|
+
* render `work · email` instead of the bare email. Falls back to the plain
|
|
41
|
+
* display label when the identity is unnamed.
|
|
42
|
+
*/
|
|
43
|
+
export function namedAccountColumnLabel(agentId, info) {
|
|
44
|
+
const display = accountColumnLabel(info);
|
|
45
|
+
const identityKey = info?.accountKey ?? info?.email?.toLowerCase();
|
|
46
|
+
if (!identityKey)
|
|
47
|
+
return display;
|
|
48
|
+
const saved = listNativeAccounts(readMeta()).find(item => item.agent === agentId && item.identityKey === identityKey);
|
|
49
|
+
return saved ? `${saved.name} · ${display || saved.identityLabel || identityKey}` : display;
|
|
50
|
+
}
|
|
36
51
|
/**
|
|
37
52
|
* Human `agents view` row order: selected default first, then email-bearing
|
|
38
53
|
* accounts alphabetically, then installs whose account has no email. Version
|
|
@@ -499,7 +514,7 @@ async function showInstalledVersions(filterAgentId, viewOpts) {
|
|
|
499
514
|
maxVerLabel = Math.max(maxVerLabel, versionRowLabel(agentId, v, globalDefault).length);
|
|
500
515
|
const rawInfo = infoMap.get(`${agentId}:${v}`);
|
|
501
516
|
const info = rawInfo ? mergeCanonical(rawInfo) : undefined;
|
|
502
|
-
const accountLabel =
|
|
517
|
+
const accountLabel = namedAccountColumnLabel(agentId, info);
|
|
503
518
|
if (accountLabel)
|
|
504
519
|
maxEmail = Math.max(maxEmail, accountLabel.length);
|
|
505
520
|
if (info?.plan)
|
|
@@ -628,7 +643,7 @@ async function showInstalledVersions(filterAgentId, viewOpts) {
|
|
|
628
643
|
// Always emit account / usage / status / lastActive columns once any
|
|
629
644
|
// signed-in row exists in the table (widths are global). Empty cells
|
|
630
645
|
// are space-padded so later columns do not drift left.
|
|
631
|
-
const display =
|
|
646
|
+
const display = namedAccountColumnLabel(agentId, vInfo);
|
|
632
647
|
parts.push(display ? chalk.cyan(padToWidth(display, maxEmail)) : ' '.repeat(maxEmail));
|
|
633
648
|
if (maxUsageWidth > 0) {
|
|
634
649
|
parts.push(padToWidth(usageStr, maxUsageWidth));
|
|
@@ -1690,7 +1705,7 @@ Examples:
|
|
|
1690
1705
|
|
|
1691
1706
|
# One call: full inventory + what's synced on a host (installed agents,
|
|
1692
1707
|
# versions, accounts, usage, and per-version resource sync-state)
|
|
1693
|
-
agents view claude --
|
|
1708
|
+
agents view claude --device yosemite-s0 --json --resources all
|
|
1694
1709
|
agents view claude --json --resources skills,plugins # just those sections
|
|
1695
1710
|
|
|
1696
1711
|
# Prune older versions that duplicate an account already used by a newer version
|
|
@@ -37,7 +37,7 @@ function stateDir() {
|
|
|
37
37
|
* Dynamic import keeps daemon.ts's heavy deps off the watchdog command's load path.
|
|
38
38
|
*/
|
|
39
39
|
async function reloadDaemonForRoutine(startIfStopped) {
|
|
40
|
-
const { isDaemonRunning, ensureDaemonStarted, signalDaemonReload } = await import('../lib/daemon.js');
|
|
40
|
+
const { isDaemonRunning, ensureDaemonStarted, signalDaemonReload } = await import('../lib/daemon/daemon.js');
|
|
41
41
|
if (isDaemonRunning()) {
|
|
42
42
|
signalDaemonReload();
|
|
43
43
|
return;
|