@phnx-labs/agents-cli 0.1.0 → 1.14.1
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 +7 -1
- package/README.md +283 -372
- package/dist/commands/alias.d.ts +11 -0
- package/dist/commands/alias.js +117 -0
- package/dist/commands/beta.d.ts +2 -0
- package/dist/commands/beta.js +53 -0
- package/dist/commands/cloud.d.ts +8 -1
- package/dist/commands/cloud.js +108 -22
- package/dist/commands/commands.d.ts +9 -1
- package/dist/commands/commands.js +24 -172
- package/dist/commands/daemon.d.ts +8 -1
- package/dist/commands/daemon.js +13 -5
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/doctor.js +132 -0
- package/dist/commands/drive.d.ts +8 -1
- package/dist/commands/drive.js +20 -3
- package/dist/commands/exec.d.ts +8 -1
- package/dist/commands/exec.js +96 -27
- package/dist/commands/factory.d.ts +19 -0
- package/dist/commands/factory.js +71 -0
- package/dist/commands/fork.d.ts +8 -1
- package/dist/commands/fork.js +11 -4
- package/dist/commands/hooks.d.ts +9 -1
- package/dist/commands/hooks.js +30 -182
- package/dist/commands/init.d.ts +15 -1
- package/dist/commands/init.js +168 -74
- package/dist/commands/mcp.d.ts +9 -1
- package/dist/commands/mcp.js +11 -7
- package/dist/commands/models.d.ts +8 -1
- package/dist/commands/models.js +16 -4
- package/dist/commands/packages.d.ts +8 -1
- package/dist/commands/packages.js +13 -7
- package/dist/commands/permissions.d.ts +9 -1
- package/dist/commands/permissions.js +3 -3
- package/dist/commands/plugins.d.ts +8 -1
- package/dist/commands/plugins.js +13 -2
- package/dist/commands/profiles.d.ts +9 -1
- package/dist/commands/profiles.js +56 -7
- package/dist/commands/prune.d.ts +22 -0
- package/dist/commands/prune.js +191 -0
- package/dist/commands/pty.d.ts +1 -1
- package/dist/commands/pty.js +2 -1
- package/dist/commands/pull.d.ts +8 -1
- package/dist/commands/pull.js +58 -128
- package/dist/commands/refresh-memory.d.ts +7 -1
- package/dist/commands/refresh-memory.js +7 -1
- package/dist/commands/repo.d.ts +15 -0
- package/dist/commands/repo.js +570 -0
- package/dist/commands/resource-view.d.ts +10 -3
- package/dist/commands/resource-view.js +18 -5
- package/dist/commands/routines.d.ts +8 -1
- package/dist/commands/routines.js +17 -4
- package/dist/commands/rules.d.ts +9 -1
- package/dist/commands/rules.js +16 -11
- package/dist/commands/secrets.d.ts +8 -1
- package/dist/commands/secrets.js +235 -63
- package/dist/commands/sessions-picker.d.ts +2 -1
- package/dist/commands/sessions-picker.js +88 -11
- package/dist/commands/sessions-tail.d.ts +19 -0
- package/dist/commands/sessions-tail.js +235 -0
- package/dist/commands/sessions.d.ts +2 -1
- package/dist/commands/sessions.js +188 -7
- package/dist/commands/skills.d.ts +9 -1
- package/dist/commands/skills.js +28 -178
- package/dist/commands/status.d.ts +7 -1
- package/dist/commands/status.js +7 -1
- package/dist/commands/subagents.d.ts +8 -1
- package/dist/commands/subagents.js +11 -1
- package/dist/commands/sync.d.ts +8 -1
- package/dist/commands/sync.js +8 -1
- package/dist/commands/teams-picker.d.ts +4 -1
- package/dist/commands/teams-picker.js +55 -3
- package/dist/commands/teams.d.ts +15 -1
- package/dist/commands/teams.js +323 -69
- package/dist/commands/usage.d.ts +11 -0
- package/dist/commands/usage.js +60 -0
- package/dist/commands/utils.d.ts +6 -1
- package/dist/commands/utils.js +6 -1
- package/dist/commands/versions.d.ts +8 -1
- package/dist/commands/versions.js +4 -3
- package/dist/commands/view.d.ts +47 -2
- package/dist/commands/view.js +317 -24
- package/dist/index.d.ts +7 -2
- package/dist/index.js +172 -34
- package/dist/lib/acp/client.d.ts +31 -0
- package/dist/lib/acp/client.js +117 -0
- package/dist/lib/acp/harnesses.d.ts +26 -0
- package/dist/lib/acp/harnesses.js +65 -0
- package/dist/lib/acp/run.d.ts +18 -0
- package/dist/lib/acp/run.js +39 -0
- package/dist/lib/agents.d.ts +74 -2
- package/dist/lib/agents.js +197 -21
- package/dist/lib/artifact-actions.d.ts +8 -4
- package/dist/lib/artifact-actions.js +8 -6
- package/dist/lib/auto-pull-worker.d.ts +11 -0
- package/dist/lib/auto-pull-worker.js +121 -0
- package/dist/lib/auto-pull.d.ts +31 -0
- package/dist/lib/auto-pull.js +97 -0
- package/dist/lib/beta.d.ts +23 -0
- package/dist/lib/beta.js +90 -0
- package/dist/lib/capabilities.d.ts +29 -0
- package/dist/lib/capabilities.js +74 -0
- package/dist/lib/cloud/codex.d.ts +9 -3
- package/dist/lib/cloud/codex.js +53 -13
- package/dist/lib/cloud/factory.d.ts +8 -3
- package/dist/lib/cloud/factory.js +19 -3
- package/dist/lib/cloud/registry.d.ts +10 -1
- package/dist/lib/cloud/registry.js +14 -3
- package/dist/lib/cloud/rush.d.ts +63 -3
- package/dist/lib/cloud/rush.js +273 -20
- package/dist/lib/cloud/store.d.ts +13 -1
- package/dist/lib/cloud/store.js +23 -4
- package/dist/lib/cloud/stream.d.ts +6 -1
- package/dist/lib/cloud/stream.js +95 -39
- package/dist/lib/cloud/types.d.ts +153 -8
- package/dist/lib/cloud/types.js +34 -2
- package/dist/lib/command-skills.d.ts +20 -0
- package/dist/lib/command-skills.js +142 -0
- package/dist/lib/commands.d.ts +22 -2
- package/dist/lib/commands.js +51 -11
- package/dist/lib/convert.d.ts +10 -1
- package/dist/lib/convert.js +9 -1
- package/dist/lib/daemon.d.ts +21 -1
- package/dist/lib/daemon.js +97 -4
- package/dist/lib/drive-sync.d.ts +18 -1
- package/dist/lib/drive-sync.js +57 -15
- package/dist/lib/exec.d.ts +23 -6
- package/dist/lib/exec.js +53 -17
- package/dist/lib/fs-walk.d.ts +2 -0
- package/dist/lib/fs-walk.js +40 -0
- package/dist/lib/fuzzy.d.ts +53 -0
- package/dist/lib/fuzzy.js +72 -0
- package/dist/lib/gemini-settings.d.ts +4 -0
- package/dist/lib/gemini-settings.js +33 -0
- package/dist/lib/git.d.ts +12 -2
- package/dist/lib/git.js +17 -6
- package/dist/lib/help.d.ts +20 -1
- package/dist/lib/help.js +45 -6
- package/dist/lib/hooks/match.d.ts +32 -0
- package/dist/lib/hooks/match.js +120 -0
- package/dist/lib/hooks.d.ts +17 -4
- package/dist/lib/hooks.js +119 -101
- package/dist/lib/manifest.d.ts +6 -1
- package/dist/lib/manifest.js +15 -4
- package/dist/lib/markdown.d.ts +0 -1
- package/dist/lib/markdown.js +6 -1
- package/dist/lib/mcp.d.ts +0 -1
- package/dist/lib/mcp.js +29 -33
- package/dist/lib/memory-compile.d.ts +13 -3
- package/dist/lib/memory-compile.js +31 -9
- package/dist/lib/memory.d.ts +14 -7
- package/dist/lib/memory.js +67 -38
- package/dist/lib/migrate.d.ts +8 -0
- package/dist/lib/migrate.js +85 -0
- package/dist/lib/models.d.ts +10 -4
- package/dist/lib/models.js +36 -15
- package/dist/lib/onepassword.d.ts +63 -0
- package/dist/lib/onepassword.js +186 -0
- package/dist/lib/paths.d.ts +8 -0
- package/dist/lib/paths.js +20 -0
- package/dist/lib/permissions.d.ts +24 -2
- package/dist/lib/permissions.js +117 -48
- package/dist/lib/picker.d.ts +10 -1
- package/dist/lib/picker.js +15 -1
- package/dist/lib/plugins.d.ts +7 -1
- package/dist/lib/plugins.js +10 -1
- package/dist/lib/profiles-presets.d.ts +10 -1
- package/dist/lib/profiles-presets.js +9 -1
- package/dist/lib/profiles.d.ts +35 -1
- package/dist/lib/profiles.js +36 -15
- package/dist/lib/pty-client.d.ts +1 -1
- package/dist/lib/pty-client.js +0 -1
- package/dist/lib/pty-server.d.ts +16 -2
- package/dist/lib/pty-server.js +92 -3
- package/dist/lib/registry.d.ts +23 -3
- package/dist/lib/registry.js +153 -8
- package/dist/lib/resources.d.ts +28 -1
- package/dist/lib/resources.js +79 -1
- package/dist/lib/rotate.d.ts +40 -13
- package/dist/lib/rotate.js +238 -40
- package/dist/lib/routines.d.ts +29 -1
- package/dist/lib/routines.js +32 -5
- package/dist/lib/runner.d.ts +14 -1
- package/dist/lib/runner.js +22 -3
- package/dist/lib/sandbox.d.ts +16 -1
- package/dist/lib/sandbox.js +39 -16
- package/dist/lib/scheduler.d.ts +8 -1
- package/dist/lib/scheduler.js +8 -1
- package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
- package/dist/lib/{secrets-bundles.d.ts → secrets/bundles.d.ts} +12 -2
- package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
- package/dist/lib/secrets/index.d.ts +55 -0
- package/dist/lib/secrets/index.js +211 -0
- package/dist/lib/secrets/profiles.d.ts +10 -0
- package/dist/lib/secrets/profiles.js +13 -0
- package/dist/lib/session/active.d.ts +43 -0
- package/dist/lib/session/active.js +392 -0
- package/dist/lib/session/artifacts.d.ts +12 -1
- package/dist/lib/session/artifacts.js +25 -5
- package/dist/lib/session/cloud.d.ts +30 -0
- package/dist/lib/session/cloud.js +121 -0
- package/dist/lib/session/db.d.ts +23 -2
- package/dist/lib/session/db.js +76 -12
- package/dist/lib/session/discover.d.ts +19 -4
- package/dist/lib/session/discover.js +344 -48
- package/dist/lib/session/parse.d.ts +28 -1
- package/dist/lib/session/parse.js +267 -9
- package/dist/lib/session/prompt.d.ts +9 -1
- package/dist/lib/session/prompt.js +17 -3
- package/dist/lib/session/render.d.ts +13 -1
- package/dist/lib/session/render.js +20 -1
- package/dist/lib/session/team-filter.d.ts +9 -1
- package/dist/lib/session/team-filter.js +11 -2
- package/dist/lib/session/types.d.ts +16 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +64 -5
- package/dist/lib/shims.js +309 -47
- package/dist/lib/skills.d.ts +27 -2
- package/dist/lib/skills.js +127 -65
- package/dist/lib/sqlite.d.ts +43 -0
- package/dist/lib/sqlite.js +94 -0
- package/dist/lib/state.d.ts +112 -27
- package/dist/lib/state.js +320 -148
- package/dist/lib/subagents.d.ts +9 -1
- package/dist/lib/subagents.js +70 -63
- package/dist/lib/sync-manifest.d.ts +81 -0
- package/dist/lib/sync-manifest.js +450 -0
- package/dist/lib/teams/agents.d.ts +103 -5
- package/dist/lib/teams/agents.js +414 -91
- package/dist/lib/teams/api.d.ts +26 -3
- package/dist/lib/teams/api.js +63 -3
- package/dist/lib/teams/debug.d.ts +6 -1
- package/dist/lib/teams/debug.js +6 -1
- package/dist/lib/teams/file_ops.d.ts +7 -1
- package/dist/lib/teams/file_ops.js +7 -1
- package/dist/lib/teams/index.d.ts +15 -0
- package/dist/lib/teams/index.js +14 -0
- package/dist/lib/teams/parsers.d.ts +4 -1
- package/dist/lib/teams/parsers.js +11 -1
- package/dist/lib/teams/persistence.d.ts +15 -1
- package/dist/lib/teams/persistence.js +102 -20
- package/dist/lib/teams/registry.d.ts +12 -1
- package/dist/lib/teams/registry.js +116 -33
- package/dist/lib/teams/summarizer.d.ts +15 -1
- package/dist/lib/teams/summarizer.js +14 -1
- package/dist/lib/teams/supervisor.d.ts +48 -0
- package/dist/lib/teams/supervisor.js +73 -0
- package/dist/lib/template.d.ts +8 -6
- package/dist/lib/template.js +8 -6
- package/dist/lib/types.d.ts +147 -8
- package/dist/lib/types.js +26 -3
- package/dist/lib/usage.d.ts +32 -1
- package/dist/lib/usage.js +70 -6
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +33 -4
- package/dist/lib/versions.js +376 -108
- package/package.json +32 -17
- package/scripts/postinstall.js +126 -30
- 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.map +0 -1
- package/dist/commands/cloud.js.map +0 -1
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.js.map +0 -1
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -3
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -180
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- 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 -39
- 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.map +0 -1
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.js.map +0 -1
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.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 -110
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/profiles-keychain.d.ts +0 -3
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -10
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.js.map +0 -1
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.js.map +0 -1
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -27
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -127
- 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/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.js.map +0 -1
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alias command -- create top-level shim binaries that expand to `agents <subcommand>`.
|
|
3
|
+
*
|
|
4
|
+
* Generates executable scripts in ~/.agents/shims/ (already on PATH from the
|
|
5
|
+
* standard agents-cli install). Running `teams` becomes equivalent to
|
|
6
|
+
* `agents teams`. Aliases are tracked in ~/.agents/aliases.json so we can
|
|
7
|
+
* list, regenerate, or remove them without scanning the shims directory
|
|
8
|
+
* (which also holds agent CLI shims like claude/codex/gemini).
|
|
9
|
+
*/
|
|
10
|
+
import type { Command } from 'commander';
|
|
11
|
+
export declare function registerAliasCommand(program: Command): void;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { getAgentsDir } from '../lib/state.js';
|
|
5
|
+
import { getShimsDir } from '../lib/shims.js';
|
|
6
|
+
import { ALL_AGENT_IDS, AGENTS } from '../lib/agents.js';
|
|
7
|
+
const ALIASES_FILE = path.join(getAgentsDir(), 'aliases.json');
|
|
8
|
+
/** Names that would clobber an agent CLI shim or the `agents` binary itself. */
|
|
9
|
+
function reservedNames() {
|
|
10
|
+
const reserved = new Set(['agents']);
|
|
11
|
+
for (const id of ALL_AGENT_IDS)
|
|
12
|
+
reserved.add(AGENTS[id].cliCommand);
|
|
13
|
+
return reserved;
|
|
14
|
+
}
|
|
15
|
+
function readAliases() {
|
|
16
|
+
if (!fs.existsSync(ALIASES_FILE))
|
|
17
|
+
return {};
|
|
18
|
+
try {
|
|
19
|
+
const parsed = JSON.parse(fs.readFileSync(ALIASES_FILE, 'utf-8'));
|
|
20
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function writeAliases(map) {
|
|
27
|
+
fs.mkdirSync(path.dirname(ALIASES_FILE), { recursive: true });
|
|
28
|
+
fs.writeFileSync(ALIASES_FILE, JSON.stringify(map, null, 2) + '\n', 'utf-8');
|
|
29
|
+
}
|
|
30
|
+
function shimPath(name) {
|
|
31
|
+
return path.join(getShimsDir(), name);
|
|
32
|
+
}
|
|
33
|
+
function generateAliasShim(name, expansion) {
|
|
34
|
+
return `#!/bin/bash
|
|
35
|
+
# Auto-generated by agents-cli - do not edit
|
|
36
|
+
# Alias shim: ${name} -> agents ${expansion}
|
|
37
|
+
exec agents ${expansion} "$@"
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
function isAliasShim(filePath) {
|
|
41
|
+
try {
|
|
42
|
+
const head = fs.readFileSync(filePath, 'utf-8').slice(0, 200);
|
|
43
|
+
return head.includes('# Alias shim:');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function registerAliasCommand(program) {
|
|
50
|
+
const cmd = program
|
|
51
|
+
.command('alias')
|
|
52
|
+
.description('Create shorthand binaries that expand to `agents <subcommand>`');
|
|
53
|
+
cmd
|
|
54
|
+
.command('add <name> [expansion...]')
|
|
55
|
+
.description('Create an alias shim. If expansion is omitted, defaults to <name>.')
|
|
56
|
+
.action((name, expansion) => {
|
|
57
|
+
const expanded = expansion.length > 0 ? expansion.join(' ') : name;
|
|
58
|
+
if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)) {
|
|
59
|
+
console.error(chalk.red(`Invalid alias name "${name}". Use letters, digits, _ or -.`));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
if (reservedNames().has(name)) {
|
|
63
|
+
console.error(chalk.red(`"${name}" is reserved (collides with an agent CLI or the agents binary).`));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
const target = shimPath(name);
|
|
67
|
+
if (fs.existsSync(target) && !isAliasShim(target)) {
|
|
68
|
+
console.error(chalk.red(`Refusing to overwrite ${target} -- not an agents-cli alias shim.`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
fs.mkdirSync(getShimsDir(), { recursive: true });
|
|
72
|
+
fs.writeFileSync(target, generateAliasShim(name, expanded), 'utf-8');
|
|
73
|
+
fs.chmodSync(target, 0o755);
|
|
74
|
+
const map = readAliases();
|
|
75
|
+
map[name] = expanded;
|
|
76
|
+
writeAliases(map);
|
|
77
|
+
console.log(`${chalk.green('Created')} alias ${chalk.bold(name)} -> ${chalk.dim(`agents ${expanded}`)}`);
|
|
78
|
+
});
|
|
79
|
+
cmd
|
|
80
|
+
.command('remove <name>')
|
|
81
|
+
.alias('rm')
|
|
82
|
+
.description('Delete an alias shim')
|
|
83
|
+
.action((name) => {
|
|
84
|
+
const map = readAliases();
|
|
85
|
+
const target = shimPath(name);
|
|
86
|
+
if (!(name in map) && !fs.existsSync(target)) {
|
|
87
|
+
console.error(chalk.red(`No alias named "${name}".`));
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
if (fs.existsSync(target)) {
|
|
91
|
+
if (!isAliasShim(target)) {
|
|
92
|
+
console.error(chalk.red(`Refusing to delete ${target} -- not an agents-cli alias shim.`));
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
fs.unlinkSync(target);
|
|
96
|
+
}
|
|
97
|
+
delete map[name];
|
|
98
|
+
writeAliases(map);
|
|
99
|
+
console.log(`${chalk.yellow('Removed')} alias ${chalk.bold(name)}`);
|
|
100
|
+
});
|
|
101
|
+
cmd
|
|
102
|
+
.command('list')
|
|
103
|
+
.alias('ls')
|
|
104
|
+
.description('Show installed aliases')
|
|
105
|
+
.action(() => {
|
|
106
|
+
const map = readAliases();
|
|
107
|
+
const entries = Object.entries(map);
|
|
108
|
+
if (entries.length === 0) {
|
|
109
|
+
console.log(chalk.gray('No aliases. Try: agents alias add teams'));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const width = entries.reduce((max, [n]) => Math.max(max, n.length), 0);
|
|
113
|
+
for (const [name, expansion] of entries) {
|
|
114
|
+
console.log(` ${chalk.bold(name.padEnd(width))} ${chalk.dim('->')} agents ${expansion}`);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { ALL_BETA_FEATURES, getBetaConfigLocation, getEnabledBetaFeatures, setBetaEnabled, } from '../lib/beta.js';
|
|
3
|
+
function parseFeatures(values) {
|
|
4
|
+
const valid = new Set(ALL_BETA_FEATURES);
|
|
5
|
+
const invalid = values.filter((value) => !valid.has(value));
|
|
6
|
+
if (invalid.length > 0) {
|
|
7
|
+
console.error(chalk.red(`Unknown beta feature: ${invalid.join(', ')}`));
|
|
8
|
+
console.error(chalk.gray(`Valid features: ${ALL_BETA_FEATURES.join(', ')}`));
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
return values;
|
|
12
|
+
}
|
|
13
|
+
export function registerBetaCommands(program) {
|
|
14
|
+
const beta = program
|
|
15
|
+
.command('beta')
|
|
16
|
+
.description('Enable or disable preview features like drive and factory.')
|
|
17
|
+
.addHelpText('after', `
|
|
18
|
+
Examples:
|
|
19
|
+
agents beta list
|
|
20
|
+
agents beta enable drive factory
|
|
21
|
+
agents beta disable drive
|
|
22
|
+
`);
|
|
23
|
+
beta
|
|
24
|
+
.command('list')
|
|
25
|
+
.description('Show available beta features and whether they are enabled.')
|
|
26
|
+
.action(() => {
|
|
27
|
+
const enabled = new Set(getEnabledBetaFeatures());
|
|
28
|
+
const location = getBetaConfigLocation();
|
|
29
|
+
console.log(chalk.bold('Beta Features'));
|
|
30
|
+
for (const feature of ALL_BETA_FEATURES) {
|
|
31
|
+
const state = enabled.has(feature) ? chalk.green('enabled') : chalk.gray('disabled');
|
|
32
|
+
console.log(` ${feature.padEnd(8)} ${state}`);
|
|
33
|
+
}
|
|
34
|
+
console.log('');
|
|
35
|
+
console.log(chalk.gray(`Config: ${location.path}`));
|
|
36
|
+
});
|
|
37
|
+
beta
|
|
38
|
+
.command('enable <features...>')
|
|
39
|
+
.description('Enable one or more beta features.')
|
|
40
|
+
.action((features) => {
|
|
41
|
+
const result = setBetaEnabled(parseFeatures(features), true);
|
|
42
|
+
console.log(chalk.green(`Enabled: ${features.join(', ')}`));
|
|
43
|
+
console.log(chalk.gray(`Saved to ${result.path}`));
|
|
44
|
+
});
|
|
45
|
+
beta
|
|
46
|
+
.command('disable <features...>')
|
|
47
|
+
.description('Disable one or more beta features.')
|
|
48
|
+
.action((features) => {
|
|
49
|
+
const result = setBetaEnabled(parseFeatures(features), false);
|
|
50
|
+
console.log(chalk.green(`Disabled: ${features.join(', ')}`));
|
|
51
|
+
console.log(chalk.gray(`Saved to ${result.path}`));
|
|
52
|
+
});
|
|
53
|
+
}
|
package/dist/commands/cloud.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud dispatch commands for running agent tasks on remote infrastructure.
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified CLI for dispatching, monitoring, and managing tasks
|
|
5
|
+
* across multiple cloud providers (Rush Cloud, Codex Cloud, Factory/Droid).
|
|
6
|
+
* All tasks are tracked locally in a SQLite database for cross-provider listing.
|
|
7
|
+
*/
|
|
1
8
|
import type { Command } from 'commander';
|
|
9
|
+
/** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
|
|
2
10
|
export declare function registerCloudCommands(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=cloud.d.ts.map
|
package/dist/commands/cloud.js
CHANGED
|
@@ -2,12 +2,14 @@ import chalk from 'chalk';
|
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import ora from 'ora';
|
|
4
4
|
import { resolveProvider, getAllProviders, getDefaultProviderId } from '../lib/cloud/registry.js';
|
|
5
|
-
import { insertTask, updateTaskStatus, getTaskById, listTasks as listStoredTasks } from '../lib/cloud/store.js';
|
|
5
|
+
import { insertTask, updateTaskStatus, getTaskById, listTasks as listStoredTasks, listActiveTasks } from '../lib/cloud/store.js';
|
|
6
6
|
import { renderStream } from '../lib/cloud/stream.js';
|
|
7
|
+
/** Print an error message to stderr and exit. */
|
|
7
8
|
function die(msg, code = 1) {
|
|
8
9
|
console.error(chalk.red(msg));
|
|
9
10
|
process.exit(code);
|
|
10
11
|
}
|
|
12
|
+
/** Format an ISO timestamp as a human-readable relative time string. */
|
|
11
13
|
function relTime(iso) {
|
|
12
14
|
const secs = Math.floor((Date.now() - new Date(iso).getTime()) / 1000);
|
|
13
15
|
if (secs < 10)
|
|
@@ -25,6 +27,7 @@ function truncate(s, n) {
|
|
|
25
27
|
return s;
|
|
26
28
|
return s.slice(0, n - 1) + '...';
|
|
27
29
|
}
|
|
30
|
+
/** Return a chalk color function appropriate for the given task status. */
|
|
28
31
|
function statusColor(status) {
|
|
29
32
|
switch (status) {
|
|
30
33
|
case 'queued':
|
|
@@ -40,17 +43,62 @@ function statusColor(status) {
|
|
|
40
43
|
function isJsonMode(opts) {
|
|
41
44
|
return Boolean(opts.json) || !process.stdout.isTTY;
|
|
42
45
|
}
|
|
46
|
+
/** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
|
|
43
47
|
export function registerCloudCommands(program) {
|
|
44
48
|
const cloud = program
|
|
45
|
-
.command('cloud')
|
|
46
|
-
.description('Dispatch and manage cloud agent tasks across providers (Rush Cloud, Codex Cloud, Factory).')
|
|
49
|
+
.command('cloud', { hidden: true })
|
|
50
|
+
.description('Dispatch and manage cloud agent tasks across providers (Rush Cloud, Codex Cloud, Factory).')
|
|
51
|
+
.addHelpText('after', `
|
|
52
|
+
Providers:
|
|
53
|
+
rush Rush Cloud — dispatches against a GitHub repo + branch
|
|
54
|
+
codex Codex Cloud — runs in a pre-built Codex environment
|
|
55
|
+
factory Factory pods — Droid + computer-use targets
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
# Dispatch a quick fix to Rush Cloud and stream the output
|
|
59
|
+
agents cloud run "fix the flaky e2e in apps/web/tests/checkout.spec.ts" --provider rush --repo getrush/rush --branch main
|
|
60
|
+
|
|
61
|
+
# Fire-and-forget (returns the task id, no streaming)
|
|
62
|
+
agents cloud run "bump tailwind to v4 and fix the breaks" --provider rush --repo getrush/rush --no-follow
|
|
63
|
+
|
|
64
|
+
# Multi-repo dispatch: touch both rush and rush-extension in one task
|
|
65
|
+
agents cloud run "rename POST /v1/charge -> /v2/charge across server + extension" --provider rush --repo getrush/rush --repo getrush/rush-extension
|
|
66
|
+
|
|
67
|
+
# Codex Cloud against a saved environment
|
|
68
|
+
agents cloud run "add pytest fixtures for the new billing module" --provider codex --env env_a1b2c3 --agent codex --timeout 30m
|
|
69
|
+
|
|
70
|
+
# Factory pod targeting a specific computer (Droid)
|
|
71
|
+
agents cloud run "QA the new onboarding flow end-to-end" --provider factory --computer mac-mini-1 --agent droid
|
|
72
|
+
|
|
73
|
+
# See every cloud task you've dispatched (most recent first)
|
|
74
|
+
agents cloud list
|
|
75
|
+
|
|
76
|
+
# Inspect a specific task
|
|
77
|
+
agents cloud status tsk_4f2a91
|
|
78
|
+
|
|
79
|
+
# Live-tail logs for a running task
|
|
80
|
+
agents cloud logs tsk_4f2a91
|
|
81
|
+
|
|
82
|
+
# Send a follow-up while the task is in needs-review
|
|
83
|
+
agents cloud message tsk_4f2a91 "Looks good — also update the OpenAPI spec"
|
|
84
|
+
|
|
85
|
+
# Cancel a runaway task
|
|
86
|
+
agents cloud cancel tsk_4f2a91
|
|
87
|
+
|
|
88
|
+
# See which providers are signed in and ready
|
|
89
|
+
agents cloud providers
|
|
90
|
+
`);
|
|
47
91
|
// ── agents cloud run ──────────────────────────────────────────────────
|
|
48
92
|
cloud
|
|
49
93
|
.command('run [prompt]')
|
|
50
94
|
.description('Dispatch a task to a cloud agent.')
|
|
51
95
|
.option('--provider <id>', 'Cloud backend: rush, codex, factory')
|
|
52
96
|
.option('--agent <name>', 'Agent to run: claude, codex, droid')
|
|
53
|
-
.option('--repo <owner/repo>', 'GitHub repository
|
|
97
|
+
.option('--repo <owner/repo>', 'GitHub repository. Repeatable for multi-repo dispatch (Rush Cloud only).', (value, previous) => {
|
|
98
|
+
const acc = Array.isArray(previous) ? previous : [];
|
|
99
|
+
acc.push(value);
|
|
100
|
+
return acc;
|
|
101
|
+
})
|
|
54
102
|
.option('--branch <name>', 'Target git branch')
|
|
55
103
|
.option('-p, --prompt <text>', 'Inline prompt (alternative to positional argument)')
|
|
56
104
|
.option('--timeout <duration>', 'Kill after duration (e.g., 30m, 2h)')
|
|
@@ -66,10 +114,13 @@ Examples:
|
|
|
66
114
|
agents cloud run "fix the flaky test" --provider rush --repo user/repo
|
|
67
115
|
agents cloud run task.md --provider rush --repo org/project --agent codex
|
|
68
116
|
|
|
117
|
+
# Rush Cloud — multi-repo (clones each into /workspace/<owner>/<name>/)
|
|
118
|
+
agents cloud run "refactor shared logger" --provider rush --repo user/rush --repo user/agents
|
|
119
|
+
|
|
69
120
|
# Codex Cloud
|
|
70
121
|
agents cloud run "add auth tests" --provider codex --env env_abc123
|
|
71
122
|
|
|
72
|
-
# Default provider (set in ~/.agents/agents.yaml)
|
|
123
|
+
# Default provider (set in ~/.agents-system/agents.yaml)
|
|
73
124
|
agents cloud run "refactor auth module" --repo user/repo
|
|
74
125
|
`)
|
|
75
126
|
.action(async (positionalPrompt, options) => {
|
|
@@ -78,15 +129,31 @@ Examples:
|
|
|
78
129
|
let prompt = options.prompt || positionalPrompt;
|
|
79
130
|
if (!prompt)
|
|
80
131
|
die('Prompt is required. Pass it as an argument or with --prompt.');
|
|
81
|
-
// If prompt is a file path, read it
|
|
132
|
+
// If prompt is a file path, read it and tell the user
|
|
82
133
|
if (fs.existsSync(prompt) && fs.statSync(prompt).isFile()) {
|
|
83
|
-
|
|
134
|
+
const filePath = prompt;
|
|
135
|
+
const stat = fs.statSync(filePath);
|
|
136
|
+
const sizeKB = (stat.size / 1024).toFixed(1);
|
|
137
|
+
prompt = fs.readFileSync(filePath, 'utf-8').trim();
|
|
138
|
+
if (process.stderr.isTTY) {
|
|
139
|
+
process.stderr.write(chalk.dim(`Reading prompt from ${filePath} (${sizeKB} KB)\n`));
|
|
140
|
+
}
|
|
84
141
|
}
|
|
85
142
|
const provider = resolveProvider(options.provider);
|
|
143
|
+
// --repo is repeatable: commander gives us an array via our collector.
|
|
144
|
+
// A single --repo value arrives as a one-element array; keep the legacy
|
|
145
|
+
// singular `repo` field in sync so providers that only know that field
|
|
146
|
+
// still dispatch correctly.
|
|
147
|
+
const repoValues = Array.isArray(options.repo)
|
|
148
|
+
? options.repo
|
|
149
|
+
: options.repo
|
|
150
|
+
? [options.repo]
|
|
151
|
+
: [];
|
|
86
152
|
const dispatchOptions = {
|
|
87
153
|
prompt,
|
|
88
154
|
agent: options.agent,
|
|
89
|
-
repo:
|
|
155
|
+
repo: repoValues[0],
|
|
156
|
+
repos: repoValues.length > 0 ? repoValues : undefined,
|
|
90
157
|
branch: options.branch,
|
|
91
158
|
timeout: options.timeout,
|
|
92
159
|
model: options.model,
|
|
@@ -137,23 +204,43 @@ Examples:
|
|
|
137
204
|
.option('--provider <id>', 'Filter by provider')
|
|
138
205
|
.option('--status <status>', 'Filter by status')
|
|
139
206
|
.option('--limit <n>', 'Max results', '20')
|
|
140
|
-
.option('--refresh', 'Fetch latest status from provider before displaying')
|
|
141
207
|
.option('--json', 'JSON output')
|
|
142
208
|
.action(async (options) => {
|
|
143
209
|
const json = isJsonMode(options);
|
|
144
210
|
const providerId = options.provider;
|
|
145
211
|
const status = options.status;
|
|
146
212
|
const limit = parseInt(options.limit, 10) || 20;
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
213
|
+
// Auto-refresh tasks still in transient states (queued, allocating, running, input_required).
|
|
214
|
+
// Groups by provider to minimise resolver calls, refreshes each via provider.status().
|
|
215
|
+
const activeTasks = listActiveTasks();
|
|
216
|
+
if (activeTasks.length > 0) {
|
|
217
|
+
const byProvider = new Map();
|
|
218
|
+
for (const t of activeTasks) {
|
|
219
|
+
if (providerId && t.provider !== providerId)
|
|
220
|
+
continue;
|
|
221
|
+
let ids = byProvider.get(t.provider);
|
|
222
|
+
if (!ids) {
|
|
223
|
+
ids = [];
|
|
224
|
+
byProvider.set(t.provider, ids);
|
|
225
|
+
}
|
|
226
|
+
ids.push(t.id);
|
|
227
|
+
}
|
|
228
|
+
const refreshJobs = [];
|
|
229
|
+
for (const [pid, ids] of byProvider) {
|
|
230
|
+
try {
|
|
231
|
+
const provider = resolveProvider(pid);
|
|
232
|
+
for (const id of ids) {
|
|
233
|
+
refreshJobs.push(provider.status(id)
|
|
234
|
+
.then((fresh) => { insertTask(fresh); })
|
|
235
|
+
.catch(() => { }));
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// provider not configured — skip
|
|
240
|
+
}
|
|
154
241
|
}
|
|
155
|
-
|
|
156
|
-
|
|
242
|
+
if (refreshJobs.length > 0) {
|
|
243
|
+
await Promise.allSettled(refreshJobs);
|
|
157
244
|
}
|
|
158
245
|
}
|
|
159
246
|
const tasks = listStoredTasks({ provider: providerId, status, limit });
|
|
@@ -241,7 +328,7 @@ Examples:
|
|
|
241
328
|
const json = isJsonMode(options);
|
|
242
329
|
const task = getTaskById(id);
|
|
243
330
|
if (!task)
|
|
244
|
-
die(`Task ${id} not found locally. Run 'agents cloud list
|
|
331
|
+
die(`Task ${id} not found locally. Run 'agents cloud list' first.`);
|
|
245
332
|
const provider = resolveProvider(task.provider);
|
|
246
333
|
try {
|
|
247
334
|
const result = await renderStream(provider.stream(id), { json });
|
|
@@ -303,7 +390,7 @@ Examples:
|
|
|
303
390
|
const data = providers.map((p) => ({
|
|
304
391
|
id: p.id,
|
|
305
392
|
name: p.name,
|
|
306
|
-
available: p.
|
|
393
|
+
available: p.capabilities().available,
|
|
307
394
|
default: p.id === defaultId,
|
|
308
395
|
}));
|
|
309
396
|
process.stdout.write(JSON.stringify(data, null, 2) + '\n');
|
|
@@ -311,7 +398,7 @@ Examples:
|
|
|
311
398
|
}
|
|
312
399
|
console.log(chalk.bold('Cloud Providers\n'));
|
|
313
400
|
for (const p of providers) {
|
|
314
|
-
const available = p.
|
|
401
|
+
const available = p.capabilities().available;
|
|
315
402
|
const isDefault = p.id === defaultId;
|
|
316
403
|
const status = available ? chalk.green('ready') : chalk.dim('not configured');
|
|
317
404
|
const defaultTag = isDefault ? chalk.cyan(' (default)') : '';
|
|
@@ -319,4 +406,3 @@ Examples:
|
|
|
319
406
|
}
|
|
320
407
|
});
|
|
321
408
|
}
|
|
322
|
-
//# sourceMappingURL=cloud.js.map
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slash command management for extending agents with custom markdown commands.
|
|
3
|
+
*
|
|
4
|
+
* Implements `agents commands` -- list, add, remove, sync, prune, and view
|
|
5
|
+
* markdown files that agents invoke mid-session as slash commands. Central
|
|
6
|
+
* storage lives in ~/.agents/commands/ and commands are synced to individual
|
|
7
|
+
* version homes (with TOML conversion for Gemini).
|
|
8
|
+
*/
|
|
1
9
|
import type { Command } from 'commander';
|
|
10
|
+
/** Register the `agents commands` command tree (list, add, remove, sync, prune, view). */
|
|
2
11
|
export declare function registerCommandsCommands(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -3,15 +3,16 @@ import ora from 'ora';
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as os from 'os';
|
|
5
5
|
import * as path from 'path';
|
|
6
|
-
import { checkbox
|
|
7
|
-
import { ALL_AGENT_IDS,
|
|
6
|
+
import { checkbox } from '@inquirer/prompts';
|
|
7
|
+
import { ALL_AGENT_IDS, resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
|
|
8
8
|
import { cloneRepo } from '../lib/git.js';
|
|
9
|
-
import { discoverCommands, resolveCommandSource, installCommandCentrally, uninstallCommand, listCentralCommands, getCommandInfo, diffVersionCommands,
|
|
9
|
+
import { discoverCommands, resolveCommandSource, installCommandCentrally, uninstallCommand, listCentralCommands, getCommandInfo, diffVersionCommands, iterCommandsCapableVersions, } from '../lib/commands.js';
|
|
10
10
|
import { getCommandsDir } from '../lib/state.js';
|
|
11
11
|
import { showResourceList, buildTargetsSection, } from './resource-view.js';
|
|
12
|
-
import { getGlobalDefault, syncResourcesToVersion, promptAgentVersionSelection, resolveAgentVersionTargets, } from '../lib/versions.js';
|
|
12
|
+
import { getGlobalDefault, resolveVersionAlias, syncResourcesToVersion, promptAgentVersionSelection, resolveAgentVersionTargets, } from '../lib/versions.js';
|
|
13
13
|
import { recordVersionResources } from '../lib/state.js';
|
|
14
14
|
import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList, printWithPager, requireInteractiveSelection, } from './utils.js';
|
|
15
|
+
/** Register the `agents commands` command tree (list, add, remove, sync, prune, view). */
|
|
15
16
|
export function registerCommandsCommands(program) {
|
|
16
17
|
const commandsCmd = program
|
|
17
18
|
.command('commands')
|
|
@@ -58,7 +59,7 @@ When to use:
|
|
|
58
59
|
process.exit(1);
|
|
59
60
|
}
|
|
60
61
|
filterAgent = resolved;
|
|
61
|
-
filterVersion = parts[1]
|
|
62
|
+
filterVersion = resolveVersionAlias(resolved, parts[1]);
|
|
62
63
|
}
|
|
63
64
|
const rows = buildCommandRows({ filterAgent, filterVersion });
|
|
64
65
|
spinner.stop();
|
|
@@ -127,7 +128,7 @@ Examples:
|
|
|
127
128
|
}
|
|
128
129
|
// Build choices with descriptions
|
|
129
130
|
const choices = centralCommands.map((name) => {
|
|
130
|
-
const cmdPath = path.join(
|
|
131
|
+
const cmdPath = path.join(getCommandsDir(), `${name}.md`);
|
|
131
132
|
let description = '';
|
|
132
133
|
if (fs.existsSync(cmdPath)) {
|
|
133
134
|
const content = fs.readFileSync(cmdPath, 'utf-8');
|
|
@@ -324,174 +325,26 @@ Examples:
|
|
|
324
325
|
}
|
|
325
326
|
}
|
|
326
327
|
});
|
|
328
|
+
// `commands sync` is gone — sync runs automatically when the agent launches.
|
|
327
329
|
commandsCmd
|
|
328
|
-
.command('sync')
|
|
329
|
-
.
|
|
330
|
-
.
|
|
331
|
-
.
|
|
332
|
-
.
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
# Scope to one agent or version
|
|
338
|
-
agents commands sync --agent claude
|
|
339
|
-
agents commands sync --agent claude@2.1.113
|
|
340
|
-
|
|
341
|
-
# Symlink into version homes (propagates central edits automatically, markdown agents only)
|
|
342
|
-
agents commands sync --method symlink
|
|
343
|
-
|
|
344
|
-
Note: Gemini uses TOML — symlink is ignored and a fresh conversion is written
|
|
345
|
-
on every sync. Sync is additive: to remove orphans, use 'agents commands prune'.
|
|
346
|
-
`)
|
|
347
|
-
.action(async (options) => {
|
|
348
|
-
const method = (options.method === 'symlink' ? 'symlink' : 'copy');
|
|
349
|
-
let filter;
|
|
350
|
-
if (options.agent) {
|
|
351
|
-
const [name, version] = String(options.agent).split('@');
|
|
352
|
-
const agentId = resolveAgentName(name);
|
|
353
|
-
if (!agentId) {
|
|
354
|
-
console.log(chalk.red(formatAgentError(name, COMMANDS_CAPABLE_AGENTS)));
|
|
355
|
-
process.exit(1);
|
|
356
|
-
}
|
|
357
|
-
filter = { agent: agentId, version: version || undefined };
|
|
358
|
-
}
|
|
359
|
-
const pairs = iterCommandsCapableVersions(filter);
|
|
360
|
-
if (pairs.length === 0) {
|
|
361
|
-
console.log(chalk.gray('No matching installed versions.'));
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
const diffs = pairs.map(({ agent, version }) => diffVersionCommands(agent, version));
|
|
365
|
-
const plan = diffs.filter((d) => d.toAdd.length > 0 || d.toUpdate.length > 0);
|
|
366
|
-
if (plan.length === 0) {
|
|
367
|
-
console.log(chalk.green('All version homes are up to date with central.'));
|
|
368
|
-
if (diffs.some((d) => d.orphans.length > 0)) {
|
|
369
|
-
console.log(chalk.gray('Orphan commands present. Run \'agents commands prune --dry-run\' to review.'));
|
|
370
|
-
}
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
console.log(chalk.bold(`Syncing commands (method: ${method})\n`));
|
|
374
|
-
let adds = 0, updates = 0, failures = 0;
|
|
375
|
-
for (const diff of plan) {
|
|
376
|
-
const label = `${diff.agent}@${diff.version}`;
|
|
377
|
-
if (diff.toAdd.length > 0) {
|
|
378
|
-
console.log(` ${chalk.cyan(label)} ${chalk.gray('add:')} ${diff.toAdd.join(', ')}`);
|
|
379
|
-
for (const name of diff.toAdd) {
|
|
380
|
-
const r = installCommandToVersion(diff.agent, diff.version, name, method);
|
|
381
|
-
if (r.success)
|
|
382
|
-
adds++;
|
|
383
|
-
else {
|
|
384
|
-
failures++;
|
|
385
|
-
console.log(chalk.red(` ! ${name}: ${r.error}`));
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (diff.toUpdate.length > 0) {
|
|
390
|
-
console.log(` ${chalk.cyan(label)} ${chalk.gray('update:')} ${diff.toUpdate.join(', ')}`);
|
|
391
|
-
for (const name of diff.toUpdate) {
|
|
392
|
-
const r = installCommandToVersion(diff.agent, diff.version, name, method);
|
|
393
|
-
if (r.success)
|
|
394
|
-
updates++;
|
|
395
|
-
else {
|
|
396
|
-
failures++;
|
|
397
|
-
console.log(chalk.red(` ! ${name}: ${r.error}`));
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
console.log();
|
|
403
|
-
console.log(chalk.green(`Synced: ${adds} added, ${updates} updated${failures > 0 ? chalk.red(`, ${failures} failed`) : ''}.`));
|
|
404
|
-
const totalOrphans = diffs.reduce((n, d) => n + d.orphans.length, 0);
|
|
405
|
-
if (totalOrphans > 0) {
|
|
406
|
-
console.log(chalk.gray(`${totalOrphans} orphan(s) remain. Run 'agents commands prune --dry-run' to review.`));
|
|
407
|
-
}
|
|
330
|
+
.command('sync', { hidden: true })
|
|
331
|
+
.allowUnknownOption()
|
|
332
|
+
.allowExcessArguments()
|
|
333
|
+
.action(() => {
|
|
334
|
+
console.error(chalk.red('"agents commands sync" is gone.'));
|
|
335
|
+
console.error(chalk.gray('Sync runs automatically when you launch the agent.'));
|
|
336
|
+
console.error(chalk.gray('To remove orphans, use: agents prune commands'));
|
|
337
|
+
process.exit(1);
|
|
408
338
|
});
|
|
339
|
+
// `commands prune` moved to the top-level `agents prune` command.
|
|
409
340
|
commandsCmd
|
|
410
|
-
.command('prune')
|
|
411
|
-
.
|
|
412
|
-
.
|
|
413
|
-
.
|
|
414
|
-
.
|
|
415
|
-
.
|
|
416
|
-
|
|
417
|
-
# See what would be pruned
|
|
418
|
-
agents commands prune --dry-run
|
|
419
|
-
|
|
420
|
-
# Prune across every installed version (prompts for confirmation)
|
|
421
|
-
agents commands prune
|
|
422
|
-
|
|
423
|
-
# Scope to one agent or version
|
|
424
|
-
agents commands prune --agent claude@2.0.65
|
|
425
|
-
|
|
426
|
-
# Skip confirmation (for scripts)
|
|
427
|
-
agents commands prune -y
|
|
428
|
-
`)
|
|
429
|
-
.action(async (options) => {
|
|
430
|
-
let filter;
|
|
431
|
-
if (options.agent) {
|
|
432
|
-
const [name, version] = String(options.agent).split('@');
|
|
433
|
-
const agentId = resolveAgentName(name);
|
|
434
|
-
if (!agentId) {
|
|
435
|
-
console.log(chalk.red(formatAgentError(name, COMMANDS_CAPABLE_AGENTS)));
|
|
436
|
-
process.exit(1);
|
|
437
|
-
}
|
|
438
|
-
filter = { agent: agentId, version: version || undefined };
|
|
439
|
-
}
|
|
440
|
-
const pairs = iterCommandsCapableVersions(filter);
|
|
441
|
-
const diffs = pairs
|
|
442
|
-
.map(({ agent, version }) => diffVersionCommands(agent, version))
|
|
443
|
-
.filter((d) => d.orphans.length > 0);
|
|
444
|
-
if (diffs.length === 0) {
|
|
445
|
-
console.log(chalk.green('No orphan commands.'));
|
|
446
|
-
return;
|
|
447
|
-
}
|
|
448
|
-
const total = diffs.reduce((n, d) => n + d.orphans.length, 0);
|
|
449
|
-
console.log(chalk.bold(`Orphans (in version home, not in central)\n`));
|
|
450
|
-
for (const d of diffs) {
|
|
451
|
-
console.log(` ${chalk.cyan(`${d.agent}@${d.version}`)} ${d.orphans.join(', ')}`);
|
|
452
|
-
}
|
|
453
|
-
console.log();
|
|
454
|
-
if (options.dryRun) {
|
|
455
|
-
console.log(chalk.gray(`${total} orphan(s). Run without --dry-run to delete.`));
|
|
456
|
-
return;
|
|
457
|
-
}
|
|
458
|
-
if (!options.yes) {
|
|
459
|
-
if (!isInteractiveTerminal()) {
|
|
460
|
-
console.log(chalk.yellow('Non-interactive shell: pass -y to confirm, or --dry-run to preview.'));
|
|
461
|
-
process.exit(1);
|
|
462
|
-
}
|
|
463
|
-
let ok = false;
|
|
464
|
-
try {
|
|
465
|
-
ok = await confirm({
|
|
466
|
-
message: `Delete ${total} orphan command${total === 1 ? '' : 's'}?`,
|
|
467
|
-
default: false,
|
|
468
|
-
});
|
|
469
|
-
}
|
|
470
|
-
catch (err) {
|
|
471
|
-
if (isPromptCancelled(err)) {
|
|
472
|
-
console.log(chalk.gray('Cancelled'));
|
|
473
|
-
return;
|
|
474
|
-
}
|
|
475
|
-
throw err;
|
|
476
|
-
}
|
|
477
|
-
if (!ok) {
|
|
478
|
-
console.log(chalk.gray('Cancelled'));
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
let removed = 0, failures = 0;
|
|
483
|
-
for (const d of diffs) {
|
|
484
|
-
for (const name of d.orphans) {
|
|
485
|
-
const r = removeCommandFromVersion(d.agent, d.version, name);
|
|
486
|
-
if (r.success)
|
|
487
|
-
removed++;
|
|
488
|
-
else {
|
|
489
|
-
failures++;
|
|
490
|
-
console.log(chalk.red(` ! ${d.agent}@${d.version} ${name}: ${r.error}`));
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
console.log(chalk.green(`Pruned ${removed} orphan(s)${failures > 0 ? chalk.red(`, ${failures} failed`) : ''}.`));
|
|
341
|
+
.command('prune', { hidden: true })
|
|
342
|
+
.allowUnknownOption()
|
|
343
|
+
.allowExcessArguments()
|
|
344
|
+
.action(() => {
|
|
345
|
+
console.error(chalk.red('"agents commands prune" moved.'));
|
|
346
|
+
console.error(chalk.gray('Use: agents prune commands (or `agents prune` for everything)'));
|
|
347
|
+
process.exit(1);
|
|
495
348
|
});
|
|
496
349
|
commandsCmd
|
|
497
350
|
.command('view [name]')
|
|
@@ -625,4 +478,3 @@ function formatCommandDetail(name, info, targets) {
|
|
|
625
478
|
lines.push(buildTargetsSection(targets));
|
|
626
479
|
return lines.join('\n');
|
|
627
480
|
}
|
|
628
|
-
//# sourceMappingURL=commands.js.map
|