@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
|
@@ -8,8 +8,8 @@ import { confirm, checkbox } from '@inquirer/prompts';
|
|
|
8
8
|
import { AGENTS, resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
|
|
9
9
|
import { cloneRepo } from '../lib/git.js';
|
|
10
10
|
import { capableAgents, isCapable } from '../lib/capabilities.js';
|
|
11
|
-
import { listInstalledPermissions, discoverPermissionsFromRepo, installPermissionSet, removePermissionSet, applyPermissionsToVersion, readAgentPermissions, exportPermissionsFromPath, getDefaultPermissionSet, computePermissionsDiff, mergePermissionSets, saveDefaultPermissionSet, containsBroadGrants, } from '../lib/permissions.js';
|
|
12
|
-
import { listInstalledVersions, getGlobalDefault, getVersionHomePath, promptAgentVersionSelection, } from '../lib/versions.js';
|
|
11
|
+
import { listInstalledPermissions, discoverPermissionsFromRepo, installPermissionSet, removePermissionSet, applyPermissionsToVersion, readAgentPermissions, exportPermissionsFromPath, detectPermissionAgentFromPath, getDefaultPermissionSet, computePermissionsDiff, mergePermissionSets, saveDefaultPermissionSet, containsBroadGrants, } from '../lib/permissions.js';
|
|
12
|
+
import { listInstalledVersions, getGlobalDefault, getVersionHomePath, promptAgentVersionSelection, } from '../lib/installations/versions.js';
|
|
13
13
|
import { recordVersionResources } from '../lib/state.js';
|
|
14
14
|
import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList, printWithPager, requireInteractiveSelection, resolveAgentTargetsAutoInstalling, resolveListFilterOrExit, } from './utils.js';
|
|
15
15
|
export function shouldRefuseBroadPermissions(permissions, allowBroadPermissions) {
|
|
@@ -51,17 +51,17 @@ When to use:
|
|
|
51
51
|
.action(async (agentArg, options) => {
|
|
52
52
|
const cwd = process.cwd();
|
|
53
53
|
// Helper to render permissions for a specific version
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Print one harness's permission block.
|
|
56
|
+
*
|
|
57
|
+
* claude/opencode/codex keep their native renderings (Codex in particular
|
|
58
|
+
* has no rule list — showing its sandbox mode is more useful than the
|
|
59
|
+
* blanket grants that mode widens into). Every other allowlist-capable
|
|
60
|
+
* harness renders the canonical allow/deny that `PERMISSION_TARGETS` reads
|
|
61
|
+
* back, which is what makes `permissions list` answer for all 13 rather
|
|
62
|
+
* than three (RUSH-2676).
|
|
63
|
+
*/
|
|
64
|
+
const renderPermissionBody = (agentId, perms) => {
|
|
65
65
|
if (agentId === 'claude') {
|
|
66
66
|
const claudePerms = perms;
|
|
67
67
|
if (claudePerms.permissions.allow.length > 0) {
|
|
@@ -106,8 +106,34 @@ When to use:
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
+
else {
|
|
110
|
+
const set = perms;
|
|
111
|
+
if (set.allow?.length) {
|
|
112
|
+
console.log(chalk.green(' Allow:'));
|
|
113
|
+
for (const p of set.allow)
|
|
114
|
+
console.log(` ${chalk.cyan(p)}`);
|
|
115
|
+
}
|
|
116
|
+
if (set.deny?.length) {
|
|
117
|
+
console.log(chalk.red(' Deny:'));
|
|
118
|
+
for (const p of set.deny)
|
|
119
|
+
console.log(` ${chalk.yellow(p)}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
109
122
|
console.log();
|
|
110
123
|
};
|
|
124
|
+
const renderVersionPermissions = (agentId, version, isDefault, home, scope) => {
|
|
125
|
+
const agent = AGENTS[agentId];
|
|
126
|
+
const defaultLabel = isDefault ? ' default' : '';
|
|
127
|
+
const versionStr = chalk.gray(` (${version}${defaultLabel})`);
|
|
128
|
+
const perms = readAgentPermissions(agentId, scope, cwd, { home });
|
|
129
|
+
if (!perms) {
|
|
130
|
+
console.log(` ${chalk.bold(agentLabel(agent.id))}${versionStr}: ${chalk.gray('none')}`);
|
|
131
|
+
console.log();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
console.log(` ${chalk.bold(agentLabel(agent.id))}${versionStr}:`);
|
|
135
|
+
renderPermissionBody(agentId, perms);
|
|
136
|
+
};
|
|
111
137
|
if (agentArg) {
|
|
112
138
|
// Parse agent@version syntax
|
|
113
139
|
const parts = agentArg.split('@');
|
|
@@ -134,21 +160,7 @@ When to use:
|
|
|
134
160
|
return;
|
|
135
161
|
}
|
|
136
162
|
console.log(` ${chalk.bold(agentLabel(agent.id))}:`);
|
|
137
|
-
|
|
138
|
-
const claudePerms = perms;
|
|
139
|
-
if (claudePerms.permissions.allow.length > 0) {
|
|
140
|
-
console.log(chalk.green(' Allow:'));
|
|
141
|
-
for (const p of claudePerms.permissions.allow) {
|
|
142
|
-
console.log(` ${chalk.cyan(p)}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if (claudePerms.permissions.deny.length > 0) {
|
|
146
|
-
console.log(chalk.red(' Deny:'));
|
|
147
|
-
for (const p of claudePerms.permissions.deny) {
|
|
148
|
-
console.log(` ${chalk.yellow(p)}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
163
|
+
renderPermissionBody(agentId, perms);
|
|
152
164
|
return;
|
|
153
165
|
}
|
|
154
166
|
// Version-managed: determine which versions to show
|
|
@@ -361,10 +373,15 @@ Examples:
|
|
|
361
373
|
}
|
|
362
374
|
spinner.succeed('Using local path');
|
|
363
375
|
}
|
|
364
|
-
//
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
376
|
+
// Is this a harness config agents-cli knows how to read?
|
|
377
|
+
//
|
|
378
|
+
// This used to hardcode `.json`/`.jsonc`/`.toml` plus a `.claude`/
|
|
379
|
+
// `.opencode`/`.codex` substring, which excluded the ten other harnesses
|
|
380
|
+
// the CLI writes -- and excluded kiro/hermes twice over, since
|
|
381
|
+
// their configs are YAML. The registry already answers this by matching
|
|
382
|
+
// each harness's own declared path, so ask it (RUSH-2676).
|
|
383
|
+
const isAgentConfig = detectPermissionAgentFromPath(localPath) !== null;
|
|
384
|
+
if (isAgentConfig) {
|
|
368
385
|
// Handle agent config file - convert, diff, merge into default set
|
|
369
386
|
const incoming = exportPermissionsFromPath(localPath);
|
|
370
387
|
if (!incoming || (incoming.allow.length === 0 && (!incoming.deny || incoming.deny.length === 0))) {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* stored in ~/.agents/plugins/.
|
|
7
7
|
*/
|
|
8
8
|
import type { Command } from 'commander';
|
|
9
|
-
import { type PluginCapabilities } from '../lib/plugins.js';
|
|
9
|
+
import { type PluginCapabilities } from '../lib/plugins/plugins.js';
|
|
10
10
|
export declare function shouldRefusePluginInstall(capabilities: PluginCapabilities, allowExecSurfaces: boolean): boolean;
|
|
11
11
|
/** Register the `agents plugins` command tree. */
|
|
12
12
|
export declare function registerPluginsCommands(program: Command): void;
|
package/dist/commands/plugins.js
CHANGED
|
@@ -12,14 +12,14 @@ import { homeDir } from '../lib/platform/index.js';
|
|
|
12
12
|
import { input } from '@inquirer/prompts';
|
|
13
13
|
import { agentLabel } from '../lib/agents.js';
|
|
14
14
|
import { capableAgents, isCapable } from '../lib/capabilities.js';
|
|
15
|
-
import { discoverPlugins, getPlugin, pluginSupportsAgent, removePluginFromVersion, isPluginSynced, installPlugin, updatePlugin, loadUserConfig, saveUserConfig, checkPluginDependencies, hasPluginExecSurfaces, inspectPluginCapabilities, pluginCapabilityLabels, parseInstallSpec, syncPluginToVersion, pluginResourceGroups, } from '../lib/plugins.js';
|
|
16
|
-
import { listInstalledVersions, syncResourcesToVersion, getGlobalDefault, getVersionHomePath, } from '../lib/versions.js';
|
|
15
|
+
import { discoverPlugins, getPlugin, pluginSupportsAgent, removePluginFromVersion, isPluginSynced, installPlugin, updatePlugin, loadUserConfig, saveUserConfig, checkPluginDependencies, hasPluginExecSurfaces, inspectPluginCapabilities, pluginCapabilityLabels, parseInstallSpec, syncPluginToVersion, pluginResourceGroups, } from '../lib/plugins/plugins.js';
|
|
16
|
+
import { listInstalledVersions, syncResourcesToVersion, getGlobalDefault, getVersionHomePath, } from '../lib/installations/versions.js';
|
|
17
17
|
import { isPromptCancelled, isInteractiveTerminal, requireDestructiveArg, requireInteractiveSelection, promptRemovalTargets, } from './utils.js';
|
|
18
18
|
import { itemPicker } from '../lib/picker.js';
|
|
19
19
|
import { showResourceList, buildTargetsSection, } from './resource-view.js';
|
|
20
20
|
import { getPluginsDir } from '../lib/state.js';
|
|
21
21
|
import { safeJoin } from '../lib/paths.js';
|
|
22
|
-
import { discoverMarketplaces } from '../lib/plugin-marketplace.js';
|
|
22
|
+
import { discoverMarketplaces } from '../lib/plugins/plugin-marketplace.js';
|
|
23
23
|
/** Replace the home directory prefix with ~ for display. */
|
|
24
24
|
function formatPath(p) {
|
|
25
25
|
const home = homeDir();
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Custom-harness profile helpers (shared by `agents harness`).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Named bundles of (host CLI, endpoint, model, keychain auth) live under
|
|
5
|
+
* ~/.agents/profiles/*.yml. The user-facing surface is `agents harness`
|
|
6
|
+
* (add/fork/edit/list/view/remove). This module keeps the shared write helpers
|
|
7
|
+
* (`addProfile`, `ensureProviderToken`, …) that harness and the run path use.
|
|
8
8
|
*/
|
|
9
|
-
import type { Command } from 'commander';
|
|
10
9
|
import { type Profile } from '../lib/profiles.js';
|
|
11
10
|
import { type Preset } from '../lib/profiles-presets.js';
|
|
12
11
|
/**
|
|
@@ -18,7 +17,7 @@ export declare function buildProfileFromCollection(name: string, preset: Preset,
|
|
|
18
17
|
/** Read all available data from stdin synchronously, trimmed. */
|
|
19
18
|
/** Ensure a provider API key exists in keychain, prompting or reading stdin if missing. */
|
|
20
19
|
export declare function ensureProviderToken(provider: string, signupUrl?: string, fromStdin?: boolean): Promise<void>;
|
|
21
|
-
/** Options accepted by {@link addProfile} — shared by `agents
|
|
20
|
+
/** Options accepted by {@link addProfile} — shared by `agents harness add` and `agents harness add`. */
|
|
22
21
|
export interface AddProfileOptions {
|
|
23
22
|
preset?: string;
|
|
24
23
|
host?: string;
|
|
@@ -81,5 +80,3 @@ export declare function applyFromSecrets(profile: Profile, spec: string, explici
|
|
|
81
80
|
* `label` only tunes the success wording (Profile vs Harness). Throws on error.
|
|
82
81
|
*/
|
|
83
82
|
export declare function addProfile(name: string, opts: AddProfileOptions, label?: 'Profile' | 'Harness'): Promise<void>;
|
|
84
|
-
/** Register the `agents profiles` command tree. */
|
|
85
|
-
export declare function registerProfilesCommands(program: Command): void;
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Custom-harness profile helpers (shared by `agents harness`).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Named bundles of (host CLI, endpoint, model, keychain auth) live under
|
|
5
|
+
* ~/.agents/profiles/*.yml. The user-facing surface is `agents harness`
|
|
6
|
+
* (add/fork/edit/list/view/remove). This module keeps the shared write helpers
|
|
7
|
+
* (`addProfile`, `ensureProviderToken`, …) that harness and the run path use.
|
|
8
8
|
*/
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { readStdinSync } from '../lib/format.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { hasKeychainToken, keychainItemName, setKeychainToken, deleteKeychainToken, getKeychainToken, } from '../lib/secrets/profiles.js';
|
|
11
|
+
import { writeProfile, profileFromPreset, profileFromHostModel, baseUrlEnvKeyForHost, authEnvKeyForHost, validateProfileName, profileExists, } from '../lib/profiles.js';
|
|
12
|
+
import { getPreset, listPresets } from '../lib/profiles-presets.js';
|
|
13
|
+
import { hasKeychainToken, keychainItemName, setKeychainToken, getKeychainToken, } from '../lib/secrets/profiles.js';
|
|
15
14
|
import { parseBundleValue, secretsKeychainItem } from '../lib/secrets/index.js';
|
|
16
15
|
import { readBundle } from '../lib/secrets/bundles.js';
|
|
17
16
|
import { isInteractiveTerminal } from './utils.js';
|
|
18
|
-
import { getAgentsInvocation } from '../lib/daemon.js';
|
|
19
17
|
import { ALL_AGENT_IDS } from '../lib/agents.js';
|
|
20
18
|
import { findAccount } from '../lib/account-registry.js';
|
|
21
19
|
/**
|
|
@@ -224,314 +222,3 @@ export async function addProfile(name, opts, label = 'Profile') {
|
|
|
224
222
|
console.log(chalk.green(`${label} '${name}' added.`));
|
|
225
223
|
console.log(chalk.gray(`Try: agents run ${name} "hello"`));
|
|
226
224
|
}
|
|
227
|
-
/** Format a single profile as a table row for the `profiles list` output. */
|
|
228
|
-
function renderProfileRow(p) {
|
|
229
|
-
const host = p.host.version ? `${p.host.agent}@${p.host.version}` : p.host.agent;
|
|
230
|
-
const model = p.env.ANTHROPIC_MODEL || p.env.OPENAI_MODEL || p.env.GEMINI_MODEL || '-';
|
|
231
|
-
const provider = p.provider || (p.auth?.keychainItem?.split('.')[1]) || '-';
|
|
232
|
-
return `${chalk.cyan(p.name.padEnd(16))} ${host.padEnd(14)} ${provider.padEnd(12)} ${chalk.gray(model)}`;
|
|
233
|
-
}
|
|
234
|
-
/** Register the `agents profiles` command tree. */
|
|
235
|
-
export function registerProfilesCommands(program) {
|
|
236
|
-
const cmd = program
|
|
237
|
-
.command('profiles')
|
|
238
|
-
.description('Named bundles of (host CLI, endpoint, model, auth) — run Kimi/DeepSeek/Qwen/etc through Claude Code without a proxy.')
|
|
239
|
-
.addHelpText('after', `
|
|
240
|
-
A profile pins a host CLI (claude, codex, antigravity, ...) to a non-default endpoint
|
|
241
|
-
and model, with a keychain-backed API key. Running 'agents run <profile>' spawns
|
|
242
|
-
the host CLI with the right env vars — no plaintext tokens, no local proxy.
|
|
243
|
-
|
|
244
|
-
Built-in presets (via OpenRouter, one shared key):
|
|
245
|
-
kimi Kimi K2.5 (top HumanEval, reasoning — interactive only)
|
|
246
|
-
kimi-chat Kimi K2 0905 (non-reasoning, print-safe)
|
|
247
|
-
minimax MiniMax M2.5 (top SWE-bench, reasoning)
|
|
248
|
-
glm GLM 5 (top Chatbot Arena among open-weight, reasoning)
|
|
249
|
-
qwen Qwen3 Coder Next (latest coding Qwen, print-safe)
|
|
250
|
-
deepseek DeepSeek Chat V3 (latest non-reasoning chat, print-safe)
|
|
251
|
-
|
|
252
|
-
Run 'agents profiles presets' for the full list with pricing and context sizes.
|
|
253
|
-
|
|
254
|
-
Typical flow:
|
|
255
|
-
agents profiles create # interactive wizard for any provider
|
|
256
|
-
agents profiles add kimi # one-line preset (existing)
|
|
257
|
-
agents run kimi "refactor this" # Claude Code UI, Kimi model responses
|
|
258
|
-
agents profiles add deepseek # reuses OpenRouter key, no re-prompt
|
|
259
|
-
|
|
260
|
-
Managing keys:
|
|
261
|
-
agents profiles login openrouter # rotate the key (shared across openrouter profiles)
|
|
262
|
-
agents profiles logout openrouter # remove from Keychain
|
|
263
|
-
|
|
264
|
-
Custom endpoints — drop a YAML file at ~/.agents/profiles/<name>.yml:
|
|
265
|
-
name: local-llama
|
|
266
|
-
host: { agent: claude }
|
|
267
|
-
env:
|
|
268
|
-
ANTHROPIC_BASE_URL: http://localhost:11434
|
|
269
|
-
ANTHROPIC_MODEL: llama-3.3-70b
|
|
270
|
-
auth:
|
|
271
|
-
envVar: ANTHROPIC_AUTH_TOKEN
|
|
272
|
-
keychainItem: agents-cli.ollama.token
|
|
273
|
-
|
|
274
|
-
Profiles store no secrets — safe to 'agents push' to a shared repo.
|
|
275
|
-
|
|
276
|
-
Examples:
|
|
277
|
-
# One-time: store the OpenRouter key (every preset reuses it)
|
|
278
|
-
agents profiles login openrouter
|
|
279
|
-
|
|
280
|
-
# Add Kimi (top HumanEval) and run it through the Claude Code UI
|
|
281
|
-
agents profiles add kimi
|
|
282
|
-
agents run kimi "refactor api/handlers/checkout.py to use async sqlalchemy"
|
|
283
|
-
|
|
284
|
-
# Add MiniMax for SWE-bench style fixes; reuses the same OpenRouter key
|
|
285
|
-
agents profiles add minimax
|
|
286
|
-
agents run minimax "investigate PROJ-456 and patch the off-by-one in pagination"
|
|
287
|
-
|
|
288
|
-
# Add DeepSeek for cheap, fast non-reasoning work
|
|
289
|
-
agents profiles add deepseek
|
|
290
|
-
agents run deepseek "rename UserSession -> AuthSession across the codebase"
|
|
291
|
-
|
|
292
|
-
# See every profile and which provider it talks to
|
|
293
|
-
agents profiles list
|
|
294
|
-
|
|
295
|
-
# Browse the catalog (pricing, context sizes, reasoning vs print-safe)
|
|
296
|
-
agents profiles presets
|
|
297
|
-
|
|
298
|
-
# Rotate the OpenRouter key (every openrouter profile picks it up)
|
|
299
|
-
agents profiles login openrouter
|
|
300
|
-
|
|
301
|
-
# Drop a profile, keep the key in Keychain for the next one
|
|
302
|
-
agents profiles remove kimi
|
|
303
|
-
|
|
304
|
-
# Fully remove the OpenRouter key from Keychain
|
|
305
|
-
agents profiles logout openrouter
|
|
306
|
-
`);
|
|
307
|
-
cmd
|
|
308
|
-
.command('list')
|
|
309
|
-
.alias('ls')
|
|
310
|
-
.description('List configured profiles')
|
|
311
|
-
.action(() => {
|
|
312
|
-
const profiles = listProfiles();
|
|
313
|
-
if (profiles.length === 0) {
|
|
314
|
-
console.log(chalk.gray('No profiles configured.'));
|
|
315
|
-
console.log(chalk.gray('Try: agents profiles add kimi'));
|
|
316
|
-
console.log(chalk.gray(' agents profiles presets'));
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
console.log(chalk.bold(`${'NAME'.padEnd(16)} ${'HOST'.padEnd(14)} ${'PROVIDER'.padEnd(12)} MODEL`));
|
|
320
|
-
for (const p of profiles) {
|
|
321
|
-
console.log(renderProfileRow(p));
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
cmd
|
|
325
|
-
.command('presets')
|
|
326
|
-
.description('List built-in presets (OpenRouter + direct providers)')
|
|
327
|
-
.action(() => {
|
|
328
|
-
const presets = listPresets();
|
|
329
|
-
console.log(chalk.bold(`${'NAME'.padEnd(14)} ${'PROVIDER'.padEnd(12)} DESCRIPTION`));
|
|
330
|
-
for (const p of presets) {
|
|
331
|
-
console.log(`${chalk.cyan(p.name.padEnd(14))} ${p.provider.padEnd(12)} ${chalk.gray(p.description)}`);
|
|
332
|
-
}
|
|
333
|
-
});
|
|
334
|
-
cmd
|
|
335
|
-
.command('view <name>')
|
|
336
|
-
.alias('show')
|
|
337
|
-
.description('Show a profile (env, host, auth source, preset link)')
|
|
338
|
-
.action((name) => {
|
|
339
|
-
try {
|
|
340
|
-
const p = readProfile(name);
|
|
341
|
-
console.log(chalk.bold(p.name));
|
|
342
|
-
if (p.description)
|
|
343
|
-
console.log(chalk.gray(p.description));
|
|
344
|
-
console.log();
|
|
345
|
-
console.log(chalk.bold('Host:'), p.host.agent + (p.host.version ? `@${p.host.version}` : ''));
|
|
346
|
-
if (p.provider)
|
|
347
|
-
console.log(chalk.bold('Provider:'), p.provider);
|
|
348
|
-
if (p.preset)
|
|
349
|
-
console.log(chalk.bold('Preset:'), p.preset);
|
|
350
|
-
console.log();
|
|
351
|
-
console.log(chalk.bold('Env:'));
|
|
352
|
-
for (const [k, v] of Object.entries(p.env)) {
|
|
353
|
-
console.log(` ${k}=${v}`);
|
|
354
|
-
}
|
|
355
|
-
if (p.auth) {
|
|
356
|
-
console.log();
|
|
357
|
-
console.log(chalk.bold('Auth:'));
|
|
358
|
-
const tokenStatus = hasKeychainToken(p.auth.keychainItem) ? chalk.green('stored') : chalk.red('missing');
|
|
359
|
-
console.log(` ${p.auth.envVar} <- keychain:${p.auth.keychainItem} (${tokenStatus})`);
|
|
360
|
-
}
|
|
361
|
-
const preset = getPresetForProfile(p);
|
|
362
|
-
if (preset?.signupUrl) {
|
|
363
|
-
console.log();
|
|
364
|
-
console.log(chalk.gray(`Sign up: ${preset.signupUrl}`));
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
catch (err) {
|
|
368
|
-
console.error(chalk.red(err.message));
|
|
369
|
-
process.exit(1);
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
cmd
|
|
373
|
-
.command('create')
|
|
374
|
-
.description('Interactive profile creation wizard (any provider, with prompts for endpoints + keys).')
|
|
375
|
-
.option('--name <name>', 'Profile name (skips the name prompt)')
|
|
376
|
-
.option('--provider <provider>', 'Provider preset name (skips the provider prompt)')
|
|
377
|
-
.option('--no-smoke-test', 'Skip the post-create smoke test prompt')
|
|
378
|
-
.action(async (opts) => {
|
|
379
|
-
if (!isInteractiveTerminal()) {
|
|
380
|
-
console.error(chalk.red('agents profiles create requires an interactive terminal. Use `agents profiles add <preset>` for scriptable creation.'));
|
|
381
|
-
process.exit(1);
|
|
382
|
-
}
|
|
383
|
-
const { input, select, confirm } = await import('@inquirer/prompts');
|
|
384
|
-
const name = opts.name
|
|
385
|
-
? opts.name
|
|
386
|
-
: await input({
|
|
387
|
-
message: 'Profile name',
|
|
388
|
-
validate: (v) => /^[a-z0-9][a-z0-9-_]{0,48}$/i.test(v) || 'lowercase alphanumeric + -_ only, max 48 chars',
|
|
389
|
-
});
|
|
390
|
-
validateProfileName(name);
|
|
391
|
-
if (profileExists(name)) {
|
|
392
|
-
const overwrite = await confirm({
|
|
393
|
-
message: `Profile '${name}' already exists. Overwrite?`,
|
|
394
|
-
default: false,
|
|
395
|
-
});
|
|
396
|
-
if (!overwrite) {
|
|
397
|
-
console.log(chalk.gray('Cancelled.'));
|
|
398
|
-
return;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
const presets = listPresets();
|
|
402
|
-
const providerName = opts.provider
|
|
403
|
-
? opts.provider
|
|
404
|
-
: await select({
|
|
405
|
-
message: 'Provider',
|
|
406
|
-
choices: presets.map((p) => ({
|
|
407
|
-
name: `${p.name.padEnd(18)} ${chalk.gray(p.description.slice(0, 70))}`,
|
|
408
|
-
value: p.name,
|
|
409
|
-
})),
|
|
410
|
-
});
|
|
411
|
-
const preset = getPreset(providerName);
|
|
412
|
-
if (!preset) {
|
|
413
|
-
console.error(chalk.red(`Unknown provider '${providerName}'. Run 'agents profiles presets' for the list.`));
|
|
414
|
-
process.exit(1);
|
|
415
|
-
}
|
|
416
|
-
const expanded = expandPreset(preset);
|
|
417
|
-
const collected = {};
|
|
418
|
-
for (const v of expanded.prompts) {
|
|
419
|
-
if (v.secret) {
|
|
420
|
-
collected[v.envVar] = await promptForSecret(v.prompt);
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
const value = await input({
|
|
424
|
-
message: v.hint ? `${v.prompt} ${chalk.gray('(' + v.hint + ')')}` : v.prompt,
|
|
425
|
-
default: v.default,
|
|
426
|
-
validate: v.pattern
|
|
427
|
-
? (val) => new RegExp(v.pattern).test(val) || `must match ${v.pattern}`
|
|
428
|
-
: undefined,
|
|
429
|
-
});
|
|
430
|
-
collected[v.envVar] = value;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
if (!preset.authOptional) {
|
|
434
|
-
await ensureProviderToken(preset.provider, preset.signupUrl);
|
|
435
|
-
}
|
|
436
|
-
const profile = buildProfileFromCollection(name, preset, collected);
|
|
437
|
-
writeProfile(profile);
|
|
438
|
-
console.log(chalk.green(`Profile '${name}' created.`));
|
|
439
|
-
if (preset.docPath) {
|
|
440
|
-
console.log(chalk.gray(`See docs/profiles/${preset.docPath}.md for provider-specific caveats.`));
|
|
441
|
-
}
|
|
442
|
-
if (opts.smokeTest !== false) {
|
|
443
|
-
const run = await confirm({ message: 'Run smoke test now?', default: true });
|
|
444
|
-
if (run) {
|
|
445
|
-
console.log(chalk.gray(`Spawning: agents run ${name} "say alive in one word" (60s timeout)`));
|
|
446
|
-
const inv = getAgentsInvocation([
|
|
447
|
-
'run',
|
|
448
|
-
name,
|
|
449
|
-
'say alive in one word',
|
|
450
|
-
'--headless',
|
|
451
|
-
'--timeout',
|
|
452
|
-
'60s',
|
|
453
|
-
]);
|
|
454
|
-
const child = spawn(inv.command, inv.args, { stdio: 'inherit' });
|
|
455
|
-
child.on('exit', (code) => process.exit(code ?? 0));
|
|
456
|
-
}
|
|
457
|
-
else {
|
|
458
|
-
console.log(chalk.gray(`Try later: agents run ${name} "hello"`));
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
});
|
|
462
|
-
cmd
|
|
463
|
-
.command('add <name>')
|
|
464
|
-
.description('Add a profile. If <name> matches a built-in preset, the preset is applied. Prompts for API key (once per provider).')
|
|
465
|
-
.option('--preset <preset>', 'Use a named preset (defaults to <name> if a preset by that name exists)')
|
|
466
|
-
.option('--version <version>', 'Pin the host CLI version (e.g., 2.1.113)')
|
|
467
|
-
.option('--account <name>', 'Attach an existing durable credential account')
|
|
468
|
-
.option('--key-stdin', 'Read API key from stdin instead of prompting (for scripts/CI)')
|
|
469
|
-
.option('--force', 'Overwrite an existing profile with the same name')
|
|
470
|
-
.addHelpText('after', '\nTo build a custom harness from a host CLI + model in one shot, use `agents harness add`.\n')
|
|
471
|
-
.action(async (name, opts) => {
|
|
472
|
-
// Preset-only surface here — `--host` on `profiles` is reserved for remote
|
|
473
|
-
// device routing (see lib/hosts/passthrough.ts). The host+model one-shot
|
|
474
|
-
// lives on `agents harness add`, which owns its own `--host`.
|
|
475
|
-
try {
|
|
476
|
-
await addProfile(name, { preset: opts.preset, version: opts.version, account: opts.account, keyStdin: opts.keyStdin, force: opts.force }, 'Profile');
|
|
477
|
-
}
|
|
478
|
-
catch (err) {
|
|
479
|
-
console.error(chalk.red(err.message));
|
|
480
|
-
process.exit(1);
|
|
481
|
-
}
|
|
482
|
-
});
|
|
483
|
-
cmd
|
|
484
|
-
.command('remove <name>')
|
|
485
|
-
.alias('rm')
|
|
486
|
-
.description('Delete a profile (keychain token is kept — use `profiles logout <provider>` to remove)')
|
|
487
|
-
.action((name) => {
|
|
488
|
-
const existed = deleteProfile(name);
|
|
489
|
-
if (!existed) {
|
|
490
|
-
console.error(chalk.red(`Profile '${name}' not found.`));
|
|
491
|
-
process.exit(1);
|
|
492
|
-
}
|
|
493
|
-
console.log(chalk.green(`Profile '${name}' removed.`));
|
|
494
|
-
});
|
|
495
|
-
cmd
|
|
496
|
-
.command('login <provider>')
|
|
497
|
-
.description('Store or rotate the API key for a provider (e.g., openrouter). Shared across profiles using that provider.')
|
|
498
|
-
.option('--key-stdin', 'Read API key from stdin')
|
|
499
|
-
.action(async (provider, opts) => {
|
|
500
|
-
try {
|
|
501
|
-
const item = keychainItemName(provider);
|
|
502
|
-
let token;
|
|
503
|
-
if (opts.keyStdin) {
|
|
504
|
-
token = readStdinSync();
|
|
505
|
-
if (!token)
|
|
506
|
-
throw new Error('No key received on stdin.');
|
|
507
|
-
}
|
|
508
|
-
else {
|
|
509
|
-
token = await promptForSecret(`Enter API key for ${provider}`);
|
|
510
|
-
}
|
|
511
|
-
setKeychainToken(item, token);
|
|
512
|
-
console.log(chalk.green(`Stored in keychain: ${item}`));
|
|
513
|
-
}
|
|
514
|
-
catch (err) {
|
|
515
|
-
console.error(chalk.red(err.message));
|
|
516
|
-
process.exit(1);
|
|
517
|
-
}
|
|
518
|
-
});
|
|
519
|
-
cmd
|
|
520
|
-
.command('logout <provider>')
|
|
521
|
-
.description('Remove a stored provider key from keychain')
|
|
522
|
-
.action((provider) => {
|
|
523
|
-
try {
|
|
524
|
-
const item = keychainItemName(provider);
|
|
525
|
-
const existed = deleteKeychainToken(item);
|
|
526
|
-
if (!existed) {
|
|
527
|
-
console.error(chalk.yellow(`No keychain item '${item}' to remove.`));
|
|
528
|
-
process.exit(1);
|
|
529
|
-
}
|
|
530
|
-
console.log(chalk.green(`Removed keychain item: ${item}`));
|
|
531
|
-
}
|
|
532
|
-
catch (err) {
|
|
533
|
-
console.error(chalk.red(err.message));
|
|
534
|
-
process.exit(1);
|
|
535
|
-
}
|
|
536
|
-
});
|
|
537
|
-
}
|
|
@@ -28,6 +28,15 @@ export declare function formatForCwdOutput(name: string | undefined, json: boole
|
|
|
28
28
|
* string when everything answered.
|
|
29
29
|
*/
|
|
30
30
|
export declare function formatFleetSkippedNote(skipped: string[]): string;
|
|
31
|
+
/**
|
|
32
|
+
* One compact trailing note for peers that DID answer a fan-out but whose
|
|
33
|
+
* payload failed verification — a wrong machine id, a fingerprint that doesn't
|
|
34
|
+
* match the targets we sent, or a malformed row. Deliberately separate from
|
|
35
|
+
* {@link formatFleetSkippedNote}: silence means a peer never ran, while this
|
|
36
|
+
* means it ran and we cannot trust what it reports, which is the worse state.
|
|
37
|
+
* Empty string when every answer verified.
|
|
38
|
+
*/
|
|
39
|
+
export declare function formatFleetUnverifiedNote(unverified: string[]): string;
|
|
31
40
|
/**
|
|
32
41
|
* Best-effort `owner/repo` from a repo's origin remote.
|
|
33
42
|
*
|