@swarmify/agents-cli 1.13.3 → 1.14.0
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/README.md +2 -319
- package/bin/agents.js +2 -0
- package/package.json +13 -79
- package/scripts/postinstall.js +4 -71
- package/CHANGELOG.md +0 -316
- package/LICENSE +0 -21
- package/dist/commands/__tests__/sessions-tail.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions-tail.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions-tail.test.js +0 -108
- package/dist/commands/__tests__/sessions-tail.test.js.map +0 -1
- package/dist/commands/__tests__/sessions.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions.test.js +0 -636
- package/dist/commands/__tests__/sessions.test.js.map +0 -1
- package/dist/commands/cloud.d.ts +0 -11
- package/dist/commands/cloud.d.ts.map +0 -1
- package/dist/commands/cloud.js +0 -363
- package/dist/commands/cloud.js.map +0 -1
- package/dist/commands/commands.d.ts +0 -12
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js +0 -629
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts +0 -11
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js +0 -119
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts +0 -11
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js +0 -175
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts +0 -11
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js +0 -251
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/factory.d.ts +0 -11
- package/dist/commands/factory.d.ts.map +0 -1
- package/dist/commands/factory.js +0 -445
- package/dist/commands/factory.js.map +0 -1
- package/dist/commands/fork.d.ts +0 -11
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js +0 -147
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -12
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -690
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts +0 -15
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -137
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -12
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -583
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts +0 -11
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js +0 -170
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts +0 -11
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js +0 -551
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts +0 -12
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js +0 -724
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts +0 -11
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js +0 -393
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/profiles.d.ts +0 -12
- package/dist/commands/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.js +0 -255
- package/dist/commands/profiles.js.map +0 -1
- package/dist/commands/pty.d.ts +0 -21
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js +0 -391
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -11
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js +0 -456
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -11
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -188
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts +0 -16
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js +0 -52
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts +0 -39
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js +0 -197
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts +0 -11
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js +0 -590
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts +0 -12
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js +0 -489
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/secrets.d.ts +0 -11
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js +0 -352
- package/dist/commands/secrets.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts +0 -18
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js +0 -265
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions-tail.d.ts +0 -20
- package/dist/commands/sessions-tail.d.ts.map +0 -1
- package/dist/commands/sessions-tail.js +0 -236
- package/dist/commands/sessions-tail.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -18
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js +0 -1173
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -12
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -717
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts +0 -10
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -26
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts +0 -11
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js +0 -361
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -11
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -70
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts +0 -18
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js +0 -290
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -18
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js +0 -1144
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts +0 -45
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js +0 -106
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts +0 -11
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js +0 -701
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts +0 -43
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js +0 -894
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -496
- package/dist/index.js.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
- package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.js +0 -192
- package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
- package/dist/lib/__tests__/exec.test.d.ts +0 -2
- package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
- package/dist/lib/__tests__/exec.test.js +0 -446
- package/dist/lib/__tests__/exec.test.js.map +0 -1
- package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
- package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
- package/dist/lib/__tests__/git-sync.test.js +0 -138
- package/dist/lib/__tests__/git-sync.test.js.map +0 -1
- package/dist/lib/__tests__/hooks.test.d.ts +0 -2
- package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/lib/__tests__/hooks.test.js +0 -203
- package/dist/lib/__tests__/hooks.test.js.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.js +0 -95
- package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
- package/dist/lib/__tests__/models.test.d.ts +0 -2
- package/dist/lib/__tests__/models.test.d.ts.map +0 -1
- package/dist/lib/__tests__/models.test.js +0 -239
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/rotate.test.d.ts +0 -2
- package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
- package/dist/lib/__tests__/rotate.test.js +0 -80
- package/dist/lib/__tests__/rotate.test.js.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
- package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
- package/dist/lib/__tests__/secrets.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets.test.js +0 -90
- package/dist/lib/__tests__/secrets.test.js.map +0 -1
- package/dist/lib/__tests__/shims.test.d.ts +0 -2
- package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
- package/dist/lib/__tests__/shims.test.js +0 -57
- package/dist/lib/__tests__/shims.test.js.map +0 -1
- package/dist/lib/__tests__/usage.test.d.ts +0 -2
- package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
- package/dist/lib/__tests__/usage.test.js +0 -220
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/__tests__/versions.test.d.ts +0 -2
- package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
- package/dist/lib/__tests__/versions.test.js +0 -63
- package/dist/lib/__tests__/versions.test.js.map +0 -1
- package/dist/lib/agents.d.ts +0 -158
- package/dist/lib/agents.d.ts.map +0 -1
- package/dist/lib/agents.js +0 -1159
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts +0 -27
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js +0 -58
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/cloud/codex.d.ts +0 -26
- package/dist/lib/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js +0 -237
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts +0 -32
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js +0 -43
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts +0 -16
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js +0 -68
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts +0 -37
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js +0 -230
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/rush.test.d.ts +0 -2
- package/dist/lib/cloud/rush.test.d.ts.map +0 -1
- package/dist/lib/cloud/rush.test.js +0 -63
- package/dist/lib/cloud/rush.test.js.map +0 -1
- package/dist/lib/cloud/store.d.ts +0 -23
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js +0 -116
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts +0 -24
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js +0 -145
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts +0 -109
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.js +0 -33
- package/dist/lib/cloud/types.js.map +0 -1
- package/dist/lib/cloud/types.test.d.ts +0 -2
- package/dist/lib/cloud/types.test.d.ts.map +0 -1
- package/dist/lib/cloud/types.test.js +0 -41
- package/dist/lib/cloud/types.test.js.map +0 -1
- package/dist/lib/commands.d.ts +0 -141
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js +0 -514
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts +0 -21
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js +0 -54
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts +0 -43
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js +0 -332
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts +0 -46
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js +0 -209
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts +0 -101
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js +0 -450
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/factory/__tests__/config.test.d.ts +0 -2
- package/dist/lib/factory/__tests__/config.test.d.ts.map +0 -1
- package/dist/lib/factory/__tests__/config.test.js +0 -128
- package/dist/lib/factory/__tests__/config.test.js.map +0 -1
- package/dist/lib/factory/config.d.ts +0 -49
- package/dist/lib/factory/config.d.ts.map +0 -1
- package/dist/lib/factory/config.js +0 -127
- package/dist/lib/factory/config.js.map +0 -1
- package/dist/lib/factory.d.ts +0 -57
- package/dist/lib/factory.d.ts.map +0 -1
- package/dist/lib/factory.js +0 -107
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts +0 -157
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js +0 -647
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts +0 -10
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js +0 -66
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts +0 -125
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js +0 -846
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/ledger/__tests__/local.test.d.ts +0 -2
- package/dist/lib/ledger/__tests__/local.test.d.ts.map +0 -1
- package/dist/lib/ledger/__tests__/local.test.js +0 -177
- package/dist/lib/ledger/__tests__/local.test.js.map +0 -1
- package/dist/lib/ledger/__tests__/sync.test.d.ts +0 -2
- package/dist/lib/ledger/__tests__/sync.test.d.ts.map +0 -1
- package/dist/lib/ledger/__tests__/sync.test.js +0 -117
- package/dist/lib/ledger/__tests__/sync.test.js.map +0 -1
- package/dist/lib/ledger/index.d.ts +0 -18
- package/dist/lib/ledger/index.d.ts.map +0 -1
- package/dist/lib/ledger/index.js +0 -32
- package/dist/lib/ledger/index.js.map +0 -1
- package/dist/lib/ledger/local.d.ts +0 -22
- package/dist/lib/ledger/local.d.ts.map +0 -1
- package/dist/lib/ledger/local.js +0 -333
- package/dist/lib/ledger/local.js.map +0 -1
- package/dist/lib/ledger/r2.d.ts +0 -41
- package/dist/lib/ledger/r2.d.ts.map +0 -1
- package/dist/lib/ledger/r2.js +0 -335
- package/dist/lib/ledger/r2.js.map +0 -1
- package/dist/lib/ledger/sync.d.ts +0 -33
- package/dist/lib/ledger/sync.d.ts.map +0 -1
- package/dist/lib/ledger/sync.js +0 -106
- package/dist/lib/ledger/sync.js.map +0 -1
- package/dist/lib/ledger/types.d.ts +0 -100
- package/dist/lib/ledger/types.d.ts.map +0 -1
- package/dist/lib/ledger/types.js +0 -21
- package/dist/lib/ledger/types.js.map +0 -1
- package/dist/lib/manifest.d.ts +0 -14
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js +0 -48
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts +0 -5
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js +0 -17
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts +0 -64
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js +0 -327
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts +0 -65
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js +0 -174
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts +0 -64
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js +0 -275
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts +0 -98
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js +0 -728
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts +0 -227
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js +0 -1071
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts +0 -27
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js +0 -110
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts +0 -80
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js +0 -556
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/profiles-keychain.d.ts +0 -11
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -14
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts +0 -25
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js +0 -104
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts +0 -70
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.js +0 -145
- package/dist/lib/profiles.js.map +0 -1
- package/dist/lib/pty-client.d.ts +0 -23
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js +0 -181
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts +0 -21
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js +0 -427
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts +0 -45
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js +0 -220
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts +0 -55
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js +0 -103
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/rotate.d.ts +0 -58
- package/dist/lib/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.js +0 -93
- package/dist/lib/rotate.js.map +0 -1
- package/dist/lib/routines.d.ts +0 -99
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js +0 -352
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts +0 -26
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js +0 -325
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts +0 -26
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js +0 -218
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts +0 -26
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js +0 -77
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/secrets-bundles.d.ts +0 -38
- package/dist/lib/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js +0 -176
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -53
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -140
- package/dist/lib/secrets.js.map +0 -1
- package/dist/lib/session/__tests__/db.test.d.ts +0 -2
- package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/db.test.js +0 -54
- package/dist/lib/session/__tests__/db.test.js.map +0 -1
- package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
- package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/discover.test.js +0 -63
- package/dist/lib/session/__tests__/discover.test.js.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.js +0 -44
- package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
- package/dist/lib/session/__tests__/render.test.d.ts +0 -2
- package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/render.test.js +0 -602
- package/dist/lib/session/__tests__/render.test.js.map +0 -1
- package/dist/lib/session/active.d.ts +0 -44
- package/dist/lib/session/active.d.ts.map +0 -1
- package/dist/lib/session/active.js +0 -379
- package/dist/lib/session/active.js.map +0 -1
- package/dist/lib/session/artifacts.d.ts +0 -15
- package/dist/lib/session/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.js +0 -86
- package/dist/lib/session/artifacts.js.map +0 -1
- package/dist/lib/session/db.d.ts +0 -140
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js +0 -599
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts +0 -72
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js +0 -1315
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts +0 -34
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js +0 -663
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts +0 -13
- package/dist/lib/session/prompt.d.ts.map +0 -1
- package/dist/lib/session/prompt.js +0 -79
- package/dist/lib/session/prompt.js.map +0 -1
- package/dist/lib/session/prompt.test.d.ts +0 -2
- package/dist/lib/session/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/prompt.test.js +0 -57
- package/dist/lib/session/prompt.test.js.map +0 -1
- package/dist/lib/session/render.d.ts +0 -103
- package/dist/lib/session/render.d.ts.map +0 -1
- package/dist/lib/session/render.js +0 -798
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts +0 -35
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- package/dist/lib/session/team-filter.js +0 -75
- package/dist/lib/session/team-filter.js.map +0 -1
- package/dist/lib/session/team-filter.test.d.ts +0 -2
- package/dist/lib/session/team-filter.test.d.ts.map +0 -1
- package/dist/lib/session/team-filter.test.js +0 -157
- package/dist/lib/session/team-filter.test.js.map +0 -1
- package/dist/lib/session/types.d.ts +0 -84
- package/dist/lib/session/types.d.ts.map +0 -1
- package/dist/lib/session/types.js +0 -11
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts +0 -272
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js +0 -1322
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts +0 -142
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js +0 -791
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts +0 -87
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js +0 -333
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts +0 -84
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js +0 -410
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/__tests__/oracle.test.d.ts +0 -2
- package/dist/lib/teams/__tests__/oracle.test.d.ts.map +0 -1
- package/dist/lib/teams/__tests__/oracle.test.js +0 -89
- package/dist/lib/teams/__tests__/oracle.test.js.map +0 -1
- package/dist/lib/teams/__tests__/supervisor.test.d.ts +0 -2
- package/dist/lib/teams/__tests__/supervisor.test.d.ts.map +0 -1
- package/dist/lib/teams/__tests__/supervisor.test.js +0 -179
- package/dist/lib/teams/__tests__/supervisor.test.js.map +0 -1
- package/dist/lib/teams/agents.d.ts +0 -247
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js +0 -1244
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts +0 -91
- package/dist/lib/teams/api.d.ts.map +0 -1
- package/dist/lib/teams/api.js +0 -239
- package/dist/lib/teams/api.js.map +0 -1
- package/dist/lib/teams/cloud.d.ts +0 -11
- package/dist/lib/teams/cloud.d.ts.map +0 -1
- package/dist/lib/teams/cloud.js +0 -169
- package/dist/lib/teams/cloud.js.map +0 -1
- package/dist/lib/teams/debug.d.ts +0 -8
- package/dist/lib/teams/debug.d.ts.map +0 -1
- package/dist/lib/teams/debug.js +0 -12
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts +0 -13
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js +0 -66
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/index.d.ts +0 -16
- package/dist/lib/teams/index.d.ts.map +0 -1
- package/dist/lib/teams/index.js +0 -15
- package/dist/lib/teams/index.js.map +0 -1
- package/dist/lib/teams/oracle.d.ts +0 -20
- package/dist/lib/teams/oracle.d.ts.map +0 -1
- package/dist/lib/teams/oracle.js +0 -59
- package/dist/lib/teams/oracle.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts +0 -9
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js +0 -837
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts +0 -43
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- package/dist/lib/teams/persistence.js +0 -299
- package/dist/lib/teams/persistence.js.map +0 -1
- package/dist/lib/teams/ralph.d.ts +0 -8
- package/dist/lib/teams/ralph.d.ts.map +0 -1
- package/dist/lib/teams/ralph.js +0 -59
- package/dist/lib/teams/ralph.js.map +0 -1
- package/dist/lib/teams/registry.d.ts +0 -18
- package/dist/lib/teams/registry.d.ts.map +0 -1
- package/dist/lib/teams/registry.js +0 -68
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts +0 -73
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js +0 -780
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/teams/supervisor.d.ts +0 -49
- package/dist/lib/teams/supervisor.d.ts.map +0 -1
- package/dist/lib/teams/supervisor.js +0 -74
- package/dist/lib/teams/supervisor.js.map +0 -1
- package/dist/lib/template.d.ts +0 -27
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js +0 -60
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts +0 -331
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -29
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts +0 -105
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js +0 -686
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts +0 -253
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js +0 -1796
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
|
@@ -1,701 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
import * as fs from 'fs';
|
|
4
|
-
import * as path from 'path';
|
|
5
|
-
import { select, confirm, checkbox } from '@inquirer/prompts';
|
|
6
|
-
import { AGENTS, ALL_AGENT_IDS, getAccountEmail, getAccountInfo, agentLabel, } from '../lib/agents.js';
|
|
7
|
-
import { formatUsageSummary, getUsageInfoForIdentity, getUsageInfoByIdentity, getUsageLookupKey, } from '../lib/usage.js';
|
|
8
|
-
import { viewAction } from './view.js';
|
|
9
|
-
import { readManifest, writeManifest, createDefaultManifest } from '../lib/manifest.js';
|
|
10
|
-
import { installVersion, removeVersion, listInstalledVersions, isVersionInstalled, isLatestInstalled, getGlobalDefault, setGlobalDefault, getVersionHomePath, syncResourcesToVersion, parseAgentSpec, promptResourceSelection, promptNewResourceSelection, getAvailableResources, getActuallySyncedResources, getNewResources, hasNewResources, } from '../lib/versions.js';
|
|
11
|
-
import { createShim, createVersionedAlias, removeShim, shimExists, getShimsDir, getShimPath, getPathShadowingExecutable, isShimsInPath, getPathSetupInstructions, addShimsToPath, switchConfigSymlink, switchHomeFileSymlinks, } from '../lib/shims.js';
|
|
12
|
-
import { isInteractiveTerminal, isPromptCancelled, requireInteractiveSelection } from './utils.js';
|
|
13
|
-
import { tryAutoPull } from '../lib/git.js';
|
|
14
|
-
import { getAgentsDir } from '../lib/state.js';
|
|
15
|
-
/**
|
|
16
|
-
* Helper to get actual installed version for an agent.
|
|
17
|
-
* Returns the latest installed version, or throws if none installed.
|
|
18
|
-
*/
|
|
19
|
-
async function getInstalledVersionForAgent(agent) {
|
|
20
|
-
const versions = listInstalledVersions(agent);
|
|
21
|
-
if (versions.length > 0) {
|
|
22
|
-
return versions[versions.length - 1];
|
|
23
|
-
}
|
|
24
|
-
throw new Error(`No versions of ${agent} installed`);
|
|
25
|
-
}
|
|
26
|
-
function formatAccountHint(info, usage) {
|
|
27
|
-
const parts = [];
|
|
28
|
-
if (info.email)
|
|
29
|
-
parts.push(info.email);
|
|
30
|
-
const usageSummary = formatUsageSummary(info.plan, usage);
|
|
31
|
-
if (usageSummary)
|
|
32
|
-
parts.push(usageSummary);
|
|
33
|
-
if (parts.length === 0)
|
|
34
|
-
return '';
|
|
35
|
-
return chalk.gray(` [${parts.join(', ')}]`);
|
|
36
|
-
}
|
|
37
|
-
function buildAutomaticSelection(resources) {
|
|
38
|
-
const selection = {};
|
|
39
|
-
if (resources.commands.length > 0)
|
|
40
|
-
selection.commands = resources.commands;
|
|
41
|
-
if (resources.skills.length > 0)
|
|
42
|
-
selection.skills = resources.skills;
|
|
43
|
-
if (resources.hooks.length > 0)
|
|
44
|
-
selection.hooks = resources.hooks;
|
|
45
|
-
if (resources.memory.length > 0)
|
|
46
|
-
selection.memory = resources.memory;
|
|
47
|
-
if (resources.mcp.length > 0)
|
|
48
|
-
selection.mcp = resources.mcp;
|
|
49
|
-
if (resources.permissions.length > 0)
|
|
50
|
-
selection.permissions = resources.permissions;
|
|
51
|
-
if (resources.subagents.length > 0)
|
|
52
|
-
selection.subagents = resources.subagents;
|
|
53
|
-
if (resources.plugins.length > 0)
|
|
54
|
-
selection.plugins = resources.plugins;
|
|
55
|
-
return selection;
|
|
56
|
-
}
|
|
57
|
-
async function setDefaultVersion(agent, installedVersion) {
|
|
58
|
-
setGlobalDefault(agent, installedVersion);
|
|
59
|
-
createShim(agent);
|
|
60
|
-
createVersionedAlias(agent, installedVersion);
|
|
61
|
-
const symlinkResult = await switchConfigSymlink(agent, installedVersion);
|
|
62
|
-
if (symlinkResult.success) {
|
|
63
|
-
console.log(chalk.green(' Set as default'));
|
|
64
|
-
if (symlinkResult.backupPath) {
|
|
65
|
-
console.log(chalk.gray(` Backed up existing config to: ${symlinkResult.backupPath}`));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
switchHomeFileSymlinks(agent, installedVersion);
|
|
69
|
-
warnIfShimShadowed(agent);
|
|
70
|
-
}
|
|
71
|
-
function warnIfShimShadowed(agent) {
|
|
72
|
-
const shadowedBy = getPathShadowingExecutable(agent);
|
|
73
|
-
if (!shadowedBy) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
console.log(chalk.yellow(` Warning: ${AGENTS[agent].cliCommand} currently resolves to ${shadowedBy}`));
|
|
77
|
-
console.log(chalk.gray(` Managed shim: ${getShimPath(agent)}`));
|
|
78
|
-
console.log(chalk.gray(` ${getPathSetupInstructions().split('\n').join('\n ')}`));
|
|
79
|
-
}
|
|
80
|
-
/** Register `agents add`, `agents remove`, `agents use`, and `agents list` (deprecated). */
|
|
81
|
-
export function registerVersionsCommands(program) {
|
|
82
|
-
program
|
|
83
|
-
.command('add <specs...>')
|
|
84
|
-
.description('Download and install agent CLI versions. Enables subsidized API usage through managed binaries.')
|
|
85
|
-
.option('-p, --project', 'Lock this version to the current project directory only, stored in .agents/agents.yaml')
|
|
86
|
-
.option('-y, --yes', 'Auto-accept defaults without prompting (useful for scripts and CI)')
|
|
87
|
-
.addHelpText('after', `
|
|
88
|
-
Examples:
|
|
89
|
-
# Fresh install of the latest Claude CLI
|
|
90
|
-
agents add claude@latest
|
|
91
|
-
|
|
92
|
-
# Install specific version (use this when you need reproducibility)
|
|
93
|
-
agents add claude@2.1.112
|
|
94
|
-
|
|
95
|
-
# Install multiple agents at once
|
|
96
|
-
agents add claude@latest codex@0.116.0
|
|
97
|
-
|
|
98
|
-
# Pin a version to this project only (won't affect global default)
|
|
99
|
-
agents add claude@2.1.100 --project
|
|
100
|
-
|
|
101
|
-
When to use:
|
|
102
|
-
- First time setup: install the agent CLI you want to use
|
|
103
|
-
- Upgrading: install a newer version (old versions remain available)
|
|
104
|
-
- Multi-account: install different versions for different accounts (each version has its own auth)
|
|
105
|
-
- Project-specific: lock a version for a repo with --project
|
|
106
|
-
|
|
107
|
-
Note: The first version you install is NOT set as default automatically. Run 'agents use' to set it.
|
|
108
|
-
`)
|
|
109
|
-
.action(async (specs, options) => {
|
|
110
|
-
const isProject = options.project;
|
|
111
|
-
const skipPrompts = options.yes || !isInteractiveTerminal();
|
|
112
|
-
for (const spec of specs) {
|
|
113
|
-
const parsed = parseAgentSpec(spec);
|
|
114
|
-
if (!parsed) {
|
|
115
|
-
console.log(chalk.red(`Invalid agent: ${spec}`));
|
|
116
|
-
console.log(chalk.gray(`Format: <agent>[@version]. Available: ${ALL_AGENT_IDS.join(', ')}`));
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
const { agent, version } = parsed;
|
|
120
|
-
const agentConfig = AGENTS[agent];
|
|
121
|
-
if (!agentConfig.npmPackage) {
|
|
122
|
-
console.log(chalk.yellow(`${agentLabel(agentConfig.id)} has no npm package. Install manually.`));
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
// Check if already installed (handle 'latest' specially)
|
|
126
|
-
let alreadyInstalled = false;
|
|
127
|
-
let installedAsVersion = version;
|
|
128
|
-
if (version === 'latest') {
|
|
129
|
-
const latestCheck = await isLatestInstalled(agent);
|
|
130
|
-
if (latestCheck.installed && latestCheck.version) {
|
|
131
|
-
alreadyInstalled = true;
|
|
132
|
-
installedAsVersion = latestCheck.version;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
alreadyInstalled = isVersionInstalled(agent, version);
|
|
137
|
-
}
|
|
138
|
-
if (alreadyInstalled) {
|
|
139
|
-
console.log(chalk.gray(`${agentLabel(agentConfig.id)}@${installedAsVersion} already installed`));
|
|
140
|
-
// Ensure shim exists (in case it was deleted or needs updating)
|
|
141
|
-
createShim(agent);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
const spinner = ora(`Installing ${agentLabel(agentConfig.id)}@${version}...`).start();
|
|
145
|
-
const result = await installVersion(agent, version, (msg) => {
|
|
146
|
-
spinner.text = msg;
|
|
147
|
-
});
|
|
148
|
-
if (result.success) {
|
|
149
|
-
spinner.succeed(`Installed ${agentLabel(agentConfig.id)}@${result.installedVersion}`);
|
|
150
|
-
// Create shim if first install
|
|
151
|
-
if (!shimExists(agent)) {
|
|
152
|
-
createShim(agent);
|
|
153
|
-
console.log(chalk.gray(` Created shim: ${getShimsDir()}/${agentConfig.cliCommand}`));
|
|
154
|
-
}
|
|
155
|
-
const installedVersion = result.installedVersion || version;
|
|
156
|
-
// Smart resource detection: compare available vs ACTUALLY synced (source of truth: files)
|
|
157
|
-
const available = getAvailableResources();
|
|
158
|
-
const actuallySynced = getActuallySyncedResources(agent, installedVersion);
|
|
159
|
-
const newResources = getNewResources(available, actuallySynced);
|
|
160
|
-
const hasAnySynced = actuallySynced.commands.length > 0 ||
|
|
161
|
-
actuallySynced.skills.length > 0 ||
|
|
162
|
-
actuallySynced.hooks.length > 0 ||
|
|
163
|
-
actuallySynced.memory.length > 0 ||
|
|
164
|
-
actuallySynced.mcp.length > 0 ||
|
|
165
|
-
actuallySynced.permissions.length > 0 ||
|
|
166
|
-
actuallySynced.plugins.length > 0;
|
|
167
|
-
let selection;
|
|
168
|
-
try {
|
|
169
|
-
if (skipPrompts) {
|
|
170
|
-
if (!hasAnySynced) {
|
|
171
|
-
selection = buildAutomaticSelection(available);
|
|
172
|
-
}
|
|
173
|
-
else if (hasNewResources(newResources, agent)) {
|
|
174
|
-
selection = buildAutomaticSelection(newResources);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
else if (!hasAnySynced) {
|
|
178
|
-
// Nothing synced yet - prompt for ALL resources
|
|
179
|
-
const userSelection = await promptResourceSelection(agent);
|
|
180
|
-
if (userSelection) {
|
|
181
|
-
selection = userSelection;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else if (hasNewResources(newResources, agent)) {
|
|
185
|
-
// Some synced, but NEW resources available - prompt for new only
|
|
186
|
-
const userSelection = await promptNewResourceSelection(agent, newResources);
|
|
187
|
-
if (userSelection) {
|
|
188
|
-
selection = userSelection;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
// else: everything already synced, no prompt needed
|
|
192
|
-
}
|
|
193
|
-
catch (err) {
|
|
194
|
-
if (isPromptCancelled(err)) {
|
|
195
|
-
console.log(chalk.gray('Skipped resource selection'));
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
throw err;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// Sync resources if user made a selection
|
|
202
|
-
if (selection && Object.keys(selection).length > 0) {
|
|
203
|
-
const syncResult = syncResourcesToVersion(agent, installedVersion, selection);
|
|
204
|
-
const synced = [];
|
|
205
|
-
if (syncResult.commands)
|
|
206
|
-
synced.push('commands');
|
|
207
|
-
if (syncResult.skills)
|
|
208
|
-
synced.push('skills');
|
|
209
|
-
if (syncResult.hooks)
|
|
210
|
-
synced.push('hooks');
|
|
211
|
-
if (syncResult.memory.length > 0)
|
|
212
|
-
synced.push('memory');
|
|
213
|
-
if (syncResult.permissions)
|
|
214
|
-
synced.push('permissions');
|
|
215
|
-
if (syncResult.mcp.length > 0)
|
|
216
|
-
synced.push('mcp');
|
|
217
|
-
if (syncResult.plugins.length > 0)
|
|
218
|
-
synced.push('plugins');
|
|
219
|
-
if (synced.length > 0) {
|
|
220
|
-
console.log(chalk.green(` Synced: ${synced.join(', ')}`));
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
// Prompt to set as default
|
|
224
|
-
const currentDefault = getGlobalDefault(agent);
|
|
225
|
-
if (currentDefault !== installedVersion) {
|
|
226
|
-
if (skipPrompts) {
|
|
227
|
-
await setDefaultVersion(agent, installedVersion);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
try {
|
|
231
|
-
// Fetch account info for context in the prompt
|
|
232
|
-
const home = getVersionHomePath(agent, installedVersion);
|
|
233
|
-
const info = await getAccountInfo(agent, home);
|
|
234
|
-
const usage = await getUsageInfoForIdentity({
|
|
235
|
-
agentId: agent,
|
|
236
|
-
home,
|
|
237
|
-
cliVersion: installedVersion,
|
|
238
|
-
info,
|
|
239
|
-
});
|
|
240
|
-
const accountHint = formatAccountHint(info, usage.snapshot);
|
|
241
|
-
const message = currentDefault
|
|
242
|
-
? `Switch default from ${agentLabel(agentConfig.id)}@${currentDefault} to ${agentLabel(agentConfig.id)}@${installedVersion}${accountHint}?`
|
|
243
|
-
: `Set ${agentLabel(agentConfig.id)}@${installedVersion}${accountHint} as default?`;
|
|
244
|
-
const setAsDefault = await confirm({
|
|
245
|
-
message,
|
|
246
|
-
default: true,
|
|
247
|
-
});
|
|
248
|
-
if (setAsDefault) {
|
|
249
|
-
await setDefaultVersion(agent, installedVersion);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
catch (err) {
|
|
253
|
-
if (isPromptCancelled(err)) {
|
|
254
|
-
console.log(chalk.gray('Skipped setting default'));
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
throw err;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
// Auto-add shims to PATH if not already there
|
|
263
|
-
if (!isShimsInPath()) {
|
|
264
|
-
const pathResult = addShimsToPath();
|
|
265
|
-
if (pathResult.success && !pathResult.alreadyPresent) {
|
|
266
|
-
console.log(chalk.green(` Added shims to ~/${pathResult.rcFile}`));
|
|
267
|
-
console.log(chalk.gray(' Restart your shell or run: source ~/' + pathResult.rcFile));
|
|
268
|
-
}
|
|
269
|
-
else if (!pathResult.success) {
|
|
270
|
-
console.log(chalk.yellow('\nCould not auto-add shims to PATH:'));
|
|
271
|
-
console.log(chalk.gray(getPathSetupInstructions()));
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
spinner.fail(`Failed to install ${agentLabel(agentConfig.id)}@${version}`);
|
|
277
|
-
console.error(chalk.gray(result.error || 'Unknown error'));
|
|
278
|
-
continue;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
// Update project manifest if -p flag
|
|
282
|
-
if (isProject) {
|
|
283
|
-
const projectManifestDir = path.join(process.cwd(), '.agents');
|
|
284
|
-
const projectManifestPath = path.join(projectManifestDir, 'agents.yaml');
|
|
285
|
-
if (!fs.existsSync(projectManifestDir)) {
|
|
286
|
-
fs.mkdirSync(projectManifestDir, { recursive: true });
|
|
287
|
-
}
|
|
288
|
-
const manifest = fs.existsSync(projectManifestPath)
|
|
289
|
-
? readManifest(process.cwd()) || createDefaultManifest()
|
|
290
|
-
: createDefaultManifest();
|
|
291
|
-
manifest.agents = manifest.agents || {};
|
|
292
|
-
manifest.agents[agent] = version === 'latest' ? (await getInstalledVersionForAgent(agent)) : version;
|
|
293
|
-
writeManifest(process.cwd(), manifest);
|
|
294
|
-
console.log(chalk.green(` Pinned ${agentLabel(agentConfig.id)}@${version} in .agents/agents.yaml`));
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
program
|
|
299
|
-
.command('remove <specs...>')
|
|
300
|
-
.description('Uninstall agent CLI versions from your system. Frees up disk space and removes auth tokens.')
|
|
301
|
-
.option('-p, --project', 'Also clear the pinned version from .agents/agents.yaml in the current project')
|
|
302
|
-
.addHelpText('after', `
|
|
303
|
-
Examples:
|
|
304
|
-
# Remove a specific version
|
|
305
|
-
agents remove claude@2.0.50
|
|
306
|
-
|
|
307
|
-
# Remove without specifying version (opens interactive picker)
|
|
308
|
-
agents remove claude
|
|
309
|
-
|
|
310
|
-
# Remove and also clear project pin
|
|
311
|
-
agents remove claude@2.0.50 --project
|
|
312
|
-
|
|
313
|
-
When to use:
|
|
314
|
-
- Freeing disk space by removing old unused versions
|
|
315
|
-
- Cleaning up after testing a version you no longer need
|
|
316
|
-
- Removing a version tied to an account you've deactivated
|
|
317
|
-
|
|
318
|
-
Notes:
|
|
319
|
-
- Removing the default version will unset the default; run 'agents use' to pick a new one
|
|
320
|
-
- You can always reinstall with 'agents add' later
|
|
321
|
-
`)
|
|
322
|
-
.action(async (specs, options) => {
|
|
323
|
-
const isProject = options.project;
|
|
324
|
-
for (const spec of specs) {
|
|
325
|
-
const parsed = parseAgentSpec(spec);
|
|
326
|
-
if (!parsed) {
|
|
327
|
-
console.log(chalk.red(`Invalid agent: ${spec}`));
|
|
328
|
-
console.log(chalk.gray(`Format: <agent>[@version]. Available: ${ALL_AGENT_IDS.join(', ')}`));
|
|
329
|
-
continue;
|
|
330
|
-
}
|
|
331
|
-
const { agent, version } = parsed;
|
|
332
|
-
const agentConfig = AGENTS[agent];
|
|
333
|
-
if (version === 'latest' || !spec.includes('@')) {
|
|
334
|
-
// Show picker for which versions to remove
|
|
335
|
-
const versions = listInstalledVersions(agent);
|
|
336
|
-
if (versions.length === 0) {
|
|
337
|
-
console.log(chalk.gray(`No versions of ${agentLabel(agentConfig.id)} installed`));
|
|
338
|
-
continue;
|
|
339
|
-
}
|
|
340
|
-
if (!isInteractiveTerminal()) {
|
|
341
|
-
requireInteractiveSelection(`Selecting ${agentLabel(agentConfig.id)} versions to remove`, [
|
|
342
|
-
`agents remove ${agent}@${versions[0]}`,
|
|
343
|
-
]);
|
|
344
|
-
}
|
|
345
|
-
const globalDefault = getGlobalDefault(agent);
|
|
346
|
-
// Sort versions with default first
|
|
347
|
-
const sortedVersions = [...versions].sort((a, b) => {
|
|
348
|
-
if (a === globalDefault)
|
|
349
|
-
return -1;
|
|
350
|
-
if (b === globalDefault)
|
|
351
|
-
return 1;
|
|
352
|
-
return 0;
|
|
353
|
-
});
|
|
354
|
-
try {
|
|
355
|
-
const toRemove = await checkbox({
|
|
356
|
-
message: `Select ${agentLabel(agentConfig.id)} versions to remove:`,
|
|
357
|
-
choices: sortedVersions.map((v) => ({
|
|
358
|
-
name: v === globalDefault ? `${v} ${chalk.green('(default)')}` : v,
|
|
359
|
-
value: v,
|
|
360
|
-
checked: false, // All unchecked by default
|
|
361
|
-
})),
|
|
362
|
-
});
|
|
363
|
-
if (toRemove.length === 0) {
|
|
364
|
-
console.log(chalk.gray('No versions selected'));
|
|
365
|
-
continue;
|
|
366
|
-
}
|
|
367
|
-
for (const v of toRemove) {
|
|
368
|
-
removeVersion(agent, v);
|
|
369
|
-
console.log(chalk.green(`Removed ${agentLabel(agentConfig.id)}@${v}`));
|
|
370
|
-
}
|
|
371
|
-
// Check if default was removed
|
|
372
|
-
if (globalDefault && toRemove.includes(globalDefault)) {
|
|
373
|
-
setGlobalDefault(agent, undefined);
|
|
374
|
-
console.log(chalk.yellow(`Default version removed. Run: agents use ${agent}@<version> to set a new default`));
|
|
375
|
-
}
|
|
376
|
-
// Remove shim if no versions left
|
|
377
|
-
const remaining = listInstalledVersions(agent);
|
|
378
|
-
if (remaining.length === 0) {
|
|
379
|
-
removeShim(agent);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
catch (err) {
|
|
383
|
-
if (isPromptCancelled(err)) {
|
|
384
|
-
console.log(chalk.gray('Cancelled'));
|
|
385
|
-
continue;
|
|
386
|
-
}
|
|
387
|
-
throw err;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
else {
|
|
391
|
-
// Remove specific version
|
|
392
|
-
if (!isVersionInstalled(agent, version)) {
|
|
393
|
-
console.log(chalk.gray(`${agentLabel(agentConfig.id)}@${version} not installed`));
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
removeVersion(agent, version);
|
|
397
|
-
console.log(chalk.green(`Removed ${agentLabel(agentConfig.id)}@${version}`));
|
|
398
|
-
// Remove shim if no versions left
|
|
399
|
-
const remaining = listInstalledVersions(agent);
|
|
400
|
-
if (remaining.length === 0) {
|
|
401
|
-
removeShim(agent);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
// Update project manifest if -p flag
|
|
406
|
-
if (isProject) {
|
|
407
|
-
const projectManifestPath = path.join(process.cwd(), '.agents', 'agents.yaml');
|
|
408
|
-
if (fs.existsSync(projectManifestPath)) {
|
|
409
|
-
const manifest = readManifest(process.cwd());
|
|
410
|
-
if (manifest?.agents?.[agent]) {
|
|
411
|
-
delete manifest.agents[agent];
|
|
412
|
-
writeManifest(process.cwd(), manifest);
|
|
413
|
-
console.log(chalk.gray(` Removed from .agents/agents.yaml`));
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
});
|
|
419
|
-
program
|
|
420
|
-
.command('use <agent> [version]')
|
|
421
|
-
.description('Switch the active version for an agent. This is how you set defaults globally or per-project.')
|
|
422
|
-
.option('-p, --project', 'Pin to this project directory only (stored in .agents/agents.yaml)')
|
|
423
|
-
.option('-y, --yes', 'Auto-sync resources without prompting')
|
|
424
|
-
.addHelpText('after', `
|
|
425
|
-
Examples:
|
|
426
|
-
# Set global default (interactive picker if version omitted)
|
|
427
|
-
agents use claude
|
|
428
|
-
agents use claude@2.1.112
|
|
429
|
-
|
|
430
|
-
# Lock this project to a specific version (overrides global default when in this directory)
|
|
431
|
-
agents use claude@2.1.100 --project
|
|
432
|
-
|
|
433
|
-
# Switch accounts (each version can be logged into a different account)
|
|
434
|
-
agents use claude@2.1.50
|
|
435
|
-
|
|
436
|
-
When to use:
|
|
437
|
-
- After installing: 'agents add' does NOT set the default; 'use' does
|
|
438
|
-
- Switching accounts: each installed version has separate auth; 'use' switches which one is active
|
|
439
|
-
- Project overrides: set a different version for a specific project with --project
|
|
440
|
-
- Testing: quickly switch between versions without reinstalling
|
|
441
|
-
|
|
442
|
-
Important: This is the ONLY command that sets the default version. If you want a version to be active, you must run 'agents use'.
|
|
443
|
-
`)
|
|
444
|
-
.action(async (agentArg, versionArg, options) => {
|
|
445
|
-
try {
|
|
446
|
-
const skipPrompts = options.yes || !isInteractiveTerminal();
|
|
447
|
-
// Auto-pull ~/.agents if it's a git repo with remote (silent on success)
|
|
448
|
-
const agentsDir = getAgentsDir();
|
|
449
|
-
const pullResult = await tryAutoPull(agentsDir);
|
|
450
|
-
if (pullResult.pulled) {
|
|
451
|
-
console.log(chalk.gray('Synced ~/.agents from remote'));
|
|
452
|
-
}
|
|
453
|
-
// Support both "claude 2.0.65" and "claude@2.0.65" formats
|
|
454
|
-
let agent;
|
|
455
|
-
let version;
|
|
456
|
-
if (agentArg.includes('@')) {
|
|
457
|
-
const parsed = parseAgentSpec(agentArg);
|
|
458
|
-
if (!parsed) {
|
|
459
|
-
console.log(chalk.red(`Invalid agent: ${agentArg}`));
|
|
460
|
-
console.log(chalk.gray(`Format: <agent>[@version]. Available: ${ALL_AGENT_IDS.join(', ')}`));
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
|
-
agent = parsed.agent;
|
|
464
|
-
version = parsed.version === 'latest' ? undefined : parsed.version;
|
|
465
|
-
}
|
|
466
|
-
else {
|
|
467
|
-
const agentLower = agentArg.toLowerCase();
|
|
468
|
-
if (!AGENTS[agentLower]) {
|
|
469
|
-
console.log(chalk.red(`Invalid agent: ${agentArg}`));
|
|
470
|
-
console.log(chalk.gray(`Available: ${ALL_AGENT_IDS.join(', ')}`));
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
agent = agentLower;
|
|
474
|
-
version = versionArg;
|
|
475
|
-
}
|
|
476
|
-
const agentId = agent;
|
|
477
|
-
const agentConfig = AGENTS[agentId];
|
|
478
|
-
let selectedVersion = version;
|
|
479
|
-
if (!version) {
|
|
480
|
-
// Interactive version picker
|
|
481
|
-
const versions = listInstalledVersions(agentId);
|
|
482
|
-
if (versions.length === 0) {
|
|
483
|
-
console.log(chalk.red(`No versions of ${agentLabel(agentConfig.id)} installed`));
|
|
484
|
-
console.log(chalk.gray(`Run: agents add ${agentId}@latest`));
|
|
485
|
-
return;
|
|
486
|
-
}
|
|
487
|
-
if (!isInteractiveTerminal()) {
|
|
488
|
-
requireInteractiveSelection(`Selecting a ${agentLabel(agentConfig.id)} version`, [
|
|
489
|
-
`agents use ${agentId}@${versions[versions.length - 1]}`,
|
|
490
|
-
`agents view ${agentId}`,
|
|
491
|
-
]);
|
|
492
|
-
}
|
|
493
|
-
const globalDefault = getGlobalDefault(agentId);
|
|
494
|
-
// Sort versions with default first
|
|
495
|
-
const sortedVersions = [...versions].sort((a, b) => {
|
|
496
|
-
if (a === globalDefault)
|
|
497
|
-
return -1;
|
|
498
|
-
if (b === globalDefault)
|
|
499
|
-
return 1;
|
|
500
|
-
return 0;
|
|
501
|
-
});
|
|
502
|
-
// Pre-fetch account info for picker labels and usage identity lookup
|
|
503
|
-
const pickerAccounts = await Promise.all(sortedVersions.map((v) => getAccountInfo(agentId, getVersionHomePath(agentId, v)).then((info) => ({ v, info }))));
|
|
504
|
-
const pickerAccountMap = new Map(pickerAccounts.map(({ v, info }) => [v, info]));
|
|
505
|
-
const { usageByKey } = await getUsageInfoByIdentity(pickerAccounts.map(({ v, info }) => ({
|
|
506
|
-
agentId,
|
|
507
|
-
home: getVersionHomePath(agentId, v),
|
|
508
|
-
cliVersion: v,
|
|
509
|
-
info,
|
|
510
|
-
})));
|
|
511
|
-
const maxLabelLen = Math.max(...sortedVersions.map((v) => (v === globalDefault ? `${v} (default)` : v).length));
|
|
512
|
-
const maxEmailLen = Math.max(0, ...pickerAccounts.map(({ info }) => info.email?.length || 0));
|
|
513
|
-
selectedVersion = await select({
|
|
514
|
-
message: `Select ${agentLabel(agentConfig.id)} version:`,
|
|
515
|
-
choices: sortedVersions.map((v) => {
|
|
516
|
-
let label = v === globalDefault ? `${v}${chalk.green(' (default)')}` : v;
|
|
517
|
-
const padLen = maxLabelLen - (v === globalDefault ? `${v} (default)` : v).length;
|
|
518
|
-
if (padLen > 0)
|
|
519
|
-
label += ' '.repeat(padLen);
|
|
520
|
-
const accountInfo = pickerAccountMap.get(v);
|
|
521
|
-
const email = accountInfo?.email || '';
|
|
522
|
-
const usageKey = getUsageLookupKey(accountInfo);
|
|
523
|
-
const usageSummary = usageKey ? formatUsageSummary(null, usageByKey.get(usageKey)?.snapshot || null) : '';
|
|
524
|
-
if (maxEmailLen > 0) {
|
|
525
|
-
label += ' ';
|
|
526
|
-
label += email ? chalk.cyan(email.padEnd(maxEmailLen)) : ' '.repeat(maxEmailLen);
|
|
527
|
-
}
|
|
528
|
-
if (usageSummary) {
|
|
529
|
-
label += ` ${usageSummary}`;
|
|
530
|
-
}
|
|
531
|
-
return { name: label, value: v };
|
|
532
|
-
}),
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
if (!selectedVersion || !isVersionInstalled(agentId, selectedVersion)) {
|
|
536
|
-
console.log(chalk.red(`${agentLabel(agentConfig.id)}@${selectedVersion ?? 'unknown'} not installed`));
|
|
537
|
-
console.log(chalk.gray(`Run: agents add ${agentId}@${selectedVersion ?? 'latest'}`));
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
// selectedVersion is guaranteed to be defined after the check above
|
|
541
|
-
const finalVersion = selectedVersion;
|
|
542
|
-
if (options.project) {
|
|
543
|
-
// Set in project manifest
|
|
544
|
-
const projectManifestDir = path.join(process.cwd(), '.agents');
|
|
545
|
-
const projectManifestPath = path.join(projectManifestDir, 'agents.yaml');
|
|
546
|
-
if (!fs.existsSync(projectManifestDir)) {
|
|
547
|
-
fs.mkdirSync(projectManifestDir, { recursive: true });
|
|
548
|
-
}
|
|
549
|
-
const manifest = fs.existsSync(projectManifestPath)
|
|
550
|
-
? readManifest(process.cwd()) || createDefaultManifest()
|
|
551
|
-
: createDefaultManifest();
|
|
552
|
-
manifest.agents = manifest.agents || {};
|
|
553
|
-
manifest.agents[agentId] = finalVersion;
|
|
554
|
-
writeManifest(process.cwd(), manifest);
|
|
555
|
-
const projEmail = await getAccountEmail(agentId, getVersionHomePath(agentId, finalVersion));
|
|
556
|
-
const projEmailStr = projEmail ? chalk.cyan(` (${projEmail})`) : '';
|
|
557
|
-
console.log(chalk.green(`Set ${agentLabel(agentConfig.id)}@${finalVersion} for this project`) + projEmailStr);
|
|
558
|
-
}
|
|
559
|
-
else {
|
|
560
|
-
// Smart resource detection: compare available vs ACTUALLY synced (source of truth: files, not tracking)
|
|
561
|
-
const available = getAvailableResources();
|
|
562
|
-
const actuallySynced = getActuallySyncedResources(agentId, finalVersion);
|
|
563
|
-
const newResources = getNewResources(available, actuallySynced);
|
|
564
|
-
// Check if anything is actually synced (source of truth: actual files)
|
|
565
|
-
const hasAnySynced = actuallySynced.commands.length > 0 ||
|
|
566
|
-
actuallySynced.skills.length > 0 ||
|
|
567
|
-
actuallySynced.hooks.length > 0 ||
|
|
568
|
-
actuallySynced.memory.length > 0 ||
|
|
569
|
-
actuallySynced.mcp.length > 0 ||
|
|
570
|
-
actuallySynced.permissions.length > 0;
|
|
571
|
-
try {
|
|
572
|
-
if (skipPrompts) {
|
|
573
|
-
let selection;
|
|
574
|
-
if (!hasAnySynced) {
|
|
575
|
-
selection = buildAutomaticSelection(available);
|
|
576
|
-
}
|
|
577
|
-
else if (hasNewResources(newResources, agentId)) {
|
|
578
|
-
selection = buildAutomaticSelection(newResources);
|
|
579
|
-
}
|
|
580
|
-
if (selection && Object.keys(selection).length > 0) {
|
|
581
|
-
const syncResult = syncResourcesToVersion(agentId, finalVersion, selection);
|
|
582
|
-
const syncedTypes = [];
|
|
583
|
-
if (syncResult.commands)
|
|
584
|
-
syncedTypes.push('commands');
|
|
585
|
-
if (syncResult.skills)
|
|
586
|
-
syncedTypes.push('skills');
|
|
587
|
-
if (syncResult.hooks)
|
|
588
|
-
syncedTypes.push('hooks');
|
|
589
|
-
if (syncResult.memory.length > 0)
|
|
590
|
-
syncedTypes.push('memory');
|
|
591
|
-
if (syncResult.permissions)
|
|
592
|
-
syncedTypes.push('permissions');
|
|
593
|
-
if (syncResult.mcp.length > 0)
|
|
594
|
-
syncedTypes.push('mcp');
|
|
595
|
-
if (syncResult.plugins.length > 0)
|
|
596
|
-
syncedTypes.push('plugins');
|
|
597
|
-
if (syncedTypes.length > 0) {
|
|
598
|
-
console.log(chalk.green(`Synced: ${syncedTypes.join(', ')}`));
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
else if (!hasAnySynced) {
|
|
603
|
-
// First time: prompt for ALL resources
|
|
604
|
-
console.log(chalk.yellow(`\n${agentLabel(agentConfig.id)}@${finalVersion} has no synced resources.`));
|
|
605
|
-
const userSelection = await promptResourceSelection(agentId);
|
|
606
|
-
if (userSelection && Object.keys(userSelection).length > 0) {
|
|
607
|
-
const syncResult = syncResourcesToVersion(agentId, finalVersion, userSelection);
|
|
608
|
-
const syncedTypes = [];
|
|
609
|
-
if (syncResult.commands)
|
|
610
|
-
syncedTypes.push('commands');
|
|
611
|
-
if (syncResult.skills)
|
|
612
|
-
syncedTypes.push('skills');
|
|
613
|
-
if (syncResult.hooks)
|
|
614
|
-
syncedTypes.push('hooks');
|
|
615
|
-
if (syncResult.memory.length > 0)
|
|
616
|
-
syncedTypes.push('memory');
|
|
617
|
-
if (syncResult.permissions)
|
|
618
|
-
syncedTypes.push('permissions');
|
|
619
|
-
if (syncResult.mcp.length > 0)
|
|
620
|
-
syncedTypes.push('mcp');
|
|
621
|
-
if (syncResult.plugins.length > 0)
|
|
622
|
-
syncedTypes.push('plugins');
|
|
623
|
-
if (syncedTypes.length > 0) {
|
|
624
|
-
console.log(chalk.green(`Synced: ${syncedTypes.join(', ')}`));
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
else if (hasNewResources(newResources, agentId)) {
|
|
629
|
-
// Has synced before, but NEW items available
|
|
630
|
-
const userSelection = await promptNewResourceSelection(agentId, newResources);
|
|
631
|
-
if (userSelection && Object.keys(userSelection).length > 0) {
|
|
632
|
-
const syncResult = syncResourcesToVersion(agentId, finalVersion, userSelection);
|
|
633
|
-
const syncedTypes = [];
|
|
634
|
-
if (syncResult.commands)
|
|
635
|
-
syncedTypes.push('commands');
|
|
636
|
-
if (syncResult.skills)
|
|
637
|
-
syncedTypes.push('skills');
|
|
638
|
-
if (syncResult.hooks)
|
|
639
|
-
syncedTypes.push('hooks');
|
|
640
|
-
if (syncResult.memory.length > 0)
|
|
641
|
-
syncedTypes.push('memory');
|
|
642
|
-
if (syncResult.permissions)
|
|
643
|
-
syncedTypes.push('permissions');
|
|
644
|
-
if (syncResult.mcp.length > 0)
|
|
645
|
-
syncedTypes.push('mcp');
|
|
646
|
-
if (syncResult.plugins.length > 0)
|
|
647
|
-
syncedTypes.push('plugins');
|
|
648
|
-
if (syncedTypes.length > 0) {
|
|
649
|
-
console.log(chalk.green(`Synced: ${syncedTypes.join(', ')}`));
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
// else: everything already synced, no prompt needed
|
|
654
|
-
}
|
|
655
|
-
catch (err) {
|
|
656
|
-
if (isPromptCancelled(err)) {
|
|
657
|
-
console.log(chalk.gray('No changes made'));
|
|
658
|
-
return;
|
|
659
|
-
}
|
|
660
|
-
else {
|
|
661
|
-
throw err;
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
// Set global default
|
|
665
|
-
setGlobalDefault(agentId, finalVersion);
|
|
666
|
-
// Regenerate shim so it uses the latest script format
|
|
667
|
-
createShim(agentId);
|
|
668
|
-
createVersionedAlias(agentId, finalVersion);
|
|
669
|
-
// Switch config symlink (e.g., ~/.claude -> version's config)
|
|
670
|
-
// No conflict prompts - just backup existing config if needed
|
|
671
|
-
const symlinkResult = await switchConfigSymlink(agentId, finalVersion);
|
|
672
|
-
if (!symlinkResult.success) {
|
|
673
|
-
console.log(chalk.yellow(`Warning: Could not update config symlink: ${symlinkResult.error}`));
|
|
674
|
-
}
|
|
675
|
-
else if (symlinkResult.backupPath) {
|
|
676
|
-
console.log(chalk.gray(`Backed up existing config to: ${symlinkResult.backupPath}`));
|
|
677
|
-
}
|
|
678
|
-
// Switch home-level files (e.g., ~/.claude.json -> version's auth file)
|
|
679
|
-
switchHomeFileSymlinks(agentId, finalVersion);
|
|
680
|
-
warnIfShimShadowed(agentId);
|
|
681
|
-
const useEmail = await getAccountEmail(agentId, getVersionHomePath(agentId, finalVersion));
|
|
682
|
-
const useEmailStr = useEmail ? chalk.cyan(` (${useEmail})`) : '';
|
|
683
|
-
console.log(chalk.green(`Set ${agentLabel(agentConfig.id)}@${finalVersion} as global default`) + useEmailStr);
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
catch (err) {
|
|
687
|
-
if (isPromptCancelled(err))
|
|
688
|
-
return;
|
|
689
|
-
throw err;
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
// Deprecated: use `agents view` instead
|
|
693
|
-
program
|
|
694
|
-
.command('list [agent]')
|
|
695
|
-
.description('List installed agent CLI versions')
|
|
696
|
-
.action(async (agentArg) => {
|
|
697
|
-
console.log(chalk.red('Deprecated: "agents list" is now "agents view"\n'));
|
|
698
|
-
await viewAction(agentArg);
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
//# sourceMappingURL=versions.js.map
|