@swarmify/agents-cli 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +209 -233
- package/dist/commands/__tests__/sessions.test.js +90 -20
- package/dist/commands/__tests__/sessions.test.js.map +1 -1
- package/dist/commands/cloud.d.ts +11 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +363 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/commands.d.ts +9 -0
- package/dist/commands/commands.d.ts.map +1 -1
- package/dist/commands/commands.js +330 -139
- package/dist/commands/commands.js.map +1 -1
- package/dist/commands/daemon.d.ts +8 -0
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +38 -222
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/drive.d.ts +8 -0
- package/dist/commands/drive.d.ts.map +1 -1
- package/dist/commands/drive.js +70 -7
- package/dist/commands/drive.js.map +1 -1
- package/dist/commands/exec.d.ts +9 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +198 -24
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/factory.d.ts +11 -0
- package/dist/commands/factory.d.ts.map +1 -0
- package/dist/commands/factory.js +445 -0
- package/dist/commands/factory.js.map +1 -0
- package/dist/commands/fork.d.ts +8 -0
- package/dist/commands/fork.d.ts.map +1 -1
- package/dist/commands/fork.js +38 -4
- package/dist/commands/fork.js.map +1 -1
- package/dist/commands/hooks.d.ts +9 -0
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +252 -18
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +137 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +9 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +250 -169
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.d.ts +11 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +170 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/packages.d.ts +8 -0
- package/dist/commands/packages.d.ts.map +1 -1
- package/dist/commands/packages.js +155 -14
- package/dist/commands/packages.js.map +1 -1
- package/dist/commands/permissions.d.ts +9 -0
- package/dist/commands/permissions.d.ts.map +1 -1
- package/dist/commands/permissions.js +72 -13
- package/dist/commands/permissions.js.map +1 -1
- package/dist/commands/plugins.d.ts +8 -0
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +265 -44
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/profiles.d.ts +12 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +255 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/pty.d.ts +1 -0
- package/dist/commands/pty.d.ts.map +1 -1
- package/dist/commands/pty.js +133 -22
- package/dist/commands/pty.js.map +1 -1
- package/dist/commands/pull.d.ts +8 -0
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +103 -14
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts +8 -0
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +37 -3
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/refresh-memory.d.ts +16 -0
- package/dist/commands/refresh-memory.d.ts.map +1 -0
- package/dist/commands/refresh-memory.js +52 -0
- package/dist/commands/refresh-memory.js.map +1 -0
- package/dist/commands/resource-view.d.ts +39 -0
- package/dist/commands/resource-view.d.ts.map +1 -0
- package/dist/commands/resource-view.js +197 -0
- package/dist/commands/resource-view.js.map +1 -0
- package/dist/commands/routines.d.ts +8 -0
- package/dist/commands/routines.d.ts.map +1 -1
- package/dist/commands/routines.js +163 -34
- package/dist/commands/routines.js.map +1 -1
- package/dist/commands/rules.d.ts +9 -0
- package/dist/commands/rules.d.ts.map +1 -1
- package/dist/commands/rules.js +83 -12
- package/dist/commands/rules.js.map +1 -1
- package/dist/commands/secrets.d.ts +11 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +352 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/sessions-picker.d.ts +18 -0
- package/dist/commands/sessions-picker.d.ts.map +1 -0
- package/dist/commands/sessions-picker.js +265 -0
- package/dist/commands/sessions-picker.js.map +1 -0
- package/dist/commands/sessions.d.ts +15 -0
- package/dist/commands/sessions.d.ts.map +1 -1
- package/dist/commands/sessions.js +700 -263
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/skills.d.ts +9 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +355 -233
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +7 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subagents.d.ts +8 -0
- package/dist/commands/subagents.d.ts.map +1 -1
- package/dist/commands/subagents.js +214 -74
- package/dist/commands/subagents.js.map +1 -1
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +15 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/teams-picker.d.ts +18 -0
- package/dist/commands/teams-picker.d.ts.map +1 -0
- package/dist/commands/teams-picker.js +290 -0
- package/dist/commands/teams-picker.js.map +1 -0
- package/dist/commands/teams.d.ts +18 -0
- package/dist/commands/teams.d.ts.map +1 -0
- package/dist/commands/teams.js +1098 -0
- package/dist/commands/teams.js.map +1 -0
- package/dist/commands/utils.d.ts +20 -0
- package/dist/commands/utils.d.ts.map +1 -1
- package/dist/commands/utils.js +34 -0
- package/dist/commands/utils.js.map +1 -1
- package/dist/commands/versions.d.ts +8 -0
- package/dist/commands/versions.d.ts.map +1 -1
- package/dist/commands/versions.js +71 -8
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/view.d.ts +34 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +207 -13
- package/dist/commands/view.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +136 -51
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/bugfixes.test.js +3 -3
- package/dist/lib/__tests__/bugfixes.test.js.map +1 -1
- package/dist/lib/__tests__/exec.test.js +125 -19
- package/dist/lib/__tests__/exec.test.js.map +1 -1
- package/dist/lib/__tests__/hooks.test.d.ts +2 -0
- package/dist/lib/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/lib/__tests__/hooks.test.js +203 -0
- package/dist/lib/__tests__/hooks.test.js.map +1 -0
- package/dist/lib/__tests__/memory-compile.test.d.ts +2 -0
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +1 -0
- package/dist/lib/__tests__/memory-compile.test.js +95 -0
- package/dist/lib/__tests__/memory-compile.test.js.map +1 -0
- package/dist/lib/__tests__/models.test.d.ts +2 -0
- package/dist/lib/__tests__/models.test.d.ts.map +1 -0
- package/dist/lib/__tests__/models.test.js +239 -0
- package/dist/lib/__tests__/models.test.js.map +1 -0
- package/dist/lib/__tests__/rotate.test.d.ts +2 -0
- package/dist/lib/__tests__/rotate.test.d.ts.map +1 -0
- package/dist/lib/__tests__/rotate.test.js +80 -0
- package/dist/lib/__tests__/rotate.test.js.map +1 -0
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +2 -0
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +1 -0
- package/dist/lib/__tests__/secrets-bundles.test.js +104 -0
- package/dist/lib/__tests__/secrets-bundles.test.js.map +1 -0
- package/dist/lib/__tests__/secrets.test.d.ts +2 -0
- package/dist/lib/__tests__/secrets.test.d.ts.map +1 -0
- package/dist/lib/__tests__/secrets.test.js +90 -0
- package/dist/lib/__tests__/secrets.test.js.map +1 -0
- package/dist/lib/__tests__/shims.test.d.ts +2 -0
- package/dist/lib/__tests__/shims.test.d.ts.map +1 -0
- package/dist/lib/__tests__/shims.test.js +39 -0
- package/dist/lib/__tests__/shims.test.js.map +1 -0
- package/dist/lib/__tests__/usage.test.js +4 -2
- package/dist/lib/__tests__/usage.test.js.map +1 -1
- package/dist/lib/__tests__/versions.test.d.ts +2 -0
- package/dist/lib/__tests__/versions.test.d.ts.map +1 -0
- package/dist/lib/__tests__/versions.test.js +63 -0
- package/dist/lib/__tests__/versions.test.js.map +1 -0
- package/dist/lib/agents.d.ts +53 -1
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +178 -37
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/artifact-actions.d.ts +8 -3
- package/dist/lib/artifact-actions.d.ts.map +1 -1
- package/dist/lib/artifact-actions.js +8 -5
- package/dist/lib/artifact-actions.js.map +1 -1
- package/dist/lib/cloud/codex.d.ts +26 -0
- package/dist/lib/cloud/codex.d.ts.map +1 -0
- package/dist/lib/cloud/codex.js +237 -0
- package/dist/lib/cloud/codex.js.map +1 -0
- package/dist/lib/cloud/factory.d.ts +32 -0
- package/dist/lib/cloud/factory.d.ts.map +1 -0
- package/dist/lib/cloud/factory.js +43 -0
- package/dist/lib/cloud/factory.js.map +1 -0
- package/dist/lib/cloud/registry.d.ts +16 -0
- package/dist/lib/cloud/registry.d.ts.map +1 -0
- package/dist/lib/cloud/registry.js +68 -0
- package/dist/lib/cloud/registry.js.map +1 -0
- package/dist/lib/cloud/rush.d.ts +37 -0
- package/dist/lib/cloud/rush.d.ts.map +1 -0
- package/dist/lib/cloud/rush.js +230 -0
- package/dist/lib/cloud/rush.js.map +1 -0
- package/dist/lib/cloud/rush.test.d.ts +2 -0
- package/dist/lib/cloud/rush.test.d.ts.map +1 -0
- package/dist/lib/cloud/rush.test.js +63 -0
- package/dist/lib/cloud/rush.test.js.map +1 -0
- package/dist/lib/cloud/store.d.ts +23 -0
- package/dist/lib/cloud/store.d.ts.map +1 -0
- package/dist/lib/cloud/store.js +116 -0
- package/dist/lib/cloud/store.js.map +1 -0
- package/dist/lib/cloud/stream.d.ts +24 -0
- package/dist/lib/cloud/stream.d.ts.map +1 -0
- package/dist/lib/cloud/stream.js +145 -0
- package/dist/lib/cloud/stream.js.map +1 -0
- package/dist/lib/cloud/types.d.ts +109 -0
- package/dist/lib/cloud/types.d.ts.map +1 -0
- package/dist/lib/cloud/types.js +33 -0
- package/dist/lib/cloud/types.js.map +1 -0
- package/dist/lib/cloud/types.test.d.ts +2 -0
- package/dist/lib/cloud/types.test.d.ts.map +1 -0
- package/dist/lib/cloud/types.test.js +41 -0
- package/dist/lib/cloud/types.test.js.map +1 -0
- package/dist/lib/commands.d.ts +67 -0
- package/dist/lib/commands.d.ts.map +1 -1
- package/dist/lib/commands.js +161 -2
- package/dist/lib/commands.js.map +1 -1
- package/dist/lib/convert.d.ts +10 -0
- package/dist/lib/convert.d.ts.map +1 -1
- package/dist/lib/convert.js +9 -0
- package/dist/lib/convert.js.map +1 -1
- package/dist/lib/daemon.d.ts +21 -0
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/daemon.js +21 -0
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/drive-sync.d.ts +18 -0
- package/dist/lib/drive-sync.d.ts.map +1 -1
- package/dist/lib/drive-sync.js +16 -0
- package/dist/lib/drive-sync.js.map +1 -1
- package/dist/lib/exec.d.ts +64 -3
- package/dist/lib/exec.d.ts.map +1 -1
- package/dist/lib/exec.js +218 -80
- package/dist/lib/exec.js.map +1 -1
- package/dist/lib/factory/__tests__/config.test.d.ts +2 -0
- package/dist/lib/factory/__tests__/config.test.d.ts.map +1 -0
- package/dist/lib/factory/__tests__/config.test.js +128 -0
- package/dist/lib/factory/__tests__/config.test.js.map +1 -0
- package/dist/lib/factory/config.d.ts +49 -0
- package/dist/lib/factory/config.d.ts.map +1 -0
- package/dist/lib/factory/config.js +127 -0
- package/dist/lib/factory/config.js.map +1 -0
- package/dist/lib/factory.js +1 -1
- package/dist/lib/factory.js.map +1 -1
- package/dist/lib/git.d.ts +16 -1
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +33 -4
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/help.d.ts +7 -0
- package/dist/lib/help.d.ts.map +1 -1
- package/dist/lib/help.js +3 -0
- package/dist/lib/help.js.map +1 -1
- package/dist/lib/hooks.d.ts +59 -3
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +413 -33
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/ledger/__tests__/local.test.d.ts +2 -0
- package/dist/lib/ledger/__tests__/local.test.d.ts.map +1 -0
- package/dist/lib/ledger/__tests__/local.test.js +177 -0
- package/dist/lib/ledger/__tests__/local.test.js.map +1 -0
- package/dist/lib/ledger/__tests__/sync.test.d.ts +2 -0
- package/dist/lib/ledger/__tests__/sync.test.d.ts.map +1 -0
- package/dist/lib/ledger/__tests__/sync.test.js +117 -0
- package/dist/lib/ledger/__tests__/sync.test.js.map +1 -0
- package/dist/lib/ledger/index.d.ts +18 -0
- package/dist/lib/ledger/index.d.ts.map +1 -0
- package/dist/lib/ledger/index.js +32 -0
- package/dist/lib/ledger/index.js.map +1 -0
- package/dist/lib/ledger/local.d.ts +22 -0
- package/dist/lib/ledger/local.d.ts.map +1 -0
- package/dist/lib/ledger/local.js +333 -0
- package/dist/lib/ledger/local.js.map +1 -0
- package/dist/lib/ledger/r2.d.ts +41 -0
- package/dist/lib/ledger/r2.d.ts.map +1 -0
- package/dist/lib/ledger/r2.js +335 -0
- package/dist/lib/ledger/r2.js.map +1 -0
- package/dist/lib/ledger/sync.d.ts +33 -0
- package/dist/lib/ledger/sync.d.ts.map +1 -0
- package/dist/lib/ledger/sync.js +106 -0
- package/dist/lib/ledger/sync.js.map +1 -0
- package/dist/lib/ledger/types.d.ts +100 -0
- package/dist/lib/ledger/types.d.ts.map +1 -0
- package/dist/lib/ledger/types.js +21 -0
- package/dist/lib/ledger/types.js.map +1 -0
- package/dist/lib/manifest.d.ts +6 -0
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +12 -0
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/markdown.d.ts.map +1 -1
- package/dist/lib/markdown.js +6 -0
- package/dist/lib/markdown.js.map +1 -1
- package/dist/lib/mcp.d.ts +0 -9
- package/dist/lib/mcp.d.ts.map +1 -1
- package/dist/lib/mcp.js +0 -20
- package/dist/lib/mcp.js.map +1 -1
- package/dist/lib/memory-compile.d.ts +65 -0
- package/dist/lib/memory-compile.d.ts.map +1 -0
- package/dist/lib/memory-compile.js +174 -0
- package/dist/lib/memory-compile.js.map +1 -0
- package/dist/lib/memory.d.ts +8 -0
- package/dist/lib/memory.d.ts.map +1 -1
- package/dist/lib/memory.js +8 -0
- package/dist/lib/memory.js.map +1 -1
- package/dist/lib/models.d.ts +98 -0
- package/dist/lib/models.d.ts.map +1 -0
- package/dist/lib/models.js +722 -0
- package/dist/lib/models.js.map +1 -0
- package/dist/lib/permissions.d.ts +3 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +13 -3
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/picker.d.ts +27 -0
- package/dist/lib/picker.d.ts.map +1 -0
- package/dist/lib/picker.js +110 -0
- package/dist/lib/picker.js.map +1 -0
- package/dist/lib/plugins.d.ts +22 -0
- package/dist/lib/plugins.d.ts.map +1 -1
- package/dist/lib/plugins.js +114 -0
- package/dist/lib/plugins.js.map +1 -1
- package/dist/lib/profiles-keychain.d.ts +11 -0
- package/dist/lib/profiles-keychain.d.ts.map +1 -0
- package/dist/lib/profiles-keychain.js +14 -0
- package/dist/lib/profiles-keychain.js.map +1 -0
- package/dist/lib/profiles-presets.d.ts +25 -0
- package/dist/lib/profiles-presets.d.ts.map +1 -0
- package/dist/lib/profiles-presets.js +104 -0
- package/dist/lib/profiles-presets.js.map +1 -0
- package/dist/lib/profiles.d.ts +70 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +145 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/lib/pty-client.d.ts +1 -0
- package/dist/lib/pty-client.d.ts.map +1 -1
- package/dist/lib/pty-client.js.map +1 -1
- package/dist/lib/pty-server.d.ts +5 -0
- package/dist/lib/pty-server.d.ts.map +1 -1
- package/dist/lib/pty-server.js +5 -0
- package/dist/lib/pty-server.js.map +1 -1
- package/dist/lib/registry.d.ts +17 -0
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +17 -0
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/resources.d.ts +5 -0
- package/dist/lib/resources.d.ts.map +1 -1
- package/dist/lib/resources.js.map +1 -1
- package/dist/lib/rotate.d.ts +58 -0
- package/dist/lib/rotate.d.ts.map +1 -0
- package/dist/lib/rotate.js +93 -0
- package/dist/lib/rotate.js.map +1 -0
- package/dist/lib/routines.d.ts +30 -1
- package/dist/lib/routines.d.ts.map +1 -1
- package/dist/lib/routines.js +31 -4
- package/dist/lib/routines.js.map +1 -1
- package/dist/lib/runner.d.ts +14 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +45 -11
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/sandbox.d.ts +16 -0
- package/dist/lib/sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox.js +19 -2
- package/dist/lib/sandbox.js.map +1 -1
- package/dist/lib/scheduler.d.ts +8 -0
- package/dist/lib/scheduler.d.ts.map +1 -1
- package/dist/lib/scheduler.js +8 -0
- package/dist/lib/scheduler.js.map +1 -1
- package/dist/lib/secrets-bundles.d.ts +38 -0
- package/dist/lib/secrets-bundles.d.ts.map +1 -0
- package/dist/lib/secrets-bundles.js +176 -0
- package/dist/lib/secrets-bundles.js.map +1 -0
- package/dist/lib/secrets.d.ts +53 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +140 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/session/__tests__/db.test.d.ts +2 -0
- package/dist/lib/session/__tests__/db.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/db.test.js +54 -0
- package/dist/lib/session/__tests__/db.test.js.map +1 -0
- package/dist/lib/session/__tests__/discover.test.js +54 -91
- package/dist/lib/session/__tests__/discover.test.js.map +1 -1
- package/dist/lib/session/__tests__/prompt.test.d.ts +2 -0
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/prompt.test.js +44 -0
- package/dist/lib/session/__tests__/prompt.test.js.map +1 -0
- package/dist/lib/session/__tests__/render.test.d.ts +2 -0
- package/dist/lib/session/__tests__/render.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/render.test.js +602 -0
- package/dist/lib/session/__tests__/render.test.js.map +1 -0
- package/dist/lib/session/artifacts.d.ts +15 -0
- package/dist/lib/session/artifacts.d.ts.map +1 -0
- package/dist/lib/session/artifacts.js +86 -0
- package/dist/lib/session/artifacts.js.map +1 -0
- package/dist/lib/session/db.d.ts +140 -0
- package/dist/lib/session/db.d.ts.map +1 -0
- package/dist/lib/session/db.js +599 -0
- package/dist/lib/session/db.js.map +1 -0
- package/dist/lib/session/discover.d.ts +44 -32
- package/dist/lib/session/discover.d.ts.map +1 -1
- package/dist/lib/session/discover.js +418 -464
- package/dist/lib/session/discover.js.map +1 -1
- package/dist/lib/session/parse.d.ts +11 -0
- package/dist/lib/session/parse.d.ts.map +1 -1
- package/dist/lib/session/parse.js +50 -0
- package/dist/lib/session/parse.js.map +1 -1
- package/dist/lib/session/prompt.d.ts +10 -0
- package/dist/lib/session/prompt.d.ts.map +1 -1
- package/dist/lib/session/prompt.js +38 -2
- package/dist/lib/session/prompt.js.map +1 -1
- package/dist/lib/session/prompt.test.d.ts +2 -0
- package/dist/lib/session/prompt.test.d.ts.map +1 -0
- package/dist/lib/session/prompt.test.js +57 -0
- package/dist/lib/session/prompt.test.js.map +1 -0
- package/dist/lib/session/render.d.ts +91 -10
- package/dist/lib/session/render.d.ts.map +1 -1
- package/dist/lib/session/render.js +708 -180
- package/dist/lib/session/render.js.map +1 -1
- package/dist/lib/session/team-filter.d.ts +35 -0
- package/dist/lib/session/team-filter.d.ts.map +1 -0
- package/dist/lib/session/team-filter.js +75 -0
- package/dist/lib/session/team-filter.js.map +1 -0
- package/dist/lib/session/team-filter.test.d.ts +2 -0
- package/dist/lib/session/team-filter.test.d.ts.map +1 -0
- package/dist/lib/session/team-filter.test.js +157 -0
- package/dist/lib/session/team-filter.test.js.map +1 -0
- package/dist/lib/session/types.d.ts +48 -6
- package/dist/lib/session/types.d.ts.map +1 -1
- package/dist/lib/session/types.js +9 -0
- package/dist/lib/session/types.js.map +1 -1
- package/dist/lib/shims.d.ts +73 -2
- package/dist/lib/shims.d.ts.map +1 -1
- package/dist/lib/shims.js +171 -25
- package/dist/lib/shims.js.map +1 -1
- package/dist/lib/skills.d.ts +68 -0
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/skills.js +267 -1
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/state.d.ts +41 -2
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +63 -4
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/subagents.d.ts +9 -0
- package/dist/lib/subagents.d.ts.map +1 -1
- package/dist/lib/subagents.js +9 -1
- package/dist/lib/subagents.js.map +1 -1
- package/dist/lib/teams/__tests__/oracle.test.d.ts +2 -0
- package/dist/lib/teams/__tests__/oracle.test.d.ts.map +1 -0
- package/dist/lib/teams/__tests__/oracle.test.js +89 -0
- package/dist/lib/teams/__tests__/oracle.test.js.map +1 -0
- package/dist/lib/teams/__tests__/supervisor.test.d.ts +2 -0
- package/dist/lib/teams/__tests__/supervisor.test.d.ts.map +1 -0
- package/dist/lib/teams/__tests__/supervisor.test.js +179 -0
- package/dist/lib/teams/__tests__/supervisor.test.js.map +1 -0
- package/dist/lib/teams/agents.d.ts +247 -0
- package/dist/lib/teams/agents.d.ts.map +1 -0
- package/dist/lib/teams/agents.js +1244 -0
- package/dist/lib/teams/agents.js.map +1 -0
- package/dist/lib/teams/api.d.ts +91 -0
- package/dist/lib/teams/api.d.ts.map +1 -0
- package/dist/lib/teams/api.js +239 -0
- package/dist/lib/teams/api.js.map +1 -0
- package/dist/lib/teams/cloud.d.ts +11 -0
- package/dist/lib/teams/cloud.d.ts.map +1 -0
- package/dist/lib/teams/cloud.js +169 -0
- package/dist/lib/teams/cloud.js.map +1 -0
- package/dist/lib/teams/debug.d.ts +8 -0
- package/dist/lib/teams/debug.d.ts.map +1 -0
- package/dist/lib/teams/debug.js +12 -0
- package/dist/lib/teams/debug.js.map +1 -0
- package/dist/lib/teams/file_ops.d.ts +13 -0
- package/dist/lib/teams/file_ops.d.ts.map +1 -0
- package/dist/lib/teams/file_ops.js +66 -0
- package/dist/lib/teams/file_ops.js.map +1 -0
- package/dist/lib/teams/index.d.ts +16 -0
- package/dist/lib/teams/index.d.ts.map +1 -0
- package/dist/lib/teams/index.js +15 -0
- package/dist/lib/teams/index.js.map +1 -0
- package/dist/lib/teams/oracle.d.ts +20 -0
- package/dist/lib/teams/oracle.d.ts.map +1 -0
- package/dist/lib/teams/oracle.js +59 -0
- package/dist/lib/teams/oracle.js.map +1 -0
- package/dist/lib/teams/parsers.d.ts +9 -0
- package/dist/lib/teams/parsers.d.ts.map +1 -0
- package/dist/lib/teams/parsers.js +837 -0
- package/dist/lib/teams/parsers.js.map +1 -0
- package/dist/lib/teams/persistence.d.ts +43 -0
- package/dist/lib/teams/persistence.d.ts.map +1 -0
- package/dist/lib/teams/persistence.js +299 -0
- package/dist/lib/teams/persistence.js.map +1 -0
- package/dist/lib/teams/ralph.d.ts +8 -0
- package/dist/lib/teams/ralph.d.ts.map +1 -0
- package/dist/lib/teams/ralph.js +59 -0
- package/dist/lib/teams/ralph.js.map +1 -0
- package/dist/lib/teams/registry.d.ts +18 -0
- package/dist/lib/teams/registry.d.ts.map +1 -0
- package/dist/lib/teams/registry.js +68 -0
- package/dist/lib/teams/registry.js.map +1 -0
- package/dist/lib/teams/summarizer.d.ts +73 -0
- package/dist/lib/teams/summarizer.d.ts.map +1 -0
- package/dist/lib/teams/summarizer.js +780 -0
- package/dist/lib/teams/summarizer.js.map +1 -0
- package/dist/lib/teams/supervisor.d.ts +49 -0
- package/dist/lib/teams/supervisor.d.ts.map +1 -0
- package/dist/lib/teams/supervisor.js +74 -0
- package/dist/lib/teams/supervisor.js.map +1 -0
- package/dist/lib/template.d.ts +8 -5
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +8 -5
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/types.d.ts +58 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +16 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/usage.d.ts +48 -0
- package/dist/lib/usage.d.ts.map +1 -1
- package/dist/lib/usage.js +103 -11
- package/dist/lib/usage.js.map +1 -1
- package/dist/lib/versions.d.ts +12 -1
- package/dist/lib/versions.d.ts.map +1 -1
- package/dist/lib/versions.js +91 -35
- package/dist/lib/versions.js.map +1 -1
- package/package.json +20 -6
- package/scripts/postinstall.js +1 -1
- package/scripts/rebuild-sqlite.sh +46 -0
- package/dist/commands/sessions.test.d.ts +0 -2
- package/dist/commands/sessions.test.d.ts.map +0 -1
- package/dist/commands/sessions.test.js +0 -53
- package/dist/commands/sessions.test.js.map +0 -1
package/dist/lib/exec.js
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent execution -- command building, process spawning, and rate-limit fallback.
|
|
3
|
+
*
|
|
4
|
+
* Translates high-level ExecOptions into CLI invocations for each supported agent,
|
|
5
|
+
* manages environment isolation per agent, and chains fallback agents on rate limits.
|
|
6
|
+
*/
|
|
1
7
|
import { spawn } from 'child_process';
|
|
8
|
+
import { randomUUID } from 'crypto';
|
|
2
9
|
import * as path from 'path';
|
|
3
10
|
import { parseTimeout } from './routines.js';
|
|
4
11
|
import { getVersionHomePath, isVersionInstalled, resolveVersion } from './versions.js';
|
|
12
|
+
import { resolveModel, buildReasoningFlags } from './models.js';
|
|
13
|
+
/** Pattern for valid environment variable names (C identifier rules). */
|
|
5
14
|
const EXEC_ENV_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
15
|
+
/** Parse a single KEY=VALUE string into a tuple, validating the key name. */
|
|
6
16
|
function parseExecEnvEntry(entry) {
|
|
7
17
|
const separatorIndex = entry.indexOf('=');
|
|
8
18
|
if (separatorIndex <= 0) {
|
|
@@ -15,85 +25,40 @@ function parseExecEnvEntry(entry) {
|
|
|
15
25
|
}
|
|
16
26
|
return [key, value];
|
|
17
27
|
}
|
|
28
|
+
/** Parse an array of KEY=VALUE strings into an env record. Returns undefined for empty input. */
|
|
18
29
|
export function parseExecEnv(entries) {
|
|
19
30
|
if (entries.length === 0) {
|
|
20
31
|
return undefined;
|
|
21
32
|
}
|
|
22
33
|
return Object.fromEntries(entries.map(parseExecEnvEntry));
|
|
23
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Build the process environment for an agent invocation.
|
|
37
|
+
* Pins CLAUDE_CONFIG_DIR for Claude agents and strips it for all others.
|
|
38
|
+
*/
|
|
24
39
|
export function buildExecEnv(options) {
|
|
25
|
-
const
|
|
40
|
+
const result = { ...process.env };
|
|
41
|
+
// CLAUDE_CONFIG_DIR is Claude-specific. When the caller is running inside
|
|
42
|
+
// a Claude-managed shell, process.env already carries it; spreading into a
|
|
43
|
+
// non-Claude agent's env would leak a config pointer that the target CLI
|
|
44
|
+
// doesn't understand. Strip it unless we're actually invoking Claude, and
|
|
45
|
+
// when we are, pin it to the resolved version's home.
|
|
26
46
|
if (options.agent === 'claude') {
|
|
27
47
|
const cwd = options.cwd || process.cwd();
|
|
28
48
|
const version = options.version || resolveVersion('claude', cwd);
|
|
29
49
|
if (version && isVersionInstalled('claude', version)) {
|
|
30
|
-
|
|
50
|
+
result.CLAUDE_CONFIG_DIR = path.join(getVersionHomePath('claude', version), '.claude');
|
|
31
51
|
}
|
|
32
52
|
}
|
|
53
|
+
else {
|
|
54
|
+
delete result.CLAUDE_CONFIG_DIR;
|
|
55
|
+
}
|
|
33
56
|
return {
|
|
34
|
-
...
|
|
35
|
-
...managedEnv,
|
|
57
|
+
...result,
|
|
36
58
|
...options.env,
|
|
37
59
|
};
|
|
38
60
|
}
|
|
39
|
-
|
|
40
|
-
export const EFFORT_MODELS = {
|
|
41
|
-
claude: {
|
|
42
|
-
fast: 'claude-haiku-4-5-20251001',
|
|
43
|
-
default: 'claude-sonnet-4-5',
|
|
44
|
-
detailed: 'claude-opus-4-5',
|
|
45
|
-
},
|
|
46
|
-
codex: {
|
|
47
|
-
fast: 'gpt-4o-mini',
|
|
48
|
-
default: 'gpt-5.2-codex',
|
|
49
|
-
detailed: 'gpt-5.1-codex-max',
|
|
50
|
-
},
|
|
51
|
-
gemini: {
|
|
52
|
-
fast: 'gemini-3-flash-preview',
|
|
53
|
-
default: 'gemini-3-flash-preview',
|
|
54
|
-
detailed: 'gemini-3-pro-preview',
|
|
55
|
-
},
|
|
56
|
-
cursor: {
|
|
57
|
-
fast: 'composer-1',
|
|
58
|
-
default: 'composer-1',
|
|
59
|
-
detailed: 'composer-1',
|
|
60
|
-
},
|
|
61
|
-
opencode: {
|
|
62
|
-
fast: 'zai-coding-plan/glm-4.7-flash',
|
|
63
|
-
default: 'zai-coding-plan/glm-4.7',
|
|
64
|
-
detailed: 'zai-coding-plan/glm-4.7',
|
|
65
|
-
},
|
|
66
|
-
openclaw: {
|
|
67
|
-
fast: 'claude-haiku-4-5-20251001',
|
|
68
|
-
default: 'claude-sonnet-4-5',
|
|
69
|
-
detailed: 'claude-opus-4-5',
|
|
70
|
-
},
|
|
71
|
-
copilot: {
|
|
72
|
-
fast: 'gpt-4o-mini',
|
|
73
|
-
default: 'gpt-4o',
|
|
74
|
-
detailed: 'claude-sonnet-4-5',
|
|
75
|
-
},
|
|
76
|
-
amp: {
|
|
77
|
-
fast: 'claude-haiku-4-5-20251001',
|
|
78
|
-
default: 'claude-sonnet-4-5',
|
|
79
|
-
detailed: 'claude-opus-4-5',
|
|
80
|
-
},
|
|
81
|
-
kiro: {
|
|
82
|
-
fast: 'claude-haiku-4-5-20251001',
|
|
83
|
-
default: 'claude-sonnet-4-5',
|
|
84
|
-
detailed: 'claude-opus-4-5',
|
|
85
|
-
},
|
|
86
|
-
goose: {
|
|
87
|
-
fast: 'gpt-4o-mini',
|
|
88
|
-
default: 'gpt-4o',
|
|
89
|
-
detailed: 'claude-sonnet-4-5',
|
|
90
|
-
},
|
|
91
|
-
roo: {
|
|
92
|
-
fast: 'claude-haiku-4-5-20251001',
|
|
93
|
-
default: 'claude-sonnet-4-5',
|
|
94
|
-
detailed: 'claude-opus-4-5',
|
|
95
|
-
},
|
|
96
|
-
};
|
|
61
|
+
/** CLI command templates for every supported agent. */
|
|
97
62
|
export const AGENT_COMMANDS = {
|
|
98
63
|
claude: {
|
|
99
64
|
base: ['claude'],
|
|
@@ -213,28 +178,56 @@ export const AGENT_COMMANDS = {
|
|
|
213
178
|
modelFlag: '--model',
|
|
214
179
|
},
|
|
215
180
|
};
|
|
181
|
+
/** Assemble the full CLI argument array for an agent invocation. */
|
|
216
182
|
export function buildExecCommand(options) {
|
|
217
183
|
const template = AGENT_COMMANDS[options.agent];
|
|
218
184
|
const cmd = [...template.base];
|
|
185
|
+
const interactive = options.prompt === undefined;
|
|
219
186
|
// Use versioned alias if a specific version was requested (e.g., claude@2.1.98)
|
|
220
187
|
if (options.version && cmd.length > 0) {
|
|
221
188
|
cmd[0] = `${cmd[0]}@${options.version}`;
|
|
222
189
|
}
|
|
190
|
+
// Add reasoning effort flags (before mode flags for codex -c positioning)
|
|
191
|
+
// For codex, -c must come before 'exec' subcommand, so we insert at position 1
|
|
192
|
+
if (options.effort !== 'auto') {
|
|
193
|
+
const reasoningFlags = buildReasoningFlags(options.agent, options.effort);
|
|
194
|
+
if (reasoningFlags.length > 0) {
|
|
195
|
+
if (options.agent === 'codex') {
|
|
196
|
+
// Insert after 'codex' (or 'codex@version') but before 'exec'
|
|
197
|
+
cmd.splice(1, 0, ...reasoningFlags);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// For other agents, append after base
|
|
201
|
+
cmd.push(...reasoningFlags);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
223
205
|
// Add mode flags
|
|
224
206
|
const modeFlags = template.modeFlags[options.mode];
|
|
225
207
|
cmd.push(...modeFlags);
|
|
226
|
-
// Add print/headless flags
|
|
227
|
-
|
|
208
|
+
// Add print/headless flags only when a prompt is provided. Without a prompt
|
|
209
|
+
// the caller wants an interactive REPL -- passing --print would immediately
|
|
210
|
+
// wait on stdin and never render the TUI.
|
|
211
|
+
if (!interactive && options.headless && template.printFlags) {
|
|
228
212
|
cmd.push(...template.printFlags);
|
|
229
213
|
}
|
|
230
214
|
// Add session ID (Claude only)
|
|
231
215
|
if (options.sessionId && options.agent === 'claude') {
|
|
232
216
|
cmd.push('--session-id', options.sessionId);
|
|
233
217
|
}
|
|
234
|
-
// Add model (
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
218
|
+
// Add model (only if explicitly provided by user)
|
|
219
|
+
if (options.model && template.modelFlag) {
|
|
220
|
+
const effectiveVersion = options.version || resolveVersion(options.agent, options.cwd || process.cwd());
|
|
221
|
+
if (effectiveVersion) {
|
|
222
|
+
const resolved = resolveModel(options.agent, effectiveVersion, options.model);
|
|
223
|
+
if (resolved.warning) {
|
|
224
|
+
process.stderr.write(`[agents] ${resolved.warning}\n`);
|
|
225
|
+
}
|
|
226
|
+
cmd.push(template.modelFlag, resolved.forwarded);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
cmd.push(template.modelFlag, options.model);
|
|
230
|
+
}
|
|
238
231
|
}
|
|
239
232
|
// Add JSON output flags if requested
|
|
240
233
|
if (options.json && template.jsonFlags) {
|
|
@@ -247,12 +240,14 @@ export function buildExecCommand(options) {
|
|
|
247
240
|
cmd.push(template.verboseFlag);
|
|
248
241
|
}
|
|
249
242
|
}
|
|
250
|
-
// Add prompt
|
|
251
|
-
if (
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
243
|
+
// Add prompt (skipped in interactive mode so the CLI launches its TUI)
|
|
244
|
+
if (!interactive) {
|
|
245
|
+
if (template.promptFlag === 'positional') {
|
|
246
|
+
cmd.push(options.prompt);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
cmd.push(template.promptFlag, options.prompt);
|
|
250
|
+
}
|
|
256
251
|
}
|
|
257
252
|
// Claude-specific: add dirs
|
|
258
253
|
if (options.agent === 'claude' && options.addDirs) {
|
|
@@ -262,24 +257,57 @@ export function buildExecCommand(options) {
|
|
|
262
257
|
}
|
|
263
258
|
return cmd;
|
|
264
259
|
}
|
|
260
|
+
/** Spawn an agent and return its exit code. Convenience wrapper over spawnAgent. */
|
|
265
261
|
export async function execAgent(options) {
|
|
262
|
+
const { exitCode } = await spawnAgent(options);
|
|
263
|
+
return exitCode;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Spawn an agent process and return its exit code plus a tee'd copy of stderr.
|
|
267
|
+
*
|
|
268
|
+
* Stderr is always piped so the caller can inspect it (e.g., for rate-limit
|
|
269
|
+
* detection) while also forwarding every chunk to process.stderr in real time --
|
|
270
|
+
* the user sees the same output they would with stdio: 'inherit'. Stdout keeps
|
|
271
|
+
* the original behavior: 'pipe' when downstream output is piped (so `agents
|
|
272
|
+
* run ... | ...` composes cleanly), otherwise 'inherit' so TTY output is
|
|
273
|
+
* unbuffered.
|
|
274
|
+
*/
|
|
275
|
+
async function spawnAgent(options) {
|
|
266
276
|
const cmd = buildExecCommand(options);
|
|
267
277
|
const [executable, ...args] = cmd;
|
|
268
278
|
const timeoutMs = options.timeout ? parseTimeout(options.timeout) : undefined;
|
|
269
|
-
// When stdout is piped, separate agent output (stdout) from status (stderr)
|
|
270
|
-
// so `agents exec claude "..." | agents exec codex "..."` works cleanly.
|
|
271
|
-
// When interactive (TTY), inherit everything for the full experience.
|
|
272
279
|
const piped = !process.stdout.isTTY;
|
|
280
|
+
const interactive = options.prompt === undefined;
|
|
273
281
|
return new Promise((resolve, reject) => {
|
|
282
|
+
// Interactive mode inherits all stdio so the CLI owns the TTY (TUI
|
|
283
|
+
// rendering, raw-mode keystrokes, colored output). Headless mode pipes
|
|
284
|
+
// stderr so we can scan for rate limits and feed fallback. stdout stays
|
|
285
|
+
// inherited for TTY, piped when the caller pipes us downstream.
|
|
286
|
+
const stdio = interactive
|
|
287
|
+
? ['inherit', 'inherit', 'inherit']
|
|
288
|
+
: ['inherit', piped ? 'pipe' : 'inherit', 'pipe'];
|
|
274
289
|
const child = spawn(executable, args, {
|
|
275
290
|
cwd: options.cwd || process.cwd(),
|
|
276
|
-
stdio
|
|
291
|
+
stdio,
|
|
277
292
|
env: buildExecEnv(options),
|
|
278
293
|
shell: false,
|
|
279
294
|
});
|
|
280
|
-
if (piped && child.stdout) {
|
|
295
|
+
if (!interactive && piped && child.stdout) {
|
|
281
296
|
child.stdout.pipe(process.stdout);
|
|
282
297
|
}
|
|
298
|
+
let stderrBuffer = '';
|
|
299
|
+
const STDERR_BUFFER_CAP = 64 * 1024;
|
|
300
|
+
if (!interactive && child.stderr) {
|
|
301
|
+
child.stderr.on('data', (chunk) => {
|
|
302
|
+
process.stderr.write(chunk);
|
|
303
|
+
if (stderrBuffer.length < STDERR_BUFFER_CAP) {
|
|
304
|
+
stderrBuffer += chunk.toString('utf-8');
|
|
305
|
+
if (stderrBuffer.length > STDERR_BUFFER_CAP) {
|
|
306
|
+
stderrBuffer = stderrBuffer.slice(-STDERR_BUFFER_CAP);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}
|
|
283
311
|
let timer;
|
|
284
312
|
if (timeoutMs) {
|
|
285
313
|
timer = setTimeout(() => {
|
|
@@ -295,8 +323,118 @@ export async function execAgent(options) {
|
|
|
295
323
|
child.on('close', (code) => {
|
|
296
324
|
if (timer)
|
|
297
325
|
clearTimeout(timer);
|
|
298
|
-
resolve(code ?? 0);
|
|
326
|
+
resolve({ exitCode: code ?? 0, stderr: stderrBuffer });
|
|
299
327
|
});
|
|
300
328
|
});
|
|
301
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Patterns that indicate a rate/usage limit. Matching is intentionally broad
|
|
332
|
+
* because providers phrase these differently -- Anthropic uses "5-hour limit"
|
|
333
|
+
* and "rate limit", OpenAI surfaces 429s, Google says "quota exceeded".
|
|
334
|
+
* False positives here just trigger a fallback attempt; false negatives leave
|
|
335
|
+
* the original error unhandled, which is worse.
|
|
336
|
+
*/
|
|
337
|
+
export const RATE_LIMIT_PATTERNS = [
|
|
338
|
+
/rate[\s-]?limit/i,
|
|
339
|
+
/usage[\s-]?limit/i,
|
|
340
|
+
/quota\s*(exceeded|reached|limit)/i,
|
|
341
|
+
/\b429\b/,
|
|
342
|
+
/5[\s-]?hour[\s-]?limit/i,
|
|
343
|
+
/too many requests/i,
|
|
344
|
+
/api[\s_-]?overloaded/i,
|
|
345
|
+
/\boverloaded\b/i,
|
|
346
|
+
];
|
|
347
|
+
/** Return true if the text contains any known rate-limit or overload indicator. */
|
|
348
|
+
export function detectRateLimit(text) {
|
|
349
|
+
return RATE_LIMIT_PATTERNS.some(pattern => pattern.test(text));
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Build the prompt handed to the fallback agent when the primary was stopped
|
|
353
|
+
* mid-task by a rate limit.
|
|
354
|
+
*
|
|
355
|
+
* When the prior agent was Claude we pin its session ID via `--session-id` so
|
|
356
|
+
* `prevSessionId` is always defined; for other primaries we pass undefined and
|
|
357
|
+
* get a simpler retry-with-context prompt. Claude understands `/continue <id>`
|
|
358
|
+
* via its shipped skill -- other agents fall through to an explicit instruction
|
|
359
|
+
* that points at the version-agnostic `agents sessions <id>` reader.
|
|
360
|
+
*/
|
|
361
|
+
export function buildFallbackPrompt(prevAgent, prevSessionId, nextAgent, originalPrompt) {
|
|
362
|
+
if (nextAgent === 'claude' && prevSessionId) {
|
|
363
|
+
return `/continue ${prevSessionId}`;
|
|
364
|
+
}
|
|
365
|
+
const lines = [
|
|
366
|
+
`The previous ${prevAgent} session was interrupted by a rate limit.`,
|
|
367
|
+
];
|
|
368
|
+
if (prevSessionId) {
|
|
369
|
+
lines.push(``, `Prior session ID: ${prevSessionId}`, `Read the transcript by running: agents sessions ${prevSessionId}`);
|
|
370
|
+
}
|
|
371
|
+
lines.push(``, `Original request: ${originalPrompt}`, ``, `Continue from where the prior agent left off.`);
|
|
372
|
+
return lines.join('\n');
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Run an agent and, on rate-limit failure, cascade through the fallback chain.
|
|
376
|
+
*
|
|
377
|
+
* The primary agent gets the original prompt. Subsequent agents get a
|
|
378
|
+
* `/continue <id>`-style handoff (see buildFallbackPrompt) when we can pin a
|
|
379
|
+
* session ID -- which today means Claude as primary (supports `--session-id`).
|
|
380
|
+
* For other primaries, fallbacks run with the original prompt plus a
|
|
381
|
+
* retry-with-context note, since we can't deterministically resolve their
|
|
382
|
+
* auto-generated session IDs.
|
|
383
|
+
*
|
|
384
|
+
* Only rate-limit failures cascade. Other errors (missing flag, auth failure,
|
|
385
|
+
* compile error) bubble up from the primary so the caller sees the real cause
|
|
386
|
+
* instead of an opaque "all agents failed" message.
|
|
387
|
+
*/
|
|
388
|
+
export async function runWithFallback(options) {
|
|
389
|
+
const chain = [
|
|
390
|
+
{ agent: options.agent, version: options.version },
|
|
391
|
+
...options.fallback,
|
|
392
|
+
];
|
|
393
|
+
let prevAgent;
|
|
394
|
+
let prevSessionId;
|
|
395
|
+
for (let i = 0; i < chain.length; i++) {
|
|
396
|
+
const { agent, version } = chain[i];
|
|
397
|
+
const pinnedSessionId = agent === 'claude' ? randomUUID() : undefined;
|
|
398
|
+
const prompt = prevAgent
|
|
399
|
+
? buildFallbackPrompt(prevAgent, prevSessionId, agent, options.prompt)
|
|
400
|
+
: options.prompt;
|
|
401
|
+
const execOpts = {
|
|
402
|
+
...options,
|
|
403
|
+
agent,
|
|
404
|
+
version,
|
|
405
|
+
prompt,
|
|
406
|
+
sessionId: pinnedSessionId ?? (i === 0 ? options.sessionId : undefined),
|
|
407
|
+
};
|
|
408
|
+
const label = version ? `${agent}@${version}` : agent;
|
|
409
|
+
const banner = i === 0
|
|
410
|
+
? `[agents] running ${label}`
|
|
411
|
+
: `[agents] fallback → ${label}`;
|
|
412
|
+
process.stderr.write(`${banner}${pinnedSessionId ? ` (session ${pinnedSessionId.slice(0, 8)})` : ''}\n`);
|
|
413
|
+
let result;
|
|
414
|
+
try {
|
|
415
|
+
result = await spawnAgent(execOpts);
|
|
416
|
+
}
|
|
417
|
+
catch (err) {
|
|
418
|
+
if (err.code === 'ENOENT' && i > 0) {
|
|
419
|
+
process.stderr.write(`[agents] ${label} not installed, skipping\n`);
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
throw err;
|
|
423
|
+
}
|
|
424
|
+
if (result.exitCode === 0)
|
|
425
|
+
return 0;
|
|
426
|
+
const isLast = i === chain.length - 1;
|
|
427
|
+
if (isLast)
|
|
428
|
+
return result.exitCode;
|
|
429
|
+
if (!detectRateLimit(result.stderr)) {
|
|
430
|
+
return result.exitCode;
|
|
431
|
+
}
|
|
432
|
+
const next = chain[i + 1];
|
|
433
|
+
const nextLabel = next.version ? `${next.agent}@${next.version}` : next.agent;
|
|
434
|
+
process.stderr.write(`[agents] ${label} hit rate limit. Handing off to ${nextLabel}...\n`);
|
|
435
|
+
prevAgent = agent;
|
|
436
|
+
prevSessionId = pinnedSessionId;
|
|
437
|
+
}
|
|
438
|
+
return 1;
|
|
439
|
+
}
|
|
302
440
|
//# sourceMappingURL=exec.js.map
|
package/dist/lib/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/factory/__tests__/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as fsp from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import * as os from 'os';
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import { factoryConfigPath, readFactoryConfig, writeFactoryConfig, detectGitHubRepo, resolveDispatch, } from '../config.js';
|
|
8
|
+
// Tests point at a fake HOME so we never clobber the user's real config.
|
|
9
|
+
let fakeHome;
|
|
10
|
+
let origHome;
|
|
11
|
+
let cwd;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
fakeHome = fs.mkdtempSync(path.join(os.tmpdir(), 'fac-cfg-'));
|
|
14
|
+
origHome = process.env.HOME;
|
|
15
|
+
process.env.HOME = fakeHome;
|
|
16
|
+
cwd = fs.mkdtempSync(path.join(os.tmpdir(), 'fac-cwd-'));
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
if (origHome !== undefined)
|
|
20
|
+
process.env.HOME = origHome;
|
|
21
|
+
else
|
|
22
|
+
delete process.env.HOME;
|
|
23
|
+
fs.rmSync(fakeHome, { recursive: true, force: true });
|
|
24
|
+
fs.rmSync(cwd, { recursive: true, force: true });
|
|
25
|
+
});
|
|
26
|
+
describe('FactoryConfig — read/write', () => {
|
|
27
|
+
it('returns defaults when no file exists', async () => {
|
|
28
|
+
const cfg = await readFactoryConfig();
|
|
29
|
+
expect(cfg.cloud_priority).toEqual(['rush', 'codex', 'local']);
|
|
30
|
+
expect(cfg.auto_detect_repo).toBe(true);
|
|
31
|
+
expect(cfg.default_planner_agent).toBe('codex');
|
|
32
|
+
expect(cfg.supervisor_interval_seconds).toBe(8);
|
|
33
|
+
});
|
|
34
|
+
it('persists + reloads overrides, merging with defaults', async () => {
|
|
35
|
+
await writeFactoryConfig({ cloud_priority: ['codex', 'local'], supervisor_interval_seconds: 12 });
|
|
36
|
+
const cfg = await readFactoryConfig();
|
|
37
|
+
expect(cfg.cloud_priority).toEqual(['codex', 'local']);
|
|
38
|
+
expect(cfg.supervisor_interval_seconds).toBe(12);
|
|
39
|
+
// Untouched fields fall back to defaults.
|
|
40
|
+
expect(cfg.default_planner_agent).toBe('codex');
|
|
41
|
+
});
|
|
42
|
+
it('rejects bogus priority entries silently', async () => {
|
|
43
|
+
const p = factoryConfigPath();
|
|
44
|
+
await fsp.mkdir(path.dirname(p), { recursive: true });
|
|
45
|
+
await fsp.writeFile(p, JSON.stringify({ cloud_priority: ['hamster', 'rush'], supervisor_interval_seconds: 0 }));
|
|
46
|
+
const cfg = await readFactoryConfig();
|
|
47
|
+
// 'hamster' dropped, 'rush' kept. Interval 0 → falls back to default.
|
|
48
|
+
expect(cfg.cloud_priority).toEqual(['rush']);
|
|
49
|
+
expect(cfg.supervisor_interval_seconds).toBe(8);
|
|
50
|
+
});
|
|
51
|
+
it('falls back to defaults when the file is corrupt', async () => {
|
|
52
|
+
const p = factoryConfigPath();
|
|
53
|
+
await fsp.mkdir(path.dirname(p), { recursive: true });
|
|
54
|
+
await fsp.writeFile(p, '{{not json');
|
|
55
|
+
const cfg = await readFactoryConfig();
|
|
56
|
+
expect(cfg.cloud_priority).toEqual(['rush', 'codex', 'local']);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('detectGitHubRepo', () => {
|
|
60
|
+
it('parses https remotes', () => {
|
|
61
|
+
execSync('git init -q', { cwd });
|
|
62
|
+
execSync('git remote add origin https://github.com/acme/widgets.git', { cwd });
|
|
63
|
+
expect(detectGitHubRepo(cwd)).toBe('acme/widgets');
|
|
64
|
+
});
|
|
65
|
+
it('parses ssh remotes', () => {
|
|
66
|
+
execSync('git init -q', { cwd });
|
|
67
|
+
execSync('git remote add origin git@github.com:acme/widgets.git', { cwd });
|
|
68
|
+
expect(detectGitHubRepo(cwd)).toBe('acme/widgets');
|
|
69
|
+
});
|
|
70
|
+
it('returns null when not a git repo', () => {
|
|
71
|
+
expect(detectGitHubRepo(cwd)).toBeNull();
|
|
72
|
+
});
|
|
73
|
+
it('returns null when no origin remote', () => {
|
|
74
|
+
execSync('git init -q', { cwd });
|
|
75
|
+
expect(detectGitHubRepo(cwd)).toBeNull();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('resolveDispatch', () => {
|
|
79
|
+
beforeEach(() => {
|
|
80
|
+
// Make cwd a git repo with a detectable origin for the rush-path tests.
|
|
81
|
+
execSync('git init -q', { cwd });
|
|
82
|
+
execSync('git remote add origin https://github.com/acme/widgets.git', { cwd });
|
|
83
|
+
});
|
|
84
|
+
it('CLI --local wins over config', async () => {
|
|
85
|
+
await writeFactoryConfig({ cloud_priority: ['rush'] });
|
|
86
|
+
const r = await resolveDispatch(cwd, undefined, true, undefined);
|
|
87
|
+
expect(r.provider).toBe('local');
|
|
88
|
+
});
|
|
89
|
+
it('CLI --cloud wins over config and auto-detects repo for rush', async () => {
|
|
90
|
+
const r = await resolveDispatch(cwd, 'rush', false, undefined);
|
|
91
|
+
expect(r.provider).toBe('rush');
|
|
92
|
+
expect(r.repo).toBe('acme/widgets');
|
|
93
|
+
});
|
|
94
|
+
it('config priority picks the first viable provider', async () => {
|
|
95
|
+
await writeFactoryConfig({ cloud_priority: ['codex', 'local'] });
|
|
96
|
+
const r = await resolveDispatch(cwd, undefined, false, undefined);
|
|
97
|
+
expect(r.provider).toBe('codex');
|
|
98
|
+
});
|
|
99
|
+
it('rush priority skips to next when no repo can be detected', async () => {
|
|
100
|
+
// Use a non-git cwd to force rush to skip.
|
|
101
|
+
const noGit = fs.mkdtempSync(path.join(os.tmpdir(), 'no-git-'));
|
|
102
|
+
try {
|
|
103
|
+
await writeFactoryConfig({ cloud_priority: ['rush', 'codex'] });
|
|
104
|
+
const r = await resolveDispatch(noGit, undefined, false, undefined);
|
|
105
|
+
expect(r.considered).toEqual(['rush', 'codex']);
|
|
106
|
+
expect(r.provider).toBe('codex');
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
fs.rmSync(noGit, { recursive: true, force: true });
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
it('falls through to local when everything else skips', async () => {
|
|
113
|
+
await writeFactoryConfig({ cloud_priority: ['rush'] });
|
|
114
|
+
const noGit = fs.mkdtempSync(path.join(os.tmpdir(), 'no-git-'));
|
|
115
|
+
try {
|
|
116
|
+
const r = await resolveDispatch(noGit, undefined, false, undefined);
|
|
117
|
+
expect(r.provider).toBe('local');
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
fs.rmSync(noGit, { recursive: true, force: true });
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
it('explicit --repo wins over auto-detect', async () => {
|
|
124
|
+
const r = await resolveDispatch(cwd, 'rush', false, 'other/repo');
|
|
125
|
+
expect(r.repo).toBe('other/repo');
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../../src/lib/factory/__tests__/config.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Dispatch backends in order of preference. First available wins. */
|
|
2
|
+
export type DispatchProvider = 'rush' | 'codex' | 'factory' | 'local';
|
|
3
|
+
export interface FactoryConfig {
|
|
4
|
+
/**
|
|
5
|
+
* Ordered list of dispatch backends to try. First entry is the default.
|
|
6
|
+
* `'local'` means run the teammate CLI on this machine.
|
|
7
|
+
*/
|
|
8
|
+
cloud_priority: DispatchProvider[];
|
|
9
|
+
/**
|
|
10
|
+
* When true and the dispatch is `rush`, `factory start` auto-detects the
|
|
11
|
+
* repo from `git remote get-url origin` and forwards it as --repo.
|
|
12
|
+
*/
|
|
13
|
+
auto_detect_repo: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Default agent type used for the Planner teammate. Workers can override.
|
|
16
|
+
*/
|
|
17
|
+
default_planner_agent: 'claude' | 'codex' | 'gemini' | 'cursor' | 'opencode';
|
|
18
|
+
/**
|
|
19
|
+
* Seconds between supervisor waves when running `factory run` or the
|
|
20
|
+
* auto-launched supervisor from `factory start`.
|
|
21
|
+
*/
|
|
22
|
+
supervisor_interval_seconds: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function factoryConfigPath(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Read the factory config, merging on-disk values with defaults. Missing
|
|
27
|
+
* file or invalid JSON silently returns defaults.
|
|
28
|
+
*/
|
|
29
|
+
export declare function readFactoryConfig(): Promise<FactoryConfig>;
|
|
30
|
+
export declare function writeFactoryConfig(config: Partial<FactoryConfig>): Promise<FactoryConfig>;
|
|
31
|
+
/**
|
|
32
|
+
* Try to read `git remote get-url origin` in cwd and parse it into
|
|
33
|
+
* `<owner>/<repo>`. Returns null if not a git repo, no origin, or an
|
|
34
|
+
* unparseable URL.
|
|
35
|
+
*/
|
|
36
|
+
export declare function detectGitHubRepo(cwd: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the dispatch decision for a factory operation given CLI overrides
|
|
39
|
+
* and config priority. Returns the first viable provider, auto-detected
|
|
40
|
+
* repo (if applicable), and a diagnostic list of providers that were
|
|
41
|
+
* considered.
|
|
42
|
+
*/
|
|
43
|
+
export interface ResolvedDispatch {
|
|
44
|
+
provider: DispatchProvider;
|
|
45
|
+
repo?: string;
|
|
46
|
+
considered: DispatchProvider[];
|
|
47
|
+
}
|
|
48
|
+
export declare function resolveDispatch(cwd: string, cliCloud: string | undefined, cliLocal: boolean | undefined, cliRepo: string | undefined): Promise<ResolvedDispatch>;
|
|
49
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/factory/config.ts"],"names":[],"mappings":"AAaA,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAEnC;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,qBAAqB,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE7E;;;OAGG;IACH,2BAA2B,EAAE,MAAM,CAAC;CACrC;AASD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAmBhE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAiB/F;AAoBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA0B3B"}
|