soloforge 1.1.30 → 1.1.31
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/CHANGELOG.md +27 -0
- package/README.md +33 -18
- package/dist/adapters/claude_code/claude_md.d.ts +2 -1
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
- package/dist/adapters/claude_code/claude_md.js.map +1 -1
- package/dist/adapters/codex/codex_rules.d.ts +2 -1
- package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
- package/dist/adapters/codex/codex_rules.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +0 -1
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/adapters/trae/trae_config.d.ts +17 -1
- package/dist/adapters/trae/trae_config.d.ts.map +1 -1
- package/dist/adapters/trae/trae_config.js +2 -2
- package/dist/adapters/trae/trae_config.js.map +1 -1
- package/dist/adapters/trae/trae_rules.d.ts +2 -1
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
- package/dist/adapters/trae/trae_rules.js.map +1 -1
- package/dist/bin/args.d.ts +9 -0
- package/dist/bin/args.d.ts.map +1 -1
- package/dist/bin/args.js +44 -1
- package/dist/bin/args.js.map +1 -1
- package/dist/bin/commands/audit.d.ts.map +1 -1
- package/dist/bin/commands/audit.js +5 -40
- package/dist/bin/commands/audit.js.map +1 -1
- package/dist/bin/commands/check_bash.d.ts.map +1 -1
- package/dist/bin/commands/check_bash.js +28 -6
- package/dist/bin/commands/check_bash.js.map +1 -1
- package/dist/bin/commands/check_write.d.ts +2 -1
- package/dist/bin/commands/check_write.d.ts.map +1 -1
- package/dist/bin/commands/check_write.js +14 -45
- package/dist/bin/commands/check_write.js.map +1 -1
- package/dist/bin/commands/hooks.d.ts.map +1 -1
- package/dist/bin/commands/hooks.js +7 -3
- package/dist/bin/commands/hooks.js.map +1 -1
- package/dist/bin/commands/init.d.ts +19 -2
- package/dist/bin/commands/init.d.ts.map +1 -1
- package/dist/bin/commands/init.js +97 -72
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/status.d.ts.map +1 -1
- package/dist/bin/commands/status.js +49 -65
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/commands/sync.d.ts.map +1 -1
- package/dist/bin/commands/sync.js +18 -26
- package/dist/bin/commands/sync.js.map +1 -1
- package/dist/bin/commands/validate.d.ts +1 -1
- package/dist/bin/commands/validate.d.ts.map +1 -1
- package/dist/bin/commands/validate.js +47 -58
- package/dist/bin/commands/validate.js.map +1 -1
- package/dist/bin/config_commands.d.ts +1 -1
- package/dist/bin/config_commands.d.ts.map +1 -1
- package/dist/bin/config_commands.js +40 -26
- package/dist/bin/config_commands.js.map +1 -1
- package/dist/bin/soloforge.js +30 -3
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/audit/audit_pool.d.ts.map +1 -1
- package/dist/engine/audit/audit_pool.js +2 -1
- package/dist/engine/audit/audit_pool.js.map +1 -1
- package/dist/engine/audit/audit_sampler.d.ts +2 -0
- package/dist/engine/audit/audit_sampler.d.ts.map +1 -1
- package/dist/engine/audit/audit_sampler.js.map +1 -1
- package/dist/engine/audit/code_reviewer.d.ts +1 -1
- package/dist/engine/audit/code_reviewer.d.ts.map +1 -1
- package/dist/engine/audit/code_reviewer.js +9 -21
- package/dist/engine/audit/code_reviewer.js.map +1 -1
- package/dist/engine/audit/core_experience_principle.js +1 -1
- package/dist/engine/audit/core_experience_principle.js.map +1 -1
- package/dist/engine/audit/debt_reporter.d.ts +3 -0
- package/dist/engine/audit/debt_reporter.d.ts.map +1 -1
- package/dist/engine/audit/debt_reporter.js.map +1 -1
- package/dist/engine/audit/debt_tracker.d.ts.map +1 -1
- package/dist/engine/audit/debt_tracker.js +12 -5
- package/dist/engine/audit/debt_tracker.js.map +1 -1
- package/dist/engine/audit/debugger.d.ts +3 -0
- package/dist/engine/audit/debugger.d.ts.map +1 -1
- package/dist/engine/audit/debugger.js.map +1 -1
- package/dist/engine/audit/delivery.d.ts +1 -1
- package/dist/engine/audit/delivery.d.ts.map +1 -1
- package/dist/engine/audit/delivery.js +7 -4
- package/dist/engine/audit/delivery.js.map +1 -1
- package/dist/engine/audit/delivery_readiness.d.ts +2 -0
- package/dist/engine/audit/delivery_readiness.d.ts.map +1 -1
- package/dist/engine/audit/delivery_readiness.js +2 -0
- package/dist/engine/audit/delivery_readiness.js.map +1 -1
- package/dist/engine/audit/developer_sovereignty.d.ts +5 -43
- package/dist/engine/audit/developer_sovereignty.d.ts.map +1 -1
- package/dist/engine/audit/developer_sovereignty.js +2 -6
- package/dist/engine/audit/developer_sovereignty.js.map +1 -1
- package/dist/engine/audit/evolver.js +5 -5
- package/dist/engine/audit/evolver.js.map +1 -1
- package/dist/engine/audit/failure_classifier.d.ts.map +1 -1
- package/dist/engine/audit/governance_report.d.ts +1 -1
- package/dist/engine/audit/governance_report.d.ts.map +1 -1
- package/dist/engine/audit/governance_report.js +1 -1
- package/dist/engine/audit/governance_report.js.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/gates.d.ts +2 -1
- package/dist/engine/audit/main_path_integration_contract/gates.d.ts.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/gates.js.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/queries.d.ts +2 -2
- package/dist/engine/audit/main_path_integration_contract/queries.d.ts.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/queries.js +2 -2
- package/dist/engine/audit/main_path_integration_contract/queries.js.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/scanning.d.ts.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/scanning.js +2 -2
- package/dist/engine/audit/main_path_integration_contract/scanning.js.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/scanning_infra.d.ts.map +1 -1
- package/dist/engine/audit/main_path_integration_contract/scanning_infra.js +3 -2
- package/dist/engine/audit/main_path_integration_contract/scanning_infra.js.map +1 -1
- package/dist/engine/audit/mutation_audit.d.ts +4 -22
- package/dist/engine/audit/mutation_audit.d.ts.map +1 -1
- package/dist/engine/audit/mutation_audit.js.map +1 -1
- package/dist/engine/audit/observability.d.ts.map +1 -1
- package/dist/engine/audit/observability.js +4 -2
- package/dist/engine/audit/observability.js.map +1 -1
- package/dist/engine/audit/privacy_grants.d.ts +108 -0
- package/dist/engine/audit/privacy_grants.d.ts.map +1 -0
- package/dist/engine/audit/privacy_grants.js +171 -0
- package/dist/engine/audit/privacy_grants.js.map +1 -0
- package/dist/engine/audit/privacy_patterns.d.ts +24 -0
- package/dist/engine/audit/privacy_patterns.d.ts.map +1 -0
- package/dist/engine/audit/privacy_patterns.js +143 -0
- package/dist/engine/audit/privacy_patterns.js.map +1 -0
- package/dist/engine/audit/privacy_scanning.d.ts +153 -0
- package/dist/engine/audit/privacy_scanning.d.ts.map +1 -0
- package/dist/engine/audit/privacy_scanning.js +567 -0
- package/dist/engine/audit/privacy_scanning.js.map +1 -0
- package/dist/engine/audit/privacy_secret_contract.d.ts +9 -317
- package/dist/engine/audit/privacy_secret_contract.d.ts.map +1 -1
- package/dist/engine/audit/privacy_secret_contract.js +12 -873
- package/dist/engine/audit/privacy_secret_contract.js.map +1 -1
- package/dist/engine/audit/privacy_types.d.ts +48 -0
- package/dist/engine/audit/privacy_types.d.ts.map +1 -0
- package/dist/engine/audit/privacy_types.js +14 -0
- package/dist/engine/audit/privacy_types.js.map +1 -0
- package/dist/engine/audit/risk_sampler.d.ts +2 -0
- package/dist/engine/audit/risk_sampler.d.ts.map +1 -1
- package/dist/engine/audit/risk_sampler.js +2 -0
- package/dist/engine/audit/risk_sampler.js.map +1 -1
- package/dist/engine/audit/semantic_evidence.d.ts +5 -1
- package/dist/engine/audit/semantic_evidence.d.ts.map +1 -1
- package/dist/engine/audit/semantic_evidence.js +2 -0
- package/dist/engine/audit/semantic_evidence.js.map +1 -1
- package/dist/engine/audit/test_generator.d.ts.map +1 -1
- package/dist/engine/audit/test_generator.js +4 -1
- package/dist/engine/audit/test_generator.js.map +1 -1
- package/dist/engine/audit/test_quality.d.ts +3 -0
- package/dist/engine/audit/test_quality.d.ts.map +1 -1
- package/dist/engine/audit/test_quality.js +1 -71
- package/dist/engine/audit/test_quality.js.map +1 -1
- package/dist/engine/change_coordinator.d.ts +1 -1
- package/dist/engine/change_coordinator.d.ts.map +1 -1
- package/dist/engine/change_coordinator.js +30 -27
- package/dist/engine/change_coordinator.js.map +1 -1
- package/dist/engine/cognitive_anchor.d.ts.map +1 -1
- package/dist/engine/cognitive_anchor.js +6 -7
- package/dist/engine/cognitive_anchor.js.map +1 -1
- package/dist/engine/config/config_auto_repair.d.ts +2 -1
- package/dist/engine/config/config_auto_repair.d.ts.map +1 -1
- package/dist/engine/config/config_auto_repair.js +18 -13
- package/dist/engine/config/config_auto_repair.js.map +1 -1
- package/dist/engine/config/config_precedence_contract/field_class.d.ts +11 -0
- package/dist/engine/config/config_precedence_contract/field_class.d.ts.map +1 -0
- package/dist/engine/config/config_precedence_contract/field_class.js +10 -0
- package/dist/engine/config/config_precedence_contract/field_class.js.map +1 -0
- package/dist/engine/config/config_precedence_contract/index.d.ts +1 -0
- package/dist/engine/config/config_precedence_contract/index.d.ts.map +1 -1
- package/dist/engine/config/config_precedence_contract/index.js.map +1 -1
- package/dist/engine/config/config_precedence_contract/project_config.d.ts.map +1 -1
- package/dist/engine/config/config_precedence_contract/project_config.js +17 -9
- package/dist/engine/config/config_precedence_contract/project_config.js.map +1 -1
- package/dist/engine/config/config_precedence_contract/resolution.d.ts +1 -1
- package/dist/engine/config/config_precedence_contract/resolution.d.ts.map +1 -1
- package/dist/engine/config/config_precedence_contract/resolution.js +9 -0
- package/dist/engine/config/config_precedence_contract/resolution.js.map +1 -1
- package/dist/engine/config/config_precedence_contract/types.d.ts +4 -26
- package/dist/engine/config/config_precedence_contract/types.d.ts.map +1 -1
- package/dist/engine/config/config_precedence_contract/types.js +2 -0
- package/dist/engine/config/config_precedence_contract/types.js.map +1 -1
- package/dist/engine/config/config_precedence_contract.d.ts +3 -1
- package/dist/engine/config/config_precedence_contract.d.ts.map +1 -1
- package/dist/engine/config/config_precedence_contract.js +7 -1
- package/dist/engine/config/config_precedence_contract.js.map +1 -1
- package/dist/engine/config/config_write_boundary.d.ts.map +1 -1
- package/dist/engine/config/config_write_boundary.js +16 -0
- package/dist/engine/config/config_write_boundary.js.map +1 -1
- package/dist/engine/config/regression_matrix.d.ts.map +1 -1
- package/dist/engine/config/regression_matrix.js +3 -3
- package/dist/engine/config/regression_matrix.js.map +1 -1
- package/dist/engine/config/zero_config_init.d.ts +30 -5
- package/dist/engine/config/zero_config_init.d.ts.map +1 -1
- package/dist/engine/config/zero_config_init.js +26 -15
- package/dist/engine/config/zero_config_init.js.map +1 -1
- package/dist/engine/contracts/architecture_design_contract.d.ts.map +1 -1
- package/dist/engine/contracts/architecture_design_contract.js.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.d.ts +1 -1
- package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.js +1 -1
- package/dist/engine/contracts/artifact_contract_registry.js.map +1 -1
- package/dist/engine/contracts/backend_implementation_contract.js +4 -4
- package/dist/engine/contracts/backend_implementation_contract.js.map +1 -1
- package/dist/engine/contracts/brainstorm_contract.d.ts +1 -1
- package/dist/engine/contracts/brainstorm_contract.d.ts.map +1 -1
- package/dist/engine/contracts/brainstorm_contract.js +1 -1
- package/dist/engine/contracts/brainstorm_contract.js.map +1 -1
- package/dist/engine/contracts/capability_state_store.d.ts +2 -0
- package/dist/engine/contracts/capability_state_store.d.ts.map +1 -1
- package/dist/engine/contracts/capability_state_store.js +11 -1
- package/dist/engine/contracts/capability_state_store.js.map +1 -1
- package/dist/engine/contracts/code_maintainability_observability_contract.js +5 -5
- package/dist/engine/contracts/code_maintainability_observability_contract.js.map +1 -1
- package/dist/engine/contracts/coding_readiness_gate.d.ts +1 -1
- package/dist/engine/contracts/coding_readiness_gate.d.ts.map +1 -1
- package/dist/engine/contracts/coding_readiness_gate.js +1 -1
- package/dist/engine/contracts/coding_readiness_gate.js.map +1 -1
- package/dist/engine/contracts/command_execution_contract.d.ts +1 -11
- package/dist/engine/contracts/command_execution_contract.d.ts.map +1 -1
- package/dist/engine/contracts/command_execution_contract.js +1 -11
- package/dist/engine/contracts/command_execution_contract.js.map +1 -1
- package/dist/engine/contracts/contract_guard.d.ts +1 -1
- package/dist/engine/contracts/contract_guard.d.ts.map +1 -1
- package/dist/engine/contracts/contract_registry/registry.d.ts.map +1 -1
- package/dist/engine/contracts/contract_registry/registry.js +2 -2
- package/dist/engine/contracts/contract_registry/registry.js.map +1 -1
- package/dist/engine/contracts/contract_registry/validation.js.map +1 -1
- package/dist/engine/contracts/contract_state_store.d.ts +2 -0
- package/dist/engine/contracts/contract_state_store.d.ts.map +1 -1
- package/dist/engine/contracts/contract_state_store.js +4 -1
- package/dist/engine/contracts/contract_state_store.js.map +1 -1
- package/dist/engine/contracts/control_plane_contract.d.ts.map +1 -1
- package/dist/engine/contracts/control_plane_contract.js +5 -4
- package/dist/engine/contracts/control_plane_contract.js.map +1 -1
- package/dist/engine/contracts/decision_contract.js +1 -1
- package/dist/engine/contracts/decision_contract.js.map +1 -1
- package/dist/engine/contracts/decision_workshop.d.ts.map +1 -1
- package/dist/engine/contracts/decision_workshop.js.map +1 -1
- package/dist/engine/contracts/design_artifact_pack.d.ts +3 -40
- package/dist/engine/contracts/design_artifact_pack.d.ts.map +1 -1
- package/dist/engine/contracts/design_artifact_pack.js.map +1 -1
- package/dist/engine/contracts/detail_discipline.d.ts.map +1 -1
- package/dist/engine/contracts/detail_discipline.js.map +1 -1
- package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js +1 -1
- package/dist/engine/contracts/dual_layer_mechanism_registry/validation.js.map +1 -1
- package/dist/engine/contracts/enforcement_guard.d.ts +2 -1
- package/dist/engine/contracts/enforcement_guard.d.ts.map +1 -1
- package/dist/engine/contracts/enforcement_guard.js +1 -1
- package/dist/engine/contracts/enforcement_guard.js.map +1 -1
- package/dist/engine/contracts/escape_report.d.ts.map +1 -1
- package/dist/engine/contracts/escape_report.js +2 -1
- package/dist/engine/contracts/escape_report.js.map +1 -1
- package/dist/engine/contracts/evidence_grounding_contract.d.ts +2 -4
- package/dist/engine/contracts/evidence_grounding_contract.d.ts.map +1 -1
- package/dist/engine/contracts/evidence_grounding_contract.js +3 -9
- package/dist/engine/contracts/evidence_grounding_contract.js.map +1 -1
- package/dist/engine/contracts/evolution_regression_gate.d.ts +2 -0
- package/dist/engine/contracts/evolution_regression_gate.d.ts.map +1 -1
- package/dist/engine/contracts/evolution_regression_gate.js +2 -0
- package/dist/engine/contracts/evolution_regression_gate.js.map +1 -1
- package/dist/engine/contracts/existing_system_analysis.d.ts.map +1 -1
- package/dist/engine/contracts/existing_system_analysis.js.map +1 -1
- package/dist/engine/contracts/existing_system_analyzer.d.ts +9 -9
- package/dist/engine/contracts/existing_system_analyzer.d.ts.map +1 -1
- package/dist/engine/contracts/existing_system_analyzer.js +83 -80
- package/dist/engine/contracts/existing_system_analyzer.js.map +1 -1
- package/dist/engine/contracts/extension_contract.d.ts +2 -2
- package/dist/engine/contracts/extension_contract.d.ts.map +1 -1
- package/dist/engine/contracts/extension_contract.js +2 -2
- package/dist/engine/contracts/extension_contract.js.map +1 -1
- package/dist/engine/contracts/extension_scenario_definitions.d.ts +10 -0
- package/dist/engine/contracts/extension_scenario_definitions.d.ts.map +1 -0
- package/dist/engine/contracts/extension_scenario_definitions.js +112 -0
- package/dist/engine/contracts/extension_scenario_definitions.js.map +1 -0
- package/dist/engine/contracts/extension_scenario_registry.d.ts +1 -7
- package/dist/engine/contracts/extension_scenario_registry.d.ts.map +1 -1
- package/dist/engine/contracts/extension_scenario_registry.js +5 -257
- package/dist/engine/contracts/extension_scenario_registry.js.map +1 -1
- package/dist/engine/contracts/first_principles.d.ts.map +1 -1
- package/dist/engine/contracts/first_principles.js.map +1 -1
- package/dist/engine/contracts/instruction_contract.d.ts.map +1 -1
- package/dist/engine/contracts/instruction_contract.js +0 -6
- package/dist/engine/contracts/instruction_contract.js.map +1 -1
- package/dist/engine/contracts/local_docker_acceptance.d.ts +1 -1
- package/dist/engine/contracts/local_docker_acceptance.d.ts.map +1 -1
- package/dist/engine/contracts/local_docker_acceptance.js +4 -4
- package/dist/engine/contracts/local_docker_acceptance.js.map +1 -1
- package/dist/engine/contracts/mechanism_health_check.d.ts +2 -0
- package/dist/engine/contracts/mechanism_health_check.d.ts.map +1 -1
- package/dist/engine/contracts/mechanism_health_check.js +2 -0
- package/dist/engine/contracts/mechanism_health_check.js.map +1 -1
- package/dist/engine/contracts/metric_governance.d.ts.map +1 -1
- package/dist/engine/contracts/metric_governance.js.map +1 -1
- package/dist/engine/contracts/ood_solid_contract.js +2 -2
- package/dist/engine/contracts/ood_solid_contract.js.map +1 -1
- package/dist/engine/contracts/platform_context.d.ts +2 -0
- package/dist/engine/contracts/platform_context.d.ts.map +1 -1
- package/dist/engine/contracts/platform_context.js +2 -0
- package/dist/engine/contracts/platform_context.js.map +1 -1
- package/dist/engine/contracts/project_knowledge_contract.d.ts.map +1 -1
- package/dist/engine/contracts/project_knowledge_contract.js +3 -0
- package/dist/engine/contracts/project_knowledge_contract.js.map +1 -1
- package/dist/engine/contracts/route_decision_contract_verifier.js +1 -1
- package/dist/engine/contracts/route_decision_contract_verifier.js.map +1 -1
- package/dist/engine/contracts/technology_decision.d.ts.map +1 -1
- package/dist/engine/contracts/technology_decision.js.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +3 -62
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.js +2 -0
- package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
- package/dist/engine/contracts/traceability.d.ts +2 -1
- package/dist/engine/contracts/traceability.d.ts.map +1 -1
- package/dist/engine/contracts/traceability.js +5 -5
- package/dist/engine/contracts/traceability.js.map +1 -1
- package/dist/engine/contracts/user_feedback_contract.js +2 -2
- package/dist/engine/contracts/user_feedback_contract.js.map +1 -1
- package/dist/engine/contracts/workflow_template_pack.js +1 -1
- package/dist/engine/contracts/workflow_template_pack.js.map +1 -1
- package/dist/engine/core/config_defaults.d.ts +11 -0
- package/dist/engine/core/config_defaults.d.ts.map +1 -0
- package/dist/engine/core/config_defaults.js +11 -0
- package/dist/engine/core/config_defaults.js.map +1 -0
- package/dist/engine/core/env.d.ts +12 -0
- package/dist/engine/core/env.d.ts.map +1 -0
- package/dist/engine/core/env.js +12 -0
- package/dist/engine/core/env.js.map +1 -0
- package/dist/engine/core/errors.d.ts +21 -0
- package/dist/engine/core/errors.d.ts.map +1 -0
- package/dist/engine/core/errors.js +35 -0
- package/dist/engine/core/errors.js.map +1 -0
- package/dist/engine/core/exit_codes.d.ts +14 -0
- package/dist/engine/core/exit_codes.d.ts.map +1 -0
- package/dist/engine/core/exit_codes.js +14 -0
- package/dist/engine/core/exit_codes.js.map +1 -0
- package/dist/engine/core/helpers.d.ts +15 -0
- package/dist/engine/core/helpers.d.ts.map +1 -1
- package/dist/engine/core/helpers.js +31 -0
- package/dist/engine/core/helpers.js.map +1 -1
- package/dist/engine/core/index.d.ts +15 -0
- package/dist/engine/core/index.d.ts.map +1 -0
- package/dist/engine/core/index.js +22 -0
- package/dist/engine/core/index.js.map +1 -0
- package/dist/engine/core/io_controller.d.ts +1 -0
- package/dist/engine/core/io_controller.d.ts.map +1 -1
- package/dist/engine/core/io_controller.js +18 -2
- package/dist/engine/core/io_controller.js.map +1 -1
- package/dist/engine/core/llm_gateway.d.ts +20 -3
- package/dist/engine/core/llm_gateway.d.ts.map +1 -1
- package/dist/engine/core/llm_gateway.js +95 -13
- package/dist/engine/core/llm_gateway.js.map +1 -1
- package/dist/engine/core/log_governance.d.ts.map +1 -1
- package/dist/engine/core/log_governance.js +4 -9
- package/dist/engine/core/log_governance.js.map +1 -1
- package/dist/engine/core/logger.d.ts.map +1 -1
- package/dist/engine/core/logger.js +5 -2
- package/dist/engine/core/logger.js.map +1 -1
- package/dist/engine/core/path_scope_utils.d.ts +1 -1
- package/dist/engine/core/path_scope_utils.d.ts.map +1 -1
- package/dist/engine/core/path_scope_utils.js +1 -1
- package/dist/engine/core/path_scope_utils.js.map +1 -1
- package/dist/engine/core/paths.d.ts +86 -0
- package/dist/engine/core/paths.d.ts.map +1 -0
- package/dist/engine/core/paths.js +103 -0
- package/dist/engine/core/paths.js.map +1 -0
- package/dist/engine/core/write_file_atomic.d.ts +25 -0
- package/dist/engine/core/write_file_atomic.d.ts.map +1 -0
- package/dist/engine/core/write_file_atomic.js +63 -0
- package/dist/engine/core/write_file_atomic.js.map +1 -0
- package/dist/engine/dependency_scanner.d.ts.map +1 -1
- package/dist/engine/dependency_scanner.js +14 -16
- package/dist/engine/dependency_scanner.js.map +1 -1
- package/dist/engine/exploration.d.ts.map +1 -1
- package/dist/engine/exploration.js +9 -8
- package/dist/engine/exploration.js.map +1 -1
- package/dist/engine/knowledge/chinese_semantic_priority.d.ts.map +1 -1
- package/dist/engine/knowledge/chinese_semantic_priority.js.map +1 -1
- package/dist/engine/knowledge/drift_classifier.d.ts +26 -0
- package/dist/engine/knowledge/drift_classifier.d.ts.map +1 -0
- package/dist/engine/knowledge/drift_classifier.js +82 -0
- package/dist/engine/knowledge/drift_classifier.js.map +1 -0
- package/dist/engine/knowledge/knowledge_asset_audit.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_audit.js.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_consumer.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_consumer.js +0 -4
- package/dist/engine/knowledge/knowledge_asset_consumer.js.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_generation_gate.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_generation_gate.js.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_schema.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_asset_schema.js +0 -3
- package/dist/engine/knowledge/knowledge_asset_schema.js.map +1 -1
- package/dist/engine/knowledge/knowledge_evolution.d.ts +1 -17
- package/dist/engine/knowledge/knowledge_evolution.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_evolution.js +2 -74
- package/dist/engine/knowledge/knowledge_evolution.js.map +1 -1
- package/dist/engine/knowledge/knowledge_health.d.ts +44 -0
- package/dist/engine/knowledge/knowledge_health.d.ts.map +1 -0
- package/dist/engine/knowledge/knowledge_health.js +303 -0
- package/dist/engine/knowledge/knowledge_health.js.map +1 -0
- package/dist/engine/knowledge/knowledge_injection_boundary.d.ts +1 -1
- package/dist/engine/knowledge/knowledge_injection_boundary.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_injection_boundary.js +21 -5
- package/dist/engine/knowledge/knowledge_injection_boundary.js.map +1 -1
- package/dist/engine/knowledge/knowledge_lifecycle.d.ts +4 -2
- package/dist/engine/knowledge/knowledge_lifecycle.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_lifecycle.js +37 -27
- package/dist/engine/knowledge/knowledge_lifecycle.js.map +1 -1
- package/dist/engine/knowledge/knowledge_manager.d.ts +2 -148
- package/dist/engine/knowledge/knowledge_manager.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_manager.js +4 -933
- package/dist/engine/knowledge/knowledge_manager.js.map +1 -1
- package/dist/engine/knowledge/knowledge_scenario_registry.d.ts +1 -1
- package/dist/engine/knowledge/knowledge_scenario_registry.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_scenario_registry.js +6 -6
- package/dist/engine/knowledge/knowledge_scenario_registry.js.map +1 -1
- package/dist/engine/knowledge/knowledge_sovereignty.js +2 -2
- package/dist/engine/knowledge/knowledge_sovereignty.js.map +1 -1
- package/dist/engine/knowledge/knowledge_writer.d.ts +108 -0
- package/dist/engine/knowledge/knowledge_writer.d.ts.map +1 -0
- package/dist/engine/knowledge/knowledge_writer.js +637 -0
- package/dist/engine/knowledge/knowledge_writer.js.map +1 -0
- package/dist/engine/knowledge/language_policy.d.ts +1 -1
- package/dist/engine/knowledge/language_policy.js +1 -1
- package/dist/engine/knowledge/release_compatibility.d.ts.map +1 -1
- package/dist/engine/knowledge/release_compatibility.js.map +1 -1
- package/dist/engine/migration_guard.js +4 -4
- package/dist/engine/migration_guard.js.map +1 -1
- package/dist/engine/onboarding.d.ts +1 -1
- package/dist/engine/onboarding.d.ts.map +1 -1
- package/dist/engine/onboarding.js +4 -1
- package/dist/engine/onboarding.js.map +1 -1
- package/dist/engine/pipeline/conflict_gate.js +1 -1
- package/dist/engine/pipeline/conflict_gate.js.map +1 -1
- package/dist/engine/pipeline/diff_ownership.d.ts.map +1 -1
- package/dist/engine/pipeline/diff_ownership.js +7 -0
- package/dist/engine/pipeline/diff_ownership.js.map +1 -1
- package/dist/engine/pipeline/diff_ownership_store.d.ts.map +1 -1
- package/dist/engine/pipeline/diff_ownership_store.js +8 -6
- package/dist/engine/pipeline/diff_ownership_store.js.map +1 -1
- package/dist/engine/pipeline/expand_pipeline.d.ts +2 -1
- package/dist/engine/pipeline/expand_pipeline.d.ts.map +1 -1
- package/dist/engine/pipeline/expand_pipeline.js.map +1 -1
- package/dist/engine/pipeline/input_material_contract_registry.d.ts +1 -1
- package/dist/engine/pipeline/input_material_contract_registry.d.ts.map +1 -1
- package/dist/engine/pipeline/input_material_contract_registry.js +44 -43
- package/dist/engine/pipeline/input_material_contract_registry.js.map +1 -1
- package/dist/engine/pipeline/input_material_extractor.js +3 -3
- package/dist/engine/pipeline/input_material_extractor.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/expand.d.ts +6 -6
- package/dist/engine/pipeline/intent_expander/expand.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/expand.js +57 -50
- package/dist/engine/pipeline/intent_expander/expand.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/helpers.d.ts +6 -4
- package/dist/engine/pipeline/intent_expander/helpers.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/helpers.js +4 -4
- package/dist/engine/pipeline/intent_expander/helpers.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/index.d.ts +4 -4
- package/dist/engine/pipeline/intent_expander/index.js +8 -8
- package/dist/engine/pipeline/intent_expander/index.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +12 -9
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.js +11 -11
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts +68 -6
- package/dist/engine/pipeline/intent_expander/privacy_gates.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/privacy_gates.js +94 -21
- package/dist/engine/pipeline/intent_expander/privacy_gates.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts +37 -3
- package/dist/engine/pipeline/intent_expander/scope_acceptance.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/scope_acceptance.js +1 -1
- package/dist/engine/pipeline/intent_expander/scope_acceptance.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/templates.d.ts +2 -1
- package/dist/engine/pipeline/intent_expander/templates.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/templates.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/types.d.ts +35 -5
- package/dist/engine/pipeline/intent_expander/types.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts +4 -3
- package/dist/engine/pipeline/intent_expander/uncertainty_circuit.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js +1 -1
- package/dist/engine/pipeline/intent_expander/uncertainty_circuit.js.map +1 -1
- package/dist/engine/pipeline/intent_expander.d.ts +2 -2
- package/dist/engine/pipeline/intent_expander.js +6 -6
- package/dist/engine/pipeline/intent_expander.js.map +1 -1
- package/dist/engine/pipeline/intent_route_scorer.d.ts +2 -2
- package/dist/engine/pipeline/intent_route_scorer.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_route_scorer.js +3 -3
- package/dist/engine/pipeline/intent_route_scorer.js.map +1 -1
- package/dist/engine/pipeline/intent_router.d.ts +4 -5
- package/dist/engine/pipeline/intent_router.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_router.js +64 -112
- package/dist/engine/pipeline/intent_router.js.map +1 -1
- package/dist/engine/pipeline/intent_signal_extractor.d.ts +18 -0
- package/dist/engine/pipeline/intent_signal_extractor.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_signal_extractor.js +8 -8
- package/dist/engine/pipeline/intent_signal_extractor.js.map +1 -1
- package/dist/engine/pipeline/job_manager.d.ts.map +1 -1
- package/dist/engine/pipeline/job_manager.js +18 -4
- package/dist/engine/pipeline/job_manager.js.map +1 -1
- package/dist/engine/pipeline/plan_proposal_gate.d.ts.map +1 -1
- package/dist/engine/pipeline/plan_proposal_gate.js +0 -1
- package/dist/engine/pipeline/plan_proposal_gate.js.map +1 -1
- package/dist/engine/pipeline/route_types.d.ts +10 -0
- package/dist/engine/pipeline/route_types.d.ts.map +1 -0
- package/dist/engine/pipeline/route_types.js +9 -0
- package/dist/engine/pipeline/route_types.js.map +1 -0
- package/dist/engine/pipeline/scope_controller.d.ts +1 -1
- package/dist/engine/pipeline/scope_controller.d.ts.map +1 -1
- package/dist/engine/pipeline/scope_controller.js +18 -17
- package/dist/engine/pipeline/scope_controller.js.map +1 -1
- package/dist/engine/pipeline/scope_lease.d.ts.map +1 -1
- package/dist/engine/pipeline/scope_lease.js +3 -1
- package/dist/engine/pipeline/scope_lease.js.map +1 -1
- package/dist/engine/pipeline/slice_executor.d.ts +1 -1
- package/dist/engine/pipeline/slice_executor.d.ts.map +1 -1
- package/dist/engine/pipeline/slice_executor.js +1 -1
- package/dist/engine/pipeline/slice_executor.js.map +1 -1
- package/dist/engine/pipeline/stage_gate_engine.d.ts +2 -0
- package/dist/engine/pipeline/stage_gate_engine.d.ts.map +1 -1
- package/dist/engine/pipeline/stage_gate_engine.js +9 -3
- package/dist/engine/pipeline/stage_gate_engine.js.map +1 -1
- package/dist/engine/pipeline/stale_current_task_detector.d.ts.map +1 -1
- package/dist/engine/pipeline/stale_current_task_detector.js +8 -5
- package/dist/engine/pipeline/stale_current_task_detector.js.map +1 -1
- package/dist/engine/pipeline/task_context/cleanup.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/cleanup.js +4 -1
- package/dist/engine/pipeline/task_context/cleanup.js.map +1 -1
- package/dist/engine/pipeline/task_context/expansion_privacy.d.ts +1 -3
- package/dist/engine/pipeline/task_context/expansion_privacy.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/expansion_privacy.js +1 -1
- package/dist/engine/pipeline/task_context/expansion_privacy.js.map +1 -1
- package/dist/engine/pipeline/task_context/manager.d.ts +4 -4
- package/dist/engine/pipeline/task_context/manager.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/manager.js +25 -13
- package/dist/engine/pipeline/task_context/manager.js.map +1 -1
- package/dist/engine/pipeline/task_context/manager_setters.d.ts +3 -3
- package/dist/engine/pipeline/task_context/manager_setters.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/manager_setters.js.map +1 -1
- package/dist/engine/pipeline/task_context/status_transitions.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/status_transitions.js +4 -3
- package/dist/engine/pipeline/task_context/status_transitions.js.map +1 -1
- package/dist/engine/pipeline/task_planner.js +3 -4
- package/dist/engine/pipeline/task_planner.js.map +1 -1
- package/dist/engine/pipeline/workspace_lease.d.ts +10 -1
- package/dist/engine/pipeline/workspace_lease.d.ts.map +1 -1
- package/dist/engine/pipeline/workspace_lease.js +29 -3
- package/dist/engine/pipeline/workspace_lease.js.map +1 -1
- package/dist/engine/pipeline/workspace_resumer.d.ts.map +1 -1
- package/dist/engine/pipeline/workspace_resumer.js +3 -0
- package/dist/engine/pipeline/workspace_resumer.js.map +1 -1
- package/dist/engine/release/foundation_scenario_registry.d.ts +1 -1
- package/dist/engine/release/foundation_scenario_registry.d.ts.map +1 -1
- package/dist/engine/release/foundation_scenario_registry.js +3 -2
- package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
- package/dist/engine/release/foundation_scenario_runners.d.ts.map +1 -1
- package/dist/engine/release/foundation_scenario_runners.js +40 -33
- package/dist/engine/release/foundation_scenario_runners.js.map +1 -1
- package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts +2 -2
- package/dist/engine/release/gate_checks/checkControlPlaneTrust.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkControlPlaneTrust.js +3 -2
- package/dist/engine/release/gate_checks/checkControlPlaneTrust.js.map +1 -1
- package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js +3 -3
- package/dist/engine/release/gate_checks/checkCriticalProblemConsumption.js.map +1 -1
- package/dist/engine/release/gate_checks/checkDependencyAudit.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkDependencyAudit.js +8 -3
- package/dist/engine/release/gate_checks/checkDependencyAudit.js.map +1 -1
- package/dist/engine/release/gate_checks/checkDistFreshness.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkDistFreshness.js +4 -2
- package/dist/engine/release/gate_checks/checkDistFreshness.js.map +1 -1
- package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts +1 -1
- package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js +1 -1
- package/dist/engine/release/gate_checks/checkKnowledgeAssetSchemaP0.js.map +1 -1
- package/dist/engine/release/gate_checks/checkMainlineConsumption.js +2 -2
- package/dist/engine/release/gate_checks/checkMainlineConsumption.js.map +1 -1
- package/dist/engine/release/gate_checks/{check_npm_pack.d.ts → checkNpmPack.d.ts} +1 -1
- package/dist/engine/release/gate_checks/checkNpmPack.d.ts.map +1 -0
- package/dist/engine/release/gate_checks/{check_npm_pack.js → checkNpmPack.js} +5 -7
- package/dist/engine/release/gate_checks/checkNpmPack.js.map +1 -0
- package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js +4 -3
- package/dist/engine/release/gate_checks/checkTemplateKnowledgeHygiene.js.map +1 -1
- package/dist/engine/release/gate_checks/checkWorkflowNavigation.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/checkWorkflowNavigation.js +58 -4
- package/dist/engine/release/gate_checks/checkWorkflowNavigation.js.map +1 -1
- package/dist/engine/release/gate_checks/helpers.d.ts.map +1 -1
- package/dist/engine/release/gate_checks/helpers.js +2 -1
- package/dist/engine/release/gate_checks/helpers.js.map +1 -1
- package/dist/engine/release/index.d.ts +6 -0
- package/dist/engine/release/index.d.ts.map +1 -0
- package/dist/engine/release/index.js +6 -0
- package/dist/engine/release/index.js.map +1 -0
- package/dist/engine/release/release_gate_scenario_registry.d.ts.map +1 -1
- package/dist/engine/release/release_gate_scenario_registry.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/registry.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/registry.js +4 -1
- package/dist/engine/release/release_issue_scenario_registry/registry.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js +38 -19
- package/dist/engine/release/release_issue_scenario_registry/scenarios_architecture_workshop.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js +3 -2
- package/dist/engine/release/release_issue_scenario_registry/scenarios_code_observability.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js +50 -26
- package/dist/engine/release/release_issue_scenario_registry/scenarios_decision_workshop.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js +12 -6
- package/dist/engine/release/release_issue_scenario_registry/scenarios_design_pack.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js +26 -13
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js +14 -8
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_visibility.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts +12 -0
- package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.d.ts.map +1 -0
- package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js +147 -0
- package/dist/engine/release/release_issue_scenario_registry/scenarios_workflow_navigation.js.map +1 -0
- package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts +24 -40
- package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js +12 -6
- package/dist/engine/release/release_issue_scenario_registry/workshop_helpers.js.map +1 -1
- package/dist/engine/release/release_readiness_gate.d.ts +3 -1
- package/dist/engine/release/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release/release_readiness_gate.js +47 -4
- package/dist/engine/release/release_readiness_gate.js.map +1 -1
- package/dist/engine/release/release_tool_harness.d.ts +18 -5
- package/dist/engine/release/release_tool_harness.d.ts.map +1 -1
- package/dist/engine/release/release_tool_harness.js +15 -7
- package/dist/engine/release/release_tool_harness.js.map +1 -1
- package/dist/engine/release/types.d.ts +81 -0
- package/dist/engine/release/types.d.ts.map +1 -0
- package/dist/engine/release/types.js +7 -0
- package/dist/engine/release/types.js.map +1 -0
- package/dist/engine/release/verifier.d.ts.map +1 -1
- package/dist/engine/release/verifier.js +1 -1
- package/dist/engine/release/verifier.js.map +1 -1
- package/dist/engine/team_awareness.d.ts +1 -1
- package/dist/engine/team_awareness.d.ts.map +1 -1
- package/dist/engine/team_awareness.js.map +1 -1
- package/dist/engine/templates/asset_manifest.d.ts +1 -1
- package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
- package/dist/engine/templates/asset_manifest.js +1 -2
- package/dist/engine/templates/asset_manifest.js.map +1 -1
- package/dist/engine/templates/consumption_trace_store.d.ts +2 -1
- package/dist/engine/templates/consumption_trace_store.d.ts.map +1 -1
- package/dist/engine/templates/consumption_trace_store.js +0 -6
- package/dist/engine/templates/consumption_trace_store.js.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/index.js +14 -14
- package/dist/engine/templates/explicit_asset_registry/index.js.map +1 -1
- package/dist/engine/templates/observed_consumption.d.ts.map +1 -1
- package/dist/engine/templates/observed_consumption.js +1 -1
- package/dist/engine/templates/observed_consumption.js.map +1 -1
- package/dist/engine/templates/scaffolder.js +2 -2
- package/dist/engine/templates/scaffolder.js.map +1 -1
- package/dist/engine/templates/standard_asset_coverage.js +1 -1
- package/dist/engine/templates/standard_asset_coverage.js.map +1 -1
- package/dist/engine/templates/template_asset_contract_registry.d.ts +1 -1
- package/dist/engine/templates/template_asset_contract_registry.d.ts.map +1 -1
- package/dist/engine/templates/template_asset_contract_registry.js +1 -2
- package/dist/engine/templates/template_asset_contract_registry.js.map +1 -1
- package/dist/engine/templates/template_asset_visibility.js +0 -17
- package/dist/engine/templates/template_asset_visibility.js.map +1 -1
- package/dist/engine/templates/template_init_sync.d.ts.map +1 -1
- package/dist/engine/templates/template_init_sync.js +9 -11
- package/dist/engine/templates/template_init_sync.js.map +1 -1
- package/dist/engine/templates/template_manifest_io.d.ts.map +1 -1
- package/dist/engine/templates/template_manifest_io.js +3 -2
- package/dist/engine/templates/template_manifest_io.js.map +1 -1
- package/dist/engine/templates/template_sync.d.ts.map +1 -1
- package/dist/engine/templates/template_sync.js.map +1 -1
- package/dist/engine/templates/workflow_rule_generator.d.ts +1 -1
- package/dist/engine/templates/workflow_rule_generator.d.ts.map +1 -1
- package/dist/engine/templates/workflow_rule_generator.js +1 -1
- package/dist/engine/templates/workflow_rule_generator.js.map +1 -1
- package/dist/engine/workflow/index.d.ts +10 -0
- package/dist/engine/workflow/index.d.ts.map +1 -0
- package/dist/engine/workflow/index.js +12 -0
- package/dist/engine/workflow/index.js.map +1 -0
- package/dist/engine/workflow/legacy_type_migration.d.ts +4 -3
- package/dist/engine/workflow/legacy_type_migration.d.ts.map +1 -1
- package/dist/engine/workflow/legacy_type_migration.js +6 -5
- package/dist/engine/workflow/legacy_type_migration.js.map +1 -1
- package/dist/engine/workflow/next_action_planner.d.ts +2 -2
- package/dist/engine/workflow/next_action_planner.d.ts.map +1 -1
- package/dist/engine/workflow/next_action_planner.js +70 -21
- package/dist/engine/workflow/next_action_planner.js.map +1 -1
- package/dist/engine/workflow/project_stage_detector.d.ts.map +1 -1
- package/dist/engine/workflow/project_stage_detector.js +28 -13
- package/dist/engine/workflow/project_stage_detector.js.map +1 -1
- package/dist/engine/workflow/workflow_navigation_contract.d.ts +8 -1
- package/dist/engine/workflow/workflow_navigation_contract.d.ts.map +1 -1
- package/dist/engine/workflow/workflow_navigation_contract.js +0 -1
- package/dist/engine/workflow/workflow_navigation_contract.js.map +1 -1
- package/dist/{engine/core → git}/git_deps.d.ts +3 -1
- package/dist/git/git_deps.d.ts.map +1 -0
- package/dist/{engine/core → git}/git_deps.js +2 -2
- package/dist/git/git_deps.js.map +1 -0
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/conflict_detector.d.ts +14 -0
- package/dist/knowledge/conflict_detector.d.ts.map +1 -1
- package/dist/knowledge/conflict_detector.js +67 -0
- package/dist/knowledge/conflict_detector.js.map +1 -1
- package/dist/knowledge/health_checker.d.ts.map +1 -1
- package/dist/knowledge/health_checker.js +17 -8
- package/dist/knowledge/health_checker.js.map +1 -1
- package/dist/knowledge/index_manager.d.ts +3 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +82 -40
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/loader.d.ts.map +1 -1
- package/dist/knowledge/loader.js +14 -5
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +2 -1
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +14 -18
- package/dist/server/index.js.map +1 -1
- package/dist/server/lifecycle.d.ts +4 -2
- package/dist/server/lifecycle.d.ts.map +1 -1
- package/dist/server/lifecycle.js +6 -11
- package/dist/server/lifecycle.js.map +1 -1
- package/dist/server/tools/cep_assessment.d.ts.map +1 -1
- package/dist/server/tools/cep_assessment.js +6 -6
- package/dist/server/tools/cep_assessment.js.map +1 -1
- package/dist/server/tools/gate_checks.d.ts +4 -2
- package/dist/server/tools/gate_checks.d.ts.map +1 -1
- package/dist/server/tools/gate_checks.js.map +1 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +37 -1
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/lazy_loaders.d.ts +1 -1
- package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
- package/dist/server/tools/lazy_loaders.js +2 -2
- package/dist/server/tools/lazy_loaders.js.map +1 -1
- package/dist/server/tools/middleware.d.ts +22 -2
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +55 -22
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/schemas.d.ts +2 -2
- package/dist/server/tools/tool_groups/admin.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/admin.js +5 -4
- package/dist/server/tools/tool_groups/admin.js.map +1 -1
- package/dist/server/tools/tool_groups/auxiliary.js +4 -4
- package/dist/server/tools/tool_groups/auxiliary.js.map +1 -1
- package/dist/server/tools/tool_groups/classify_expand.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/classify_expand.js +4 -869
- package/dist/server/tools/tool_groups/classify_expand.js.map +1 -1
- package/dist/server/tools/tool_groups/classify_handler.d.ts +3 -0
- package/dist/server/tools/tool_groups/classify_handler.d.ts.map +1 -0
- package/dist/server/tools/tool_groups/classify_handler.js +65 -0
- package/dist/server/tools/tool_groups/classify_handler.js.map +1 -0
- package/dist/server/tools/tool_groups/expand_handler.d.ts +3 -0
- package/dist/server/tools/tool_groups/expand_handler.d.ts.map +1 -0
- package/dist/server/tools/tool_groups/expand_handler.js +819 -0
- package/dist/server/tools/tool_groups/expand_handler.js.map +1 -0
- package/dist/server/tools/tool_groups/knowledge.js +2 -2
- package/dist/server/tools/tool_groups/knowledge.js.map +1 -1
- package/dist/server/tools/tool_groups/scaffold_accept_deliver.js +1 -1
- package/dist/server/tools/tool_groups/scaffold_accept_deliver.js.map +1 -1
- package/dist/server/tools/tool_groups/status_plan_analyze_review.js +5 -5
- package/dist/server/tools/tool_groups/status_plan_analyze_review.js.map +1 -1
- package/dist/server/tools/tool_groups/verify_learn.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/verify_learn.js +6 -11
- package/dist/server/tools/tool_groups/verify_learn.js.map +1 -1
- package/dist/server/tools/tool_names.d.ts +55 -0
- package/dist/server/tools/tool_names.d.ts.map +1 -0
- package/dist/server/tools/tool_names.js +62 -0
- package/dist/server/tools/tool_names.js.map +1 -0
- package/dist/server/tools/utils.d.ts.map +1 -1
- package/dist/server/tools/utils.js +5 -11
- package/dist/server/tools/utils.js.map +1 -1
- package/dist/types/base.d.ts +2 -0
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/delivery.d.ts +44 -1
- package/dist/types/delivery.d.ts.map +1 -1
- package/dist/types/knowledge.d.ts +3 -1
- package/dist/types/knowledge.d.ts.map +1 -1
- package/dist/types/knowledge.js.map +1 -1
- package/dist/types/pipeline.d.ts +151 -14
- package/dist/types/pipeline.d.ts.map +1 -1
- package/dist/types/task.d.ts +103 -38
- package/dist/types/task.d.ts.map +1 -1
- package/package.json +7 -3
- package/templates/internal/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +11 -1
- package/dist/engine/audit/audit_verifier.d.ts +0 -52
- package/dist/engine/audit/audit_verifier.d.ts.map +0 -1
- package/dist/engine/audit/audit_verifier.js +0 -101
- package/dist/engine/audit/audit_verifier.js.map +0 -1
- package/dist/engine/contracts/policy_drift_detector.d.ts +0 -72
- package/dist/engine/contracts/policy_drift_detector.d.ts.map +0 -1
- package/dist/engine/contracts/policy_drift_detector.js +0 -277
- package/dist/engine/contracts/policy_drift_detector.js.map +0 -1
- package/dist/engine/core/git_deps.d.ts.map +0 -1
- package/dist/engine/core/git_deps.js.map +0 -1
- package/dist/engine/release/gate_checks/check_npm_pack.d.ts.map +0 -1
- package/dist/engine/release/gate_checks/check_npm_pack.js.map +0 -1
- package/dist/engine/state_update_bypass.d.ts +0 -19
- package/dist/engine/state_update_bypass.d.ts.map +0 -1
- package/dist/engine/state_update_bypass.js +0 -17
- package/dist/engine/state_update_bypass.js.map +0 -1
|
@@ -1,934 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { KnowledgeWriter } from "../../knowledge/writer.js";
|
|
6
|
-
import { debug } from "../core/logger.js";
|
|
7
|
-
/**
|
|
8
|
-
* 审计知识库健康度。
|
|
9
|
-
* 检查五个维度: 陈旧条目、重复触发词、格式规范、类型覆盖、内容完整度。
|
|
10
|
-
* @param knowledgeIndex - 知识索引管理器
|
|
11
|
-
* @param config - 项目配置
|
|
12
|
-
* @returns 审计结果,包含发现项和统计摘要
|
|
13
|
-
*/
|
|
14
|
-
export async function auditKnowledge(knowledgeIndex, config) {
|
|
15
|
-
debug("知识审计", "开始审计知识库健康度");
|
|
16
|
-
const { global: globalEntries, project: projectEntries } = knowledgeIndex.getAllEntries();
|
|
17
|
-
const all = [...globalEntries, ...projectEntries];
|
|
18
|
-
const findings = [];
|
|
19
|
-
const now = Date.now();
|
|
20
|
-
let findingId = 0;
|
|
21
|
-
// 1. 陈旧条目: 超过 90 天未使用或从未被匹配
|
|
22
|
-
for (const entry of all) {
|
|
23
|
-
if (entry.status === "deprecated")
|
|
24
|
-
continue;
|
|
25
|
-
if (entry.usage_count === 0) {
|
|
26
|
-
findings.push({
|
|
27
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
28
|
-
severity: "info",
|
|
29
|
-
category: "stale",
|
|
30
|
-
entry_name: entry.name,
|
|
31
|
-
message: `从未被匹配使用: ${entry.name}`,
|
|
32
|
-
suggestion: "检查 when 触发词是否覆盖实际场景,或标记为 deprecated",
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
else if (entry.last_used_at) {
|
|
36
|
-
const daysSinceUse = (now - new Date(entry.last_used_at).getTime()) / (1000 * 60 * 60 * 24);
|
|
37
|
-
if (daysSinceUse > 90) {
|
|
38
|
-
findings.push({
|
|
39
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
40
|
-
severity: "warning",
|
|
41
|
-
category: "stale",
|
|
42
|
-
entry_name: entry.name,
|
|
43
|
-
message: `超过 ${Math.floor(daysSinceUse)} 天未被使用: ${entry.name}`,
|
|
44
|
-
suggestion: "评估是否仍需要,考虑更新触发词或标记为 deprecated",
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// 2. 重复检查: 相似触发词
|
|
50
|
-
for (let i = 0; i < all.length; i++) {
|
|
51
|
-
for (let j = i + 1; j < all.length; j++) {
|
|
52
|
-
if (all[i].type !== all[j].type)
|
|
53
|
-
continue;
|
|
54
|
-
const overlap = keywordOverlap(all[i].when, all[j].when);
|
|
55
|
-
if (overlap >= 0.6) {
|
|
56
|
-
findings.push({
|
|
57
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
58
|
-
severity: "info",
|
|
59
|
-
category: "duplicate",
|
|
60
|
-
entry_name: `${all[i].name} / ${all[j].name}`,
|
|
61
|
-
message: `触发词高度重叠 (${Math.round(overlap * 100)}%): "${all[i].name}" 和 "${all[j].name}"`,
|
|
62
|
-
suggestion: "考虑合并或区分触发词",
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// 3. 格式检查: 缺失必需的 frontmatter 字段 + Schema 验证
|
|
68
|
-
for (const entry of all) {
|
|
69
|
-
if (entry.status === "deprecated")
|
|
70
|
-
continue;
|
|
71
|
-
const issues = [];
|
|
72
|
-
if (!entry.when || entry.when.trim().length === 0)
|
|
73
|
-
issues.push("when");
|
|
74
|
-
if (!entry.scope || entry.scope.length === 0)
|
|
75
|
-
issues.push("scope");
|
|
76
|
-
if (!entry.products || entry.products.length === 0)
|
|
77
|
-
issues.push("products");
|
|
78
|
-
if (issues.length > 0) {
|
|
79
|
-
findings.push({
|
|
80
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
81
|
-
severity: "warning",
|
|
82
|
-
category: "format",
|
|
83
|
-
entry_name: entry.name,
|
|
84
|
-
message: `缺少必需字段: ${issues.join(", ")}`,
|
|
85
|
-
suggestion: `补充 ${issues.join("、")} 字段`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
// 3b. Schema 验证: 读取原始文件进行深度检查
|
|
89
|
-
const schemaIssues = await validateFormatSchema(entry);
|
|
90
|
-
for (const issue of schemaIssues) {
|
|
91
|
-
findings.push({
|
|
92
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
93
|
-
severity: "info",
|
|
94
|
-
category: "format",
|
|
95
|
-
entry_name: entry.name,
|
|
96
|
-
message: issue.message,
|
|
97
|
-
suggestion: issue.suggestion,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// 4. 覆盖度检查: 确保各知识类型都有条目
|
|
102
|
-
const requiredTypes = ["pattern", "procedure", "domain", "review_rule"];
|
|
103
|
-
for (const type of requiredTypes) {
|
|
104
|
-
const count = all.filter((e) => e.type === type && e.status !== "deprecated").length;
|
|
105
|
-
if (count === 0) {
|
|
106
|
-
findings.push({
|
|
107
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
108
|
-
severity: "warning",
|
|
109
|
-
category: "coverage",
|
|
110
|
-
entry_name: `type=${type}`,
|
|
111
|
-
message: `缺少 ${type} 类型的知识条目`,
|
|
112
|
-
suggestion: `新增至少一个 ${type} 条目`,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// 5. 完整度检查: 检查规则/验收项数量是否达到类型阈值
|
|
117
|
-
for (const entry of all) {
|
|
118
|
-
if (entry.status === "deprecated")
|
|
119
|
-
continue;
|
|
120
|
-
if (!entry.file_path || !fss.existsSync(entry.file_path))
|
|
121
|
-
continue;
|
|
122
|
-
const thresholds = COMPLETENESS_THRESHOLDS[entry.type];
|
|
123
|
-
if (!thresholds)
|
|
124
|
-
continue;
|
|
125
|
-
let raw;
|
|
126
|
-
try {
|
|
127
|
-
raw = await fs.readFile(entry.file_path, "utf-8");
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
const { content: body } = matter(raw);
|
|
133
|
-
for (const check of thresholds) {
|
|
134
|
-
const count = countPattern(body, check.pattern);
|
|
135
|
-
if (count < check.minimum) {
|
|
136
|
-
findings.push({
|
|
137
|
-
id: `AUD-${String(++findingId).padStart(3, "0")}`,
|
|
138
|
-
severity: "info",
|
|
139
|
-
category: "completeness",
|
|
140
|
-
entry_name: entry.name,
|
|
141
|
-
message: `${entry.type} 条目"${entry.name}"的 ${check.field} 不足:实际 ${count} 条,要求 ≥ ${check.minimum} 条`,
|
|
142
|
-
suggestion: `运行 sf_knowledge_update 补充 ${check.field},或调用 sf_knowledge_add 的 auto_enrich 机制自动探索行业最佳实践`,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const summary = {
|
|
148
|
-
stale: findings.filter((f) => f.category === "stale").length,
|
|
149
|
-
duplicate: findings.filter((f) => f.category === "duplicate").length,
|
|
150
|
-
format: findings.filter((f) => f.category === "format").length,
|
|
151
|
-
coverage: findings.filter((f) => f.category === "coverage").length,
|
|
152
|
-
completeness: findings.filter((f) => f.category === "completeness").length,
|
|
153
|
-
design_drift: 0,
|
|
154
|
-
};
|
|
155
|
-
debug("知识审计", `完成,共 ${findings.length} 项发现`);
|
|
156
|
-
return {
|
|
157
|
-
total_entries: all.filter((e) => e.status !== "deprecated").length,
|
|
158
|
-
findings,
|
|
159
|
-
summary,
|
|
160
|
-
audited_at: new Date().toISOString(),
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 新增知识条目。
|
|
165
|
-
* 根据类型生成对应的模板内容,保存到草稿目录或正式目录。
|
|
166
|
-
* @param input - 新增知识条目输入
|
|
167
|
-
* @param config - 项目配置
|
|
168
|
-
* @returns 新增结果,包含文件路径和消息
|
|
169
|
-
*/
|
|
170
|
-
export async function addKnowledge(input, config) {
|
|
171
|
-
debug("知识管理", `新增知识条目「${input.title}」[${input.type}]`);
|
|
172
|
-
const knowledgeDir = getProjectKnowledgeDir(config);
|
|
173
|
-
const fileName = `${path.basename(input.title)}.md`; // basename 防止路径穿越
|
|
174
|
-
// 确定保存位置
|
|
175
|
-
const typeDir = getTypeDirectory(input.type);
|
|
176
|
-
const draftsDir = path.join(knowledgeDir, "drafts");
|
|
177
|
-
const targetDir = input.save_to_drafts !== false
|
|
178
|
-
? draftsDir
|
|
179
|
-
: path.join(knowledgeDir, typeDir);
|
|
180
|
-
// 确保目录存在
|
|
181
|
-
await fs.mkdir(targetDir, { recursive: true });
|
|
182
|
-
const filePath = path.join(targetDir, fileName);
|
|
183
|
-
// 检查文件是否已存在
|
|
184
|
-
if (fss.existsSync(filePath)) {
|
|
185
|
-
return {
|
|
186
|
-
success: false,
|
|
187
|
-
file_path: filePath,
|
|
188
|
-
is_draft: input.save_to_drafts !== false,
|
|
189
|
-
message: `文件已存在: ${filePath},请使用 sf_knowledge_update 更新`,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
// 生成内容
|
|
193
|
-
const content = generateKnowledgeContent(input);
|
|
194
|
-
await fs.writeFile(filePath, content, "utf-8");
|
|
195
|
-
const enrichment_guide = input.auto_enrich !== false
|
|
196
|
-
? buildEnrichmentGuide(input)
|
|
197
|
-
: undefined;
|
|
198
|
-
debug("知识管理", `知识条目已保存到 ${filePath}`);
|
|
199
|
-
return {
|
|
200
|
-
success: true,
|
|
201
|
-
file_path: filePath,
|
|
202
|
-
is_draft: input.save_to_drafts !== false,
|
|
203
|
-
message: input.save_to_drafts !== false
|
|
204
|
-
? `知识条目草稿已保存到: ${filePath}\n人工 review 后可移至正式目录: ${path.join(knowledgeDir, typeDir, fileName)}`
|
|
205
|
-
: `知识条目已保存到: ${filePath}`,
|
|
206
|
-
enrichment_guide,
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* 更新已有的知识条目。
|
|
211
|
-
* 更新前自动创建备份,支持修改触发条件、状态、决策规则和验收标准。
|
|
212
|
-
* @param input - 更新输入参数
|
|
213
|
-
* @param knowledgeIndex - 知识索引管理器
|
|
214
|
-
* @param config - 项目配置
|
|
215
|
-
* @returns 更新结果,包含文件路径和备份路径
|
|
216
|
-
*/
|
|
217
|
-
export async function updateKnowledge(input, knowledgeIndex, config) {
|
|
218
|
-
debug("知识管理", `更新知识条目「${input.entry_name}」`);
|
|
219
|
-
const entry = knowledgeIndex.getEntry(input.entry_name)
|
|
220
|
-
?? knowledgeIndex.getAllEntries().global.find((e) => e.name === input.entry_name)
|
|
221
|
-
?? knowledgeIndex.getAllEntries().project.find((e) => e.name === input.entry_name);
|
|
222
|
-
if (!entry) {
|
|
223
|
-
debug("知识管理", `未找到知识条目「${input.entry_name}」`);
|
|
224
|
-
return {
|
|
225
|
-
success: false,
|
|
226
|
-
file_path: "",
|
|
227
|
-
backup_path: "",
|
|
228
|
-
message: `未找到知识条目: ${input.entry_name}`,
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
const filePath = entry.file_path;
|
|
232
|
-
// 维度6: 知识目录隔离 — 禁止更新 core/ 只读目录中的条目
|
|
233
|
-
if (KnowledgeWriter.isCorePath(filePath)) {
|
|
234
|
-
debug("知识管理", `「${input.entry_name}」位于 core/ 只读目录,禁止自动更新`);
|
|
235
|
-
return {
|
|
236
|
-
success: false,
|
|
237
|
-
file_path: filePath,
|
|
238
|
-
backup_path: "",
|
|
239
|
-
message: `知识隔离: "${entry.name}" 位于 core/ 只读目录,禁止自动更新。需人工手动维护`,
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
if (!fss.existsSync(filePath)) {
|
|
243
|
-
return {
|
|
244
|
-
success: false,
|
|
245
|
-
file_path: filePath,
|
|
246
|
-
backup_path: "",
|
|
247
|
-
message: `文件不存在: ${filePath}`,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
// 读取并解析文件
|
|
251
|
-
const raw = await fs.readFile(filePath, "utf-8");
|
|
252
|
-
const { data: frontmatter, content: body } = matter(raw);
|
|
253
|
-
// 创建备份
|
|
254
|
-
const backupDir = path.join(path.dirname(filePath), ".backups");
|
|
255
|
-
await fs.mkdir(backupDir, { recursive: true });
|
|
256
|
-
const backupPath = path.join(backupDir, `${entry.name}-${Date.now()}.md`);
|
|
257
|
-
await fs.writeFile(backupPath, raw, "utf-8");
|
|
258
|
-
// 应用更新
|
|
259
|
-
let updated = false;
|
|
260
|
-
if (input.updates.when_triggers) {
|
|
261
|
-
frontmatter.when = input.updates.when_triggers;
|
|
262
|
-
updated = true;
|
|
263
|
-
}
|
|
264
|
-
if (input.updates.status) {
|
|
265
|
-
frontmatter.status = input.updates.status;
|
|
266
|
-
updated = true;
|
|
267
|
-
}
|
|
268
|
-
let newBody = body;
|
|
269
|
-
if (input.updates.add_decision_rules?.length) {
|
|
270
|
-
const rulesSection = input.updates.add_decision_rules
|
|
271
|
-
.map((r) => `- ${r}`)
|
|
272
|
-
.join("\n");
|
|
273
|
-
if (newBody.includes("## 决策规则")) {
|
|
274
|
-
newBody = newBody.replace(/## 决策规则\n/, `## 决策规则\n${rulesSection}\n`);
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
newBody += `\n\n## 决策规则\n${rulesSection}\n`;
|
|
278
|
-
}
|
|
279
|
-
updated = true;
|
|
280
|
-
}
|
|
281
|
-
if (input.updates.add_acceptance_criteria?.length) {
|
|
282
|
-
const acSection = input.updates.add_acceptance_criteria
|
|
283
|
-
.map((ac, i) => `- [AC-${String(i + 1).padStart(2, "0")}] ${ac}`)
|
|
284
|
-
.join("\n");
|
|
285
|
-
if (newBody.includes("## 验收项")) {
|
|
286
|
-
newBody = newBody.replace(/## 验收项\n/, `## 验收项\n${acSection}\n`);
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
newBody += `\n\n## 验收项\n${acSection}\n`;
|
|
290
|
-
}
|
|
291
|
-
updated = true;
|
|
292
|
-
}
|
|
293
|
-
if (!updated) {
|
|
294
|
-
return {
|
|
295
|
-
success: false,
|
|
296
|
-
file_path: filePath,
|
|
297
|
-
backup_path: backupPath,
|
|
298
|
-
message: "未提供任何更新内容",
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
// 写入更新后的文件
|
|
302
|
-
const output = matter.stringify(newBody, frontmatter);
|
|
303
|
-
await fs.writeFile(filePath, output, "utf-8");
|
|
304
|
-
debug("知识管理", `知识条目「${input.entry_name}」已更新,备份: ${backupPath}`);
|
|
305
|
-
return {
|
|
306
|
-
success: true,
|
|
307
|
-
file_path: filePath,
|
|
308
|
-
backup_path: backupPath,
|
|
309
|
-
message: `知识条目已更新: ${filePath}\n备份: ${backupPath}`,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
// ── 格式 Schema ──
|
|
313
|
-
/** 规范的 frontmatter 字段顺序 */
|
|
314
|
-
const CANONICAL_FM_ORDER = ["name", "type", "when", "scope", "products"];
|
|
315
|
-
/** 各知识类型的格式规范定义 */
|
|
316
|
-
const FORMAT_SCHEMA = {
|
|
317
|
-
pattern: {
|
|
318
|
-
required_headings: ["## 决策规则", "## 验收项"],
|
|
319
|
-
},
|
|
320
|
-
domain: {
|
|
321
|
-
required_headings: ["## 业务规则", "## 约束条件", "## 例外情况", "## 关联模式"],
|
|
322
|
-
},
|
|
323
|
-
procedure: {
|
|
324
|
-
required_headings: ["## 适用场景", "## 步骤", "## 检查点", "## 注意事项"],
|
|
325
|
-
},
|
|
326
|
-
pipeline_procedure: {
|
|
327
|
-
required_headings: [],
|
|
328
|
-
partial_match_headings: ["### 第"],
|
|
329
|
-
},
|
|
330
|
-
review_rule: {
|
|
331
|
-
required_headings: [],
|
|
332
|
-
partial_match_headings: ["pattern:", "severity:", "description:"],
|
|
333
|
-
},
|
|
334
|
-
acceptance_template: {
|
|
335
|
-
required_headings: [],
|
|
336
|
-
},
|
|
337
|
-
};
|
|
338
|
-
/** 各知识类型的完整度阈值(字段名、匹配正则、最小数量) */
|
|
339
|
-
const COMPLETENESS_THRESHOLDS = {
|
|
340
|
-
pattern: [
|
|
341
|
-
{ field: "决策规则", pattern: /^- /gm, minimum: 5 },
|
|
342
|
-
{ field: "验收项", pattern: /^- \[AC-/gm, minimum: 3 },
|
|
343
|
-
],
|
|
344
|
-
domain: [
|
|
345
|
-
{ field: "业务规则", pattern: /^(?:- |\d+\.)/gm, minimum: 6 },
|
|
346
|
-
],
|
|
347
|
-
procedure: [
|
|
348
|
-
{ field: "步骤", pattern: /^\d+\.\s/gm, minimum: 5 },
|
|
349
|
-
{ field: "检查点", pattern: /^- \[ \]/gm, minimum: 3 },
|
|
350
|
-
],
|
|
351
|
-
pipeline_procedure: [
|
|
352
|
-
{ field: "阶段", pattern: /^### 第\d+步/gm, minimum: 3 },
|
|
353
|
-
],
|
|
354
|
-
review_rule: [
|
|
355
|
-
{ field: "规则", pattern: /^## [A-Z]+-\d+/gm, minimum: 5 },
|
|
356
|
-
],
|
|
357
|
-
};
|
|
358
|
-
/**
|
|
359
|
-
* 统计正则匹配数量。
|
|
360
|
-
* @param body - 文本内容
|
|
361
|
-
* @param pattern - 正则表达式
|
|
362
|
-
* @returns 匹配数量
|
|
363
|
-
*/
|
|
364
|
-
function countPattern(body, pattern) {
|
|
365
|
-
return (body.match(pattern) ?? []).length;
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* 验证知识条目的格式 Schema 规范。
|
|
369
|
-
* 检查 frontmatter 字段顺序、when 字段风格、body 必需标题。
|
|
370
|
-
* @param entry - 知识条目
|
|
371
|
-
* @returns 格式问题列表
|
|
372
|
-
*/
|
|
373
|
-
async function validateFormatSchema(entry) {
|
|
374
|
-
const results = [];
|
|
375
|
-
if (!entry.file_path || !fss.existsSync(entry.file_path))
|
|
376
|
-
return results;
|
|
377
|
-
let raw;
|
|
378
|
-
try {
|
|
379
|
-
raw = await fs.readFile(entry.file_path, "utf-8");
|
|
380
|
-
}
|
|
381
|
-
catch {
|
|
382
|
-
return results;
|
|
383
|
-
}
|
|
384
|
-
const { data: fm, content: body } = matter(raw);
|
|
385
|
-
// 检查 frontmatter 字段顺序
|
|
386
|
-
const fmKeys = Object.keys(fm);
|
|
387
|
-
const orderIssues = [];
|
|
388
|
-
for (let i = 0; i < CANONICAL_FM_ORDER.length; i++) {
|
|
389
|
-
const expected = CANONICAL_FM_ORDER[i];
|
|
390
|
-
if (i < fmKeys.length && fmKeys[i] !== expected) {
|
|
391
|
-
orderIssues.push(`期望第 ${i + 1} 个字段为 ${expected},实际为 ${fmKeys[i]}`);
|
|
392
|
-
break;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
if (orderIssues.length > 0) {
|
|
396
|
-
results.push({
|
|
397
|
-
message: `frontmatter 字段顺序不规范: ${orderIssues[0]}`,
|
|
398
|
-
suggestion: `标准顺序: ${CANONICAL_FM_ORDER.join(" → ")}`,
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
// 检查 when 字段风格: 第一个逗号分隔段应 ≤ 10 个中文字符
|
|
402
|
-
const whenStr = fm.when ?? "";
|
|
403
|
-
const firstSegment = whenStr.split(/[,\s,]/)[0] ?? "";
|
|
404
|
-
const chineseCharCount = (firstSegment.match(/[一-鿿]/g) ?? []).length;
|
|
405
|
-
if (chineseCharCount > 10 && firstSegment.length > 12) {
|
|
406
|
-
results.push({
|
|
407
|
-
message: `when 字段首个触发词过长(${chineseCharCount} 个中文字符),疑似描述性短语: "${firstSegment}"`,
|
|
408
|
-
suggestion: "when 应为纯关键词逗号分隔,如: 数据导出, CSV, Excel, 批量导出",
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
// 检查 body 标题
|
|
412
|
-
const schema = FORMAT_SCHEMA[entry.type];
|
|
413
|
-
if (schema) {
|
|
414
|
-
for (const heading of schema.required_headings) {
|
|
415
|
-
if (!body.includes(heading)) {
|
|
416
|
-
results.push({
|
|
417
|
-
message: `body 缺少必需标题: ${heading}(type=${entry.type})`,
|
|
418
|
-
suggestion: `按格式规约补充 ${heading} 部分`,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
if (schema.partial_match_headings) {
|
|
423
|
-
for (const partial of schema.partial_match_headings) {
|
|
424
|
-
if (!body.includes(partial)) {
|
|
425
|
-
results.push({
|
|
426
|
-
message: `body 缺少必需内容: "${partial}"(type=${entry.type})`,
|
|
427
|
-
suggestion: `按格式规约补充包含 "${partial}" 的内容`,
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
return results;
|
|
434
|
-
}
|
|
435
|
-
// ── 辅助函数 ──
|
|
436
|
-
/**
|
|
437
|
-
* 计算两个关键词字符串的重叠度。
|
|
438
|
-
* @param a - 第一个关键词字符串
|
|
439
|
-
* @param b - 第二个关键词字符串
|
|
440
|
-
* @returns 重叠度(0-1),1 表示完全重叠
|
|
441
|
-
*/
|
|
442
|
-
function keywordOverlap(a, b) {
|
|
443
|
-
const wordsA = new Set(a.toLowerCase().split(/[,\s,]+/).filter(Boolean));
|
|
444
|
-
const wordsB = new Set(b.toLowerCase().split(/[,\s,]+/).filter(Boolean));
|
|
445
|
-
if (wordsA.size === 0 || wordsB.size === 0)
|
|
446
|
-
return 0;
|
|
447
|
-
let overlap = 0;
|
|
448
|
-
for (const w of wordsA) {
|
|
449
|
-
if (wordsB.has(w))
|
|
450
|
-
overlap++;
|
|
451
|
-
}
|
|
452
|
-
return overlap / Math.min(wordsA.size, wordsB.size);
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* 根据知识类型获取存储目录名。
|
|
456
|
-
* @param type - 知识条目类型
|
|
457
|
-
* @returns 目录名
|
|
458
|
-
*/
|
|
459
|
-
function getTypeDirectory(type) {
|
|
460
|
-
const map = {
|
|
461
|
-
pattern: "patterns/temp",
|
|
462
|
-
procedure: "procedures",
|
|
463
|
-
pipeline_procedure: "procedures",
|
|
464
|
-
domain: "domain",
|
|
465
|
-
acceptance_template: "acceptance_templates",
|
|
466
|
-
review_rule: "review_rules",
|
|
467
|
-
};
|
|
468
|
-
return map[type] ?? "procedures";
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* 生成知识条目的 frontmatter 文本。
|
|
472
|
-
* @param input - 新增知识条目输入
|
|
473
|
-
* @returns frontmatter 文本
|
|
474
|
-
*/
|
|
475
|
-
function generateFrontmatter(input) {
|
|
476
|
-
return `---
|
|
477
|
-
name: ${input.title}
|
|
478
|
-
type: ${input.type}
|
|
479
|
-
when: "${input.when_triggers}"
|
|
480
|
-
scope: [${input.scope.join(", ")}]
|
|
481
|
-
products: ["*"]
|
|
482
|
-
---`;
|
|
483
|
-
}
|
|
484
|
-
/**
|
|
485
|
-
* 生成知识条目的完整内容(frontmatter + body)。
|
|
486
|
-
* 根据类型选择对应的 body 生成器。
|
|
487
|
-
* @param input - 新增知识条目输入
|
|
488
|
-
* @returns 完整的 Markdown 文件内容
|
|
489
|
-
*/
|
|
490
|
-
function generateKnowledgeContent(input) {
|
|
491
|
-
const fm = generateFrontmatter(input);
|
|
492
|
-
const generators = {
|
|
493
|
-
pattern: () => generatePatternBody(input),
|
|
494
|
-
domain: () => generateDomainBody(input),
|
|
495
|
-
procedure: () => generateProcedureBody(input),
|
|
496
|
-
pipeline_procedure: () => generatePipelineBody(input),
|
|
497
|
-
review_rule: () => generateReviewRuleBody(input),
|
|
498
|
-
acceptance_template: () => generateAcceptanceBody(input),
|
|
499
|
-
};
|
|
500
|
-
const gen = generators[input.type] ?? generators.pattern;
|
|
501
|
-
return `${fm}\n\n${gen()}\n`;
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
* 生成 pattern 类型知识条目的 body 内容。
|
|
505
|
-
* @param input - 新增知识条目输入
|
|
506
|
-
* @returns body 文本
|
|
507
|
-
*/
|
|
508
|
-
function generatePatternBody(input) {
|
|
509
|
-
const rules = input.decision_rules
|
|
510
|
-
? input.decision_rules.split("\n").filter(Boolean).map((r) => `- ${r}`).join("\n")
|
|
511
|
-
: "- (待补充决策规则)";
|
|
512
|
-
return `## 决策规则
|
|
513
|
-
${rules}
|
|
514
|
-
|
|
515
|
-
## 验收项
|
|
516
|
-
- [AC-01] (待补充验收标准)`;
|
|
517
|
-
}
|
|
518
|
-
/**
|
|
519
|
-
* 生成 domain 类型知识条目的 body 内容。
|
|
520
|
-
* @param input - 新增知识条目输入
|
|
521
|
-
* @returns body 文本
|
|
522
|
-
*/
|
|
523
|
-
function generateDomainBody(input) {
|
|
524
|
-
const rules = input.decision_rules
|
|
525
|
-
? input.decision_rules.split("\n").filter(Boolean).map((r) => `${r}`).join("\n\n")
|
|
526
|
-
: "(待补充业务规则)";
|
|
527
|
-
return `## 业务规则
|
|
528
|
-
${rules}
|
|
529
|
-
|
|
530
|
-
## 约束条件
|
|
531
|
-
- (待补充约束条件)
|
|
532
|
-
|
|
533
|
-
## 例外情况
|
|
534
|
-
- (待补充例外情况)
|
|
535
|
-
|
|
536
|
-
## 关联模式
|
|
537
|
-
- (待补充关联模式)`;
|
|
538
|
-
}
|
|
539
|
-
/**
|
|
540
|
-
* 生成 procedure 类型知识条目的 body 内容。
|
|
541
|
-
* @param input - 新增知识条目输入
|
|
542
|
-
* @returns body 文本
|
|
543
|
-
*/
|
|
544
|
-
function generateProcedureBody(input) {
|
|
545
|
-
return `## 适用场景
|
|
546
|
-
(待补充适用场景描述)
|
|
547
|
-
|
|
548
|
-
## 步骤
|
|
549
|
-
1. (待补充步骤)
|
|
550
|
-
|
|
551
|
-
## 检查点
|
|
552
|
-
- [ ] (待补充检查点)
|
|
553
|
-
|
|
554
|
-
## 注意事项
|
|
555
|
-
- (待补充注意事项)`;
|
|
556
|
-
}
|
|
557
|
-
/**
|
|
558
|
-
* 生成 pipeline_procedure 类型知识条目的 body 内容。
|
|
559
|
-
* @param input - 新增知识条目输入
|
|
560
|
-
* @returns body 文本
|
|
561
|
-
*/
|
|
562
|
-
function generatePipelineBody(input) {
|
|
563
|
-
return `# ${input.title}
|
|
564
|
-
|
|
565
|
-
### 第1步:定义阶段
|
|
566
|
-
(待补充阶段描述)
|
|
567
|
-
产出保存到:.soloforge/output/01-产出.md
|
|
568
|
-
工具:sf_classify, sf_expand
|
|
569
|
-
|
|
570
|
-
### 第2步:执行阶段
|
|
571
|
-
(待补充阶段描述)
|
|
572
|
-
工具:sf_verify`;
|
|
573
|
-
}
|
|
574
|
-
/**
|
|
575
|
-
* 生成 review_rule 类型知识条目的 body 内容。
|
|
576
|
-
* @param input - 新增知识条目输入
|
|
577
|
-
* @returns body 文本
|
|
578
|
-
*/
|
|
579
|
-
function generateReviewRuleBody(input) {
|
|
580
|
-
const code = input.title.toUpperCase().replace(/-/g, "").slice(0, 3);
|
|
581
|
-
return `## ${code}-01: (待补充规则标题)
|
|
582
|
-
pattern: /(待补充正则)/
|
|
583
|
-
severity: warning
|
|
584
|
-
scope: ${input.scope.join(", ")}
|
|
585
|
-
description: (待补充规则描述)`;
|
|
586
|
-
}
|
|
587
|
-
/**
|
|
588
|
-
* 生成 acceptance_template 类型知识条目的 body 内容。
|
|
589
|
-
* @param input - 新增知识条目输入
|
|
590
|
-
* @returns body 文本
|
|
591
|
-
*/
|
|
592
|
-
function generateAcceptanceBody(input) {
|
|
593
|
-
return `# ${input.title}
|
|
594
|
-
|
|
595
|
-
## 1. (待补充章节标题)
|
|
596
|
-
(待补充内容)
|
|
597
|
-
|
|
598
|
-
## 2. (待补充章节标题)
|
|
599
|
-
(待补充内容)`;
|
|
600
|
-
}
|
|
601
|
-
// ── 自动丰富指南 ──
|
|
602
|
-
/**
|
|
603
|
-
* 从标题中提取可读的主题名称。
|
|
604
|
-
* @param title - 知识条目标题(含连字符/下划线)
|
|
605
|
-
* @returns 格式化后的主题名称
|
|
606
|
-
*/
|
|
607
|
-
function extractTopicFromTitle(title) {
|
|
608
|
-
return title.split(/[-_]/).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
609
|
-
}
|
|
610
|
-
/**
|
|
611
|
-
* 根据知识类型构建对应的自动丰富指南。
|
|
612
|
-
* @param input - 新增知识条目输入
|
|
613
|
-
* @returns 自动丰富指南
|
|
614
|
-
*/
|
|
615
|
-
function buildEnrichmentGuide(input) {
|
|
616
|
-
const builders = {
|
|
617
|
-
pattern: () => buildPatternGuide(input),
|
|
618
|
-
domain: () => buildDomainGuide(input),
|
|
619
|
-
procedure: () => buildProcedureGuide(input),
|
|
620
|
-
pipeline_procedure: () => buildPipelineGuide(input),
|
|
621
|
-
review_rule: () => buildReviewRuleGuide(input),
|
|
622
|
-
acceptance_template: () => buildAcceptanceGuide(input),
|
|
623
|
-
};
|
|
624
|
-
return builders[input.type]();
|
|
625
|
-
}
|
|
626
|
-
/**
|
|
627
|
-
* 构建 pattern 类型的自动丰富指南。
|
|
628
|
-
* @param input - 新增知识条目输入
|
|
629
|
-
* @returns 丰富指南
|
|
630
|
-
*/
|
|
631
|
-
function buildPatternGuide(input) {
|
|
632
|
-
const topic = extractTopicFromTitle(input.title);
|
|
633
|
-
return {
|
|
634
|
-
entry_name: input.title,
|
|
635
|
-
type: "pattern",
|
|
636
|
-
overview: `从行业最佳实践中提取"${topic}"领域的决策规则和验收标准。规则应具体、可操作、可验证,覆盖安全、性能、可维护性等维度。`,
|
|
637
|
-
steps: [
|
|
638
|
-
{
|
|
639
|
-
step_number: 1,
|
|
640
|
-
action: `搜索"${topic}"的最佳实践、常见陷阱和反模式`,
|
|
641
|
-
search_queries: [`${topic} best practices software development`, `${topic} common mistakes anti-patterns`, `${topic} production checklist enterprise`],
|
|
642
|
-
focus_areas: ["常见错误", "性能陷阱", "安全风险", "可维护性"],
|
|
643
|
-
},
|
|
644
|
-
{
|
|
645
|
-
step_number: 2,
|
|
646
|
-
action: `从搜索结果中提取至少 5 条决策规则`,
|
|
647
|
-
search_queries: [`${topic} coding guidelines ${input.scope.join(" ")}`, `${topic} design patterns enterprise java`],
|
|
648
|
-
focus_areas: ["规则具体性", "可操作性", "互斥性"],
|
|
649
|
-
},
|
|
650
|
-
{
|
|
651
|
-
step_number: 3,
|
|
652
|
-
action: "为每条规则设计可验证的验收标准(AC)",
|
|
653
|
-
focus_areas: ["可自动化检查", "明确的通过/失败标准"],
|
|
654
|
-
},
|
|
655
|
-
{
|
|
656
|
-
step_number: 4,
|
|
657
|
-
action: `调用 sf_knowledge_update 将探索到的规则和验收项写入文件`,
|
|
658
|
-
focus_areas: ["使用 add_decision_rules 和 add_acceptance_criteria 参数"],
|
|
659
|
-
},
|
|
660
|
-
],
|
|
661
|
-
authoritative_sources: [
|
|
662
|
-
"OWASP Cheat Sheet Series — 安全相关模式",
|
|
663
|
-
"Google Engineering Practices (google.github.io/eng-practices) — 代码评审实践",
|
|
664
|
-
"Alibaba Java Development Manual — Java 开发最佳实践",
|
|
665
|
-
"Martin Fowler's Patterns Catalog — 设计模式",
|
|
666
|
-
"Microsoft API Guidelines — API 设计模式",
|
|
667
|
-
],
|
|
668
|
-
completeness_thresholds: [
|
|
669
|
-
{ field: "decision_rules", minimum: 5 },
|
|
670
|
-
{ field: "acceptance_criteria", minimum: 3 },
|
|
671
|
-
],
|
|
672
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[规则1, 规则2, ...], add_acceptance_criteria=[标准1, 标准2, ...])`,
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
/**
|
|
676
|
-
* 构建 domain 类型的自动丰富指南。
|
|
677
|
-
* @param input - 新增知识条目输入
|
|
678
|
-
* @returns 丰富指南
|
|
679
|
-
*/
|
|
680
|
-
function buildDomainGuide(input) {
|
|
681
|
-
const topic = extractTopicFromTitle(input.title);
|
|
682
|
-
return {
|
|
683
|
-
entry_name: input.title,
|
|
684
|
-
type: "domain",
|
|
685
|
-
overview: `研究"${topic}"领域的行业标准和监管要求,提取业务规则、约束条件、例外情况和关联模式。`,
|
|
686
|
-
steps: [
|
|
687
|
-
{
|
|
688
|
-
step_number: 1,
|
|
689
|
-
action: `搜索"${topic}"领域的行业标准和法规要求`,
|
|
690
|
-
search_queries: [`${topic} business rules industry standard`, `${topic} compliance regulatory requirements`, `${topic} domain driven design`],
|
|
691
|
-
focus_areas: ["行业法规", "合规要求", "业务约束"],
|
|
692
|
-
},
|
|
693
|
-
{
|
|
694
|
-
step_number: 2,
|
|
695
|
-
action: "提取核心业务规则(什么必须为真、什么不能发生)",
|
|
696
|
-
focus_areas: ["业务规则", "状态约束", "数据完整性"],
|
|
697
|
-
},
|
|
698
|
-
{
|
|
699
|
-
step_number: 3,
|
|
700
|
-
action: "识别技术约束和操作约束",
|
|
701
|
-
focus_areas: ["性能约束", "安全约束", "容量约束"],
|
|
702
|
-
},
|
|
703
|
-
{
|
|
704
|
-
step_number: 4,
|
|
705
|
-
action: "列举例外场景和边界条件",
|
|
706
|
-
focus_areas: ["边缘场景", "特殊条件", "豁免情况"],
|
|
707
|
-
},
|
|
708
|
-
{
|
|
709
|
-
step_number: 5,
|
|
710
|
-
action: `调用 sf_knowledge_update 将探索到的内容写入文件`,
|
|
711
|
-
focus_areas: ["使用 add_decision_rules 写入业务规则"],
|
|
712
|
-
},
|
|
713
|
-
],
|
|
714
|
-
authoritative_sources: [
|
|
715
|
-
"OWASP — 安全相关领域",
|
|
716
|
-
"PCI-DSS — 支付相关领域",
|
|
717
|
-
"GDPR / 个人信息保护法 — 数据隐私领域",
|
|
718
|
-
"Domain-Driven Design (Eric Evans) — 领域建模",
|
|
719
|
-
"行业特定标准(HIPAA/SOX/ISO 27001)",
|
|
720
|
-
],
|
|
721
|
-
completeness_thresholds: [
|
|
722
|
-
{ field: "business_rules", minimum: 6 },
|
|
723
|
-
{ field: "constraints", minimum: 4 },
|
|
724
|
-
{ field: "exceptions", minimum: 2 },
|
|
725
|
-
{ field: "related_patterns", minimum: 1 },
|
|
726
|
-
],
|
|
727
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[业务规则1, 业务规则2, ...])`,
|
|
728
|
-
};
|
|
729
|
-
}
|
|
730
|
-
/**
|
|
731
|
-
* 构建 procedure 类型的自动丰富指南。
|
|
732
|
-
* @param input - 新增知识条目输入
|
|
733
|
-
* @returns 丰富指南
|
|
734
|
-
*/
|
|
735
|
-
function buildProcedureGuide(input) {
|
|
736
|
-
const topic = extractTopicFromTitle(input.title);
|
|
737
|
-
return {
|
|
738
|
-
entry_name: input.title,
|
|
739
|
-
type: "procedure",
|
|
740
|
-
overview: `研究"${topic}"的标准操作流程,拆分为有序步骤、检查点和注意事项。`,
|
|
741
|
-
steps: [
|
|
742
|
-
{
|
|
743
|
-
step_number: 1,
|
|
744
|
-
action: `搜索"${topic}"的标准流程和行业实践`,
|
|
745
|
-
search_queries: [`${topic} standard procedure workflow`, `${topic} step by step guide`, `${topic} operational best practices`],
|
|
746
|
-
focus_areas: ["标准流程", "关键步骤", "验证节点"],
|
|
747
|
-
},
|
|
748
|
-
{
|
|
749
|
-
step_number: 2,
|
|
750
|
-
action: "将流程拆分为有序的原子步骤",
|
|
751
|
-
focus_areas: ["步骤顺序", "步骤原子性", "输入输出明确"],
|
|
752
|
-
},
|
|
753
|
-
{
|
|
754
|
-
step_number: 3,
|
|
755
|
-
action: "在关键节点设计检查点(验证门禁)",
|
|
756
|
-
focus_areas: ["质量门禁", "可验证条件"],
|
|
757
|
-
},
|
|
758
|
-
{
|
|
759
|
-
step_number: 4,
|
|
760
|
-
action: "识别常见陷阱和注意事项",
|
|
761
|
-
focus_areas: ["常见错误", "风险点", "最佳实践"],
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
step_number: 5,
|
|
765
|
-
action: `调用 sf_knowledge_update 将步骤内容写入文件`,
|
|
766
|
-
focus_areas: ["使用 add_decision_rules 写入步骤和注意事项"],
|
|
767
|
-
},
|
|
768
|
-
],
|
|
769
|
-
authoritative_sources: [
|
|
770
|
-
"Google SRE Book — 运维流程实践",
|
|
771
|
-
"CI/CD Pipeline Best Practices — 部署发布流程",
|
|
772
|
-
"Git Workflow Guides — 代码管理流程",
|
|
773
|
-
"OWASP Secure Development Lifecycle — 安全开发流程",
|
|
774
|
-
],
|
|
775
|
-
completeness_thresholds: [
|
|
776
|
-
{ field: "steps", minimum: 5 },
|
|
777
|
-
{ field: "checkpoints", minimum: 3 },
|
|
778
|
-
{ field: "notes", minimum: 3 },
|
|
779
|
-
],
|
|
780
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[步骤内容, 注意事项, ...])`,
|
|
781
|
-
};
|
|
782
|
-
}
|
|
783
|
-
/**
|
|
784
|
-
* 构建 pipeline_procedure 类型的自动丰富指南。
|
|
785
|
-
* @param input - 新增知识条目输入
|
|
786
|
-
* @returns 丰富指南
|
|
787
|
-
*/
|
|
788
|
-
function buildPipelineGuide(input) {
|
|
789
|
-
const topic = extractTopicFromTitle(input.title);
|
|
790
|
-
return {
|
|
791
|
-
entry_name: input.title,
|
|
792
|
-
type: "pipeline_procedure",
|
|
793
|
-
overview: `设计"${topic}"的多阶段流水线,明确每个阶段的工具、产出和检查点。`,
|
|
794
|
-
steps: [
|
|
795
|
-
{
|
|
796
|
-
step_number: 1,
|
|
797
|
-
action: `搜索"${topic}"相关的流水线或工作流设计`,
|
|
798
|
-
search_queries: [`${topic} pipeline workflow design`, `${topic} multi-phase process`],
|
|
799
|
-
focus_areas: ["阶段划分", "阶段边界", "入口/出口条件"],
|
|
800
|
-
},
|
|
801
|
-
{
|
|
802
|
-
step_number: 2,
|
|
803
|
-
action: "为每个阶段映射具体的 SoloForge 工具(sf_classify, sf_expand, sf_verify 等)",
|
|
804
|
-
focus_areas: ["工具选择", "工具参数"],
|
|
805
|
-
},
|
|
806
|
-
{
|
|
807
|
-
step_number: 3,
|
|
808
|
-
action: "定义每个阶段的产出物和保存路径",
|
|
809
|
-
focus_areas: ["产出格式", "路径规范"],
|
|
810
|
-
},
|
|
811
|
-
{
|
|
812
|
-
step_number: 4,
|
|
813
|
-
action: `调用 sf_knowledge_update 将阶段内容写入文件`,
|
|
814
|
-
focus_areas: ["使用 add_decision_rules 写入阶段定义"],
|
|
815
|
-
},
|
|
816
|
-
],
|
|
817
|
-
authoritative_sources: [
|
|
818
|
-
"CI/CD Pipeline Best Practices",
|
|
819
|
-
"Google SRE Release Engineering",
|
|
820
|
-
"GitHub Actions Workflow Patterns",
|
|
821
|
-
],
|
|
822
|
-
completeness_thresholds: [
|
|
823
|
-
{ field: "phases", minimum: 3 },
|
|
824
|
-
{ field: "tools_per_phase", minimum: 1 },
|
|
825
|
-
],
|
|
826
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[阶段定义1, 阶段定义2, ...])`,
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
/**
|
|
830
|
-
* 构建 review_rule 类型的自动丰富指南。
|
|
831
|
-
* @param input - 新增知识条目输入
|
|
832
|
-
* @returns 丰富指南
|
|
833
|
-
*/
|
|
834
|
-
function buildReviewRuleGuide(input) {
|
|
835
|
-
const topic = extractTopicFromTitle(input.title);
|
|
836
|
-
return {
|
|
837
|
-
entry_name: input.title,
|
|
838
|
-
type: "review_rule",
|
|
839
|
-
overview: `研究"${topic}"相关的代码质量问题,定义正则匹配规则、严重级别和描述。规则需覆盖安全、性能、质量维度。`,
|
|
840
|
-
steps: [
|
|
841
|
-
{
|
|
842
|
-
step_number: 1,
|
|
843
|
-
action: `搜索"${topic}"相关的常见代码质量问题和安全漏洞`,
|
|
844
|
-
search_queries: [`${topic} code review checklist`, `${topic} static analysis rules`, `${topic} common vulnerabilities patterns`],
|
|
845
|
-
focus_areas: ["代码异味", "安全漏洞模式", "性能反模式"],
|
|
846
|
-
},
|
|
847
|
-
{
|
|
848
|
-
step_number: 2,
|
|
849
|
-
action: "为每个问题定义可匹配的正则表达式(pattern)",
|
|
850
|
-
focus_areas: ["正则精确性", "误报率控制", "覆盖变体"],
|
|
851
|
-
},
|
|
852
|
-
{
|
|
853
|
-
step_number: 3,
|
|
854
|
-
action: "分配严重级别(critical/warning/info)并编写描述",
|
|
855
|
-
focus_areas: ["严重度合理性", "描述清晰性", "修复建议"],
|
|
856
|
-
},
|
|
857
|
-
{
|
|
858
|
-
step_number: 4,
|
|
859
|
-
action: `调用 sf_knowledge_update 将规则写入文件`,
|
|
860
|
-
focus_areas: ["使用 add_decision_rules 写入规则定义"],
|
|
861
|
-
},
|
|
862
|
-
],
|
|
863
|
-
authoritative_sources: [
|
|
864
|
-
"OWASP Code Review Guide — 安全审查规则",
|
|
865
|
-
"ESLint / PMD / Checkstyle Rule Catalogs — 静态分析规则",
|
|
866
|
-
"Google Style Guides — 代码风格规则",
|
|
867
|
-
"Alibaba Java Development Manual — Java 规则",
|
|
868
|
-
"SonarQube Rule Definitions — 质量规则",
|
|
869
|
-
],
|
|
870
|
-
completeness_thresholds: [
|
|
871
|
-
{ field: "rules", minimum: 5 },
|
|
872
|
-
{ field: "critical_rules", minimum: 1 },
|
|
873
|
-
],
|
|
874
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_decision_rules=[规则定义1, 规则定义2, ...])`,
|
|
875
|
-
};
|
|
876
|
-
}
|
|
877
|
-
/**
|
|
878
|
-
* 构建 acceptance_template 类型的自动丰富指南。
|
|
879
|
-
* @param input - 新增知识条目输入
|
|
880
|
-
* @returns 丰富指南
|
|
881
|
-
*/
|
|
882
|
-
function buildAcceptanceGuide(input) {
|
|
883
|
-
const topic = extractTopicFromTitle(input.title);
|
|
884
|
-
return {
|
|
885
|
-
entry_name: input.title,
|
|
886
|
-
type: "acceptance_template",
|
|
887
|
-
overview: `研究"${topic}"的行业标准验收门禁,设计覆盖安全、性能、质量维度的验收清单,每个验收项需包含可执行的检查命令。`,
|
|
888
|
-
steps: [
|
|
889
|
-
{
|
|
890
|
-
step_number: 1,
|
|
891
|
-
action: `搜索"${topic}"的质量门禁和验收标准`,
|
|
892
|
-
search_queries: [`${topic} acceptance criteria checklist`, `${topic} quality gate verification`, `${topic} production readiness review`],
|
|
893
|
-
focus_areas: ["安全验收", "性能验收", "功能验收", "合规验收"],
|
|
894
|
-
},
|
|
895
|
-
{
|
|
896
|
-
step_number: 2,
|
|
897
|
-
action: "为每个验收项设计可执行的检查命令(grep/find/test 命令)",
|
|
898
|
-
focus_areas: ["命令可执行性", "结果可判定性"],
|
|
899
|
-
},
|
|
900
|
-
{
|
|
901
|
-
step_number: 3,
|
|
902
|
-
action: "确保验收项覆盖安全(≥2项)和质量(≥2项)维度",
|
|
903
|
-
focus_areas: ["安全覆盖", "质量覆盖", "独立性"],
|
|
904
|
-
},
|
|
905
|
-
{
|
|
906
|
-
step_number: 4,
|
|
907
|
-
action: `调用 sf_knowledge_update 将验收项写入文件`,
|
|
908
|
-
focus_areas: ["使用 add_acceptance_criteria 写入验收项"],
|
|
909
|
-
},
|
|
910
|
-
],
|
|
911
|
-
authoritative_sources: [
|
|
912
|
-
"OWASP ASVS (Application Security Verification Standard) — 安全验收",
|
|
913
|
-
"Microsoft Security Development Lifecycle — 安全开发验收",
|
|
914
|
-
"Google Engineering Practices — 代码质量验收",
|
|
915
|
-
"IEEE Software Quality Standards — 软件质量标准",
|
|
916
|
-
],
|
|
917
|
-
completeness_thresholds: [
|
|
918
|
-
{ field: "acceptance_criteria", minimum: 10 },
|
|
919
|
-
{ field: "security_acs", minimum: 2 },
|
|
920
|
-
{ field: "check_commands", minimum: 10 },
|
|
921
|
-
],
|
|
922
|
-
update_call_template: `sf_knowledge_update(entry_name="${input.title}", add_acceptance_criteria=[验收项1, 验收项2, ...])`,
|
|
923
|
-
};
|
|
924
|
-
}
|
|
925
|
-
/**
|
|
926
|
-
* 获取项目知识库目录路径。
|
|
927
|
-
* @param config - 项目配置
|
|
928
|
-
* @returns 知识库目录的绝对路径
|
|
929
|
-
*/
|
|
930
|
-
function getProjectKnowledgeDir(config) {
|
|
931
|
-
const projectDir = config._projectPath ?? process.cwd();
|
|
932
|
-
return path.join(projectDir, ".soloforge", "knowledge");
|
|
933
|
-
}
|
|
1
|
+
// 健康检查(审计)
|
|
2
|
+
export { auditKnowledge } from "./knowledge_health.js";
|
|
3
|
+
// 写入(新增/更新)
|
|
4
|
+
export { addKnowledge, updateKnowledge } from "./knowledge_writer.js";
|
|
934
5
|
//# sourceMappingURL=knowledge_manager.js.map
|