soloforge 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/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/adapters/claude_code/claude_md.d.ts +3 -0
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -0
- package/dist/adapters/claude_code/claude_md.js +79 -0
- package/dist/adapters/claude_code/claude_md.js.map +1 -0
- package/dist/adapters/claude_code/hooks.d.ts +3 -0
- package/dist/adapters/claude_code/hooks.d.ts.map +1 -0
- package/dist/adapters/claude_code/hooks.js +30 -0
- package/dist/adapters/claude_code/hooks.js.map +1 -0
- package/dist/adapters/claude_code/server.d.ts +10 -0
- package/dist/adapters/claude_code/server.d.ts.map +1 -0
- package/dist/adapters/claude_code/server.js +75 -0
- package/dist/adapters/claude_code/server.js.map +1 -0
- package/dist/adapters/claude_code/tools.d.ts +15 -0
- package/dist/adapters/claude_code/tools.d.ts.map +1 -0
- package/dist/adapters/claude_code/tools.js +758 -0
- package/dist/adapters/claude_code/tools.js.map +1 -0
- package/dist/adapters/trae/trae_config.d.ts +2 -0
- package/dist/adapters/trae/trae_config.d.ts.map +1 -0
- package/dist/adapters/trae/trae_config.js +22 -0
- package/dist/adapters/trae/trae_config.js.map +1 -0
- package/dist/adapters/trae/trae_rules.d.ts +3 -0
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -0
- package/dist/adapters/trae/trae_rules.js +85 -0
- package/dist/adapters/trae/trae_rules.js.map +1 -0
- package/dist/bin/soloforge.d.ts +3 -0
- package/dist/bin/soloforge.d.ts.map +1 -0
- package/dist/bin/soloforge.js +353 -0
- package/dist/bin/soloforge.js.map +1 -0
- package/dist/engine/adr_recorder.d.ts +13 -0
- package/dist/engine/adr_recorder.d.ts.map +1 -0
- package/dist/engine/adr_recorder.js +132 -0
- package/dist/engine/adr_recorder.js.map +1 -0
- package/dist/engine/change_coordinator.d.ts +17 -0
- package/dist/engine/change_coordinator.d.ts.map +1 -0
- package/dist/engine/change_coordinator.js +138 -0
- package/dist/engine/change_coordinator.js.map +1 -0
- package/dist/engine/classifier.d.ts +7 -0
- package/dist/engine/classifier.d.ts.map +1 -0
- package/dist/engine/classifier.js +135 -0
- package/dist/engine/classifier.js.map +1 -0
- package/dist/engine/code_reviewer.d.ts +15 -0
- package/dist/engine/code_reviewer.d.ts.map +1 -0
- package/dist/engine/code_reviewer.js +371 -0
- package/dist/engine/code_reviewer.js.map +1 -0
- package/dist/engine/confidence_scorer.d.ts +11 -0
- package/dist/engine/confidence_scorer.d.ts.map +1 -0
- package/dist/engine/confidence_scorer.js +30 -0
- package/dist/engine/confidence_scorer.js.map +1 -0
- package/dist/engine/contract_guard.d.ts +10 -0
- package/dist/engine/contract_guard.d.ts.map +1 -0
- package/dist/engine/contract_guard.js +471 -0
- package/dist/engine/contract_guard.js.map +1 -0
- package/dist/engine/convention_detector.d.ts +7 -0
- package/dist/engine/convention_detector.d.ts.map +1 -0
- package/dist/engine/convention_detector.js +93 -0
- package/dist/engine/convention_detector.js.map +1 -0
- package/dist/engine/debt_reporter.d.ts +4 -0
- package/dist/engine/debt_reporter.d.ts.map +1 -0
- package/dist/engine/debt_reporter.js +67 -0
- package/dist/engine/debt_reporter.js.map +1 -0
- package/dist/engine/debt_tracker.d.ts +20 -0
- package/dist/engine/debt_tracker.d.ts.map +1 -0
- package/dist/engine/debt_tracker.js +152 -0
- package/dist/engine/debt_tracker.js.map +1 -0
- package/dist/engine/debugger.d.ts +3 -0
- package/dist/engine/debugger.d.ts.map +1 -0
- package/dist/engine/debugger.js +291 -0
- package/dist/engine/debugger.js.map +1 -0
- package/dist/engine/delivery.d.ts +15 -0
- package/dist/engine/delivery.d.ts.map +1 -0
- package/dist/engine/delivery.js +182 -0
- package/dist/engine/delivery.js.map +1 -0
- package/dist/engine/dependency_scanner.d.ts +13 -0
- package/dist/engine/dependency_scanner.d.ts.map +1 -0
- package/dist/engine/dependency_scanner.js +275 -0
- package/dist/engine/dependency_scanner.js.map +1 -0
- package/dist/engine/evolver.d.ts +15 -0
- package/dist/engine/evolver.d.ts.map +1 -0
- package/dist/engine/evolver.js +167 -0
- package/dist/engine/evolver.js.map +1 -0
- package/dist/engine/failure_classifier.d.ts +11 -0
- package/dist/engine/failure_classifier.d.ts.map +1 -0
- package/dist/engine/failure_classifier.js +120 -0
- package/dist/engine/failure_classifier.js.map +1 -0
- package/dist/engine/feasibility_checker.d.ts +6 -0
- package/dist/engine/feasibility_checker.d.ts.map +1 -0
- package/dist/engine/feasibility_checker.js +88 -0
- package/dist/engine/feasibility_checker.js.map +1 -0
- package/dist/engine/git_deps.d.ts +37 -0
- package/dist/engine/git_deps.d.ts.map +1 -0
- package/dist/engine/git_deps.js +3 -0
- package/dist/engine/git_deps.js.map +1 -0
- package/dist/engine/impact_analyzer.d.ts +10 -0
- package/dist/engine/impact_analyzer.d.ts.map +1 -0
- package/dist/engine/impact_analyzer.js +171 -0
- package/dist/engine/impact_analyzer.js.map +1 -0
- package/dist/engine/intent_expander.d.ts +17 -0
- package/dist/engine/intent_expander.d.ts.map +1 -0
- package/dist/engine/intent_expander.js +447 -0
- package/dist/engine/intent_expander.js.map +1 -0
- package/dist/engine/knowledge_manager.d.ts +76 -0
- package/dist/engine/knowledge_manager.d.ts.map +1 -0
- package/dist/engine/knowledge_manager.js +781 -0
- package/dist/engine/knowledge_manager.js.map +1 -0
- package/dist/engine/migration_guard.d.ts +3 -0
- package/dist/engine/migration_guard.d.ts.map +1 -0
- package/dist/engine/migration_guard.js +235 -0
- package/dist/engine/migration_guard.js.map +1 -0
- package/dist/engine/observability.d.ts +33 -0
- package/dist/engine/observability.d.ts.map +1 -0
- package/dist/engine/observability.js +312 -0
- package/dist/engine/observability.js.map +1 -0
- package/dist/engine/onboarding.d.ts +27 -0
- package/dist/engine/onboarding.d.ts.map +1 -0
- package/dist/engine/onboarding.js +362 -0
- package/dist/engine/onboarding.js.map +1 -0
- package/dist/engine/prompt_experiment.d.ts +18 -0
- package/dist/engine/prompt_experiment.d.ts.map +1 -0
- package/dist/engine/prompt_experiment.js +127 -0
- package/dist/engine/prompt_experiment.js.map +1 -0
- package/dist/engine/resilience.d.ts +20 -0
- package/dist/engine/resilience.d.ts.map +1 -0
- package/dist/engine/resilience.js +210 -0
- package/dist/engine/resilience.js.map +1 -0
- package/dist/engine/scaffolder.d.ts +9 -0
- package/dist/engine/scaffolder.d.ts.map +1 -0
- package/dist/engine/scaffolder.js +222 -0
- package/dist/engine/scaffolder.js.map +1 -0
- package/dist/engine/scope_controller.d.ts +3 -0
- package/dist/engine/scope_controller.d.ts.map +1 -0
- package/dist/engine/scope_controller.js +121 -0
- package/dist/engine/scope_controller.js.map +1 -0
- package/dist/engine/task_context.d.ts +34 -0
- package/dist/engine/task_context.d.ts.map +1 -0
- package/dist/engine/task_context.js +321 -0
- package/dist/engine/task_context.js.map +1 -0
- package/dist/engine/task_planner.d.ts +11 -0
- package/dist/engine/task_planner.d.ts.map +1 -0
- package/dist/engine/task_planner.js +267 -0
- package/dist/engine/task_planner.js.map +1 -0
- package/dist/engine/team_awareness.d.ts +12 -0
- package/dist/engine/team_awareness.d.ts.map +1 -0
- package/dist/engine/team_awareness.js +121 -0
- package/dist/engine/team_awareness.js.map +1 -0
- package/dist/engine/test_generator.d.ts +9 -0
- package/dist/engine/test_generator.d.ts.map +1 -0
- package/dist/engine/test_generator.js +241 -0
- package/dist/engine/test_generator.js.map +1 -0
- package/dist/engine/test_quality.d.ts +9 -0
- package/dist/engine/test_quality.d.ts.map +1 -0
- package/dist/engine/test_quality.js +256 -0
- package/dist/engine/test_quality.js.map +1 -0
- package/dist/engine/traceability.d.ts +3 -0
- package/dist/engine/traceability.d.ts.map +1 -0
- package/dist/engine/traceability.js +137 -0
- package/dist/engine/traceability.js.map +1 -0
- package/dist/engine/verifier.d.ts +3 -0
- package/dist/engine/verifier.d.ts.map +1 -0
- package/dist/engine/verifier.js +202 -0
- package/dist/engine/verifier.js.map +1 -0
- package/dist/engine/workspace_manager.d.ts +29 -0
- package/dist/engine/workspace_manager.d.ts.map +1 -0
- package/dist/engine/workspace_manager.js +77 -0
- package/dist/engine/workspace_manager.js.map +1 -0
- package/dist/git/operations.d.ts +57 -0
- package/dist/git/operations.d.ts.map +1 -0
- package/dist/git/operations.js +215 -0
- package/dist/git/operations.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/conflict_detector.d.ts +6 -0
- package/dist/knowledge/conflict_detector.d.ts.map +1 -0
- package/dist/knowledge/conflict_detector.js +19 -0
- package/dist/knowledge/conflict_detector.js.map +1 -0
- package/dist/knowledge/health_checker.d.ts +10 -0
- package/dist/knowledge/health_checker.d.ts.map +1 -0
- package/dist/knowledge/health_checker.js +61 -0
- package/dist/knowledge/health_checker.js.map +1 -0
- package/dist/knowledge/index_manager.d.ts +35 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -0
- package/dist/knowledge/index_manager.js +209 -0
- package/dist/knowledge/index_manager.js.map +1 -0
- package/dist/knowledge/loader.d.ts +13 -0
- package/dist/knowledge/loader.d.ts.map +1 -0
- package/dist/knowledge/loader.js +161 -0
- package/dist/knowledge/loader.js.map +1 -0
- package/dist/knowledge/writer.d.ts +15 -0
- package/dist/knowledge/writer.d.ts.map +1 -0
- package/dist/knowledge/writer.js +98 -0
- package/dist/knowledge/writer.js.map +1 -0
- package/dist/types.d.ts +724 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
- package/templates/config.yaml +53 -0
- package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +27 -0
- package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +180 -0
- package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +51 -0
- package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +58 -0
- package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +53 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +24 -0
- package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +40 -0
- package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +47 -0
- package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +44 -0
- package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +35 -0
- package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +34 -0
- package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +37 -0
- package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +37 -0
- package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +36 -0
- package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +38 -0
- package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +34 -0
- package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +24 -0
- package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +36 -0
- package/templates/knowledge/procedures/Figma/344/272/244/344/273/230/346/265/201/347/250/213.md +35 -0
- package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +31 -0
- package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +37 -0
- package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +43 -0
- package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +46 -0
- package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +38 -0
- package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -0
- package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +24 -0
- package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +40 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +45 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +29 -0
- package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +43 -0
- package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +45 -0
- package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +36 -0
- package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +40 -0
- package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/product_profiles/b2b-internal.yaml +35 -0
- package/templates/knowledge/product_profiles/b2c.yaml +37 -0
- package/templates/knowledge/product_profiles/saas.yaml +35 -0
- package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +79 -0
- package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +61 -0
- package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +62 -0
- package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +80 -0
- package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +32 -0
- package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +31 -0
- package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +25 -0
- package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +39 -0
- package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -0
- package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +35 -0
- package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +30 -0
- package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +28 -0
- package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +24 -0
- package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +29 -0
- package/templates/scaffolds/react/Form.tsx.hbs +16 -0
- package/templates/scaffolds/react/List.tsx.hbs +28 -0
- package/templates/scaffolds/react/Page.test.tsx.hbs +10 -0
- package/templates/scaffolds/react/Page.tsx.hbs +14 -0
- package/templates/scaffolds/react/README.md.hbs +44 -0
- package/templates/scaffolds/react/service.ts.hbs +37 -0
- package/templates/scaffolds/react/types.ts.hbs +6 -0
- package/templates/scaffolds/react/use{{ModuleName}}.ts.hbs +88 -0
- package/templates/scaffolds/spring-boot/ApiContract.md.hbs +110 -0
- package/templates/scaffolds/spring-boot/Controller.java.hbs +43 -0
- package/templates/scaffolds/spring-boot/DTO.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/Entity.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ErrorCode.java.hbs +28 -0
- package/templates/scaffolds/spring-boot/Mapper.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/PageResponse.java.hbs +29 -0
- package/templates/scaffolds/spring-boot/Service.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +48 -0
- package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +22 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import fss from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
const MAX_TASK_AGE_DAYS = 30;
|
|
6
|
+
const MAX_TASKS = 100;
|
|
7
|
+
const MAX_REWORK = 3;
|
|
8
|
+
const VALID_TRANSITIONS = {
|
|
9
|
+
classifying: ["expanding", "failed"],
|
|
10
|
+
expanding: ["executing", "failed"],
|
|
11
|
+
executing: ["verifying", "retrying", "reworking", "failed"],
|
|
12
|
+
verifying: ["learning", "retrying", "reworking", "done", "failed"],
|
|
13
|
+
retrying: ["executing", "reworking", "failed"],
|
|
14
|
+
reworking: ["expanding", "executing", "failed"],
|
|
15
|
+
learning: ["done", "retrying", "reworking", "failed"],
|
|
16
|
+
done: [],
|
|
17
|
+
failed: [],
|
|
18
|
+
};
|
|
19
|
+
export class TaskContextManager {
|
|
20
|
+
stateDir;
|
|
21
|
+
constructor(stateDir) {
|
|
22
|
+
this.stateDir = stateDir;
|
|
23
|
+
fss.mkdirSync(stateDir, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
getStateDir() {
|
|
26
|
+
return this.stateDir;
|
|
27
|
+
}
|
|
28
|
+
async create(intent, productProfile) {
|
|
29
|
+
const taskId = `task-${crypto.randomUUID().slice(0, 8)}`;
|
|
30
|
+
const ctx = {
|
|
31
|
+
task_id: taskId,
|
|
32
|
+
created_at: new Date().toISOString(),
|
|
33
|
+
intent,
|
|
34
|
+
product_profile: productProfile,
|
|
35
|
+
status: "classifying",
|
|
36
|
+
};
|
|
37
|
+
await this.save(ctx);
|
|
38
|
+
await this.writeCurrentPointer(taskId);
|
|
39
|
+
return ctx;
|
|
40
|
+
}
|
|
41
|
+
async load(taskId) {
|
|
42
|
+
const filePath = this.taskFilePath(taskId);
|
|
43
|
+
try {
|
|
44
|
+
const data = await fs.readFile(filePath, "utf-8");
|
|
45
|
+
return JSON.parse(data);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async save(ctx) {
|
|
52
|
+
const filePath = this.taskFilePath(ctx.task_id);
|
|
53
|
+
const tmpPath = `${filePath}.tmp`;
|
|
54
|
+
await fs.writeFile(tmpPath, JSON.stringify(ctx, null, 2));
|
|
55
|
+
await fs.rename(tmpPath, filePath);
|
|
56
|
+
}
|
|
57
|
+
async updateStatus(taskId, status) {
|
|
58
|
+
const ctx = await this.load(taskId);
|
|
59
|
+
if (!ctx)
|
|
60
|
+
return null;
|
|
61
|
+
if (!VALID_TRANSITIONS[ctx.status].includes(status)) {
|
|
62
|
+
throw new Error(`无效状态转换: ${ctx.status} → ${status}`);
|
|
63
|
+
}
|
|
64
|
+
ctx.status = status;
|
|
65
|
+
await this.save(ctx);
|
|
66
|
+
return ctx;
|
|
67
|
+
}
|
|
68
|
+
async setClassification(taskId, result) {
|
|
69
|
+
const ctx = await this.load(taskId);
|
|
70
|
+
if (!ctx)
|
|
71
|
+
return null;
|
|
72
|
+
ctx.classification = result;
|
|
73
|
+
await this.save(ctx);
|
|
74
|
+
return ctx;
|
|
75
|
+
}
|
|
76
|
+
async setExpansion(taskId, result) {
|
|
77
|
+
const ctx = await this.load(taskId);
|
|
78
|
+
if (!ctx)
|
|
79
|
+
return null;
|
|
80
|
+
ctx.expansion = result;
|
|
81
|
+
await this.save(ctx);
|
|
82
|
+
return ctx;
|
|
83
|
+
}
|
|
84
|
+
async setExecution(taskId, changedFiles, failure) {
|
|
85
|
+
const ctx = await this.load(taskId);
|
|
86
|
+
if (!ctx)
|
|
87
|
+
return null;
|
|
88
|
+
if (!ctx.execution) {
|
|
89
|
+
ctx.execution = {
|
|
90
|
+
changed_files: [],
|
|
91
|
+
attempt_count: 0,
|
|
92
|
+
max_attempts: 3,
|
|
93
|
+
failure_history: [],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
ctx.execution.changed_files = [
|
|
97
|
+
...new Set([...ctx.execution.changed_files, ...changedFiles]),
|
|
98
|
+
];
|
|
99
|
+
if (failure) {
|
|
100
|
+
ctx.execution.attempt_count++;
|
|
101
|
+
ctx.execution.failure_history.push(failure);
|
|
102
|
+
}
|
|
103
|
+
await this.save(ctx);
|
|
104
|
+
return ctx;
|
|
105
|
+
}
|
|
106
|
+
async setVerification(taskId, result) {
|
|
107
|
+
const ctx = await this.load(taskId);
|
|
108
|
+
if (!ctx)
|
|
109
|
+
return null;
|
|
110
|
+
ctx.verification = result;
|
|
111
|
+
await this.save(ctx);
|
|
112
|
+
return ctx;
|
|
113
|
+
}
|
|
114
|
+
async getCurrentTask() {
|
|
115
|
+
try {
|
|
116
|
+
const data = await fs.readFile(this.pointerPath, "utf-8");
|
|
117
|
+
const { task_id } = JSON.parse(data);
|
|
118
|
+
return this.load(task_id);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async cancel(taskId) {
|
|
125
|
+
const ctx = await this.load(taskId);
|
|
126
|
+
if (!ctx)
|
|
127
|
+
return false;
|
|
128
|
+
if (ctx.status === "done" || ctx.status === "failed")
|
|
129
|
+
return false;
|
|
130
|
+
ctx.status = "failed";
|
|
131
|
+
await this.save(ctx);
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
isResumable(ctx) {
|
|
135
|
+
return !["done", "failed", "classifying"].includes(ctx.status);
|
|
136
|
+
}
|
|
137
|
+
getResumeHint(ctx) {
|
|
138
|
+
const hints = {
|
|
139
|
+
expanding: "意图膨胀未完成,需重新执行 sf_expand",
|
|
140
|
+
executing: "代码执行中断,需重新执行代码修改",
|
|
141
|
+
verifying: "验证未完成,需调用 sf_verify",
|
|
142
|
+
retrying: "重试中断,需继续修复",
|
|
143
|
+
learning: "自进化未完成,需调用 sf_learn",
|
|
144
|
+
reworking: "返工中,需回溯到上游阶段重新执行",
|
|
145
|
+
};
|
|
146
|
+
return hints[ctx.status] || "未知状态";
|
|
147
|
+
}
|
|
148
|
+
async listRecent(limit = 10) {
|
|
149
|
+
const files = await fs.readdir(this.stateDir);
|
|
150
|
+
const taskFiles = files.filter((f) => f.startsWith("task-") && f.endsWith(".json"));
|
|
151
|
+
const tasks = await Promise.all(taskFiles.map(async (f) => {
|
|
152
|
+
const data = await fs.readFile(path.join(this.stateDir, f), "utf-8");
|
|
153
|
+
const ctx = JSON.parse(data);
|
|
154
|
+
return {
|
|
155
|
+
task_id: ctx.task_id,
|
|
156
|
+
intent: ctx.intent,
|
|
157
|
+
status: ctx.status,
|
|
158
|
+
created_at: ctx.created_at,
|
|
159
|
+
};
|
|
160
|
+
}));
|
|
161
|
+
return tasks
|
|
162
|
+
.sort((a, b) => b.created_at.localeCompare(a.created_at))
|
|
163
|
+
.slice(0, limit);
|
|
164
|
+
}
|
|
165
|
+
async cleanup() {
|
|
166
|
+
const files = await fs.readdir(this.stateDir);
|
|
167
|
+
const taskFiles = files.filter((f) => f.startsWith("task-") && f.endsWith(".json"));
|
|
168
|
+
const now = Date.now();
|
|
169
|
+
const maxAge = MAX_TASK_AGE_DAYS * 24 * 60 * 60 * 1000;
|
|
170
|
+
let removed = 0;
|
|
171
|
+
// 删除超过 MAX_TASK_AGE_DAYS 的任务(基于 created_at,而非 mtime)
|
|
172
|
+
// 同时也考虑 mtime 作为兼容:取 created_at 和 mtime 中较早的时间
|
|
173
|
+
for (const f of taskFiles) {
|
|
174
|
+
try {
|
|
175
|
+
const filePath = path.join(this.stateDir, f);
|
|
176
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
177
|
+
const ctx = JSON.parse(content);
|
|
178
|
+
const stat = await fs.stat(filePath);
|
|
179
|
+
// Use the earlier of created_at or mtime for age comparison
|
|
180
|
+
const createdAt = ctx.created_at ? new Date(ctx.created_at).getTime() : Infinity;
|
|
181
|
+
const earliestTime = Math.min(createdAt, stat.mtimeMs);
|
|
182
|
+
if (now - earliestTime > maxAge) {
|
|
183
|
+
await fs.unlink(filePath);
|
|
184
|
+
removed++;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// 跳过无法删除的文件
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// 如果仍然过多,删除最旧的已完成/已失败任务
|
|
192
|
+
const remaining = await this.listRecent(MAX_TASKS + 1);
|
|
193
|
+
if (remaining.length > MAX_TASKS) {
|
|
194
|
+
const toDelete = remaining.slice(MAX_TASKS).filter((t) => t.status === "done" || t.status === "failed");
|
|
195
|
+
for (const t of toDelete) {
|
|
196
|
+
try {
|
|
197
|
+
await fs.unlink(this.taskFilePath(t.task_id));
|
|
198
|
+
removed++;
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
console.debug("[soloforge]", e);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return removed;
|
|
206
|
+
}
|
|
207
|
+
async setPlanning(taskId, result) {
|
|
208
|
+
const ctx = await this.load(taskId);
|
|
209
|
+
if (!ctx)
|
|
210
|
+
return null;
|
|
211
|
+
ctx.planning = result;
|
|
212
|
+
await this.save(ctx);
|
|
213
|
+
return ctx;
|
|
214
|
+
}
|
|
215
|
+
async setCodeReview(taskId, result) {
|
|
216
|
+
const ctx = await this.load(taskId);
|
|
217
|
+
if (!ctx)
|
|
218
|
+
return null;
|
|
219
|
+
ctx.code_review = result;
|
|
220
|
+
// 能力 6: 基于审查结果计算阶段指令
|
|
221
|
+
ctx.phase_directive = computePhaseDirective(ctx);
|
|
222
|
+
await this.save(ctx);
|
|
223
|
+
return ctx;
|
|
224
|
+
}
|
|
225
|
+
async setDelivery(taskId, result) {
|
|
226
|
+
const ctx = await this.load(taskId);
|
|
227
|
+
if (!ctx)
|
|
228
|
+
return null;
|
|
229
|
+
ctx.delivery = result;
|
|
230
|
+
await this.save(ctx);
|
|
231
|
+
return ctx;
|
|
232
|
+
}
|
|
233
|
+
// ── 能力 3: 修复循环追踪 ──
|
|
234
|
+
async updateRepairLoop(taskId, failurePhase, autoRepairable, escalationReason) {
|
|
235
|
+
const ctx = await this.load(taskId);
|
|
236
|
+
if (!ctx || !ctx.execution)
|
|
237
|
+
return null;
|
|
238
|
+
if (!ctx.execution.repair_loop) {
|
|
239
|
+
ctx.execution.repair_loop = {
|
|
240
|
+
attempt: 0,
|
|
241
|
+
max_attempts: 3,
|
|
242
|
+
phase_origin: failurePhase,
|
|
243
|
+
auto_repairable: true,
|
|
244
|
+
recurrence_count: 0,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
ctx.execution.repair_loop.attempt++;
|
|
248
|
+
ctx.execution.repair_loop.phase_origin = failurePhase;
|
|
249
|
+
ctx.execution.repair_loop.auto_repairable = autoRepairable;
|
|
250
|
+
ctx.execution.repair_loop.escalation_reason = escalationReason;
|
|
251
|
+
// 复发计数
|
|
252
|
+
const samePhaseFailures = ctx.execution.failure_history.filter((f) => f.phase === failurePhase);
|
|
253
|
+
ctx.execution.repair_loop.recurrence_count = samePhaseFailures.length;
|
|
254
|
+
await this.save(ctx);
|
|
255
|
+
return ctx;
|
|
256
|
+
}
|
|
257
|
+
// ── 能力 6: 返工历史追踪 ──
|
|
258
|
+
async recordRework(taskId, fromPhase, toPhase, reason) {
|
|
259
|
+
const ctx = await this.load(taskId);
|
|
260
|
+
if (!ctx)
|
|
261
|
+
return null;
|
|
262
|
+
if (!ctx.rework_history)
|
|
263
|
+
ctx.rework_history = [];
|
|
264
|
+
// 返工阈值检查
|
|
265
|
+
const reworkCount = ctx.rework_history.length;
|
|
266
|
+
if (reworkCount >= MAX_REWORK) {
|
|
267
|
+
ctx.phase_directive = "stop_escalate";
|
|
268
|
+
await this.save(ctx);
|
|
269
|
+
return ctx;
|
|
270
|
+
}
|
|
271
|
+
ctx.rework_history.push({
|
|
272
|
+
from_phase: fromPhase,
|
|
273
|
+
to_phase: toPhase,
|
|
274
|
+
reason,
|
|
275
|
+
timestamp: new Date().toISOString(),
|
|
276
|
+
});
|
|
277
|
+
await this.save(ctx);
|
|
278
|
+
return ctx;
|
|
279
|
+
}
|
|
280
|
+
// ── 内部方法 ──
|
|
281
|
+
taskFilePath(taskId) {
|
|
282
|
+
return path.join(this.stateDir, `${taskId}.json`);
|
|
283
|
+
}
|
|
284
|
+
get pointerPath() {
|
|
285
|
+
return path.join(this.stateDir, "current-task.json");
|
|
286
|
+
}
|
|
287
|
+
async writeCurrentPointer(taskId) {
|
|
288
|
+
await fs.writeFile(this.pointerPath, JSON.stringify({ task_id: taskId }));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// ── 能力 6: 阶段指令计算 ──
|
|
292
|
+
function computePhaseDirective(ctx) {
|
|
293
|
+
// 审查通过 → 完成
|
|
294
|
+
if (ctx.code_review && ctx.code_review.findings.length === 0) {
|
|
295
|
+
return "completed";
|
|
296
|
+
}
|
|
297
|
+
// 有 critical 发现 → 需要修复后重验证
|
|
298
|
+
if (ctx.code_review) {
|
|
299
|
+
const criticalCount = ctx.code_review.findings.filter((f) => f.severity === "critical").length;
|
|
300
|
+
if (criticalCount > 0) {
|
|
301
|
+
// 检查返工历史
|
|
302
|
+
const reworkCount = ctx.rework_history?.length ?? 0;
|
|
303
|
+
if (reworkCount >= MAX_REWORK) {
|
|
304
|
+
return "stop_escalate";
|
|
305
|
+
}
|
|
306
|
+
return "repair_reverify";
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// 验证失败 → 根据修复循环状态决定
|
|
310
|
+
if (ctx.execution?.repair_loop) {
|
|
311
|
+
const loop = ctx.execution.repair_loop;
|
|
312
|
+
if (!loop.auto_repairable) {
|
|
313
|
+
return "rework_upstream";
|
|
314
|
+
}
|
|
315
|
+
if (loop.attempt >= loop.max_attempts) {
|
|
316
|
+
return "rework_upstream";
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return "advance_next";
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=task_context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_context.js","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ClassifyResult, PlanResult } from "../types.js";
|
|
2
|
+
import type { ProjectConfig } from "../types.js";
|
|
3
|
+
import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
|
|
4
|
+
export interface PlanInput {
|
|
5
|
+
intent: string;
|
|
6
|
+
classification: ClassifyResult;
|
|
7
|
+
config: ProjectConfig;
|
|
8
|
+
knowledgeIndex: KnowledgeIndexManager;
|
|
9
|
+
}
|
|
10
|
+
export declare function planTask(input: PlanInput): PlanResult;
|
|
11
|
+
//# sourceMappingURL=task_planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_planner.d.ts","sourceRoot":"","sources":["../../src/engine/task_planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAW,UAAU,EAAc,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAsFrD"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
export function planTask(input) {
|
|
2
|
+
const { intent, classification, config, knowledgeIndex } = input;
|
|
3
|
+
if (!shouldPlan(classification)) {
|
|
4
|
+
return {
|
|
5
|
+
task_id: "",
|
|
6
|
+
original_intent: intent,
|
|
7
|
+
sub_tasks: [],
|
|
8
|
+
execution_order: [],
|
|
9
|
+
parallel_groups: [],
|
|
10
|
+
summary: `不拆解: ${classification.complexity === "high" ? "非全流程策略" : "复杂度不足以触发拆解"}`,
|
|
11
|
+
skipped_reason: `触发条件不满足(complexity=${classification.complexity}, strategy=${classification.strategy})`,
|
|
12
|
+
current_step_index: 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
// 查询 pipeline_procedure 知识(流程指引)
|
|
16
|
+
const pipelineProcedures = knowledgeIndex.query({
|
|
17
|
+
scope: classification.affected_repos,
|
|
18
|
+
products: [config.product_profile],
|
|
19
|
+
type: "pipeline_procedure",
|
|
20
|
+
keywords: extractKeywords(intent),
|
|
21
|
+
});
|
|
22
|
+
// 查询普通 procedure 知识(流程补充)
|
|
23
|
+
const procedures = knowledgeIndex.query({
|
|
24
|
+
scope: classification.affected_repos,
|
|
25
|
+
products: [config.product_profile],
|
|
26
|
+
type: "procedure",
|
|
27
|
+
keywords: extractKeywords(intent),
|
|
28
|
+
});
|
|
29
|
+
// 查询可用的 acceptance_template(输出格式模板)
|
|
30
|
+
const templates = knowledgeIndex.query({
|
|
31
|
+
scope: classification.affected_repos,
|
|
32
|
+
products: [config.product_profile],
|
|
33
|
+
type: "acceptance_template",
|
|
34
|
+
keywords: [],
|
|
35
|
+
});
|
|
36
|
+
// 根据知识情况选择拆分策略
|
|
37
|
+
if (pipelineProcedures.length > 0) {
|
|
38
|
+
// 有 pipeline_procedure → 知识驱动的多阶段计划
|
|
39
|
+
return buildKnowledgeDrivenPlan(intent, classification, config, pipelineProcedures, templates);
|
|
40
|
+
}
|
|
41
|
+
// 无 pipeline_procedure → 按仓库边界拆分(原有逻辑)
|
|
42
|
+
const subTasks = splitByRepoBoundary(intent, classification, config);
|
|
43
|
+
if (procedures.length > 0) {
|
|
44
|
+
mergeProcedureHints(subTasks, procedures.map((p) => p.name));
|
|
45
|
+
}
|
|
46
|
+
if (subTasks.length <= 1) {
|
|
47
|
+
const single = subTasks[0] ?? {
|
|
48
|
+
id: "st-1",
|
|
49
|
+
title: intent,
|
|
50
|
+
description: "无法自动拆解,建议人工细化",
|
|
51
|
+
intent,
|
|
52
|
+
depends_on: [],
|
|
53
|
+
affected_repos: classification.affected_repos,
|
|
54
|
+
estimated_complexity: "medium",
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
task_id: "",
|
|
58
|
+
original_intent: intent,
|
|
59
|
+
sub_tasks: [single],
|
|
60
|
+
execution_order: [single.id],
|
|
61
|
+
parallel_groups: [[single.id]],
|
|
62
|
+
summary: `无法自动拆解,建议人工细化子任务`,
|
|
63
|
+
current_step_index: 0,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const { order, parallelGroups } = buildExecutionOrder(subTasks, classification.affected_repos);
|
|
67
|
+
return {
|
|
68
|
+
task_id: "",
|
|
69
|
+
original_intent: intent,
|
|
70
|
+
sub_tasks: subTasks,
|
|
71
|
+
execution_order: order,
|
|
72
|
+
parallel_groups: parallelGroups,
|
|
73
|
+
summary: `拆解为 ${subTasks.length} 个子任务,${parallelGroups.length} 个执行阶段`,
|
|
74
|
+
current_step_index: 0,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 基于知识驱动的多阶段计划生成。
|
|
79
|
+
* 读取 pipeline_procedure 知识条目的步骤定义,结合可用模板,生成带模板绑定的子任务。
|
|
80
|
+
*/
|
|
81
|
+
function buildKnowledgeDrivenPlan(intent, classification, config, pipelineProcedures, templates) {
|
|
82
|
+
const procedure = pipelineProcedures[0];
|
|
83
|
+
const templateMap = new Map(templates.map((t) => [t.name, t.file_path]));
|
|
84
|
+
// 从 pipeline_procedure body 中提取步骤
|
|
85
|
+
const steps = parsePipelineSteps(procedure.body || procedure.when);
|
|
86
|
+
const subTasks = steps.map((step, idx) => {
|
|
87
|
+
return {
|
|
88
|
+
id: `st-${idx + 1}`,
|
|
89
|
+
title: step.title,
|
|
90
|
+
description: step.description,
|
|
91
|
+
intent: step.title,
|
|
92
|
+
depends_on: idx > 0 ? [`st-${idx}`] : [],
|
|
93
|
+
affected_repos: classification.affected_repos,
|
|
94
|
+
estimated_complexity: inferComplexity(intent),
|
|
95
|
+
output_template: step.template_name || undefined,
|
|
96
|
+
output_path: step.output_path || `.soloforge/output/${String(idx + 1).padStart(2, "0")}-${step.title}.md`,
|
|
97
|
+
suggested_tools: step.tools || undefined,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
const { order, parallelGroups } = buildExecutionOrder(subTasks, classification.affected_repos);
|
|
101
|
+
return {
|
|
102
|
+
task_id: "",
|
|
103
|
+
original_intent: intent,
|
|
104
|
+
sub_tasks: subTasks,
|
|
105
|
+
execution_order: order,
|
|
106
|
+
parallel_groups: parallelGroups,
|
|
107
|
+
summary: `按 "${procedure.name}" 流程拆解为 ${subTasks.length} 个阶段`,
|
|
108
|
+
current_step_index: 0,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 从 pipeline_procedure 知识条目的 Markdown body 中提取步骤定义。
|
|
113
|
+
* 识别 "### 第X步" 或 "### 步骤X" 格式的标题,提取:
|
|
114
|
+
* - 标题
|
|
115
|
+
* - 描述(标题下的文字)
|
|
116
|
+
* - 模板引用("模板:XXX" 或 "template: XXX")
|
|
117
|
+
* - 输出路径("产出保存到:XXX" 或 "output: XXX")
|
|
118
|
+
* - 工具建议("使用 XXX 工具" 或 "tools: XXX")
|
|
119
|
+
*/
|
|
120
|
+
function parsePipelineSteps(body) {
|
|
121
|
+
const steps = [];
|
|
122
|
+
const sections = body.split(/^### /m).slice(1);
|
|
123
|
+
for (const section of sections) {
|
|
124
|
+
const lines = section.split("\n");
|
|
125
|
+
const title = lines[0].replace(/^第\d+[步阶段][::]\s*/, "").replace(/^步骤\d+[::]\s*/, "").trim();
|
|
126
|
+
if (!title)
|
|
127
|
+
continue;
|
|
128
|
+
const description = [];
|
|
129
|
+
let templateName;
|
|
130
|
+
let outputPath;
|
|
131
|
+
const tools = [];
|
|
132
|
+
for (const line of lines.slice(1)) {
|
|
133
|
+
const trimmed = line.trim();
|
|
134
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
135
|
+
continue;
|
|
136
|
+
// 匹配模板引用
|
|
137
|
+
const templateMatch = trimmed.match(/(?:模板|template)[::]\s*(.+)/i);
|
|
138
|
+
if (templateMatch) {
|
|
139
|
+
templateName = templateMatch[1].trim();
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// 匹配输出路径
|
|
143
|
+
const outputMatch = trimmed.match(/(?:产出保存到|输出到|output)[::]\s*(.+)/i);
|
|
144
|
+
if (outputMatch) {
|
|
145
|
+
outputPath = outputMatch[1].trim();
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// 匹配工具建议
|
|
149
|
+
const toolsMatch = trimmed.match(/(?:使用|工具|tools)[::]\s*(.+)/i);
|
|
150
|
+
if (toolsMatch) {
|
|
151
|
+
tools.push(...toolsMatch[1].split(/[,,、]/).map((t) => t.trim()).filter(Boolean));
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
description.push(trimmed);
|
|
155
|
+
}
|
|
156
|
+
steps.push({
|
|
157
|
+
title,
|
|
158
|
+
description: description.join("\n"),
|
|
159
|
+
template_name: templateName,
|
|
160
|
+
output_path: outputPath,
|
|
161
|
+
tools: tools.length > 0 ? tools : undefined,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return steps;
|
|
165
|
+
}
|
|
166
|
+
function shouldPlan(classification) {
|
|
167
|
+
return classification.complexity === "high" && classification.strategy === "full_pipeline";
|
|
168
|
+
}
|
|
169
|
+
function splitByRepoBoundary(intent, classification, config) {
|
|
170
|
+
const repos = classification.affected_repos;
|
|
171
|
+
if (repos.length <= 1)
|
|
172
|
+
return [];
|
|
173
|
+
const tasks = [];
|
|
174
|
+
let idx = 1;
|
|
175
|
+
for (const repo of repos) {
|
|
176
|
+
const repoLabel = repo === "backend" ? "后端" : repo === "frontend" ? "前端" : repo;
|
|
177
|
+
const repoIntent = buildRepoIntent(intent, repo, repos);
|
|
178
|
+
tasks.push({
|
|
179
|
+
id: `st-${idx++}`,
|
|
180
|
+
title: `${repoLabel}: ${repoIntent}`,
|
|
181
|
+
description: `${intent} 的 ${repoLabel} 部分`,
|
|
182
|
+
intent: repoIntent,
|
|
183
|
+
depends_on: repo === "frontend" && repos.includes("backend") ? ["st-1"] : [],
|
|
184
|
+
affected_repos: [repo],
|
|
185
|
+
estimated_complexity: inferComplexity(repoIntent),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return tasks;
|
|
189
|
+
}
|
|
190
|
+
function buildRepoIntent(intent, repo, allRepos) {
|
|
191
|
+
if (repo === "backend" && allRepos.includes("frontend")) {
|
|
192
|
+
return intent.replace(/前后端|联调|全链路/g, "后端接口");
|
|
193
|
+
}
|
|
194
|
+
if (repo === "frontend" && allRepos.includes("backend")) {
|
|
195
|
+
return intent.replace(/前后端|联调|全链路/g, "前端对接");
|
|
196
|
+
}
|
|
197
|
+
return intent;
|
|
198
|
+
}
|
|
199
|
+
function mergeProcedureHints(tasks, procedureNames) {
|
|
200
|
+
if (tasks.length === 0)
|
|
201
|
+
return;
|
|
202
|
+
const hint = `参考流程: ${procedureNames.join(", ")}`;
|
|
203
|
+
for (const task of tasks) {
|
|
204
|
+
task.description += `\n${hint}`;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function buildExecutionOrder(subTasks, _affectedRepos) {
|
|
208
|
+
const visited = new Set();
|
|
209
|
+
const visiting = new Set();
|
|
210
|
+
const order = [];
|
|
211
|
+
const taskMap = new Map(subTasks.map((t) => [t.id, t]));
|
|
212
|
+
function visit(id) {
|
|
213
|
+
if (visited.has(id))
|
|
214
|
+
return;
|
|
215
|
+
if (visiting.has(id))
|
|
216
|
+
return; // cycle detected — skip edge
|
|
217
|
+
visiting.add(id);
|
|
218
|
+
const task = taskMap.get(id);
|
|
219
|
+
if (task) {
|
|
220
|
+
for (const dep of task.depends_on)
|
|
221
|
+
visit(dep);
|
|
222
|
+
}
|
|
223
|
+
visiting.delete(id);
|
|
224
|
+
visited.add(id);
|
|
225
|
+
order.push(id);
|
|
226
|
+
}
|
|
227
|
+
for (const task of subTasks)
|
|
228
|
+
visit(task.id);
|
|
229
|
+
const parallelGroups = [];
|
|
230
|
+
const scheduled = new Set();
|
|
231
|
+
for (const id of order) {
|
|
232
|
+
const task = taskMap.get(id);
|
|
233
|
+
if (!task)
|
|
234
|
+
continue;
|
|
235
|
+
const depsReady = task.depends_on.every((d) => scheduled.has(d));
|
|
236
|
+
if (depsReady) {
|
|
237
|
+
const lastGroup = parallelGroups[parallelGroups.length - 1];
|
|
238
|
+
// Tasks can join the last group if they have no deps OR none of their deps
|
|
239
|
+
// are in the last group (meaning all deps were completed in earlier groups).
|
|
240
|
+
// This allows B(dep A) and C(dep A) to run in parallel after A completes.
|
|
241
|
+
const hasNoDeps = task.depends_on.length === 0;
|
|
242
|
+
const noDepsInLastGroup = !task.depends_on.some((d) => lastGroup.includes(d));
|
|
243
|
+
const canParallel = lastGroup && (hasNoDeps || noDepsInLastGroup);
|
|
244
|
+
if (canParallel) {
|
|
245
|
+
lastGroup.push(id);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
parallelGroups.push([id]);
|
|
249
|
+
}
|
|
250
|
+
scheduled.add(id);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return { order, parallelGroups };
|
|
254
|
+
}
|
|
255
|
+
function extractKeywords(intent) {
|
|
256
|
+
return intent
|
|
257
|
+
.split(/[\s,,、::]+/)
|
|
258
|
+
.filter((w) => w.length >= 2);
|
|
259
|
+
}
|
|
260
|
+
function inferComplexity(intent) {
|
|
261
|
+
if (/加.*查询|改.*名称|修.*typo/.test(intent))
|
|
262
|
+
return "low";
|
|
263
|
+
if (/多个|批量|跨|联调|前后端|全链路/.test(intent))
|
|
264
|
+
return "high";
|
|
265
|
+
return "medium";
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=task_planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_planner.js","sourceRoot":"","sources":["../../src/engine/task_planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProjectConfig, TeamStatusResult } from "../types.js";
|
|
2
|
+
import type { GitOperations } from "./git_deps.js";
|
|
3
|
+
import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
|
|
4
|
+
export interface TeamAwarenessInput {
|
|
5
|
+
projectPath: string;
|
|
6
|
+
config: ProjectConfig;
|
|
7
|
+
since?: string;
|
|
8
|
+
gitOps: GitOperations;
|
|
9
|
+
knowledgeIndex?: KnowledgeIndexManager;
|
|
10
|
+
}
|
|
11
|
+
export declare function getTeamStatus(input: TeamAwarenessInput): Promise<TeamStatusResult>;
|
|
12
|
+
//# sourceMappingURL=team_awareness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team_awareness.d.ts","sourceRoot":"","sources":["../../src/engine/team_awareness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwGxF"}
|