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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 SoloForge Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# SoloForge
|
|
2
|
+
|
|
3
|
+
AI 驱动的开发工作流系统 — 一个人干五个人的活。
|
|
4
|
+
|
|
5
|
+
SoloForge 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器,为 AI 编程助手(Claude Code、Cursor、Trae)提供结构化的、知识驱动的开发工作流。它作为规则引擎和模板系统,通过知识模式、验证管线和自动化代码审查来保障工程质量。
|
|
6
|
+
|
|
7
|
+
## 快速开始
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 全局安装
|
|
11
|
+
npm install -g soloforge
|
|
12
|
+
|
|
13
|
+
# 或直接使用
|
|
14
|
+
npx soloforge init
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`init` 命令会生成项目配置(`.soloforge/config.yaml`)、初始化知识模板、并为你的 AI 工具生成适配配置。
|
|
18
|
+
|
|
19
|
+
## 工作原理
|
|
20
|
+
|
|
21
|
+
SoloForge 以 MCP Server(stdio 传输)运行。AI 助手在开发过程中调用 SoloForge 工具:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
开发者 → AI 助手 (Claude Code/Cursor) → SoloForge MCP Server
|
|
25
|
+
← 知识、规则、模板
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供结构、规则和知识。
|
|
29
|
+
|
|
30
|
+
## MCP 工具(27 个)
|
|
31
|
+
|
|
32
|
+
### 核心管线(Phase 1)
|
|
33
|
+
|
|
34
|
+
| 工具 | 说明 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| `sf_classify` | 分类任务意图、风险、复杂度;确定执行模式 |
|
|
37
|
+
| `sf_expand` | 意图膨胀 + 知识匹配 + 作用域控制 + 验收标准 |
|
|
38
|
+
| `sf_verify` | 生成构建/测试验证命令,收集证据 |
|
|
39
|
+
| `sf_learn` | 从已完成任务提取模式,更新知识库 |
|
|
40
|
+
| `sf_status` | 查询任务状态,恢复中断的工作流 |
|
|
41
|
+
|
|
42
|
+
### 质量与规划(Phase 2)
|
|
43
|
+
|
|
44
|
+
| 工具 | 说明 |
|
|
45
|
+
|------|------|
|
|
46
|
+
| `sf_plan` | 复杂意图拆解为子任务,分析依赖关系 |
|
|
47
|
+
| `sf_plan_advance` | 高级任务规划:知识驱动的多步骤规划 |
|
|
48
|
+
| `sf_analyze` | 影响范围分析,与声明范围对比 |
|
|
49
|
+
| `sf_scaffold` | 脚手架生成(Controller/Service/DTO 等) |
|
|
50
|
+
| `sf_review` | 五维代码审查(质量/安全/性能/技术债务/架构) |
|
|
51
|
+
|
|
52
|
+
### 团队协作(Phase 3)
|
|
53
|
+
|
|
54
|
+
| 工具 | 说明 |
|
|
55
|
+
|------|------|
|
|
56
|
+
| `sf_deliver` | 自动提交 → 推送 → PR → 变更日志 |
|
|
57
|
+
| `sf_coord_check` | 预测性冲突检测,跨仓库关联提示 |
|
|
58
|
+
| `sf_team_status` | 活动流、工作负载可视化、过期分支告警 |
|
|
59
|
+
| `sf_contract_check` | 检测接口契约的破坏性变更 |
|
|
60
|
+
| `sf_onboard` | 引导式入职:项目概览 → 代码导览 → 首任务 |
|
|
61
|
+
|
|
62
|
+
### 自维护(仅 SoloForge 自身项目)
|
|
63
|
+
|
|
64
|
+
| 工具 | 说明 |
|
|
65
|
+
|------|------|
|
|
66
|
+
| `sf_knowledge_add` | 新增知识条目,返回行业探索指引 |
|
|
67
|
+
| `sf_knowledge_update` | 更新知识条目内容 |
|
|
68
|
+
| `sf_knowledge_audit` | 审计知识格式、完整性和质量 |
|
|
69
|
+
|
|
70
|
+
### 高级能力(Phase 4)
|
|
71
|
+
|
|
72
|
+
| 工具 | 说明 |
|
|
73
|
+
|------|------|
|
|
74
|
+
| `sf_feasibility_check` | 三档可行性分析(可行/风险/不可行) |
|
|
75
|
+
| `sf_debug` | 智能排障:解析 → 追踪 → 根因 → 修复方案 |
|
|
76
|
+
| `sf_observability` | 系统指标、告警检测、周期报告 |
|
|
77
|
+
|
|
78
|
+
### 深度能力(Phase 5)
|
|
79
|
+
|
|
80
|
+
| 工具 | 说明 |
|
|
81
|
+
|------|------|
|
|
82
|
+
| `sf_migration_check` | 分析数据库迁移文件安全性,检测破坏性操作 |
|
|
83
|
+
| `sf_test_guide` | 根据变更文件生成测试类型、场景和 Mock 指引 |
|
|
84
|
+
| `sf_test_quality` | 五维评估测试文件质量(断言/边界/命名/重复/覆盖) |
|
|
85
|
+
| `sf_dependency_scan` | 扫描依赖漏洞,支持 npm/maven/gradle |
|
|
86
|
+
| `sf_debt_report` | 技术债务聚合报告:分类、趋势、优先级 |
|
|
87
|
+
|
|
88
|
+
## 知识体系
|
|
89
|
+
|
|
90
|
+
SoloForge 内置 **108+ 知识模板**,覆盖 6 种类型:
|
|
91
|
+
|
|
92
|
+
| 类型 | 数量 | 用途 |
|
|
93
|
+
|------|------|------|
|
|
94
|
+
| `pattern` | 50 | 决策规则 + 验收标准 |
|
|
95
|
+
| `procedure` | 24 | 操作流程 + 检查点 |
|
|
96
|
+
| `domain` | 9 | 业务规则、约束条件、例外情况 |
|
|
97
|
+
| `acceptance_template` | 19 | 质量门禁 + 自动化检查命令 |
|
|
98
|
+
| `review_rule` | 6 | 正则驱动的代码审查规则 |
|
|
99
|
+
| `pipeline_procedure` | — | CI/CD 流水线阶段定义 |
|
|
100
|
+
|
|
101
|
+
知识文件采用 Markdown + YAML frontmatter 格式:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
---
|
|
105
|
+
name: crud-operation
|
|
106
|
+
type: pattern
|
|
107
|
+
when: "CRUD, 增删改查, 新增, 删除, 修改"
|
|
108
|
+
scope: [backend]
|
|
109
|
+
products: ["*"]
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 决策规则
|
|
113
|
+
- API 层使用 DTO,持久层使用 Entity
|
|
114
|
+
- 业务实体使用软删除,日志使用硬删除
|
|
115
|
+
...
|
|
116
|
+
|
|
117
|
+
## 验收项
|
|
118
|
+
- [AC-01] 所有 CRUD 端点返回正确的 HTTP 状态码
|
|
119
|
+
...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## 项目配置
|
|
123
|
+
|
|
124
|
+
SoloForge 从 `.soloforge/config.yaml` 读取项目配置:
|
|
125
|
+
|
|
126
|
+
```yaml
|
|
127
|
+
name: my-project
|
|
128
|
+
tech_stack:
|
|
129
|
+
backend:
|
|
130
|
+
lang: java
|
|
131
|
+
framework: spring-boot
|
|
132
|
+
version: "3.0"
|
|
133
|
+
frontend:
|
|
134
|
+
lang: typescript
|
|
135
|
+
framework: react
|
|
136
|
+
version: "18"
|
|
137
|
+
product_profile: default
|
|
138
|
+
repos:
|
|
139
|
+
- name: backend
|
|
140
|
+
path: .
|
|
141
|
+
lang: java
|
|
142
|
+
framework: spring-boot
|
|
143
|
+
scope: ["src/main/java"]
|
|
144
|
+
build_commands:
|
|
145
|
+
backend:
|
|
146
|
+
build: mvn compile -q
|
|
147
|
+
test: mvn test -q
|
|
148
|
+
full: mvn verify -q
|
|
149
|
+
frontend:
|
|
150
|
+
build: npm run build
|
|
151
|
+
test: npm test
|
|
152
|
+
full: npm run build && npm test
|
|
153
|
+
scope:
|
|
154
|
+
backend: ["src/main/java"]
|
|
155
|
+
frontend: ["src/main/react"]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## 架构
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
知识层 机制层 适配层
|
|
162
|
+
+------------------+ +---------------------+ +------------------+
|
|
163
|
+
| 108+ 知识模板 | | 分类器 | | Claude Code |
|
|
164
|
+
| 6 种知识类型 | | 意图膨胀器 | | Cursor |
|
|
165
|
+
| 产品 Profile | | 验证器 | | Trae |
|
|
166
|
+
| | | 代码审查器 | | CLI |
|
|
167
|
+
| 项目专属知识 | | 任务规划器 | | |
|
|
168
|
+
| | | 脚手架生成器 | | |
|
|
169
|
+
| | | 自动交付 | | |
|
|
170
|
+
| | | + 20+ 个引擎模块 | | |
|
|
171
|
+
+------------------+ +---------------------+ +------------------+
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## 开发
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# 安装依赖
|
|
178
|
+
npm install
|
|
179
|
+
|
|
180
|
+
# 构建
|
|
181
|
+
npm run build
|
|
182
|
+
|
|
183
|
+
# 运行测试(447 个测试)
|
|
184
|
+
npm test
|
|
185
|
+
|
|
186
|
+
# 类型检查
|
|
187
|
+
npm run lint
|
|
188
|
+
|
|
189
|
+
# 监听模式
|
|
190
|
+
npm run dev
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 技术栈
|
|
194
|
+
|
|
195
|
+
- TypeScript (ESM)
|
|
196
|
+
- Node.js >= 18
|
|
197
|
+
- MCP SDK (`@modelcontextprotocol/sdk`)
|
|
198
|
+
- Handlebars(模板引擎)
|
|
199
|
+
- Vitest(测试框架)
|
|
200
|
+
|
|
201
|
+
## 许可证
|
|
202
|
+
|
|
203
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude_md.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6E9D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function generateClaudeMd(config) {
|
|
2
|
+
return `# SoloForge 集成规则
|
|
3
|
+
|
|
4
|
+
## 强制工作流
|
|
5
|
+
|
|
6
|
+
当收到开发指令时(非纯对话/提问),必须按以下顺序执行:
|
|
7
|
+
|
|
8
|
+
### 步骤 1: 分类
|
|
9
|
+
调用 \`sf_classify\` 工具,传入用户意图和当前项目路径。
|
|
10
|
+
|
|
11
|
+
### 步骤 1.5: 任务拆解(建议)
|
|
12
|
+
如果分类结果 complexity=high 且 strategy=full_pipeline,调用 \`sf_plan\` 查看拆解建议。
|
|
13
|
+
如果 \`sf_plan\` 返回多阶段计划(sub_tasks > 1),则按阶段执行:
|
|
14
|
+
1. 调用 \`sf_expand\` 获取当前阶段指令(自动注入模板和前序产出)
|
|
15
|
+
2. 执行该阶段任务
|
|
16
|
+
3. 调用 \`sf_plan_advance\` 推进到下一阶段
|
|
17
|
+
4. 重复直到所有阶段完成
|
|
18
|
+
|
|
19
|
+
### 步骤 2: 根据分类结果执行
|
|
20
|
+
- task_type = "scaffold" → 调用 \`sf_scaffold\` 生成代码骨架,然后填充业务逻辑
|
|
21
|
+
- strategy = "full_pipeline" → 调用 \`sf_expand\`,然后按 expand 的 prompt 执行
|
|
22
|
+
- strategy = "quick_fix" → 调用 \`sf_expand\`(简化版),然后执行
|
|
23
|
+
- strategy = "skip_soloForge" → 直接处理,不调用 SoloForge 工具
|
|
24
|
+
|
|
25
|
+
### 步骤 2.5: 影响分析(建议)
|
|
26
|
+
执行 \`sf_expand\` 后,可选择调用 \`sf_analyze\` 查看影响范围分析。如果提示范围不足,可扩大作用域或确认范围。
|
|
27
|
+
|
|
28
|
+
### 步骤 3: 代码修改后验证
|
|
29
|
+
所有代码修改完成后,调用 \`sf_verify\` 获取验证命令。
|
|
30
|
+
通过 Bash 工具执行 \`sf_verify\` 返回的验证命令。
|
|
31
|
+
|
|
32
|
+
### 步骤 3.5: 代码审查(建议)
|
|
33
|
+
验证通过后,可选择调用 \`sf_review\` 进行代码审查。hotfix 场景自动跳过。
|
|
34
|
+
审查结果包含质量、安全、性能、架构、技术债务五个维度。支持知识驱动审查规则。技术债务自动记录,不强制修复。
|
|
35
|
+
|
|
36
|
+
### 步骤 3.6: 契约检查(建议)
|
|
37
|
+
如果变更涉及 API 路由、DTO、接口文件,可调用 \`sf_contract_check\` 检测破坏性变更和跨服务影响。
|
|
38
|
+
|
|
39
|
+
### 步骤 4: 学习
|
|
40
|
+
验证完成后(无论通过或失败),调用 \`sf_learn\` 传入验证结果。
|
|
41
|
+
如果 \`sf_learn\` 返回 \`retry_hint\`,表示需要修复后重试,回到步骤 3 重新验证。
|
|
42
|
+
|
|
43
|
+
### 步骤 5: 结果汇报
|
|
44
|
+
向开发者展示:
|
|
45
|
+
- 验证结果摘要
|
|
46
|
+
- 自动化验收通过/失败项
|
|
47
|
+
- 需人工确认的项(如有)
|
|
48
|
+
|
|
49
|
+
### 步骤 5.5: 变更协调检查(建议)
|
|
50
|
+
推送前可调用 \`sf_coord_check\` 检查潜在冲突和跨仓库影响。
|
|
51
|
+
|
|
52
|
+
### 步骤 5.6: 自动交付(可选)
|
|
53
|
+
调用 \`sf_deliver\` 自动提交代码、推送、创建 PR 和生成变更日志。
|
|
54
|
+
新人加入项目时,使用 \`sf_onboard\` 进行分步引导。
|
|
55
|
+
需要查看团队状态时,调用 \`sf_team_status\`。
|
|
56
|
+
|
|
57
|
+
### 步骤 5.7: 知识维护(可选)
|
|
58
|
+
定期调用 \`sf_knowledge_audit\` 审计知识库健康度。
|
|
59
|
+
发现需要新增的知识条目时,调用 \`sf_knowledge_add\` 生成草稿(默认保存到 drafts/,需人工确认)。
|
|
60
|
+
需要更新已有条目时,调用 \`sf_knowledge_update\`(自动创建备份)。
|
|
61
|
+
|
|
62
|
+
## 任务管理
|
|
63
|
+
|
|
64
|
+
使用 \`sf_status\` 工具管理任务生命周期:
|
|
65
|
+
- \`sf_status action=current\` — 查看当前任务状态
|
|
66
|
+
- \`sf_status action=recent\` — 列出近期任务
|
|
67
|
+
- \`sf_status action=resume task_id=xxx\` — 恢复中断的任务
|
|
68
|
+
- \`sf_status action=cancel task_id=xxx\` — 取消未完成的任务
|
|
69
|
+
|
|
70
|
+
对话中断后,先用 \`sf_status action=current\` 检查是否有未完成任务。
|
|
71
|
+
|
|
72
|
+
## 项目信息
|
|
73
|
+
|
|
74
|
+
- 产品: ${config.product_profile}
|
|
75
|
+
- 后端: ${config.tech_stack.backend.framework} ${config.tech_stack.backend.version}
|
|
76
|
+
- 前端: ${config.tech_stack.frontend.framework} ${config.tech_stack.frontend.version}
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=claude_md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude_md.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwED,MAAM,CAAC,eAAe;QACtB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;QACxE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;CACjF,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CA2BpE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export { generateClaudeMd } from "./claude_md.js";
|
|
2
|
+
export function generateHooksConfig(soloforgeBinPath) {
|
|
3
|
+
return {
|
|
4
|
+
hooks: {
|
|
5
|
+
PreToolUse: [
|
|
6
|
+
{
|
|
7
|
+
matcher: "Edit|Write",
|
|
8
|
+
hooks: [
|
|
9
|
+
{
|
|
10
|
+
type: "command",
|
|
11
|
+
command: `node ${soloforgeBinPath} check-write`,
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
PostToolUse: [
|
|
17
|
+
{
|
|
18
|
+
matcher: "Bash",
|
|
19
|
+
hooks: [
|
|
20
|
+
{
|
|
21
|
+
type: "command",
|
|
22
|
+
command: `node ${soloforgeBinPath} post-bash`,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,gBAAwB;IAC1D,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,gBAAgB,cAAc;yBAChD;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,gBAAgB,YAAY;yBAC9C;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProjectConfig } from "../../types.js";
|
|
2
|
+
import { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
|
|
3
|
+
import { TaskContextManager } from "../../engine/task_context.js";
|
|
4
|
+
export interface ServerDeps {
|
|
5
|
+
config: ProjectConfig;
|
|
6
|
+
knowledgeIndex: KnowledgeIndexManager;
|
|
7
|
+
taskContext: TaskContextManager;
|
|
8
|
+
}
|
|
9
|
+
export declare function startServer(deps: ServerDeps): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAcD,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDjE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
|
+
import { registerTools } from "./tools.js";
|
|
6
|
+
function isSoloForgeProject(config) {
|
|
7
|
+
const projectPath = config._projectPath || process.cwd();
|
|
8
|
+
try {
|
|
9
|
+
const pkgPath = path.join(projectPath, "package.json");
|
|
10
|
+
const raw = fs.readFileSync(pkgPath, "utf-8");
|
|
11
|
+
const pkg = JSON.parse(raw);
|
|
12
|
+
return pkg.name === "soloforge";
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function startServer(deps) {
|
|
19
|
+
const { config, knowledgeIndex, taskContext } = deps;
|
|
20
|
+
const server = new McpServer({
|
|
21
|
+
name: "soloforge",
|
|
22
|
+
version: "0.1.0",
|
|
23
|
+
});
|
|
24
|
+
registerTools(server, { config, knowledgeIndex, taskContext }, {
|
|
25
|
+
isSelfProject: isSoloForgeProject(config),
|
|
26
|
+
});
|
|
27
|
+
const transport = new StdioServerTransport();
|
|
28
|
+
await server.connect(transport);
|
|
29
|
+
let shuttingDown = false;
|
|
30
|
+
const shutdown = async () => {
|
|
31
|
+
if (shuttingDown)
|
|
32
|
+
return;
|
|
33
|
+
shuttingDown = true;
|
|
34
|
+
try {
|
|
35
|
+
if (knowledgeIndex)
|
|
36
|
+
await knowledgeIndex.close();
|
|
37
|
+
await transport.close?.();
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
console.debug("[soloforge]", e);
|
|
41
|
+
}
|
|
42
|
+
process.exit(0);
|
|
43
|
+
};
|
|
44
|
+
process.on("SIGTERM", shutdown);
|
|
45
|
+
process.on("SIGINT", shutdown);
|
|
46
|
+
process.on("SIGPIPE", () => {
|
|
47
|
+
// 客户端断开连接,优雅退出
|
|
48
|
+
shutdown();
|
|
49
|
+
});
|
|
50
|
+
process.on("uncaughtException", async (err) => {
|
|
51
|
+
console.error("SoloForge 未捕获异常:", err);
|
|
52
|
+
try {
|
|
53
|
+
if (knowledgeIndex)
|
|
54
|
+
await knowledgeIndex.close();
|
|
55
|
+
await transport.close?.();
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
console.debug("[soloforge]", e);
|
|
59
|
+
}
|
|
60
|
+
process.exit(1);
|
|
61
|
+
});
|
|
62
|
+
process.on("unhandledRejection", async (reason) => {
|
|
63
|
+
console.error("SoloForge 未处理的 Promise 拒绝:", reason);
|
|
64
|
+
try {
|
|
65
|
+
if (knowledgeIndex)
|
|
66
|
+
await knowledgeIndex.close();
|
|
67
|
+
await transport.close?.();
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.debug("[soloforge]", e);
|
|
71
|
+
}
|
|
72
|
+
process.exit(1);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ProjectConfig } from "../../types.js";
|
|
3
|
+
import type { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
|
|
4
|
+
import type { TaskContextManager } from "../../engine/task_context.js";
|
|
5
|
+
export interface SoloForgeDeps {
|
|
6
|
+
config: ProjectConfig;
|
|
7
|
+
knowledgeIndex: KnowledgeIndexManager;
|
|
8
|
+
taskContext: TaskContextManager;
|
|
9
|
+
}
|
|
10
|
+
export interface RegisterToolsOptions {
|
|
11
|
+
/** When true, registers self-maintenance tools (sf_knowledge_audit/add/update) */
|
|
12
|
+
isSelfProject?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function registerTools(server: McpServer, deps: SoloForgeDeps, options?: RegisterToolsOptions): void;
|
|
15
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA0BvE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAkHD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAy3B1G"}
|