@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
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deprecated daemon commands.
|
|
3
|
+
*
|
|
4
|
+
* Registers the hidden `agents daemon` command tree as backward-compatible
|
|
5
|
+
* aliases for `agents routines` scheduler lifecycle commands. Scheduled
|
|
6
|
+
* for removal in v2.0.
|
|
7
|
+
*/
|
|
1
8
|
import type { Command } from 'commander';
|
|
9
|
+
/** Register the deprecated `agents daemon` command tree. */
|
|
2
10
|
export declare function registerDaemonCommands(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=daemon.d.ts.map
|
package/dist/commands/daemon.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deprecated daemon commands.
|
|
3
|
+
*
|
|
4
|
+
* Registers the hidden `agents daemon` command tree as backward-compatible
|
|
5
|
+
* aliases for `agents routines` scheduler lifecycle commands. Scheduled
|
|
6
|
+
* for removal in v2.0.
|
|
7
|
+
*/
|
|
8
|
+
import { spawn } from 'child_process';
|
|
1
9
|
import chalk from 'chalk';
|
|
2
10
|
import * as path from 'path';
|
|
3
11
|
import { startDaemon, stopDaemon, isDaemonRunning, readDaemonPid, readDaemonLog, runDaemon, } from '../lib/daemon.js';
|
|
4
12
|
import { listJobs as listAllJobs } from '../lib/routines.js';
|
|
5
13
|
import { JobScheduler } from '../lib/scheduler.js';
|
|
14
|
+
/** Print a deprecation warning pointing to the replacement command. */
|
|
6
15
|
function warnDeprecated(subcommand, replacement) {
|
|
7
16
|
console.log(chalk.yellow(`\u26a0 'agents daemon ${subcommand}' is deprecated and will be removed in v2.0. Use '${replacement}' instead.\n`));
|
|
8
17
|
}
|
|
18
|
+
/** Register the deprecated `agents daemon` command tree. */
|
|
9
19
|
export function registerDaemonCommands(program) {
|
|
10
20
|
const daemonCmd = program
|
|
11
21
|
.command('daemon', { hidden: true })
|
|
@@ -81,12 +91,11 @@ you never need to start it manually.
|
|
|
81
91
|
.action(async (options) => {
|
|
82
92
|
warnDeprecated('logs', 'agents routines scheduler-logs');
|
|
83
93
|
if (options.follow) {
|
|
84
|
-
const { exec: execCb } = await import('child_process');
|
|
85
94
|
const { getAgentsDir } = await import('../lib/state.js');
|
|
86
95
|
const logPath = path.join(getAgentsDir(), 'daemon.log');
|
|
87
|
-
const child =
|
|
88
|
-
child.stdout
|
|
89
|
-
child.stderr
|
|
96
|
+
const child = spawn('tail', ['-f', logPath], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
97
|
+
child.stdout.pipe(process.stdout);
|
|
98
|
+
child.stderr.pipe(process.stderr);
|
|
90
99
|
child.on('exit', () => process.exit(0));
|
|
91
100
|
process.on('SIGINT', () => { child.kill(); process.exit(0); });
|
|
92
101
|
return;
|
|
@@ -107,4 +116,3 @@ you never need to start it manually.
|
|
|
107
116
|
await runDaemon();
|
|
108
117
|
});
|
|
109
118
|
}
|
|
110
|
-
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agents doctor` — diagnostic readout across the install.
|
|
3
|
+
*
|
|
4
|
+
* Three sections:
|
|
5
|
+
* 1. CLI availability — which agent binaries can be invoked.
|
|
6
|
+
* 2. Sync status — per (agent, default-version), is the version-home sync
|
|
7
|
+
* manifest fresh? (sync runs at launch; this surfaces what would happen.)
|
|
8
|
+
* 3. Orphans — per resource type per default version, count of files that
|
|
9
|
+
* would be removed by `agents prune`.
|
|
10
|
+
*
|
|
11
|
+
* Read-only: doctor never mutates state. Run `agents prune` to act on the
|
|
12
|
+
* orphan readout, or just launch the agent to apply pending sync.
|
|
13
|
+
*/
|
|
14
|
+
import type { Command } from 'commander';
|
|
15
|
+
export declare function registerDoctorCommand(program: Command): void;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { checkAllClis } from '../lib/teams/agents.js';
|
|
3
|
+
import { AGENTS, ALL_AGENT_IDS } from '../lib/agents.js';
|
|
4
|
+
import { getAvailableResources, getGlobalDefault, } from '../lib/versions.js';
|
|
5
|
+
import { loadSyncManifest, isSyncStale } from '../lib/sync-manifest.js';
|
|
6
|
+
import { diffVersionCommands, iterCommandsCapableVersions } from '../lib/commands.js';
|
|
7
|
+
import { diffVersionSkills, iterSkillsCapableVersions } from '../lib/skills.js';
|
|
8
|
+
import { diffVersionHooks, iterHooksCapableVersions } from '../lib/hooks.js';
|
|
9
|
+
const AGENT_NAMES = Object.fromEntries(ALL_AGENT_IDS.map((id) => [id, AGENTS[id].name]));
|
|
10
|
+
function checkSyncStatus(cwd) {
|
|
11
|
+
const rows = [];
|
|
12
|
+
for (const agent of ALL_AGENT_IDS) {
|
|
13
|
+
const version = getGlobalDefault(agent);
|
|
14
|
+
if (!version)
|
|
15
|
+
continue;
|
|
16
|
+
const manifest = loadSyncManifest(agent, version);
|
|
17
|
+
if (!manifest) {
|
|
18
|
+
rows.push({ agent, version, status: 'never-synced' });
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const available = getAvailableResources(cwd);
|
|
22
|
+
const stale = isSyncStale(manifest, available, agent, version, cwd);
|
|
23
|
+
rows.push({ agent, version, status: stale ? 'stale' : 'fresh' });
|
|
24
|
+
}
|
|
25
|
+
return rows;
|
|
26
|
+
}
|
|
27
|
+
function countOrphans() {
|
|
28
|
+
const byKey = new Map();
|
|
29
|
+
const ensure = (agent, version) => {
|
|
30
|
+
const key = `${agent}@${version}`;
|
|
31
|
+
let row = byKey.get(key);
|
|
32
|
+
if (!row) {
|
|
33
|
+
row = { agent, version, commands: 0, skills: 0, hooks: 0 };
|
|
34
|
+
byKey.set(key, row);
|
|
35
|
+
}
|
|
36
|
+
return row;
|
|
37
|
+
};
|
|
38
|
+
for (const { agent, version } of iterCommandsCapableVersions()) {
|
|
39
|
+
if (version !== getGlobalDefault(agent))
|
|
40
|
+
continue;
|
|
41
|
+
const diff = diffVersionCommands(agent, version);
|
|
42
|
+
if (diff.orphans.length > 0)
|
|
43
|
+
ensure(agent, version).commands = diff.orphans.length;
|
|
44
|
+
}
|
|
45
|
+
for (const { agent, version } of iterSkillsCapableVersions()) {
|
|
46
|
+
if (version !== getGlobalDefault(agent))
|
|
47
|
+
continue;
|
|
48
|
+
const diff = diffVersionSkills(agent, version);
|
|
49
|
+
if (diff.orphans.length > 0)
|
|
50
|
+
ensure(agent, version).skills = diff.orphans.length;
|
|
51
|
+
}
|
|
52
|
+
for (const { agent, version } of iterHooksCapableVersions()) {
|
|
53
|
+
if (version !== getGlobalDefault(agent))
|
|
54
|
+
continue;
|
|
55
|
+
const diff = diffVersionHooks(agent, version);
|
|
56
|
+
if (diff.orphans.length > 0)
|
|
57
|
+
ensure(agent, version).hooks = diff.orphans.length;
|
|
58
|
+
}
|
|
59
|
+
return Array.from(byKey.values()).filter((r) => r.commands + r.skills + r.hooks > 0);
|
|
60
|
+
}
|
|
61
|
+
function renderText(clis, syncRows, orphanRows) {
|
|
62
|
+
console.log(chalk.bold('Agent CLIs'));
|
|
63
|
+
if (Object.keys(clis).length === 0) {
|
|
64
|
+
console.log(chalk.gray(' (no agents reported)'));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
for (const [name, entry] of Object.entries(clis)) {
|
|
68
|
+
const pretty = AGENT_NAMES[name] || name;
|
|
69
|
+
if (entry.installed) {
|
|
70
|
+
console.log(` ${chalk.green('ready')} ${pretty.padEnd(10)} ${chalk.gray(entry.path || '')}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(` ${chalk.red('no ')} ${pretty.padEnd(10)} ${chalk.gray(entry.error || 'not installed')}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(chalk.bold('Sync status (default versions)'));
|
|
79
|
+
if (syncRows.length === 0) {
|
|
80
|
+
console.log(chalk.gray(' (no default versions set; pin one with `agents use <agent>@<version>`)'));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
for (const row of syncRows) {
|
|
84
|
+
const label = `${AGENT_NAMES[row.agent] || row.agent}@${row.version}`;
|
|
85
|
+
if (row.status === 'fresh') {
|
|
86
|
+
console.log(` ${chalk.green('fresh')} ${label}`);
|
|
87
|
+
}
|
|
88
|
+
else if (row.status === 'stale') {
|
|
89
|
+
console.log(` ${chalk.yellow('stale')} ${label} ${chalk.gray('— will sync on next launch')}`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(` ${chalk.gray('cold ')} ${label} ${chalk.gray('— never synced; first launch will populate')}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
console.log();
|
|
97
|
+
console.log(chalk.bold('Orphans (default versions)'));
|
|
98
|
+
if (orphanRows.length === 0) {
|
|
99
|
+
console.log(chalk.gray(' (none — version homes match central sources)'));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
for (const row of orphanRows) {
|
|
103
|
+
const parts = [];
|
|
104
|
+
if (row.commands > 0)
|
|
105
|
+
parts.push(`${row.commands} command${row.commands === 1 ? '' : 's'}`);
|
|
106
|
+
if (row.skills > 0)
|
|
107
|
+
parts.push(`${row.skills} skill${row.skills === 1 ? '' : 's'}`);
|
|
108
|
+
if (row.hooks > 0)
|
|
109
|
+
parts.push(`${row.hooks} hook${row.hooks === 1 ? '' : 's'}`);
|
|
110
|
+
const label = `${AGENT_NAMES[row.agent] || row.agent}@${row.version}`;
|
|
111
|
+
console.log(` ${chalk.yellow('warn ')} ${label} ${chalk.gray(parts.join(', '))}`);
|
|
112
|
+
}
|
|
113
|
+
console.log(chalk.gray(' Run `agents prune` to remove.'));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export function registerDoctorCommand(program) {
|
|
117
|
+
program
|
|
118
|
+
.command('doctor')
|
|
119
|
+
.description('Diagnose CLI availability, sync status, and orphan resources')
|
|
120
|
+
.option('--json', 'Output machine-readable JSON')
|
|
121
|
+
.action((opts) => {
|
|
122
|
+
const cwd = process.cwd();
|
|
123
|
+
const clis = checkAllClis();
|
|
124
|
+
const syncRows = checkSyncStatus(cwd);
|
|
125
|
+
const orphanRows = countOrphans();
|
|
126
|
+
if (opts.json) {
|
|
127
|
+
console.log(JSON.stringify({ clis, sync: syncRows, orphans: orphanRows }, null, 2));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
renderText(clis, syncRows, orphanRows);
|
|
131
|
+
});
|
|
132
|
+
}
|
package/dist/commands/drive.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drive sync commands.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents drive` command tree for syncing agent session
|
|
5
|
+
* history across machines via rsync. Supports pull, push, attach
|
|
6
|
+
* (redirect agent homes to drive), and detach operations.
|
|
7
|
+
*/
|
|
1
8
|
import type { Command } from 'commander';
|
|
9
|
+
/** Register the `agents drive` command tree. */
|
|
2
10
|
export declare function registerDriveCommands(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=drive.d.ts.map
|
package/dist/commands/drive.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drive sync commands.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents drive` command tree for syncing agent session
|
|
5
|
+
* history across machines via rsync. Supports pull, push, attach
|
|
6
|
+
* (redirect agent homes to drive), and detach operations.
|
|
7
|
+
*/
|
|
1
8
|
import chalk from 'chalk';
|
|
2
9
|
import ora from 'ora';
|
|
10
|
+
import { betaEnableHint, isBetaEnabled } from '../lib/beta.js';
|
|
3
11
|
import { setRemote, pull, push, attach, detach, getDriveStatus, } from '../lib/drive-sync.js';
|
|
12
|
+
/** Register the `agents drive` command tree. */
|
|
4
13
|
export function registerDriveCommands(program) {
|
|
14
|
+
const enabled = isBetaEnabled('drive');
|
|
5
15
|
const driveCmd = program
|
|
6
|
-
.command('drive')
|
|
16
|
+
.command('drive', { hidden: !enabled })
|
|
7
17
|
.description('Sync agent session history across machines via rsync. Set up once, then pull/push to keep sessions in sync.')
|
|
8
18
|
.addHelpText('after', `
|
|
9
19
|
Typical workflow:
|
|
@@ -24,13 +34,20 @@ Typical workflow:
|
|
|
24
34
|
Use case: Keep session history consistent across your laptop and desktop,
|
|
25
35
|
or back up sessions to a server you control.
|
|
26
36
|
`);
|
|
37
|
+
driveCmd.hook('preAction', () => {
|
|
38
|
+
if (enabled)
|
|
39
|
+
return;
|
|
40
|
+
console.error(chalk.red('agents drive is in beta.'));
|
|
41
|
+
console.error(chalk.gray(betaEnableHint('drive')));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
27
44
|
driveCmd
|
|
28
45
|
.command('remote <target>')
|
|
29
46
|
.description('Set the rsync remote target (e.g., user@hostname). Sessions sync to <target>:~/.agents/drive/')
|
|
30
47
|
.addHelpText('after', `
|
|
31
48
|
Examples:
|
|
32
49
|
# Set remote to a server
|
|
33
|
-
agents drive remote
|
|
50
|
+
agents drive remote user@server
|
|
34
51
|
|
|
35
52
|
# Set remote to a local machine on your network
|
|
36
53
|
agents drive remote macbook.local
|
|
@@ -146,6 +163,7 @@ Example:
|
|
|
146
163
|
}
|
|
147
164
|
});
|
|
148
165
|
}
|
|
166
|
+
/** Format an ISO timestamp as a human-readable relative time (e.g. "5 min ago"). */
|
|
149
167
|
function formatTime(iso) {
|
|
150
168
|
const d = new Date(iso);
|
|
151
169
|
const now = Date.now();
|
|
@@ -163,4 +181,3 @@ function formatTime(iso) {
|
|
|
163
181
|
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
164
182
|
return `${months[d.getMonth()]} ${d.getDate()}`;
|
|
165
183
|
}
|
|
166
|
-
//# sourceMappingURL=drive.js.map
|
package/dist/commands/exec.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent execution command.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents run` command which spawns agent CLIs interactively
|
|
5
|
+
* or headlessly. Supports profile resolution, version rotation, secrets
|
|
6
|
+
* injection, and multi-agent fallback chains for rate-limit resilience.
|
|
7
|
+
*/
|
|
1
8
|
import type { Command } from 'commander';
|
|
9
|
+
/** Register the `agents run <agent> [prompt]` command. */
|
|
2
10
|
export declare function registerRunCommand(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=exec.d.ts.map
|
package/dist/commands/exec.js
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent execution command.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents run` command which spawns agent CLIs interactively
|
|
5
|
+
* or headlessly. Supports profile resolution, version rotation, secrets
|
|
6
|
+
* injection, and multi-agent fallback chains for rate-limit resilience.
|
|
7
|
+
*/
|
|
1
8
|
import chalk from 'chalk';
|
|
2
9
|
import { buildExecCommand, parseExecEnv, execAgent, runWithFallback, AGENT_COMMANDS, } from '../lib/exec.js';
|
|
3
10
|
import { profileExists, resolveProfileForRun } from '../lib/profiles.js';
|
|
4
|
-
import { readBundle, resolveBundleEnv } from '../lib/secrets
|
|
5
|
-
import { resolveRunVersion } from '../lib/rotate.js';
|
|
11
|
+
import { readBundle, resolveBundleEnv } from '../lib/secrets/bundles.js';
|
|
12
|
+
import { getConfiguredRunStrategy, normalizeRunStrategy, resolveRunVersion, RUN_STRATEGIES, } from '../lib/rotate.js';
|
|
13
|
+
import { resolveVersionAlias } from '../lib/versions.js';
|
|
6
14
|
const VALID_AGENTS = Object.keys(AGENT_COMMANDS);
|
|
15
|
+
/** Type guard that narrows a string to a known AgentId. */
|
|
7
16
|
function isValidAgent(agent) {
|
|
8
17
|
return VALID_AGENTS.includes(agent);
|
|
9
18
|
}
|
|
19
|
+
/** Build a one-line banner describing which version the rotation picked. */
|
|
10
20
|
function formatRotationBanner(result) {
|
|
11
21
|
const { picked, healthy, excluded } = result;
|
|
12
22
|
const label = picked.email ? `${picked.email} · ${picked.agent}@${picked.version}` : `${picked.agent}@${picked.version}`;
|
|
13
23
|
const ratio = `${healthy.length} of ${healthy.length + excluded.length} healthy`;
|
|
14
24
|
return `[agents] rotation picked ${label} (${ratio})`;
|
|
15
25
|
}
|
|
26
|
+
/** Register the `agents run <agent> [prompt]` command. */
|
|
16
27
|
export function registerRunCommand(program) {
|
|
17
28
|
program
|
|
18
29
|
.command('run <agent> [prompt]')
|
|
@@ -26,20 +37,27 @@ export function registerRunCommand(program) {
|
|
|
26
37
|
.option('--add-dir <dir>', 'Grant access to an additional directory outside the project (Claude only, repeatable)', (val, prev) => [...prev, val], [])
|
|
27
38
|
.option('--json', 'Stream events as JSON lines (for parsing by other tools)')
|
|
28
39
|
.option('--headless', 'Non-interactive mode (default for run)', true)
|
|
40
|
+
.option('-i, --interactive', 'Force interactive mode even when a prompt is provided')
|
|
29
41
|
.option('--session-id <id>', 'Resume a previous conversation (Claude only)')
|
|
30
42
|
.option('--verbose', 'Show detailed execution logs')
|
|
31
43
|
.option('--timeout <duration>', 'Kill the agent after this duration (e.g., 30m, 1h, 2h30m)')
|
|
32
44
|
.option('--fallback <agents>', 'Comma-separated agents to try on rate-limit failure. Each entry accepts an optional @version pin (e.g., codex@0.116.0,gemini). The primary runs first; if it exits with a rate-limit error, the next agent picks up via /continue handoff.')
|
|
33
|
-
.option('-r, --rotate', '
|
|
45
|
+
.option('-r, --rotate', 'Shortcut for --strategy rotate. Ignored when @version is pinned.')
|
|
46
|
+
.option('--strategy <strategy>', 'Version/account selection strategy: pinned | available | rotate. Defaults to run.<agent>.strategy, then pinned.')
|
|
47
|
+
.option('--acp', 'Route through the Agent Client Protocol instead of direct exec. Supported for gemini, claude (via @zed-industries/claude-code-acp adapter). Unified event stream; emits ndjson when --json.')
|
|
34
48
|
.addHelpText('after', `
|
|
35
49
|
Modes:
|
|
36
50
|
With a prompt -> headless (pipes output, no TTY, exits when the agent finishes).
|
|
37
51
|
Without a prompt -> interactive (launches the agent's TUI; stdio is fully inherited).
|
|
38
52
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
53
|
+
Run strategy:
|
|
54
|
+
pinned Use the workspace/global pinned version from agents.yaml.
|
|
55
|
+
available Use the pinned version if it has usage available; otherwise switch
|
|
56
|
+
to another signed-in version with usage available.
|
|
57
|
+
rotate Pick the signed-in account with usage available and the most
|
|
58
|
+
headroom; last-active breaks ties.
|
|
59
|
+
Configure with run.<agent>.strategy in agents.yaml, or override with
|
|
60
|
+
--strategy. --rotate is kept as a shortcut for --strategy rotate.
|
|
43
61
|
Ignored when @version is pinned, when a profile is used, or with --fallback.
|
|
44
62
|
|
|
45
63
|
Examples:
|
|
@@ -47,10 +65,10 @@ Examples:
|
|
|
47
65
|
agents run claude
|
|
48
66
|
|
|
49
67
|
# Interactive, rotate to the least-used healthy account
|
|
50
|
-
agents run claude --rotate
|
|
68
|
+
agents run claude --strategy rotate
|
|
51
69
|
|
|
52
|
-
# Headless,
|
|
53
|
-
agents run claude "summarize recent git commits" --mode plan --
|
|
70
|
+
# Headless, switch away from the pinned version when usage is unavailable
|
|
71
|
+
agents run claude "summarize recent git commits" --mode plan --strategy available
|
|
54
72
|
|
|
55
73
|
# Pin a specific version (rotation ignored)
|
|
56
74
|
agents run codex@0.116.0 "fix linting errors in src/" --mode edit
|
|
@@ -108,37 +126,49 @@ Examples:
|
|
|
108
126
|
console.error(chalk.gray(`Or add a profile: agents profiles add <name>`));
|
|
109
127
|
process.exit(1);
|
|
110
128
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
version = resolveVersionAlias(agent, version);
|
|
130
|
+
const cwd = options.cwd ?? process.cwd();
|
|
131
|
+
const configuredStrategy = getConfiguredRunStrategy(agent, cwd);
|
|
132
|
+
const explicitStrategy = options.strategy ? normalizeRunStrategy(options.strategy) : null;
|
|
133
|
+
if (options.strategy && !explicitStrategy) {
|
|
134
|
+
console.error(chalk.red(`Invalid strategy: ${options.strategy}. Use ${RUN_STRATEGIES.join(', ')}.`));
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
if (options.rotate && explicitStrategy && explicitStrategy !== 'rotate') {
|
|
138
|
+
console.error(chalk.red('--rotate conflicts with --strategy. Use one strategy override.'));
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
const strategy = options.rotate ? 'rotate' : explicitStrategy ?? configuredStrategy;
|
|
142
|
+
// Strategy only applies to bare agent invocations. Explicit @version,
|
|
143
|
+
// profiles, and fallback chains already define their execution target.
|
|
144
|
+
if (strategy !== 'pinned' || options.rotate || explicitStrategy) {
|
|
118
145
|
if (version) {
|
|
119
|
-
process.stderr.write(chalk.yellow(`[agents]
|
|
146
|
+
process.stderr.write(chalk.yellow(`[agents] strategy ${strategy} ignored: version ${version} is pinned\n`));
|
|
120
147
|
}
|
|
121
148
|
else if (fromProfile) {
|
|
122
|
-
process.stderr.write(chalk.yellow(`[agents]
|
|
149
|
+
process.stderr.write(chalk.yellow(`[agents] strategy ${strategy} ignored: profile pins its own version/auth\n`));
|
|
123
150
|
}
|
|
124
151
|
else if (options.fallback) {
|
|
125
|
-
process.stderr.write(chalk.yellow(`[agents]
|
|
152
|
+
process.stderr.write(chalk.yellow(`[agents] strategy ${strategy} ignored: --fallback pins versions directly\n`));
|
|
126
153
|
}
|
|
127
154
|
else {
|
|
128
155
|
try {
|
|
129
|
-
const resolved = await resolveRunVersion(agent);
|
|
156
|
+
const resolved = await resolveRunVersion(agent, strategy, cwd);
|
|
130
157
|
if (resolved.version) {
|
|
131
158
|
version = resolved.version;
|
|
132
159
|
if (resolved.rotation) {
|
|
133
|
-
|
|
160
|
+
const banner = strategy === 'available'
|
|
161
|
+
? formatRotationBanner(resolved.rotation).replace('rotation picked', 'available picked')
|
|
162
|
+
: formatRotationBanner(resolved.rotation);
|
|
163
|
+
process.stderr.write(chalk.gray(banner + '\n'));
|
|
134
164
|
}
|
|
135
165
|
}
|
|
136
166
|
else {
|
|
137
|
-
process.stderr.write(chalk.yellow(`[agents]
|
|
167
|
+
process.stderr.write(chalk.yellow(`[agents] strategy ${strategy} found no usable ${agent} version; falling back to defaults\n`));
|
|
138
168
|
}
|
|
139
169
|
}
|
|
140
170
|
catch (err) {
|
|
141
|
-
process.stderr.write(chalk.yellow(`[agents]
|
|
171
|
+
process.stderr.write(chalk.yellow(`[agents] strategy ${strategy} skipped: ${err.message}\n`));
|
|
142
172
|
}
|
|
143
173
|
}
|
|
144
174
|
}
|
|
@@ -185,6 +215,7 @@ Examples:
|
|
|
185
215
|
agent,
|
|
186
216
|
version,
|
|
187
217
|
prompt,
|
|
218
|
+
interactive: options.interactive,
|
|
188
219
|
mode,
|
|
189
220
|
effort,
|
|
190
221
|
cwd: options.cwd,
|
|
@@ -197,6 +228,16 @@ Examples:
|
|
|
197
228
|
timeout: options.timeout,
|
|
198
229
|
env,
|
|
199
230
|
};
|
|
231
|
+
if (options.interactive) {
|
|
232
|
+
if (options.fallback) {
|
|
233
|
+
console.error(chalk.red('--interactive is not compatible with --fallback. Fallback only works for headless prompt runs.'));
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
if (options.acp) {
|
|
237
|
+
console.error(chalk.red('--interactive is not compatible with --acp. ACP is a headless protocol.'));
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
200
241
|
const fallback = [];
|
|
201
242
|
if (options.fallback) {
|
|
202
243
|
if (prompt === undefined) {
|
|
@@ -215,10 +256,39 @@ Examples:
|
|
|
215
256
|
console.error(chalk.red(`Fallback cannot include the primary agent (${agent}). Rate-limit fallback only helps when switching providers.`));
|
|
216
257
|
process.exit(1);
|
|
217
258
|
}
|
|
218
|
-
fallback.push({ agent: fbAgent, version: fbVersion || undefined });
|
|
259
|
+
fallback.push({ agent: fbAgent, version: resolveVersionAlias(fbAgent, fbVersion || undefined) });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (options.acp) {
|
|
263
|
+
if (prompt === undefined) {
|
|
264
|
+
console.error(chalk.red('--acp requires a prompt. ACP is a programmatic protocol; interactive TUI sessions still use the native CLI.'));
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
if (fallback.length > 0) {
|
|
268
|
+
console.error(chalk.red('--acp is not compatible with --fallback yet. Drop one.'));
|
|
269
|
+
process.exit(1);
|
|
270
|
+
}
|
|
271
|
+
const { supportsAcp } = await import('../lib/acp/harnesses.js');
|
|
272
|
+
if (!supportsAcp(agent)) {
|
|
273
|
+
console.error(chalk.red(`Agent '${agent}' does not support ACP. Drop --acp to use direct exec.`));
|
|
274
|
+
process.exit(1);
|
|
275
|
+
}
|
|
276
|
+
const { runAcpHeadless } = await import('../lib/acp/run.js');
|
|
277
|
+
try {
|
|
278
|
+
const exitCode = await runAcpHeadless({
|
|
279
|
+
agent,
|
|
280
|
+
prompt,
|
|
281
|
+
cwd: options.cwd ?? process.cwd(),
|
|
282
|
+
mode,
|
|
283
|
+
json: options.json ?? false,
|
|
284
|
+
});
|
|
285
|
+
process.exit(exitCode);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
console.error(chalk.red(`ACP run failed for ${agent}: ${err.message}`));
|
|
289
|
+
process.exit(1);
|
|
219
290
|
}
|
|
220
291
|
}
|
|
221
|
-
// Show what we're running (stderr so stdout stays clean for piping)
|
|
222
292
|
const cmd = buildExecCommand(execOptions);
|
|
223
293
|
process.stderr.write(chalk.gray(`Running: ${cmd.join(' ')}\n\n`));
|
|
224
294
|
try {
|
|
@@ -238,4 +308,3 @@ Examples:
|
|
|
238
308
|
}
|
|
239
309
|
});
|
|
240
310
|
}
|
|
241
|
-
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Software Factory CLI -- thin client over `prix/factory/service`.
|
|
3
|
+
*
|
|
4
|
+
* One verb today:
|
|
5
|
+
*
|
|
6
|
+
* agents factory submit <linear-ref> POST /factory/submit
|
|
7
|
+
*
|
|
8
|
+
* Everything else (planner pod, worker dispatch, PR-merged/CI-failed
|
|
9
|
+
* webhooks, retry caps, heartbeat reaper) lives server-side in
|
|
10
|
+
* `agents/prix/factory/service/src/factory.ts`, driven by the
|
|
11
|
+
* `factory-tick` k8s CronJob. The laptop is optional after submit.
|
|
12
|
+
*
|
|
13
|
+
* Future verbs (list / status / tail / cancel / message) are intentionally
|
|
14
|
+
* deferred until the matching server endpoints land; they'll be thin
|
|
15
|
+
* clients too. No supervisor, ledger, oracle, or `~/.agents/factory/`
|
|
16
|
+
* registry on the laptop -- ever.
|
|
17
|
+
*/
|
|
18
|
+
import type { Command } from 'commander';
|
|
19
|
+
export declare function registerFactoryCommands(program: Command): void;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
import { betaEnableHint, isBetaEnabled } from '../lib/beta.js';
|
|
6
|
+
const FACTORY_URL = process.env.FACTORY_FLOOR_URL ?? 'https://agents.427yosemite.com';
|
|
7
|
+
function die(msg, code = 1) {
|
|
8
|
+
console.error(chalk.red(msg));
|
|
9
|
+
process.exit(code);
|
|
10
|
+
}
|
|
11
|
+
function readRushToken() {
|
|
12
|
+
const userYaml = path.join(homedir(), '.rush', 'user.yaml');
|
|
13
|
+
if (!fs.existsSync(userYaml)) {
|
|
14
|
+
die('Not logged in to Rush. Run `rush login` first.');
|
|
15
|
+
}
|
|
16
|
+
const raw = fs.readFileSync(userYaml, 'utf-8');
|
|
17
|
+
const match = raw.match(/access_token:\s*([^\s#]+)/);
|
|
18
|
+
if (!match) {
|
|
19
|
+
die('No session token in ~/.rush/user.yaml. Run `rush login` first.');
|
|
20
|
+
}
|
|
21
|
+
return match[1].replace(/^['"]|['"]$/g, '');
|
|
22
|
+
}
|
|
23
|
+
async function postFactorySubmit(ref) {
|
|
24
|
+
const token = readRushToken();
|
|
25
|
+
const res = await fetch(`${FACTORY_URL}/factory/submit`, {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
headers: {
|
|
28
|
+
'Authorization': `Bearer ${token}`,
|
|
29
|
+
'Content-Type': 'application/json',
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({ ref }),
|
|
32
|
+
});
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
const body = await res.text().catch(() => '');
|
|
35
|
+
die(`Factory submit failed (${res.status}): ${body.slice(0, 400)}`);
|
|
36
|
+
}
|
|
37
|
+
return res.json();
|
|
38
|
+
}
|
|
39
|
+
export function registerFactoryCommands(program) {
|
|
40
|
+
const enabled = isBetaEnabled('factory');
|
|
41
|
+
const factory = program
|
|
42
|
+
.command('factory', { hidden: !enabled })
|
|
43
|
+
.description('Software Factory -- submit Linear tickets to the cloud orchestrator.')
|
|
44
|
+
.addHelpText('after', `
|
|
45
|
+
Examples:
|
|
46
|
+
agents factory submit RUSH-2451
|
|
47
|
+
agents factory submit https://linear.app/getrush/issue/RUSH-2451
|
|
48
|
+
`);
|
|
49
|
+
factory.hook('preAction', () => {
|
|
50
|
+
if (enabled)
|
|
51
|
+
return;
|
|
52
|
+
console.error(chalk.red('agents factory is in beta.'));
|
|
53
|
+
console.error(chalk.gray(betaEnableHint('factory')));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
});
|
|
56
|
+
factory
|
|
57
|
+
.command('submit <linear-ref>')
|
|
58
|
+
.description('Submit a Linear issue (RUSH-123 or URL) to the Software Factory.')
|
|
59
|
+
.option('--json', 'Output machine-readable JSON')
|
|
60
|
+
.action(async (ref, opts) => {
|
|
61
|
+
const result = await postFactorySubmit(ref);
|
|
62
|
+
if (opts.json) {
|
|
63
|
+
console.log(JSON.stringify(result, null, 2));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
console.log(chalk.green(`Submitted ${result.linear_identifier} (${result.label})`));
|
|
67
|
+
console.log(` ticket ${result.ticket_id}`);
|
|
68
|
+
console.log(` execution ${result.cloud_execution_id}`);
|
|
69
|
+
console.log(` tail output agents cloud tail ${result.cloud_execution_id}`);
|
|
70
|
+
});
|
|
71
|
+
}
|
package/dist/commands/fork.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository fork command.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents fork` command which forks the default system
|
|
5
|
+
* config repo to the user's GitHub account, reconfigures remotes
|
|
6
|
+
* (origin -> user fork, upstream -> system repo), and pushes.
|
|
7
|
+
*/
|
|
1
8
|
import type { Command } from 'commander';
|
|
9
|
+
/** Register the `agents fork` command. */
|
|
2
10
|
export declare function registerForkCommand(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=fork.d.ts.map
|
package/dist/commands/fork.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository fork command.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `agents fork` command which forks the default system
|
|
5
|
+
* config repo to the user's GitHub account, reconfigures remotes
|
|
6
|
+
* (origin -> user fork, upstream -> system repo), and pushes.
|
|
7
|
+
*/
|
|
1
8
|
import chalk from 'chalk';
|
|
2
9
|
import ora from 'ora';
|
|
3
10
|
import { getAgentsDir, ensureAgentsDir } from '../lib/state.js';
|
|
4
11
|
import { isGitRepo, isSystemRepoOrigin, getGitHubUsername, hasLocalChanges, setUpstreamRemote, setRemoteUrl, getRemoteUrl, } from '../lib/git.js';
|
|
5
12
|
import { DEFAULT_SYSTEM_REPO, systemRepoSlug } from '../lib/types.js';
|
|
6
13
|
import { isPromptCancelled } from './utils.js';
|
|
14
|
+
/** Register the `agents fork` command. */
|
|
7
15
|
export function registerForkCommand(program) {
|
|
8
16
|
program
|
|
9
17
|
.command('fork')
|
|
@@ -66,14 +74,14 @@ Requirements:
|
|
|
66
74
|
spinner.succeed(`Logged in as ${username}`);
|
|
67
75
|
// Fork the system repo
|
|
68
76
|
const forkSpinner = ora('Forking system repo...').start();
|
|
69
|
-
const {
|
|
77
|
+
const { execFile } = await import('child_process');
|
|
70
78
|
const { promisify } = await import('util');
|
|
71
|
-
const
|
|
79
|
+
const execFileAsync = promisify(execFile);
|
|
72
80
|
const repoSlug = systemRepoSlug(DEFAULT_SYSTEM_REPO);
|
|
73
81
|
try {
|
|
74
82
|
// gh repo fork creates a fork and optionally clones it
|
|
75
83
|
// We just want to create the fork on GitHub, not clone
|
|
76
|
-
await
|
|
84
|
+
await execFileAsync('gh', ['repo', 'fork', repoSlug, '--clone=false']);
|
|
77
85
|
forkSpinner.succeed(`Forked to ${username}/.agents`);
|
|
78
86
|
}
|
|
79
87
|
catch (err) {
|
|
@@ -136,4 +144,3 @@ Requirements:
|
|
|
136
144
|
}
|
|
137
145
|
});
|
|
138
146
|
}
|
|
139
|
-
//# sourceMappingURL=fork.js.map
|
package/dist/commands/hooks.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook management commands for automating workflows on agent events.
|
|
3
|
+
*
|
|
4
|
+
* Implements `agents hooks` -- list, add, remove, sync, prune, and view
|
|
5
|
+
* shell scripts that fire on agent lifecycle events (session start, file
|
|
6
|
+
* edit, task completion). Central storage lives in ~/.agents/hooks/ and
|
|
7
|
+
* scripts are synced to individual version homes.
|
|
8
|
+
*/
|
|
1
9
|
import type { Command } from 'commander';
|
|
10
|
+
/** Register the `agents hooks` command tree (list, add, remove, sync, prune, view). */
|
|
2
11
|
export declare function registerHooksCommands(program: Command): void;
|
|
3
|
-
//# sourceMappingURL=hooks.d.ts.map
|