swarm-engine 1.0.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/AGENTS.md +72 -0
- package/CLAUDE.md +89 -0
- package/LICENSE +21 -0
- package/README.md +235 -0
- package/agents/accessibility-reviewer.md +118 -0
- package/agents/api-contract-reviewer.md +99 -0
- package/agents/concurrency-reviewer.md +111 -0
- package/agents/data-integrity-reviewer.md +103 -0
- package/agents/debugger.md +99 -0
- package/agents/dependency-reviewer.md +115 -0
- package/agents/devils-advocate.md +94 -0
- package/agents/documentation-reviewer.md +114 -0
- package/agents/documenter.md +78 -0
- package/agents/error-handling-reviewer.md +113 -0
- package/agents/grounding.md +99 -0
- package/agents/guardian.md +87 -0
- package/agents/implementer.md +141 -0
- package/agents/integrator.md +95 -0
- package/agents/judge.md +79 -0
- package/agents/librarian.md +90 -0
- package/agents/orchestrator.md +331 -0
- package/agents/performance-reviewer.md +93 -0
- package/agents/planner.md +106 -0
- package/agents/refactorer.md +92 -0
- package/agents/researcher.md +97 -0
- package/agents/reviewer.md +117 -0
- package/agents/security-reviewer.md +107 -0
- package/agents/sentinel.md +92 -0
- package/agents/tester.md +93 -0
- package/agents/testing-reviewer.md +112 -0
- package/commands/diff-review.md +64 -0
- package/commands/fix-pr.md +78 -0
- package/commands/red-team.md +82 -0
- package/commands/research.md +59 -0
- package/commands/resume.md +80 -0
- package/commands/review-cycle.md +123 -0
- package/commands/swarm-setup.md +28 -0
- package/commands/swarm.md +126 -0
- package/commands/tdd.md +91 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +3 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/acp.d.ts +3 -0
- package/dist/cli/commands/acp.d.ts.map +1 -0
- package/dist/cli/commands/acp.js +29 -0
- package/dist/cli/commands/acp.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +3 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +344 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/backends.d.ts +3 -0
- package/dist/cli/commands/backends.d.ts.map +1 -0
- package/dist/cli/commands/backends.js +22 -0
- package/dist/cli/commands/backends.js.map +1 -0
- package/dist/cli/commands/completions.d.ts +3 -0
- package/dist/cli/commands/completions.d.ts.map +1 -0
- package/dist/cli/commands/completions.js +85 -0
- package/dist/cli/commands/completions.js.map +1 -0
- package/dist/cli/commands/compound.d.ts +3 -0
- package/dist/cli/commands/compound.d.ts.map +1 -0
- package/dist/cli/commands/compound.js +119 -0
- package/dist/cli/commands/compound.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +3 -0
- package/dist/cli/commands/configure.d.ts.map +1 -0
- package/dist/cli/commands/configure.js +151 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/convert.d.ts +15 -0
- package/dist/cli/commands/convert.d.ts.map +1 -0
- package/dist/cli/commands/convert.js +218 -0
- package/dist/cli/commands/convert.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +96 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +154 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/learn.d.ts +3 -0
- package/dist/cli/commands/learn.d.ts.map +1 -0
- package/dist/cli/commands/learn.js +163 -0
- package/dist/cli/commands/learn.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +89 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +3 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +134 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/orchestrate.d.ts +3 -0
- package/dist/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/cli/commands/orchestrate.js +237 -0
- package/dist/cli/commands/orchestrate.js.map +1 -0
- package/dist/cli/commands/patterns.d.ts +3 -0
- package/dist/cli/commands/patterns.d.ts.map +1 -0
- package/dist/cli/commands/patterns.js +25 -0
- package/dist/cli/commands/patterns.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +77 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +3 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +124 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +3 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +55 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +78 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/share.d.ts +3 -0
- package/dist/cli/commands/share.d.ts.map +1 -0
- package/dist/cli/commands/share.js +34 -0
- package/dist/cli/commands/share.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +148 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/template.d.ts +3 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +213 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/commands/vault.d.ts +3 -0
- package/dist/cli/commands/vault.d.ts.map +1 -0
- package/dist/cli/commands/vault.js +402 -0
- package/dist/cli/commands/vault.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +3 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +38 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +19 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +179 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +118 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/checkpoint.d.ts +35 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +80 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/event-bus.d.ts +41 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +115 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/lifecycle.d.ts +30 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +72 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/patterns.d.ts +43 -0
- package/dist/core/patterns.d.ts.map +1 -0
- package/dist/core/patterns.js +372 -0
- package/dist/core/patterns.js.map +1 -0
- package/dist/core/permissions.d.ts +40 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +113 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/registry.d.ts +80 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +308 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/snapshots.d.ts +20 -0
- package/dist/core/snapshots.d.ts.map +1 -0
- package/dist/core/snapshots.js +73 -0
- package/dist/core/snapshots.js.map +1 -0
- package/dist/core/types.d.ts +168 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +33 -0
- package/dist/core/types.js.map +1 -0
- package/dist/hooks/cli.d.ts +11 -0
- package/dist/hooks/cli.d.ts.map +1 -0
- package/dist/hooks/cli.js +32 -0
- package/dist/hooks/cli.js.map +1 -0
- package/dist/hooks/index.d.ts +23 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +58 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +105 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +298 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/schema.d.ts +6 -0
- package/dist/memory/schema.d.ts.map +1 -0
- package/dist/memory/schema.js +71 -0
- package/dist/memory/schema.js.map +1 -0
- package/dist/plugin/index.d.ts +6 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +182 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/runtime/acp.d.ts +41 -0
- package/dist/runtime/acp.d.ts.map +1 -0
- package/dist/runtime/acp.js +137 -0
- package/dist/runtime/acp.js.map +1 -0
- package/dist/runtime/adaptive.d.ts +34 -0
- package/dist/runtime/adaptive.d.ts.map +1 -0
- package/dist/runtime/adaptive.js +229 -0
- package/dist/runtime/adaptive.js.map +1 -0
- package/dist/runtime/autonomy.d.ts +21 -0
- package/dist/runtime/autonomy.d.ts.map +1 -0
- package/dist/runtime/autonomy.js +74 -0
- package/dist/runtime/autonomy.js.map +1 -0
- package/dist/runtime/backends/claude.d.ts +9 -0
- package/dist/runtime/backends/claude.d.ts.map +1 -0
- package/dist/runtime/backends/claude.js +134 -0
- package/dist/runtime/backends/claude.js.map +1 -0
- package/dist/runtime/backends/codex.d.ts +9 -0
- package/dist/runtime/backends/codex.d.ts.map +1 -0
- package/dist/runtime/backends/codex.js +132 -0
- package/dist/runtime/backends/codex.js.map +1 -0
- package/dist/runtime/backends/gemini.d.ts +9 -0
- package/dist/runtime/backends/gemini.d.ts.map +1 -0
- package/dist/runtime/backends/gemini.js +103 -0
- package/dist/runtime/backends/gemini.js.map +1 -0
- package/dist/runtime/backends/index.d.ts +17 -0
- package/dist/runtime/backends/index.d.ts.map +1 -0
- package/dist/runtime/backends/index.js +39 -0
- package/dist/runtime/backends/index.js.map +1 -0
- package/dist/runtime/backends/mock.d.ts +21 -0
- package/dist/runtime/backends/mock.d.ts.map +1 -0
- package/dist/runtime/backends/mock.js +46 -0
- package/dist/runtime/backends/mock.js.map +1 -0
- package/dist/runtime/backends/types.d.ts +34 -0
- package/dist/runtime/backends/types.d.ts.map +1 -0
- package/dist/runtime/backends/types.js +2 -0
- package/dist/runtime/backends/types.js.map +1 -0
- package/dist/runtime/backends/vercel-ai.d.ts +14 -0
- package/dist/runtime/backends/vercel-ai.d.ts.map +1 -0
- package/dist/runtime/backends/vercel-ai.js +137 -0
- package/dist/runtime/backends/vercel-ai.js.map +1 -0
- package/dist/runtime/cache-optimizer.d.ts +37 -0
- package/dist/runtime/cache-optimizer.d.ts.map +1 -0
- package/dist/runtime/cache-optimizer.js +54 -0
- package/dist/runtime/cache-optimizer.js.map +1 -0
- package/dist/runtime/cascade.d.ts +26 -0
- package/dist/runtime/cascade.d.ts.map +1 -0
- package/dist/runtime/cascade.js +54 -0
- package/dist/runtime/cascade.js.map +1 -0
- package/dist/runtime/chunker.d.ts +36 -0
- package/dist/runtime/chunker.d.ts.map +1 -0
- package/dist/runtime/chunker.js +210 -0
- package/dist/runtime/chunker.js.map +1 -0
- package/dist/runtime/compaction.d.ts +22 -0
- package/dist/runtime/compaction.d.ts.map +1 -0
- package/dist/runtime/compaction.js +36 -0
- package/dist/runtime/compaction.js.map +1 -0
- package/dist/runtime/compounder.d.ts +66 -0
- package/dist/runtime/compounder.d.ts.map +1 -0
- package/dist/runtime/compounder.js +276 -0
- package/dist/runtime/compounder.js.map +1 -0
- package/dist/runtime/cost-model.d.ts +24 -0
- package/dist/runtime/cost-model.d.ts.map +1 -0
- package/dist/runtime/cost-model.js +120 -0
- package/dist/runtime/cost-model.js.map +1 -0
- package/dist/runtime/distiller.d.ts +21 -0
- package/dist/runtime/distiller.d.ts.map +1 -0
- package/dist/runtime/distiller.js +70 -0
- package/dist/runtime/distiller.js.map +1 -0
- package/dist/runtime/engine.d.ts +123 -0
- package/dist/runtime/engine.d.ts.map +1 -0
- package/dist/runtime/engine.js +969 -0
- package/dist/runtime/engine.js.map +1 -0
- package/dist/runtime/executor.d.ts +71 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +283 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/heuristics.d.ts +33 -0
- package/dist/runtime/heuristics.d.ts.map +1 -0
- package/dist/runtime/heuristics.js +188 -0
- package/dist/runtime/heuristics.js.map +1 -0
- package/dist/runtime/living-spec.d.ts +34 -0
- package/dist/runtime/living-spec.d.ts.map +1 -0
- package/dist/runtime/living-spec.js +91 -0
- package/dist/runtime/living-spec.js.map +1 -0
- package/dist/runtime/lsp.d.ts +50 -0
- package/dist/runtime/lsp.d.ts.map +1 -0
- package/dist/runtime/lsp.js +110 -0
- package/dist/runtime/lsp.js.map +1 -0
- package/dist/runtime/mcp.d.ts +27 -0
- package/dist/runtime/mcp.d.ts.map +1 -0
- package/dist/runtime/mcp.js +154 -0
- package/dist/runtime/mcp.js.map +1 -0
- package/dist/runtime/model-router.d.ts +22 -0
- package/dist/runtime/model-router.d.ts.map +1 -0
- package/dist/runtime/model-router.js +94 -0
- package/dist/runtime/model-router.js.map +1 -0
- package/dist/runtime/panes.d.ts +76 -0
- package/dist/runtime/panes.d.ts.map +1 -0
- package/dist/runtime/panes.js +279 -0
- package/dist/runtime/panes.js.map +1 -0
- package/dist/runtime/plan-search.d.ts +41 -0
- package/dist/runtime/plan-search.d.ts.map +1 -0
- package/dist/runtime/plan-search.js +140 -0
- package/dist/runtime/plan-search.js.map +1 -0
- package/dist/runtime/plugins.d.ts +59 -0
- package/dist/runtime/plugins.d.ts.map +1 -0
- package/dist/runtime/plugins.js +121 -0
- package/dist/runtime/plugins.js.map +1 -0
- package/dist/runtime/reflexion.d.ts +22 -0
- package/dist/runtime/reflexion.d.ts.map +1 -0
- package/dist/runtime/reflexion.js +85 -0
- package/dist/runtime/reflexion.js.map +1 -0
- package/dist/runtime/review-schema.d.ts +75 -0
- package/dist/runtime/review-schema.d.ts.map +1 -0
- package/dist/runtime/review-schema.js +223 -0
- package/dist/runtime/review-schema.js.map +1 -0
- package/dist/runtime/rewriter.d.ts +8 -0
- package/dist/runtime/rewriter.d.ts.map +1 -0
- package/dist/runtime/rewriter.js +81 -0
- package/dist/runtime/rewriter.js.map +1 -0
- package/dist/runtime/sharing.d.ts +15 -0
- package/dist/runtime/sharing.d.ts.map +1 -0
- package/dist/runtime/sharing.js +48 -0
- package/dist/runtime/sharing.js.map +1 -0
- package/dist/runtime/stats.d.ts +53 -0
- package/dist/runtime/stats.d.ts.map +1 -0
- package/dist/runtime/stats.js +160 -0
- package/dist/runtime/stats.js.map +1 -0
- package/dist/runtime/templates.d.ts +77 -0
- package/dist/runtime/templates.d.ts.map +1 -0
- package/dist/runtime/templates.js +221 -0
- package/dist/runtime/templates.js.map +1 -0
- package/dist/runtime/traces.d.ts +60 -0
- package/dist/runtime/traces.d.ts.map +1 -0
- package/dist/runtime/traces.js +166 -0
- package/dist/runtime/traces.js.map +1 -0
- package/dist/runtime/verifier.d.ts +54 -0
- package/dist/runtime/verifier.d.ts.map +1 -0
- package/dist/runtime/verifier.js +172 -0
- package/dist/runtime/verifier.js.map +1 -0
- package/dist/runtime/worktree.d.ts +24 -0
- package/dist/runtime/worktree.d.ts.map +1 -0
- package/dist/runtime/worktree.js +82 -0
- package/dist/runtime/worktree.js.map +1 -0
- package/dist/tui/dashboard.d.ts +65 -0
- package/dist/tui/dashboard.d.ts.map +1 -0
- package/dist/tui/dashboard.js +496 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/dist/tui/progress.d.ts +32 -0
- package/dist/tui/progress.d.ts.map +1 -0
- package/dist/tui/progress.js +257 -0
- package/dist/tui/progress.js.map +1 -0
- package/dist/tui/renderer.d.ts +72 -0
- package/dist/tui/renderer.d.ts.map +1 -0
- package/dist/tui/renderer.js +205 -0
- package/dist/tui/renderer.js.map +1 -0
- package/dist/utils/compact-format.d.ts +35 -0
- package/dist/utils/compact-format.d.ts.map +1 -0
- package/dist/utils/compact-format.js +106 -0
- package/dist/utils/compact-format.js.map +1 -0
- package/dist/utils/config.d.ts +73 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +70 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/env.d.ts +6 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +28 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +120 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output.d.ts +10 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +26 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +16 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/project-config.d.ts +18 -0
- package/dist/utils/project-config.d.ts.map +1 -0
- package/dist/utils/project-config.js +46 -0
- package/dist/utils/project-config.js.map +1 -0
- package/dist/utils/redact.d.ts +5 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +25 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/schemas.d.ts +109 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +63 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/terminal.d.ts +33 -0
- package/dist/utils/terminal.d.ts.map +1 -0
- package/dist/utils/terminal.js +82 -0
- package/dist/utils/terminal.js.map +1 -0
- package/dist/utils/tokens.d.ts +9 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +11 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +71 -0
- package/skills/design-system/SKILL.md +195 -0
- package/skills/orchestration-patterns/SKILL.md +81 -0
- package/skills/orchestration-patterns/examples/example-workflows.md +290 -0
- package/skills/orchestration-patterns/references/adversarial.md +51 -0
- package/skills/orchestration-patterns/references/batch.md +63 -0
- package/skills/orchestration-patterns/references/chaos.md +43 -0
- package/skills/orchestration-patterns/references/competitive.md +84 -0
- package/skills/orchestration-patterns/references/debate.md +44 -0
- package/skills/orchestration-patterns/references/emergence.md +50 -0
- package/skills/orchestration-patterns/references/fan-out-fan-in.md +74 -0
- package/skills/orchestration-patterns/references/iterative.md +99 -0
- package/skills/orchestration-patterns/references/pipeline.md +72 -0
- package/skills/swarm-output-style/SKILL.md +85 -0
- package/templates/add-endpoint.yml +44 -0
- package/templates/add-feature.yml +30 -0
- package/templates/agent-template.md +73 -0
- package/templates/bug-fix.yml +31 -0
- package/templates/explore.yml +21 -0
- package/templates/fix-pr.yml +30 -0
- package/templates/migration.yml +36 -0
- package/templates/refactor.yml +35 -0
- package/templates/security-audit.yml +27 -0
- package/templates/workflow-template.md +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panes.js","sourceRoot":"","sources":["../../src/runtime/panes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ExecutionPlan } from '../core/types.js';
|
|
2
|
+
import { CostModel, PlanCost } from './cost-model.js';
|
|
3
|
+
import { TraceStore } from './traces.js';
|
|
4
|
+
export interface PlanCandidate {
|
|
5
|
+
plan: ExecutionPlan;
|
|
6
|
+
cost: PlanCost;
|
|
7
|
+
score: number;
|
|
8
|
+
source: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SearchConfig {
|
|
11
|
+
maxCandidates: number;
|
|
12
|
+
constraints?: {
|
|
13
|
+
maxCostUsd?: number;
|
|
14
|
+
maxDurationMs?: number;
|
|
15
|
+
minQuality?: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Search over candidate execution plans and return ranked alternatives.
|
|
20
|
+
* Inspired by MCTS but simplified for orchestration-level decisions:
|
|
21
|
+
* - Enumerate candidates (pattern × model tier permutations)
|
|
22
|
+
* - Score each with CostModel + trace-informed adjustments
|
|
23
|
+
* - Return ranked list
|
|
24
|
+
*/
|
|
25
|
+
export declare class PlanSearcher {
|
|
26
|
+
private costModel;
|
|
27
|
+
private traceStore;
|
|
28
|
+
constructor(costModel: CostModel, traceStore?: TraceStore);
|
|
29
|
+
/**
|
|
30
|
+
* Search for the best plan among candidates.
|
|
31
|
+
*/
|
|
32
|
+
search(basePlan: ExecutionPlan, config?: SearchConfig): PlanCandidate[];
|
|
33
|
+
/**
|
|
34
|
+
* Get the best plan from search results.
|
|
35
|
+
*/
|
|
36
|
+
best(basePlan: ExecutionPlan, config?: SearchConfig): PlanCandidate;
|
|
37
|
+
private withModelOverride;
|
|
38
|
+
private withPhaseModels;
|
|
39
|
+
private traceInformedPlan;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=plan-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-search.d.ts","sourceRoot":"","sources":["../../src/runtime/plan-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAoB;gBAE1B,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU;IAKzD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAE,YAAmC,GAAG,aAAa,EAAE;IAmE7F;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa;IAOnE,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;CA0B1B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { rewritePlan } from './rewriter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Search over candidate execution plans and return ranked alternatives.
|
|
4
|
+
* Inspired by MCTS but simplified for orchestration-level decisions:
|
|
5
|
+
* - Enumerate candidates (pattern × model tier permutations)
|
|
6
|
+
* - Score each with CostModel + trace-informed adjustments
|
|
7
|
+
* - Return ranked list
|
|
8
|
+
*/
|
|
9
|
+
export class PlanSearcher {
|
|
10
|
+
costModel;
|
|
11
|
+
traceStore;
|
|
12
|
+
constructor(costModel, traceStore) {
|
|
13
|
+
this.costModel = costModel;
|
|
14
|
+
this.traceStore = traceStore ?? null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Search for the best plan among candidates.
|
|
18
|
+
*/
|
|
19
|
+
search(basePlan, config = { maxCandidates: 5 }) {
|
|
20
|
+
const candidates = [];
|
|
21
|
+
// Candidate 1: the base plan as-is
|
|
22
|
+
const baseCost = this.costModel.estimate(basePlan);
|
|
23
|
+
candidates.push({
|
|
24
|
+
plan: basePlan,
|
|
25
|
+
cost: baseCost,
|
|
26
|
+
score: this.costModel.score(basePlan, config.constraints),
|
|
27
|
+
source: 'base',
|
|
28
|
+
});
|
|
29
|
+
// Candidate 2: all-sonnet variant (cheaper)
|
|
30
|
+
const sonnetPlan = this.withModelOverride(basePlan, 'sonnet');
|
|
31
|
+
if (sonnetPlan) {
|
|
32
|
+
const { plan: rewritten } = rewritePlan(sonnetPlan);
|
|
33
|
+
candidates.push({
|
|
34
|
+
plan: rewritten,
|
|
35
|
+
cost: this.costModel.estimate(rewritten),
|
|
36
|
+
score: this.costModel.score(rewritten, config.constraints),
|
|
37
|
+
source: 'all-sonnet',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// Candidate 3: all-opus variant (highest quality)
|
|
41
|
+
const opusPlan = this.withModelOverride(basePlan, 'opus');
|
|
42
|
+
if (opusPlan) {
|
|
43
|
+
const { plan: rewritten } = rewritePlan(opusPlan);
|
|
44
|
+
candidates.push({
|
|
45
|
+
plan: rewritten,
|
|
46
|
+
cost: this.costModel.estimate(rewritten),
|
|
47
|
+
score: this.costModel.score(rewritten, config.constraints),
|
|
48
|
+
source: 'all-opus',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// Candidate 4: research-sonnet + implement-opus (hybrid cost/quality)
|
|
52
|
+
const hybridPlan = this.withPhaseModels(basePlan, {
|
|
53
|
+
research: 'sonnet',
|
|
54
|
+
implement: 'opus',
|
|
55
|
+
review: 'sonnet',
|
|
56
|
+
});
|
|
57
|
+
if (hybridPlan) {
|
|
58
|
+
const { plan: rewritten } = rewritePlan(hybridPlan);
|
|
59
|
+
candidates.push({
|
|
60
|
+
plan: rewritten,
|
|
61
|
+
cost: this.costModel.estimate(rewritten),
|
|
62
|
+
score: this.costModel.score(rewritten, config.constraints),
|
|
63
|
+
source: 'hybrid-model-mix',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// Candidate 5: trace-informed (use the pattern from the most successful similar trace)
|
|
67
|
+
if (this.traceStore) {
|
|
68
|
+
const tracePlan = this.traceInformedPlan(basePlan);
|
|
69
|
+
if (tracePlan) {
|
|
70
|
+
candidates.push(tracePlan);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Sort by score (lower is better) and deduplicate
|
|
74
|
+
candidates.sort((a, b) => a.score - b.score);
|
|
75
|
+
// Limit candidates
|
|
76
|
+
return candidates.slice(0, config.maxCandidates);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the best plan from search results.
|
|
80
|
+
*/
|
|
81
|
+
best(basePlan, config) {
|
|
82
|
+
const candidates = this.search(basePlan, config);
|
|
83
|
+
return candidates[0]; // search always returns at least the base plan
|
|
84
|
+
}
|
|
85
|
+
// ─── Candidate Generators ─────────────────────────────────
|
|
86
|
+
withModelOverride(plan, model) {
|
|
87
|
+
const clone = structuredClone(plan);
|
|
88
|
+
let changed = false;
|
|
89
|
+
for (const phase of clone.phases) {
|
|
90
|
+
for (const agent of phase.agents) {
|
|
91
|
+
if (agent.model !== model) {
|
|
92
|
+
agent.model = model;
|
|
93
|
+
changed = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return changed ? clone : null;
|
|
98
|
+
}
|
|
99
|
+
withPhaseModels(plan, phaseModels) {
|
|
100
|
+
const clone = structuredClone(plan);
|
|
101
|
+
let changed = false;
|
|
102
|
+
for (const phase of clone.phases) {
|
|
103
|
+
const targetModel = Object.entries(phaseModels).find(([key]) => phase.name.includes(key))?.[1];
|
|
104
|
+
if (targetModel) {
|
|
105
|
+
for (const agent of phase.agents) {
|
|
106
|
+
if (agent.model !== targetModel) {
|
|
107
|
+
agent.model = targetModel;
|
|
108
|
+
changed = true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return changed ? clone : null;
|
|
114
|
+
}
|
|
115
|
+
traceInformedPlan(basePlan) {
|
|
116
|
+
if (!this.traceStore)
|
|
117
|
+
return null;
|
|
118
|
+
const similar = this.traceStore.findSimilar(basePlan.task, 5);
|
|
119
|
+
const successful = similar.filter(t => t.status === 'completed');
|
|
120
|
+
if (successful.length === 0)
|
|
121
|
+
return null;
|
|
122
|
+
// Find the most efficient successful trace
|
|
123
|
+
const best = successful.sort((a, b) => {
|
|
124
|
+
// Score by efficiency: lower tokens + shorter duration = better
|
|
125
|
+
return (a.totalTokens + a.durationMs / 100) - (b.totalTokens + b.durationMs / 100);
|
|
126
|
+
})[0];
|
|
127
|
+
// If the best trace used a different pattern, that's interesting but we can't change pattern here
|
|
128
|
+
// Instead, copy model assignments from the trace's phases to our plan
|
|
129
|
+
const clone = structuredClone(basePlan);
|
|
130
|
+
// We don't have model info in traces currently, so just note this as a trace-backed plan
|
|
131
|
+
const cost = this.costModel.estimate(clone);
|
|
132
|
+
return {
|
|
133
|
+
plan: clone,
|
|
134
|
+
cost,
|
|
135
|
+
score: this.costModel.score(clone) * 0.9, // 10% bonus for trace-informed plans
|
|
136
|
+
source: `trace-informed (${best.pattern}, ${best.totalTokens} tokens)`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=plan-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-search.js","sourceRoot":"","sources":["../../src/runtime/plan-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EventBus } from '../core/event-bus.js';
|
|
2
|
+
export interface PluginTool {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema?: Record<string, unknown>;
|
|
6
|
+
execute(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface PluginHooks {
|
|
9
|
+
beforeToolUse?: (context: {
|
|
10
|
+
tool: string;
|
|
11
|
+
agentName: string;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
afterToolUse?: (context: {
|
|
14
|
+
tool: string;
|
|
15
|
+
agentName: string;
|
|
16
|
+
result: unknown;
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
onPhaseComplete?: (context: {
|
|
19
|
+
phaseName: string;
|
|
20
|
+
status: string;
|
|
21
|
+
agentCount: number;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
onOrchestrationComplete?: (context: {
|
|
24
|
+
pattern: string;
|
|
25
|
+
status: string;
|
|
26
|
+
durationMs: number;
|
|
27
|
+
}) => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export interface SwarmPlugin {
|
|
30
|
+
name: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
tools?: PluginTool[];
|
|
34
|
+
hooks?: PluginHooks;
|
|
35
|
+
onLoad?(): Promise<void>;
|
|
36
|
+
onUnload?(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export interface PluginManifest {
|
|
39
|
+
name: string;
|
|
40
|
+
version: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
entry: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class PluginLoader {
|
|
45
|
+
private plugins;
|
|
46
|
+
private tools;
|
|
47
|
+
private bus;
|
|
48
|
+
constructor(bus?: EventBus);
|
|
49
|
+
loadAll(cwd?: string): Promise<number>;
|
|
50
|
+
loadDir(dir: string): Promise<number>;
|
|
51
|
+
private reg;
|
|
52
|
+
getAllTools(): PluginTool[];
|
|
53
|
+
listPlugins(): SwarmPlugin[];
|
|
54
|
+
callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
55
|
+
/** Wire plugin lifecycle hooks to the event bus */
|
|
56
|
+
wireHooks(bus: EventBus): void;
|
|
57
|
+
unloadAll(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/runtime/plugins.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAAE;AAEnK,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/G;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAAE;AACvL,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;CAAE;AAEvG,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,GAAG,CAAkB;gBACjB,GAAG,CAAC,EAAE,QAAQ;IAEpB,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB7B,GAAG;IAOjB,WAAW,IAAI,UAAU,EAAE;IAC3B,WAAW,IAAI,WAAW,EAAE;IAEtB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7E,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IA4CxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAIjC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
2
|
+
import { join, extname, resolve } from 'path';
|
|
3
|
+
import { pathToFileURL } from 'url';
|
|
4
|
+
export class PluginLoader {
|
|
5
|
+
plugins = new Map();
|
|
6
|
+
tools = new Map();
|
|
7
|
+
bus;
|
|
8
|
+
constructor(bus) { this.bus = bus ?? null; }
|
|
9
|
+
async loadAll(cwd) {
|
|
10
|
+
let n = 0;
|
|
11
|
+
n += await this.loadDir(join(cwd ?? process.cwd(), '.swarm', 'plugins'));
|
|
12
|
+
n += await this.loadDir(join(process.env.HOME ?? '', '.swarm', 'plugins'));
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
15
|
+
async loadDir(dir) {
|
|
16
|
+
if (!existsSync(dir))
|
|
17
|
+
return 0;
|
|
18
|
+
let n = 0;
|
|
19
|
+
for (const e of readdirSync(dir, { withFileTypes: true })) {
|
|
20
|
+
try {
|
|
21
|
+
if (e.isFile() && ['.ts', '.js'].includes(extname(e.name))) {
|
|
22
|
+
const mod = await import(pathToFileURL(join(dir, e.name)).href);
|
|
23
|
+
await this.reg(mod.default ?? mod);
|
|
24
|
+
n++;
|
|
25
|
+
}
|
|
26
|
+
else if (e.isDirectory() && existsSync(join(dir, e.name, 'plugin.json'))) {
|
|
27
|
+
const m = JSON.parse(readFileSync(join(dir, e.name, 'plugin.json'), 'utf-8'));
|
|
28
|
+
const entryPath = resolve(join(dir, e.name, m.entry));
|
|
29
|
+
const pluginRoot = resolve(join(dir, e.name));
|
|
30
|
+
if (!entryPath.startsWith(pluginRoot + '/') && entryPath !== pluginRoot) {
|
|
31
|
+
throw new Error(`Plugin entry path escapes plugin directory: ${m.entry}`);
|
|
32
|
+
}
|
|
33
|
+
const mod = await import(pathToFileURL(entryPath).href);
|
|
34
|
+
const p = mod.default ?? mod;
|
|
35
|
+
p.name = m.name;
|
|
36
|
+
p.version = m.version;
|
|
37
|
+
await this.reg(p);
|
|
38
|
+
n++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
this.bus?.emit('system:warning', { message: `Plugin failed: ${e.name}` }, 'plugins');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return n;
|
|
46
|
+
}
|
|
47
|
+
async reg(plugin) {
|
|
48
|
+
if (!plugin.name)
|
|
49
|
+
throw new Error('Plugin needs name');
|
|
50
|
+
if (plugin.onLoad)
|
|
51
|
+
await plugin.onLoad();
|
|
52
|
+
if (plugin.tools)
|
|
53
|
+
for (const t of plugin.tools)
|
|
54
|
+
this.tools.set(`${plugin.name}:${t.name}`, t);
|
|
55
|
+
this.plugins.set(plugin.name, plugin);
|
|
56
|
+
}
|
|
57
|
+
getAllTools() { return [...this.tools.values()]; }
|
|
58
|
+
listPlugins() { return [...this.plugins.values()]; }
|
|
59
|
+
async callTool(name, args) {
|
|
60
|
+
const t = this.tools.get(name);
|
|
61
|
+
if (!t)
|
|
62
|
+
throw new Error(`Tool not found: ${name}`);
|
|
63
|
+
return t.execute(args);
|
|
64
|
+
}
|
|
65
|
+
/** Wire plugin lifecycle hooks to the event bus */
|
|
66
|
+
wireHooks(bus) {
|
|
67
|
+
for (const plugin of this.plugins.values()) {
|
|
68
|
+
if (!plugin.hooks)
|
|
69
|
+
continue;
|
|
70
|
+
if (plugin.hooks.beforeToolUse) {
|
|
71
|
+
const hook = plugin.hooks.beforeToolUse;
|
|
72
|
+
bus.on('agent:tool-use', async (event) => {
|
|
73
|
+
const data = event.data;
|
|
74
|
+
try {
|
|
75
|
+
await hook({ tool: String(data.tool ?? ''), agentName: String(data.agentType ?? '') });
|
|
76
|
+
}
|
|
77
|
+
catch { /* Don't crash on hook failure */ }
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (plugin.hooks.onPhaseComplete) {
|
|
81
|
+
const hook = plugin.hooks.onPhaseComplete;
|
|
82
|
+
bus.on('orchestration:phase-complete', async (event) => {
|
|
83
|
+
const data = event.data;
|
|
84
|
+
try {
|
|
85
|
+
await hook({
|
|
86
|
+
phaseName: String(data.phase ?? ''),
|
|
87
|
+
status: String(data.status ?? ''),
|
|
88
|
+
agentCount: Number(data.agentCount ?? 0),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch { /* Don't crash on hook failure */ }
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (plugin.hooks.onOrchestrationComplete) {
|
|
95
|
+
const hook = plugin.hooks.onOrchestrationComplete;
|
|
96
|
+
bus.on('orchestration:complete', async (event) => {
|
|
97
|
+
const data = event.data;
|
|
98
|
+
try {
|
|
99
|
+
await hook({
|
|
100
|
+
pattern: String(data.pattern ?? ''),
|
|
101
|
+
status: String(data.status ?? ''),
|
|
102
|
+
durationMs: Number(data.durationMs ?? 0),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch { /* Don't crash on hook failure */ }
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async unloadAll() {
|
|
111
|
+
for (const p of this.plugins.values())
|
|
112
|
+
if (p.onUnload)
|
|
113
|
+
try {
|
|
114
|
+
await p.onUnload();
|
|
115
|
+
}
|
|
116
|
+
catch { }
|
|
117
|
+
this.plugins.clear();
|
|
118
|
+
this.tools.clear();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/runtime/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PhaseInstance } from '../core/types.js';
|
|
2
|
+
export interface Reflection {
|
|
3
|
+
phaseName: string;
|
|
4
|
+
summary: string;
|
|
5
|
+
whatWorked: string[];
|
|
6
|
+
whatFailed: string[];
|
|
7
|
+
improvements: string[];
|
|
8
|
+
confidence: 'high' | 'medium' | 'low';
|
|
9
|
+
}
|
|
10
|
+
export declare class ReflectionEngine {
|
|
11
|
+
/**
|
|
12
|
+
* Generate a reflection from phase results.
|
|
13
|
+
* This is a deterministic analysis — no LLM calls.
|
|
14
|
+
* The reflection gets stored in memory and injected into subsequent phases.
|
|
15
|
+
*/
|
|
16
|
+
reflect(phase: PhaseInstance): Reflection;
|
|
17
|
+
/**
|
|
18
|
+
* Format a reflection for injection into subsequent agent context.
|
|
19
|
+
*/
|
|
20
|
+
format(reflection: Reflection): string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=reflexion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflexion.d.ts","sourceRoot":"","sources":["../../src/runtime/reflexion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU;IAyDzC;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;CAuBvC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export class ReflectionEngine {
|
|
2
|
+
/**
|
|
3
|
+
* Generate a reflection from phase results.
|
|
4
|
+
* This is a deterministic analysis — no LLM calls.
|
|
5
|
+
* The reflection gets stored in memory and injected into subsequent phases.
|
|
6
|
+
*/
|
|
7
|
+
reflect(phase) {
|
|
8
|
+
const whatWorked = [];
|
|
9
|
+
const whatFailed = [];
|
|
10
|
+
const improvements = [];
|
|
11
|
+
// Analyze each agent's result
|
|
12
|
+
for (const agent of phase.agents) {
|
|
13
|
+
if (agent.status === 'shutdown' || agent.status === 'idle') {
|
|
14
|
+
const conf = agent.result?.confidence ?? 'medium';
|
|
15
|
+
if (conf === 'high') {
|
|
16
|
+
whatWorked.push(`${agent.config.name}: completed with high confidence`);
|
|
17
|
+
}
|
|
18
|
+
else if (conf === 'low') {
|
|
19
|
+
whatFailed.push(`${agent.config.name}: low confidence — results may be unreliable`);
|
|
20
|
+
improvements.push(`Consider re-running ${agent.config.name} with more specific instructions`);
|
|
21
|
+
}
|
|
22
|
+
// Check for blockers
|
|
23
|
+
if (agent.result?.blockers && agent.result.blockers.length > 0) {
|
|
24
|
+
whatFailed.push(`${agent.config.name}: reported blockers: ${agent.result.blockers.join(', ')}`);
|
|
25
|
+
improvements.push(`Address blockers before proceeding: ${agent.result.blockers.join(', ')}`);
|
|
26
|
+
}
|
|
27
|
+
// Check token efficiency
|
|
28
|
+
if (agent.usage.totalTokens > 50000) {
|
|
29
|
+
improvements.push(`${agent.config.name} used ${agent.usage.totalTokens} tokens — consider using a cheaper model or narrower scope`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (agent.status === 'error') {
|
|
33
|
+
whatFailed.push(`${agent.config.name}: failed with error: ${agent.error ?? 'unknown'}`);
|
|
34
|
+
improvements.push(`Retry ${agent.config.name} with different approach or model`);
|
|
35
|
+
}
|
|
36
|
+
else if (agent.status === 'timeout') {
|
|
37
|
+
whatFailed.push(`${agent.config.name}: timed out`);
|
|
38
|
+
improvements.push(`Increase timeout for ${agent.config.name} or split into smaller tasks`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Phase-level analysis
|
|
42
|
+
if (phase.agents.length > 1 && !phase.config.parallel) {
|
|
43
|
+
improvements.push('This sequential phase has multiple agents — consider parallelizing');
|
|
44
|
+
}
|
|
45
|
+
// Overall confidence
|
|
46
|
+
const errorCount = phase.agents.filter(a => a.status === 'error' || a.status === 'timeout').length;
|
|
47
|
+
const lowConfCount = phase.agents.filter(a => a.result?.confidence === 'low').length;
|
|
48
|
+
const confidence = errorCount > 0 ? 'low' :
|
|
49
|
+
lowConfCount > 0 ? 'medium' : 'high';
|
|
50
|
+
return {
|
|
51
|
+
phaseName: phase.config.name,
|
|
52
|
+
summary: `Phase ${phase.config.name}: ${phase.agents.length} agents, ${phase.usage.totalTokens} tokens, ${Math.round(phase.usage.durationMs / 1000)}s. ${whatFailed.length} issues found.`,
|
|
53
|
+
whatWorked,
|
|
54
|
+
whatFailed,
|
|
55
|
+
improvements,
|
|
56
|
+
confidence,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Format a reflection for injection into subsequent agent context.
|
|
61
|
+
*/
|
|
62
|
+
format(reflection) {
|
|
63
|
+
const lines = [
|
|
64
|
+
`## Reflection from ${reflection.phaseName}`,
|
|
65
|
+
`Confidence: ${reflection.confidence}`,
|
|
66
|
+
];
|
|
67
|
+
if (reflection.whatWorked.length > 0) {
|
|
68
|
+
lines.push('\nWhat worked:');
|
|
69
|
+
for (const w of reflection.whatWorked)
|
|
70
|
+
lines.push(` + ${w}`);
|
|
71
|
+
}
|
|
72
|
+
if (reflection.whatFailed.length > 0) {
|
|
73
|
+
lines.push('\nIssues:');
|
|
74
|
+
for (const f of reflection.whatFailed)
|
|
75
|
+
lines.push(` - ${f}`);
|
|
76
|
+
}
|
|
77
|
+
if (reflection.improvements.length > 0) {
|
|
78
|
+
lines.push('\nImprovement notes for subsequent phases:');
|
|
79
|
+
for (const i of reflection.improvements)
|
|
80
|
+
lines.push(` → ${i}`);
|
|
81
|
+
}
|
|
82
|
+
return lines.join('\n');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=reflexion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflexion.js","sourceRoot":"","sources":["../../src/runtime/reflexion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured review findings schema.
|
|
3
|
+
* Inspired by Compound Engineering's tiered review system.
|
|
4
|
+
*
|
|
5
|
+
* Enables: confidence gating (suppress low-confidence findings),
|
|
6
|
+
* severity classification (P0-P3), and autofix categorization.
|
|
7
|
+
*/
|
|
8
|
+
export type Severity = 'P0' | 'P1' | 'P2' | 'P3';
|
|
9
|
+
export type AutofixClass = 'safe_auto' | 'gated_auto' | 'manual' | 'advisory';
|
|
10
|
+
export interface ReviewFinding {
|
|
11
|
+
id: string;
|
|
12
|
+
severity: Severity;
|
|
13
|
+
confidence: number;
|
|
14
|
+
category: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
file?: string;
|
|
18
|
+
line?: number;
|
|
19
|
+
autofixClass: AutofixClass;
|
|
20
|
+
suggestedFix?: string;
|
|
21
|
+
cweId?: string;
|
|
22
|
+
reviewer: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ReviewReport {
|
|
25
|
+
orchestrationId: string;
|
|
26
|
+
timestamp: string;
|
|
27
|
+
reviewers: string[];
|
|
28
|
+
findings: ReviewFinding[];
|
|
29
|
+
summary: ReviewSummary;
|
|
30
|
+
gateResult: 'pass' | 'fail' | 'warn';
|
|
31
|
+
}
|
|
32
|
+
export interface ReviewSummary {
|
|
33
|
+
totalFindings: number;
|
|
34
|
+
bySeverity: Record<Severity, number>;
|
|
35
|
+
byCategory: Record<string, number>;
|
|
36
|
+
avgConfidence: number;
|
|
37
|
+
gatedCount: number;
|
|
38
|
+
autofixableCount: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ReviewGateConfig {
|
|
41
|
+
minConfidence: number;
|
|
42
|
+
failOnP0: boolean;
|
|
43
|
+
failOnP1Count: number;
|
|
44
|
+
maxFindings: number;
|
|
45
|
+
}
|
|
46
|
+
export declare const DEFAULT_GATE_CONFIG: ReviewGateConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Parse agent review output into structured findings.
|
|
49
|
+
* Agents are instructed to output in a specific format;
|
|
50
|
+
* this parser extracts structured data from their prose.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseReviewOutput(output: string, reviewer: string): ReviewFinding[];
|
|
53
|
+
/**
|
|
54
|
+
* Apply confidence gating — suppress low-confidence findings.
|
|
55
|
+
*/
|
|
56
|
+
export declare function applyConfidenceGate(findings: ReviewFinding[], minConfidence?: number): {
|
|
57
|
+
kept: ReviewFinding[];
|
|
58
|
+
gated: ReviewFinding[];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Evaluate the review gate — pass, fail, or warn.
|
|
62
|
+
*/
|
|
63
|
+
export declare function evaluateGate(findings: ReviewFinding[], config?: ReviewGateConfig): {
|
|
64
|
+
result: 'pass' | 'fail' | 'warn';
|
|
65
|
+
reason: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Generate a review summary from findings.
|
|
69
|
+
*/
|
|
70
|
+
export declare function summarizeFindings(findings: ReviewFinding[], config?: ReviewGateConfig): ReviewSummary;
|
|
71
|
+
/**
|
|
72
|
+
* Format findings for display.
|
|
73
|
+
*/
|
|
74
|
+
export declare function formatFindings(findings: ReviewFinding[]): string;
|
|
75
|
+
//# sourceMappingURL=review-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-schema.d.ts","sourceRoot":"","sources":["../../src/runtime/review-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,EAAE,gBAKjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAsEnF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,aAAa,GAAE,MAA0C,GAAG;IACzH,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAaA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,GAAE,gBAAsC,GAAG;IACvG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAmBA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,GAAE,gBAAsC,GAAG,aAAa,CAuB1H;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAwBhE"}
|