soloforge 1.2.8 → 1.2.10
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/README.md +105 -321
- package/dist/adapters/claude_code/claude_md.d.ts +5 -0
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
- package/dist/adapters/claude_code/claude_md.js +6 -0
- package/dist/adapters/claude_code/claude_md.js.map +1 -1
- package/dist/adapters/claude_code/hooks.d.ts +4 -0
- package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
- package/dist/adapters/claude_code/hooks.js +5 -0
- package/dist/adapters/claude_code/hooks.js.map +1 -1
- package/dist/adapters/claude_code/server.d.ts.map +1 -1
- package/dist/adapters/claude_code/server.js +9 -21
- package/dist/adapters/claude_code/server.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts +5 -0
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +619 -205
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/codex/codex_config.d.ts +9 -0
- package/dist/adapters/codex/codex_config.d.ts.map +1 -1
- package/dist/adapters/codex/codex_config.js +11 -3
- package/dist/adapters/codex/codex_config.js.map +1 -1
- package/dist/adapters/codex/codex_rules.d.ts +5 -0
- package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
- package/dist/adapters/codex/codex_rules.js +8 -1
- package/dist/adapters/codex/codex_rules.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts +5 -0
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +32 -79
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/adapters/trae/trae_config.d.ts +4 -0
- package/dist/adapters/trae/trae_config.d.ts.map +1 -1
- package/dist/adapters/trae/trae_config.js +5 -7
- package/dist/adapters/trae/trae_config.js.map +1 -1
- package/dist/adapters/trae/trae_rules.d.ts +5 -0
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
- package/dist/adapters/trae/trae_rules.js +7 -1
- package/dist/adapters/trae/trae_rules.js.map +1 -1
- package/dist/bin/config_commands.d.ts +33 -0
- package/dist/bin/config_commands.d.ts.map +1 -0
- package/dist/bin/config_commands.js +222 -0
- package/dist/bin/config_commands.js.map +1 -0
- package/dist/bin/soloforge.js +609 -119
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/artifact_contract_registry.d.ts +138 -0
- package/dist/engine/artifact_contract_registry.d.ts.map +1 -0
- package/dist/engine/artifact_contract_registry.js +427 -0
- package/dist/engine/artifact_contract_registry.js.map +1 -0
- package/dist/engine/audit_pool.d.ts +40 -0
- package/dist/engine/audit_pool.d.ts.map +1 -1
- package/dist/engine/audit_pool.js +37 -1
- package/dist/engine/audit_pool.js.map +1 -1
- package/dist/engine/audit_sampler.d.ts +5 -0
- package/dist/engine/audit_sampler.d.ts.map +1 -1
- package/dist/engine/audit_sampler.js +6 -0
- package/dist/engine/audit_sampler.js.map +1 -1
- package/dist/engine/audit_verifier.d.ts.map +1 -1
- package/dist/engine/audit_verifier.js +5 -1
- package/dist/engine/audit_verifier.js.map +1 -1
- package/dist/engine/batch1_manifest.d.ts +61 -0
- package/dist/engine/batch1_manifest.d.ts.map +1 -0
- package/dist/engine/batch1_manifest.js +220 -0
- package/dist/engine/batch1_manifest.js.map +1 -0
- package/dist/engine/batch1_reality_gate.d.ts +40 -0
- package/dist/engine/batch1_reality_gate.d.ts.map +1 -0
- package/dist/engine/batch1_reality_gate.js +290 -0
- package/dist/engine/batch1_reality_gate.js.map +1 -0
- package/dist/engine/batch1_scenario_registry.d.ts +62 -0
- package/dist/engine/batch1_scenario_registry.d.ts.map +1 -0
- package/dist/engine/batch1_scenario_registry.js +392 -0
- package/dist/engine/batch1_scenario_registry.js.map +1 -0
- package/dist/engine/batch1_scenario_runners.d.ts +42 -0
- package/dist/engine/batch1_scenario_runners.d.ts.map +1 -0
- package/dist/engine/batch1_scenario_runners.js +292 -0
- package/dist/engine/batch1_scenario_runners.js.map +1 -0
- package/dist/engine/capability_action_advisor.d.ts +3 -0
- package/dist/engine/capability_action_advisor.d.ts.map +1 -1
- package/dist/engine/capability_action_advisor.js +10 -0
- package/dist/engine/capability_action_advisor.js.map +1 -1
- package/dist/engine/capability_registry.d.ts +21 -0
- package/dist/engine/capability_registry.d.ts.map +1 -1
- package/dist/engine/capability_registry.js +113 -0
- package/dist/engine/capability_registry.js.map +1 -1
- package/dist/engine/capability_state_store.d.ts +63 -0
- package/dist/engine/capability_state_store.d.ts.map +1 -1
- package/dist/engine/capability_state_store.js +49 -1
- package/dist/engine/capability_state_store.js.map +1 -1
- package/dist/engine/change_coordinator.d.ts.map +1 -1
- package/dist/engine/change_coordinator.js +5 -4
- package/dist/engine/change_coordinator.js.map +1 -1
- package/dist/engine/classifier.d.ts +15 -5
- package/dist/engine/classifier.d.ts.map +1 -1
- package/dist/engine/classifier.js +70 -69
- package/dist/engine/classifier.js.map +1 -1
- package/dist/engine/code_reviewer.d.ts +14 -0
- package/dist/engine/code_reviewer.d.ts.map +1 -1
- package/dist/engine/code_reviewer.js +109 -10
- package/dist/engine/code_reviewer.js.map +1 -1
- package/dist/engine/cognitive_anchor.d.ts +14 -0
- package/dist/engine/cognitive_anchor.d.ts.map +1 -1
- package/dist/engine/cognitive_anchor.js +26 -2
- package/dist/engine/cognitive_anchor.js.map +1 -1
- package/dist/engine/command_execution_contract.d.ts +226 -0
- package/dist/engine/command_execution_contract.d.ts.map +1 -0
- package/dist/engine/command_execution_contract.js +571 -0
- package/dist/engine/command_execution_contract.js.map +1 -0
- package/dist/engine/confidence_scorer.d.ts.map +1 -1
- package/dist/engine/confidence_scorer.js +1 -0
- package/dist/engine/confidence_scorer.js.map +1 -1
- package/dist/engine/config_precedence_contract.d.ts +269 -0
- package/dist/engine/config_precedence_contract.d.ts.map +1 -0
- package/dist/engine/config_precedence_contract.js +948 -0
- package/dist/engine/config_precedence_contract.js.map +1 -0
- package/dist/engine/conflict_gate.d.ts +13 -0
- package/dist/engine/conflict_gate.d.ts.map +1 -1
- package/dist/engine/conflict_gate.js +20 -2
- package/dist/engine/conflict_gate.js.map +1 -1
- package/dist/engine/consumable_asset_registry.d.ts +46 -0
- package/dist/engine/consumable_asset_registry.d.ts.map +1 -0
- package/dist/engine/consumable_asset_registry.js +758 -0
- package/dist/engine/consumable_asset_registry.js.map +1 -0
- package/dist/engine/contract_guard.d.ts +4 -0
- package/dist/engine/contract_guard.d.ts.map +1 -1
- package/dist/engine/contract_guard.js +15 -7
- package/dist/engine/contract_guard.js.map +1 -1
- package/dist/engine/convention_detector.d.ts.map +1 -1
- package/dist/engine/convention_detector.js +5 -2
- package/dist/engine/convention_detector.js.map +1 -1
- package/dist/engine/core_engineering_principles.d.ts +155 -0
- package/dist/engine/core_engineering_principles.d.ts.map +1 -0
- package/dist/engine/core_engineering_principles.js +426 -0
- package/dist/engine/core_engineering_principles.js.map +1 -0
- package/dist/engine/debt_reporter.d.ts.map +1 -1
- package/dist/engine/debt_reporter.js +3 -1
- package/dist/engine/debt_reporter.js.map +1 -1
- package/dist/engine/debt_tracker.d.ts.map +1 -1
- package/dist/engine/debt_tracker.js +9 -3
- package/dist/engine/debt_tracker.js.map +1 -1
- package/dist/engine/debugger.d.ts.map +1 -1
- package/dist/engine/debugger.js +2 -0
- package/dist/engine/debugger.js.map +1 -1
- package/dist/engine/decision_contract.d.ts +11 -2
- package/dist/engine/decision_contract.d.ts.map +1 -1
- package/dist/engine/decision_contract.js +17 -2
- package/dist/engine/decision_contract.js.map +1 -1
- package/dist/engine/delivery.d.ts +7 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +89 -36
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/dependency_scanner.d.ts.map +1 -1
- package/dist/engine/dependency_scanner.js +14 -9
- package/dist/engine/dependency_scanner.js.map +1 -1
- package/dist/engine/developer_sovereignty.d.ts.map +1 -1
- package/dist/engine/developer_sovereignty.js +8 -2
- package/dist/engine/developer_sovereignty.js.map +1 -1
- package/dist/engine/diff_ownership.d.ts.map +1 -1
- package/dist/engine/diff_ownership.js +8 -0
- package/dist/engine/diff_ownership.js.map +1 -1
- package/dist/engine/diff_ownership_store.d.ts +26 -10
- package/dist/engine/diff_ownership_store.d.ts.map +1 -1
- package/dist/engine/diff_ownership_store.js +47 -20
- package/dist/engine/diff_ownership_store.js.map +1 -1
- package/dist/engine/dual_layer_mechanism_registry.d.ts +66 -0
- package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -0
- package/dist/engine/dual_layer_mechanism_registry.js +1077 -0
- package/dist/engine/dual_layer_mechanism_registry.js.map +1 -0
- package/dist/engine/escape_report.d.ts +50 -0
- package/dist/engine/escape_report.d.ts.map +1 -1
- package/dist/engine/escape_report.js +38 -0
- package/dist/engine/escape_report.js.map +1 -1
- package/dist/engine/evolver.d.ts.map +1 -1
- package/dist/engine/evolver.js +12 -2
- package/dist/engine/evolver.js.map +1 -1
- package/dist/engine/exploration.d.ts.map +1 -1
- package/dist/engine/exploration.js +87 -0
- package/dist/engine/exploration.js.map +1 -1
- package/dist/engine/failure_classifier.d.ts.map +1 -1
- package/dist/engine/failure_classifier.js +8 -0
- package/dist/engine/failure_classifier.js.map +1 -1
- package/dist/engine/feasibility_checker.d.ts +8 -0
- package/dist/engine/feasibility_checker.d.ts.map +1 -1
- package/dist/engine/feasibility_checker.js +12 -0
- package/dist/engine/feasibility_checker.js.map +1 -1
- package/dist/engine/git_deps.d.ts +4 -1
- package/dist/engine/git_deps.d.ts.map +1 -1
- package/dist/engine/git_deps.js +5 -1
- package/dist/engine/git_deps.js.map +1 -1
- package/dist/engine/governance_report.d.ts +57 -1
- package/dist/engine/governance_report.d.ts.map +1 -1
- package/dist/engine/governance_report.js +91 -1
- package/dist/engine/governance_report.js.map +1 -1
- package/dist/engine/impact_analyzer.d.ts.map +1 -1
- package/dist/engine/impact_analyzer.js +5 -1
- package/dist/engine/impact_analyzer.js.map +1 -1
- package/dist/engine/implementation_roadmap_registry.d.ts +105 -0
- package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -0
- package/dist/engine/implementation_roadmap_registry.js +813 -0
- package/dist/engine/implementation_roadmap_registry.js.map +1 -0
- package/dist/engine/input_material_contract_registry.d.ts +185 -0
- package/dist/engine/input_material_contract_registry.d.ts.map +1 -0
- package/dist/engine/input_material_contract_registry.js +563 -0
- package/dist/engine/input_material_contract_registry.js.map +1 -0
- package/dist/engine/intent_expander.d.ts +8 -27
- package/dist/engine/intent_expander.d.ts.map +1 -1
- package/dist/engine/intent_expander.js +1170 -139
- package/dist/engine/intent_expander.js.map +1 -1
- package/dist/engine/intent_router.d.ts +82 -0
- package/dist/engine/intent_router.d.ts.map +1 -0
- package/dist/engine/intent_router.js +458 -0
- package/dist/engine/intent_router.js.map +1 -0
- package/dist/engine/io_controller.d.ts.map +1 -1
- package/dist/engine/io_controller.js +25 -13
- package/dist/engine/io_controller.js.map +1 -1
- package/dist/engine/java_quality_guard.d.ts.map +1 -1
- package/dist/engine/java_quality_guard.js +8 -4
- package/dist/engine/java_quality_guard.js.map +1 -1
- package/dist/engine/job_manager.d.ts +35 -0
- package/dist/engine/job_manager.d.ts.map +1 -1
- package/dist/engine/job_manager.js +53 -9
- package/dist/engine/job_manager.js.map +1 -1
- package/dist/engine/knowledge_config_loader.d.ts +12 -1
- package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
- package/dist/engine/knowledge_config_loader.js +50 -10
- package/dist/engine/knowledge_config_loader.js.map +1 -1
- package/dist/engine/knowledge_injection_boundary.d.ts +56 -0
- package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -0
- package/dist/engine/knowledge_injection_boundary.js +561 -0
- package/dist/engine/knowledge_injection_boundary.js.map +1 -0
- package/dist/engine/knowledge_manager.d.ts +73 -0
- package/dist/engine/knowledge_manager.d.ts.map +1 -1
- package/dist/engine/knowledge_manager.js +163 -21
- package/dist/engine/knowledge_manager.js.map +1 -1
- package/dist/engine/knowledge_sovereignty.d.ts +1 -0
- package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
- package/dist/engine/knowledge_sovereignty.js +8 -3
- package/dist/engine/knowledge_sovereignty.js.map +1 -1
- package/dist/engine/llm_gateway.d.ts +74 -3
- package/dist/engine/llm_gateway.d.ts.map +1 -1
- package/dist/engine/llm_gateway.js +75 -4
- package/dist/engine/llm_gateway.js.map +1 -1
- package/dist/engine/main_path_integration_contract.d.ts +383 -0
- package/dist/engine/main_path_integration_contract.d.ts.map +1 -0
- package/dist/engine/main_path_integration_contract.js +1581 -0
- package/dist/engine/main_path_integration_contract.js.map +1 -0
- package/dist/engine/mechanism_contract_registry.d.ts +59 -0
- package/dist/engine/mechanism_contract_registry.d.ts.map +1 -0
- package/dist/engine/mechanism_contract_registry.js +484 -0
- package/dist/engine/mechanism_contract_registry.js.map +1 -0
- package/dist/engine/migration_guard.d.ts.map +1 -1
- package/dist/engine/migration_guard.js +24 -15
- package/dist/engine/migration_guard.js.map +1 -1
- package/dist/engine/mutation_audit.d.ts +10 -0
- package/dist/engine/mutation_audit.d.ts.map +1 -1
- package/dist/engine/mutation_audit.js +19 -2
- package/dist/engine/mutation_audit.js.map +1 -1
- package/dist/engine/observability.d.ts.map +1 -1
- package/dist/engine/observability.js +17 -6
- package/dist/engine/observability.js.map +1 -1
- package/dist/engine/onboarding.d.ts.map +1 -1
- package/dist/engine/onboarding.js +20 -4
- package/dist/engine/onboarding.js.map +1 -1
- package/dist/engine/policy_drift_detector.d.ts +6 -0
- package/dist/engine/policy_drift_detector.d.ts.map +1 -1
- package/dist/engine/policy_drift_detector.js +16 -0
- package/dist/engine/policy_drift_detector.js.map +1 -1
- package/dist/engine/privacy_secret_contract.d.ts +320 -0
- package/dist/engine/privacy_secret_contract.d.ts.map +1 -0
- package/dist/engine/privacy_secret_contract.js +874 -0
- package/dist/engine/privacy_secret_contract.js.map +1 -0
- package/dist/engine/regression_matrix.d.ts +21 -8
- package/dist/engine/regression_matrix.d.ts.map +1 -1
- package/dist/engine/regression_matrix.js +37 -8
- package/dist/engine/regression_matrix.js.map +1 -1
- package/dist/engine/risk_sampler.d.ts +6 -0
- package/dist/engine/risk_sampler.d.ts.map +1 -1
- package/dist/engine/risk_sampler.js +9 -0
- package/dist/engine/risk_sampler.js.map +1 -1
- package/dist/engine/runtime_safety.d.ts.map +1 -1
- package/dist/engine/runtime_safety.js +7 -3
- package/dist/engine/runtime_safety.js.map +1 -1
- package/dist/engine/scaffolder.d.ts.map +1 -1
- package/dist/engine/scaffolder.js +7 -1
- package/dist/engine/scaffolder.js.map +1 -1
- package/dist/engine/scope_controller.d.ts.map +1 -1
- package/dist/engine/scope_controller.js +12 -1
- package/dist/engine/scope_controller.js.map +1 -1
- package/dist/engine/scope_lease.d.ts +43 -0
- package/dist/engine/scope_lease.d.ts.map +1 -1
- package/dist/engine/scope_lease.js +44 -0
- package/dist/engine/scope_lease.js.map +1 -1
- package/dist/engine/semantic_evidence.d.ts +6 -0
- package/dist/engine/semantic_evidence.d.ts.map +1 -1
- package/dist/engine/semantic_evidence.js +9 -0
- package/dist/engine/semantic_evidence.js.map +1 -1
- package/dist/engine/task_context.d.ts +36 -1
- package/dist/engine/task_context.d.ts.map +1 -1
- package/dist/engine/task_context.js +252 -13
- package/dist/engine/task_context.js.map +1 -1
- package/dist/engine/task_planner.d.ts.map +1 -1
- package/dist/engine/task_planner.js +13 -3
- package/dist/engine/task_planner.js.map +1 -1
- package/dist/engine/team_awareness.d.ts.map +1 -1
- package/dist/engine/team_awareness.js +8 -7
- package/dist/engine/team_awareness.js.map +1 -1
- package/dist/engine/template_mechanism_auditor.d.ts +93 -0
- package/dist/engine/template_mechanism_auditor.d.ts.map +1 -0
- package/dist/engine/template_mechanism_auditor.js +622 -0
- package/dist/engine/template_mechanism_auditor.js.map +1 -0
- package/dist/engine/test_generator.d.ts.map +1 -1
- package/dist/engine/test_generator.js +6 -0
- package/dist/engine/test_generator.js.map +1 -1
- package/dist/engine/test_quality.d.ts +6 -0
- package/dist/engine/test_quality.d.ts.map +1 -1
- package/dist/engine/test_quality.js +26 -10
- package/dist/engine/test_quality.js.map +1 -1
- package/dist/engine/tool_invocation_contract_registry.d.ts +136 -0
- package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -0
- package/dist/engine/tool_invocation_contract_registry.js +731 -0
- package/dist/engine/tool_invocation_contract_registry.js.map +1 -0
- package/dist/engine/traceability.d.ts +3 -0
- package/dist/engine/traceability.d.ts.map +1 -1
- package/dist/engine/traceability.js +12 -4
- package/dist/engine/traceability.js.map +1 -1
- package/dist/engine/user_feedback_contract.d.ts +162 -0
- package/dist/engine/user_feedback_contract.d.ts.map +1 -0
- package/dist/engine/user_feedback_contract.js +356 -0
- package/dist/engine/user_feedback_contract.js.map +1 -0
- package/dist/engine/verifier.d.ts +6 -1
- package/dist/engine/verifier.d.ts.map +1 -1
- package/dist/engine/verifier.js +114 -1
- package/dist/engine/verifier.js.map +1 -1
- package/dist/engine/workflow_contract_registry.d.ts +70 -0
- package/dist/engine/workflow_contract_registry.d.ts.map +1 -0
- package/dist/engine/workflow_contract_registry.js +501 -0
- package/dist/engine/workflow_contract_registry.js.map +1 -0
- package/dist/engine/workspace_resumer.d.ts.map +1 -1
- package/dist/engine/workspace_resumer.js +8 -0
- package/dist/engine/workspace_resumer.js.map +1 -1
- package/dist/engine/zero_config_init.d.ts +67 -2
- package/dist/engine/zero_config_init.d.ts.map +1 -1
- package/dist/engine/zero_config_init.js +410 -28
- package/dist/engine/zero_config_init.js.map +1 -1
- package/dist/git/operations.d.ts +101 -0
- package/dist/git/operations.d.ts.map +1 -1
- package/dist/git/operations.js +125 -9
- package/dist/git/operations.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/knowledge/conflict_detector.d.ts +6 -0
- package/dist/knowledge/conflict_detector.d.ts.map +1 -1
- package/dist/knowledge/conflict_detector.js +7 -0
- package/dist/knowledge/conflict_detector.js.map +1 -1
- package/dist/knowledge/health_checker.d.ts +16 -0
- package/dist/knowledge/health_checker.d.ts.map +1 -1
- package/dist/knowledge/health_checker.js +24 -1
- package/dist/knowledge/health_checker.js.map +1 -1
- package/dist/knowledge/index_manager.d.ts +140 -2
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +186 -26
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/loader.d.ts +8 -1
- package/dist/knowledge/loader.d.ts.map +1 -1
- package/dist/knowledge/loader.js +56 -2
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/knowledge/writer.d.ts +49 -1
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +55 -1
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/types.d.ts +255 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +29 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +7 -7
- package/templates/knowledge/checklists//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
- package/templates/knowledge/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
- package/templates/knowledge/checklists//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/351/252/214/346/224/266/346/270/205/345/215/225.md +43 -0
- package/templates/knowledge/checklists//347/237/245/350/257/206/346/263/250/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
- package/templates/knowledge/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +15 -0
- package/templates/knowledge/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
- package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +1 -0
- package/templates/knowledge/procedures//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201/346/265/201/347/250/213.md +23 -0
- package/templates/knowledge/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +19 -0
- package/templates/knowledge/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +15 -0
- package/templates/knowledge/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +15 -0
- package/templates/knowledge/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +1 -1
- package/templates/knowledge/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +53 -0
- package/templates/knowledge/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +21 -0
- package/templates/knowledge/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +25 -0
- package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +20 -0
- package/templates/knowledge/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +25 -0
- package/templates/knowledge/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +26 -0
- package/templates/knowledge/rules//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260/350/247/204/345/210/231.md +24 -0
- package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206/350/247/204/345/210/231.md +20 -0
- package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +125 -0
- package/templates/knowledge/rules//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/345/210/231.md +26 -0
- package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +22 -0
- package/templates/knowledge/rules//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214/350/247/204/345/210/231.md +25 -0
- package/templates/knowledge/rules//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246/350/247/204/345/210/231.md +27 -0
- package/templates/knowledge/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +22 -0
- package/templates/knowledge/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +24 -0
- package/templates/knowledge/rules//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226/350/247/204/345/210/231.md +28 -0
- package/templates/knowledge/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +25 -0
- package/templates/knowledge/templates/{review_summary.md → /345/256/241/346/237/245/346/221/230/350/246/201.md} +1 -1
- package/templates/config.yaml +0 -53
package/README.md
CHANGED
|
@@ -1,406 +1,190 @@
|
|
|
1
1
|
# SoloForge
|
|
2
2
|
|
|
3
|
-
AI
|
|
3
|
+
AI 编程助手的项目工作流配置器。SoloForge 帮你把 Claude Code、Codex App、Trae IDE 接入同一套项目规则、知识模板和验证习惯,让 AI 在你的项目里更少误判、更少乱写、更容易交付可检查的结果。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 适合谁
|
|
6
|
+
|
|
7
|
+
- 你已经在用 Claude Code、Codex App 或 Trae IDE 写代码。
|
|
8
|
+
- 你希望每个项目都有稳定的 AI 工作流规则,而不是每次从零解释。
|
|
9
|
+
- 你希望 AI 修改代码前先理解项目边界,生成产物时不要误改源码。
|
|
10
|
+
- 你希望配置可以自动推断,但不要在低置信度时乱写项目配置。
|
|
6
11
|
|
|
7
12
|
## 最短成功路径
|
|
8
13
|
|
|
9
14
|
```bash
|
|
10
|
-
# 1.
|
|
15
|
+
# 1. 全局安装
|
|
11
16
|
npm install -g soloforge
|
|
12
17
|
|
|
13
18
|
# 2. 进入项目根目录
|
|
14
19
|
cd /path/to/my-project
|
|
15
20
|
|
|
16
|
-
# 3.
|
|
21
|
+
# 3. 预检:查看 SoloForge 会识别出什么,不写入配置
|
|
17
22
|
soloforge init --auto --dry-run
|
|
18
23
|
|
|
19
|
-
# 4.
|
|
24
|
+
# 4. 初始化项目
|
|
20
25
|
soloforge init --auto
|
|
21
26
|
|
|
22
|
-
# 5.
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
27
|
+
# 5. 重新打开你的 AI 工具,让它加载新配置
|
|
28
|
+
# Claude Code: 退出后在项目目录重新启动 claude
|
|
29
|
+
# Codex App: 重新打开项目目录
|
|
30
|
+
# Trae IDE: 重新打开项目目录
|
|
26
31
|
|
|
27
|
-
# 6.
|
|
28
|
-
soloforge validate
|
|
29
|
-
soloforge status
|
|
32
|
+
# 6. 检查状态
|
|
33
|
+
soloforge validate
|
|
34
|
+
soloforge status
|
|
30
35
|
```
|
|
31
36
|
|
|
32
|
-
如果
|
|
33
|
-
|
|
34
|
-
## 快速开始
|
|
35
|
-
|
|
36
|
-
### 安装
|
|
37
|
+
如果 `init --auto` 提示置信度不足,改用:
|
|
37
38
|
|
|
38
39
|
```bash
|
|
39
|
-
|
|
40
|
+
soloforge init --interactive
|
|
40
41
|
```
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
## 初始化方式
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
所有命令默认作用于当前目录。推荐先 `cd` 到项目根目录再执行。
|
|
45
46
|
|
|
46
47
|
```bash
|
|
47
|
-
|
|
48
|
-
soloforge init --auto
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
soloforge init --
|
|
52
|
-
soloforge init --
|
|
53
|
-
soloforge init
|
|
54
|
-
soloforge init --adapter
|
|
55
|
-
soloforge init --adapter codex # Codex App 适配器
|
|
56
|
-
soloforge init --adapter all # 同时生成所有适配器配置
|
|
57
|
-
|
|
58
|
-
# 交互式配置(手动输入项目名称、技术栈等)
|
|
59
|
-
soloforge init --interactive
|
|
60
|
-
|
|
61
|
-
# 低置信度时的兜底
|
|
62
|
-
soloforge init --interactive # 手动补充配置
|
|
48
|
+
soloforge init --auto --dry-run # 只预览,不写入 config.yaml
|
|
49
|
+
soloforge init --auto # 高置信度时生成项目配置和适配器文件
|
|
50
|
+
soloforge init # 生成目录、知识模板和适配器文件,不写 config.yaml
|
|
51
|
+
soloforge init --interactive # 手动确认项目配置
|
|
52
|
+
soloforge init --adapter claude # 只生成 Claude Code 配置
|
|
53
|
+
soloforge init --adapter codex # 只生成 Codex App 配置
|
|
54
|
+
soloforge init --adapter trae # 只生成 Trae IDE 配置
|
|
55
|
+
soloforge init --adapter all # 同时生成所有适配器配置
|
|
63
56
|
```
|
|
64
57
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
| 适配器 | 生成文件 | 说明 |
|
|
68
|
-
|--------|---------|------|
|
|
69
|
-
| Claude Code | `.claude/settings.json` | Hooks 配置(PreToolUse/PostToolUse) |
|
|
70
|
-
| | `CLAUDE.md` | 工作流规则文件 |
|
|
71
|
-
| | `.mcp.json` | MCP Server 配置(SoloForge + Playwright) |
|
|
72
|
-
| Trae IDE | `.trae/mcp.json` | MCP Server 配置 |
|
|
73
|
-
| | `.trae/rules/project_rules.md` | 项目规则文件 |
|
|
74
|
-
| Codex App | `.codex/config.toml` | MCP Server 配置(TOML 格式) |
|
|
75
|
-
| | `.codex/hooks.json` | Hooks 配置 |
|
|
76
|
-
| | `AGENTS.md` | 工作流规则文件 |
|
|
77
|
-
| 共通 | `.soloforge/config.yaml` | 项目配置(不覆盖已有) |
|
|
78
|
-
| | `.soloforge/knowledge/` | 知识模板(不覆盖已有) |
|
|
79
|
-
| | `.gitignore` 追加 | `.mcp.json` 和 `.soloforge/`(如缺失则追加) |
|
|
80
|
-
|
|
81
|
-
> **Cursor 说明**: Cursor 暂无内置适配器(无 `--adapter cursor`)。如需在 Cursor 中使用 SoloForge:
|
|
82
|
-
> 1. 先用 `soloforge init` 生成 `.mcp.json`
|
|
83
|
-
> 2. 从 `.mcp.json` 中复制 `soloforge` 这一项,粘贴到项目根目录的 `.cursor/mcp.json`
|
|
84
|
-
> 3. 将 `SOLOFORGE_PROJECT` 改为项目绝对路径
|
|
85
|
-
>
|
|
86
|
-
> 示例 `.cursor/mcp.json`:
|
|
87
|
-
> ```json
|
|
88
|
-
> {
|
|
89
|
-
> "mcpServers": {
|
|
90
|
-
> "soloforge": {
|
|
91
|
-
> "command": "soloforge",
|
|
92
|
-
> "args": ["mcp"],
|
|
93
|
-
> "env": { "SOLOFORGE_PROJECT": "/absolute/path/to/my-project" }
|
|
94
|
-
> }
|
|
95
|
-
> }
|
|
96
|
-
> }
|
|
97
|
-
> ```
|
|
98
|
-
> 前提:`soloforge` 已全局安装(`npm install -g soloforge`)且在 PATH 上。生成后重载 Cursor 窗口。
|
|
99
|
-
|
|
100
|
-
### 初始化后的下一步
|
|
101
|
-
|
|
102
|
-
1. **检查配置**: `soloforge validate` — 确认 config.yaml 和知识文件正确
|
|
103
|
-
2. **重新打开 / 重载 AI 工具**: 退出并重新启动 Claude Code / Trae / Codex,让它加载新生成的配置文件
|
|
104
|
-
3. **试一个小任务**: 让 AI "创建一个简单的 DTO",观察 SoloForge 工作流是否触发
|
|
105
|
-
4. **查看状态**: `soloforge status` — 确认知识库已索引
|
|
106
|
-
|
|
107
|
-
### 更新与重新生成
|
|
108
|
-
|
|
109
|
-
SoloForge 更新后,需要重新生成适配器配置以获取最新的 hooks 和规则:
|
|
58
|
+
`config.yaml` 是可选文件。没有它时,SoloForge 会根据 `package.json`、`pom.xml`、`go.mod` 等文件在运行时推断项目类型;只有高置信度或你手动确认时,才会把配置写入 `.soloforge/config.yaml`。
|
|
110
59
|
|
|
111
|
-
|
|
112
|
-
# 更新 SoloForge(任意目录均可)
|
|
113
|
-
npm update -g soloforge
|
|
60
|
+
## 生成文件
|
|
114
61
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
soloforge
|
|
118
|
-
soloforge
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
# 重新生成后,重新打开 / 重载 AI 工具以加载更新
|
|
62
|
+
| 位置 | 用途 |
|
|
63
|
+
|------|------|
|
|
64
|
+
| `.soloforge/knowledge/` | 项目知识模板和规则 |
|
|
65
|
+
| `.soloforge/config.yaml` | 可选项目配置,仅在高置信度或手动确认后生成 |
|
|
66
|
+
| `.claude/settings.json` / `CLAUDE.md` / `.mcp.json` | Claude Code 配置 |
|
|
67
|
+
| `.codex/config.toml` / `.codex/hooks.json` / `AGENTS.md` | Codex App 配置 |
|
|
68
|
+
| `.trae/mcp.json` / `.trae/rules/project_rules.md` | Trae IDE 配置 |
|
|
123
69
|
|
|
124
|
-
|
|
125
|
-
soloforge version
|
|
126
|
-
```
|
|
70
|
+
SoloForge 不会覆盖已有知识文件。重新运行 `soloforge init` 可刷新适配器配置。
|
|
127
71
|
|
|
128
|
-
|
|
72
|
+
## 日常命令
|
|
129
73
|
|
|
130
74
|
```bash
|
|
131
|
-
#
|
|
132
|
-
soloforge
|
|
133
|
-
soloforge
|
|
75
|
+
soloforge validate # 检查项目配置和知识文件
|
|
76
|
+
soloforge status # 查看当前项目状态和配置来源
|
|
77
|
+
soloforge version # 查看版本
|
|
134
78
|
```
|
|
135
79
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
SoloForge 以 MCP Server(stdio 传输)运行。AI 助手在开发过程中调用 SoloForge 工具:
|
|
80
|
+
更新 SoloForge 后,建议重新生成适配器配置:
|
|
139
81
|
|
|
82
|
+
```bash
|
|
83
|
+
npm update -g soloforge
|
|
84
|
+
cd /path/to/my-project
|
|
85
|
+
soloforge init
|
|
140
86
|
```
|
|
141
|
-
开发者 → AI 助手 (Claude Code / Trae / Codex) → SoloForge MCP Server
|
|
142
|
-
← 知识、规则、模板
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
SoloForge 引擎不直接调用 LLM API,由宿主 AI 中转。所有智能来自宿主 AI,SoloForge 提供结构、规则和知识。
|
|
146
|
-
|
|
147
|
-
## MCP 工具
|
|
148
|
-
|
|
149
|
-
### 核心管线(Phase 1)
|
|
150
|
-
|
|
151
|
-
| 工具 | 说明 |
|
|
152
|
-
|------|------|
|
|
153
|
-
| `sf_classify` | 分类任务意图、风险、复杂度;确定执行模式 |
|
|
154
|
-
| `sf_expand` | 意图膨胀 + 知识匹配 + 作用域控制 + 验收标准 |
|
|
155
|
-
| `sf_verify` | 生成构建/测试验证命令,收集证据 |
|
|
156
|
-
| `sf_learn` | 从已完成任务提取模式,更新知识库 |
|
|
157
|
-
| `sf_status` | 查询任务状态,恢复中断的工作流 |
|
|
158
|
-
|
|
159
|
-
### 质量与规划(Phase 2)
|
|
160
|
-
|
|
161
|
-
| 工具 | 说明 |
|
|
162
|
-
|------|------|
|
|
163
|
-
| `sf_plan` | 复杂意图拆解为子任务,分析依赖关系 |
|
|
164
|
-
| `sf_plan_advance` | 高级任务规划:知识驱动的多步骤规划 |
|
|
165
|
-
| `sf_analyze` | 影响范围分析,与声明范围对比 |
|
|
166
|
-
| `sf_scaffold` | 脚手架生成(Controller/Service/DTO 等) |
|
|
167
|
-
| `sf_review` | 五维代码审查(质量/安全/性能/技术债务/架构) |
|
|
168
|
-
|
|
169
|
-
### 团队协作(Phase 3)
|
|
170
|
-
|
|
171
|
-
| 工具 | 说明 |
|
|
172
|
-
|------|------|
|
|
173
|
-
| `sf_deliver` | 提交代码、生成变更日志;推送和 PR 取决于交付配置 ⚠️ |
|
|
174
|
-
| `sf_coord_check` | 预测性冲突检测,跨仓库关联提示 |
|
|
175
|
-
| `sf_team_status` | 活动流、工作负载可视化、过期分支告警 |
|
|
176
|
-
| `sf_contract_check` | 检测接口契约的破坏性变更 |
|
|
177
|
-
| `sf_onboard` | 引导式入职:项目概览 → 代码导览 → 首任务 |
|
|
178
|
-
|
|
179
|
-
> **⚠️ `sf_deliver` 风险说明**: 默认行为是 `auto_commit=true, auto_push=false, auto_pr=false` — 即只执行 `git commit`,不推送、不创建 PR。推送和 PR 由交付配置(`delivery` 域知识中的 `auto_push` / `auto_pr`)或调用参数 `skip_push` / `skip_pr` 控制。SoloForge 不会自动调用此工具,必须由开发者或 AI 助手显式触发。建议首次使用前先执行 `sf_review` 确认变更内容,或在交付配置中保持 `auto_push: false` 以手动控制推送时机。
|
|
180
|
-
|
|
181
|
-
### 知识维护
|
|
182
87
|
|
|
183
|
-
|
|
184
|
-
|------|------|
|
|
185
|
-
| `sf_knowledge_add` | 新增知识条目,返回行业探索指引 |
|
|
186
|
-
| `sf_knowledge_update` | 更新知识条目内容 |
|
|
187
|
-
| `sf_knowledge_audit` | 审计知识格式、完整性和质量 |
|
|
188
|
-
|
|
189
|
-
### 高级能力(Phase 4)
|
|
88
|
+
## 使用时你会看到什么
|
|
190
89
|
|
|
191
|
-
|
|
192
|
-
|------|------|
|
|
193
|
-
| `sf_feasibility_check` | 三档可行性分析(可行/风险/不可行) |
|
|
194
|
-
| `sf_debug` | 智能排障:解析 → 追踪 → 根因 → 修复方案 |
|
|
195
|
-
| `sf_observability` | 系统指标、告警检测、周期报告 |
|
|
90
|
+
接入成功后,AI 助手会在合适的时候调用 SoloForge 来理解任务、生成执行上下文、给出验证建议和记录任务状态。对你来说,主要变化是:
|
|
196
91
|
|
|
197
|
-
|
|
92
|
+
- 写代码类任务会更明确 scope、验收项和验证命令。
|
|
93
|
+
- 生成文档、提取说明、分析日志等产物型任务会默认输出到 `.soloforge/output/`,不会默认修改 `src/`。
|
|
94
|
+
- 遇到缺少路径、源码包、日志等必需输入时,会先澄清,而不是猜着执行。
|
|
95
|
+
- 敏感信息、危险命令和高风险交付动作会更保守,需要你确认。
|
|
198
96
|
|
|
199
|
-
|
|
200
|
-
|------|------|
|
|
201
|
-
| `sf_migration_check` | 分析数据库迁移文件安全性,检测破坏性操作 |
|
|
202
|
-
| `sf_test_guide` | 根据变更文件生成测试类型、场景和 Mock 指引 |
|
|
203
|
-
| `sf_test_quality` | 五维评估测试文件质量(断言/边界/命名/重复/覆盖) |
|
|
204
|
-
| `sf_dependency_scan` | 扫描依赖漏洞,支持 npm/maven/gradle |
|
|
205
|
-
| `sf_debt_report` | 技术债务聚合报告:分类、趋势、优先级 |
|
|
97
|
+
## 产物输出
|
|
206
98
|
|
|
207
|
-
|
|
99
|
+
文档、分析报告、源码包提取结果等非代码产物默认写入:
|
|
208
100
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
| `sf_escape_report` | 记录逃逸/误伤/工具故障 |
|
|
213
|
-
| `sf_governance_report` | 汇总治理健康报告 |
|
|
214
|
-
| `sf_capability_update` | 人工确认后更新能力状态 |
|
|
101
|
+
```text
|
|
102
|
+
.soloforge/output/
|
|
103
|
+
```
|
|
215
104
|
|
|
216
|
-
|
|
105
|
+
例如让 AI “从 `/tmp/prototype.zip` 抓取原型说明”,SoloForge 会把它作为只读外部材料处理,要求产物写入 `.soloforge/output/**`,而不是修改项目源码。
|
|
217
106
|
|
|
218
|
-
|
|
107
|
+
## Cursor 说明
|
|
219
108
|
|
|
220
|
-
|
|
221
|
-
|------|------|
|
|
222
|
-
| `pattern` | 决策规则 + 验收标准 |
|
|
223
|
-
| `procedure` | 操作流程 + 检查点 |
|
|
224
|
-
| `domain` | 业务规则、约束条件、例外情况 |
|
|
225
|
-
| `acceptance_template` | 质量门禁 + 自动化检查命令 |
|
|
226
|
-
| `review_rule` | 正则驱动的代码审查规则 |
|
|
227
|
-
| `pipeline_procedure` | CI/CD 流水线阶段定义 |
|
|
228
|
-
|
|
229
|
-
知识文件采用 Markdown + YAML frontmatter 格式:
|
|
230
|
-
|
|
231
|
-
```markdown
|
|
232
|
-
---
|
|
233
|
-
name: crud-operation
|
|
234
|
-
type: pattern
|
|
235
|
-
when: "CRUD, 增删改查, 新增, 删除, 修改"
|
|
236
|
-
scope: [backend]
|
|
237
|
-
products: ["*"]
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## 决策规则
|
|
241
|
-
- API 层使用 DTO,持久层使用 Entity
|
|
242
|
-
- 业务实体使用软删除,日志使用硬删除
|
|
243
|
-
...
|
|
244
|
-
|
|
245
|
-
## 验收项
|
|
246
|
-
- [AC-01] 所有 CRUD 端点返回正确的 HTTP 状态码
|
|
247
|
-
...
|
|
248
|
-
```
|
|
109
|
+
Cursor 暂无内置适配器。可以先生成 `.mcp.json`,再手动复制到 `.cursor/mcp.json`:
|
|
249
110
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
SoloForge 从 `.soloforge/config.yaml` 读取项目配置:
|
|
253
|
-
|
|
254
|
-
```yaml
|
|
255
|
-
name: my-project
|
|
256
|
-
tech_stack:
|
|
257
|
-
backend:
|
|
258
|
-
lang: java
|
|
259
|
-
framework: spring-boot
|
|
260
|
-
version: "3.0"
|
|
261
|
-
frontend:
|
|
262
|
-
lang: typescript
|
|
263
|
-
framework: react
|
|
264
|
-
version: "18"
|
|
265
|
-
product_profile: default
|
|
266
|
-
repos:
|
|
267
|
-
- name: backend
|
|
268
|
-
path: .
|
|
269
|
-
lang: java
|
|
270
|
-
framework: spring-boot
|
|
271
|
-
scope: ["src/main/java"]
|
|
272
|
-
build_commands:
|
|
273
|
-
backend:
|
|
274
|
-
build: mvn compile -q
|
|
275
|
-
test: mvn test -q
|
|
276
|
-
full: mvn verify -q
|
|
277
|
-
frontend:
|
|
278
|
-
build: npm run build
|
|
279
|
-
test: npm test
|
|
280
|
-
full: npm run build && npm test
|
|
281
|
-
scope:
|
|
282
|
-
backend: ["src/main/java"]
|
|
283
|
-
frontend: ["src/main/react"]
|
|
111
|
+
```bash
|
|
112
|
+
soloforge init
|
|
284
113
|
```
|
|
285
114
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
| | | 契约治理内核 | | |
|
|
299
|
-
+------------------+ +---------------------+ +------------------+
|
|
115
|
+
示例:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"mcpServers": {
|
|
120
|
+
"soloforge": {
|
|
121
|
+
"command": "soloforge",
|
|
122
|
+
"args": ["mcp"],
|
|
123
|
+
"env": { "SOLOFORGE_PROJECT": "/absolute/path/to/my-project" }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
300
127
|
```
|
|
301
128
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
SoloForge 的治理能力按四级状态管理,新增治理能力不伪装 hard block:
|
|
305
|
-
|
|
306
|
-
| 状态 | 含义 |
|
|
307
|
-
|------|------|
|
|
308
|
-
| `enforced` | 强制执行,阻断不合规操作 |
|
|
309
|
-
| `advisory` | 建议性告警,由开发者决策 |
|
|
310
|
-
| `experimental` | 实验性,需晋级计划才能升级 |
|
|
311
|
-
| `removed` | 已移除,不再生效 |
|
|
312
|
-
|
|
313
|
-
治理闭环:任务完成入池 → 按风险加权抽样 → 逃逸记录 → 治理报告 → 人工确认后状态更新。所有状态变更必须经 `sf_capability_update` + 人工确认,不自动执行。
|
|
314
|
-
|
|
315
|
-
## 常见问题 / 排错
|
|
316
|
-
|
|
317
|
-
### `soloforge init` 报 "配置校验失败"
|
|
318
|
-
|
|
319
|
-
`--auto` 模式依赖指纹检测(pom.xml / package.json 等)。如果项目结构非标准,用 `--interactive` 手动配置。
|
|
129
|
+
保存后重载 Cursor 窗口。
|
|
320
130
|
|
|
321
|
-
|
|
131
|
+
## 常见问题
|
|
322
132
|
|
|
323
|
-
|
|
133
|
+
### `soloforge init --auto` 没有生成 config.yaml
|
|
324
134
|
|
|
325
|
-
|
|
135
|
+
这是正常行为。SoloForge 只有在项目指纹足够明确时才会自动写配置。你可以继续使用运行时推断,也可以执行 `soloforge init --interactive` 手动确认。
|
|
326
136
|
|
|
327
|
-
|
|
328
|
-
- Claude Code: 检查 `.mcp.json` 是否存在且路径正确
|
|
329
|
-
- Trae IDE: 检查 `.trae/mcp.json` 是否存在,并确认 Trae 已开启项目级 MCP(beta flag)
|
|
330
|
-
- Codex App: 检查 `.codex/config.toml` 是否存在
|
|
137
|
+
### AI 工具没有调用 SoloForge
|
|
331
138
|
|
|
332
|
-
|
|
139
|
+
先检查对应配置文件是否生成,然后重启或重载 AI 工具:
|
|
333
140
|
|
|
334
|
-
|
|
335
|
-
-
|
|
336
|
-
-
|
|
337
|
-
- PR:在 Git 平台关闭
|
|
141
|
+
- Claude Code: `.mcp.json`、`.claude/settings.json`、`CLAUDE.md`
|
|
142
|
+
- Codex App: `.codex/config.toml`、`.codex/hooks.json`、`AGENTS.md`
|
|
143
|
+
- Trae IDE: `.trae/mcp.json`、`.trae/rules/project_rules.md`
|
|
338
144
|
|
|
339
|
-
###
|
|
145
|
+
### 想重新生成配置
|
|
340
146
|
|
|
341
147
|
```bash
|
|
342
|
-
# 方式 1: cd 到项目目录
|
|
343
|
-
cd /path/to/my-project
|
|
344
148
|
soloforge init
|
|
345
|
-
|
|
346
|
-
# 方式 2: --project-path(适用于脚本或非交互场景)
|
|
347
|
-
soloforge init --project-path /path/to/my-project
|
|
348
149
|
```
|
|
349
150
|
|
|
350
|
-
|
|
151
|
+
该命令会刷新适配器配置,不会覆盖已有 `.soloforge/config.yaml` 和知识文件。
|
|
351
152
|
|
|
352
|
-
###
|
|
153
|
+
### 想清理项目中的 SoloForge 文件
|
|
154
|
+
|
|
155
|
+
全局卸载只会移除命令:
|
|
353
156
|
|
|
354
157
|
```bash
|
|
355
|
-
npm uninstall -g soloforge
|
|
158
|
+
npm uninstall -g soloforge
|
|
356
159
|
```
|
|
357
160
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
### 项目内清理
|
|
161
|
+
项目内文件需要手动删除:
|
|
361
162
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
| `.codex/` | Codex App | MCP 配置 + Hooks |
|
|
372
|
-
| `AGENTS.md` | Codex App | **可能有用户手写内容,删除前确认** |
|
|
163
|
+
```text
|
|
164
|
+
.soloforge/
|
|
165
|
+
.mcp.json
|
|
166
|
+
.claude/
|
|
167
|
+
CLAUDE.md
|
|
168
|
+
.codex/
|
|
169
|
+
AGENTS.md
|
|
170
|
+
.trae/
|
|
171
|
+
```
|
|
373
172
|
|
|
374
|
-
|
|
173
|
+
删除 `CLAUDE.md` 或 `AGENTS.md` 前请确认没有手写内容。
|
|
375
174
|
|
|
376
175
|
## 本仓库开发
|
|
377
176
|
|
|
378
|
-
以下命令在 SoloForge 源码仓库根目录执行:
|
|
379
|
-
|
|
380
177
|
```bash
|
|
381
|
-
# 安装依赖
|
|
382
178
|
npm install
|
|
383
|
-
|
|
384
|
-
# 构建
|
|
385
179
|
npm run build
|
|
386
|
-
|
|
387
|
-
# 运行测试
|
|
388
180
|
npm test
|
|
389
|
-
|
|
390
|
-
# 类型检查
|
|
391
|
-
npm run lint
|
|
392
|
-
|
|
393
|
-
# 监听模式
|
|
394
|
-
npm run dev
|
|
395
181
|
```
|
|
396
182
|
|
|
397
|
-
##
|
|
183
|
+
## 技术要求
|
|
398
184
|
|
|
399
|
-
- TypeScript (ESM)
|
|
400
185
|
- Node.js >= 18
|
|
401
|
-
-
|
|
402
|
-
-
|
|
403
|
-
- Vitest(测试框架)
|
|
186
|
+
- TypeScript / ESM
|
|
187
|
+
- 支持的 AI 编程工具(Claude Code / Codex App / Trae IDE)
|
|
404
188
|
|
|
405
189
|
## 许可证
|
|
406
190
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude_md.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,gBAAgB,EAAE,aAAa,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"claude_md.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,gBAAgB,EAAE,aAAa,GAAG,MAAM,CAGvF"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { generateWorkflowRules } from "../shared/workflow_template.js";
|
|
2
|
+
/**
|
|
3
|
+
* 生成 CLAUDE.md 项目指令文件内容。
|
|
4
|
+
* @param config - 项目配置
|
|
5
|
+
* @returns CLAUDE.md 文件的文本内容
|
|
6
|
+
*/
|
|
2
7
|
export function generateClaudeMd(config) {
|
|
8
|
+
console.error("[soloForge] ClaudeMD生成: 开始生成 CLAUDE.md");
|
|
3
9
|
return generateWorkflowRules(config) + "\n";
|
|
4
10
|
}
|
|
5
11
|
//# sourceMappingURL=claude_md.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude_md.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,UAAU,gBAAgB,CAAC,MAA8C;IAC7E,OAAO,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude_md.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8C;IAC7E,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxD,OAAO,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +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,IAAI,MAAM,
|
|
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;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA4B5C"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export { generateClaudeMd } from "./claude_md.js";
|
|
2
|
+
/**
|
|
3
|
+
* 生成 Claude Code hooks 配置对象。
|
|
4
|
+
* @returns hooks 配置对象,包含 PreToolUse 和 PostToolUse 钩子
|
|
5
|
+
*/
|
|
2
6
|
export function generateHooksConfig() {
|
|
7
|
+
console.error("[soloForge] Hooks配置: 生成 hooks 配置");
|
|
3
8
|
return {
|
|
4
9
|
hooks: {
|
|
5
10
|
PreToolUse: [
|
|
@@ -1 +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;IACjC,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;yBACjC;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,qBAAqB;yBAC/B;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
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;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,uBAAuB;yBACjC;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,qBAAqB;yBAC/B;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAGA,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;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAGA,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;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDjE"}
|
|
@@ -8,6 +8,7 @@ import { registerTools } from "./tools.js";
|
|
|
8
8
|
* @param deps - 服务器依赖项(配置、知识索引、任务上下文)
|
|
9
9
|
*/
|
|
10
10
|
export async function startServer(deps) {
|
|
11
|
+
console.error("[soloForge] server: startServer() 开始执行");
|
|
11
12
|
const { config, knowledgeIndex, taskContext } = deps;
|
|
12
13
|
const server = new McpServer({
|
|
13
14
|
name: "soloforge",
|
|
@@ -28,7 +29,7 @@ export async function startServer(deps) {
|
|
|
28
29
|
await transport.close?.();
|
|
29
30
|
}
|
|
30
31
|
catch (e) {
|
|
31
|
-
console.debug("[
|
|
32
|
+
console.debug("[soloForge]", e);
|
|
32
33
|
}
|
|
33
34
|
process.exit(0);
|
|
34
35
|
};
|
|
@@ -38,30 +39,17 @@ export async function startServer(deps) {
|
|
|
38
39
|
process.on("SIGPIPE", () => {
|
|
39
40
|
shutdown();
|
|
40
41
|
});
|
|
41
|
-
//
|
|
42
|
-
process.on("uncaughtException",
|
|
42
|
+
// 捕获未处理的同步异常,同步清理后退出(避免异步清理未完成就 exit)
|
|
43
|
+
process.on("uncaughtException", (err) => {
|
|
43
44
|
console.error("SoloForge 未捕获异常:", err);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
await knowledgeIndex.close();
|
|
47
|
-
await transport.close?.();
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
console.debug("[soloforge]", e);
|
|
51
|
-
}
|
|
45
|
+
// 同步清理:不等待 async 操作,直接退出
|
|
46
|
+
process.exitCode = 1;
|
|
52
47
|
process.exit(1);
|
|
53
48
|
});
|
|
54
|
-
// 捕获未处理的 Promise
|
|
55
|
-
process.on("unhandledRejection",
|
|
49
|
+
// 捕获未处理的 Promise 拒绝,同步清理后退出
|
|
50
|
+
process.on("unhandledRejection", (reason) => {
|
|
56
51
|
console.error("SoloForge 未处理的 Promise 拒绝:", reason);
|
|
57
|
-
|
|
58
|
-
if (knowledgeIndex)
|
|
59
|
-
await knowledgeIndex.close();
|
|
60
|
-
await transport.close?.();
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
console.debug("[soloforge]", e);
|
|
64
|
-
}
|
|
52
|
+
process.exitCode = 1;
|
|
65
53
|
process.exit(1);
|
|
66
54
|
});
|
|
67
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsB3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsB3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB;IAC9C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,cAAc;gBAAE,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACvC,yBAAyB;QACzB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,4BAA4B;IAC5B,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|