core-runtime 0.1.1__py3-none-any.whl
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.
- api/__init__.py +4 -0
- api/cli/__init__.py +10 -0
- api/cli/audit_client.py +92 -0
- api/cli/census_client.py +77 -0
- api/cli/client.py +508 -0
- api/cli/coverage_client.py +121 -0
- api/cli/daemon_client.py +42 -0
- api/cli/fix_client.py +101 -0
- api/cli/inspect_client.py +143 -0
- api/cli/integration_client.py +42 -0
- api/cli/integrity_client.py +45 -0
- api/cli/proposals_client.py +101 -0
- api/cli/quality_client.py +83 -0
- api/cli/refactor_client.py +82 -0
- api/cli/sync_client.py +106 -0
- api/dependencies.py +37 -0
- api/errors.py +74 -0
- api/main.py +88 -0
- api/v1/__init__.py +4 -0
- api/v1/audit_routes.py +302 -0
- api/v1/census_routes.py +207 -0
- api/v1/coverage_routes.py +352 -0
- api/v1/daemon_routes.py +86 -0
- api/v1/development_routes.py +70 -0
- api/v1/fix_routes.py +428 -0
- api/v1/inspect_routes.py +220 -0
- api/v1/integration_routes.py +56 -0
- api/v1/integrity_routes.py +72 -0
- api/v1/knowledge_routes.py +36 -0
- api/v1/lint_routes.py +40 -0
- api/v1/proposals_routes.py +267 -0
- api/v1/quality_routes.py +272 -0
- api/v1/refactor_routes.py +225 -0
- api/v1/sync_routes.py +261 -0
- body/__init__.py +4 -0
- body/analyzers/__init__.py +25 -0
- body/analyzers/base_analyzer.py +28 -0
- body/analyzers/constitutional_path_analyzer.py +63 -0
- body/analyzers/file_analyzer.py +211 -0
- body/analyzers/knowledge_graph_analyzer.py +86 -0
- body/analyzers/prompt_analyzer.py +155 -0
- body/analyzers/symbol_extractor.py +280 -0
- body/atomic/__init__.py +74 -0
- body/atomic/build_tests_action.py +354 -0
- body/atomic/check_actions.py +142 -0
- body/atomic/crate_ops.py +59 -0
- body/atomic/executor.py +470 -0
- body/atomic/file_ops.py +153 -0
- body/atomic/fix_actions.py +1142 -0
- body/atomic/import_resolver.py +200 -0
- body/atomic/metadata_ops.py +161 -0
- body/atomic/modularity_fix.py +839 -0
- body/atomic/modularity_splitter.py +521 -0
- body/atomic/proposal_lifecycle_actions.py +171 -0
- body/atomic/registry.py +326 -0
- body/atomic/remediate_cognitive_role.py +104 -0
- body/atomic/sandbox_lifecycle.py +252 -0
- body/atomic/split_plan.py +155 -0
- body/atomic/sync_actions/__init__.py +22 -0
- body/atomic/sync_actions/chunking_helpers.py +218 -0
- body/atomic/sync_actions/sync_actions.py +431 -0
- body/atomic/test_actions.py +47 -0
- body/autonomy/__init__.py +16 -0
- body/autonomy/audit_analyzer.py +343 -0
- body/autonomy/micro_proposal_executor.py +316 -0
- body/crate_processing/canary_executor.py +144 -0
- body/evaluators/__init__.py +27 -0
- body/evaluators/atomic_actions_evaluator.py +162 -0
- body/evaluators/atomic_actions_format.py +45 -0
- body/evaluators/atomic_actions_rules.py +278 -0
- body/evaluators/base_evaluator.py +67 -0
- body/evaluators/clarity_evaluator.py +83 -0
- body/evaluators/constitutional_evaluator.py +227 -0
- body/evaluators/failure_evaluator.py +136 -0
- body/evaluators/performance_evaluator.py +341 -0
- body/evaluators/security_evaluator.py +393 -0
- body/flows/__init__.py +33 -0
- body/flows/executor.py +275 -0
- body/flows/registry.py +272 -0
- body/flows/result.py +113 -0
- body/governance/__init__.py +29 -0
- body/governance/body_contracts_service.py +317 -0
- body/governance/code_validator.py +118 -0
- body/governance/engine_dispatcher.py +128 -0
- body/governance/intent_guard.py +592 -0
- body/governance/intent_pattern_validators.py +197 -0
- body/governance/key_management_service.py +100 -0
- body/governance/path_validator.py +187 -0
- body/governance/remediation_service.py +263 -0
- body/governance/runtime_validator.py +184 -0
- body/infrastructure/bootstrap.py +135 -0
- body/infrastructure/lifespan.py +85 -0
- body/infrastructure/repositories/__init__.py +1 -0
- body/infrastructure/repositories/decision_trace_repository.py +210 -0
- body/infrastructure/repositories/refusal_repository.py +294 -0
- body/introspection/__init__.py +4 -0
- body/introspection/capability_discovery_service.py +107 -0
- body/introspection/discovery/from_kgb.py +33 -0
- body/introspection/discovery/from_source_scan.py +40 -0
- body/introspection/discovery/loader.py +62 -0
- body/introspection/discovery/registry.py +22 -0
- body/introspection/discovery/semantics.py +21 -0
- body/introspection/discovery/sync.py +47 -0
- body/introspection/drift_detector.py +81 -0
- body/introspection/drift_service.py +48 -0
- body/introspection/export_vectors.py +133 -0
- body/introspection/generate_capability_docs.py +130 -0
- body/introspection/generate_correction_map.py +98 -0
- body/introspection/graph_analysis_service.py +66 -0
- body/introspection/knowledge_graph_service.py +170 -0
- body/introspection/semantic_clusterer.py +128 -0
- body/introspection/symbol_index_builder.py +244 -0
- body/introspection/sync/engine.py +92 -0
- body/introspection/sync/scanner.py +56 -0
- body/introspection/sync/visitor.py +83 -0
- body/introspection/sync_service.py +62 -0
- body/invokers/__init__.py +4 -0
- body/invokers/capability_invoker.py +4 -0
- body/maintenance/command_sync_service.py +73 -0
- body/maintenance/dotenv_sync_service.py +99 -0
- body/maintenance/idempotency_harness.py +70 -0
- body/maintenance/maintenance_service.py +123 -0
- body/maintenance/memory_cleanup_service.py +131 -0
- body/maintenance/refactor_settings_access.py +274 -0
- body/maintenance/scripts/__init__.py +5 -0
- body/maintenance/scripts/context_export.py +278 -0
- body/maintenance/scripts/vector_verify.py +73 -0
- body/maintenance/sync_vectors.py +338 -0
- body/models/__init__.py +4 -0
- body/project_lifecycle/__init__.py +4 -0
- body/project_lifecycle/bootstrap_service.py +157 -0
- body/project_lifecycle/definition_service.py +264 -0
- body/project_lifecycle/integration_service.py +113 -0
- body/project_lifecycle/scaffolding_service.py +187 -0
- body/quality/coverage_analyzer.py +177 -0
- body/repositories/__init__.py +4 -0
- body/self_healing/atomic_actions_fixer.py +113 -0
- body/self_healing/body_ui_fixer.py +193 -0
- body/self_healing/capability_parser.py +65 -0
- body/self_healing/code_style_service.py +51 -0
- body/self_healing/complexity_filter.py +70 -0
- body/self_healing/docstring_service.py +345 -0
- body/self_healing/duplicate_id_service.py +407 -0
- body/self_healing/duplicates_service.py +165 -0
- body/self_healing/handlers/__init__.py +1 -0
- body/self_healing/handlers/id_assignment_handler.py +201 -0
- body/self_healing/handlers/import_sorting_handler.py +181 -0
- body/self_healing/header_service.py +308 -0
- body/self_healing/id_tagging_service.py +227 -0
- body/self_healing/knowledge_consolidation_service.py +80 -0
- body/self_healing/logging_service.py +292 -0
- body/self_healing/owner_tagging_service.py +5 -0
- body/self_healing/placeholder_fixer_service.py +27 -0
- body/self_healing/prune_private_capabilities.py +144 -0
- body/self_healing/purge_legacy_tags_service.py +146 -0
- body/self_healing/remediation_models.py +238 -0
- body/self_healing/test_context/__init__.py +10 -0
- body/self_healing/test_context/detectors.py +74 -0
- body/self_healing/test_context/examples.py +53 -0
- body/self_healing/test_context/formatter.py +65 -0
- body/self_healing/test_context/metrics.py +62 -0
- body/self_healing/test_context/models.py +83 -0
- body/self_healing/test_context/parsers.py +70 -0
- body/self_healing/test_context_analyzer.py +79 -0
- body/self_healing/test_failure_analyzer.py +259 -0
- body/self_healing/test_target_analyzer.py +118 -0
- body/self_healing/vulture_healer.py +161 -0
- body/services/__init__.py +4 -0
- body/services/artifact_service.py +155 -0
- body/services/blackboard_service/__init__.py +22 -0
- body/services/blackboard_service/blackboard_claim_service.py +216 -0
- body/services/blackboard_service/blackboard_proposal_service.py +305 -0
- body/services/blackboard_service/blackboard_query_service.py +333 -0
- body/services/blackboard_service/blackboard_service.py +602 -0
- body/services/capabilities.py +51 -0
- body/services/cim/__init__.py +22 -0
- body/services/cim/baselines.py +102 -0
- body/services/cim/census_service.py +190 -0
- body/services/cim/cim_constants.py +116 -0
- body/services/cim/cim_path_utils.py +123 -0
- body/services/cim/diff.py +152 -0
- body/services/cim/history.py +94 -0
- body/services/cim/models.py +319 -0
- body/services/cim/policy.py +149 -0
- body/services/cim/scanners.py +332 -0
- body/services/coherence_service.py +552 -0
- body/services/consequence_log_service.py +189 -0
- body/services/constitutional_rule_loader.py +141 -0
- body/services/constitutional_validator.py +366 -0
- body/services/crate_creation_service.py +217 -0
- body/services/crate_processing_service.py +279 -0
- body/services/crawl_service/__init__.py +10 -0
- body/services/crawl_service/main_module.py +531 -0
- body/services/crawl_service/orchestrator.py +452 -0
- body/services/crawl_service/symbol_processing.py +279 -0
- body/services/database_service.py +242 -0
- body/services/doc_service.py +57 -0
- body/services/file_service.py +260 -0
- body/services/governance_claims_service.py +240 -0
- body/services/governance_init.py +41 -0
- body/services/health_log_service.py +167 -0
- body/services/intent_schema_validator.py +211 -0
- body/services/llm_client.py +87 -0
- body/services/mind_state_service.py +129 -0
- body/services/policy_expression_evaluator.py +154 -0
- body/services/proposal_supervision_service.py +187 -0
- body/services/representation_coherence_service.py +209 -0
- body/services/service_registry.py +431 -0
- body/services/session_attached_service.py +51 -0
- body/services/symbol_query_service.py +218 -0
- body/services/symbol_service.py +94 -0
- body/services/validation/__init__.py +14 -0
- body/services/validation/python_validator.py +89 -0
- body/services/validation/validation_policies.py +121 -0
- body/services/worker_registry_service.py +184 -0
- body/validators/__init__.py +1 -0
- body/validators/logic_conservation_validator.py +201 -0
- body/workers/call_site_rewriter.py +527 -0
- body/workers/prompt_artifact_writer.py +323 -0
- cli/__init__.py +4 -0
- cli/admin_cli.py +98 -0
- cli/cli_user.py +121 -0
- cli/commands/__init__.py +4 -0
- cli/commands/audit_reporter.py +272 -0
- cli/commands/check/__init__.py +115 -0
- cli/commands/check/audit.py +130 -0
- cli/commands/check/converters.py +129 -0
- cli/commands/check/diagnostics_commands.py +70 -0
- cli/commands/check/formatters.py +310 -0
- cli/commands/check/imports.py +73 -0
- cli/commands/check/quality.py +71 -0
- cli/commands/check/quality_gates.py +107 -0
- cli/commands/check/rule.py +136 -0
- cli/commands/check/utils.py +28 -0
- cli/commands/check_atomic_actions.py +167 -0
- cli/commands/components.py +66 -0
- cli/commands/coverage/__init__.py +22 -0
- cli/commands/coverage/analysis_commands.py +87 -0
- cli/commands/coverage/check_commands.py +173 -0
- cli/commands/coverage/generation_commands.py +155 -0
- cli/commands/coverage/services/__init__.py +15 -0
- cli/commands/coverage/services/coverage_checker.py +50 -0
- cli/commands/coverage/services/coverage_reporter.py +81 -0
- cli/commands/coverage/services/gaps_analyzer.py +114 -0
- cli/commands/daemon.py +908 -0
- cli/commands/develop.py +127 -0
- cli/commands/diagnostics.py +32 -0
- cli/commands/fix/__init__.py +84 -0
- cli/commands/fix/all_commands.py +94 -0
- cli/commands/fix/atomic_actions.py +48 -0
- cli/commands/fix/audit.py +146 -0
- cli/commands/fix/body_ui.py +93 -0
- cli/commands/fix/code_style.py +52 -0
- cli/commands/fix/db_tools.py +90 -0
- cli/commands/fix/fix_ir.py +79 -0
- cli/commands/fix/handler_discovery.py +54 -0
- cli/commands/fix/imports.py +55 -0
- cli/commands/fix/list_commands.py +54 -0
- cli/commands/fix/metadata.py +160 -0
- cli/commands/fix/modularity.py +88 -0
- cli/commands/fix/settings_access.py +65 -0
- cli/commands/fix_governed.py +103 -0
- cli/commands/fix_logging.py +24 -0
- cli/commands/governance.py +294 -0
- cli/commands/guard.py +125 -0
- cli/commands/inspect/__init__.py +79 -0
- cli/commands/inspect/_helpers.py +226 -0
- cli/commands/inspect/analysis.py +158 -0
- cli/commands/inspect/decisions.py +140 -0
- cli/commands/inspect/diagnostics.py +126 -0
- cli/commands/inspect/drift.py +100 -0
- cli/commands/inspect/patterns.py +102 -0
- cli/commands/inspect/refusals.py +211 -0
- cli/commands/inspect/repo_census.py +175 -0
- cli/commands/inspect/status.py +48 -0
- cli/commands/interactive_test.py +85 -0
- cli/commands/mind.py +49 -0
- cli/commands/refactor.py +234 -0
- cli/commands/refactor_support/__init__.py +7 -0
- cli/commands/refactor_support/analyzer.py +107 -0
- cli/commands/refactor_support/config.py +67 -0
- cli/commands/refactor_support/display.py +170 -0
- cli/commands/refactor_support/recommendations.py +55 -0
- cli/commands/run.py +60 -0
- cli/commands/search.py +103 -0
- cli/commands/status.py +86 -0
- cli/commands/submit.py +23 -0
- cli/interactive.py +177 -0
- cli/logic/__init__.py +7 -0
- cli/logic/agent.py +110 -0
- cli/logic/audit_capability_domains.py +106 -0
- cli/logic/audit_renderer.py +150 -0
- cli/logic/autonomy/actions.py +36 -0
- cli/logic/autonomy/views.py +116 -0
- cli/logic/body_contracts_checker.py +23 -0
- cli/logic/build.py +27 -0
- cli/logic/byor.py +148 -0
- cli/logic/capability.py +27 -0
- cli/logic/cli_utils.py +210 -0
- cli/logic/context.py +7 -0
- cli/logic/db.py +154 -0
- cli/logic/db_manage.py +22 -0
- cli/logic/decision_inspect_logic.py +62 -0
- cli/logic/diagnostics.py +148 -0
- cli/logic/diagnostics_policy.py +100 -0
- cli/logic/diagnostics_registry.py +165 -0
- cli/logic/duplicates.py +19 -0
- cli/logic/embeddings_cli.py +43 -0
- cli/logic/governance/__init__.py +16 -0
- cli/logic/governance/engine.py +216 -0
- cli/logic/governance/forensics_service.py +67 -0
- cli/logic/governance/limb_status_service.py +83 -0
- cli/logic/governance/renderer.py +115 -0
- cli/logic/governance/traceability_service.py +78 -0
- cli/logic/governance_logic.py +33 -0
- cli/logic/hub/__init__.py +14 -0
- cli/logic/hub/app.py +107 -0
- cli/logic/hub/formatter.py +29 -0
- cli/logic/hub/introspection.py +20 -0
- cli/logic/hub/repository.py +17 -0
- cli/logic/init.py +22 -0
- cli/logic/interactive_test/__init__.py +21 -0
- cli/logic/interactive_test/session.py +102 -0
- cli/logic/interactive_test/steps/__init__.py +23 -0
- cli/logic/interactive_test/steps/execution.py +53 -0
- cli/logic/interactive_test/steps/generation.py +88 -0
- cli/logic/interactive_test/steps/healing.py +79 -0
- cli/logic/interactive_test/steps/utils.py +31 -0
- cli/logic/interactive_test/steps/verification.py +71 -0
- cli/logic/interactive_test/ui.py +203 -0
- cli/logic/interactive_test/workflow.py +168 -0
- cli/logic/interactive_test_logic.py +41 -0
- cli/logic/knowledge.py +47 -0
- cli/logic/legacy_scan_logic.py +306 -0
- cli/logic/list_audits.py +49 -0
- cli/logic/log_audit.py +53 -0
- cli/logic/new.py +8 -0
- cli/logic/project_docs.py +28 -0
- cli/logic/reconcile.py +127 -0
- cli/logic/refusal_inspect_logic.py +208 -0
- cli/logic/report.py +47 -0
- cli/logic/status.py +47 -0
- cli/logic/symbol_drift.py +77 -0
- cli/logic/sync.py +48 -0
- cli/logic/sync_domains.py +72 -0
- cli/logic/sync_manifest.py +31 -0
- cli/logic/tools.py +133 -0
- cli/logic/utils_migration.py +43 -0
- cli/logic/validate.py +107 -0
- cli/logic/vector_drift.py +109 -0
- cli/logic/yaml_processor.py +5 -0
- cli/renderers/audit_detail.py +37 -0
- cli/renderers/audit_overview.py +39 -0
- cli/resources/__init__.py +27 -0
- cli/resources/admin/__init__.py +23 -0
- cli/resources/admin/coverage.py +63 -0
- cli/resources/admin/debt_scan.py +195 -0
- cli/resources/admin/forensics.py +97 -0
- cli/resources/admin/health.py +66 -0
- cli/resources/admin/hub.py +9 -0
- cli/resources/admin/meta.py +47 -0
- cli/resources/admin/patterns.py +28 -0
- cli/resources/admin/refusals.py +31 -0
- cli/resources/admin/self_check.py +175 -0
- cli/resources/admin/status.py +66 -0
- cli/resources/admin/summary.py +67 -0
- cli/resources/admin/traces.py +46 -0
- cli/resources/admin/validate_env.py +56 -0
- cli/resources/code/__init__.py +31 -0
- cli/resources/code/actions.py +48 -0
- cli/resources/code/audit.py +416 -0
- cli/resources/code/audit_duplicates.py +22 -0
- cli/resources/code/check_imports.py +75 -0
- cli/resources/code/check_ui.py +62 -0
- cli/resources/code/clarity.py +51 -0
- cli/resources/code/complexity.py +55 -0
- cli/resources/code/docstrings.py +51 -0
- cli/resources/code/fix_atomic.py +51 -0
- cli/resources/code/format.py +62 -0
- cli/resources/code/hub.py +10 -0
- cli/resources/code/integrity.py +75 -0
- cli/resources/code/lint.py +37 -0
- cli/resources/code/logging.py +49 -0
- cli/resources/code/refactor.py +32 -0
- cli/resources/code/test.py +30 -0
- cli/resources/coherence/__init__.py +13 -0
- cli/resources/coherence/check.py +111 -0
- cli/resources/coherence/hub.py +13 -0
- cli/resources/coherence/repair_counts.py +73 -0
- cli/resources/coherence/report.py +144 -0
- cli/resources/coherence/seed.py +297 -0
- cli/resources/coherence/supersede.py +124 -0
- cli/resources/coherence/triage.py +81 -0
- cli/resources/constitution/__init__.py +19 -0
- cli/resources/constitution/audit.py +49 -0
- cli/resources/constitution/query.py +45 -0
- cli/resources/constitution/status.py +34 -0
- cli/resources/constitution/validate.py +36 -0
- cli/resources/context/__init__.py +21 -0
- cli/resources/context/build.py +374 -0
- cli/resources/context/cache.py +156 -0
- cli/resources/context/explain.py +140 -0
- cli/resources/context/hub.py +11 -0
- cli/resources/context/search.py +114 -0
- cli/resources/database/__init__.py +13 -0
- cli/resources/database/cleanup.py +107 -0
- cli/resources/database/export.py +61 -0
- cli/resources/database/hub.py +11 -0
- cli/resources/database/migrate.py +57 -0
- cli/resources/database/status.py +101 -0
- cli/resources/database/sync.py +84 -0
- cli/resources/database/sync_env.py +76 -0
- cli/resources/database/sync_registry.py +48 -0
- cli/resources/dev/__init__.py +14 -0
- cli/resources/dev/hub.py +11 -0
- cli/resources/dev/refactor.py +92 -0
- cli/resources/dev/stability.py +60 -0
- cli/resources/dev/strategic_audit.py +113 -0
- cli/resources/dev/sync.py +51 -0
- cli/resources/dev/test.py +34 -0
- cli/resources/intent/__init__.py +11 -0
- cli/resources/intent/hub.py +9 -0
- cli/resources/intent/sync_vocabulary.py +396 -0
- cli/resources/project/__init__.py +19 -0
- cli/resources/project/docs.py +41 -0
- cli/resources/project/new.py +40 -0
- cli/resources/project/onboard.py +31 -0
- cli/resources/proposals/__init__.py +28 -0
- cli/resources/proposals/create.py +82 -0
- cli/resources/proposals/integrate.py +49 -0
- cli/resources/proposals/list.py +76 -0
- cli/resources/proposals/manage.py +117 -0
- cli/resources/runtime/__init__.py +9 -0
- cli/resources/runtime/health.py +925 -0
- cli/resources/secrets/__init__.py +10 -0
- cli/resources/secrets/hub.py +9 -0
- cli/resources/secrets/manage.py +309 -0
- cli/resources/symbols/__init__.py +13 -0
- cli/resources/symbols/audit.py +46 -0
- cli/resources/symbols/fix_ids.py +43 -0
- cli/resources/symbols/hub.py +11 -0
- cli/resources/symbols/resolve_duplicates.py +30 -0
- cli/resources/symbols/sync.py +39 -0
- cli/resources/symbols/tag.py +47 -0
- cli/resources/vectors/__init__.py +11 -0
- cli/resources/vectors/cleanup.py +95 -0
- cli/resources/vectors/hub.py +9 -0
- cli/resources/vectors/query.py +105 -0
- cli/resources/vectors/status.py +30 -0
- cli/resources/vectors/sync.py +57 -0
- cli/resources/vectors/sync_code.py +67 -0
- cli/resources/workers/__init__.py +13 -0
- cli/resources/workers/blackboard.py +253 -0
- cli/resources/workers/remediate.py +337 -0
- cli/resources/workers/run.py +140 -0
- cli/utils/__init__.py +32 -0
- cli/utils/annotation_formatter.py +154 -0
- cli/utils/decorators.py +184 -0
- cli/utils/display.py +79 -0
- cli/utils/exit_codes.py +59 -0
- cli/utils/helpers.py +34 -0
- cli/utils/prompts.py +21 -0
- core_runtime-0.1.1.dist-info/LICENSE +21 -0
- core_runtime-0.1.1.dist-info/METADATA +346 -0
- core_runtime-0.1.1.dist-info/RECORD +962 -0
- core_runtime-0.1.1.dist-info/WHEEL +4 -0
- core_runtime-0.1.1.dist-info/entry_points.txt +4 -0
- mind/__init__.py +4 -0
- mind/coherence/__init__.py +1 -0
- mind/coherence/checker.py +314 -0
- mind/coherence/checks/__init__.py +4 -0
- mind/coherence/checks/base.py +34 -0
- mind/coherence/checks/r1_scoped.py +228 -0
- mind/coherence/checks/row2_grounding.py +69 -0
- mind/coherence/checks/row3_citation.py +119 -0
- mind/coherence/checks/row4_naming.py +126 -0
- mind/coherence/checks/sameconcern.py +136 -0
- mind/coherence/checks/specgap.py +233 -0
- mind/coherence/checks/vocabulary.py +112 -0
- mind/coherence/llm_judge.py +207 -0
- mind/enforcement/audit.py +78 -0
- mind/governance/__init__.py +22 -0
- mind/governance/assumption_extractor.py +326 -0
- mind/governance/audit_context.py +520 -0
- mind/governance/audit_postprocessor.py +36 -0
- mind/governance/audit_report_writer.py +46 -0
- mind/governance/audit_types.py +98 -0
- mind/governance/auditor.py +179 -0
- mind/governance/authority_package_builder.py +502 -0
- mind/governance/constitutional_auditor_dynamic.py +362 -0
- mind/governance/enforcement/__init__.py +24 -0
- mind/governance/enforcement_loader.py +245 -0
- mind/governance/enforcement_methods.py +28 -0
- mind/governance/entry_point_policy.py +62 -0
- mind/governance/executable_rule.py +127 -0
- mind/governance/filtered_audit.py +272 -0
- mind/governance/finding_processor.py +76 -0
- mind/governance/meta_validator.py +259 -0
- mind/governance/micro_proposal_validator.py +169 -0
- mind/governance/policy_coverage_service.py +183 -0
- mind/governance/policy_rule.py +94 -0
- mind/governance/rule_conflict_detector.py +127 -0
- mind/governance/rule_executor.py +306 -0
- mind/governance/rule_extractor.py +376 -0
- mind/governance/stateless_audit.py +206 -0
- mind/governance/violation_report.py +136 -0
- mind/logic/engines/_knowledge_gate_duplication.py +117 -0
- mind/logic/engines/action_gate.py +76 -0
- mind/logic/engines/artifact_gate.py +1168 -0
- mind/logic/engines/ast_gate/__init__.py +9 -0
- mind/logic/engines/ast_gate/base.py +263 -0
- mind/logic/engines/ast_gate/checks/__init__.py +35 -0
- mind/logic/engines/ast_gate/checks/async_checks.py +276 -0
- mind/logic/engines/ast_gate/checks/capability_checks.py +197 -0
- mind/logic/engines/ast_gate/checks/conservation_checks.py +126 -0
- mind/logic/engines/ast_gate/checks/generic_checks.py +244 -0
- mind/logic/engines/ast_gate/checks/import_checks.py +164 -0
- mind/logic/engines/ast_gate/checks/knowledge_source_check.py +88 -0
- mind/logic/engines/ast_gate/checks/logging_checks.py +133 -0
- mind/logic/engines/ast_gate/checks/metadata_checks.py +242 -0
- mind/logic/engines/ast_gate/checks/modularity_checks.py +436 -0
- mind/logic/engines/ast_gate/checks/naming_checks.py +120 -0
- mind/logic/engines/ast_gate/checks/prompt_model_checks.py +83 -0
- mind/logic/engines/ast_gate/checks/protected_namespace_access_check.py +298 -0
- mind/logic/engines/ast_gate/checks/purity_checks.py +421 -0
- mind/logic/engines/ast_gate/checks/purity_enforcement_check.py +56 -0
- mind/logic/engines/ast_gate/checks/runtime_import_boundary.py +198 -0
- mind/logic/engines/ast_gate/checks/schema_conformance_checks.py +130 -0
- mind/logic/engines/ast_gate/engine.py +317 -0
- mind/logic/engines/ast_gate.py +19 -0
- mind/logic/engines/base.py +106 -0
- mind/logic/engines/cli_gate/__init__.py +25 -0
- mind/logic/engines/cli_gate/base_check.py +45 -0
- mind/logic/engines/cli_gate/checks/__init__.py +31 -0
- mind/logic/engines/cli_gate/checks/async_execution.py +65 -0
- mind/logic/engines/cli_gate/checks/dangerous_explicit.py +60 -0
- mind/logic/engines/cli_gate/checks/discovery_strict.py +167 -0
- mind/logic/engines/cli_gate/checks/help_required.py +43 -0
- mind/logic/engines/cli_gate/checks/no_duplicates.py +57 -0
- mind/logic/engines/cli_gate/checks/no_layer_exposure.py +48 -0
- mind/logic/engines/cli_gate/checks/resource_first.py +58 -0
- mind/logic/engines/cli_gate/checks/standard_verbs.py +50 -0
- mind/logic/engines/cli_gate/engine.py +211 -0
- mind/logic/engines/glob_gate.py +214 -0
- mind/logic/engines/knowledge_gate.py +410 -0
- mind/logic/engines/llm_gate.py +407 -0
- mind/logic/engines/llm_gate_stub.py +67 -0
- mind/logic/engines/passive_gate.py +45 -0
- mind/logic/engines/regex_gate.py +97 -0
- mind/logic/engines/registry.py +134 -0
- mind/logic/engines/runtime_gate.py +265 -0
- mind/logic/engines/taxonomy_gate.py +229 -0
- mind/logic/engines/workflow_gate/__init__.py +22 -0
- mind/logic/engines/workflow_gate/base_check.py +42 -0
- mind/logic/engines/workflow_gate/checks/__init__.py +32 -0
- mind/logic/engines/workflow_gate/checks/alignment.py +93 -0
- mind/logic/engines/workflow_gate/checks/audit.py +80 -0
- mind/logic/engines/workflow_gate/checks/canary.py +47 -0
- mind/logic/engines/workflow_gate/checks/coverage.py +74 -0
- mind/logic/engines/workflow_gate/checks/dead_code.py +53 -0
- mind/logic/engines/workflow_gate/checks/import_resolution.py +97 -0
- mind/logic/engines/workflow_gate/checks/linter.py +104 -0
- mind/logic/engines/workflow_gate/checks/quality.py +49 -0
- mind/logic/engines/workflow_gate/checks/ruff_format.py +99 -0
- mind/logic/engines/workflow_gate/checks/tests.py +81 -0
- mind/logic/engines/workflow_gate/engine.py +207 -0
- shared/__init__.py +32 -0
- shared/action_logger.py +61 -0
- shared/action_types.py +199 -0
- shared/activity_logging.py +149 -0
- shared/ai/constitutional_envelope.py +341 -0
- shared/ai/prompt_model.py +585 -0
- shared/ai/response_parser.py +191 -0
- shared/ast_utility.py +279 -0
- shared/atomic_action.py +117 -0
- shared/cli/__init__.py +6 -0
- shared/cli/app_introspection.py +134 -0
- shared/cli/command_meta.py +224 -0
- shared/cli_types.py +92 -0
- shared/component_primitive.py +216 -0
- shared/config.py +216 -0
- shared/config_loader.py +54 -0
- shared/context.py +113 -0
- shared/exceptions.py +100 -0
- shared/governance/__init__.py +9 -0
- shared/governance/coherence_harvester.py +258 -0
- shared/governance_token.py +77 -0
- shared/infrastructure/__init__.py +5 -0
- shared/infrastructure/adapters/__init__.py +5 -0
- shared/infrastructure/adapters/embedding_provider.py +66 -0
- shared/infrastructure/bootstrap_registry.py +57 -0
- shared/infrastructure/clients/__init__.py +5 -0
- shared/infrastructure/clients/qdrant_client.py +455 -0
- shared/infrastructure/config_service.py +382 -0
- shared/infrastructure/config_validator.py +70 -0
- shared/infrastructure/context/__init__.py +45 -0
- shared/infrastructure/context/builder.py +804 -0
- shared/infrastructure/context/cache.py +101 -0
- shared/infrastructure/context/database.py +205 -0
- shared/infrastructure/context/limb_workspace.py +134 -0
- shared/infrastructure/context/models.py +65 -0
- shared/infrastructure/context/providers/__init__.py +18 -0
- shared/infrastructure/context/providers/ast.py +211 -0
- shared/infrastructure/context/providers/db.py +165 -0
- shared/infrastructure/context/providers/vectors.py +195 -0
- shared/infrastructure/context/redactor.py +109 -0
- shared/infrastructure/context/serializers.py +144 -0
- shared/infrastructure/context/service.py +271 -0
- shared/infrastructure/context/validator.py +247 -0
- shared/infrastructure/database/models/__init__.py +80 -0
- shared/infrastructure/database/models/autonomous_proposals.py +83 -0
- shared/infrastructure/database/models/decision_traces.py +129 -0
- shared/infrastructure/database/models/governance.py +183 -0
- shared/infrastructure/database/models/knowledge.py +205 -0
- shared/infrastructure/database/models/learning.py +99 -0
- shared/infrastructure/database/models/llm_config.py +274 -0
- shared/infrastructure/database/models/operations.py +152 -0
- shared/infrastructure/database/models/refusals.py +147 -0
- shared/infrastructure/database/models/system.py +124 -0
- shared/infrastructure/database/models/vectors.py +113 -0
- shared/infrastructure/database/models/workers.py +96 -0
- shared/infrastructure/database/session_manager.py +166 -0
- shared/infrastructure/diagnostic_service.py +103 -0
- shared/infrastructure/events/__init__.py +5 -0
- shared/infrastructure/events/base.py +44 -0
- shared/infrastructure/events/bus.py +76 -0
- shared/infrastructure/git_service.py +385 -0
- shared/infrastructure/intent/action_risk.py +135 -0
- shared/infrastructure/intent/audit_verdict.py +131 -0
- shared/infrastructure/intent/autonomy_dirty_tree.py +104 -0
- shared/infrastructure/intent/canonical_enums.py +116 -0
- shared/infrastructure/intent/cognitive_roles.py +96 -0
- shared/infrastructure/intent/errors.py +13 -0
- shared/infrastructure/intent/filesystem_operations.py +359 -0
- shared/infrastructure/intent/intent_connector.py +157 -0
- shared/infrastructure/intent/intent_repository.py +707 -0
- shared/infrastructure/intent/intent_validator.py +248 -0
- shared/infrastructure/intent/operational_capabilities.py +470 -0
- shared/infrastructure/intent/operational_config.py +1343 -0
- shared/infrastructure/intent/operational_mode.py +66 -0
- shared/infrastructure/intent/task_type_phases.py +180 -0
- shared/infrastructure/intent/test_coverage_paths.py +181 -0
- shared/infrastructure/intent/vocabulary_projection.py +241 -0
- shared/infrastructure/knowledge/knowledge_service.py +155 -0
- shared/infrastructure/knowledge_graph_service.py +214 -0
- shared/infrastructure/llm/client.py +448 -0
- shared/infrastructure/llm/client_registry.py +153 -0
- shared/infrastructure/llm/fallback_client.py +144 -0
- shared/infrastructure/llm/providers/anthropic.py +113 -0
- shared/infrastructure/llm/providers/base.py +130 -0
- shared/infrastructure/llm/providers/ollama.py +265 -0
- shared/infrastructure/llm/providers/openai.py +168 -0
- shared/infrastructure/repositories/__init__.py +5 -0
- shared/infrastructure/repositories/db/__init__.py +5 -0
- shared/infrastructure/repositories/db/common.py +138 -0
- shared/infrastructure/repositories/db/engine.py +26 -0
- shared/infrastructure/repositories/db/migration_service.py +75 -0
- shared/infrastructure/repositories/db/status_service.py +61 -0
- shared/infrastructure/repositories/memory_repository.py +134 -0
- shared/infrastructure/repositories/symbol_definition_repository.py +170 -0
- shared/infrastructure/repositories/task_repository.py +59 -0
- shared/infrastructure/repositories/vector_link_repository.py +83 -0
- shared/infrastructure/rooted_repository.py +50 -0
- shared/infrastructure/secrets_service.py +317 -0
- shared/infrastructure/specs/__init__.py +9 -0
- shared/infrastructure/specs/specs_repository.py +100 -0
- shared/infrastructure/storage/file_classifier.py +32 -0
- shared/infrastructure/storage/file_handler.py +330 -0
- shared/infrastructure/storage/file_provider.py +233 -0
- shared/infrastructure/storage/integrity_service.py +108 -0
- shared/infrastructure/validation/black_formatter.py +41 -0
- shared/infrastructure/validation/quality.py +46 -0
- shared/infrastructure/validation/ruff_linter.py +104 -0
- shared/infrastructure/validation/syntax_checker.py +45 -0
- shared/infrastructure/validation/test_runner.py +167 -0
- shared/infrastructure/validation/yaml_validator.py +45 -0
- shared/infrastructure/vector/__init__.py +15 -0
- shared/infrastructure/vector/adapters/__init__.py +20 -0
- shared/infrastructure/vector/adapters/constitutional/__init__.py +26 -0
- shared/infrastructure/vector/adapters/constitutional/chunker.py +246 -0
- shared/infrastructure/vector/adapters/constitutional/doc_key_resolver.py +109 -0
- shared/infrastructure/vector/adapters/constitutional/item_builder.py +158 -0
- shared/infrastructure/vector/adapters/constitutional/utils.py +39 -0
- shared/infrastructure/vector/adapters/constitutional_adapter.py +309 -0
- shared/infrastructure/vector/adapters/specs_adapter.py +171 -0
- shared/infrastructure/vector/cognitive_adapter.py +119 -0
- shared/infrastructure/vector/vector_index_service.py +230 -0
- shared/logger.py +195 -0
- shared/models/__init__.py +47 -0
- shared/models/action_result.py +77 -0
- shared/models/audit_models.py +106 -0
- shared/models/audit_rendering.py +30 -0
- shared/models/capability_models.py +22 -0
- shared/models/constitutional_validation.py +185 -0
- shared/models/drift_models.py +24 -0
- shared/models/embedding_payload.py +45 -0
- shared/models/execution_models.py +71 -0
- shared/models/pattern_graph.py +62 -0
- shared/models/prompt_model.py +244 -0
- shared/models/refusal_result.py +294 -0
- shared/models/remediation.py +35 -0
- shared/models/validation_result.py +34 -0
- shared/models/vector_models.py +62 -0
- shared/models/workflow_models.py +242 -0
- shared/path_resolver.py +408 -0
- shared/path_utils.py +60 -0
- shared/processors/base_processor.py +171 -0
- shared/processors/yaml_processor.py +72 -0
- shared/protocols/__init__.py +21 -0
- shared/protocols/brain_services.py +35 -0
- shared/protocols/cognitive.py +35 -0
- shared/protocols/executor.py +47 -0
- shared/protocols/interpreter.py +24 -0
- shared/protocols/knowledge.py +21 -0
- shared/protocols/llm.py +25 -0
- shared/protocols/typer_protocols.py +37 -0
- shared/time.py +18 -0
- shared/universal.py +43 -0
- shared/utils/__init__.py +81 -0
- shared/utils/audit_grouping.py +50 -0
- shared/utils/common_knowledge.py +82 -0
- shared/utils/domain_mapper.py +61 -0
- shared/utils/embedding_utils.py +182 -0
- shared/utils/glob_match.py +93 -0
- shared/utils/header_tools.py +177 -0
- shared/utils/parallel_processor.py +60 -0
- shared/utils/parsing.py +189 -0
- shared/utils/path_utils.py +268 -0
- shared/utils/subprocess_utils.py +87 -0
- shared/workers/__init__.py +19 -0
- shared/workers/base.py +533 -0
- shared/workers/declaration_validator.py +124 -0
- shared/workers/loop_hold_telemetry.py +210 -0
- shared/workers/schedule.py +123 -0
- will/__init__.py +4 -0
- will/agents/__init__.py +4 -0
- will/agents/base_planner.py +133 -0
- will/agents/code_generation/__init__.py +15 -0
- will/agents/code_generation/code_generator.py +247 -0
- will/agents/code_generation/context_formatters.py +99 -0
- will/agents/code_generation/correction_engine.py +157 -0
- will/agents/code_generation/extraction.py +165 -0
- will/agents/code_generation/pattern_validator.py +264 -0
- will/agents/code_generation/prompt_builders.py +209 -0
- will/agents/coder_agent.py +229 -0
- will/agents/coder_agent_refusal_handler.py +168 -0
- will/agents/cognitive_orchestrator.py +152 -0
- will/agents/conversational/__init__.py +13 -0
- will/agents/conversational/agent.py +271 -0
- will/agents/conversational/factory.py +72 -0
- will/agents/conversational/helpers.py +116 -0
- will/agents/execution_agent.py +294 -0
- will/agents/governance_mixin.py +132 -0
- will/agents/planner_agent.py +261 -0
- will/agents/resource_selector.py +228 -0
- will/agents/strategic_auditor/__init__.py +15 -0
- will/agents/strategic_auditor/agent.py +199 -0
- will/agents/strategic_auditor/context_gatherer.py +586 -0
- will/agents/strategic_auditor/effects.py +136 -0
- will/agents/strategic_auditor/models.py +61 -0
- will/agents/strategic_auditor/reasoning.py +169 -0
- will/agents/tagger_agent.py +294 -0
- will/agents/traced_agent_mixin.py +33 -0
- will/autonomy/__init__.py +20 -0
- will/autonomy/autonomous_developer.py +127 -0
- will/autonomy/proposal.py +585 -0
- will/autonomy/proposal_execution_pipeline.py +264 -0
- will/autonomy/proposal_executor.py +410 -0
- will/autonomy/proposal_mapper.py +187 -0
- will/autonomy/proposal_repository.py +118 -0
- will/autonomy/proposal_service.py +251 -0
- will/autonomy/proposal_state_manager.py +239 -0
- will/deciders/__init__.py +9 -0
- will/deciders/governance_decider.py +207 -0
- will/governance/__init__.py +13 -0
- will/governance/audit_remediation_runner.py +197 -0
- will/governance/audit_runner.py +368 -0
- will/governance/census_runner.py +278 -0
- will/governance/coverage_runner.py +489 -0
- will/governance/daemon_runner.py +164 -0
- will/governance/fix_runner.py +693 -0
- will/governance/inspect_runner.py +521 -0
- will/governance/integrity_runner.py +66 -0
- will/governance/lint_runner.py +93 -0
- will/governance/refactor_runner.py +372 -0
- will/governance/sync_runner.py +186 -0
- will/interpreters/__init__.py +44 -0
- will/interpreters/cli_args_interpreter.py +106 -0
- will/interpreters/natural_language_interpreter.py +276 -0
- will/interpreters/request_interpreter.py +126 -0
- will/lifecycle/__init__.py +12 -0
- will/lifecycle/integration_runner.py +54 -0
- will/maintenance/metadata_scribe_service.py +64 -0
- will/orchestration/__init__.py +4 -0
- will/orchestration/cognitive_service.py +185 -0
- will/orchestration/decision_tracer.py +257 -0
- will/orchestration/intent_alignment.py +59 -0
- will/orchestration/intent_guard.py +20 -0
- will/orchestration/phase_registry.py +92 -0
- will/orchestration/process_orchestrator.py +270 -0
- will/orchestration/prompt_pipeline.py +174 -0
- will/orchestration/remediation_orchestrator.py +292 -0
- will/orchestration/self_correction_engine.py +154 -0
- will/orchestration/validation_pipeline.py +45 -0
- will/orchestration/workflow_orchestrator.py +277 -0
- will/phases/__init__.py +24 -0
- will/phases/audit_phase.py +152 -0
- will/phases/canary/pytest_runner.py +156 -0
- will/phases/canary/result_builder.py +130 -0
- will/phases/canary/test_discovery.py +104 -0
- will/phases/canary_validation_phase.py +188 -0
- will/phases/code_generation/artifact_saver.py +175 -0
- will/phases/code_generation/code_sensor.py +117 -0
- will/phases/code_generation/file_path_extractor.py +53 -0
- will/phases/code_generation/work_directory_manager.py +83 -0
- will/phases/code_generation_phase.py +480 -0
- will/phases/execution_phase.py +179 -0
- will/phases/interpret_phase.py +266 -0
- will/phases/load_phase.py +102 -0
- will/phases/parse_phase.py +117 -0
- will/phases/planning_phase.py +182 -0
- will/phases/runtime_phase.py +112 -0
- will/phases/sandbox_validation_phase.py +130 -0
- will/phases/style_check_phase.py +209 -0
- will/phases/test_generation_phase.py +159 -0
- will/self_healing/alignment/persistence.py +53 -0
- will/self_healing/alignment/sandbox.py +51 -0
- will/self_healing/alignment/specialists.py +165 -0
- will/self_healing/alignment_orchestrator.py +140 -0
- will/self_healing/audit_remediation_service.py +199 -0
- will/self_healing/batch_remediation_service.py +280 -0
- will/self_healing/capability_reconciliation_service.py +96 -0
- will/self_healing/capability_tagging_service.py +224 -0
- will/self_healing/clarity_service.py +204 -0
- will/self_healing/complexity_service.py +260 -0
- will/self_healing/context_aware_test_generator.py +298 -0
- will/self_healing/coverage_remediation_service.py +97 -0
- will/self_healing/coverage_watcher.py +192 -0
- will/self_healing/enrichment_service.py +211 -0
- will/self_healing/linelength_service.py +168 -0
- will/self_healing/modularity_remediation_service.py +203 -0
- will/self_healing/remediation_evidence_writer.py +144 -0
- will/self_healing/remediation_executor.py +113 -0
- will/self_healing/remediation_interpretation/__init__.py +1 -0
- will/self_healing/remediation_interpretation/file_context_assembler.py +383 -0
- will/self_healing/remediation_interpretation/file_role_detector.py +599 -0
- will/self_healing/remediation_interpretation/finding_normalizer.py +221 -0
- will/self_healing/remediation_interpretation/models.py +198 -0
- will/self_healing/remediation_interpretation/reasoning_brief_builder.py +235 -0
- will/self_healing/remediation_interpretation/responsibility_extractor.py +421 -0
- will/self_healing/remediation_interpretation/service.py +202 -0
- will/self_healing/remediation_interpretation/strategy_catalog.py +252 -0
- will/self_healing/remediation_interpretation/strategy_selector.py +395 -0
- will/self_healing/remediation_pattern_matcher.py +126 -0
- will/self_healing/simple_test_generator.py +252 -0
- will/self_healing/single_file_remediation.py +137 -0
- will/self_healing/test_generation/automatic_repair.py +377 -0
- will/self_healing/test_generation/code_extractor.py +238 -0
- will/self_healing/test_generation/context_builder.py +140 -0
- will/self_healing/test_generation/executor.py +64 -0
- will/self_healing/test_generation/failure_parser.py +37 -0
- will/self_healing/test_generation/generation_workflow.py +140 -0
- will/self_healing/test_generation/generator.py +283 -0
- will/self_healing/test_generation/llm_correction.py +160 -0
- will/self_healing/test_generation/repair_workflow.py +128 -0
- will/self_healing/test_generation/single_test_fixer.py +77 -0
- will/self_healing/test_generation/test_extractor.py +50 -0
- will/self_healing/test_generation/test_scorer.py +53 -0
- will/self_healing/test_generation/test_validator.py +64 -0
- will/self_healing/test_generator.py +12 -0
- will/strategists/__init__.py +46 -0
- will/strategists/base_strategist.py +29 -0
- will/strategists/clarity_strategist.py +55 -0
- will/strategists/complexity_strategist.py +55 -0
- will/strategists/fix_strategist.py +467 -0
- will/strategists/sync_strategist.py +369 -0
- will/strategists/test_strategist.py +140 -0
- will/strategists/validation_strategist.py +315 -0
- will/test_generation/__init__.py +46 -0
- will/test_generation/adaptive_test_generator.py +123 -0
- will/test_generation/artifacts.py +102 -0
- will/test_generation/harness_detection.py +103 -0
- will/test_generation/helpers/__init__.py +14 -0
- will/test_generation/helpers/context_extractor.py +100 -0
- will/test_generation/helpers/test_executor.py +230 -0
- will/test_generation/llm_output.py +62 -0
- will/test_generation/models.py +25 -0
- will/test_generation/persistence.py +248 -0
- will/test_generation/phases/__init__.py +16 -0
- will/test_generation/phases/generation_phase.py +150 -0
- will/test_generation/phases/load_phase.py +53 -0
- will/test_generation/phases/parse_phase.py +50 -0
- will/test_generation/prompt_engine.py +123 -0
- will/test_generation/result_aggregator.py +73 -0
- will/test_generation/sandbox.py +203 -0
- will/test_generation/strategy_link.py +56 -0
- will/test_generation/test_extractor.py +140 -0
- will/test_generation/validation.py +89 -0
- will/tools/__init__.py +13 -0
- will/tools/anchor_builder.py +111 -0
- will/tools/anchor_search.py +73 -0
- will/tools/anchors/discovery.py +55 -0
- will/tools/anchors/storage.py +32 -0
- will/tools/architectural_context_builder.py +94 -0
- will/tools/cognitive_toolbox.py +47 -0
- will/tools/context/code_snippet_extractor.py +83 -0
- will/tools/context/embedding_search.py +76 -0
- will/tools/context/formatter.py +87 -0
- will/tools/context/models.py +38 -0
- will/tools/context/query_builder.py +42 -0
- will/tools/context/retriever.py +182 -0
- will/tools/context/standards.py +53 -0
- will/tools/file_navigator.py +180 -0
- will/tools/layers.py +31 -0
- will/tools/module_anchor_generator.py +137 -0
- will/tools/module_descriptor.py +154 -0
- will/tools/policy_vectorizer.py +184 -0
- will/tools/symbol_finder.py +188 -0
- will/tools/tool_generator.py +103 -0
- will/workers/audit_ingest_worker.py +207 -0
- will/workers/audit_violation_filter.py +108 -0
- will/workers/audit_violation_normalizer.py +108 -0
- will/workers/audit_violation_sensor.py +370 -0
- will/workers/blackboard_shop_manager.py +280 -0
- will/workers/capability_tagger.py +153 -0
- will/workers/circuit_breaker.py +335 -0
- will/workers/coherence_sensor.py +212 -0
- will/workers/commit_reachability_auditor.py +135 -0
- will/workers/db_sync_worker.py +96 -0
- will/workers/governance_embedding/__init__.py +9 -0
- will/workers/governance_embedding/governance_embedder_worker.py +189 -0
- will/workers/intent_inspector.py +599 -0
- will/workers/observer_worker.py +158 -0
- will/workers/prompt_extractor_worker.py +241 -0
- will/workers/proposal_consumer_effects.py +216 -0
- will/workers/proposal_consumer_revival.py +131 -0
- will/workers/proposal_consumer_worker.py +271 -0
- will/workers/proposal_pipeline_shop_manager.py +273 -0
- will/workers/repo_crawler.py +171 -0
- will/workers/repo_embedding/__init__.py +18 -0
- will/workers/repo_embedding/helpers.py +245 -0
- will/workers/repo_embedding/repo_embedder_workers.py +163 -0
- will/workers/test_coverage_sensor.py +208 -0
- will/workers/test_remediator/__init__.py +12 -0
- will/workers/test_remediator/_operations.py +295 -0
- will/workers/test_remediator/worker.py +187 -0
- will/workers/test_runner_sensor.py +430 -0
- will/workers/violation_executor.py +496 -0
- will/workers/violation_remediator.py +394 -0
- will/workers/violation_remediator_blackboard.py +225 -0
- will/workers/violation_remediator_body/__init__.py +12 -0
- will/workers/violation_remediator_body/blackboard.py +139 -0
- will/workers/violation_remediator_body/ceremony.py +154 -0
- will/workers/violation_remediator_body/context.py +70 -0
- will/workers/violation_remediator_body/llm.py +112 -0
- will/workers/violation_remediator_body/models.py +35 -0
- will/workers/violation_remediator_body/worker.py +518 -0
- will/workers/violation_remediator_proposal.py +328 -0
- will/workers/worker_shop_manager.py +244 -0
- will/workflows/__init__.py +23 -0
- will/workflows/dev_sync_reporter.py +274 -0
- will/workflows/dev_sync_workflow.py +118 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# src/shared/processors/yaml_processor.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
YAML processor implementing BaseProcessor interface.
|
|
5
|
+
|
|
6
|
+
Eliminates AST duplication detected by purity.no_ast_duplication rule.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import json
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
import yaml
|
|
15
|
+
|
|
16
|
+
from shared.processors.base_processor import BaseProcessor
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# ID: f9d8e7c6-b5a4-9382-7160-5e4d3c2b1a09
|
|
20
|
+
class YAMLProcessor(BaseProcessor):
|
|
21
|
+
"""
|
|
22
|
+
Centralized YAML processor for constitutional file operations.
|
|
23
|
+
|
|
24
|
+
Implements BaseProcessor template methods using yaml module.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# ID: ccde777c-d73f-4530-8b20-68b35a955416
|
|
28
|
+
def _deserialize(self, file_handle: Any) -> dict[str, Any] | None:
|
|
29
|
+
"""Deserialize using yaml.safe_load()."""
|
|
30
|
+
return yaml.safe_load(file_handle)
|
|
31
|
+
|
|
32
|
+
# ID: 8355f747-02fe-42c2-b9bb-d1a1c326baa6
|
|
33
|
+
def _validate_data(self, data: Any) -> bool:
|
|
34
|
+
"""
|
|
35
|
+
Validate YAML-serializable data.
|
|
36
|
+
|
|
37
|
+
Checks that data can be safely serialized to YAML.
|
|
38
|
+
"""
|
|
39
|
+
try:
|
|
40
|
+
yaml.safe_dump(data)
|
|
41
|
+
return True
|
|
42
|
+
except (yaml.YAMLError, TypeError):
|
|
43
|
+
return False
|
|
44
|
+
|
|
45
|
+
# ID: f2a3b4c5-d6e7-8f9a-0b1c-2d3e4f5a6b7c
|
|
46
|
+
def _format_name(self) -> str:
|
|
47
|
+
"""Return format name for logging."""
|
|
48
|
+
return "YAML"
|
|
49
|
+
|
|
50
|
+
# ID: a3b4c5d6-e7f8-9a0b-1c2d-3e4f5a6b7c8d
|
|
51
|
+
def dump_yaml(self, data: Any) -> str:
|
|
52
|
+
"""
|
|
53
|
+
Dump data to a JSON string.
|
|
54
|
+
|
|
55
|
+
Used for vectorization and creating text representations of
|
|
56
|
+
structured data.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
data: Data to dump
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
JSON string
|
|
63
|
+
|
|
64
|
+
NOTE: Method name kept as dump_yaml for backward compatibility,
|
|
65
|
+
but returns JSON for consistent vectorization format.
|
|
66
|
+
"""
|
|
67
|
+
return json.dumps(data, indent=2, ensure_ascii=False)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# Module-level instances for backward compatibility
|
|
71
|
+
yaml_processor = YAMLProcessor(allow_duplicates=True)
|
|
72
|
+
strict_yaml_processor = YAMLProcessor(allow_duplicates=False)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# src/shared/protocols/__init__.py
|
|
2
|
+
"""
|
|
3
|
+
Constitutional Protocols Hub.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from .cognitive import CognitiveProtocol
|
|
9
|
+
from .executor import ActionExecutorProtocol
|
|
10
|
+
from .interpreter import TaskStructureProtocol
|
|
11
|
+
from .knowledge import SessionProviderProtocol
|
|
12
|
+
from .llm import LLMClientProtocol
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
all = [
|
|
16
|
+
"CognitiveProtocol",
|
|
17
|
+
"ActionExecutorProtocol",
|
|
18
|
+
"SessionProviderProtocol",
|
|
19
|
+
"LLMClientProtocol",
|
|
20
|
+
"TaskStructureProtocol",
|
|
21
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# src/shared/protocols/brain_services.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Brain Services Provider Protocol.
|
|
5
|
+
|
|
6
|
+
Defines the interface for resolving cognitive_service and qdrant_service
|
|
7
|
+
at runtime. Allows shared-layer infrastructure (notably ContextService)
|
|
8
|
+
to delegate service resolution without importing directly from body or
|
|
9
|
+
will. The body's ServiceRegistry structurally satisfies this protocol.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import Any, Protocol, runtime_checkable
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@runtime_checkable
|
|
18
|
+
# ID: 50fefd28-6dcb-4105-8c9c-973a9bdb2100
|
|
19
|
+
class BrainServicesProvider(Protocol):
|
|
20
|
+
"""
|
|
21
|
+
Structural interface for the runtime service resolver.
|
|
22
|
+
|
|
23
|
+
Implementations expose lazy async getters for the cognitive and vector
|
|
24
|
+
services so callers can defer resolution past sync construction boundaries.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# ID: 97faba28-2ce5-4d35-8c70-a00f3f0d17b6
|
|
28
|
+
async def get_cognitive_service(self) -> Any:
|
|
29
|
+
"""Return the initialized cognitive service instance."""
|
|
30
|
+
...
|
|
31
|
+
|
|
32
|
+
# ID: 075d81b3-40b2-4431-ac99-381e3fb1ecc8
|
|
33
|
+
async def get_qdrant_service(self) -> Any:
|
|
34
|
+
"""Return the initialized vector (Qdrant) service instance."""
|
|
35
|
+
...
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# src/shared/protocols/cognitive.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Cognitive Service Protocol - The Reasoning Contract.
|
|
5
|
+
|
|
6
|
+
Defines the interface for Large Language Model (LLM) interactions.
|
|
7
|
+
Allows agents to request reasoning and embeddings without being
|
|
8
|
+
coupled to specific provider implementations or database logic.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import Any, Protocol, runtime_checkable
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@runtime_checkable
|
|
17
|
+
# ID: f9cf5915-0c9d-4f7b-8915-6a1ceedf6c6f
|
|
18
|
+
class CognitiveProtocol(Protocol):
|
|
19
|
+
"""
|
|
20
|
+
Structural interface for the central cognitive facade.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
# ID: 216dfad8-24c9-4861-9349-d7092d1ee76a
|
|
24
|
+
async def aget_client_for_role(self, role_name: str, **kwargs: Any) -> Any:
|
|
25
|
+
"""
|
|
26
|
+
Return an LLM client configured for a specific cognitive role.
|
|
27
|
+
"""
|
|
28
|
+
...
|
|
29
|
+
|
|
30
|
+
# ID: 9bd4942a-b642-4262-89f8-936a16bcf103
|
|
31
|
+
async def get_embedding_for_code(self, source_code: str) -> list[float] | None:
|
|
32
|
+
"""
|
|
33
|
+
Generate a semantic embedding vector for a piece of text.
|
|
34
|
+
"""
|
|
35
|
+
...
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# src/shared/protocols/executor.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Action Executor Protocol - The Universal Mutation Contract.
|
|
5
|
+
|
|
6
|
+
This protocol defines the "shape" of the component responsible for
|
|
7
|
+
executing atomic actions. It allows the Will layer (Agents) to
|
|
8
|
+
request system changes without depending on the Body layer's
|
|
9
|
+
implementation details.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import Any, Protocol, runtime_checkable
|
|
15
|
+
|
|
16
|
+
from shared.action_types import ActionResult
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@runtime_checkable
|
|
20
|
+
# ID: 9b980986-296c-4156-8818-0ccd98a38254
|
|
21
|
+
class ActionExecutorProtocol(Protocol):
|
|
22
|
+
"""
|
|
23
|
+
Structural interface for the universal action execution gateway.
|
|
24
|
+
|
|
25
|
+
Any class that implements this 'execute' method can be used by
|
|
26
|
+
CORE agents to perform governed mutations.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
# ID: a0e7d2d1-1961-4024-ab89-55508e815ec2
|
|
30
|
+
async def execute(
|
|
31
|
+
self,
|
|
32
|
+
action_id: str,
|
|
33
|
+
write: bool = False,
|
|
34
|
+
**params: Any,
|
|
35
|
+
) -> ActionResult:
|
|
36
|
+
"""
|
|
37
|
+
Execute an action with full constitutional governance.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
action_id: Registered action ID (e.g., "fix.format")
|
|
41
|
+
write: Whether to apply changes (False = dry-run)
|
|
42
|
+
**params: Action-specific parameters
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
ActionResult with execution details and status
|
|
46
|
+
"""
|
|
47
|
+
...
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# src/shared/protocols/interpreter.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Protocol defining the shape of Task Structures.
|
|
5
|
+
|
|
6
|
+
Allows Mind layer to reason about intent without importing Will.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import Any, Protocol, runtime_checkable
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@runtime_checkable
|
|
15
|
+
# ID: 4dd18afc-de7e-4703-abf8-d815ce21c874
|
|
16
|
+
class TaskStructureProtocol(Protocol):
|
|
17
|
+
"""The formal blueprint for a parsed user task."""
|
|
18
|
+
|
|
19
|
+
task_type: Any
|
|
20
|
+
intent: str
|
|
21
|
+
targets: list[str]
|
|
22
|
+
constraints: dict[str, Any]
|
|
23
|
+
context: dict[str, Any]
|
|
24
|
+
confidence: float
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# src/shared/protocols/knowledge.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Protocol defining the shape of a Session provider.
|
|
5
|
+
|
|
6
|
+
Allows Mind layer to access DB infrastructure via injection.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from contextlib import AbstractAsyncContextManager
|
|
12
|
+
from typing import Any, Protocol, runtime_checkable
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@runtime_checkable
|
|
16
|
+
# ID: 2331a8d3-36e3-4bf3-aa76-b4fbbb110194
|
|
17
|
+
class SessionProviderProtocol(Protocol):
|
|
18
|
+
"""The formal blueprint for getting a DB session."""
|
|
19
|
+
|
|
20
|
+
# ID: 32604693-5d46-4f66-b006-9704313f6681
|
|
21
|
+
def session(self) -> AbstractAsyncContextManager[Any]: ...
|
shared/protocols/llm.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# src/shared/protocols/llm.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Protocol defining the shape of an LLM Client.
|
|
5
|
+
|
|
6
|
+
Allows Mind/Will layers to use AI without importing Body implementations.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import Protocol, runtime_checkable
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@runtime_checkable
|
|
15
|
+
# ID: eda72309-ce4a-43a7-b25b-edce15912fad
|
|
16
|
+
class LLMClientProtocol(Protocol):
|
|
17
|
+
"""The formal blueprint for an LLM requester."""
|
|
18
|
+
|
|
19
|
+
# ID: e5c09d35-665a-4b15-922d-5486579a4d09
|
|
20
|
+
async def invoke_semantic_check(
|
|
21
|
+
self,
|
|
22
|
+
prompt: str,
|
|
23
|
+
system_prompt: str = "You are a helpful assistant.",
|
|
24
|
+
max_tokens: int | None = None,
|
|
25
|
+
) -> str: ...
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# src/shared/protocols/typer_protocols.py
|
|
2
|
+
"""Structural protocols for Typer CLI introspection.
|
|
3
|
+
|
|
4
|
+
Single source of truth for TyperCommandLike, TyperGroupLike, TyperAppLike.
|
|
5
|
+
Consumed by:
|
|
6
|
+
- body.maintenance.command_sync_service
|
|
7
|
+
- cli.logic.diagnostics
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from typing import Any, Protocol
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# ID: 10bc5565-2f20-4497-8865-c36de47dcb48
|
|
16
|
+
class TyperCommandLike(Protocol):
|
|
17
|
+
"""Structural protocol for a Typer registered command."""
|
|
18
|
+
|
|
19
|
+
name: str | None
|
|
20
|
+
callback: Any
|
|
21
|
+
help: str | None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# ID: d01d9def-d26d-4c50-84f6-4ecc6921c9a1
|
|
25
|
+
class TyperGroupLike(Protocol):
|
|
26
|
+
"""Structural protocol for a Typer registered group."""
|
|
27
|
+
|
|
28
|
+
name: str | None
|
|
29
|
+
typer_instance: Any
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# ID: f9bd5ff6-605c-4575-b5c6-dc61f23bf964
|
|
33
|
+
class TyperAppLike(Protocol):
|
|
34
|
+
"""Structural protocol for a Typer application."""
|
|
35
|
+
|
|
36
|
+
registered_commands: list[TyperCommandLike]
|
|
37
|
+
registered_groups: list[TyperGroupLike]
|
shared/time.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# src/shared/time.py
|
|
2
|
+
"""
|
|
3
|
+
Lightweight time utilities shared across services.
|
|
4
|
+
Implements the canonical capability for a UTC ISO timestamp function.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from datetime import UTC, datetime
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# ID: 4f686bb3-7252-4f74-8e7c-d38a6ec85dc6
|
|
13
|
+
def now_iso() -> str:
|
|
14
|
+
"""Return current UTC timestamp in ISO 8601 format."""
|
|
15
|
+
return datetime.now(UTC).isoformat()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# A trivial change for testing.
|
shared/universal.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# src/shared/universal.py
|
|
2
|
+
"""
|
|
3
|
+
Canonical hub for ultra-reusable micro-helpers.
|
|
4
|
+
|
|
5
|
+
This module defines the **public, curated surface** of helpers that are truly
|
|
6
|
+
universal across the CORE codebase — tiny, pure, side-effect-free utilities
|
|
7
|
+
that stabilize patterns and reduce duplication.
|
|
8
|
+
|
|
9
|
+
Rules for anything placed here:
|
|
10
|
+
- MUST be pure (no I/O, no logging, no exceptions for control-flow).
|
|
11
|
+
- MUST be simple, composable, and stable.
|
|
12
|
+
- MUST NOT depend on ANYTHING outside the `shared/` namespace.
|
|
13
|
+
- SHOULD be broadly applicable across features, agents, and governance.
|
|
14
|
+
- SHOULD be preferred over re-creating ad-hoc helpers in features/.
|
|
15
|
+
|
|
16
|
+
This module re-exports helpers defined under `shared.utils.common_knowledge`.
|
|
17
|
+
Agents and developers MUST import through `shared.universal` instead of the
|
|
18
|
+
implementation module.
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
from shared.universal import normalize_whitespace
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from __future__ import annotations
|
|
25
|
+
|
|
26
|
+
from shared.utils.common_knowledge import (
|
|
27
|
+
collapse_blank_lines,
|
|
28
|
+
ensure_trailing_newline,
|
|
29
|
+
get_deterministic_id,
|
|
30
|
+
normalize_text,
|
|
31
|
+
normalize_whitespace,
|
|
32
|
+
safe_truncate,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
__all__ = [
|
|
37
|
+
"collapse_blank_lines",
|
|
38
|
+
"ensure_trailing_newline",
|
|
39
|
+
"get_deterministic_id",
|
|
40
|
+
"normalize_text",
|
|
41
|
+
"normalize_whitespace",
|
|
42
|
+
"safe_truncate",
|
|
43
|
+
]
|
shared/utils/__init__.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# src/shared/utils/__init__.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Shared utility functions and helpers.
|
|
5
|
+
|
|
6
|
+
Pure, stateless functions with no side effects.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from collections.abc import Callable
|
|
12
|
+
from datetime import datetime
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# ID: fca84726-8bb7-4472-80cf-9d847144a1b2
|
|
17
|
+
def create_greeting(name: str, *, time_of_day: str | None = None) -> str:
|
|
18
|
+
"""
|
|
19
|
+
Create a personalized greeting message.
|
|
20
|
+
"""
|
|
21
|
+
if not name or not isinstance(name, str):
|
|
22
|
+
raise ValueError("Name must be a non-empty string")
|
|
23
|
+
|
|
24
|
+
if time_of_day is None:
|
|
25
|
+
current_hour = datetime.now().hour
|
|
26
|
+
if current_hour < 12:
|
|
27
|
+
time_of_day = "morning"
|
|
28
|
+
elif current_hour < 17:
|
|
29
|
+
time_of_day = "afternoon"
|
|
30
|
+
else:
|
|
31
|
+
time_of_day = "evening"
|
|
32
|
+
|
|
33
|
+
time_greetings = {
|
|
34
|
+
"morning": "Good morning",
|
|
35
|
+
"afternoon": "Good afternoon",
|
|
36
|
+
"evening": "Good evening",
|
|
37
|
+
"night": "Good night",
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
base_greeting = time_greetings.get(time_of_day.lower(), "Hello")
|
|
41
|
+
return f"{base_greeting}, {name}!"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# ID: ca71dd28-0aff-45c8-bba2-f4d12e7bcb7c
|
|
45
|
+
def create_greeting_action(names: list[str], *, write: bool = False) -> list[str]:
|
|
46
|
+
"""
|
|
47
|
+
Action pattern for creating multiple greetings.
|
|
48
|
+
"""
|
|
49
|
+
if not isinstance(names, list):
|
|
50
|
+
raise TypeError("names must be a list")
|
|
51
|
+
|
|
52
|
+
greetings = []
|
|
53
|
+
try:
|
|
54
|
+
for name in names:
|
|
55
|
+
if not isinstance(name, str):
|
|
56
|
+
raise TypeError(f"All names must be strings. Found: {type(name)}")
|
|
57
|
+
greetings.append(create_greeting(name))
|
|
58
|
+
|
|
59
|
+
if write:
|
|
60
|
+
pass
|
|
61
|
+
return greetings
|
|
62
|
+
|
|
63
|
+
except Exception as e:
|
|
64
|
+
raise
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# ID: d8b9f0cb-037b-47ed-b0c2-b280b1d15ad2
|
|
68
|
+
def format_greeting_for_output(greeting: str, style: str = "standard") -> str:
|
|
69
|
+
"""
|
|
70
|
+
Format a greeting for different output styles.
|
|
71
|
+
"""
|
|
72
|
+
styles: dict[str, Callable[[str], str]] = {
|
|
73
|
+
"standard": lambda g: g,
|
|
74
|
+
"uppercase": lambda g: g.upper(),
|
|
75
|
+
"lowercase": lambda g: g.lower(),
|
|
76
|
+
"excited": lambda g: g.replace("!", "!!!") if "!" in g else g + "!!!",
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
formatter = styles.get(style, styles["standard"])
|
|
80
|
+
# FIXED: Added cast to str for MyPy
|
|
81
|
+
return cast(str, formatter(greeting))
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# src/shared/utils/audit_grouping.py
|
|
2
|
+
## src/shared/utils/audit_grouping.py
|
|
3
|
+
"""Utilities for grouping and analyzing audit findings."""
|
|
4
|
+
|
|
5
|
+
from collections import defaultdict
|
|
6
|
+
|
|
7
|
+
from shared.models import AuditFinding, AuditSeverity
|
|
8
|
+
from shared.models.audit_rendering import SeverityGroup
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
SEVERITY_ORDER: dict[AuditSeverity, int] = {
|
|
12
|
+
AuditSeverity.BLOCK: 5,
|
|
13
|
+
AuditSeverity.HIGH: 4,
|
|
14
|
+
AuditSeverity.MEDIUM: 3,
|
|
15
|
+
AuditSeverity.LOW: 2,
|
|
16
|
+
AuditSeverity.INFO: 1,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# ID: 9b328c94-6552-41e2-9a2e-46419693f6da
|
|
21
|
+
def group_findings(findings: list[AuditFinding]) -> list[SeverityGroup]:
|
|
22
|
+
"""Group findings by severity and return sorted list of groups (descending severity).
|
|
23
|
+
|
|
24
|
+
Returns new lists/tuples; no in-place mutation.
|
|
25
|
+
"""
|
|
26
|
+
groups_dict: dict[AuditSeverity, list[AuditFinding]] = defaultdict(list)
|
|
27
|
+
for finding in findings:
|
|
28
|
+
groups_dict[finding.severity].append(finding)
|
|
29
|
+
|
|
30
|
+
sorted_severities = sorted(
|
|
31
|
+
groups_dict,
|
|
32
|
+
key=lambda s: SEVERITY_ORDER.get(s, -1),
|
|
33
|
+
reverse=True,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
groups: list[SeverityGroup] = []
|
|
37
|
+
for sev in sorted_severities:
|
|
38
|
+
findings_list = groups_dict[sev]
|
|
39
|
+
groups.append(SeverityGroup(sev, tuple(findings_list)))
|
|
40
|
+
return groups
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# ID: f845871b-2720-4de3-a92d-29c7d14f9682
|
|
44
|
+
def get_max_severity(groups: list[SeverityGroup]) -> AuditSeverity | None:
|
|
45
|
+
"""Get highest severity from non-empty groups."""
|
|
46
|
+
non_empty_groups = [g for g in groups if g.count > 0]
|
|
47
|
+
if not non_empty_groups:
|
|
48
|
+
return None
|
|
49
|
+
max_group = max(non_empty_groups, key=lambda g: SEVERITY_ORDER.get(g.severity, -1))
|
|
50
|
+
return max_group.severity
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# src/shared/utils/common_knowledge.py
|
|
2
|
+
"""
|
|
3
|
+
Common Knowledge Helpers
|
|
4
|
+
|
|
5
|
+
This module defines the implementation of small, pure, general-purpose utilities
|
|
6
|
+
used across CORE. These helpers feed the curated surface exposed through the
|
|
7
|
+
`shared.universal` module.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import uuid
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# ID: 88db4d40-e91a-4d5e-b627-c215ea063f2e
|
|
16
|
+
def normalize_whitespace(text: str) -> str:
|
|
17
|
+
"""
|
|
18
|
+
Collapse consecutive whitespace characters (including tabs/newlines)
|
|
19
|
+
into a single space, preserving readable semantics.
|
|
20
|
+
"""
|
|
21
|
+
return " ".join(text.split())
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Backwards-compatible alias.
|
|
25
|
+
# Explicitly aliased to avoid semantic duplication detection.
|
|
26
|
+
normalize_text = normalize_whitespace
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# ID: 6fca50dc-e2a4-4b44-ae52-cb599eaded0e
|
|
30
|
+
def collapse_blank_lines(text: str) -> str:
|
|
31
|
+
"""
|
|
32
|
+
Remove redundant blank lines while preserving paragraph separation.
|
|
33
|
+
"""
|
|
34
|
+
lines = text.splitlines()
|
|
35
|
+
result: list[str] = []
|
|
36
|
+
buffer_blank = False
|
|
37
|
+
|
|
38
|
+
for line in lines:
|
|
39
|
+
if not line.strip():
|
|
40
|
+
if not buffer_blank:
|
|
41
|
+
result.append("")
|
|
42
|
+
buffer_blank = True
|
|
43
|
+
else:
|
|
44
|
+
result.append(line)
|
|
45
|
+
buffer_blank = False
|
|
46
|
+
|
|
47
|
+
return "\n".join(result)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# ID: 23ad1f63-c768-4a4b-8f4c-41bbb6dbbb66
|
|
51
|
+
def ensure_trailing_newline(text: str) -> str:
|
|
52
|
+
"""
|
|
53
|
+
Ensure that a string ends with exactly one newline. Helps keep diffs minimal.
|
|
54
|
+
"""
|
|
55
|
+
return text.rstrip("\n") + "\n"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# ID: 0b51b893-0212-4037-8e6d-5af16677924c
|
|
59
|
+
def safe_truncate(text: str, max_chars: int) -> str:
|
|
60
|
+
"""
|
|
61
|
+
Truncate text safely to `max_chars`, preserving whole words where possible,
|
|
62
|
+
and adding '…' to indicate truncation.
|
|
63
|
+
"""
|
|
64
|
+
if len(text) <= max_chars:
|
|
65
|
+
return text
|
|
66
|
+
|
|
67
|
+
cut = text[:max_chars].rsplit(" ", 1)[0]
|
|
68
|
+
return cut + "…"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
# ID: 7cbb0bb7-3ba8-4b35-9b9d-9422541d25de
|
|
72
|
+
def get_deterministic_id(text: str) -> str:
|
|
73
|
+
"""
|
|
74
|
+
Generate a stable UUID from text using SHA-256 and UUID5.
|
|
75
|
+
|
|
76
|
+
This is CORE's universal identity function - all deterministic IDs
|
|
77
|
+
must be UUIDs to maintain constitutional consistency.
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
str: UUID string (e.g., "550e8400-e29b-41d4-a716-446655440000")
|
|
81
|
+
"""
|
|
82
|
+
return str(uuid.uuid5(uuid.NAMESPACE_URL, text))
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# src/shared/utils/domain_mapper.py
|
|
2
|
+
"""
|
|
3
|
+
Constitutional domain mapper - maps module paths to domains defined in Constitution.
|
|
4
|
+
This is the SINGLE SOURCE OF TRUTH for domain assignment.
|
|
5
|
+
|
|
6
|
+
UPDATE (Wave 1 Reorganization):
|
|
7
|
+
Supports both legacy 'features.X' and new layered 'body/will/mind.X' paths.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# src/shared/utils/domain_mapper.py
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# ID: a8fe04f1-60ec-4418-8727-2eaf690d1543
|
|
17
|
+
def map_module_to_domain(module_path: str) -> str:
|
|
18
|
+
"""
|
|
19
|
+
Maps a module path to its constitutional domain.
|
|
20
|
+
REFACTORED: Removed legacy 'features' prefixes.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
# AUTONOMY: Agent orchestration, decision-making, planning
|
|
24
|
+
if module_path.startswith("will.autonomy."):
|
|
25
|
+
return "autonomy"
|
|
26
|
+
if module_path.startswith("will."): # Primary catch-all for Agent logic
|
|
27
|
+
return "autonomy"
|
|
28
|
+
|
|
29
|
+
# CRATE_PROCESSING: External crate analysis
|
|
30
|
+
if module_path.startswith("body.crate_processing."):
|
|
31
|
+
return "crate_processing"
|
|
32
|
+
|
|
33
|
+
# GOVERNANCE: Constitutional enforcement, auditing, policy
|
|
34
|
+
if module_path.startswith(("mind.governance.", "mind.logic.engines.")):
|
|
35
|
+
return "governance"
|
|
36
|
+
|
|
37
|
+
# INTROSPECTION: Knowledge graph, vectorization, discovery
|
|
38
|
+
if module_path.startswith("body.introspection."):
|
|
39
|
+
return "introspection"
|
|
40
|
+
|
|
41
|
+
# MAINTENANCE: Database migrations, cleanup, sync
|
|
42
|
+
if module_path.startswith("body.maintenance."):
|
|
43
|
+
return "maintenance"
|
|
44
|
+
|
|
45
|
+
# OPERATIONS: CLI, API, infrastructure, shared
|
|
46
|
+
if module_path.startswith(("body.cli.", "body.operations.", "shared.", "api.")):
|
|
47
|
+
return "operations"
|
|
48
|
+
|
|
49
|
+
# PROJECT_LIFECYCLE: Bootstrap, scaffolding
|
|
50
|
+
if module_path.startswith("body.project_lifecycle."):
|
|
51
|
+
return "project_lifecycle"
|
|
52
|
+
|
|
53
|
+
# QUALITY: Code quality checks
|
|
54
|
+
if module_path.startswith("body.quality."):
|
|
55
|
+
return "quality"
|
|
56
|
+
|
|
57
|
+
# SELF_HEALING: Test generation, auto-remediation
|
|
58
|
+
if module_path.startswith(("body.self_healing.", "will.self_healing.")):
|
|
59
|
+
return "self_healing"
|
|
60
|
+
|
|
61
|
+
return "operations"
|