@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
|
@@ -142,3 +142,33 @@ export function listLinearProjects() {
|
|
|
142
142
|
return [];
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* The `linear` block a def should carry after binding it to `project`.
|
|
147
|
+
*
|
|
148
|
+
* Pure so the write rule is testable without a `linear` CLI or a filesystem —
|
|
149
|
+
* `agents projects link` is the only caller and does nothing else to the field.
|
|
150
|
+
*
|
|
151
|
+
* Two rules, both learned from real drift:
|
|
152
|
+
*
|
|
153
|
+
* - `name` is REFRESHED, never merely preserved. It used to be written by
|
|
154
|
+
* spreading `prior`, so a project renamed on the board kept its old label in
|
|
155
|
+
* the YAML forever — and that label is what the status card, the AGI EXT
|
|
156
|
+
* Fleet panel (`linearProjectName`), and agents naming the work all read.
|
|
157
|
+
* - `url` is dropped when the projectId CHANGES and the incoming row has none.
|
|
158
|
+
* Carrying it over would leave a def pointing at the previous project's page
|
|
159
|
+
* beside the new project's name, and the status card prefers `url` over the
|
|
160
|
+
* id — so the one field a reader clicks would go to the wrong project.
|
|
161
|
+
* Re-linking the SAME id keeps a previously stored url, since the CLI's list
|
|
162
|
+
* row omitting `url` says nothing about whether the project has one.
|
|
163
|
+
*/
|
|
164
|
+
export function nextLinearLink(prior, project) {
|
|
165
|
+
const next = { projectId: project.id, name: project.name };
|
|
166
|
+
// A stored url is kept ONLY when the prior block names the same project. Not
|
|
167
|
+
// `prior.projectId && prior.projectId !== id`: `projects add --linear <url>`
|
|
168
|
+
// writes `{ url }` with no projectId at all, and treating that as "same
|
|
169
|
+
// project" carried a url belonging to whatever the user had pasted.
|
|
170
|
+
const url = project.url ?? (prior?.projectId === project.id ? prior?.url : undefined);
|
|
171
|
+
if (url)
|
|
172
|
+
next.url = url;
|
|
173
|
+
return next;
|
|
174
|
+
}
|
package/dist/lib/loop.js
CHANGED
|
@@ -24,7 +24,7 @@ import * as fs from 'fs';
|
|
|
24
24
|
import * as path from 'path';
|
|
25
25
|
import { buildExecCommand, buildExecEnv } from './exec.js';
|
|
26
26
|
import { extractUsageEvents } from './budget/enforce.js';
|
|
27
|
-
import { parseTimeout } from './routines.js';
|
|
27
|
+
import { parseTimeout } from './scheduling/routines.js';
|
|
28
28
|
import { writeCheckpoint } from './checkpoint.js';
|
|
29
29
|
import { mailboxDir } from './mailbox.js';
|
|
30
30
|
import { composeWin32CommandLine } from './platform/index.js';
|
package/dist/lib/mailbox-gc.js
CHANGED
|
@@ -10,7 +10,7 @@ import * as fs from 'fs';
|
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import { getFeedDir, getMailboxRootDir } from './state.js';
|
|
12
12
|
import { mailboxDir, isValidMailboxId, readMessage, sweepExpired, } from './mailbox.js';
|
|
13
|
-
import { listBlocks, removeBlock, recordMessageReceipt } from './feed.js';
|
|
13
|
+
import { listBlocks, removeBlock, recordMessageReceipt } from './feed/feed.js';
|
|
14
14
|
const DEFAULT_MAX_CONSUMED_AGE_MINUTES = 24 * 60;
|
|
15
15
|
function consumedAgeMinutes(file, now) {
|
|
16
16
|
try {
|
package/dist/lib/mailbox.js
CHANGED
|
@@ -19,7 +19,7 @@ import * as fs from 'fs';
|
|
|
19
19
|
import * as path from 'path';
|
|
20
20
|
import { randomUUID } from 'crypto';
|
|
21
21
|
import { getMailboxRootDir } from './state.js';
|
|
22
|
-
import { recordMessageReceipt } from './feed.js';
|
|
22
|
+
import { recordMessageReceipt } from './feed/feed.js';
|
|
23
23
|
import { parseDuration } from './hooks/cache.js';
|
|
24
24
|
/** Default delivery TTL for messages enqueued without an explicit one (24 hours). */
|
|
25
25
|
export const DEFAULT_TTL_SECONDS = 24 * 60 * 60;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { AgentId } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* On-disk schema of an agent's MCP config file. One entry per distinct
|
|
4
|
+
* serialization, NOT one per agent -- most harnesses share Claude's shape.
|
|
5
|
+
*/
|
|
6
|
+
export type McpFormat =
|
|
7
|
+
/** `{ "mcpServers": { "<name>": {command,args,env} | {url,headers?} } }` */
|
|
8
|
+
'claude-json'
|
|
9
|
+
/** Claude shape, but a remote server is keyed `serverUrl` and has no headers. */
|
|
10
|
+
| 'antigravity-json'
|
|
11
|
+
/** `{ "mcp": { "servers": { "<name>": ... } } }`, remote carries `transport`. */
|
|
12
|
+
| 'openclaw-json'
|
|
13
|
+
/** `{ "mcp": { "<name>": {type:'local',command:[...]} | {type:'remote',url} } }` */
|
|
14
|
+
| 'opencode-jsonc'
|
|
15
|
+
/** `[mcp_servers.<name>]` TOML table. */
|
|
16
|
+
| 'toml'
|
|
17
|
+
/** `mcp_servers:` YAML mapping. */
|
|
18
|
+
| 'yaml'
|
|
19
|
+
/** `{ schema_version, mcp_servers: { "<name>": {transport, ..., enabled} } }` */
|
|
20
|
+
| 'muse-json';
|
|
21
|
+
/** The complete MCP contract for one agent. */
|
|
22
|
+
export interface McpTarget {
|
|
23
|
+
/** MCP config file under a HOME root (a version home, or the real HOME). */
|
|
24
|
+
home(home: string): string;
|
|
25
|
+
/** Project-scoped MCP config file for a repo at `cwd`. */
|
|
26
|
+
project(cwd: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Serialization of that file, or `null` when agents-cli cannot yet write this
|
|
29
|
+
* harness's MCP config. Paths still resolve for the read/detect side.
|
|
30
|
+
*/
|
|
31
|
+
format: McpFormat | null;
|
|
32
|
+
/** Required when `format` is null: why the write path refuses. */
|
|
33
|
+
unsupportedReason?: string;
|
|
34
|
+
/**
|
|
35
|
+
* True when the harness reads this config from the user's REAL home rather
|
|
36
|
+
* than a per-version home, so `home()` ignores its argument. Callers that
|
|
37
|
+
* reason about version isolation must check this rather than assuming every
|
|
38
|
+
* target is version-scoped.
|
|
39
|
+
*/
|
|
40
|
+
homeGlobal?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* When set, `installMcpServers` registers through the harness's own CLI
|
|
43
|
+
* (`claude mcp add` / `codex mcp add`) instead of writing the file directly.
|
|
44
|
+
* The path/format above still describe where that CLI lands the entry.
|
|
45
|
+
*/
|
|
46
|
+
cli?: 'claude' | 'codex';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Single source of truth for every MCP-capable agent's config location and
|
|
50
|
+
* format. Keys MUST equal `capableAgents('mcp')` -- pinned by
|
|
51
|
+
* `mcp-registry.test.ts`.
|
|
52
|
+
*/
|
|
53
|
+
export declare const MCP_TARGETS: Partial<Record<AgentId, McpTarget>>;
|
|
54
|
+
/** The registry entry for `agent`, or undefined when it stores no MCP config. */
|
|
55
|
+
export declare function mcpTarget(agent: AgentId): McpTarget | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Why the write path refuses `agent`, or null when it can write.
|
|
58
|
+
*
|
|
59
|
+
* Two distinct refusals, both loud: the agent has no entry at all (not
|
|
60
|
+
* MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function mcpWriteUnsupportedReason(agent: AgentId): string | null;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative MCP-target registry.
|
|
3
|
+
*
|
|
4
|
+
* Every MCP-capable agent gets ONE entry (`MCP_TARGETS`) describing where its
|
|
5
|
+
* MCP config lives (version home, global user scope, project scope) and which
|
|
6
|
+
* serialization format that file uses. Generic path resolution, config writing,
|
|
7
|
+
* config parsing, and install now read this table instead of the four
|
|
8
|
+
* independent `switch (agentId)` / `if (agentId === '...')` chains that used to
|
|
9
|
+
* be copy-pasted across `lib/agents.ts`, `lib/mcp.ts`, and a since-deleted
|
|
10
|
+
* `lib/resources/mcp.ts` (RUSH-2695) -- which had *different* membership sets, so
|
|
11
|
+
* a harness could resolve a config path and then be silently skipped by the
|
|
12
|
+
* writer, or be written to one file and read back from another.
|
|
13
|
+
*
|
|
14
|
+
* The membership set is pinned to `capableAgents('mcp')` by
|
|
15
|
+
* `mcp-registry.test.ts`, so a newly added harness cannot start out "capable"
|
|
16
|
+
* and quietly no-op: it must either declare a format here or declare, in
|
|
17
|
+
* `format: null` + `unsupportedReason`, that agents-cli cannot write its config
|
|
18
|
+
* yet. A `null` format still resolves paths (the reader and the staleness
|
|
19
|
+
* detector need them); only the write path refuses, and it refuses loudly.
|
|
20
|
+
*
|
|
21
|
+
* Drift this table fixed, each verified against the harness's own docs or an
|
|
22
|
+
* installed config dir:
|
|
23
|
+
*
|
|
24
|
+
* - antigravity: MCP lives in the shared `~/.gemini/config/`, not the
|
|
25
|
+
* per-version `~/.gemini/antigravity-cli/` state dir (agy's bundled
|
|
26
|
+
* `agy-customizations/docs/mcp_servers.md`, and the file agy itself creates
|
|
27
|
+
* at `~/.gemini/config/mcp_config.json`) -- and its remote transport key is
|
|
28
|
+
* `serverUrl`, not `url`.
|
|
29
|
+
* - grok: MCP is `[mcp_servers.<name>]` inside `~/.grok/config.toml`
|
|
30
|
+
* (`~/.grok/docs/user-guide/07-mcp-servers.md`). The user-scope path said
|
|
31
|
+
* `.grok/mcp.json` and the parser read it as JSON, so nothing round-tripped.
|
|
32
|
+
* - kimi: the installer wrote `.kimi-code/mcp.json` while the path resolver
|
|
33
|
+
* answered `.kimi-code/settings.json`, so the staleness detector never saw
|
|
34
|
+
* what the writer had just written.
|
|
35
|
+
*/
|
|
36
|
+
import * as os from 'os';
|
|
37
|
+
import * as path from 'path';
|
|
38
|
+
/** The user's real home — read at call time so a test's HOME override applies. */
|
|
39
|
+
function realHome() {
|
|
40
|
+
return process.env.HOME ?? os.homedir();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Single source of truth for every MCP-capable agent's config location and
|
|
44
|
+
* format. Keys MUST equal `capableAgents('mcp')` -- pinned by
|
|
45
|
+
* `mcp-registry.test.ts`.
|
|
46
|
+
*/
|
|
47
|
+
export const MCP_TARGETS = {
|
|
48
|
+
claude: {
|
|
49
|
+
// Claude reads user-scope MCP from ~/.claude.json, not .claude/settings.json.
|
|
50
|
+
home: (h) => path.join(h, '.claude.json'),
|
|
51
|
+
project: (cwd) => path.join(cwd, '.mcp.json'),
|
|
52
|
+
format: 'claude-json',
|
|
53
|
+
cli: 'claude',
|
|
54
|
+
},
|
|
55
|
+
codex: {
|
|
56
|
+
home: (h) => path.join(h, '.codex', 'config.toml'),
|
|
57
|
+
project: (cwd) => path.join(cwd, '.codex', 'config.toml'),
|
|
58
|
+
format: 'toml',
|
|
59
|
+
cli: 'codex',
|
|
60
|
+
},
|
|
61
|
+
cursor: {
|
|
62
|
+
home: (h) => path.join(h, '.cursor', 'mcp.json'),
|
|
63
|
+
project: (cwd) => path.join(cwd, '.cursor', 'mcp.json'),
|
|
64
|
+
format: 'claude-json',
|
|
65
|
+
},
|
|
66
|
+
opencode: {
|
|
67
|
+
// OpenCode loads ~/.config/opencode/opencode.jsonc, not ~/.opencode/.
|
|
68
|
+
home: (h) => path.join(h, '.config', 'opencode', 'opencode.jsonc'),
|
|
69
|
+
project: (cwd) => path.join(cwd, 'opencode.jsonc'),
|
|
70
|
+
format: 'opencode-jsonc',
|
|
71
|
+
},
|
|
72
|
+
openclaw: {
|
|
73
|
+
home: (h) => path.join(h, '.openclaw', 'openclaw.json'),
|
|
74
|
+
project: (cwd) => path.join(cwd, '.openclaw', 'openclaw.json'),
|
|
75
|
+
format: 'openclaw-json',
|
|
76
|
+
},
|
|
77
|
+
antigravity: {
|
|
78
|
+
// NOT version-isolated, and `home` is deliberately ignored. agy reads MCP
|
|
79
|
+
// from `~/.gemini/config/mcp_config.json` in the user's REAL home: only
|
|
80
|
+
// `~/.gemini/antigravity-cli` is symlinked into a version home, while
|
|
81
|
+
// `~/.gemini/config` is a plain directory agy opens directly. Writing under
|
|
82
|
+
// a version home therefore lands somewhere agy never reads -- the same
|
|
83
|
+
// reason `antigravityWorkflowsDir` (lib/workflows.ts) ignores versionHome,
|
|
84
|
+
// where it is strace-verified against a running agy.
|
|
85
|
+
home: () => path.join(realHome(), '.gemini', 'config', 'mcp_config.json'),
|
|
86
|
+
project: (cwd) => path.join(cwd, '.gemini', 'config', 'mcp_config.json'),
|
|
87
|
+
format: 'antigravity-json',
|
|
88
|
+
homeGlobal: true,
|
|
89
|
+
},
|
|
90
|
+
grok: {
|
|
91
|
+
// Grok's MCP servers are [mcp_servers.<name>] tables in config.toml.
|
|
92
|
+
home: (h) => path.join(h, '.grok', 'config.toml'),
|
|
93
|
+
project: (cwd) => path.join(cwd, '.grok', 'config.toml'),
|
|
94
|
+
format: 'toml',
|
|
95
|
+
},
|
|
96
|
+
kimi: {
|
|
97
|
+
home: (h) => path.join(h, '.kimi-code', 'mcp.json'),
|
|
98
|
+
project: (cwd) => path.join(cwd, '.kimi-code', 'mcp.json'),
|
|
99
|
+
format: 'claude-json',
|
|
100
|
+
},
|
|
101
|
+
droid: {
|
|
102
|
+
home: (h) => path.join(h, '.factory', 'mcp.json'),
|
|
103
|
+
project: (cwd) => path.join(cwd, '.factory', 'mcp.json'),
|
|
104
|
+
format: 'claude-json',
|
|
105
|
+
},
|
|
106
|
+
hermes: {
|
|
107
|
+
home: (h) => path.join(h, '.hermes', 'config.yaml'),
|
|
108
|
+
project: (cwd) => path.join(cwd, '.hermes', 'config.yaml'),
|
|
109
|
+
format: 'yaml',
|
|
110
|
+
},
|
|
111
|
+
pi: {
|
|
112
|
+
// omp reads user-scope MCP from ~/.omp/agent/.mcp.json and project MCP from
|
|
113
|
+
// <root>/.mcp.json (both the Claude schema).
|
|
114
|
+
home: (h) => path.join(h, '.omp', 'agent', '.mcp.json'),
|
|
115
|
+
project: (cwd) => path.join(cwd, '.mcp.json'),
|
|
116
|
+
format: 'claude-json',
|
|
117
|
+
},
|
|
118
|
+
muse: {
|
|
119
|
+
home: (h) => path.join(h, '.config', 'muse', 'settings.json'),
|
|
120
|
+
project: (cwd) => path.join(cwd, '.muse', 'settings.json'),
|
|
121
|
+
format: 'muse-json',
|
|
122
|
+
},
|
|
123
|
+
warp: {
|
|
124
|
+
// Oz reads the Claude .mcp.json schema from ~/.warp/ and <root>/.warp/.
|
|
125
|
+
home: (h) => path.join(h, '.warp', '.mcp.json'),
|
|
126
|
+
project: (cwd) => path.join(cwd, '.warp', '.mcp.json'),
|
|
127
|
+
format: 'claude-json',
|
|
128
|
+
},
|
|
129
|
+
// ── paths known, write format not implemented ──────────────────────────────
|
|
130
|
+
// These four resolve paths (so `agents mcp list` and the staleness detector
|
|
131
|
+
// still work) but refuse the write instead of no-opping. Implementing one
|
|
132
|
+
// means verifying its schema against the installed harness, then setting
|
|
133
|
+
// `format` here -- nothing else changes.
|
|
134
|
+
copilot: {
|
|
135
|
+
home: (h) => path.join(h, '.copilot', 'mcp-config.json'),
|
|
136
|
+
project: (cwd) => path.join(cwd, '.copilot', 'mcp-config.json'),
|
|
137
|
+
format: null,
|
|
138
|
+
unsupportedReason: 'mcp-config.json schema not verified against an installed Copilot CLI',
|
|
139
|
+
},
|
|
140
|
+
amp: {
|
|
141
|
+
home: (h) => path.join(h, '.config', 'amp', 'settings.json'),
|
|
142
|
+
project: (cwd) => path.join(cwd, '.amp', 'settings.json'),
|
|
143
|
+
format: null,
|
|
144
|
+
unsupportedReason: 'Amp nests MCP under a settings key rather than a top-level map; schema not verified',
|
|
145
|
+
},
|
|
146
|
+
kiro: {
|
|
147
|
+
home: (h) => path.join(h, '.kiro', 'settings', 'mcp.json'),
|
|
148
|
+
project: (cwd) => path.join(cwd, '.kiro', 'settings', 'mcp.json'),
|
|
149
|
+
format: null,
|
|
150
|
+
unsupportedReason: 'mcp.json schema not verified against an installed Kiro',
|
|
151
|
+
},
|
|
152
|
+
goose: {
|
|
153
|
+
home: (h) => path.join(h, '.config', 'goose', 'config.yaml'),
|
|
154
|
+
project: (cwd) => path.join(cwd, '.goose', 'config.yaml'),
|
|
155
|
+
format: null,
|
|
156
|
+
unsupportedReason: 'Goose declares MCP servers as `extensions:` entries, not an mcp_servers map',
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
/** The registry entry for `agent`, or undefined when it stores no MCP config. */
|
|
160
|
+
export function mcpTarget(agent) {
|
|
161
|
+
return MCP_TARGETS[agent];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Why the write path refuses `agent`, or null when it can write.
|
|
165
|
+
*
|
|
166
|
+
* Two distinct refusals, both loud: the agent has no entry at all (not
|
|
167
|
+
* MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
|
|
168
|
+
*/
|
|
169
|
+
export function mcpWriteUnsupportedReason(agent) {
|
|
170
|
+
const target = MCP_TARGETS[agent];
|
|
171
|
+
if (!target)
|
|
172
|
+
return `${agent} has no MCP target registered`;
|
|
173
|
+
if (target.format === null) {
|
|
174
|
+
return `${agent}: ${target.unsupportedReason ?? 'MCP config format not implemented'}`;
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
package/dist/lib/mcp.d.ts
CHANGED
|
@@ -133,6 +133,11 @@ export interface WritableMcpServer {
|
|
|
133
133
|
/**
|
|
134
134
|
* Serialize MCP servers into an agent-specific config file.
|
|
135
135
|
*
|
|
136
|
+
* The format comes from `MCP_TARGETS` (lib/mcp-registry.ts), so a harness whose
|
|
137
|
+
* schema is not implemented **throws** here rather than falling through the
|
|
138
|
+
* switch and returning as if it had written something. `installMcpServers`
|
|
139
|
+
* catches that and reports it as an error, never as a silent success.
|
|
140
|
+
*
|
|
136
141
|
* `mode: 'overwrite'` replaces the whole MCP section (used for tool-managed
|
|
137
142
|
* version-home configs). `mode: 'merge'` updates/adds the provided server
|
|
138
143
|
* entries while preserving existing entries (used for project-level configs
|