@jokerized/getresearchdone 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +103 -0
- package/README.md +211 -0
- package/agents/grd-baseline-assessor.md +684 -0
- package/agents/grd-code-reviewer.md +300 -0
- package/agents/grd-codebase-mapper.md +355 -0
- package/agents/grd-critique-agent.md +119 -0
- package/agents/grd-debugger.md +519 -0
- package/agents/grd-deep-diver.md +737 -0
- package/agents/grd-eval-planner.md +913 -0
- package/agents/grd-eval-reporter.md +717 -0
- package/agents/grd-executor.md +683 -0
- package/agents/grd-feasibility-analyst.md +624 -0
- package/agents/grd-integration-checker.md +367 -0
- package/agents/grd-knowledge-miner.md +81 -0
- package/agents/grd-migrator.md +88 -0
- package/agents/grd-phase-researcher.md +697 -0
- package/agents/grd-plan-checker.md +443 -0
- package/agents/grd-planner.md +1532 -0
- package/agents/grd-product-owner.md +562 -0
- package/agents/grd-project-researcher.md +513 -0
- package/agents/grd-research-synthesizer.md +273 -0
- package/agents/grd-roadmapper.md +798 -0
- package/agents/grd-surveyor.md +566 -0
- package/agents/grd-verifier.md +893 -0
- package/bin/gd.js +4 -0
- package/bin/gd.ts +227 -0
- package/bin/grd-manifest.js +4 -0
- package/bin/grd-manifest.ts +286 -0
- package/bin/grd-mcp-server.js +4 -0
- package/bin/grd-mcp-server.ts +124 -0
- package/bin/grd-tools.js +4 -0
- package/bin/grd-tools.ts +2471 -0
- package/bin/postinstall.js +4 -0
- package/bin/postinstall.ts +80 -0
- package/commands/add-phase.md +123 -0
- package/commands/add-todo.md +87 -0
- package/commands/assess-baseline.md +289 -0
- package/commands/autopilot.md +100 -0
- package/commands/autoplan.md +55 -0
- package/commands/check-todos.md +87 -0
- package/commands/compare-methods.md +262 -0
- package/commands/complete-milestone.md +225 -0
- package/commands/debug.md +372 -0
- package/commands/deep-dive.md +288 -0
- package/commands/discover.md +281 -0
- package/commands/discuss-phase.md +188 -0
- package/commands/discuss.md +55 -0
- package/commands/eval-report.md +310 -0
- package/commands/evolve.md +79 -0
- package/commands/execute-phase.md +1017 -0
- package/commands/feasibility.md +292 -0
- package/commands/help.md +407 -0
- package/commands/init.md +1508 -0
- package/commands/insert-phase.md +113 -0
- package/commands/iterate.md +327 -0
- package/commands/list-phase-assumptions.md +217 -0
- package/commands/long-term-roadmap.md +202 -0
- package/commands/map-codebase.md +111 -0
- package/commands/migrate.md +159 -0
- package/commands/new-milestone.md +169 -0
- package/commands/pause-work.md +83 -0
- package/commands/plan-milestone-gaps.md +373 -0
- package/commands/plan-phase.md +655 -0
- package/commands/principles.md +328 -0
- package/commands/product-plan.md +319 -0
- package/commands/progress.md +481 -0
- package/commands/quick.md +167 -0
- package/commands/reapply-patches.md +154 -0
- package/commands/remove-phase.md +97 -0
- package/commands/requirement.md +96 -0
- package/commands/resume-project.md +113 -0
- package/commands/settings.md +1144 -0
- package/commands/survey.md +242 -0
- package/commands/sync.md +246 -0
- package/commands/tracker-setup.md +322 -0
- package/commands/update.md +202 -0
- package/commands/verify-phase.md +335 -0
- package/commands/verify-work.md +701 -0
- package/commands/wireup.md +29 -0
- package/dist/bin/gd.d.ts +3 -0
- package/dist/bin/gd.d.ts.map +1 -0
- package/dist/bin/gd.js +178 -0
- package/dist/bin/gd.js.map +1 -0
- package/dist/bin/grd-manifest.d.ts +3 -0
- package/dist/bin/grd-manifest.d.ts.map +1 -0
- package/dist/bin/grd-manifest.js +202 -0
- package/dist/bin/grd-manifest.js.map +1 -0
- package/dist/bin/grd-mcp-server.d.ts +3 -0
- package/dist/bin/grd-mcp-server.d.ts.map +1 -0
- package/dist/bin/grd-mcp-server.js +71 -0
- package/dist/bin/grd-mcp-server.js.map +1 -0
- package/dist/bin/grd-tools.d.ts +3 -0
- package/dist/bin/grd-tools.d.ts.map +1 -0
- package/dist/bin/grd-tools.js +1680 -0
- package/dist/bin/grd-tools.js.map +1 -0
- package/dist/bin/postinstall.d.ts +3 -0
- package/dist/bin/postinstall.d.ts.map +1 -0
- package/dist/bin/postinstall.js +61 -0
- package/dist/bin/postinstall.js.map +1 -0
- package/dist/lib/autopilot-milestone.d.ts +2 -0
- package/dist/lib/autopilot-milestone.d.ts.map +1 -0
- package/dist/lib/autopilot-milestone.js +94 -0
- package/dist/lib/autopilot-milestone.js.map +1 -0
- package/dist/lib/autopilot-pipeline.d.ts +2 -0
- package/dist/lib/autopilot-pipeline.d.ts.map +1 -0
- package/dist/lib/autopilot-pipeline.js +830 -0
- package/dist/lib/autopilot-pipeline.js.map +1 -0
- package/dist/lib/autopilot-waves.d.ts +2 -0
- package/dist/lib/autopilot-waves.d.ts.map +1 -0
- package/dist/lib/autopilot-waves.js +266 -0
- package/dist/lib/autopilot-waves.js.map +1 -0
- package/dist/lib/autopilot.d.ts +2 -0
- package/dist/lib/autopilot.d.ts.map +1 -0
- package/dist/lib/autopilot.js +1314 -0
- package/dist/lib/autopilot.js.map +1 -0
- package/dist/lib/autoplan.d.ts +2 -0
- package/dist/lib/autoplan.d.ts.map +1 -0
- package/dist/lib/autoplan.js +198 -0
- package/dist/lib/autoplan.js.map +1 -0
- package/dist/lib/autoresearch.d.ts +2 -0
- package/dist/lib/autoresearch.d.ts.map +1 -0
- package/dist/lib/autoresearch.js +626 -0
- package/dist/lib/autoresearch.js.map +1 -0
- package/dist/lib/backend.d.ts +2 -0
- package/dist/lib/backend.d.ts.map +1 -0
- package/dist/lib/backend.js +1036 -0
- package/dist/lib/backend.js.map +1 -0
- package/dist/lib/benchmark.d.ts +99 -0
- package/dist/lib/benchmark.d.ts.map +1 -0
- package/dist/lib/benchmark.js +278 -0
- package/dist/lib/benchmark.js.map +1 -0
- package/dist/lib/citations.d.ts +2 -0
- package/dist/lib/citations.d.ts.map +1 -0
- package/dist/lib/citations.js +642 -0
- package/dist/lib/citations.js.map +1 -0
- package/dist/lib/cleanup.d.ts +2 -0
- package/dist/lib/cleanup.d.ts.map +1 -0
- package/dist/lib/cleanup.js +1222 -0
- package/dist/lib/cleanup.js.map +1 -0
- package/dist/lib/cli/adapters.d.ts +10 -0
- package/dist/lib/cli/adapters.d.ts.map +1 -0
- package/dist/lib/cli/adapters.js +27 -0
- package/dist/lib/cli/adapters.js.map +1 -0
- package/dist/lib/cli/agent.d.ts +17 -0
- package/dist/lib/cli/agent.d.ts.map +1 -0
- package/dist/lib/cli/agent.js +53 -0
- package/dist/lib/cli/agent.js.map +1 -0
- package/dist/lib/cli/index.d.ts +21 -0
- package/dist/lib/cli/index.d.ts.map +1 -0
- package/dist/lib/cli/index.js +264 -0
- package/dist/lib/cli/index.js.map +1 -0
- package/dist/lib/cli/output.d.ts +20 -0
- package/dist/lib/cli/output.d.ts.map +1 -0
- package/dist/lib/cli/output.js +22 -0
- package/dist/lib/cli/output.js.map +1 -0
- package/dist/lib/cli/scan-dispatch.d.ts +9 -0
- package/dist/lib/cli/scan-dispatch.d.ts.map +1 -0
- package/dist/lib/cli/scan-dispatch.js +107 -0
- package/dist/lib/cli/scan-dispatch.js.map +1 -0
- package/dist/lib/cli/tools.d.ts +16 -0
- package/dist/lib/cli/tools.d.ts.map +1 -0
- package/dist/lib/cli/tools.js +168 -0
- package/dist/lib/cli/tools.js.map +1 -0
- package/dist/lib/commands/_dashboard-parsers.d.ts +2 -0
- package/dist/lib/commands/_dashboard-parsers.d.ts.map +1 -0
- package/dist/lib/commands/_dashboard-parsers.js +192 -0
- package/dist/lib/commands/_dashboard-parsers.js.map +1 -0
- package/dist/lib/commands/analysis.d.ts +2 -0
- package/dist/lib/commands/analysis.d.ts.map +1 -0
- package/dist/lib/commands/analysis.js +1418 -0
- package/dist/lib/commands/analysis.js.map +1 -0
- package/dist/lib/commands/assumptions.d.ts +2 -0
- package/dist/lib/commands/assumptions.d.ts.map +1 -0
- package/dist/lib/commands/assumptions.js +166 -0
- package/dist/lib/commands/assumptions.js.map +1 -0
- package/dist/lib/commands/blame.d.ts +2 -0
- package/dist/lib/commands/blame.d.ts.map +1 -0
- package/dist/lib/commands/blame.js +133 -0
- package/dist/lib/commands/blame.js.map +1 -0
- package/dist/lib/commands/budget.d.ts +2 -0
- package/dist/lib/commands/budget.d.ts.map +1 -0
- package/dist/lib/commands/budget.js +100 -0
- package/dist/lib/commands/budget.js.map +1 -0
- package/dist/lib/commands/check-plans.d.ts +2 -0
- package/dist/lib/commands/check-plans.d.ts.map +1 -0
- package/dist/lib/commands/check-plans.js +190 -0
- package/dist/lib/commands/check-plans.js.map +1 -0
- package/dist/lib/commands/config.d.ts +2 -0
- package/dist/lib/commands/config.d.ts.map +1 -0
- package/dist/lib/commands/config.js +188 -0
- package/dist/lib/commands/config.js.map +1 -0
- package/dist/lib/commands/dashboard.d.ts +2 -0
- package/dist/lib/commands/dashboard.d.ts.map +1 -0
- package/dist/lib/commands/dashboard.js +466 -0
- package/dist/lib/commands/dashboard.js.map +1 -0
- package/dist/lib/commands/estimate.d.ts +2 -0
- package/dist/lib/commands/estimate.d.ts.map +1 -0
- package/dist/lib/commands/estimate.js +148 -0
- package/dist/lib/commands/estimate.js.map +1 -0
- package/dist/lib/commands/eval-diff.d.ts +2 -0
- package/dist/lib/commands/eval-diff.d.ts.map +1 -0
- package/dist/lib/commands/eval-diff.js +213 -0
- package/dist/lib/commands/eval-diff.js.map +1 -0
- package/dist/lib/commands/freshness.d.ts +2 -0
- package/dist/lib/commands/freshness.d.ts.map +1 -0
- package/dist/lib/commands/freshness.js +163 -0
- package/dist/lib/commands/freshness.js.map +1 -0
- package/dist/lib/commands/health.d.ts +2 -0
- package/dist/lib/commands/health.d.ts.map +1 -0
- package/dist/lib/commands/health.js +435 -0
- package/dist/lib/commands/health.js.map +1 -0
- package/dist/lib/commands/index.d.ts +2 -0
- package/dist/lib/commands/index.d.ts.map +1 -0
- package/dist/lib/commands/index.js +128 -0
- package/dist/lib/commands/index.js.map +1 -0
- package/dist/lib/commands/install.d.ts +56 -0
- package/dist/lib/commands/install.d.ts.map +1 -0
- package/dist/lib/commands/install.js +214 -0
- package/dist/lib/commands/install.js.map +1 -0
- package/dist/lib/commands/knowhow-aggregator.d.ts +2 -0
- package/dist/lib/commands/knowhow-aggregator.d.ts.map +1 -0
- package/dist/lib/commands/knowhow-aggregator.js +279 -0
- package/dist/lib/commands/knowhow-aggregator.js.map +1 -0
- package/dist/lib/commands/knowledge-search.d.ts +2 -0
- package/dist/lib/commands/knowledge-search.d.ts.map +1 -0
- package/dist/lib/commands/knowledge-search.js +113 -0
- package/dist/lib/commands/knowledge-search.js.map +1 -0
- package/dist/lib/commands/long-term-roadmap.d.ts +2 -0
- package/dist/lib/commands/long-term-roadmap.d.ts.map +1 -0
- package/dist/lib/commands/long-term-roadmap.js +272 -0
- package/dist/lib/commands/long-term-roadmap.js.map +1 -0
- package/dist/lib/commands/patterns.d.ts +91 -0
- package/dist/lib/commands/patterns.d.ts.map +1 -0
- package/dist/lib/commands/patterns.js +391 -0
- package/dist/lib/commands/patterns.js.map +1 -0
- package/dist/lib/commands/phase-info.d.ts +2 -0
- package/dist/lib/commands/phase-info.d.ts.map +1 -0
- package/dist/lib/commands/phase-info.js +509 -0
- package/dist/lib/commands/phase-info.js.map +1 -0
- package/dist/lib/commands/plan-lint.d.ts +56 -0
- package/dist/lib/commands/plan-lint.d.ts.map +1 -0
- package/dist/lib/commands/plan-lint.js +481 -0
- package/dist/lib/commands/plan-lint.js.map +1 -0
- package/dist/lib/commands/plan-phase.d.ts +53 -0
- package/dist/lib/commands/plan-phase.d.ts.map +1 -0
- package/dist/lib/commands/plan-phase.js +288 -0
- package/dist/lib/commands/plan-phase.js.map +1 -0
- package/dist/lib/commands/progress.d.ts +2 -0
- package/dist/lib/commands/progress.d.ts.map +1 -0
- package/dist/lib/commands/progress.js +266 -0
- package/dist/lib/commands/progress.js.map +1 -0
- package/dist/lib/commands/quality.d.ts +2 -0
- package/dist/lib/commands/quality.d.ts.map +1 -0
- package/dist/lib/commands/quality.js +80 -0
- package/dist/lib/commands/quality.js.map +1 -0
- package/dist/lib/commands/rollback.d.ts +2 -0
- package/dist/lib/commands/rollback.d.ts.map +1 -0
- package/dist/lib/commands/rollback.js +145 -0
- package/dist/lib/commands/rollback.js.map +1 -0
- package/dist/lib/commands/scan.d.ts +25 -0
- package/dist/lib/commands/scan.d.ts.map +1 -0
- package/dist/lib/commands/scan.js +28 -0
- package/dist/lib/commands/scan.js.map +1 -0
- package/dist/lib/commands/search.d.ts +2 -0
- package/dist/lib/commands/search.d.ts.map +1 -0
- package/dist/lib/commands/search.js +212 -0
- package/dist/lib/commands/search.js.map +1 -0
- package/dist/lib/commands/select-candidate.d.ts +128 -0
- package/dist/lib/commands/select-candidate.d.ts.map +1 -0
- package/dist/lib/commands/select-candidate.js +518 -0
- package/dist/lib/commands/select-candidate.js.map +1 -0
- package/dist/lib/commands/singularity.d.ts +2 -0
- package/dist/lib/commands/singularity.d.ts.map +1 -0
- package/dist/lib/commands/singularity.js +185 -0
- package/dist/lib/commands/singularity.js.map +1 -0
- package/dist/lib/commands/slug-timestamp.d.ts +2 -0
- package/dist/lib/commands/slug-timestamp.d.ts.map +1 -0
- package/dist/lib/commands/slug-timestamp.js +54 -0
- package/dist/lib/commands/slug-timestamp.js.map +1 -0
- package/dist/lib/commands/tail.d.ts +2 -0
- package/dist/lib/commands/tail.d.ts.map +1 -0
- package/dist/lib/commands/tail.js +100 -0
- package/dist/lib/commands/tail.js.map +1 -0
- package/dist/lib/commands/todo.d.ts +2 -0
- package/dist/lib/commands/todo.d.ts.map +1 -0
- package/dist/lib/commands/todo.js +200 -0
- package/dist/lib/commands/todo.js.map +1 -0
- package/dist/lib/commands/watch.d.ts +2 -0
- package/dist/lib/commands/watch.d.ts.map +1 -0
- package/dist/lib/commands/watch.js +72 -0
- package/dist/lib/commands/watch.js.map +1 -0
- package/dist/lib/complexity.d.ts +55 -0
- package/dist/lib/complexity.d.ts.map +1 -0
- package/dist/lib/complexity.js +80 -0
- package/dist/lib/complexity.js.map +1 -0
- package/dist/lib/context/agents.d.ts +2 -0
- package/dist/lib/context/agents.d.ts.map +1 -0
- package/dist/lib/context/agents.js +344 -0
- package/dist/lib/context/agents.js.map +1 -0
- package/dist/lib/context/base.d.ts +2 -0
- package/dist/lib/context/base.d.ts.map +1 -0
- package/dist/lib/context/base.js +81 -0
- package/dist/lib/context/base.js.map +1 -0
- package/dist/lib/context/execute.d.ts +2 -0
- package/dist/lib/context/execute.d.ts.map +1 -0
- package/dist/lib/context/execute.js +753 -0
- package/dist/lib/context/execute.js.map +1 -0
- package/dist/lib/context/index.d.ts +2 -0
- package/dist/lib/context/index.d.ts.map +1 -0
- package/dist/lib/context/index.js +88 -0
- package/dist/lib/context/index.js.map +1 -0
- package/dist/lib/context/progress.d.ts +2 -0
- package/dist/lib/context/progress.d.ts.map +1 -0
- package/dist/lib/context/progress.js +178 -0
- package/dist/lib/context/progress.js.map +1 -0
- package/dist/lib/context/project.d.ts +2 -0
- package/dist/lib/context/project.d.ts.map +1 -0
- package/dist/lib/context/project.js +413 -0
- package/dist/lib/context/project.js.map +1 -0
- package/dist/lib/context/research.d.ts +2 -0
- package/dist/lib/context/research.d.ts.map +1 -0
- package/dist/lib/context/research.js +466 -0
- package/dist/lib/context/research.js.map +1 -0
- package/dist/lib/dead-ends.d.ts +28 -0
- package/dist/lib/dead-ends.d.ts.map +1 -0
- package/dist/lib/dead-ends.js +451 -0
- package/dist/lib/dead-ends.js.map +1 -0
- package/dist/lib/deps.d.ts +2 -0
- package/dist/lib/deps.d.ts.map +1 -0
- package/dist/lib/deps.js +630 -0
- package/dist/lib/deps.js.map +1 -0
- package/dist/lib/discussion.d.ts +2 -0
- package/dist/lib/discussion.d.ts.map +1 -0
- package/dist/lib/discussion.js +1041 -0
- package/dist/lib/discussion.js.map +1 -0
- package/dist/lib/drift.d.ts +36 -0
- package/dist/lib/drift.d.ts.map +1 -0
- package/dist/lib/drift.js +481 -0
- package/dist/lib/drift.js.map +1 -0
- package/dist/lib/evolve/_dimensions-features.d.ts +2 -0
- package/dist/lib/evolve/_dimensions-features.d.ts.map +1 -0
- package/dist/lib/evolve/_dimensions-features.js +369 -0
- package/dist/lib/evolve/_dimensions-features.js.map +1 -0
- package/dist/lib/evolve/_dimensions.d.ts +2 -0
- package/dist/lib/evolve/_dimensions.d.ts.map +1 -0
- package/dist/lib/evolve/_dimensions.js +358 -0
- package/dist/lib/evolve/_dimensions.js.map +1 -0
- package/dist/lib/evolve/_product-ideation.d.ts +2 -0
- package/dist/lib/evolve/_product-ideation.d.ts.map +1 -0
- package/dist/lib/evolve/_product-ideation.js +281 -0
- package/dist/lib/evolve/_product-ideation.js.map +1 -0
- package/dist/lib/evolve/_prompts.d.ts +2 -0
- package/dist/lib/evolve/_prompts.d.ts.map +1 -0
- package/dist/lib/evolve/_prompts.js +153 -0
- package/dist/lib/evolve/_prompts.js.map +1 -0
- package/dist/lib/evolve/cli.d.ts +2 -0
- package/dist/lib/evolve/cli.d.ts.map +1 -0
- package/dist/lib/evolve/cli.js +224 -0
- package/dist/lib/evolve/cli.js.map +1 -0
- package/dist/lib/evolve/discovery.d.ts +2 -0
- package/dist/lib/evolve/discovery.d.ts.map +1 -0
- package/dist/lib/evolve/discovery.js +391 -0
- package/dist/lib/evolve/discovery.js.map +1 -0
- package/dist/lib/evolve/index.d.ts +2 -0
- package/dist/lib/evolve/index.d.ts.map +1 -0
- package/dist/lib/evolve/index.js +88 -0
- package/dist/lib/evolve/index.js.map +1 -0
- package/dist/lib/evolve/orchestrator.d.ts +2 -0
- package/dist/lib/evolve/orchestrator.d.ts.map +1 -0
- package/dist/lib/evolve/orchestrator.js +851 -0
- package/dist/lib/evolve/orchestrator.js.map +1 -0
- package/dist/lib/evolve/scoring.d.ts +2 -0
- package/dist/lib/evolve/scoring.d.ts.map +1 -0
- package/dist/lib/evolve/scoring.js +118 -0
- package/dist/lib/evolve/scoring.js.map +1 -0
- package/dist/lib/evolve/state.d.ts +2 -0
- package/dist/lib/evolve/state.d.ts.map +1 -0
- package/dist/lib/evolve/state.js +264 -0
- package/dist/lib/evolve/state.js.map +1 -0
- package/dist/lib/evolve/types.d.ts +249 -0
- package/dist/lib/evolve/types.d.ts.map +1 -0
- package/dist/lib/evolve/types.js +3 -0
- package/dist/lib/evolve/types.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +2 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +513 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/gates.d.ts +2 -0
- package/dist/lib/gates.d.ts.map +1 -0
- package/dist/lib/gates.js +578 -0
- package/dist/lib/gates.js.map +1 -0
- package/dist/lib/genome.d.ts +10 -0
- package/dist/lib/genome.d.ts.map +1 -0
- package/dist/lib/genome.js +368 -0
- package/dist/lib/genome.js.map +1 -0
- package/dist/lib/got.d.ts +2 -0
- package/dist/lib/got.d.ts.map +1 -0
- package/dist/lib/got.js +280 -0
- package/dist/lib/got.js.map +1 -0
- package/dist/lib/invariants.d.ts +2 -0
- package/dist/lib/invariants.d.ts.map +1 -0
- package/dist/lib/invariants.js +298 -0
- package/dist/lib/invariants.js.map +1 -0
- package/dist/lib/knowledge.d.ts +2 -0
- package/dist/lib/knowledge.d.ts.map +1 -0
- package/dist/lib/knowledge.js +658 -0
- package/dist/lib/knowledge.js.map +1 -0
- package/dist/lib/long-term-roadmap.d.ts +2 -0
- package/dist/lib/long-term-roadmap.d.ts.map +1 -0
- package/dist/lib/long-term-roadmap.js +602 -0
- package/dist/lib/long-term-roadmap.js.map +1 -0
- package/dist/lib/markdown-split.d.ts +2 -0
- package/dist/lib/markdown-split.d.ts.map +1 -0
- package/dist/lib/markdown-split.js +199 -0
- package/dist/lib/markdown-split.js.map +1 -0
- package/dist/lib/mcp-server.d.ts +2 -0
- package/dist/lib/mcp-server.d.ts.map +1 -0
- package/dist/lib/mcp-server.js +2424 -0
- package/dist/lib/mcp-server.js.map +1 -0
- package/dist/lib/metrics.d.ts +16 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +48 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/overstory.d.ts +2 -0
- package/dist/lib/overstory.d.ts.map +1 -0
- package/dist/lib/overstory.js +211 -0
- package/dist/lib/overstory.js.map +1 -0
- package/dist/lib/parallel.d.ts +2 -0
- package/dist/lib/parallel.d.ts.map +1 -0
- package/dist/lib/parallel.js +349 -0
- package/dist/lib/parallel.js.map +1 -0
- package/dist/lib/paths.d.ts +2 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +254 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/phase-complete-llm.d.ts +22 -0
- package/dist/lib/phase-complete-llm.d.ts.map +1 -0
- package/dist/lib/phase-complete-llm.js +331 -0
- package/dist/lib/phase-complete-llm.js.map +1 -0
- package/dist/lib/phase-complete.d.ts +46 -0
- package/dist/lib/phase-complete.d.ts.map +1 -0
- package/dist/lib/phase-complete.js +278 -0
- package/dist/lib/phase-complete.js.map +1 -0
- package/dist/lib/phase-io.d.ts +2 -0
- package/dist/lib/phase-io.d.ts.map +1 -0
- package/dist/lib/phase-io.js +126 -0
- package/dist/lib/phase-io.js.map +1 -0
- package/dist/lib/phase.d.ts +2 -0
- package/dist/lib/phase.d.ts.map +1 -0
- package/dist/lib/phase.js +1344 -0
- package/dist/lib/phase.js.map +1 -0
- package/dist/lib/plan-tournament.d.ts +63 -0
- package/dist/lib/plan-tournament.d.ts.map +1 -0
- package/dist/lib/plan-tournament.js +353 -0
- package/dist/lib/plan-tournament.js.map +1 -0
- package/dist/lib/refinement.d.ts +74 -0
- package/dist/lib/refinement.d.ts.map +1 -0
- package/dist/lib/refinement.js +283 -0
- package/dist/lib/refinement.js.map +1 -0
- package/dist/lib/requirements.d.ts +2 -0
- package/dist/lib/requirements.d.ts.map +1 -0
- package/dist/lib/requirements.js +355 -0
- package/dist/lib/requirements.js.map +1 -0
- package/dist/lib/research-bundle.d.ts +2 -0
- package/dist/lib/research-bundle.d.ts.map +1 -0
- package/dist/lib/research-bundle.js +246 -0
- package/dist/lib/research-bundle.js.map +1 -0
- package/dist/lib/roadmap.d.ts +2 -0
- package/dist/lib/roadmap.d.ts.map +1 -0
- package/dist/lib/roadmap.js +541 -0
- package/dist/lib/roadmap.js.map +1 -0
- package/dist/lib/sample.d.ts +16 -0
- package/dist/lib/sample.d.ts.map +1 -0
- package/dist/lib/sample.js +20 -0
- package/dist/lib/sample.js.map +1 -0
- package/dist/lib/scaffold.d.ts +2 -0
- package/dist/lib/scaffold.d.ts.map +1 -0
- package/dist/lib/scaffold.js +355 -0
- package/dist/lib/scaffold.js.map +1 -0
- package/dist/lib/scan/_utils.d.ts +11 -0
- package/dist/lib/scan/_utils.d.ts.map +1 -0
- package/dist/lib/scan/_utils.js +36 -0
- package/dist/lib/scan/_utils.js.map +1 -0
- package/dist/lib/scan/base64.d.ts +15 -0
- package/dist/lib/scan/base64.d.ts.map +1 -0
- package/dist/lib/scan/base64.js +66 -0
- package/dist/lib/scan/base64.js.map +1 -0
- package/dist/lib/scan/ignorefile.d.ts +30 -0
- package/dist/lib/scan/ignorefile.d.ts.map +1 -0
- package/dist/lib/scan/ignorefile.js +101 -0
- package/dist/lib/scan/ignorefile.js.map +1 -0
- package/dist/lib/scan/injection.d.ts +14 -0
- package/dist/lib/scan/injection.d.ts.map +1 -0
- package/dist/lib/scan/injection.js +39 -0
- package/dist/lib/scan/injection.js.map +1 -0
- package/dist/lib/scan/patterns.d.ts +17 -0
- package/dist/lib/scan/patterns.d.ts.map +1 -0
- package/dist/lib/scan/patterns.js +123 -0
- package/dist/lib/scan/patterns.js.map +1 -0
- package/dist/lib/scan/strip-markdown.d.ts +7 -0
- package/dist/lib/scan/strip-markdown.d.ts.map +1 -0
- package/dist/lib/scan/strip-markdown.js +38 -0
- package/dist/lib/scan/strip-markdown.js.map +1 -0
- package/dist/lib/scan/types.d.ts +23 -0
- package/dist/lib/scan/types.d.ts.map +1 -0
- package/dist/lib/scan/types.js +3 -0
- package/dist/lib/scan/types.js.map +1 -0
- package/dist/lib/scheduler-wait.d.ts +2 -0
- package/dist/lib/scheduler-wait.d.ts.map +1 -0
- package/dist/lib/scheduler-wait.js +59 -0
- package/dist/lib/scheduler-wait.js.map +1 -0
- package/dist/lib/scheduler.d.ts +254 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +1147 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/state.d.ts +2 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +744 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/think.d.ts +18 -0
- package/dist/lib/think.d.ts.map +1 -0
- package/dist/lib/think.js +317 -0
- package/dist/lib/think.js.map +1 -0
- package/dist/lib/tracker.d.ts +2 -0
- package/dist/lib/tracker.d.ts.map +1 -0
- package/dist/lib/tracker.js +1121 -0
- package/dist/lib/tracker.js.map +1 -0
- package/dist/lib/types.d.ts +1514 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +4 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +1363 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/verify.d.ts +2 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +1153 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/lib/wireup/autofix.d.ts +2 -0
- package/dist/lib/wireup/autofix.d.ts.map +1 -0
- package/dist/lib/wireup/autofix.js +188 -0
- package/dist/lib/wireup/autofix.js.map +1 -0
- package/dist/lib/wireup/cli.d.ts +2 -0
- package/dist/lib/wireup/cli.d.ts.map +1 -0
- package/dist/lib/wireup/cli.js +194 -0
- package/dist/lib/wireup/cli.js.map +1 -0
- package/dist/lib/wireup/detection.d.ts +47 -0
- package/dist/lib/wireup/detection.d.ts.map +1 -0
- package/dist/lib/wireup/detection.js +410 -0
- package/dist/lib/wireup/detection.js.map +1 -0
- package/dist/lib/wireup/discovery.d.ts +2 -0
- package/dist/lib/wireup/discovery.d.ts.map +1 -0
- package/dist/lib/wireup/discovery.js +934 -0
- package/dist/lib/wireup/discovery.js.map +1 -0
- package/dist/lib/wireup/execution.d.ts +2 -0
- package/dist/lib/wireup/execution.d.ts.map +1 -0
- package/dist/lib/wireup/execution.js +573 -0
- package/dist/lib/wireup/execution.js.map +1 -0
- package/dist/lib/wireup/index.d.ts +2 -0
- package/dist/lib/wireup/index.d.ts.map +1 -0
- package/dist/lib/wireup/index.js +85 -0
- package/dist/lib/wireup/index.js.map +1 -0
- package/dist/lib/wireup/orchestrator.d.ts +2 -0
- package/dist/lib/wireup/orchestrator.d.ts.map +1 -0
- package/dist/lib/wireup/orchestrator.js +366 -0
- package/dist/lib/wireup/orchestrator.js.map +1 -0
- package/dist/lib/wireup/report.d.ts +47 -0
- package/dist/lib/wireup/report.d.ts.map +1 -0
- package/dist/lib/wireup/report.js +201 -0
- package/dist/lib/wireup/report.js.map +1 -0
- package/dist/lib/wireup/scenarios.d.ts +2 -0
- package/dist/lib/wireup/scenarios.d.ts.map +1 -0
- package/dist/lib/wireup/scenarios.js +516 -0
- package/dist/lib/wireup/scenarios.js.map +1 -0
- package/dist/lib/wireup/state.d.ts +2 -0
- package/dist/lib/wireup/state.d.ts.map +1 -0
- package/dist/lib/wireup/state.js +102 -0
- package/dist/lib/wireup/state.js.map +1 -0
- package/dist/lib/wireup/types.d.ts +376 -0
- package/dist/lib/wireup/types.d.ts.map +1 -0
- package/dist/lib/wireup/types.js +3 -0
- package/dist/lib/wireup/types.js.map +1 -0
- package/dist/lib/worktree.d.ts +2 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +999 -0
- package/dist/lib/worktree.js.map +1 -0
- package/lib/autopilot-milestone.ts +136 -0
- package/lib/autopilot-pipeline.ts +1179 -0
- package/lib/autopilot-waves.ts +361 -0
- package/lib/autopilot.ts +1874 -0
- package/lib/autoplan.ts +280 -0
- package/lib/autoresearch.js +4 -0
- package/lib/autoresearch.ts +886 -0
- package/lib/backend.ts +1252 -0
- package/lib/benchmark.ts +341 -0
- package/lib/citations.ts +760 -0
- package/lib/cleanup.ts +1588 -0
- package/lib/cli/adapters.ts +41 -0
- package/lib/cli/agent.ts +83 -0
- package/lib/cli/index.ts +273 -0
- package/lib/cli/output.ts +33 -0
- package/lib/cli/scan-dispatch.ts +130 -0
- package/lib/cli/tools.ts +198 -0
- package/lib/commands/_dashboard-parsers.ts +275 -0
- package/lib/commands/analysis.ts +1851 -0
- package/lib/commands/assumptions.ts +232 -0
- package/lib/commands/blame.ts +174 -0
- package/lib/commands/budget.ts +148 -0
- package/lib/commands/check-plans.ts +233 -0
- package/lib/commands/config.ts +287 -0
- package/lib/commands/dashboard.ts +680 -0
- package/lib/commands/estimate.ts +204 -0
- package/lib/commands/eval-diff.ts +252 -0
- package/lib/commands/freshness.ts +213 -0
- package/lib/commands/health.ts +607 -0
- package/lib/commands/index.ts +266 -0
- package/lib/commands/install.ts +307 -0
- package/lib/commands/knowhow-aggregator.ts +345 -0
- package/lib/commands/knowledge-search.ts +153 -0
- package/lib/commands/long-term-roadmap.ts +390 -0
- package/lib/commands/patterns.ts +465 -0
- package/lib/commands/phase-info.ts +698 -0
- package/lib/commands/plan-lint.ts +546 -0
- package/lib/commands/plan-phase.ts +375 -0
- package/lib/commands/progress.ts +319 -0
- package/lib/commands/quality.ts +138 -0
- package/lib/commands/rollback.ts +195 -0
- package/lib/commands/scan.ts +72 -0
- package/lib/commands/search.ts +300 -0
- package/lib/commands/select-candidate.ts +687 -0
- package/lib/commands/singularity.ts +222 -0
- package/lib/commands/slug-timestamp.ts +74 -0
- package/lib/commands/tail.ts +129 -0
- package/lib/commands/todo.ts +273 -0
- package/lib/commands/watch.ts +80 -0
- package/lib/complexity.ts +117 -0
- package/lib/context/agents.ts +505 -0
- package/lib/context/base.ts +123 -0
- package/lib/context/execute.ts +977 -0
- package/lib/context/index.ts +110 -0
- package/lib/context/progress.ts +278 -0
- package/lib/context/project.ts +531 -0
- package/lib/context/research.ts +646 -0
- package/lib/dead-ends.ts +506 -0
- package/lib/deps.ts +773 -0
- package/lib/discussion.ts +1275 -0
- package/lib/drift.ts +519 -0
- package/lib/evolve/_dimensions-features.ts +525 -0
- package/lib/evolve/_dimensions.ts +511 -0
- package/lib/evolve/_product-ideation.ts +405 -0
- package/lib/evolve/_prompts.ts +178 -0
- package/lib/evolve/cli.ts +330 -0
- package/lib/evolve/discovery.ts +571 -0
- package/lib/evolve/index.ts +105 -0
- package/lib/evolve/orchestrator.ts +1139 -0
- package/lib/evolve/scoring.ts +167 -0
- package/lib/evolve/state.ts +330 -0
- package/lib/evolve/types.ts +290 -0
- package/lib/frontmatter.ts +615 -0
- package/lib/gates.ts +695 -0
- package/lib/genome.ts +402 -0
- package/lib/got.js +4 -0
- package/lib/got.ts +361 -0
- package/lib/invariants.ts +378 -0
- package/lib/knowledge.ts +768 -0
- package/lib/long-term-roadmap.ts +806 -0
- package/lib/markdown-split.ts +273 -0
- package/lib/mcp-server.ts +3292 -0
- package/lib/metrics.ts +49 -0
- package/lib/overstory.ts +270 -0
- package/lib/parallel.ts +570 -0
- package/lib/paths.ts +293 -0
- package/lib/phase-complete-llm.ts +376 -0
- package/lib/phase-complete.ts +366 -0
- package/lib/phase-io.ts +101 -0
- package/lib/phase.ts +1981 -0
- package/lib/plan-tournament.ts +426 -0
- package/lib/refinement.ts +349 -0
- package/lib/requirements.ts +469 -0
- package/lib/research-bundle.ts +300 -0
- package/lib/roadmap.ts +775 -0
- package/lib/scaffold.ts +480 -0
- package/lib/scan/_utils.ts +37 -0
- package/lib/scan/base64.ts +90 -0
- package/lib/scan/ignorefile.ts +109 -0
- package/lib/scan/injection.ts +67 -0
- package/lib/scan/patterns.ts +139 -0
- package/lib/scan/strip-markdown.ts +39 -0
- package/lib/scan/types.ts +28 -0
- package/lib/scheduler-wait.ts +58 -0
- package/lib/scheduler.ts +1370 -0
- package/lib/state.ts +1000 -0
- package/lib/think.ts +365 -0
- package/lib/tracker.ts +1591 -0
- package/lib/types.ts +1663 -0
- package/lib/utils.ts +1479 -0
- package/lib/verify.ts +1434 -0
- package/lib/wireup/autofix.ts +241 -0
- package/lib/wireup/cli.ts +278 -0
- package/lib/wireup/detection.ts +542 -0
- package/lib/wireup/discovery.ts +1063 -0
- package/lib/wireup/execution.ts +686 -0
- package/lib/wireup/index.ts +117 -0
- package/lib/wireup/orchestrator.ts +519 -0
- package/lib/wireup/report.ts +286 -0
- package/lib/wireup/scenarios.ts +616 -0
- package/lib/wireup/state.ts +139 -0
- package/lib/wireup/types.ts +436 -0
- package/lib/worktree.ts +1309 -0
- package/package.json +67 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GRD Evolve -- Discovery engine
|
|
5
|
+
*
|
|
6
|
+
* Claude-powered and hardcoded codebase discovery, output parsing,
|
|
7
|
+
* and discovery orchestration (runDiscovery, runGroupDiscovery).
|
|
8
|
+
* Dimension-specific discoverers are in ./_dimensions.ts.
|
|
9
|
+
*
|
|
10
|
+
* @dependencies ./types, ./state, ./_dimensions, ../utils, ../autopilot
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type {
|
|
14
|
+
WorkItem,
|
|
15
|
+
WorkItemEffort,
|
|
16
|
+
EvolveState,
|
|
17
|
+
EvolveGroupState,
|
|
18
|
+
GroupDiscoveryResult,
|
|
19
|
+
WorkGroup,
|
|
20
|
+
DiscoveryOptions,
|
|
21
|
+
} from './types';
|
|
22
|
+
|
|
23
|
+
const path = require('path');
|
|
24
|
+
const {
|
|
25
|
+
safeReadFile,
|
|
26
|
+
}: {
|
|
27
|
+
safeReadFile: (filePath: string) => string | null;
|
|
28
|
+
} = require('../utils');
|
|
29
|
+
const {
|
|
30
|
+
spawnClaudeAsync,
|
|
31
|
+
}: {
|
|
32
|
+
spawnClaudeAsync: (
|
|
33
|
+
cwd: string,
|
|
34
|
+
prompt: string,
|
|
35
|
+
opts?: {
|
|
36
|
+
captureOutput?: boolean;
|
|
37
|
+
model?: string;
|
|
38
|
+
maxTurns?: number;
|
|
39
|
+
timeout?: number;
|
|
40
|
+
outputFormat?: string;
|
|
41
|
+
captureStderr?: boolean;
|
|
42
|
+
}
|
|
43
|
+
) => Promise<{
|
|
44
|
+
exitCode: number;
|
|
45
|
+
stdout?: string;
|
|
46
|
+
stderr?: string;
|
|
47
|
+
timedOut: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
} = require('../autopilot');
|
|
50
|
+
const {
|
|
51
|
+
SONNET_MODEL,
|
|
52
|
+
WORK_ITEM_DIMENSIONS,
|
|
53
|
+
DEFAULT_ITEMS_PER_ITERATION,
|
|
54
|
+
DEFAULT_PICK_PCT,
|
|
55
|
+
THEME_PATTERNS,
|
|
56
|
+
createWorkItem,
|
|
57
|
+
mergeWorkItems,
|
|
58
|
+
}: {
|
|
59
|
+
SONNET_MODEL: string;
|
|
60
|
+
WORK_ITEM_DIMENSIONS: string[];
|
|
61
|
+
DEFAULT_ITEMS_PER_ITERATION: number;
|
|
62
|
+
DEFAULT_PICK_PCT: number;
|
|
63
|
+
THEME_PATTERNS: Array<{ pattern: RegExp; theme: string }>;
|
|
64
|
+
createWorkItem: (
|
|
65
|
+
dimension: string,
|
|
66
|
+
slug: string,
|
|
67
|
+
title: string,
|
|
68
|
+
description: string,
|
|
69
|
+
opts?: { effort?: string }
|
|
70
|
+
) => WorkItem;
|
|
71
|
+
mergeWorkItems: (existing: WorkItem[], discovered: WorkItem[]) => WorkItem[];
|
|
72
|
+
} = require('./state');
|
|
73
|
+
const {
|
|
74
|
+
analyzeCodebaseForItems,
|
|
75
|
+
}: {
|
|
76
|
+
analyzeCodebaseForItems: (cwd: string) => WorkItem[];
|
|
77
|
+
} = require('./_dimensions');
|
|
78
|
+
const {
|
|
79
|
+
discoverProductIdeationItems,
|
|
80
|
+
}: {
|
|
81
|
+
discoverProductIdeationItems: (cwd: string, opts?: DiscoveryOptions) => Promise<WorkItem[]>;
|
|
82
|
+
} = require('./_product-ideation');
|
|
83
|
+
|
|
84
|
+
/** Default timeout for discovery subprocesses (3 hours). */
|
|
85
|
+
const DEFAULT_DISCOVERY_TIMEOUT: number = 10_800_000;
|
|
86
|
+
const {
|
|
87
|
+
selectPriorityItems,
|
|
88
|
+
groupDiscoveredItems,
|
|
89
|
+
selectPriorityGroups,
|
|
90
|
+
}: {
|
|
91
|
+
selectPriorityItems: (
|
|
92
|
+
items: WorkItem[],
|
|
93
|
+
count: number
|
|
94
|
+
) => { selected: WorkItem[]; remaining: WorkItem[] };
|
|
95
|
+
groupDiscoveredItems: (
|
|
96
|
+
items: WorkItem[],
|
|
97
|
+
dimensionWeights?: Record<string, number>
|
|
98
|
+
) => WorkGroup[];
|
|
99
|
+
selectPriorityGroups: (
|
|
100
|
+
groups: WorkGroup[],
|
|
101
|
+
pickPct: number
|
|
102
|
+
) => { selected: WorkGroup[]; remaining: WorkGroup[] };
|
|
103
|
+
} = require('./scoring');
|
|
104
|
+
|
|
105
|
+
const fs = require('fs');
|
|
106
|
+
|
|
107
|
+
// ─── Saturated Dimensions ───────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Dimensions that have been verified as 100% false-positive for 5+ consecutive
|
|
111
|
+
* iterations. Items in these themes are filtered out before grouping to avoid
|
|
112
|
+
* wasting subprocess calls on work that's already been done.
|
|
113
|
+
*/
|
|
114
|
+
const SATURATED_THEMES: Set<string> = new Set([
|
|
115
|
+
'error-recovery',
|
|
116
|
+
'agent-workflow-gaps',
|
|
117
|
+
'process-exit-cleanup',
|
|
118
|
+
'long-function-refactors',
|
|
119
|
+
'jsdoc-gaps',
|
|
120
|
+
]);
|
|
121
|
+
|
|
122
|
+
// ─── Codebase Digest ────────────────────────────────────────────────────────
|
|
123
|
+
|
|
124
|
+
/** File extensions to include in codebase digest. */
|
|
125
|
+
const CODE_EXTENSIONS: Set<string> = new Set([
|
|
126
|
+
'.ts',
|
|
127
|
+
'.js',
|
|
128
|
+
'.tsx',
|
|
129
|
+
'.jsx',
|
|
130
|
+
'.py',
|
|
131
|
+
'.rs',
|
|
132
|
+
'.go',
|
|
133
|
+
'.java',
|
|
134
|
+
'.kt',
|
|
135
|
+
'.rb',
|
|
136
|
+
'.php',
|
|
137
|
+
'.swift',
|
|
138
|
+
'.c',
|
|
139
|
+
'.cpp',
|
|
140
|
+
'.h',
|
|
141
|
+
'.hpp',
|
|
142
|
+
'.cs',
|
|
143
|
+
'.vue',
|
|
144
|
+
'.svelte',
|
|
145
|
+
'.astro',
|
|
146
|
+
'.sql',
|
|
147
|
+
'.sh',
|
|
148
|
+
'.bash',
|
|
149
|
+
'.zsh',
|
|
150
|
+
]);
|
|
151
|
+
|
|
152
|
+
/** Directories to always skip. */
|
|
153
|
+
const SKIP_DIRS: Set<string> = new Set([
|
|
154
|
+
'node_modules',
|
|
155
|
+
'.git',
|
|
156
|
+
'.next',
|
|
157
|
+
'.nuxt',
|
|
158
|
+
'dist',
|
|
159
|
+
'build',
|
|
160
|
+
'out',
|
|
161
|
+
'.cache',
|
|
162
|
+
'.turbo',
|
|
163
|
+
'.vercel',
|
|
164
|
+
'__pycache__',
|
|
165
|
+
'.tox',
|
|
166
|
+
'.mypy_cache',
|
|
167
|
+
'target',
|
|
168
|
+
'vendor',
|
|
169
|
+
'.worktrees',
|
|
170
|
+
'.planning',
|
|
171
|
+
'coverage',
|
|
172
|
+
]);
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Recursively collect source files from a directory (max 2 levels deep).
|
|
176
|
+
*/
|
|
177
|
+
function _collectSourceFiles(
|
|
178
|
+
baseDir: string,
|
|
179
|
+
relPrefix: string,
|
|
180
|
+
depth: number,
|
|
181
|
+
maxDepth: number
|
|
182
|
+
): string[] {
|
|
183
|
+
if (depth > maxDepth) return [];
|
|
184
|
+
const results: string[] = [];
|
|
185
|
+
let entries: Array<{ isFile: () => boolean; isDirectory: () => boolean; name: string }>;
|
|
186
|
+
try {
|
|
187
|
+
entries = fs.readdirSync(baseDir, { withFileTypes: true });
|
|
188
|
+
} catch {
|
|
189
|
+
return results;
|
|
190
|
+
}
|
|
191
|
+
const names: Set<string> = new Set(entries.map((e: { name: string }) => e.name));
|
|
192
|
+
for (const entry of entries) {
|
|
193
|
+
if (entry.name.startsWith('.')) continue;
|
|
194
|
+
if (entry.isDirectory()) {
|
|
195
|
+
if (SKIP_DIRS.has(entry.name)) continue;
|
|
196
|
+
const sub: string = relPrefix ? `${relPrefix}/${entry.name}` : entry.name;
|
|
197
|
+
results.push(
|
|
198
|
+
..._collectSourceFiles(path.join(baseDir, entry.name), sub, depth + 1, maxDepth)
|
|
199
|
+
);
|
|
200
|
+
} else if (entry.isFile()) {
|
|
201
|
+
const ext: string = path.extname(entry.name);
|
|
202
|
+
if (!CODE_EXTENSIONS.has(ext)) continue;
|
|
203
|
+
// Skip JS files that have a matching TS file
|
|
204
|
+
if (ext === '.js' && names.has(entry.name.replace(/\.js$/, '.ts'))) continue;
|
|
205
|
+
if (ext === '.jsx' && names.has(entry.name.replace(/\.jsx$/, '.tsx'))) continue;
|
|
206
|
+
const rel: string = relPrefix ? `${relPrefix}/${entry.name}` : entry.name;
|
|
207
|
+
const content: string | null = safeReadFile(path.join(baseDir, entry.name));
|
|
208
|
+
const lineCount: number = content ? content.split('\n').length : 0;
|
|
209
|
+
results.push(`${rel} (${lineCount}L)`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return results;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Build a compact file tree with line counts for Claude-powered discovery.
|
|
217
|
+
* Dynamically scans the project's actual directories (max 2 levels deep).
|
|
218
|
+
*/
|
|
219
|
+
function buildCodebaseDigest(cwd: string): string {
|
|
220
|
+
const files: string[] = _collectSourceFiles(cwd, '', 0, 2);
|
|
221
|
+
files.sort();
|
|
222
|
+
return files.join('\n');
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Build the discovery prompt with a file tree and optional exclusions.
|
|
227
|
+
*/
|
|
228
|
+
function buildDiscoveryPrompt(cwd: string, completedTitles?: string[]): string {
|
|
229
|
+
const tree: string = buildCodebaseDigest(cwd);
|
|
230
|
+
|
|
231
|
+
const exclusionBlock: string =
|
|
232
|
+
completedTitles && completedTitles.length > 0
|
|
233
|
+
? `\nDo NOT rediscover these already-completed items:\n${completedTitles.map((t) => `- ${t}`).join('\n')}\n`
|
|
234
|
+
: '';
|
|
235
|
+
|
|
236
|
+
return `Analyze this codebase for concrete, immediately implementable improvements. Read the source files you need. Here is the file tree:
|
|
237
|
+
|
|
238
|
+
${tree}
|
|
239
|
+
${exclusionBlock}
|
|
240
|
+
Output ONLY a JSON array. Each item:
|
|
241
|
+
{"dimension":"<dim>","slug":"<kebab-id>","title":"<short>","description":"<EXACT change: which file, which function/line, what to add/change/remove, and why>","effort":"small|medium|large"}
|
|
242
|
+
|
|
243
|
+
Dimensions: productivity, quality, usability, consistency, stability, improve-features, new-features
|
|
244
|
+
|
|
245
|
+
Rules:
|
|
246
|
+
- Read source files to find real, specific issues — open and read the files before suggesting changes
|
|
247
|
+
- Every item MUST specify: exact file path, function/line, and what code to write or change
|
|
248
|
+
- Bad example: "Add input validation to CLI commands" (too vague)
|
|
249
|
+
- Good example: "Add null check for opts.timeout in lib/autopilot.ts:spawnClaudeAsync (~line 362) — currently crashes if timeout is 0 because setTimeout(fn, 0) is treated as no timeout"
|
|
250
|
+
- Focus on real code changes: bug fixes, missing error handling, new utility functions, test cases, feature improvements
|
|
251
|
+
- Do NOT suggest: JSDoc, documentation, markdown files, process.exit cleanup, splitting long functions, agent init workflows
|
|
252
|
+
- 5-10 items only — quality over quantity, each must be directly implementable
|
|
253
|
+
- ONLY the JSON array, no other text`;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// ─── Claude-Powered Discovery ───────────────────────────────────────────────
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Discover code-quality improvement opportunities by running Claude as a subprocess.
|
|
260
|
+
* (Renamed from discoverWithClaude -- handles the code-quality dimension only.)
|
|
261
|
+
*/
|
|
262
|
+
async function _discoverCodeQualityWithClaude(
|
|
263
|
+
cwd: string,
|
|
264
|
+
completedTitles?: string[],
|
|
265
|
+
opts?: DiscoveryOptions
|
|
266
|
+
): Promise<WorkItem[]> {
|
|
267
|
+
try {
|
|
268
|
+
const effectiveTimeout: number = opts?.timeoutMs || DEFAULT_DISCOVERY_TIMEOUT;
|
|
269
|
+
const scheduler = opts?.scheduler;
|
|
270
|
+
const prompt: string = buildDiscoveryPrompt(cwd, completedTitles);
|
|
271
|
+
const result = scheduler
|
|
272
|
+
? await scheduler.spawn(prompt, {
|
|
273
|
+
model: SONNET_MODEL,
|
|
274
|
+
maxTurns: 15,
|
|
275
|
+
timeout: effectiveTimeout,
|
|
276
|
+
captureOutput: true,
|
|
277
|
+
cwd,
|
|
278
|
+
workItemId: `evolve-discovery-code-quality-${Date.now()}`,
|
|
279
|
+
agentType: 'grd-codebase-mapper',
|
|
280
|
+
})
|
|
281
|
+
: await spawnClaudeAsync(cwd, prompt, {
|
|
282
|
+
captureOutput: true,
|
|
283
|
+
model: SONNET_MODEL,
|
|
284
|
+
maxTurns: 15,
|
|
285
|
+
timeout: effectiveTimeout,
|
|
286
|
+
outputFormat: 'text',
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
if (result.exitCode !== 0 || !result.stdout) {
|
|
290
|
+
if (result.timedOut) {
|
|
291
|
+
process.stderr.write(
|
|
292
|
+
`[evolve] WARNING: Claude discovery timed out after timeout limit, using hardcoded fallback\n`
|
|
293
|
+
);
|
|
294
|
+
} else {
|
|
295
|
+
process.stderr.write(
|
|
296
|
+
`[evolve] Claude discovery failed (exit=${result.exitCode}, timedOut=${result.timedOut}), using hardcoded fallback\n`
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
return analyzeCodebaseForItems(cwd);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Check for max-turns error message in stdout
|
|
303
|
+
if (result.stdout.startsWith('Error:')) {
|
|
304
|
+
process.stderr.write(
|
|
305
|
+
`[evolve] Claude discovery error: ${result.stdout.trim()}, using hardcoded fallback\n`
|
|
306
|
+
);
|
|
307
|
+
return analyzeCodebaseForItems(cwd);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const items: WorkItem[] = parseDiscoveryOutput(result.stdout);
|
|
311
|
+
if (items.length === 0) {
|
|
312
|
+
process.stderr.write(
|
|
313
|
+
`[evolve] Claude discovery returned unparseable output (${result.stdout.length} chars), using hardcoded fallback\n`
|
|
314
|
+
);
|
|
315
|
+
return analyzeCodebaseForItems(cwd);
|
|
316
|
+
}
|
|
317
|
+
return items;
|
|
318
|
+
} catch (err) {
|
|
319
|
+
process.stderr.write(
|
|
320
|
+
`[evolve] Claude discovery threw: ${(err as Error).message}, using hardcoded fallback\n`
|
|
321
|
+
);
|
|
322
|
+
return analyzeCodebaseForItems(cwd);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Discover ALL improvement opportunities: code-quality AND product ideation.
|
|
328
|
+
* Runs both discovery pathways in parallel and merges the results.
|
|
329
|
+
*/
|
|
330
|
+
async function discoverWithClaude(
|
|
331
|
+
cwd: string,
|
|
332
|
+
completedTitles?: string[],
|
|
333
|
+
opts?: DiscoveryOptions
|
|
334
|
+
): Promise<WorkItem[]> {
|
|
335
|
+
// Run both discovery pathways in parallel.
|
|
336
|
+
// IMPORTANT: Wrap discoverProductIdeationItems in .catch so an unexpected
|
|
337
|
+
// throw (as opposed to the graceful empty-array return it already does
|
|
338
|
+
// internally) cannot reject the Promise.all and crash the whole pipeline.
|
|
339
|
+
const [codeQualityItems, productIdeationItems] = await Promise.all([
|
|
340
|
+
_discoverCodeQualityWithClaude(cwd, completedTitles, opts),
|
|
341
|
+
discoverProductIdeationItems(cwd, opts).catch((err) => {
|
|
342
|
+
process.stderr.write(
|
|
343
|
+
`[evolve] Product ideation discovery failed unexpectedly: ${(err as Error).message}\n`
|
|
344
|
+
);
|
|
345
|
+
return [] as WorkItem[];
|
|
346
|
+
}),
|
|
347
|
+
]);
|
|
348
|
+
|
|
349
|
+
// Merge: product ideation items come first (they have higher dimension weight)
|
|
350
|
+
return [...productIdeationItems, ...codeQualityItems];
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Parse Claude's discovery output into validated work items.
|
|
355
|
+
*/
|
|
356
|
+
function parseDiscoveryOutput(raw: string): WorkItem[] {
|
|
357
|
+
let jsonStr: string = raw.trim();
|
|
358
|
+
|
|
359
|
+
// Strip markdown fences if present
|
|
360
|
+
const fenceMatch: RegExpMatchArray | null = jsonStr.match(
|
|
361
|
+
/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/
|
|
362
|
+
);
|
|
363
|
+
if (fenceMatch) {
|
|
364
|
+
jsonStr = fenceMatch[1].trim();
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
let parsed: unknown;
|
|
368
|
+
try {
|
|
369
|
+
parsed = JSON.parse(jsonStr);
|
|
370
|
+
} catch {
|
|
371
|
+
return [];
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (!Array.isArray(parsed)) {
|
|
375
|
+
return [];
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const validEfforts: string[] = ['small', 'medium', 'large'];
|
|
379
|
+
const items: WorkItem[] = [];
|
|
380
|
+
|
|
381
|
+
for (const entry of parsed as Array<Record<string, unknown>>) {
|
|
382
|
+
if (
|
|
383
|
+
!entry ||
|
|
384
|
+
typeof entry.dimension !== 'string' ||
|
|
385
|
+
typeof entry.slug !== 'string' ||
|
|
386
|
+
typeof entry.title !== 'string' ||
|
|
387
|
+
typeof entry.description !== 'string'
|
|
388
|
+
) {
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (!WORK_ITEM_DIMENSIONS.includes(entry.dimension)) {
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
const effort: WorkItemEffort = validEfforts.includes(entry.effort as string)
|
|
397
|
+
? (entry.effort as WorkItemEffort)
|
|
398
|
+
: 'medium';
|
|
399
|
+
|
|
400
|
+
try {
|
|
401
|
+
items.push(
|
|
402
|
+
createWorkItem(entry.dimension, entry.slug, entry.title, entry.description, { effort })
|
|
403
|
+
);
|
|
404
|
+
} catch {
|
|
405
|
+
// Skip invalid items
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// Warn when >50% of items have off-theme slugs
|
|
410
|
+
if (items.length > 0) {
|
|
411
|
+
const offThemeCount: number = items.filter((item) => {
|
|
412
|
+
return !THEME_PATTERNS.some(({ pattern }) => pattern.test(item.slug));
|
|
413
|
+
}).length;
|
|
414
|
+
if (offThemeCount / items.length > 0.5) {
|
|
415
|
+
process.stderr.write(
|
|
416
|
+
`[evolve] WARNING: ${offThemeCount}/${items.length} items do not match any theme pattern — Claude may be generating off-theme slugs\n`
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return items;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// ─── Discovery Orchestrators ────────────────────────────────────────────────
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Run the full discovery flow: analyze codebase, merge with previous state,
|
|
428
|
+
* and select priority items.
|
|
429
|
+
*/
|
|
430
|
+
async function runDiscovery(
|
|
431
|
+
cwd: string,
|
|
432
|
+
previousState: EvolveState | null
|
|
433
|
+
): Promise<{
|
|
434
|
+
selected: WorkItem[];
|
|
435
|
+
remaining: WorkItem[];
|
|
436
|
+
all_discovered_count: number;
|
|
437
|
+
merged_count: number;
|
|
438
|
+
}> {
|
|
439
|
+
const freshItems: WorkItem[] = await discoverWithClaude(cwd);
|
|
440
|
+
const allDiscoveredCount: number = freshItems.length;
|
|
441
|
+
|
|
442
|
+
let mergePool: WorkItem[] = freshItems;
|
|
443
|
+
|
|
444
|
+
if (previousState) {
|
|
445
|
+
// Merge with remaining items from previous state
|
|
446
|
+
if (previousState.remaining && previousState.remaining.length > 0) {
|
|
447
|
+
mergePool = mergeWorkItems(previousState.remaining, freshItems);
|
|
448
|
+
}
|
|
449
|
+
// Merge in bugfix items from previous state
|
|
450
|
+
if (previousState.bugfix && previousState.bugfix.length > 0) {
|
|
451
|
+
mergePool = mergeWorkItems(mergePool, previousState.bugfix);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
const mergedCount: number = mergePool.length;
|
|
456
|
+
const itemsPerIteration: number = previousState
|
|
457
|
+
? previousState.items_per_iteration || DEFAULT_ITEMS_PER_ITERATION
|
|
458
|
+
: DEFAULT_ITEMS_PER_ITERATION;
|
|
459
|
+
|
|
460
|
+
const { selected, remaining } = selectPriorityItems(mergePool, itemsPerIteration);
|
|
461
|
+
|
|
462
|
+
return {
|
|
463
|
+
selected,
|
|
464
|
+
remaining,
|
|
465
|
+
all_discovered_count: allDiscoveredCount,
|
|
466
|
+
merged_count: mergedCount,
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Run full discovery flow returning groups instead of flat items.
|
|
472
|
+
*/
|
|
473
|
+
async function runGroupDiscovery(
|
|
474
|
+
cwd: string,
|
|
475
|
+
previousState: EvolveGroupState | EvolveState | null,
|
|
476
|
+
pickPct?: number,
|
|
477
|
+
opts?: DiscoveryOptions
|
|
478
|
+
): Promise<GroupDiscoveryResult> {
|
|
479
|
+
// Extract completed titles from history to prevent rediscovery
|
|
480
|
+
const stateAsLegacy = previousState as EvolveState | null;
|
|
481
|
+
const stateAsGroup = previousState as EvolveGroupState | null;
|
|
482
|
+
const completedTitles: string[] = stateAsGroup?.completed_groups
|
|
483
|
+
? stateAsGroup.completed_groups.flatMap((g) => g.items.map((i: WorkItem) => i.title))
|
|
484
|
+
: [];
|
|
485
|
+
|
|
486
|
+
const freshItems: WorkItem[] = await discoverWithClaude(cwd, completedTitles, opts);
|
|
487
|
+
const allItemsCount: number = freshItems.length;
|
|
488
|
+
|
|
489
|
+
let mergePool: WorkItem[] = freshItems;
|
|
490
|
+
|
|
491
|
+
if (previousState && stateAsLegacy?.remaining && !stateAsGroup?.remaining_groups) {
|
|
492
|
+
const oldItems: WorkItem[] = stateAsLegacy.remaining.filter(
|
|
493
|
+
(i: WorkItem) => i.status === 'pending'
|
|
494
|
+
);
|
|
495
|
+
if (stateAsLegacy.bugfix && stateAsLegacy.bugfix.length > 0) {
|
|
496
|
+
mergePool = mergeWorkItems(mergeWorkItems(oldItems, freshItems), stateAsLegacy.bugfix);
|
|
497
|
+
} else {
|
|
498
|
+
mergePool = mergeWorkItems(oldItems, freshItems);
|
|
499
|
+
}
|
|
500
|
+
} else if (previousState && stateAsGroup?.remaining_groups) {
|
|
501
|
+
// New format: merge previous remaining groups' items back into pool for re-grouping
|
|
502
|
+
const prevItems: WorkItem[] = [];
|
|
503
|
+
for (const group of stateAsGroup.remaining_groups) {
|
|
504
|
+
if (group.status === 'pending') {
|
|
505
|
+
prevItems.push(...group.items);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
mergePool = mergeWorkItems(prevItems, freshItems);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
// Filter out items belonging to saturated themes (100% false-positive for 5+ iterations)
|
|
512
|
+
const preFilterCount: number = mergePool.length;
|
|
513
|
+
mergePool = mergePool.filter((item) => {
|
|
514
|
+
for (const { pattern, theme } of THEME_PATTERNS) {
|
|
515
|
+
if (pattern.test(item.slug) && SATURATED_THEMES.has(theme)) {
|
|
516
|
+
return false;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return true;
|
|
520
|
+
});
|
|
521
|
+
if (mergePool.length < preFilterCount) {
|
|
522
|
+
process.stderr.write(
|
|
523
|
+
`[evolve] Filtered ${preFilterCount - mergePool.length} items from saturated themes\n`
|
|
524
|
+
);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Deduplicate against completed groups from history
|
|
528
|
+
if (previousState && stateAsGroup?.completed_groups) {
|
|
529
|
+
const completedIds = new Set<string>(
|
|
530
|
+
stateAsGroup.completed_groups.flatMap((g) => g.items.map((i: WorkItem) => i.id))
|
|
531
|
+
);
|
|
532
|
+
if (completedIds.size > 0) {
|
|
533
|
+
const beforeDedup: number = mergePool.length;
|
|
534
|
+
mergePool = mergePool.filter((item) => !completedIds.has(item.id));
|
|
535
|
+
if (mergePool.length < beforeDedup) {
|
|
536
|
+
process.stderr.write(
|
|
537
|
+
`[evolve] Deduped ${beforeDedup - mergePool.length} items already completed in prior iterations\n`
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
const effectivePickPct: number = pickPct !== undefined ? pickPct : DEFAULT_PICK_PCT;
|
|
544
|
+
const groups: WorkGroup[] = groupDiscoveredItems(mergePool);
|
|
545
|
+
const { selected, remaining } = selectPriorityGroups(groups, effectivePickPct);
|
|
546
|
+
|
|
547
|
+
return {
|
|
548
|
+
groups,
|
|
549
|
+
selected_groups: selected,
|
|
550
|
+
remaining_groups: remaining,
|
|
551
|
+
all_items_count: allItemsCount,
|
|
552
|
+
merged_items_count: mergePool.length,
|
|
553
|
+
groups_count: groups.length,
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// ─── Exports ────────────────────────────────────────────────────────────────
|
|
558
|
+
|
|
559
|
+
module.exports = {
|
|
560
|
+
// Re-export dimension functions for backward compat
|
|
561
|
+
discoverImproveFeatureItems: require('./_dimensions-features').discoverImproveFeatureItems,
|
|
562
|
+
analyzeCodebaseForItems: require('./_dimensions').analyzeCodebaseForItems,
|
|
563
|
+
// Framework functions
|
|
564
|
+
buildCodebaseDigest,
|
|
565
|
+
buildDiscoveryPrompt,
|
|
566
|
+
discoverWithClaude,
|
|
567
|
+
parseDiscoveryOutput,
|
|
568
|
+
// Orchestrators
|
|
569
|
+
runDiscovery,
|
|
570
|
+
runGroupDiscovery,
|
|
571
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GRD Evolve -- Barrel re-export
|
|
5
|
+
*
|
|
6
|
+
* Re-exports all 44 public symbols from the evolve sub-modules.
|
|
7
|
+
* This file is the single entry point for consumers of lib/evolve/.
|
|
8
|
+
*
|
|
9
|
+
* @see lib/evolve/types.ts -- Domain types (re-exported via module.exports)
|
|
10
|
+
* @see lib/evolve/state.ts -- Constants, state I/O, work item factory
|
|
11
|
+
* @see lib/evolve/discovery.ts -- Discovery engine + orchestrators
|
|
12
|
+
* @see lib/evolve/scoring.ts -- Scoring heuristic + group engine
|
|
13
|
+
* @see lib/evolve/orchestrator.ts -- Evolve loop + todos
|
|
14
|
+
* @see lib/evolve/_prompts.ts -- Prompt templates
|
|
15
|
+
* @see lib/evolve/_product-ideation.ts -- Product ideation discovery
|
|
16
|
+
* @see lib/evolve/cli.ts -- CLI command functions
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
// ─── State (constants + state I/O + work item factory) ──────────────────────
|
|
20
|
+
|
|
21
|
+
const stateModule = require('./state');
|
|
22
|
+
const discoveryModule = require('./discovery');
|
|
23
|
+
const scoringModule = require('./scoring');
|
|
24
|
+
const orchestratorModule = require('./orchestrator');
|
|
25
|
+
const promptsModule = require('./_prompts');
|
|
26
|
+
const cliModule = require('./cli');
|
|
27
|
+
const productIdeationModule = require('./_product-ideation');
|
|
28
|
+
|
|
29
|
+
module.exports = {
|
|
30
|
+
// ─── Constants (from state.ts) ──────────────────────────────────────────
|
|
31
|
+
EVOLVE_STATE_FILENAME: stateModule.EVOLVE_STATE_FILENAME,
|
|
32
|
+
WORK_ITEM_DIMENSIONS: stateModule.WORK_ITEM_DIMENSIONS,
|
|
33
|
+
DEFAULT_ITEMS_PER_ITERATION: stateModule.DEFAULT_ITEMS_PER_ITERATION,
|
|
34
|
+
DEFAULT_PICK_PCT: stateModule.DEFAULT_PICK_PCT,
|
|
35
|
+
THEME_PATTERNS: stateModule.THEME_PATTERNS,
|
|
36
|
+
SONNET_MODEL: stateModule.SONNET_MODEL,
|
|
37
|
+
|
|
38
|
+
// ─── Work item factory (from state.ts) ──────────────────────────────────
|
|
39
|
+
createWorkItem: stateModule.createWorkItem,
|
|
40
|
+
|
|
41
|
+
// ─── State path (from state.ts) ─────────────────────────────────────────
|
|
42
|
+
evolveStatePath: stateModule.evolveStatePath,
|
|
43
|
+
|
|
44
|
+
// ─── State I/O (from state.ts) ──────────────────────────────────────────
|
|
45
|
+
readEvolveState: stateModule.readEvolveState,
|
|
46
|
+
writeEvolveState: stateModule.writeEvolveState,
|
|
47
|
+
|
|
48
|
+
// ─── State creation (from state.ts) ─────────────────────────────────────
|
|
49
|
+
createInitialState: stateModule.createInitialState,
|
|
50
|
+
|
|
51
|
+
// ─── Merge logic (from state.ts) ────────────────────────────────────────
|
|
52
|
+
mergeWorkItems: stateModule.mergeWorkItems,
|
|
53
|
+
|
|
54
|
+
// ─── Iteration advancement (from state.ts) ──────────────────────────────
|
|
55
|
+
advanceIteration: stateModule.advanceIteration,
|
|
56
|
+
|
|
57
|
+
// ─── Discovery engine (from discovery.ts) ───────────────────────────────
|
|
58
|
+
discoverImproveFeatureItems: discoveryModule.discoverImproveFeatureItems,
|
|
59
|
+
analyzeCodebaseForItems: discoveryModule.analyzeCodebaseForItems,
|
|
60
|
+
buildCodebaseDigest: discoveryModule.buildCodebaseDigest,
|
|
61
|
+
buildDiscoveryPrompt: discoveryModule.buildDiscoveryPrompt,
|
|
62
|
+
discoverWithClaude: discoveryModule.discoverWithClaude,
|
|
63
|
+
parseDiscoveryOutput: discoveryModule.parseDiscoveryOutput,
|
|
64
|
+
|
|
65
|
+
// ─── Scoring heuristic (from scoring.ts) ────────────────────────────────
|
|
66
|
+
scoreWorkItem: scoringModule.scoreWorkItem,
|
|
67
|
+
|
|
68
|
+
// ─── Priority selection (from scoring.ts) ───────────────────────────────
|
|
69
|
+
selectPriorityItems: scoringModule.selectPriorityItems,
|
|
70
|
+
|
|
71
|
+
// ─── Group engine (from scoring.ts) ─────────────────────────────────────
|
|
72
|
+
groupDiscoveredItems: scoringModule.groupDiscoveredItems,
|
|
73
|
+
selectPriorityGroups: scoringModule.selectPriorityGroups,
|
|
74
|
+
|
|
75
|
+
// ─── Discovery orchestrator (from discovery.ts) ─────────────────────────
|
|
76
|
+
runDiscovery: discoveryModule.runDiscovery,
|
|
77
|
+
runGroupDiscovery: discoveryModule.runGroupDiscovery,
|
|
78
|
+
|
|
79
|
+
// ─── Product ideation discovery (from _product-ideation.ts) ─────────────
|
|
80
|
+
gatherProductContext: productIdeationModule.gatherProductContext,
|
|
81
|
+
buildProductIdeationPrompt: productIdeationModule.buildProductIdeationPrompt,
|
|
82
|
+
parseProductIdeationOutput: productIdeationModule.parseProductIdeationOutput,
|
|
83
|
+
discoverProductIdeationItems: productIdeationModule.discoverProductIdeationItems,
|
|
84
|
+
|
|
85
|
+
// ─── Prompt builders (from _prompts.ts) ─────────────────────────────────
|
|
86
|
+
buildPlanPrompt: promptsModule.buildPlanPrompt,
|
|
87
|
+
buildExecutePrompt: promptsModule.buildExecutePrompt,
|
|
88
|
+
buildReviewPrompt: promptsModule.buildReviewPrompt,
|
|
89
|
+
buildGroupExecutePrompt: promptsModule.buildGroupExecutePrompt,
|
|
90
|
+
buildGroupReviewPrompt: promptsModule.buildGroupReviewPrompt,
|
|
91
|
+
|
|
92
|
+
// ─── Orchestrator (from orchestrator.ts) ────────────────────────────────
|
|
93
|
+
writeEvolutionNotes: orchestratorModule.writeEvolutionNotes,
|
|
94
|
+
writeDiscoveriesToTodos: orchestratorModule.writeDiscoveriesToTodos,
|
|
95
|
+
runEvolve: orchestratorModule.runEvolve,
|
|
96
|
+
runInfiniteEvolve: orchestratorModule.runInfiniteEvolve,
|
|
97
|
+
|
|
98
|
+
// ─── CLI commands (from cli.ts) ─────────────────────────────────────────
|
|
99
|
+
cmdEvolve: cliModule.cmdEvolve,
|
|
100
|
+
cmdEvolveDiscover: cliModule.cmdEvolveDiscover,
|
|
101
|
+
cmdEvolveState: cliModule.cmdEvolveState,
|
|
102
|
+
cmdEvolveAdvance: cliModule.cmdEvolveAdvance,
|
|
103
|
+
cmdEvolveReset: cliModule.cmdEvolveReset,
|
|
104
|
+
cmdInitEvolve: cliModule.cmdInitEvolve,
|
|
105
|
+
};
|