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 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/engine/observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ProjectConfig, OnboardingResult, OnboardingStep } from "../types.js";
|
|
2
|
+
import type { GitOperations } from "./git_deps.js";
|
|
3
|
+
import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
|
|
4
|
+
export interface OnboardingInput {
|
|
5
|
+
config: ProjectConfig;
|
|
6
|
+
projectPath: string;
|
|
7
|
+
gitOps: GitOperations;
|
|
8
|
+
knowledgeIndex?: KnowledgeIndexManager;
|
|
9
|
+
currentStep?: OnboardingStep;
|
|
10
|
+
completedSteps?: OnboardingStep[];
|
|
11
|
+
}
|
|
12
|
+
/** Input for the public `onboard` function used by the MCP tool layer. */
|
|
13
|
+
export interface OnboardToolInput {
|
|
14
|
+
config: ProjectConfig;
|
|
15
|
+
projectPath: string;
|
|
16
|
+
gitOps: GitOperations;
|
|
17
|
+
knowledgeIndex?: KnowledgeIndexManager;
|
|
18
|
+
currentStep?: OnboardingStep;
|
|
19
|
+
reset?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function runOnboarding(input: OnboardingInput): Promise<OnboardingResult>;
|
|
22
|
+
export declare function onboard(input: OnboardToolInput): Promise<OnboardingResult>;
|
|
23
|
+
export declare function loadOnboardingSession(projectPath: string): Promise<{
|
|
24
|
+
current_step: OnboardingStep;
|
|
25
|
+
completed_steps: OnboardingStep[];
|
|
26
|
+
} | null>;
|
|
27
|
+
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/engine/onboarding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAA4B,MAAM,aAAa,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAI3E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgCD,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgErF;AAID,wBAAsB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAehF;AA0SD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,YAAY,EAAE,cAAc,CAAC;IAAC,eAAe,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAYrF"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
// ── Constants ──
|
|
4
|
+
const ALL_STEPS = ["project_overview", "code_tour", "knowledge_review", "first_task"];
|
|
5
|
+
const KEY_DIRECTORY_PATTERNS = [
|
|
6
|
+
"controller", "controllers",
|
|
7
|
+
"service", "services",
|
|
8
|
+
"component", "components",
|
|
9
|
+
"page", "pages",
|
|
10
|
+
"route", "routes", "router", "routers",
|
|
11
|
+
"handler", "handlers",
|
|
12
|
+
"model", "models",
|
|
13
|
+
];
|
|
14
|
+
const ENTRY_POINT_PATTERNS = [
|
|
15
|
+
/^index\.\w+$/,
|
|
16
|
+
/^main\.\w+$/,
|
|
17
|
+
/^app\.\w+$/,
|
|
18
|
+
/^server\.\w+$/,
|
|
19
|
+
];
|
|
20
|
+
const STEP_DESCRIPTIONS = {
|
|
21
|
+
project_overview: "项目概览",
|
|
22
|
+
code_tour: "代码游览",
|
|
23
|
+
knowledge_review: "知识库复习",
|
|
24
|
+
first_task: "首次任务",
|
|
25
|
+
};
|
|
26
|
+
// ── Main function ──
|
|
27
|
+
export async function runOnboarding(input) {
|
|
28
|
+
const { config, projectPath, gitOps, knowledgeIndex } = input;
|
|
29
|
+
const completedSteps = [...(input.completedSteps ?? [])];
|
|
30
|
+
// Determine which step to execute
|
|
31
|
+
let currentStep;
|
|
32
|
+
if (input.currentStep && !completedSteps.includes(input.currentStep)) {
|
|
33
|
+
currentStep = input.currentStep;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const nextStep = ALL_STEPS.find((s) => !completedSteps.includes(s));
|
|
37
|
+
if (nextStep) {
|
|
38
|
+
currentStep = nextStep;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// All completed -- return final state
|
|
42
|
+
return {
|
|
43
|
+
current_step: "first_task",
|
|
44
|
+
completed_steps: [...ALL_STEPS],
|
|
45
|
+
next_action_hint: "引导已完成!您可以开始使用 SoloForge。",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const result = {
|
|
50
|
+
current_step: currentStep,
|
|
51
|
+
completed_steps: [...completedSteps],
|
|
52
|
+
next_action_hint: "",
|
|
53
|
+
};
|
|
54
|
+
// Execute current step
|
|
55
|
+
switch (currentStep) {
|
|
56
|
+
case "project_overview":
|
|
57
|
+
result.project_overview = await buildProjectOverview(config, projectPath);
|
|
58
|
+
break;
|
|
59
|
+
case "code_tour":
|
|
60
|
+
result.code_tour = await buildCodeTour(config, projectPath, gitOps);
|
|
61
|
+
break;
|
|
62
|
+
case "knowledge_review":
|
|
63
|
+
result.knowledge_summary = buildKnowledgeSummary(knowledgeIndex);
|
|
64
|
+
break;
|
|
65
|
+
case "first_task":
|
|
66
|
+
result.first_task_suggestion = await buildFirstTaskSuggestion(projectPath, gitOps);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
// Mark step as completed
|
|
70
|
+
if (!completedSteps.includes(currentStep)) {
|
|
71
|
+
completedSteps.push(currentStep);
|
|
72
|
+
}
|
|
73
|
+
result.completed_steps = [...completedSteps];
|
|
74
|
+
// Set next action hint
|
|
75
|
+
const remaining = ALL_STEPS.filter((s) => !completedSteps.includes(s));
|
|
76
|
+
if (remaining.length > 0) {
|
|
77
|
+
result.next_action_hint = `下一步:${STEP_DESCRIPTIONS[remaining[0]]}(${remaining[0]})`;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
result.next_action_hint = "引导已完成!您可以开始使用 SoloForge。";
|
|
81
|
+
}
|
|
82
|
+
// Best-effort session persistence
|
|
83
|
+
await persistSession(projectPath, currentStep, completedSteps).catch(() => {
|
|
84
|
+
/* ignore IO errors */
|
|
85
|
+
});
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
// ── Public entry point for MCP tool (sf_onboard) ──
|
|
89
|
+
export async function onboard(input) {
|
|
90
|
+
const { config, projectPath, gitOps, knowledgeIndex, currentStep, reset } = input;
|
|
91
|
+
let completedSteps = [];
|
|
92
|
+
if (reset) {
|
|
93
|
+
await deleteSessionFile(projectPath).catch(() => { });
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const session = await loadOnboardingSession(projectPath);
|
|
97
|
+
if (session) {
|
|
98
|
+
completedSteps = session.completed_steps;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return runOnboarding({ config, projectPath, gitOps, knowledgeIndex, currentStep, completedSteps });
|
|
102
|
+
}
|
|
103
|
+
// ── Step: project_overview ──
|
|
104
|
+
async function buildProjectOverview(config, projectPath) {
|
|
105
|
+
const { backend, frontend } = config.tech_stack;
|
|
106
|
+
const techStack = `backend: ${backend.framework} ${backend.version}, frontend: ${frontend.framework} ${frontend.version}`;
|
|
107
|
+
const repos = config.repos.map((r) => ({
|
|
108
|
+
name: r.name,
|
|
109
|
+
lang: r.lang,
|
|
110
|
+
framework: r.framework,
|
|
111
|
+
}));
|
|
112
|
+
let conventions = [];
|
|
113
|
+
if (config.conventions_file) {
|
|
114
|
+
try {
|
|
115
|
+
const conventionsPath = path.isAbsolute(config.conventions_file)
|
|
116
|
+
? config.conventions_file
|
|
117
|
+
: path.join(projectPath, config.conventions_file);
|
|
118
|
+
const content = await fs.readFile(conventionsPath, "utf-8");
|
|
119
|
+
conventions = content
|
|
120
|
+
.split("\n")
|
|
121
|
+
.map((line) => line.trim())
|
|
122
|
+
.filter((line) => line.length > 0 && !line.startsWith("#"));
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
/* conventions file not found or unreadable */
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
name: config.name,
|
|
130
|
+
tech_stack: techStack,
|
|
131
|
+
repos,
|
|
132
|
+
conventions,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// ── Step: code_tour ──
|
|
136
|
+
async function buildCodeTour(config, projectPath, gitOps) {
|
|
137
|
+
const keyModules = [];
|
|
138
|
+
const allScopePaths = [...config.scope.backend, ...config.scope.frontend];
|
|
139
|
+
// Walk scope paths for key directories
|
|
140
|
+
for (const scopeGlob of allScopePaths) {
|
|
141
|
+
// Extract directory prefix from glob patterns like "src/**", "web/pages/*"
|
|
142
|
+
const dirPrefix = scopeGlob.replace(/\/\*\*?$/, "").replace(/\/\*$/, "");
|
|
143
|
+
const absDir = path.resolve(projectPath, dirPrefix);
|
|
144
|
+
try {
|
|
145
|
+
const entries = await fs.readdir(absDir, { withFileTypes: true });
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
if (entry.isDirectory() && KEY_DIRECTORY_PATTERNS.includes(entry.name.toLowerCase())) {
|
|
148
|
+
keyModules.push({
|
|
149
|
+
path: path.join(dirPrefix, entry.name),
|
|
150
|
+
description: `${entry.name} 模块`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
/* directory not found or unreadable */
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Use git log to find most active areas
|
|
160
|
+
try {
|
|
161
|
+
const log = await gitOps.getLog(projectPath, { maxCount: 5 });
|
|
162
|
+
const touchedFiles = new Set();
|
|
163
|
+
for (const entry of log) {
|
|
164
|
+
// Extract file references from commit messages
|
|
165
|
+
const matches = entry.message.matchAll(/[\w/.-]+\.\w{1,5}/g);
|
|
166
|
+
for (const m of matches) {
|
|
167
|
+
touchedFiles.add(m[0]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Add top-level directories from touched files that aren't already in keyModules
|
|
171
|
+
for (const file of touchedFiles) {
|
|
172
|
+
const parts = file.split("/");
|
|
173
|
+
if (parts.length >= 2) {
|
|
174
|
+
const dir = parts.slice(0, 2).join("/");
|
|
175
|
+
if (!keyModules.some((km) => km.path.startsWith(dir))) {
|
|
176
|
+
// Only add if the directory looks meaningful (not just file references)
|
|
177
|
+
const dirName = parts[1];
|
|
178
|
+
if (KEY_DIRECTORY_PATTERNS.some((p) => dirName.toLowerCase().includes(p))) {
|
|
179
|
+
keyModules.push({
|
|
180
|
+
path: dir,
|
|
181
|
+
description: `近期活跃区域(来自提交记录)`,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
/* git log may fail */
|
|
190
|
+
}
|
|
191
|
+
// Find entry points in scope root directories
|
|
192
|
+
const entryPoints = [];
|
|
193
|
+
for (const scopeGlob of allScopePaths) {
|
|
194
|
+
const dirPrefix = scopeGlob.replace(/\/\*\*?$/, "").replace(/\/\*$/, "");
|
|
195
|
+
const absDir = path.resolve(projectPath, dirPrefix);
|
|
196
|
+
try {
|
|
197
|
+
const entries = await fs.readdir(absDir, { withFileTypes: true });
|
|
198
|
+
for (const entry of entries) {
|
|
199
|
+
if (entry.isFile() && ENTRY_POINT_PATTERNS.some((pattern) => pattern.test(entry.name))) {
|
|
200
|
+
const entryPath = path.join(dirPrefix, entry.name);
|
|
201
|
+
if (!entryPoints.includes(entryPath)) {
|
|
202
|
+
entryPoints.push(entryPath);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
/* directory not found */
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
key_modules: keyModules,
|
|
213
|
+
entry_points: entryPoints,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
// ── Step: knowledge_review ──
|
|
217
|
+
function buildKnowledgeSummary(knowledgeIndex) {
|
|
218
|
+
if (!knowledgeIndex) {
|
|
219
|
+
return {
|
|
220
|
+
total: 0,
|
|
221
|
+
patterns: 0,
|
|
222
|
+
procedures: 0,
|
|
223
|
+
key_topics: [],
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
const allEntries = knowledgeIndex.getAllEntries();
|
|
228
|
+
const combined = [...allEntries.global, ...allEntries.project];
|
|
229
|
+
let patterns = 0;
|
|
230
|
+
let procedures = 0;
|
|
231
|
+
const keyTopics = new Set();
|
|
232
|
+
for (const entry of combined) {
|
|
233
|
+
if (entry.status !== "active" && entry.status !== "staged")
|
|
234
|
+
continue;
|
|
235
|
+
switch (entry.type) {
|
|
236
|
+
case "pattern":
|
|
237
|
+
patterns++;
|
|
238
|
+
break;
|
|
239
|
+
case "procedure":
|
|
240
|
+
procedures++;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
keyTopics.add(entry.name);
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
total: combined.filter((e) => e.status === "active" || e.status === "staged").length,
|
|
247
|
+
patterns,
|
|
248
|
+
procedures,
|
|
249
|
+
key_topics: [...keyTopics].slice(0, 10),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return {
|
|
254
|
+
total: 0,
|
|
255
|
+
patterns: 0,
|
|
256
|
+
procedures: 0,
|
|
257
|
+
key_topics: [],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// ── Step: first_task ──
|
|
262
|
+
async function buildFirstTaskSuggestion(projectPath, gitOps) {
|
|
263
|
+
const suggestions = [];
|
|
264
|
+
// Check for uncommitted changes
|
|
265
|
+
try {
|
|
266
|
+
const status = await gitOps.getStatus(projectPath);
|
|
267
|
+
if (status.length > 0) {
|
|
268
|
+
suggestions.push({
|
|
269
|
+
intent: "提交当前工作区变更",
|
|
270
|
+
reason: `工作区有 ${status.length} 个未提交的变更`,
|
|
271
|
+
difficulty: "low",
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
/* status may fail */
|
|
277
|
+
}
|
|
278
|
+
// Analyze recent commit history for task ideas
|
|
279
|
+
try {
|
|
280
|
+
const log = await gitOps.getLog(projectPath, { maxCount: 10 });
|
|
281
|
+
const recentMessages = log.map((e) => e.message.toLowerCase());
|
|
282
|
+
// Check if tests are mentioned
|
|
283
|
+
const hasTestMentions = recentMessages.some((m) => m.includes("test"));
|
|
284
|
+
if (!hasTestMentions) {
|
|
285
|
+
suggestions.push({
|
|
286
|
+
intent: "补充测试覆盖率",
|
|
287
|
+
reason: "近期提交中未发现测试相关变更,建议补充测试",
|
|
288
|
+
difficulty: "low",
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
// Check for docs
|
|
292
|
+
const hasDocMentions = recentMessages.some((m) => m.includes("doc") || m.includes("readme"));
|
|
293
|
+
if (!hasDocMentions) {
|
|
294
|
+
suggestions.push({
|
|
295
|
+
intent: "补充项目文档",
|
|
296
|
+
reason: "近期提交中未发现文档相关变更,建议补充文档",
|
|
297
|
+
difficulty: "low",
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
// Check for lint/fix
|
|
301
|
+
const hasLintFixes = recentMessages.some((m) => m.includes("lint") || m.includes("style") || m.includes("format"));
|
|
302
|
+
if (!hasLintFixes) {
|
|
303
|
+
suggestions.push({
|
|
304
|
+
intent: "修复 lint 警告",
|
|
305
|
+
reason: "近期提交中未发现代码风格修复,建议运行 lint 检查",
|
|
306
|
+
difficulty: "low",
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
// If there are recent commits, suggest reviewing them
|
|
310
|
+
if (log.length > 0) {
|
|
311
|
+
suggestions.push({
|
|
312
|
+
intent: "阅读近期提交,熟悉代码风格",
|
|
313
|
+
reason: `最近有 ${log.length} 次提交,阅读它们有助于了解项目开发节奏`,
|
|
314
|
+
difficulty: "low",
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
/* git log may fail */
|
|
320
|
+
}
|
|
321
|
+
// Default suggestion if nothing else
|
|
322
|
+
if (suggestions.length === 0) {
|
|
323
|
+
suggestions.push({
|
|
324
|
+
intent: "阅读项目配置和入口文件",
|
|
325
|
+
reason: "从了解项目基本结构开始",
|
|
326
|
+
difficulty: "low",
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
// Return the first suggestion
|
|
330
|
+
return suggestions[0];
|
|
331
|
+
}
|
|
332
|
+
async function deleteSessionFile(projectPath) {
|
|
333
|
+
const sessionFile = path.join(projectPath, ".soloforge", "state", "onboarding-session.json");
|
|
334
|
+
await fs.unlink(sessionFile);
|
|
335
|
+
}
|
|
336
|
+
async function persistSession(projectPath, currentStep, completedSteps) {
|
|
337
|
+
const stateDir = path.join(projectPath, ".soloforge", "state");
|
|
338
|
+
const sessionFile = path.join(stateDir, "onboarding-session.json");
|
|
339
|
+
// Ensure directory exists
|
|
340
|
+
await fs.mkdir(stateDir, { recursive: true });
|
|
341
|
+
const session = {
|
|
342
|
+
current_step: currentStep,
|
|
343
|
+
completed_steps: completedSteps,
|
|
344
|
+
updated_at: new Date().toISOString(),
|
|
345
|
+
};
|
|
346
|
+
await fs.writeFile(sessionFile, JSON.stringify(session, null, 2), "utf-8");
|
|
347
|
+
}
|
|
348
|
+
export async function loadOnboardingSession(projectPath) {
|
|
349
|
+
const sessionFile = path.join(projectPath, ".soloforge", "state", "onboarding-session.json");
|
|
350
|
+
try {
|
|
351
|
+
const content = await fs.readFile(sessionFile, "utf-8");
|
|
352
|
+
const session = JSON.parse(content);
|
|
353
|
+
return {
|
|
354
|
+
current_step: session.current_step,
|
|
355
|
+
completed_steps: session.completed_steps,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/engine/onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PromptExperiment, ExperimentResult, TaskContext } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a new prompt experiment (A/B test) comparing two prompt variants.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createExperiment(entry: string, variantB: string): PromptExperiment;
|
|
6
|
+
/**
|
|
7
|
+
* Evaluate an experiment by comparing two groups of TaskContexts.
|
|
8
|
+
*
|
|
9
|
+
* Metrics:
|
|
10
|
+
* - pass_rate: higher is better
|
|
11
|
+
* - avg_retry_count: lower is better
|
|
12
|
+
* - avg_duration_ms: lower is better
|
|
13
|
+
*
|
|
14
|
+
* Winner is determined by majority vote across metrics.
|
|
15
|
+
* Confidence is the average of absolute normalized differences.
|
|
16
|
+
*/
|
|
17
|
+
export declare function evaluateExperiment(experiment: PromptExperiment, tasksA: TaskContext[], tasksB: TaskContext[]): ExperimentResult;
|
|
18
|
+
//# sourceMappingURL=prompt_experiment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt_experiment.d.ts","sourceRoot":"","sources":["../../src/engine/prompt_experiment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAUlF;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,EAAE,GACpB,gBAAgB,CAuElB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a new prompt experiment (A/B test) comparing two prompt variants.
|
|
3
|
+
*/
|
|
4
|
+
export function createExperiment(entry, variantB) {
|
|
5
|
+
return {
|
|
6
|
+
id: `EXP-${Date.now().toString(36).toUpperCase()}`,
|
|
7
|
+
knowledge_entry: entry,
|
|
8
|
+
variant_a: "current",
|
|
9
|
+
variant_b: variantB,
|
|
10
|
+
metrics: ["pass_rate", "avg_retry_count", "avg_duration_ms"],
|
|
11
|
+
status: "draft",
|
|
12
|
+
created_at: new Date().toISOString(),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function computeGroupMetrics(tasks) {
|
|
16
|
+
if (tasks.length === 0) {
|
|
17
|
+
return {
|
|
18
|
+
pass_rate: 0,
|
|
19
|
+
avg_retry_count: 0,
|
|
20
|
+
avg_duration_ms: 0,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const total = tasks.length;
|
|
24
|
+
// pass_rate: tasks with status "done" / total
|
|
25
|
+
const doneCount = tasks.filter((t) => t.status === "done").length;
|
|
26
|
+
const passRate = doneCount / total;
|
|
27
|
+
// avg_retry_count: average of execution.failure_history.length
|
|
28
|
+
let totalRetries = 0;
|
|
29
|
+
for (const task of tasks) {
|
|
30
|
+
if (task.execution?.failure_history) {
|
|
31
|
+
totalRetries += task.execution.failure_history.length;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const avgRetryCount = totalRetries / total;
|
|
35
|
+
// avg_duration_ms: average time from created_at to now
|
|
36
|
+
const now = Date.now();
|
|
37
|
+
let totalDuration = 0;
|
|
38
|
+
for (const task of tasks) {
|
|
39
|
+
const created = new Date(task.created_at).getTime();
|
|
40
|
+
totalDuration += now - created;
|
|
41
|
+
}
|
|
42
|
+
const avgDurationMs = totalDuration / total;
|
|
43
|
+
return {
|
|
44
|
+
pass_rate: Math.round(passRate * 1000) / 1000,
|
|
45
|
+
avg_retry_count: Math.round(avgRetryCount * 1000) / 1000,
|
|
46
|
+
avg_duration_ms: Math.round(avgDurationMs),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Evaluate an experiment by comparing two groups of TaskContexts.
|
|
51
|
+
*
|
|
52
|
+
* Metrics:
|
|
53
|
+
* - pass_rate: higher is better
|
|
54
|
+
* - avg_retry_count: lower is better
|
|
55
|
+
* - avg_duration_ms: lower is better
|
|
56
|
+
*
|
|
57
|
+
* Winner is determined by majority vote across metrics.
|
|
58
|
+
* Confidence is the average of absolute normalized differences.
|
|
59
|
+
*/
|
|
60
|
+
export function evaluateExperiment(experiment, tasksA, tasksB) {
|
|
61
|
+
const metricsA = computeGroupMetrics(tasksA);
|
|
62
|
+
const metricsB = computeGroupMetrics(tasksB);
|
|
63
|
+
const directions = {
|
|
64
|
+
pass_rate: "higher_better",
|
|
65
|
+
avg_retry_count: "lower_better",
|
|
66
|
+
avg_duration_ms: "lower_better",
|
|
67
|
+
};
|
|
68
|
+
let winsA = 0;
|
|
69
|
+
let winsB = 0;
|
|
70
|
+
const diffs = [];
|
|
71
|
+
for (const metric of experiment.metrics) {
|
|
72
|
+
const valA = metricsA[metric] ?? 0;
|
|
73
|
+
const valB = metricsB[metric] ?? 0;
|
|
74
|
+
const dir = directions[metric];
|
|
75
|
+
// Normalized difference: |A - B| / max(A, B, 1) to avoid division by zero
|
|
76
|
+
const maxVal = Math.max(valA, valB, 1);
|
|
77
|
+
const absDiff = Math.abs(valA - valB) / maxVal;
|
|
78
|
+
diffs.push(absDiff);
|
|
79
|
+
if (dir === "higher_better") {
|
|
80
|
+
if (valA > valB)
|
|
81
|
+
winsA++;
|
|
82
|
+
else if (valB > valA)
|
|
83
|
+
winsB++;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// lower_better
|
|
87
|
+
if (valA < valB)
|
|
88
|
+
winsA++;
|
|
89
|
+
else if (valB < valA)
|
|
90
|
+
winsB++;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Determine winner by majority
|
|
94
|
+
let winner;
|
|
95
|
+
if (winsA >= 2) {
|
|
96
|
+
winner = "a";
|
|
97
|
+
}
|
|
98
|
+
else if (winsB >= 2) {
|
|
99
|
+
winner = "b";
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
winner = "inconclusive";
|
|
103
|
+
}
|
|
104
|
+
// Confidence: average of absolute normalized differences (0.0 to 1.0)
|
|
105
|
+
const confidence = diffs.length > 0 ? Math.round((diffs.reduce((a, b) => a + b, 0) / diffs.length) * 1000) / 1000 : 0;
|
|
106
|
+
// Build summary in Chinese
|
|
107
|
+
let summary;
|
|
108
|
+
const passRateDiff = Math.round(Math.abs(metricsA.pass_rate - metricsB.pass_rate) * 10000) / 100;
|
|
109
|
+
if (winner === "inconclusive") {
|
|
110
|
+
summary = "实验结果不显著";
|
|
111
|
+
}
|
|
112
|
+
else if (winner === "a") {
|
|
113
|
+
summary = `实验完成:变体 A 胜出(胜率 ${passRateDiff}%)`;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
summary = `实验完成:变体 B 胜出(胜率 ${passRateDiff}%)`;
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
experiment_id: experiment.id,
|
|
120
|
+
variant_a_metrics: metricsA,
|
|
121
|
+
variant_b_metrics: metricsB,
|
|
122
|
+
winner,
|
|
123
|
+
confidence,
|
|
124
|
+
summary,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=prompt_experiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt_experiment.js","sourceRoot":"","sources":["../../src/engine/prompt_experiment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TaskContext, DegradationStatus } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Analyzes a single TaskContext and returns degradation status for each component.
|
|
4
|
+
*
|
|
5
|
+
* This is a diagnostic function -- the actual degradation behavior is embedded
|
|
6
|
+
* in each component. Components that must never degrade (scope_controller,
|
|
7
|
+
* secret_detection) always return "full".
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkDegradation(context: TaskContext): DegradationStatus[];
|
|
10
|
+
/**
|
|
11
|
+
* Takes multiple TaskContexts (e.g., recent tasks) and determines overall system
|
|
12
|
+
* degradation by taking the worst level for each component across all contexts.
|
|
13
|
+
*
|
|
14
|
+
* Returns the aggregated component statuses and a human-readable summary in Chinese.
|
|
15
|
+
*/
|
|
16
|
+
export declare function checkSystemDegradation(contexts: TaskContext[]): {
|
|
17
|
+
components: DegradationStatus[];
|
|
18
|
+
summary: string;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=resilience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../../src/engine/resilience.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwLpF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IAC/D,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB,CAsDA"}
|