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,62 @@
|
|
|
1
|
+
# src/cli/resources/code/check_ui.py
|
|
2
|
+
"""
|
|
3
|
+
Code UI Compliance Action.
|
|
4
|
+
Ensures Body-layer modules are HEADLESS (no print, rich, or direct os.environ).
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import typer
|
|
10
|
+
from rich.console import Console
|
|
11
|
+
|
|
12
|
+
from api.cli import CoreApiClient
|
|
13
|
+
from cli.utils import core_command
|
|
14
|
+
|
|
15
|
+
from .hub import app
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
console = Console()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@app.command("check-ui")
|
|
22
|
+
@core_command(dangerous=True, requires_context=False)
|
|
23
|
+
# ID: 662d6bed-c6fc-4120-ae34-d9063f703994
|
|
24
|
+
async def check_ui_cmd(
|
|
25
|
+
ctx: typer.Context,
|
|
26
|
+
write: bool = typer.Option(
|
|
27
|
+
False, "--write", help="Use LLM to autonomously fix UI contract violations."
|
|
28
|
+
),
|
|
29
|
+
) -> None:
|
|
30
|
+
"""
|
|
31
|
+
Check and repair Body-layer UI contract violations.
|
|
32
|
+
|
|
33
|
+
Validates that logic in features/ and services/ does not use:
|
|
34
|
+
- print() or input()
|
|
35
|
+
- rich.console or formatting
|
|
36
|
+
- os.environ (must use shared.config.settings)
|
|
37
|
+
|
|
38
|
+
If --write is used, CORE invokes an AI specialist to refactor the
|
|
39
|
+
violating modules into a headless state.
|
|
40
|
+
"""
|
|
41
|
+
client = CoreApiClient()
|
|
42
|
+
if not write:
|
|
43
|
+
console.print("[bold cyan]🔍 Checking Body UI Contracts...[/bold cyan]")
|
|
44
|
+
result = await client.quality_body_ui()
|
|
45
|
+
if result.get("status") == "ok":
|
|
46
|
+
console.print("[green]✓ Body UI contracts clean.[/green]")
|
|
47
|
+
return
|
|
48
|
+
violations = result.get("violations", [])
|
|
49
|
+
console.print(f"\n[red]❌ Found {len(violations)} contract violations.[/red]")
|
|
50
|
+
console.print("[yellow]💡 Run with '--write' to auto-fix via LLM.[/yellow]")
|
|
51
|
+
raise typer.Exit(1)
|
|
52
|
+
console.print("[bold cyan]🔧 Refactoring UI leaks out of Body layer...[/bold cyan]")
|
|
53
|
+
initial = await client.run_fix("fix.body_ui", write=True)
|
|
54
|
+
run_id = initial.get("run_id")
|
|
55
|
+
if not run_id:
|
|
56
|
+
console.print(f"[red]fix.body_ui failed to dispatch: {initial}[/red]")
|
|
57
|
+
raise typer.Exit(1)
|
|
58
|
+
final = await client._poll_run(run_id)
|
|
59
|
+
if final.get("status") != "completed":
|
|
60
|
+
console.print(f"[red]fix.body_ui failed: {final.get('error') or final}[/red]")
|
|
61
|
+
raise typer.Exit(1)
|
|
62
|
+
console.print("[green]✓ fix.body_ui completed.[/green]")
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# src/cli/resources/code/clarity.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Code Clarity Resource Action.
|
|
5
|
+
Refactors Python code for improved readability using the V2.3 Adaptive Loop.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
|
|
13
|
+
import typer
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
|
|
17
|
+
from .hub import app
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from shared.context import CoreContext
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@app.command("clarity")
|
|
25
|
+
@core_command(dangerous=True, requires_context=True, confirmation=True)
|
|
26
|
+
# ID: fc72b260-ebc2-4ffc-9194-5e3e192f2a1f
|
|
27
|
+
async def clarity_cmd(
|
|
28
|
+
ctx: typer.Context,
|
|
29
|
+
file_path: Path = typer.Argument(
|
|
30
|
+
...,
|
|
31
|
+
help="Path to the Python file to refactor.",
|
|
32
|
+
exists=True,
|
|
33
|
+
dir_okay=False,
|
|
34
|
+
resolve_path=True,
|
|
35
|
+
),
|
|
36
|
+
write: bool = typer.Option(
|
|
37
|
+
False, "--write", help="Actually apply the refactoring to the file."
|
|
38
|
+
),
|
|
39
|
+
) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Refactor a file for clarity using the V2.3 Adaptive Loop.
|
|
42
|
+
|
|
43
|
+
This command uses a Cognitive Workflow (Analyze -> Strategize -> Refactor -> Evaluate).
|
|
44
|
+
It will only apply changes if the Evaluator proves the code is more readable.
|
|
45
|
+
"""
|
|
46
|
+
from will.self_healing.clarity_service import remediate_clarity
|
|
47
|
+
|
|
48
|
+
core_context: CoreContext = ctx.obj
|
|
49
|
+
|
|
50
|
+
# Execute the V2 Cognitive Workflow (Will Layer)
|
|
51
|
+
await remediate_clarity(context=core_context, file_path=file_path, write=write)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# src/cli/resources/code/complexity.py
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Code Complexity Resource Action.
|
|
5
|
+
Refactors complex code for better separation of concerns using V2.3 Adaptive Loop.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
|
|
13
|
+
import typer
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
|
|
17
|
+
from .hub import app
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from shared.context import CoreContext
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@app.command("complexity")
|
|
25
|
+
@core_command(dangerous=True, requires_context=True, confirmation=True)
|
|
26
|
+
# ID: 8608b515-e269-4f14-aefe-a8d0904fbcc2
|
|
27
|
+
async def complexity_cmd(
|
|
28
|
+
ctx: typer.Context,
|
|
29
|
+
file_path: Path = typer.Argument(
|
|
30
|
+
...,
|
|
31
|
+
help="Path to the file to refactor for complexity.",
|
|
32
|
+
exists=True,
|
|
33
|
+
dir_okay=False,
|
|
34
|
+
resolve_path=True,
|
|
35
|
+
),
|
|
36
|
+
write: bool = typer.Option(
|
|
37
|
+
False, "--write", help="Actually apply the refactoring to the file."
|
|
38
|
+
),
|
|
39
|
+
) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Identify and refactor complexity outliers using the V2.3 Adaptive Orchestrator.
|
|
42
|
+
|
|
43
|
+
Targets high cyclomatic complexity and 'God Methods' to improve modularity.
|
|
44
|
+
"""
|
|
45
|
+
# CONSTITUTIONAL FIX: V2.3 Roadmap-Compliant complexity remediation logic
|
|
46
|
+
from will.self_healing.complexity_service import remediate_complexity
|
|
47
|
+
|
|
48
|
+
core_context: CoreContext = ctx.obj
|
|
49
|
+
|
|
50
|
+
# This uses the high-resilience loop similar to 'code clarity'
|
|
51
|
+
await remediate_complexity(
|
|
52
|
+
context=core_context,
|
|
53
|
+
file_path=file_path,
|
|
54
|
+
write=write,
|
|
55
|
+
)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# src/cli/resources/code/docstrings.py
|
|
2
|
+
import typer
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
|
|
5
|
+
from api.cli import CoreApiClient
|
|
6
|
+
from cli.utils import core_command
|
|
7
|
+
from shared.cli.command_meta import CommandBehavior, CommandLayer, command_meta
|
|
8
|
+
|
|
9
|
+
from .hub import app
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
console = Console()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@app.command("docstrings")
|
|
16
|
+
@command_meta(
|
|
17
|
+
canonical_name="code.docstrings",
|
|
18
|
+
behavior=CommandBehavior.MUTATE,
|
|
19
|
+
layer=CommandLayer.WILL,
|
|
20
|
+
summary="Heal missing docstrings using constitutional reasoning.",
|
|
21
|
+
dangerous=True,
|
|
22
|
+
)
|
|
23
|
+
@core_command(dangerous=True, requires_context=False)
|
|
24
|
+
# ID: 9f0d0239-d29d-4dff-8c32-3fdecaa809e9
|
|
25
|
+
async def fix_docstrings_command(
|
|
26
|
+
ctx: typer.Context,
|
|
27
|
+
write: bool = typer.Option(False, "--write", help="Apply changes."),
|
|
28
|
+
limit: int = typer.Option(3, "--limit", help="Symbols to process."),
|
|
29
|
+
file: str | None = typer.Option(
|
|
30
|
+
None, "--file", help="Target a single file (repo-relative)."
|
|
31
|
+
),
|
|
32
|
+
) -> None:
|
|
33
|
+
"""Autonomously generate and inject missing docstrings using AI."""
|
|
34
|
+
client = CoreApiClient()
|
|
35
|
+
initial = await client.run_fix(
|
|
36
|
+
"fix.docstrings",
|
|
37
|
+
target_files=[file] if file else None,
|
|
38
|
+
write=write,
|
|
39
|
+
params={"limit": limit},
|
|
40
|
+
)
|
|
41
|
+
run_id = initial.get("run_id")
|
|
42
|
+
if not run_id:
|
|
43
|
+
console.print(f"[red]fix.docstrings failed to dispatch: {initial}[/red]")
|
|
44
|
+
raise typer.Exit(1)
|
|
45
|
+
final = await client._poll_run(run_id)
|
|
46
|
+
if final.get("status") != "completed":
|
|
47
|
+
console.print(
|
|
48
|
+
f"[red]fix.docstrings failed: {final.get('error') or final}[/red]"
|
|
49
|
+
)
|
|
50
|
+
raise typer.Exit(1)
|
|
51
|
+
console.print("[green]✓ fix.docstrings completed.[/green]")
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# src/cli/resources/code/fix_atomic.py
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
import typer
|
|
5
|
+
from rich.console import Console
|
|
6
|
+
|
|
7
|
+
from api.cli import CoreApiClient
|
|
8
|
+
from cli.utils import core_command
|
|
9
|
+
from shared.cli.command_meta import CommandBehavior, CommandLayer, command_meta
|
|
10
|
+
|
|
11
|
+
from .hub import app
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
console = Console()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@app.command("fix-atomic")
|
|
19
|
+
@command_meta(
|
|
20
|
+
canonical_name="code.fix-atomic",
|
|
21
|
+
behavior=CommandBehavior.MUTATE,
|
|
22
|
+
layer=CommandLayer.BODY,
|
|
23
|
+
summary="Heal violations in the Atomic Action pattern.",
|
|
24
|
+
dangerous=True,
|
|
25
|
+
)
|
|
26
|
+
@core_command(dangerous=True, requires_context=False)
|
|
27
|
+
# ID: 1a0797b9-e800-4783-9305-158b5f9247af
|
|
28
|
+
async def fix_atomic_cmd(
|
|
29
|
+
ctx: typer.Context,
|
|
30
|
+
write: bool = typer.Option(
|
|
31
|
+
False, "--write", help="Apply fixes to atomic action patterns."
|
|
32
|
+
),
|
|
33
|
+
) -> None:
|
|
34
|
+
"""
|
|
35
|
+
Heal violations in the Atomic Action pattern.
|
|
36
|
+
Ensures @atomic_action decorators and ActionResult returns are present.
|
|
37
|
+
"""
|
|
38
|
+
client = CoreApiClient()
|
|
39
|
+
initial = await client.run_fix("fix.atomic_actions", write=write)
|
|
40
|
+
run_id = initial.get("run_id")
|
|
41
|
+
if not run_id:
|
|
42
|
+
console.print(f"[red]fix.atomic_actions failed to dispatch: {initial}[/red]")
|
|
43
|
+
raise typer.Exit(1)
|
|
44
|
+
final = await client._poll_run(run_id)
|
|
45
|
+
if final.get("status") == "completed":
|
|
46
|
+
console.print("[green]✓ fix.atomic_actions completed.[/green]")
|
|
47
|
+
return
|
|
48
|
+
console.print(
|
|
49
|
+
f"[red]fix.atomic_actions failed: {final.get('error') or final}[/red]"
|
|
50
|
+
)
|
|
51
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# src/cli/resources/code/format.py
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
import typer
|
|
5
|
+
from rich.console import Console
|
|
6
|
+
|
|
7
|
+
from api.cli import CoreApiClient
|
|
8
|
+
from cli.utils import core_command
|
|
9
|
+
|
|
10
|
+
from .hub import app
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
console = Console()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
async def _run_and_poll(fix_id: str, *, write: bool) -> None:
|
|
18
|
+
client = CoreApiClient()
|
|
19
|
+
initial = await client.run_fix(fix_id, write=write)
|
|
20
|
+
run_id = initial.get("run_id")
|
|
21
|
+
if not run_id:
|
|
22
|
+
console.print(f"[red]{fix_id} failed to dispatch: {initial}[/red]")
|
|
23
|
+
raise typer.Exit(1)
|
|
24
|
+
final = await client._poll_run(run_id)
|
|
25
|
+
if final.get("status") != "completed":
|
|
26
|
+
console.print(f"[red]{fix_id} failed: {final.get('error') or final}[/red]")
|
|
27
|
+
raise typer.Exit(1)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@app.command("format")
|
|
31
|
+
@core_command(dangerous=True, requires_context=False)
|
|
32
|
+
# ID: 3dfcec28-34fd-44d4-9aec-bcbf29eb6d76
|
|
33
|
+
async def format_command(
|
|
34
|
+
ctx: typer.Context,
|
|
35
|
+
write: bool = typer.Option(
|
|
36
|
+
False, "--write", help="Apply formatting changes to disk."
|
|
37
|
+
),
|
|
38
|
+
) -> None:
|
|
39
|
+
"""
|
|
40
|
+
Format code using Black and Ruff.
|
|
41
|
+
|
|
42
|
+
Defaults to dry-run mode. Use --write to apply changes.
|
|
43
|
+
"""
|
|
44
|
+
mode = "Applying" if write else "Checking"
|
|
45
|
+
console.print(f"[bold cyan]✨ {mode} code formatting (Black + Ruff)...[/bold cyan]")
|
|
46
|
+
await _run_and_poll("fix.format", write=write)
|
|
47
|
+
if not write:
|
|
48
|
+
console.print("[yellow]💡 Run with --write to apply these changes.[/yellow]")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@app.command("format-imports")
|
|
52
|
+
@core_command(dangerous=True, requires_context=False)
|
|
53
|
+
# ID: 582d69b9-6f50-411a-a950-37e66ce2e07b
|
|
54
|
+
async def format_imports_cmd(
|
|
55
|
+
ctx: typer.Context,
|
|
56
|
+
write: bool = typer.Option(False, "--write", help="Apply import sorting to disk."),
|
|
57
|
+
) -> None:
|
|
58
|
+
"""
|
|
59
|
+
Sort and group Python imports according to PEP 8 / Constitutional standards.
|
|
60
|
+
Uses Ruff's import sorter (I) rules.
|
|
61
|
+
"""
|
|
62
|
+
await _run_and_poll("fix.imports", write=write)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# src/cli/resources/code/integrity.py
|
|
2
|
+
"""
|
|
3
|
+
Integrity CLI Commands - Phase 2 Hardening.
|
|
4
|
+
Allows the operator to baseline and verify the codebase state.
|
|
5
|
+
|
|
6
|
+
Thin clients over POST /v1/integrity/{baseline,verify}. All execution
|
|
7
|
+
moves server-side; this module only dispatches and renders.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from api.cli import CoreApiClient
|
|
16
|
+
from cli.utils import core_command
|
|
17
|
+
|
|
18
|
+
from .hub import app
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
console = Console()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@app.command("baseline")
|
|
25
|
+
@core_command(dangerous=False)
|
|
26
|
+
# ID: d76fd565-17ef-4f35-9138-9530efc28324
|
|
27
|
+
async def code_baseline_cmd(
|
|
28
|
+
ctx: typer.Context,
|
|
29
|
+
label: str = typer.Option(
|
|
30
|
+
"default", "--label", "-l", help="Label for this baseline."
|
|
31
|
+
),
|
|
32
|
+
) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Create a secure checksum baseline of the current 'src/' directory.
|
|
35
|
+
Run this before starting autonomous tasks.
|
|
36
|
+
"""
|
|
37
|
+
_ = ctx
|
|
38
|
+
client = CoreApiClient()
|
|
39
|
+
console.print(f"[bold cyan]Creating integrity baseline: {label}...[/bold cyan]")
|
|
40
|
+
result = await client.baseline(label=label)
|
|
41
|
+
path = result.get("path")
|
|
42
|
+
files_hashed = result.get("files_hashed", 0)
|
|
43
|
+
console.print(
|
|
44
|
+
f"[bold green]Baseline stored at: {path} ({files_hashed} files)[/bold green]"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@app.command("verify")
|
|
49
|
+
@core_command(dangerous=False)
|
|
50
|
+
# ID: 56975e9b-9040-4c0e-bdc4-76b7c68c5abd
|
|
51
|
+
async def code_verify_cmd(
|
|
52
|
+
ctx: typer.Context,
|
|
53
|
+
label: str = typer.Option(
|
|
54
|
+
"default", "--label", "-l", help="Baseline label to verify against."
|
|
55
|
+
),
|
|
56
|
+
) -> None:
|
|
57
|
+
"""
|
|
58
|
+
Verify the current codebase against a previously created baseline.
|
|
59
|
+
Detects any unauthorized MODIFICATIONS, DELETIONS, or NEW files.
|
|
60
|
+
"""
|
|
61
|
+
_ = ctx
|
|
62
|
+
client = CoreApiClient()
|
|
63
|
+
console.print(
|
|
64
|
+
f"[bold cyan]Verifying code integrity against baseline: {label}...[/bold cyan]"
|
|
65
|
+
)
|
|
66
|
+
result = await client.verify(label=label)
|
|
67
|
+
if result.get("ok"):
|
|
68
|
+
console.print(
|
|
69
|
+
"[bold green]Integrity verified: no unauthorized changes detected.[/bold green]"
|
|
70
|
+
)
|
|
71
|
+
else:
|
|
72
|
+
console.print("[bold red]Integrity violation found.[/bold red]")
|
|
73
|
+
for error in result.get("errors", []):
|
|
74
|
+
console.print(f" [yellow]-[/yellow] {error}")
|
|
75
|
+
raise typer.Exit(code=1)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# src/cli/resources/code/lint.py
|
|
2
|
+
import typer
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
|
|
5
|
+
from api.cli import CoreApiClient
|
|
6
|
+
from cli.utils import core_command
|
|
7
|
+
|
|
8
|
+
from .hub import app
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
console = Console()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@app.command("lint")
|
|
15
|
+
@core_command(dangerous=False, requires_context=False)
|
|
16
|
+
# ID: 044f8edf-3262-4e8b-b394-fd76bdd74136
|
|
17
|
+
async def lint_command() -> None:
|
|
18
|
+
"""Check code quality using Black and Ruff (Read-Only)."""
|
|
19
|
+
console.print("[bold cyan]🔎 Linting codebase...[/bold cyan]")
|
|
20
|
+
client = CoreApiClient()
|
|
21
|
+
result = await client.lint()
|
|
22
|
+
|
|
23
|
+
if result.get("error"):
|
|
24
|
+
console.print(f"[red]Lint failed: {result['error']}[/red]")
|
|
25
|
+
raise typer.Exit(1)
|
|
26
|
+
|
|
27
|
+
for tool_name, tool_result in result.get("tools", {}).items():
|
|
28
|
+
rc = tool_result["returncode"]
|
|
29
|
+
marker = "[green]✓[/green]" if rc == 0 else "[red]✗[/red]"
|
|
30
|
+
console.print(f"{marker} {tool_name} (returncode={rc})")
|
|
31
|
+
if tool_result.get("stdout"):
|
|
32
|
+
console.print(tool_result["stdout"], highlight=False, end="")
|
|
33
|
+
if tool_result.get("stderr"):
|
|
34
|
+
console.print(tool_result["stderr"], highlight=False, end="")
|
|
35
|
+
|
|
36
|
+
if not result.get("ok"):
|
|
37
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# src/cli/resources/code/logging.py
|
|
2
|
+
import typer
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
|
|
5
|
+
from api.cli import CoreApiClient
|
|
6
|
+
from cli.utils import core_command
|
|
7
|
+
from shared.cli.command_meta import CommandBehavior, CommandLayer, command_meta
|
|
8
|
+
|
|
9
|
+
from .hub import app
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
console = Console()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@app.command("logging")
|
|
16
|
+
@command_meta(
|
|
17
|
+
canonical_name="code.logging",
|
|
18
|
+
behavior=CommandBehavior.MUTATE,
|
|
19
|
+
layer=CommandLayer.BODY,
|
|
20
|
+
summary="Standardize logging across the codebase.",
|
|
21
|
+
dangerous=True,
|
|
22
|
+
)
|
|
23
|
+
@core_command(dangerous=True, requires_context=False)
|
|
24
|
+
# ID: 5076493c-79a8-4f92-8c15-ddfd695d4275
|
|
25
|
+
async def fix_logging_command(
|
|
26
|
+
ctx: typer.Context,
|
|
27
|
+
write: bool = typer.Option(
|
|
28
|
+
False, "--write", help="Convert print() to logger calls."
|
|
29
|
+
),
|
|
30
|
+
) -> None:
|
|
31
|
+
"""
|
|
32
|
+
Standardize logging across the codebase.
|
|
33
|
+
|
|
34
|
+
Replaces print() statements and malformed f-strings in loggers with
|
|
35
|
+
constitutional standard logging (LOG-001/LOG-003).
|
|
36
|
+
"""
|
|
37
|
+
mode = "Applying" if write else "Analyzing"
|
|
38
|
+
console.print(f"[bold cyan]🪵 {mode} Logging Standards...[/bold cyan]")
|
|
39
|
+
client = CoreApiClient()
|
|
40
|
+
initial = await client.run_fix("fix.logging", write=write)
|
|
41
|
+
run_id = initial.get("run_id")
|
|
42
|
+
if not run_id:
|
|
43
|
+
console.print(f"[red]fix.logging failed to dispatch: {initial}[/red]")
|
|
44
|
+
raise typer.Exit(1)
|
|
45
|
+
final = await client._poll_run(run_id)
|
|
46
|
+
if final.get("status") != "completed":
|
|
47
|
+
console.print(f"[red]fix.logging failed: {final.get('error') or final}[/red]")
|
|
48
|
+
raise typer.Exit(1)
|
|
49
|
+
console.print("[green]✓ fix.logging completed.[/green]")
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# src/cli/resources/code/refactor.py
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from cli.utils import core_command
|
|
6
|
+
from shared.context import CoreContext
|
|
7
|
+
|
|
8
|
+
from .hub import app
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@app.command("refactor-settings")
|
|
12
|
+
@core_command(dangerous=True, requires_context=True, confirmation=True)
|
|
13
|
+
# ID: 47d02d56-dc5f-4a28-82e5-ec82d067caa0
|
|
14
|
+
async def refactor_settings_cmd(
|
|
15
|
+
ctx: typer.Context,
|
|
16
|
+
write: bool = typer.Option(False, "--write", help="Apply DI refactoring."),
|
|
17
|
+
layers: str = typer.Option("mind,will", help="Comma-separated layers to process."),
|
|
18
|
+
):
|
|
19
|
+
"""
|
|
20
|
+
Automated refactoring of settings imports to Dependency Injection.
|
|
21
|
+
Moves layers toward using CoreContext instead of global settings.
|
|
22
|
+
"""
|
|
23
|
+
from body.maintenance.refactor_settings_access import refactor_settings_access
|
|
24
|
+
|
|
25
|
+
core_context: CoreContext = ctx.obj
|
|
26
|
+
layer_list = [layer.strip() for layer in layers.split(",")]
|
|
27
|
+
|
|
28
|
+
await refactor_settings_access(
|
|
29
|
+
repo_path=core_context.git_service.repo_path,
|
|
30
|
+
layers=layer_list,
|
|
31
|
+
dry_run=not write,
|
|
32
|
+
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# src/cli/resources/code/test.py
|
|
2
|
+
import typer
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
|
|
5
|
+
from api.cli import CoreApiClient
|
|
6
|
+
from cli.utils import core_command
|
|
7
|
+
|
|
8
|
+
from .hub import app
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
console = Console()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@app.command("test")
|
|
15
|
+
@core_command(dangerous=False, requires_context=False)
|
|
16
|
+
# ID: b89ff2a7-0bf3-47cf-90ba-66a3801630c3
|
|
17
|
+
async def test_command(ctx: typer.Context) -> None:
|
|
18
|
+
"""Run the project test suite via pytest."""
|
|
19
|
+
console.print("[bold cyan]🧪 Running test suite...[/bold cyan]")
|
|
20
|
+
client = CoreApiClient()
|
|
21
|
+
initial = await client.quality_tests()
|
|
22
|
+
run_id = initial.get("run_id")
|
|
23
|
+
if not run_id:
|
|
24
|
+
console.print(f"[red]quality.tests failed to dispatch: {initial}[/red]")
|
|
25
|
+
raise typer.Exit(1)
|
|
26
|
+
final = await client._poll_run(run_id)
|
|
27
|
+
if final.get("status") != "completed":
|
|
28
|
+
console.print(f"[red]quality.tests failed: {final.get('error') or final}[/red]")
|
|
29
|
+
raise typer.Exit(1)
|
|
30
|
+
console.print("[green]✓ tests completed.[/green]")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# src/cli/resources/coherence/__init__.py
|
|
2
|
+
"""Constitutional Coherence Checker resource group (ADR-067 + ADR-073)."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from . import check, repair_counts, report, supersede, triage
|
|
7
|
+
from .hub import app
|
|
8
|
+
from .seed import seed_app
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
app.add_typer(seed_app, name="seed")
|
|
12
|
+
|
|
13
|
+
__all__ = ["app"]
|