@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
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import { AgentManager } from '../lib/teams/agents.js';
|
|
7
|
+
import { resolveLedger, syncOnEviction, syncTeammate } from '../lib/ledger/index.js';
|
|
8
|
+
import { handleSpawn, handleStatus } from '../lib/teams/api.js';
|
|
9
|
+
import { ensureTeam } from '../lib/teams/registry.js';
|
|
10
|
+
import { resolveProvider } from '../lib/cloud/registry.js';
|
|
11
|
+
import { runSupervisor } from '../lib/teams/supervisor.js';
|
|
12
|
+
import { maybeFileBugfix } from '../lib/teams/oracle.js';
|
|
13
|
+
import { readFactoryConfig, writeFactoryConfig, resolveDispatch, } from '../lib/factory/config.js';
|
|
14
|
+
function die(msg, code = 1) {
|
|
15
|
+
console.error(chalk.red(msg));
|
|
16
|
+
process.exit(code);
|
|
17
|
+
}
|
|
18
|
+
/** Per-team file where a detached supervisor streams its wave output. */
|
|
19
|
+
function supervisorLogPath(team) {
|
|
20
|
+
const safe = team.replace(/[/\\]/g, '_');
|
|
21
|
+
return path.join(homedir(), '.agents', 'factory', `${safe}.supervisor.log`);
|
|
22
|
+
}
|
|
23
|
+
function supervisorPidPath(team) {
|
|
24
|
+
const safe = team.replace(/[/\\]/g, '_');
|
|
25
|
+
return path.join(homedir(), '.agents', 'factory', `${safe}.supervisor.pid`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Fork a detached `agents factory run <team>` child that survives this
|
|
29
|
+
* parent process. Writes pid + log path to disk so `factory watch` and
|
|
30
|
+
* `factory stop` can find it.
|
|
31
|
+
*/
|
|
32
|
+
function startDetachedSupervisor(team) {
|
|
33
|
+
const log = supervisorLogPath(team);
|
|
34
|
+
fs.mkdirSync(path.dirname(log), { recursive: true });
|
|
35
|
+
const logFd = fs.openSync(log, 'a');
|
|
36
|
+
// Re-launch ourselves with `factory run <team>`. argv[0] is the node
|
|
37
|
+
// binary and argv[1] is this CLI entry point — that pair reconstructs
|
|
38
|
+
// the exact command the parent is running.
|
|
39
|
+
const child = spawn(process.argv[0], [process.argv[1], 'factory', 'run', team], {
|
|
40
|
+
detached: true,
|
|
41
|
+
stdio: ['ignore', logFd, logFd],
|
|
42
|
+
env: { ...process.env },
|
|
43
|
+
});
|
|
44
|
+
child.unref();
|
|
45
|
+
const pid = child.pid ?? -1;
|
|
46
|
+
if (pid > 0) {
|
|
47
|
+
fs.writeFileSync(supervisorPidPath(team), String(pid), 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
return { pid, log };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run the supervisor in-process for the foreground case. Thin wrapper that
|
|
53
|
+
* defers to the exact same code the `factory run` subcommand uses.
|
|
54
|
+
*/
|
|
55
|
+
async function runForegroundSupervisor(team) {
|
|
56
|
+
const ledger = resolveLedger();
|
|
57
|
+
const mgr = new AgentManager();
|
|
58
|
+
mgr.setCompletionHook(async (a) => {
|
|
59
|
+
const snap = await a.toSnapshot();
|
|
60
|
+
await syncTeammate(snap, ledger);
|
|
61
|
+
await maybeFileBugfix(a, mgr);
|
|
62
|
+
});
|
|
63
|
+
mgr.setCloudDispatcher(async (a) => {
|
|
64
|
+
if (!a.cloudProvider)
|
|
65
|
+
throw new Error(`Teammate ${a.agentId} missing cloudProvider`);
|
|
66
|
+
const prov = resolveProvider(a.cloudProvider);
|
|
67
|
+
const ct = await prov.dispatch({
|
|
68
|
+
prompt: a.prompt, agent: a.agentType,
|
|
69
|
+
repo: a.cloudRepo ?? undefined, branch: a.cloudBranch ?? undefined,
|
|
70
|
+
model: a.model ?? undefined,
|
|
71
|
+
});
|
|
72
|
+
return { cloudSessionId: ct.id };
|
|
73
|
+
});
|
|
74
|
+
await runSupervisor(mgr, {
|
|
75
|
+
team,
|
|
76
|
+
intervalMs: 8000,
|
|
77
|
+
maxWaves: 1000,
|
|
78
|
+
onWave: (s) => {
|
|
79
|
+
const ts = s.timestamp.slice(11, 19);
|
|
80
|
+
const taskTypes = s.launched.map((l) => l.taskType ?? '?').join(',') || '-';
|
|
81
|
+
console.log(`[${ts}] wave ${s.wave} launched=${s.launched.length} (${taskTypes}) ` +
|
|
82
|
+
`running=${s.running} pending=${s.pending} done=${s.completed} failed=${s.failed}`);
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
export function registerFactoryCommands(program) {
|
|
87
|
+
const factory = program
|
|
88
|
+
.command('factory')
|
|
89
|
+
.description('Software Factory — planner/worker DAG with a shared team Ledger.');
|
|
90
|
+
// `agents factory start <brief>` — seed a team with a Planner teammate.
|
|
91
|
+
factory
|
|
92
|
+
.command('start <brief>')
|
|
93
|
+
.description('Start a new Software Factory run: spawns a Planner teammate who emits the DAG.')
|
|
94
|
+
.option('-t, --team <name>', 'Team name (defaults to factory-<timestamp>)')
|
|
95
|
+
.option('-a, --agent <type>', 'Agent type for the planner (defaults to factory config default_planner_agent)')
|
|
96
|
+
.option('--cwd <dir>', 'Working directory for all teammates', process.cwd())
|
|
97
|
+
.option('--cloud <provider>', 'Dispatch planner to cloud: rush | codex | factory. Defaults to your factory config priority (typically `rush`).')
|
|
98
|
+
.option('--local', 'Force-run the planner locally instead of dispatching to cloud. Escape hatch for debugging.')
|
|
99
|
+
.option('--repo <owner/repo>', 'GitHub repository (required with --cloud rush; auto-detected from git remote otherwise).')
|
|
100
|
+
.option('--detach', 'Also start the supervisor loop in the background; tail with `agents factory watch <team>`')
|
|
101
|
+
.option('--foreground', 'Also start the supervisor loop in the foreground (blocks until drained)')
|
|
102
|
+
.option('--json', 'Output machine-readable JSON')
|
|
103
|
+
.action(async (brief, opts) => {
|
|
104
|
+
const teamId = opts.team || `factory-${Date.now()}`;
|
|
105
|
+
await ensureTeam(teamId);
|
|
106
|
+
const ledger = resolveLedger();
|
|
107
|
+
const mgr = new AgentManager();
|
|
108
|
+
mgr.setCompletionHook(async (a) => {
|
|
109
|
+
const snap = await a.toSnapshot();
|
|
110
|
+
await syncTeammate(snap, ledger);
|
|
111
|
+
});
|
|
112
|
+
const plannerPrompt = `You are the Planner teammate in a Software Factory team.
|
|
113
|
+
|
|
114
|
+
Team id: ${teamId}
|
|
115
|
+
Working directory: ${opts.cwd}
|
|
116
|
+
Brief: ${brief}
|
|
117
|
+
|
|
118
|
+
YOUR JOB: Seed an initial DAG of worker tasks by EXECUTING \`agents teams add\` commands via the Bash tool. You must actually run them — do not print them in a code block and stop.
|
|
119
|
+
|
|
120
|
+
For each slice (narrow, file-scoped ask), run three Bash commands:
|
|
121
|
+
agents teams add ${teamId} codex "implement <slice>" --name impl-<slug> --task-type implement --cwd ${opts.cwd}
|
|
122
|
+
agents teams add ${teamId} codex "write tests for <slice>; run them; last line: TESTS: N passed, M failed" --name test-<slug> --task-type test --after impl-<slug> --cwd ${opts.cwd}
|
|
123
|
+
agents teams add ${teamId} codex "review diff from impl-<slug>; file bugs via LedgerNote" --name review-<slug> --task-type review --after impl-<slug>,test-<slug> --cwd ${opts.cwd}
|
|
124
|
+
|
|
125
|
+
Use the agent type that matches your own type for workers (cheapest-and-adequate). Use --agent claude only where you need top capability.
|
|
126
|
+
|
|
127
|
+
Rules:
|
|
128
|
+
1. Plant the FIRST LAYER ONLY. Workers can add more tasks via \`agents teams add\` as they discover work; a background supervisor will pick them up.
|
|
129
|
+
2. Split slices by file ownership — two implementers must not touch the same files in parallel.
|
|
130
|
+
3. Names must be unique within the team (--name alice, --name bob). Dependencies reference the name via --after.
|
|
131
|
+
4. Before exiting, print a one-paragraph strategy narrative. Do NOT spawn a separate process to do this — just print it as your final message.
|
|
132
|
+
|
|
133
|
+
After you have run the teams-add commands and printed your strategy, STOP. The supervisor will drive the DAG from here.`;
|
|
134
|
+
// Resolve dispatch against the factory config priority. --cloud and
|
|
135
|
+
// --local are CLI overrides; otherwise we use the user's configured
|
|
136
|
+
// order (default: rush > codex > local).
|
|
137
|
+
const dispatch = await resolveDispatch(opts.cwd, opts.cloud, opts.local, opts.repo);
|
|
138
|
+
const plannerAgent = (opts.agent ?? (await readFactoryConfig()).default_planner_agent);
|
|
139
|
+
let cloudSessionId = null;
|
|
140
|
+
let cloudProvider = null;
|
|
141
|
+
let cloudRepo = null;
|
|
142
|
+
if (dispatch.provider !== 'local') {
|
|
143
|
+
if (dispatch.provider === 'rush' && !dispatch.repo) {
|
|
144
|
+
die(`--cloud rush requires --repo (auto-detect from git remote failed). Pass --repo <owner/repo> or run in a git repo with an origin remote.`);
|
|
145
|
+
}
|
|
146
|
+
cloudProvider = dispatch.provider;
|
|
147
|
+
cloudRepo = dispatch.repo ?? null;
|
|
148
|
+
try {
|
|
149
|
+
const prov = resolveProvider(dispatch.provider);
|
|
150
|
+
const task = await prov.dispatch({
|
|
151
|
+
prompt: plannerPrompt,
|
|
152
|
+
agent: plannerAgent,
|
|
153
|
+
repo: dispatch.repo,
|
|
154
|
+
});
|
|
155
|
+
cloudSessionId = task.id;
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
die(`Cloud dispatch to ${dispatch.provider} failed: ${err.message}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const result = await handleSpawn(mgr, teamId, plannerAgent, plannerPrompt, opts.cwd, 'edit', 'medium', null, opts.cwd, null, 'planner', [], null, null, 'plan', cloudProvider, cloudSessionId, cloudRepo, null);
|
|
162
|
+
// Auto-launch the supervisor unless the user explicitly opts out by
|
|
163
|
+
// passing neither --detach nor --foreground. Default is --detach: the
|
|
164
|
+
// factory is meant to be dynamic, so it'd be weird to leave the DAG
|
|
165
|
+
// stalled after the planner emits tasks.
|
|
166
|
+
const mode = opts.foreground ? 'foreground' : 'detach';
|
|
167
|
+
const supervisorInfo = mode === 'foreground' ? null : startDetachedSupervisor(teamId);
|
|
168
|
+
if (opts.json) {
|
|
169
|
+
console.log(JSON.stringify({
|
|
170
|
+
team_id: teamId,
|
|
171
|
+
planner_id: result.agent_id,
|
|
172
|
+
planner_agent: plannerAgent,
|
|
173
|
+
status: result.status,
|
|
174
|
+
dispatch: { provider: dispatch.provider, repo: dispatch.repo ?? null, considered: dispatch.considered },
|
|
175
|
+
supervisor: supervisorInfo,
|
|
176
|
+
}, null, 2));
|
|
177
|
+
if (mode === 'foreground')
|
|
178
|
+
await runForegroundSupervisor(teamId);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
console.log(chalk.green(`Factory started: team ${chalk.cyan(teamId)}`));
|
|
182
|
+
console.log(` ${chalk.gray('planner ')} ${result.name} (${result.agent_id.slice(0, 8)}) ${plannerAgent}`);
|
|
183
|
+
const dispatchLabel = dispatch.provider === 'local'
|
|
184
|
+
? chalk.gray('local')
|
|
185
|
+
: `${chalk.magenta(dispatch.provider)}${dispatch.repo ? chalk.gray(` repo=${dispatch.repo}`) : ''}`;
|
|
186
|
+
console.log(` ${chalk.gray('dispatch ')} ${dispatchLabel}`);
|
|
187
|
+
if (supervisorInfo) {
|
|
188
|
+
console.log(` ${chalk.gray('supervisor ')} pid ${supervisorInfo.pid}, log ${supervisorInfo.log}`);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.log(chalk.gray(` supervisor foreground`));
|
|
192
|
+
}
|
|
193
|
+
console.log();
|
|
194
|
+
console.log(chalk.gray(`Watch live: agents factory watch ${teamId}`));
|
|
195
|
+
console.log(chalk.gray(`Check status: agents factory status ${teamId}`));
|
|
196
|
+
console.log(chalk.gray(`Q&A modal: shows up in the Factory Floor pane when a teammate needs input`));
|
|
197
|
+
if (mode === 'foreground')
|
|
198
|
+
await runForegroundSupervisor(teamId);
|
|
199
|
+
});
|
|
200
|
+
// `agents factory status <team>` — rolled-up view of teammates + DAG state.
|
|
201
|
+
factory
|
|
202
|
+
.command('status <team>')
|
|
203
|
+
.description('Show roll-up status for a Factory team: DAG state, blocked teammates, recent tasks.')
|
|
204
|
+
.option('--json', 'Output machine-readable JSON')
|
|
205
|
+
.action(async (team, opts) => {
|
|
206
|
+
const mgr = new AgentManager();
|
|
207
|
+
const result = await handleStatus(mgr, team, 'all');
|
|
208
|
+
const byType = {};
|
|
209
|
+
for (const a of result.agents) {
|
|
210
|
+
const t = a.task_type ?? 'other';
|
|
211
|
+
byType[t] = (byType[t] ?? 0) + 1;
|
|
212
|
+
}
|
|
213
|
+
const input_required = result.agents.filter((a) => a.status === 'pending' && a.after?.length === 0).length;
|
|
214
|
+
if (opts.json) {
|
|
215
|
+
console.log(JSON.stringify({
|
|
216
|
+
team_id: team,
|
|
217
|
+
counts: result.summary,
|
|
218
|
+
by_task_type: byType,
|
|
219
|
+
input_required_count: input_required,
|
|
220
|
+
agents: result.agents,
|
|
221
|
+
}, null, 2));
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
console.log(chalk.bold(`Factory ${chalk.cyan(team)}`));
|
|
225
|
+
console.log(` ${chalk.gray('running ')} ${result.summary.running}`);
|
|
226
|
+
console.log(` ${chalk.gray('pending ')} ${result.summary.pending}`);
|
|
227
|
+
console.log(` ${chalk.gray('completed')} ${result.summary.completed}`);
|
|
228
|
+
console.log(` ${chalk.gray('failed ')} ${result.summary.failed}`);
|
|
229
|
+
if (Object.keys(byType).length > 0) {
|
|
230
|
+
console.log(` ${chalk.gray('by type ')} ` +
|
|
231
|
+
Object.entries(byType).map(([k, v]) => `${k}:${v}`).join(' · '));
|
|
232
|
+
}
|
|
233
|
+
if (input_required > 0) {
|
|
234
|
+
console.log(chalk.yellow(`\n${input_required} teammate(s) waiting on user input — answer with: agents factory answer ${team} <text>`));
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
// `agents factory run <team>` — run the continuous DAG supervisor in the
|
|
238
|
+
// foreground. Drives the team dynamically: as teammates add more tasks via
|
|
239
|
+
// `agents teams add`, those tasks get picked up in the next wave.
|
|
240
|
+
factory
|
|
241
|
+
.command('run <team>')
|
|
242
|
+
.description('Drive a team dynamically: keep dispatching ready teammates until the DAG drains. Workers can add more tasks mid-flight and this loop picks them up.')
|
|
243
|
+
.option('--interval <seconds>', 'Seconds between waves', '8')
|
|
244
|
+
.option('--max-waves <n>', 'Safety cap on waves', '1000')
|
|
245
|
+
.option('--json', 'Emit one JSON object per wave')
|
|
246
|
+
.action(async (team, opts) => {
|
|
247
|
+
const ledger = resolveLedger();
|
|
248
|
+
const mgr = new AgentManager();
|
|
249
|
+
// Wire the same completion hook as `teams start` so failed tests
|
|
250
|
+
// auto-file bugfix teammates and outputs land in the Ledger.
|
|
251
|
+
mgr.setCompletionHook(async (a) => {
|
|
252
|
+
const snap = await a.toSnapshot();
|
|
253
|
+
await syncTeammate(snap, ledger);
|
|
254
|
+
await maybeFileBugfix(a, mgr);
|
|
255
|
+
});
|
|
256
|
+
mgr.setCloudDispatcher(async (a) => {
|
|
257
|
+
if (!a.cloudProvider)
|
|
258
|
+
throw new Error(`Teammate ${a.agentId} missing cloudProvider`);
|
|
259
|
+
const prov = resolveProvider(a.cloudProvider);
|
|
260
|
+
const ct = await prov.dispatch({
|
|
261
|
+
prompt: a.prompt, agent: a.agentType,
|
|
262
|
+
repo: a.cloudRepo ?? undefined, branch: a.cloudBranch ?? undefined,
|
|
263
|
+
model: a.model ?? undefined,
|
|
264
|
+
});
|
|
265
|
+
return { cloudSessionId: ct.id };
|
|
266
|
+
});
|
|
267
|
+
const intervalMs = Math.max(1000, Number.parseInt(opts.interval, 10) * 1000 || 8000);
|
|
268
|
+
const maxWaves = Math.max(1, Number.parseInt(opts.maxWaves, 10) || 1000);
|
|
269
|
+
const result = await runSupervisor(mgr, {
|
|
270
|
+
team, intervalMs, maxWaves,
|
|
271
|
+
onWave: (s) => {
|
|
272
|
+
const ts = s.timestamp.slice(11, 19);
|
|
273
|
+
if (opts.json) {
|
|
274
|
+
console.log(JSON.stringify({
|
|
275
|
+
wave: s.wave, ts, team: s.team,
|
|
276
|
+
launched: s.launched.map((l) => ({ agent_id: l.agentId, name: l.name, task_type: l.taskType })),
|
|
277
|
+
pending: s.pending, running: s.running, completed: s.completed, failed: s.failed,
|
|
278
|
+
}));
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const taskTypes = s.launched.map((l) => l.taskType ?? '?').join(',') || '-';
|
|
282
|
+
console.log(`[${ts}] wave ${s.wave} ${chalk.cyan(s.team)} ` +
|
|
283
|
+
`launched=${chalk.green(s.launched.length)} (${taskTypes}) ` +
|
|
284
|
+
`running=${chalk.yellow(s.running)} pending=${chalk.blue(s.pending)} ` +
|
|
285
|
+
`done=${chalk.green(s.completed)} failed=${s.failed > 0 ? chalk.red(s.failed) : '0'}`);
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
const elapsed = Math.floor(result.elapsed_ms / 1000);
|
|
289
|
+
if (result.stoppedBy === 'drained') {
|
|
290
|
+
console.log(chalk.green(`\nFactory drained in ${elapsed}s (${result.waves} waves).`));
|
|
291
|
+
}
|
|
292
|
+
else if (result.stoppedBy === 'max-waves') {
|
|
293
|
+
console.error(chalk.yellow(`\nHit --max-waves=${maxWaves}; stopping.`));
|
|
294
|
+
}
|
|
295
|
+
else if (result.stoppedBy === 'signal') {
|
|
296
|
+
console.error(chalk.yellow(`\nStopped by signal after ${result.waves} waves.`));
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
// `agents factory watch <team>` — tail the supervisor's log file written
|
|
300
|
+
// by a background `factory start`. Non-blocking view of a running factory.
|
|
301
|
+
factory
|
|
302
|
+
.command('watch <team>')
|
|
303
|
+
.description('Tail the supervisor log for a team started in the background. Press Ctrl-C to stop watching; the factory keeps running.')
|
|
304
|
+
.action(async (team) => {
|
|
305
|
+
const logPath = supervisorLogPath(team);
|
|
306
|
+
if (!fs.existsSync(logPath)) {
|
|
307
|
+
die(`No supervisor log at ${logPath}. Start one with: agents factory start "<brief>" --team ${team} --detach`);
|
|
308
|
+
}
|
|
309
|
+
// Use tail -F so we survive log rotation and missing files.
|
|
310
|
+
const tailProc = spawn('tail', ['-F', '-n', '200', logPath], { stdio: 'inherit' });
|
|
311
|
+
const onSig = () => tailProc.kill('SIGTERM');
|
|
312
|
+
process.once('SIGINT', onSig);
|
|
313
|
+
process.once('SIGTERM', onSig);
|
|
314
|
+
});
|
|
315
|
+
// `agents factory config` — show or edit the factory config file.
|
|
316
|
+
// Thin CLI shim over readFactoryConfig/writeFactoryConfig; the settings
|
|
317
|
+
// panel uses the same API for visual editing.
|
|
318
|
+
factory
|
|
319
|
+
.command('config')
|
|
320
|
+
.description('Show or edit ~/.agents/factory/config.json (cloud provider priority, auto-detect repo, default planner agent).')
|
|
321
|
+
.option('--set-priority <providers>', 'Comma-separated priority list, e.g. "rush,codex,local"')
|
|
322
|
+
.option('--set-planner <agent>', 'Default planner agent: claude|codex|gemini|cursor|opencode')
|
|
323
|
+
.option('--set-auto-detect-repo <bool>', '"true" or "false" — whether rush auto-detects --repo from git remote')
|
|
324
|
+
.option('--set-interval <seconds>', 'Seconds between supervisor waves')
|
|
325
|
+
.option('--json', 'Output machine-readable JSON')
|
|
326
|
+
.action(async (opts) => {
|
|
327
|
+
const update = {};
|
|
328
|
+
if (opts.setPriority) {
|
|
329
|
+
update.cloud_priority = opts.setPriority.split(',').map((s) => s.trim());
|
|
330
|
+
}
|
|
331
|
+
if (opts.setPlanner) {
|
|
332
|
+
update.default_planner_agent = opts.setPlanner;
|
|
333
|
+
}
|
|
334
|
+
if (opts.setAutoDetectRepo !== undefined) {
|
|
335
|
+
update.auto_detect_repo = opts.setAutoDetectRepo === 'true';
|
|
336
|
+
}
|
|
337
|
+
if (opts.setInterval) {
|
|
338
|
+
const n = Number.parseInt(opts.setInterval, 10);
|
|
339
|
+
if (Number.isFinite(n) && n >= 1)
|
|
340
|
+
update.supervisor_interval_seconds = n;
|
|
341
|
+
}
|
|
342
|
+
const final = Object.keys(update).length > 0
|
|
343
|
+
? await writeFactoryConfig(update)
|
|
344
|
+
: await readFactoryConfig();
|
|
345
|
+
if (opts.json) {
|
|
346
|
+
console.log(JSON.stringify(final, null, 2));
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
console.log(chalk.bold('Factory config'));
|
|
350
|
+
console.log(` ${chalk.gray('cloud_priority ')} ${final.cloud_priority.join(' > ')}`);
|
|
351
|
+
console.log(` ${chalk.gray('default_planner_agent ')} ${final.default_planner_agent}`);
|
|
352
|
+
console.log(` ${chalk.gray('auto_detect_repo ')} ${final.auto_detect_repo}`);
|
|
353
|
+
console.log(` ${chalk.gray('supervisor_interval_s ')} ${final.supervisor_interval_seconds}`);
|
|
354
|
+
});
|
|
355
|
+
// `agents factory stop <team>` — kill the detached supervisor for this team.
|
|
356
|
+
// Teammate processes keep running; this only stops the wave dispatcher.
|
|
357
|
+
factory
|
|
358
|
+
.command('stop <team>')
|
|
359
|
+
.description("Stop a team's background supervisor loop. Running teammates keep running; new waves stop firing.")
|
|
360
|
+
.action((team) => {
|
|
361
|
+
const pidFile = supervisorPidPath(team);
|
|
362
|
+
if (!fs.existsSync(pidFile))
|
|
363
|
+
die(`No supervisor pid file for team '${team}'.`);
|
|
364
|
+
const pid = Number.parseInt(fs.readFileSync(pidFile, 'utf-8').trim(), 10);
|
|
365
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
366
|
+
die(`Invalid pid in ${pidFile}.`);
|
|
367
|
+
try {
|
|
368
|
+
process.kill(pid, 'SIGTERM');
|
|
369
|
+
console.log(chalk.green(`Sent SIGTERM to supervisor pid ${pid} for team ${team}.`));
|
|
370
|
+
fs.rmSync(pidFile, { force: true });
|
|
371
|
+
}
|
|
372
|
+
catch (err) {
|
|
373
|
+
if (err?.code === 'ESRCH') {
|
|
374
|
+
console.log(chalk.gray(`Supervisor pid ${pid} already gone; cleaning up pidfile.`));
|
|
375
|
+
fs.rmSync(pidFile, { force: true });
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
die(`Failed to stop supervisor: ${err.message}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
// `agents factory answer <team> <text>` — reply to the oldest input_required teammate.
|
|
383
|
+
factory
|
|
384
|
+
.command('answer <team> <text>')
|
|
385
|
+
.description("Answer an open question from a teammate — forwards the text to the oldest 'input_required' cloud task.")
|
|
386
|
+
.option('--json', 'Output machine-readable JSON')
|
|
387
|
+
.action(async (team, text, opts) => {
|
|
388
|
+
const mgr = new AgentManager();
|
|
389
|
+
const teammates = await mgr.listByTask(team);
|
|
390
|
+
// input_required is a cloud-task status, not a local AgentStatus. Detect
|
|
391
|
+
// via status string so we still work for non-cloud teams (if someone ever
|
|
392
|
+
// plumbs the same status through).
|
|
393
|
+
const waiting = teammates.filter((t) => t.status === 'input_required');
|
|
394
|
+
if (waiting.length === 0) {
|
|
395
|
+
die(`No teammates waiting on input in team '${team}'.`);
|
|
396
|
+
}
|
|
397
|
+
waiting.sort((a, b) => a.startedAt.getTime() - b.startedAt.getTime());
|
|
398
|
+
const target = waiting[0];
|
|
399
|
+
if (!target.cloudProvider || !target.cloudSessionId) {
|
|
400
|
+
die(`Teammate '${target.name ?? target.agentId}' is waiting on input but has no cloud session to message.`);
|
|
401
|
+
}
|
|
402
|
+
try {
|
|
403
|
+
const prov = resolveProvider(target.cloudProvider);
|
|
404
|
+
await prov.message(target.cloudSessionId, text);
|
|
405
|
+
}
|
|
406
|
+
catch (err) {
|
|
407
|
+
die(`Provider rejected the message: ${err.message}`);
|
|
408
|
+
}
|
|
409
|
+
if (opts.json) {
|
|
410
|
+
console.log(JSON.stringify({ ok: true, teammate: target.name ?? target.agentId }, null, 2));
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
console.log(chalk.green(`Replied to ${target.name ?? target.agentId.slice(0, 8)} on ${target.cloudProvider}.`));
|
|
414
|
+
});
|
|
415
|
+
// `agents factory evict <agent_id>`
|
|
416
|
+
//
|
|
417
|
+
// Designed to run from a Kubernetes pod's preStop hook. Flushes the local
|
|
418
|
+
// teammate state (session log, git diff, registry entry, note) to the
|
|
419
|
+
// configured Ledger backend so it survives SIGTERM.
|
|
420
|
+
factory
|
|
421
|
+
.command('evict <agent_id>')
|
|
422
|
+
.description("Pre-SIGTERM: flush this teammate's state to the Team Ledger so other teammates can still read it.")
|
|
423
|
+
.option('--reason <text>', 'Short note describing why eviction happened', 'pod eviction')
|
|
424
|
+
.option('--json', 'Output machine-readable JSON')
|
|
425
|
+
.action(async (agentId, opts) => {
|
|
426
|
+
const mgr = new AgentManager();
|
|
427
|
+
const agent = await mgr.get(agentId);
|
|
428
|
+
if (!agent)
|
|
429
|
+
die(`No teammate with id '${agentId}'`);
|
|
430
|
+
const ledger = resolveLedger();
|
|
431
|
+
const snap = await agent.toSnapshot();
|
|
432
|
+
try {
|
|
433
|
+
await syncOnEviction(snap, ledger);
|
|
434
|
+
}
|
|
435
|
+
catch (err) {
|
|
436
|
+
die(`Eviction sync failed: ${err.message}`);
|
|
437
|
+
}
|
|
438
|
+
if (opts.json) {
|
|
439
|
+
console.log(JSON.stringify({ ok: true, agent_id: agentId, ledger: ledger.kind, reason: opts.reason }, null, 2));
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
console.log(chalk.green(`Flushed ${agentId.slice(0, 8)} to ${ledger.kind} ledger (${opts.reason}).`));
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/commands/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/fork.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
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
11
|
//# sourceMappingURL=fork.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/commands/fork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/commands/fork.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I1D"}
|
package/dist/commands/fork.js
CHANGED
|
@@ -1,12 +1,45 @@
|
|
|
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';
|
|
12
|
+
import { DEFAULT_SYSTEM_REPO, systemRepoSlug } from '../lib/types.js';
|
|
5
13
|
import { isPromptCancelled } from './utils.js';
|
|
14
|
+
/** Register the `agents fork` command. */
|
|
6
15
|
export function registerForkCommand(program) {
|
|
7
16
|
program
|
|
8
17
|
.command('fork')
|
|
9
|
-
.description('
|
|
18
|
+
.description('Copy the default config repo to your own GitHub so you can push changes. Runs once after init.')
|
|
19
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
# Fork the default repo to your GitHub account
|
|
22
|
+
agents fork
|
|
23
|
+
|
|
24
|
+
When to use:
|
|
25
|
+
- You initialized with 'agents init' using the default config
|
|
26
|
+
- You've customized commands, skills, or settings
|
|
27
|
+
- You want to save your changes to your own GitHub repo
|
|
28
|
+
|
|
29
|
+
What it does:
|
|
30
|
+
1. Creates a fork of the default repo under your GitHub account (gh:yourname/.agents)
|
|
31
|
+
2. Reconfigures remotes: origin -> your fork, upstream -> default repo
|
|
32
|
+
3. Commits any local changes you've made
|
|
33
|
+
4. Pushes everything to your new fork
|
|
34
|
+
|
|
35
|
+
After forking:
|
|
36
|
+
- 'agents push' sends your changes to your fork
|
|
37
|
+
- 'agents pull --upstream' pulls updates from the default repo
|
|
38
|
+
|
|
39
|
+
Requirements:
|
|
40
|
+
- GitHub CLI authenticated (run 'gh auth login' if needed)
|
|
41
|
+
- ~/.agents/ must be tracking the default repo (not already forked)
|
|
42
|
+
`)
|
|
10
43
|
.action(async () => {
|
|
11
44
|
try {
|
|
12
45
|
const agentsDir = getAgentsDir();
|
|
@@ -44,10 +77,11 @@ export function registerForkCommand(program) {
|
|
|
44
77
|
const { exec } = await import('child_process');
|
|
45
78
|
const { promisify } = await import('util');
|
|
46
79
|
const execAsync = promisify(exec);
|
|
80
|
+
const repoSlug = systemRepoSlug(DEFAULT_SYSTEM_REPO);
|
|
47
81
|
try {
|
|
48
82
|
// gh repo fork creates a fork and optionally clones it
|
|
49
83
|
// We just want to create the fork on GitHub, not clone
|
|
50
|
-
await execAsync(`gh repo fork
|
|
84
|
+
await execAsync(`gh repo fork ${repoSlug} --clone=false`);
|
|
51
85
|
forkSpinner.succeed(`Forked to ${username}/.agents`);
|
|
52
86
|
}
|
|
53
87
|
catch (err) {
|
|
@@ -64,12 +98,12 @@ export function registerForkCommand(program) {
|
|
|
64
98
|
// Reconfigure remotes
|
|
65
99
|
const remoteSpinner = ora('Reconfiguring remotes...').start();
|
|
66
100
|
// Set current origin as upstream
|
|
67
|
-
await setUpstreamRemote(agentsDir,
|
|
101
|
+
await setUpstreamRemote(agentsDir, `https://github.com/${repoSlug}.git`);
|
|
68
102
|
// Set user's fork as new origin
|
|
69
103
|
await setRemoteUrl(agentsDir, `https://github.com/${username}/.agents.git`);
|
|
70
104
|
remoteSpinner.succeed('Reconfigured remotes');
|
|
71
105
|
console.log(chalk.gray(` origin -> ${username}/.agents`));
|
|
72
|
-
console.log(chalk.gray(` upstream ->
|
|
106
|
+
console.log(chalk.gray(` upstream -> ${repoSlug}`));
|
|
73
107
|
// Commit any local changes
|
|
74
108
|
if (await hasLocalChanges(agentsDir)) {
|
|
75
109
|
const commitSpinner = ora('Committing local changes...').start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/commands/fork.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/commands/fork.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/hooks.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
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
12
|
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDzC,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2tB5D"}
|