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,114 @@
|
|
|
1
|
+
# src/cli/resources/context/search.py
|
|
2
|
+
"""
|
|
3
|
+
Context search command - Direct pattern search.
|
|
4
|
+
|
|
5
|
+
Fast path for simple code pattern searches without full context building.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
core-admin context search isinstance
|
|
9
|
+
core-admin context search "async def" --path src/will
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import asyncio
|
|
15
|
+
import logging
|
|
16
|
+
|
|
17
|
+
import typer
|
|
18
|
+
from rich.console import Console
|
|
19
|
+
from rich.table import Table
|
|
20
|
+
from sqlalchemy import text
|
|
21
|
+
|
|
22
|
+
from body.services.service_registry import service_registry
|
|
23
|
+
from shared.infrastructure.database.session_manager import get_session
|
|
24
|
+
from shared.infrastructure.intent.operational_config import load_operational_config
|
|
25
|
+
|
|
26
|
+
from .hub import app
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
logger = logging.getLogger(__name__)
|
|
30
|
+
console = Console()
|
|
31
|
+
|
|
32
|
+
_CFG = load_operational_config().misc
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
async def _search_async(pattern: str, path: str | None, limit: int) -> None:
|
|
36
|
+
"""Query core.symbols for qualname/ast_signature matches."""
|
|
37
|
+
service_registry.prime(get_session)
|
|
38
|
+
module_filter: str | None = None
|
|
39
|
+
if path:
|
|
40
|
+
module_filter = path.replace("src/", "").replace("/", ".").strip(".")
|
|
41
|
+
like_pattern = f"%{pattern}%"
|
|
42
|
+
sql = text(
|
|
43
|
+
"\n SELECT qualname, module, kind, ast_signature, intent\n FROM core.symbols\n WHERE (\n ast_signature ILIKE :pat\n OR qualname ILIKE :pat\n OR intent ILIKE :pat\n )\n AND (CAST(:module_filter AS TEXT) IS NULL OR module ILIKE :module_pat)\n ORDER BY qualname\n LIMIT :limit\n "
|
|
44
|
+
)
|
|
45
|
+
async with get_session() as session:
|
|
46
|
+
result = await session.execute(
|
|
47
|
+
sql,
|
|
48
|
+
{
|
|
49
|
+
"pat": like_pattern,
|
|
50
|
+
"module_filter": module_filter,
|
|
51
|
+
"module_pat": f"{module_filter}%" if module_filter else None,
|
|
52
|
+
"limit": limit,
|
|
53
|
+
},
|
|
54
|
+
)
|
|
55
|
+
rows = result.fetchall()
|
|
56
|
+
if not rows:
|
|
57
|
+
console.print(f"[yellow]No matches found for:[/yellow] {pattern}")
|
|
58
|
+
return
|
|
59
|
+
table = Table(
|
|
60
|
+
title=f"Search results for '{pattern}' ({len(rows)} found)",
|
|
61
|
+
header_style="bold cyan",
|
|
62
|
+
)
|
|
63
|
+
table.add_column("Symbol", style="cyan")
|
|
64
|
+
table.add_column("Module", style="dim")
|
|
65
|
+
table.add_column("Kind", style="magenta")
|
|
66
|
+
table.add_column("Signature / Intent", style="green")
|
|
67
|
+
for row in rows:
|
|
68
|
+
summary = (row.intent or row.ast_signature or "—")[:80]
|
|
69
|
+
table.add_row(row.qualname, row.module, row.kind, summary)
|
|
70
|
+
console.print(table)
|
|
71
|
+
if len(rows) == limit:
|
|
72
|
+
console.print(
|
|
73
|
+
f"[dim]Showing first {limit} results. Use --limit to see more.[/dim]"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@app.command("search")
|
|
78
|
+
# ID: 6ced2f28-5c2b-410c-b8ec-07db0518b602
|
|
79
|
+
def search(
|
|
80
|
+
pattern: str = typer.Argument(
|
|
81
|
+
..., help="Code pattern to search (e.g., 'isinstance')"
|
|
82
|
+
),
|
|
83
|
+
path: str = typer.Option(None, "--path", help="Limit search to specific path"),
|
|
84
|
+
limit: int = typer.Option(
|
|
85
|
+
_CFG.context_search_display_limit,
|
|
86
|
+
"--limit",
|
|
87
|
+
help="Maximum results to return",
|
|
88
|
+
),
|
|
89
|
+
) -> None:
|
|
90
|
+
"""
|
|
91
|
+
Search for code patterns directly in the knowledge graph.
|
|
92
|
+
|
|
93
|
+
Faster than 'build' for simple pattern searches.
|
|
94
|
+
Queries the symbols table directly (qualname, signature, intent).
|
|
95
|
+
|
|
96
|
+
Examples:
|
|
97
|
+
core-admin context search isinstance
|
|
98
|
+
core-admin context search "async def" --path src/will
|
|
99
|
+
core-admin context search "try" --limit 10
|
|
100
|
+
|
|
101
|
+
For semantic/vector search, use 'core-admin context build' instead.
|
|
102
|
+
"""
|
|
103
|
+
try:
|
|
104
|
+
loop = asyncio.get_running_loop()
|
|
105
|
+
except RuntimeError:
|
|
106
|
+
loop = None
|
|
107
|
+
if loop and loop.is_running():
|
|
108
|
+
return
|
|
109
|
+
try:
|
|
110
|
+
asyncio.run(_search_async(pattern, path, limit))
|
|
111
|
+
except Exception as e:
|
|
112
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
113
|
+
logger.exception("Search failed")
|
|
114
|
+
raise typer.Exit(code=1)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# src/cli/resources/database/__init__.py
|
|
2
|
+
"""Database resource hub."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
# 2. Register all database neurons
|
|
7
|
+
from . import cleanup, export, migrate, status, sync, sync_env, sync_registry
|
|
8
|
+
|
|
9
|
+
# 1. Import the stable app from the hub
|
|
10
|
+
from .hub import app
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
__all__ = ["app"]
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# src/cli/resources/database/cleanup.py
|
|
2
|
+
"""
|
|
3
|
+
Database cleanup command.
|
|
4
|
+
|
|
5
|
+
Removes orphaned records, expired sessions, and stale data.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
from shared.infrastructure.database.session_manager import get_session
|
|
17
|
+
|
|
18
|
+
from .hub import app
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
console = Console()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@app.command("cleanup")
|
|
26
|
+
@core_command(dangerous=True, requires_context=False)
|
|
27
|
+
# ID: 6cce903f-ff9e-41de-b4cb-e01b09bfa139
|
|
28
|
+
async def cleanup_database(
|
|
29
|
+
ctx: typer.Context,
|
|
30
|
+
write: bool = typer.Option(
|
|
31
|
+
False, "--write", help="Apply cleanup (default: dry-run)"
|
|
32
|
+
),
|
|
33
|
+
target: str = typer.Option(
|
|
34
|
+
"all", "--target", "-t", help="Cleanup target: all, memory, action_results"
|
|
35
|
+
),
|
|
36
|
+
days: int = typer.Option(
|
|
37
|
+
30, "--days", "-d", help="Age threshold in days for stale data removal"
|
|
38
|
+
),
|
|
39
|
+
) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Remove orphaned and stale database records.
|
|
42
|
+
|
|
43
|
+
Cleanup targets:
|
|
44
|
+
- memory: Old agent episode and reflection entries
|
|
45
|
+
- action_results: Old records from core.action_results ledger
|
|
46
|
+
- all: Run all cleanup operations
|
|
47
|
+
|
|
48
|
+
Constitutional Compliance:
|
|
49
|
+
- Requires --write flag for safety
|
|
50
|
+
- Generates audit trail for deletions
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
# Dry-run: show what would be deleted
|
|
54
|
+
core-admin database cleanup
|
|
55
|
+
|
|
56
|
+
# Clean up old memory entries
|
|
57
|
+
core-admin database cleanup --target memory --write
|
|
58
|
+
|
|
59
|
+
# Full cleanup with custom age threshold
|
|
60
|
+
core-admin database cleanup --target all --days 60 --write
|
|
61
|
+
"""
|
|
62
|
+
from body.maintenance.memory_cleanup_service import MemoryCleanupService
|
|
63
|
+
|
|
64
|
+
console.print("[bold cyan]🧹 Database Cleanup[/bold cyan]")
|
|
65
|
+
console.print(f"Target: {target}")
|
|
66
|
+
console.print(f"Age threshold: {days} days")
|
|
67
|
+
console.print(f"Mode: {'WRITE' if write else 'DRY-RUN'}")
|
|
68
|
+
console.print()
|
|
69
|
+
try:
|
|
70
|
+
async with get_session() as session:
|
|
71
|
+
service = MemoryCleanupService(session=session)
|
|
72
|
+
if target in ("all", "memory"):
|
|
73
|
+
result = await service.cleanup_old_memories(
|
|
74
|
+
days_to_keep_episodes=days,
|
|
75
|
+
days_to_keep_reflections=days * 3,
|
|
76
|
+
dry_run=not write,
|
|
77
|
+
)
|
|
78
|
+
if result.ok:
|
|
79
|
+
stats = result.data
|
|
80
|
+
console.print("[green]✅ Memory cleanup completed[/green]")
|
|
81
|
+
console.print(f" Episodes: {stats.get('episodes_deleted', 0)}")
|
|
82
|
+
console.print(
|
|
83
|
+
f" Reflections: {stats.get('reflections_deleted', 0)}"
|
|
84
|
+
)
|
|
85
|
+
else:
|
|
86
|
+
console.print(
|
|
87
|
+
f"[red]❌ Memory cleanup failed: {result.data.get('error')}[/red]"
|
|
88
|
+
)
|
|
89
|
+
if target in ("all", "action_results"):
|
|
90
|
+
result = await service.cleanup_action_results(
|
|
91
|
+
days_to_keep=days, dry_run=not write
|
|
92
|
+
)
|
|
93
|
+
if result.ok:
|
|
94
|
+
stats = result.data
|
|
95
|
+
console.print("[green]✅ Action results cleanup completed[/green]")
|
|
96
|
+
console.print(f" Records: {stats.get('records_processed', 0)}")
|
|
97
|
+
else:
|
|
98
|
+
console.print(
|
|
99
|
+
f"[red]❌ Action results cleanup failed: {result.data.get('error')}[/red]"
|
|
100
|
+
)
|
|
101
|
+
if not write:
|
|
102
|
+
console.print()
|
|
103
|
+
console.print("[yellow]💡 Run with --write to apply cleanup[/yellow]")
|
|
104
|
+
except Exception as e:
|
|
105
|
+
logger.error("Database cleanup failed", exc_info=True)
|
|
106
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
107
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# src/cli/resources/database/export.py
|
|
2
|
+
"""
|
|
3
|
+
Database export command.
|
|
4
|
+
|
|
5
|
+
Exports database contents to JSON or SQL format.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
|
|
17
|
+
from .hub import app
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger(__name__)
|
|
21
|
+
console = Console()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@app.command("export")
|
|
25
|
+
@core_command(dangerous=False, requires_context=True)
|
|
26
|
+
# ID: e7f86889-85aa-40c7-92f9-19f751f8162f
|
|
27
|
+
async def export_database(
|
|
28
|
+
ctx: typer.Context,
|
|
29
|
+
output_dir: str = typer.Option(
|
|
30
|
+
"backups", "--output-dir", "-o", help="Output directory for export files"
|
|
31
|
+
),
|
|
32
|
+
) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Export database operational data to files.
|
|
35
|
+
|
|
36
|
+
Exports database tables to canonical YAML representations
|
|
37
|
+
in the specified output directory.
|
|
38
|
+
|
|
39
|
+
Constitutional Compliance:
|
|
40
|
+
- Writes to var/ directory (runtime artifacts)
|
|
41
|
+
- Uses FileHandler for traceable mutations
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
# Export to default backups directory
|
|
45
|
+
core-admin database export
|
|
46
|
+
|
|
47
|
+
# Export to custom directory
|
|
48
|
+
core-admin database export --output-dir exports/2024
|
|
49
|
+
"""
|
|
50
|
+
console.print("[bold cyan]📤 Database Export[/bold cyan]")
|
|
51
|
+
console.print(f"Output directory: {output_dir}")
|
|
52
|
+
console.print()
|
|
53
|
+
try:
|
|
54
|
+
from cli.logic.db import export_data
|
|
55
|
+
|
|
56
|
+
export_data(output_dir)
|
|
57
|
+
console.print(f"[green]✅ Export completed to {output_dir}[/green]")
|
|
58
|
+
except Exception as e:
|
|
59
|
+
logger.error("Database export failed", exc_info=True)
|
|
60
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
61
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# src/cli/resources/database/migrate.py
|
|
2
|
+
"""
|
|
3
|
+
Database migration command — currently dormant.
|
|
4
|
+
|
|
5
|
+
The repo operates under a schema-as-truth model: `infra/sql/db_schema_live.sql`
|
|
6
|
+
is the canonical schema, regenerated via `pg_dump --schema-only`. One-off SQL
|
|
7
|
+
changes are committed under `infra/scripts/migrations/` as historical record
|
|
8
|
+
but are NOT replayed through this CLI. The ledger-based migration framework
|
|
9
|
+
(MigrationService + core._migrations table) is preserved but unused; this
|
|
10
|
+
command will be revived if it is reintroduced. See #438 for history.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import typer
|
|
16
|
+
from rich.console import Console
|
|
17
|
+
|
|
18
|
+
from cli.utils import core_command
|
|
19
|
+
|
|
20
|
+
from .hub import app
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
console = Console()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@app.command("migrate")
|
|
27
|
+
@core_command(dangerous=False, requires_context=False)
|
|
28
|
+
# ID: d8b7978f-d801-4ba2-a669-f0fd48851b01
|
|
29
|
+
async def migrate_database(
|
|
30
|
+
ctx: typer.Context,
|
|
31
|
+
apply: bool = typer.Option(
|
|
32
|
+
False, "--apply", help="(Currently inert — framework is dormant.)"
|
|
33
|
+
),
|
|
34
|
+
) -> None:
|
|
35
|
+
"""Show the current migration-framework status.
|
|
36
|
+
|
|
37
|
+
Currently dormant: schema-as-truth via `infra/sql/db_schema_live.sql` is
|
|
38
|
+
the canonical model. This command will be revived if ledger-based
|
|
39
|
+
migrations are reintroduced.
|
|
40
|
+
"""
|
|
41
|
+
_ = apply # currently unused; kept for forward-compat
|
|
42
|
+
console.print()
|
|
43
|
+
console.print("[yellow]⏸ Migration framework is currently dormant.[/yellow]")
|
|
44
|
+
console.print()
|
|
45
|
+
console.print("Schema-as-truth model is in effect:")
|
|
46
|
+
console.print(" • Canonical schema: [cyan]infra/sql/db_schema_live.sql[/cyan]")
|
|
47
|
+
console.print(
|
|
48
|
+
" • Regenerate via: [cyan]pg_dump --schema-only --schema=core[/cyan]"
|
|
49
|
+
)
|
|
50
|
+
console.print(
|
|
51
|
+
" • One-off SQL files: [cyan]infra/scripts/migrations/[/cyan] (historical record)"
|
|
52
|
+
)
|
|
53
|
+
console.print()
|
|
54
|
+
console.print(
|
|
55
|
+
"This command will be revived if ledger-based migrations are reintroduced."
|
|
56
|
+
)
|
|
57
|
+
console.print("See #438 for the framework-orphan history.")
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# src/cli/resources/database/status.py
|
|
2
|
+
"""
|
|
3
|
+
Database status command.
|
|
4
|
+
|
|
5
|
+
Shows health metrics, connection status, and diagnostics.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
from rich.table import Table
|
|
15
|
+
|
|
16
|
+
from cli.utils import core_command
|
|
17
|
+
|
|
18
|
+
from .hub import app
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
console = Console()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@app.command("status")
|
|
26
|
+
@core_command(dangerous=False, requires_context=False)
|
|
27
|
+
# ID: 7c22539d-3f8e-4d18-8457-9d194062a94e
|
|
28
|
+
async def database_status(
|
|
29
|
+
ctx: typer.Context,
|
|
30
|
+
detailed: bool = typer.Option(
|
|
31
|
+
False, "--detailed", "-d", help="Show detailed table statistics"
|
|
32
|
+
),
|
|
33
|
+
format: str = typer.Option(
|
|
34
|
+
"table", "--format", "-f", help="Output format: table or json"
|
|
35
|
+
),
|
|
36
|
+
) -> None:
|
|
37
|
+
"""
|
|
38
|
+
Show database health metrics and diagnostics.
|
|
39
|
+
|
|
40
|
+
Displays:
|
|
41
|
+
- Connection status
|
|
42
|
+
- Database version
|
|
43
|
+
- Migration status
|
|
44
|
+
|
|
45
|
+
Examples:
|
|
46
|
+
# Basic status
|
|
47
|
+
core-admin database status
|
|
48
|
+
|
|
49
|
+
# JSON output for scripting
|
|
50
|
+
core-admin database status --format json
|
|
51
|
+
"""
|
|
52
|
+
console.print("[bold cyan]📊 Database Status[/bold cyan]")
|
|
53
|
+
console.print()
|
|
54
|
+
try:
|
|
55
|
+
from shared.infrastructure.repositories.db.status_service import (
|
|
56
|
+
status as db_status,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
report = await db_status()
|
|
60
|
+
if format == "json":
|
|
61
|
+
import json
|
|
62
|
+
|
|
63
|
+
result = {
|
|
64
|
+
"connected": report.is_connected,
|
|
65
|
+
"version": report.db_version,
|
|
66
|
+
"applied_migrations": list(report.applied_migrations),
|
|
67
|
+
"pending_migrations": report.pending_migrations,
|
|
68
|
+
}
|
|
69
|
+
console.print(json.dumps(result, indent=2, default=str))
|
|
70
|
+
return
|
|
71
|
+
_display_status_table(report, detailed)
|
|
72
|
+
except Exception as e:
|
|
73
|
+
logger.error("Database status check failed", exc_info=True)
|
|
74
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
75
|
+
raise typer.Exit(1)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _display_status_table(report, detailed: bool) -> None:
|
|
79
|
+
"""Display status information as rich tables."""
|
|
80
|
+
console.print("[bold]Connection[/bold]")
|
|
81
|
+
conn_table = Table(show_header=False)
|
|
82
|
+
conn_table.add_column("Metric", style="cyan")
|
|
83
|
+
conn_table.add_column("Value")
|
|
84
|
+
conn_table.add_row(
|
|
85
|
+
"Status", "🟢 Connected" if report.is_connected else "🔴 Disconnected"
|
|
86
|
+
)
|
|
87
|
+
conn_table.add_row("Version", report.db_version or "N/A")
|
|
88
|
+
console.print(conn_table)
|
|
89
|
+
console.print()
|
|
90
|
+
console.print("[bold]Migrations[/bold]")
|
|
91
|
+
mig_table = Table(show_header=False)
|
|
92
|
+
mig_table.add_column("Metric", style="cyan")
|
|
93
|
+
mig_table.add_column("Value")
|
|
94
|
+
mig_table.add_row("Applied", str(len(report.applied_migrations)))
|
|
95
|
+
mig_table.add_row("Pending", str(len(report.pending_migrations)))
|
|
96
|
+
console.print(mig_table)
|
|
97
|
+
if report.pending_migrations:
|
|
98
|
+
console.print()
|
|
99
|
+
console.print("[yellow]⚠️ Pending migrations:[/yellow]")
|
|
100
|
+
for mig in sorted(report.pending_migrations):
|
|
101
|
+
console.print(f" • {mig}")
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# src/cli/resources/database/sync.py
|
|
2
|
+
"""
|
|
3
|
+
Database synchronization command.
|
|
4
|
+
|
|
5
|
+
Synchronizes PostgreSQL schema and seeds constitutional data.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
from shared.cli.command_meta import CommandBehavior, CommandLayer, command_meta
|
|
17
|
+
from shared.infrastructure.database.session_manager import get_session
|
|
18
|
+
|
|
19
|
+
from .hub import app
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
console = Console()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@app.command("sync")
|
|
27
|
+
@command_meta(
|
|
28
|
+
canonical_name="database.sync",
|
|
29
|
+
behavior=CommandBehavior.MUTATE,
|
|
30
|
+
layer=CommandLayer.BODY,
|
|
31
|
+
summary="Synchronize database with codebase symbols.",
|
|
32
|
+
dangerous=True,
|
|
33
|
+
)
|
|
34
|
+
@core_command(dangerous=True, requires_context=True)
|
|
35
|
+
# ID: acb50cd7-0423-4837-bcda-e9ab8bc16a46
|
|
36
|
+
async def sync_database(
|
|
37
|
+
ctx: typer.Context,
|
|
38
|
+
write: bool = typer.Option(
|
|
39
|
+
False, "--write", help="Apply changes to database (default: dry-run)"
|
|
40
|
+
),
|
|
41
|
+
) -> None:
|
|
42
|
+
"""
|
|
43
|
+
Synchronize database with codebase symbols.
|
|
44
|
+
|
|
45
|
+
Scans the codebase and syncs all symbols to the database knowledge graph.
|
|
46
|
+
|
|
47
|
+
Constitutional Compliance:
|
|
48
|
+
- Enforces 'knowledge.database_ssot'
|
|
49
|
+
- All changes logged to audit trail
|
|
50
|
+
- Atomic action with rollback capability
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
# Dry-run (show what would change)
|
|
54
|
+
core-admin database sync
|
|
55
|
+
|
|
56
|
+
# Apply changes
|
|
57
|
+
core-admin database sync --write
|
|
58
|
+
"""
|
|
59
|
+
console.print("[bold cyan]📊 Database Synchronization[/bold cyan]")
|
|
60
|
+
console.print(f"Mode: {'WRITE' if write else 'DRY-RUN'}")
|
|
61
|
+
console.print()
|
|
62
|
+
try:
|
|
63
|
+
from body.introspection.sync_service import run_sync_with_db
|
|
64
|
+
|
|
65
|
+
if not write:
|
|
66
|
+
console.print("[yellow]DRY-RUN: Use --write to persist changes[/yellow]")
|
|
67
|
+
return
|
|
68
|
+
async with get_session() as session:
|
|
69
|
+
result = await run_sync_with_db(session)
|
|
70
|
+
if result.ok:
|
|
71
|
+
stats = result.data
|
|
72
|
+
console.print("[green]✅ Synchronization completed[/green]")
|
|
73
|
+
console.print()
|
|
74
|
+
console.print(f" Scanned: {stats.get('scanned', 0)} symbols")
|
|
75
|
+
console.print(f" Inserted: {stats.get('inserted', 0)}")
|
|
76
|
+
console.print(f" Updated: {stats.get('updated', 0)}")
|
|
77
|
+
console.print(f" Deleted: {stats.get('deleted', 0)}")
|
|
78
|
+
else:
|
|
79
|
+
console.print(f"[red]❌ Sync failed: {result.error}[/red]")
|
|
80
|
+
raise typer.Exit(1)
|
|
81
|
+
except Exception as e:
|
|
82
|
+
logger.error("Database sync failed", exc_info=True)
|
|
83
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
84
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# src/cli/resources/database/sync_env.py
|
|
2
|
+
"""
|
|
3
|
+
Environment settings sync command.
|
|
4
|
+
|
|
5
|
+
Reads variables from .env and upserts them into core.runtime_settings.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
import typer
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from cli.utils import core_command
|
|
16
|
+
from shared.cli.command_meta import CommandBehavior, CommandLayer, command_meta
|
|
17
|
+
from shared.infrastructure.database.session_manager import get_session
|
|
18
|
+
|
|
19
|
+
from .hub import app
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
console = Console()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@app.command("sync-env")
|
|
27
|
+
@command_meta(
|
|
28
|
+
canonical_name="database.sync_env",
|
|
29
|
+
behavior=CommandBehavior.MUTATE,
|
|
30
|
+
layer=CommandLayer.BODY,
|
|
31
|
+
summary="Sync .env variables into core.runtime_settings table.",
|
|
32
|
+
dangerous=True,
|
|
33
|
+
)
|
|
34
|
+
@core_command(dangerous=True, requires_context=True)
|
|
35
|
+
# ID: 44ffa6cb-5c9e-4c12-b8ab-ab673dbdf0d4
|
|
36
|
+
async def sync_env(
|
|
37
|
+
ctx: typer.Context,
|
|
38
|
+
write: bool = typer.Option(False, "--write", help="Apply sync (default: dry-run)"),
|
|
39
|
+
) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Sync environment variables into the database runtime_settings table.
|
|
42
|
+
|
|
43
|
+
Reads variables declared in mind.config.runtime_requirements and upserts
|
|
44
|
+
their current values from .env into core.runtime_settings.
|
|
45
|
+
|
|
46
|
+
Constitutional Compliance:
|
|
47
|
+
- Requires --write flag for safety
|
|
48
|
+
- Secret keys are masked in dry-run output
|
|
49
|
+
|
|
50
|
+
Examples:
|
|
51
|
+
# Dry-run: show what would be synced
|
|
52
|
+
core-admin database sync-env
|
|
53
|
+
|
|
54
|
+
# Apply sync
|
|
55
|
+
core-admin database sync-env --write
|
|
56
|
+
"""
|
|
57
|
+
from body.maintenance.dotenv_sync_service import run_dotenv_sync
|
|
58
|
+
|
|
59
|
+
console.print("[bold cyan]⚙️ Environment Settings Sync[/bold cyan]")
|
|
60
|
+
console.print(f"Mode: {'WRITE' if write else 'DRY-RUN'}")
|
|
61
|
+
console.print()
|
|
62
|
+
try:
|
|
63
|
+
core_context = ctx.obj
|
|
64
|
+
async with get_session() as session:
|
|
65
|
+
await run_dotenv_sync(
|
|
66
|
+
context=core_context, session=session, dry_run=not write
|
|
67
|
+
)
|
|
68
|
+
if not write:
|
|
69
|
+
console.print()
|
|
70
|
+
console.print("[yellow]💡 Run with --write to apply sync[/yellow]")
|
|
71
|
+
else:
|
|
72
|
+
console.print("[green]✅ Environment settings synced to database[/green]")
|
|
73
|
+
except Exception as e:
|
|
74
|
+
logger.error("Environment sync failed", exc_info=True)
|
|
75
|
+
console.print(f"[red]❌ Error: {e}[/red]")
|
|
76
|
+
raise typer.Exit(1)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# src/cli/resources/database/sync_registry.py
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from cli.utils import core_command
|
|
6
|
+
from shared.cli.command_meta import (
|
|
7
|
+
CommandBehavior,
|
|
8
|
+
CommandLayer,
|
|
9
|
+
command_meta,
|
|
10
|
+
) # Add this import
|
|
11
|
+
from shared.infrastructure.database.session_manager import get_session
|
|
12
|
+
|
|
13
|
+
from .hub import app
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@app.command("sync-registry")
|
|
17
|
+
@command_meta(
|
|
18
|
+
canonical_name="database.sync-registry",
|
|
19
|
+
behavior=CommandBehavior.MUTATE,
|
|
20
|
+
layer=CommandLayer.BODY,
|
|
21
|
+
summary="Synchronize the live CLI command structure to the database.",
|
|
22
|
+
dangerous=True, # Explicitly mark as dangerous
|
|
23
|
+
)
|
|
24
|
+
@core_command(dangerous=True, requires_context=False)
|
|
25
|
+
# ID: d71b92d9-d954-48dd-9059-68f0b3ed4442
|
|
26
|
+
async def sync_registry_cmd(
|
|
27
|
+
# Add the mandatory write parameter
|
|
28
|
+
write: bool = typer.Option(
|
|
29
|
+
False, "--write", help="Actually persist the registry to the database."
|
|
30
|
+
),
|
|
31
|
+
):
|
|
32
|
+
"""
|
|
33
|
+
Synchronize the live CLI command structure (metadata) to the database.
|
|
34
|
+
This makes the DB the Single Source of Truth for available system neurons.
|
|
35
|
+
"""
|
|
36
|
+
if not write:
|
|
37
|
+
typer.echo(
|
|
38
|
+
"📋 DRY RUN: Would synchronize CLI Registry to database. Use --write to apply."
|
|
39
|
+
)
|
|
40
|
+
return
|
|
41
|
+
|
|
42
|
+
from body.maintenance.command_sync_service import _sync_commands_to_db
|
|
43
|
+
from cli.admin_cli import app as main_app
|
|
44
|
+
|
|
45
|
+
async with get_session() as session:
|
|
46
|
+
await _sync_commands_to_db(session, main_app)
|
|
47
|
+
|
|
48
|
+
typer.echo("✅ CLI Registry synchronized to database.")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# src/cli/resources/dev/__init__.py
|
|
2
|
+
|
|
3
|
+
"""Developer workflow and interaction operations."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
# Register all sub-modules (neurons) — import order triggers @app.command decorators
|
|
8
|
+
from . import refactor, stability, strategic_audit, sync, test
|
|
9
|
+
|
|
10
|
+
# Import the centralized app from the hub
|
|
11
|
+
from .hub import app
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["app"]
|