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.
Files changed (962) hide show
  1. api/__init__.py +4 -0
  2. api/cli/__init__.py +10 -0
  3. api/cli/audit_client.py +92 -0
  4. api/cli/census_client.py +77 -0
  5. api/cli/client.py +508 -0
  6. api/cli/coverage_client.py +121 -0
  7. api/cli/daemon_client.py +42 -0
  8. api/cli/fix_client.py +101 -0
  9. api/cli/inspect_client.py +143 -0
  10. api/cli/integration_client.py +42 -0
  11. api/cli/integrity_client.py +45 -0
  12. api/cli/proposals_client.py +101 -0
  13. api/cli/quality_client.py +83 -0
  14. api/cli/refactor_client.py +82 -0
  15. api/cli/sync_client.py +106 -0
  16. api/dependencies.py +37 -0
  17. api/errors.py +74 -0
  18. api/main.py +88 -0
  19. api/v1/__init__.py +4 -0
  20. api/v1/audit_routes.py +302 -0
  21. api/v1/census_routes.py +207 -0
  22. api/v1/coverage_routes.py +352 -0
  23. api/v1/daemon_routes.py +86 -0
  24. api/v1/development_routes.py +70 -0
  25. api/v1/fix_routes.py +428 -0
  26. api/v1/inspect_routes.py +220 -0
  27. api/v1/integration_routes.py +56 -0
  28. api/v1/integrity_routes.py +72 -0
  29. api/v1/knowledge_routes.py +36 -0
  30. api/v1/lint_routes.py +40 -0
  31. api/v1/proposals_routes.py +267 -0
  32. api/v1/quality_routes.py +272 -0
  33. api/v1/refactor_routes.py +225 -0
  34. api/v1/sync_routes.py +261 -0
  35. body/__init__.py +4 -0
  36. body/analyzers/__init__.py +25 -0
  37. body/analyzers/base_analyzer.py +28 -0
  38. body/analyzers/constitutional_path_analyzer.py +63 -0
  39. body/analyzers/file_analyzer.py +211 -0
  40. body/analyzers/knowledge_graph_analyzer.py +86 -0
  41. body/analyzers/prompt_analyzer.py +155 -0
  42. body/analyzers/symbol_extractor.py +280 -0
  43. body/atomic/__init__.py +74 -0
  44. body/atomic/build_tests_action.py +354 -0
  45. body/atomic/check_actions.py +142 -0
  46. body/atomic/crate_ops.py +59 -0
  47. body/atomic/executor.py +470 -0
  48. body/atomic/file_ops.py +153 -0
  49. body/atomic/fix_actions.py +1142 -0
  50. body/atomic/import_resolver.py +200 -0
  51. body/atomic/metadata_ops.py +161 -0
  52. body/atomic/modularity_fix.py +839 -0
  53. body/atomic/modularity_splitter.py +521 -0
  54. body/atomic/proposal_lifecycle_actions.py +171 -0
  55. body/atomic/registry.py +326 -0
  56. body/atomic/remediate_cognitive_role.py +104 -0
  57. body/atomic/sandbox_lifecycle.py +252 -0
  58. body/atomic/split_plan.py +155 -0
  59. body/atomic/sync_actions/__init__.py +22 -0
  60. body/atomic/sync_actions/chunking_helpers.py +218 -0
  61. body/atomic/sync_actions/sync_actions.py +431 -0
  62. body/atomic/test_actions.py +47 -0
  63. body/autonomy/__init__.py +16 -0
  64. body/autonomy/audit_analyzer.py +343 -0
  65. body/autonomy/micro_proposal_executor.py +316 -0
  66. body/crate_processing/canary_executor.py +144 -0
  67. body/evaluators/__init__.py +27 -0
  68. body/evaluators/atomic_actions_evaluator.py +162 -0
  69. body/evaluators/atomic_actions_format.py +45 -0
  70. body/evaluators/atomic_actions_rules.py +278 -0
  71. body/evaluators/base_evaluator.py +67 -0
  72. body/evaluators/clarity_evaluator.py +83 -0
  73. body/evaluators/constitutional_evaluator.py +227 -0
  74. body/evaluators/failure_evaluator.py +136 -0
  75. body/evaluators/performance_evaluator.py +341 -0
  76. body/evaluators/security_evaluator.py +393 -0
  77. body/flows/__init__.py +33 -0
  78. body/flows/executor.py +275 -0
  79. body/flows/registry.py +272 -0
  80. body/flows/result.py +113 -0
  81. body/governance/__init__.py +29 -0
  82. body/governance/body_contracts_service.py +317 -0
  83. body/governance/code_validator.py +118 -0
  84. body/governance/engine_dispatcher.py +128 -0
  85. body/governance/intent_guard.py +592 -0
  86. body/governance/intent_pattern_validators.py +197 -0
  87. body/governance/key_management_service.py +100 -0
  88. body/governance/path_validator.py +187 -0
  89. body/governance/remediation_service.py +263 -0
  90. body/governance/runtime_validator.py +184 -0
  91. body/infrastructure/bootstrap.py +135 -0
  92. body/infrastructure/lifespan.py +85 -0
  93. body/infrastructure/repositories/__init__.py +1 -0
  94. body/infrastructure/repositories/decision_trace_repository.py +210 -0
  95. body/infrastructure/repositories/refusal_repository.py +294 -0
  96. body/introspection/__init__.py +4 -0
  97. body/introspection/capability_discovery_service.py +107 -0
  98. body/introspection/discovery/from_kgb.py +33 -0
  99. body/introspection/discovery/from_source_scan.py +40 -0
  100. body/introspection/discovery/loader.py +62 -0
  101. body/introspection/discovery/registry.py +22 -0
  102. body/introspection/discovery/semantics.py +21 -0
  103. body/introspection/discovery/sync.py +47 -0
  104. body/introspection/drift_detector.py +81 -0
  105. body/introspection/drift_service.py +48 -0
  106. body/introspection/export_vectors.py +133 -0
  107. body/introspection/generate_capability_docs.py +130 -0
  108. body/introspection/generate_correction_map.py +98 -0
  109. body/introspection/graph_analysis_service.py +66 -0
  110. body/introspection/knowledge_graph_service.py +170 -0
  111. body/introspection/semantic_clusterer.py +128 -0
  112. body/introspection/symbol_index_builder.py +244 -0
  113. body/introspection/sync/engine.py +92 -0
  114. body/introspection/sync/scanner.py +56 -0
  115. body/introspection/sync/visitor.py +83 -0
  116. body/introspection/sync_service.py +62 -0
  117. body/invokers/__init__.py +4 -0
  118. body/invokers/capability_invoker.py +4 -0
  119. body/maintenance/command_sync_service.py +73 -0
  120. body/maintenance/dotenv_sync_service.py +99 -0
  121. body/maintenance/idempotency_harness.py +70 -0
  122. body/maintenance/maintenance_service.py +123 -0
  123. body/maintenance/memory_cleanup_service.py +131 -0
  124. body/maintenance/refactor_settings_access.py +274 -0
  125. body/maintenance/scripts/__init__.py +5 -0
  126. body/maintenance/scripts/context_export.py +278 -0
  127. body/maintenance/scripts/vector_verify.py +73 -0
  128. body/maintenance/sync_vectors.py +338 -0
  129. body/models/__init__.py +4 -0
  130. body/project_lifecycle/__init__.py +4 -0
  131. body/project_lifecycle/bootstrap_service.py +157 -0
  132. body/project_lifecycle/definition_service.py +264 -0
  133. body/project_lifecycle/integration_service.py +113 -0
  134. body/project_lifecycle/scaffolding_service.py +187 -0
  135. body/quality/coverage_analyzer.py +177 -0
  136. body/repositories/__init__.py +4 -0
  137. body/self_healing/atomic_actions_fixer.py +113 -0
  138. body/self_healing/body_ui_fixer.py +193 -0
  139. body/self_healing/capability_parser.py +65 -0
  140. body/self_healing/code_style_service.py +51 -0
  141. body/self_healing/complexity_filter.py +70 -0
  142. body/self_healing/docstring_service.py +345 -0
  143. body/self_healing/duplicate_id_service.py +407 -0
  144. body/self_healing/duplicates_service.py +165 -0
  145. body/self_healing/handlers/__init__.py +1 -0
  146. body/self_healing/handlers/id_assignment_handler.py +201 -0
  147. body/self_healing/handlers/import_sorting_handler.py +181 -0
  148. body/self_healing/header_service.py +308 -0
  149. body/self_healing/id_tagging_service.py +227 -0
  150. body/self_healing/knowledge_consolidation_service.py +80 -0
  151. body/self_healing/logging_service.py +292 -0
  152. body/self_healing/owner_tagging_service.py +5 -0
  153. body/self_healing/placeholder_fixer_service.py +27 -0
  154. body/self_healing/prune_private_capabilities.py +144 -0
  155. body/self_healing/purge_legacy_tags_service.py +146 -0
  156. body/self_healing/remediation_models.py +238 -0
  157. body/self_healing/test_context/__init__.py +10 -0
  158. body/self_healing/test_context/detectors.py +74 -0
  159. body/self_healing/test_context/examples.py +53 -0
  160. body/self_healing/test_context/formatter.py +65 -0
  161. body/self_healing/test_context/metrics.py +62 -0
  162. body/self_healing/test_context/models.py +83 -0
  163. body/self_healing/test_context/parsers.py +70 -0
  164. body/self_healing/test_context_analyzer.py +79 -0
  165. body/self_healing/test_failure_analyzer.py +259 -0
  166. body/self_healing/test_target_analyzer.py +118 -0
  167. body/self_healing/vulture_healer.py +161 -0
  168. body/services/__init__.py +4 -0
  169. body/services/artifact_service.py +155 -0
  170. body/services/blackboard_service/__init__.py +22 -0
  171. body/services/blackboard_service/blackboard_claim_service.py +216 -0
  172. body/services/blackboard_service/blackboard_proposal_service.py +305 -0
  173. body/services/blackboard_service/blackboard_query_service.py +333 -0
  174. body/services/blackboard_service/blackboard_service.py +602 -0
  175. body/services/capabilities.py +51 -0
  176. body/services/cim/__init__.py +22 -0
  177. body/services/cim/baselines.py +102 -0
  178. body/services/cim/census_service.py +190 -0
  179. body/services/cim/cim_constants.py +116 -0
  180. body/services/cim/cim_path_utils.py +123 -0
  181. body/services/cim/diff.py +152 -0
  182. body/services/cim/history.py +94 -0
  183. body/services/cim/models.py +319 -0
  184. body/services/cim/policy.py +149 -0
  185. body/services/cim/scanners.py +332 -0
  186. body/services/coherence_service.py +552 -0
  187. body/services/consequence_log_service.py +189 -0
  188. body/services/constitutional_rule_loader.py +141 -0
  189. body/services/constitutional_validator.py +366 -0
  190. body/services/crate_creation_service.py +217 -0
  191. body/services/crate_processing_service.py +279 -0
  192. body/services/crawl_service/__init__.py +10 -0
  193. body/services/crawl_service/main_module.py +531 -0
  194. body/services/crawl_service/orchestrator.py +452 -0
  195. body/services/crawl_service/symbol_processing.py +279 -0
  196. body/services/database_service.py +242 -0
  197. body/services/doc_service.py +57 -0
  198. body/services/file_service.py +260 -0
  199. body/services/governance_claims_service.py +240 -0
  200. body/services/governance_init.py +41 -0
  201. body/services/health_log_service.py +167 -0
  202. body/services/intent_schema_validator.py +211 -0
  203. body/services/llm_client.py +87 -0
  204. body/services/mind_state_service.py +129 -0
  205. body/services/policy_expression_evaluator.py +154 -0
  206. body/services/proposal_supervision_service.py +187 -0
  207. body/services/representation_coherence_service.py +209 -0
  208. body/services/service_registry.py +431 -0
  209. body/services/session_attached_service.py +51 -0
  210. body/services/symbol_query_service.py +218 -0
  211. body/services/symbol_service.py +94 -0
  212. body/services/validation/__init__.py +14 -0
  213. body/services/validation/python_validator.py +89 -0
  214. body/services/validation/validation_policies.py +121 -0
  215. body/services/worker_registry_service.py +184 -0
  216. body/validators/__init__.py +1 -0
  217. body/validators/logic_conservation_validator.py +201 -0
  218. body/workers/call_site_rewriter.py +527 -0
  219. body/workers/prompt_artifact_writer.py +323 -0
  220. cli/__init__.py +4 -0
  221. cli/admin_cli.py +98 -0
  222. cli/cli_user.py +121 -0
  223. cli/commands/__init__.py +4 -0
  224. cli/commands/audit_reporter.py +272 -0
  225. cli/commands/check/__init__.py +115 -0
  226. cli/commands/check/audit.py +130 -0
  227. cli/commands/check/converters.py +129 -0
  228. cli/commands/check/diagnostics_commands.py +70 -0
  229. cli/commands/check/formatters.py +310 -0
  230. cli/commands/check/imports.py +73 -0
  231. cli/commands/check/quality.py +71 -0
  232. cli/commands/check/quality_gates.py +107 -0
  233. cli/commands/check/rule.py +136 -0
  234. cli/commands/check/utils.py +28 -0
  235. cli/commands/check_atomic_actions.py +167 -0
  236. cli/commands/components.py +66 -0
  237. cli/commands/coverage/__init__.py +22 -0
  238. cli/commands/coverage/analysis_commands.py +87 -0
  239. cli/commands/coverage/check_commands.py +173 -0
  240. cli/commands/coverage/generation_commands.py +155 -0
  241. cli/commands/coverage/services/__init__.py +15 -0
  242. cli/commands/coverage/services/coverage_checker.py +50 -0
  243. cli/commands/coverage/services/coverage_reporter.py +81 -0
  244. cli/commands/coverage/services/gaps_analyzer.py +114 -0
  245. cli/commands/daemon.py +908 -0
  246. cli/commands/develop.py +127 -0
  247. cli/commands/diagnostics.py +32 -0
  248. cli/commands/fix/__init__.py +84 -0
  249. cli/commands/fix/all_commands.py +94 -0
  250. cli/commands/fix/atomic_actions.py +48 -0
  251. cli/commands/fix/audit.py +146 -0
  252. cli/commands/fix/body_ui.py +93 -0
  253. cli/commands/fix/code_style.py +52 -0
  254. cli/commands/fix/db_tools.py +90 -0
  255. cli/commands/fix/fix_ir.py +79 -0
  256. cli/commands/fix/handler_discovery.py +54 -0
  257. cli/commands/fix/imports.py +55 -0
  258. cli/commands/fix/list_commands.py +54 -0
  259. cli/commands/fix/metadata.py +160 -0
  260. cli/commands/fix/modularity.py +88 -0
  261. cli/commands/fix/settings_access.py +65 -0
  262. cli/commands/fix_governed.py +103 -0
  263. cli/commands/fix_logging.py +24 -0
  264. cli/commands/governance.py +294 -0
  265. cli/commands/guard.py +125 -0
  266. cli/commands/inspect/__init__.py +79 -0
  267. cli/commands/inspect/_helpers.py +226 -0
  268. cli/commands/inspect/analysis.py +158 -0
  269. cli/commands/inspect/decisions.py +140 -0
  270. cli/commands/inspect/diagnostics.py +126 -0
  271. cli/commands/inspect/drift.py +100 -0
  272. cli/commands/inspect/patterns.py +102 -0
  273. cli/commands/inspect/refusals.py +211 -0
  274. cli/commands/inspect/repo_census.py +175 -0
  275. cli/commands/inspect/status.py +48 -0
  276. cli/commands/interactive_test.py +85 -0
  277. cli/commands/mind.py +49 -0
  278. cli/commands/refactor.py +234 -0
  279. cli/commands/refactor_support/__init__.py +7 -0
  280. cli/commands/refactor_support/analyzer.py +107 -0
  281. cli/commands/refactor_support/config.py +67 -0
  282. cli/commands/refactor_support/display.py +170 -0
  283. cli/commands/refactor_support/recommendations.py +55 -0
  284. cli/commands/run.py +60 -0
  285. cli/commands/search.py +103 -0
  286. cli/commands/status.py +86 -0
  287. cli/commands/submit.py +23 -0
  288. cli/interactive.py +177 -0
  289. cli/logic/__init__.py +7 -0
  290. cli/logic/agent.py +110 -0
  291. cli/logic/audit_capability_domains.py +106 -0
  292. cli/logic/audit_renderer.py +150 -0
  293. cli/logic/autonomy/actions.py +36 -0
  294. cli/logic/autonomy/views.py +116 -0
  295. cli/logic/body_contracts_checker.py +23 -0
  296. cli/logic/build.py +27 -0
  297. cli/logic/byor.py +148 -0
  298. cli/logic/capability.py +27 -0
  299. cli/logic/cli_utils.py +210 -0
  300. cli/logic/context.py +7 -0
  301. cli/logic/db.py +154 -0
  302. cli/logic/db_manage.py +22 -0
  303. cli/logic/decision_inspect_logic.py +62 -0
  304. cli/logic/diagnostics.py +148 -0
  305. cli/logic/diagnostics_policy.py +100 -0
  306. cli/logic/diagnostics_registry.py +165 -0
  307. cli/logic/duplicates.py +19 -0
  308. cli/logic/embeddings_cli.py +43 -0
  309. cli/logic/governance/__init__.py +16 -0
  310. cli/logic/governance/engine.py +216 -0
  311. cli/logic/governance/forensics_service.py +67 -0
  312. cli/logic/governance/limb_status_service.py +83 -0
  313. cli/logic/governance/renderer.py +115 -0
  314. cli/logic/governance/traceability_service.py +78 -0
  315. cli/logic/governance_logic.py +33 -0
  316. cli/logic/hub/__init__.py +14 -0
  317. cli/logic/hub/app.py +107 -0
  318. cli/logic/hub/formatter.py +29 -0
  319. cli/logic/hub/introspection.py +20 -0
  320. cli/logic/hub/repository.py +17 -0
  321. cli/logic/init.py +22 -0
  322. cli/logic/interactive_test/__init__.py +21 -0
  323. cli/logic/interactive_test/session.py +102 -0
  324. cli/logic/interactive_test/steps/__init__.py +23 -0
  325. cli/logic/interactive_test/steps/execution.py +53 -0
  326. cli/logic/interactive_test/steps/generation.py +88 -0
  327. cli/logic/interactive_test/steps/healing.py +79 -0
  328. cli/logic/interactive_test/steps/utils.py +31 -0
  329. cli/logic/interactive_test/steps/verification.py +71 -0
  330. cli/logic/interactive_test/ui.py +203 -0
  331. cli/logic/interactive_test/workflow.py +168 -0
  332. cli/logic/interactive_test_logic.py +41 -0
  333. cli/logic/knowledge.py +47 -0
  334. cli/logic/legacy_scan_logic.py +306 -0
  335. cli/logic/list_audits.py +49 -0
  336. cli/logic/log_audit.py +53 -0
  337. cli/logic/new.py +8 -0
  338. cli/logic/project_docs.py +28 -0
  339. cli/logic/reconcile.py +127 -0
  340. cli/logic/refusal_inspect_logic.py +208 -0
  341. cli/logic/report.py +47 -0
  342. cli/logic/status.py +47 -0
  343. cli/logic/symbol_drift.py +77 -0
  344. cli/logic/sync.py +48 -0
  345. cli/logic/sync_domains.py +72 -0
  346. cli/logic/sync_manifest.py +31 -0
  347. cli/logic/tools.py +133 -0
  348. cli/logic/utils_migration.py +43 -0
  349. cli/logic/validate.py +107 -0
  350. cli/logic/vector_drift.py +109 -0
  351. cli/logic/yaml_processor.py +5 -0
  352. cli/renderers/audit_detail.py +37 -0
  353. cli/renderers/audit_overview.py +39 -0
  354. cli/resources/__init__.py +27 -0
  355. cli/resources/admin/__init__.py +23 -0
  356. cli/resources/admin/coverage.py +63 -0
  357. cli/resources/admin/debt_scan.py +195 -0
  358. cli/resources/admin/forensics.py +97 -0
  359. cli/resources/admin/health.py +66 -0
  360. cli/resources/admin/hub.py +9 -0
  361. cli/resources/admin/meta.py +47 -0
  362. cli/resources/admin/patterns.py +28 -0
  363. cli/resources/admin/refusals.py +31 -0
  364. cli/resources/admin/self_check.py +175 -0
  365. cli/resources/admin/status.py +66 -0
  366. cli/resources/admin/summary.py +67 -0
  367. cli/resources/admin/traces.py +46 -0
  368. cli/resources/admin/validate_env.py +56 -0
  369. cli/resources/code/__init__.py +31 -0
  370. cli/resources/code/actions.py +48 -0
  371. cli/resources/code/audit.py +416 -0
  372. cli/resources/code/audit_duplicates.py +22 -0
  373. cli/resources/code/check_imports.py +75 -0
  374. cli/resources/code/check_ui.py +62 -0
  375. cli/resources/code/clarity.py +51 -0
  376. cli/resources/code/complexity.py +55 -0
  377. cli/resources/code/docstrings.py +51 -0
  378. cli/resources/code/fix_atomic.py +51 -0
  379. cli/resources/code/format.py +62 -0
  380. cli/resources/code/hub.py +10 -0
  381. cli/resources/code/integrity.py +75 -0
  382. cli/resources/code/lint.py +37 -0
  383. cli/resources/code/logging.py +49 -0
  384. cli/resources/code/refactor.py +32 -0
  385. cli/resources/code/test.py +30 -0
  386. cli/resources/coherence/__init__.py +13 -0
  387. cli/resources/coherence/check.py +111 -0
  388. cli/resources/coherence/hub.py +13 -0
  389. cli/resources/coherence/repair_counts.py +73 -0
  390. cli/resources/coherence/report.py +144 -0
  391. cli/resources/coherence/seed.py +297 -0
  392. cli/resources/coherence/supersede.py +124 -0
  393. cli/resources/coherence/triage.py +81 -0
  394. cli/resources/constitution/__init__.py +19 -0
  395. cli/resources/constitution/audit.py +49 -0
  396. cli/resources/constitution/query.py +45 -0
  397. cli/resources/constitution/status.py +34 -0
  398. cli/resources/constitution/validate.py +36 -0
  399. cli/resources/context/__init__.py +21 -0
  400. cli/resources/context/build.py +374 -0
  401. cli/resources/context/cache.py +156 -0
  402. cli/resources/context/explain.py +140 -0
  403. cli/resources/context/hub.py +11 -0
  404. cli/resources/context/search.py +114 -0
  405. cli/resources/database/__init__.py +13 -0
  406. cli/resources/database/cleanup.py +107 -0
  407. cli/resources/database/export.py +61 -0
  408. cli/resources/database/hub.py +11 -0
  409. cli/resources/database/migrate.py +57 -0
  410. cli/resources/database/status.py +101 -0
  411. cli/resources/database/sync.py +84 -0
  412. cli/resources/database/sync_env.py +76 -0
  413. cli/resources/database/sync_registry.py +48 -0
  414. cli/resources/dev/__init__.py +14 -0
  415. cli/resources/dev/hub.py +11 -0
  416. cli/resources/dev/refactor.py +92 -0
  417. cli/resources/dev/stability.py +60 -0
  418. cli/resources/dev/strategic_audit.py +113 -0
  419. cli/resources/dev/sync.py +51 -0
  420. cli/resources/dev/test.py +34 -0
  421. cli/resources/intent/__init__.py +11 -0
  422. cli/resources/intent/hub.py +9 -0
  423. cli/resources/intent/sync_vocabulary.py +396 -0
  424. cli/resources/project/__init__.py +19 -0
  425. cli/resources/project/docs.py +41 -0
  426. cli/resources/project/new.py +40 -0
  427. cli/resources/project/onboard.py +31 -0
  428. cli/resources/proposals/__init__.py +28 -0
  429. cli/resources/proposals/create.py +82 -0
  430. cli/resources/proposals/integrate.py +49 -0
  431. cli/resources/proposals/list.py +76 -0
  432. cli/resources/proposals/manage.py +117 -0
  433. cli/resources/runtime/__init__.py +9 -0
  434. cli/resources/runtime/health.py +925 -0
  435. cli/resources/secrets/__init__.py +10 -0
  436. cli/resources/secrets/hub.py +9 -0
  437. cli/resources/secrets/manage.py +309 -0
  438. cli/resources/symbols/__init__.py +13 -0
  439. cli/resources/symbols/audit.py +46 -0
  440. cli/resources/symbols/fix_ids.py +43 -0
  441. cli/resources/symbols/hub.py +11 -0
  442. cli/resources/symbols/resolve_duplicates.py +30 -0
  443. cli/resources/symbols/sync.py +39 -0
  444. cli/resources/symbols/tag.py +47 -0
  445. cli/resources/vectors/__init__.py +11 -0
  446. cli/resources/vectors/cleanup.py +95 -0
  447. cli/resources/vectors/hub.py +9 -0
  448. cli/resources/vectors/query.py +105 -0
  449. cli/resources/vectors/status.py +30 -0
  450. cli/resources/vectors/sync.py +57 -0
  451. cli/resources/vectors/sync_code.py +67 -0
  452. cli/resources/workers/__init__.py +13 -0
  453. cli/resources/workers/blackboard.py +253 -0
  454. cli/resources/workers/remediate.py +337 -0
  455. cli/resources/workers/run.py +140 -0
  456. cli/utils/__init__.py +32 -0
  457. cli/utils/annotation_formatter.py +154 -0
  458. cli/utils/decorators.py +184 -0
  459. cli/utils/display.py +79 -0
  460. cli/utils/exit_codes.py +59 -0
  461. cli/utils/helpers.py +34 -0
  462. cli/utils/prompts.py +21 -0
  463. core_runtime-0.1.1.dist-info/LICENSE +21 -0
  464. core_runtime-0.1.1.dist-info/METADATA +346 -0
  465. core_runtime-0.1.1.dist-info/RECORD +962 -0
  466. core_runtime-0.1.1.dist-info/WHEEL +4 -0
  467. core_runtime-0.1.1.dist-info/entry_points.txt +4 -0
  468. mind/__init__.py +4 -0
  469. mind/coherence/__init__.py +1 -0
  470. mind/coherence/checker.py +314 -0
  471. mind/coherence/checks/__init__.py +4 -0
  472. mind/coherence/checks/base.py +34 -0
  473. mind/coherence/checks/r1_scoped.py +228 -0
  474. mind/coherence/checks/row2_grounding.py +69 -0
  475. mind/coherence/checks/row3_citation.py +119 -0
  476. mind/coherence/checks/row4_naming.py +126 -0
  477. mind/coherence/checks/sameconcern.py +136 -0
  478. mind/coherence/checks/specgap.py +233 -0
  479. mind/coherence/checks/vocabulary.py +112 -0
  480. mind/coherence/llm_judge.py +207 -0
  481. mind/enforcement/audit.py +78 -0
  482. mind/governance/__init__.py +22 -0
  483. mind/governance/assumption_extractor.py +326 -0
  484. mind/governance/audit_context.py +520 -0
  485. mind/governance/audit_postprocessor.py +36 -0
  486. mind/governance/audit_report_writer.py +46 -0
  487. mind/governance/audit_types.py +98 -0
  488. mind/governance/auditor.py +179 -0
  489. mind/governance/authority_package_builder.py +502 -0
  490. mind/governance/constitutional_auditor_dynamic.py +362 -0
  491. mind/governance/enforcement/__init__.py +24 -0
  492. mind/governance/enforcement_loader.py +245 -0
  493. mind/governance/enforcement_methods.py +28 -0
  494. mind/governance/entry_point_policy.py +62 -0
  495. mind/governance/executable_rule.py +127 -0
  496. mind/governance/filtered_audit.py +272 -0
  497. mind/governance/finding_processor.py +76 -0
  498. mind/governance/meta_validator.py +259 -0
  499. mind/governance/micro_proposal_validator.py +169 -0
  500. mind/governance/policy_coverage_service.py +183 -0
  501. mind/governance/policy_rule.py +94 -0
  502. mind/governance/rule_conflict_detector.py +127 -0
  503. mind/governance/rule_executor.py +306 -0
  504. mind/governance/rule_extractor.py +376 -0
  505. mind/governance/stateless_audit.py +206 -0
  506. mind/governance/violation_report.py +136 -0
  507. mind/logic/engines/_knowledge_gate_duplication.py +117 -0
  508. mind/logic/engines/action_gate.py +76 -0
  509. mind/logic/engines/artifact_gate.py +1168 -0
  510. mind/logic/engines/ast_gate/__init__.py +9 -0
  511. mind/logic/engines/ast_gate/base.py +263 -0
  512. mind/logic/engines/ast_gate/checks/__init__.py +35 -0
  513. mind/logic/engines/ast_gate/checks/async_checks.py +276 -0
  514. mind/logic/engines/ast_gate/checks/capability_checks.py +197 -0
  515. mind/logic/engines/ast_gate/checks/conservation_checks.py +126 -0
  516. mind/logic/engines/ast_gate/checks/generic_checks.py +244 -0
  517. mind/logic/engines/ast_gate/checks/import_checks.py +164 -0
  518. mind/logic/engines/ast_gate/checks/knowledge_source_check.py +88 -0
  519. mind/logic/engines/ast_gate/checks/logging_checks.py +133 -0
  520. mind/logic/engines/ast_gate/checks/metadata_checks.py +242 -0
  521. mind/logic/engines/ast_gate/checks/modularity_checks.py +436 -0
  522. mind/logic/engines/ast_gate/checks/naming_checks.py +120 -0
  523. mind/logic/engines/ast_gate/checks/prompt_model_checks.py +83 -0
  524. mind/logic/engines/ast_gate/checks/protected_namespace_access_check.py +298 -0
  525. mind/logic/engines/ast_gate/checks/purity_checks.py +421 -0
  526. mind/logic/engines/ast_gate/checks/purity_enforcement_check.py +56 -0
  527. mind/logic/engines/ast_gate/checks/runtime_import_boundary.py +198 -0
  528. mind/logic/engines/ast_gate/checks/schema_conformance_checks.py +130 -0
  529. mind/logic/engines/ast_gate/engine.py +317 -0
  530. mind/logic/engines/ast_gate.py +19 -0
  531. mind/logic/engines/base.py +106 -0
  532. mind/logic/engines/cli_gate/__init__.py +25 -0
  533. mind/logic/engines/cli_gate/base_check.py +45 -0
  534. mind/logic/engines/cli_gate/checks/__init__.py +31 -0
  535. mind/logic/engines/cli_gate/checks/async_execution.py +65 -0
  536. mind/logic/engines/cli_gate/checks/dangerous_explicit.py +60 -0
  537. mind/logic/engines/cli_gate/checks/discovery_strict.py +167 -0
  538. mind/logic/engines/cli_gate/checks/help_required.py +43 -0
  539. mind/logic/engines/cli_gate/checks/no_duplicates.py +57 -0
  540. mind/logic/engines/cli_gate/checks/no_layer_exposure.py +48 -0
  541. mind/logic/engines/cli_gate/checks/resource_first.py +58 -0
  542. mind/logic/engines/cli_gate/checks/standard_verbs.py +50 -0
  543. mind/logic/engines/cli_gate/engine.py +211 -0
  544. mind/logic/engines/glob_gate.py +214 -0
  545. mind/logic/engines/knowledge_gate.py +410 -0
  546. mind/logic/engines/llm_gate.py +407 -0
  547. mind/logic/engines/llm_gate_stub.py +67 -0
  548. mind/logic/engines/passive_gate.py +45 -0
  549. mind/logic/engines/regex_gate.py +97 -0
  550. mind/logic/engines/registry.py +134 -0
  551. mind/logic/engines/runtime_gate.py +265 -0
  552. mind/logic/engines/taxonomy_gate.py +229 -0
  553. mind/logic/engines/workflow_gate/__init__.py +22 -0
  554. mind/logic/engines/workflow_gate/base_check.py +42 -0
  555. mind/logic/engines/workflow_gate/checks/__init__.py +32 -0
  556. mind/logic/engines/workflow_gate/checks/alignment.py +93 -0
  557. mind/logic/engines/workflow_gate/checks/audit.py +80 -0
  558. mind/logic/engines/workflow_gate/checks/canary.py +47 -0
  559. mind/logic/engines/workflow_gate/checks/coverage.py +74 -0
  560. mind/logic/engines/workflow_gate/checks/dead_code.py +53 -0
  561. mind/logic/engines/workflow_gate/checks/import_resolution.py +97 -0
  562. mind/logic/engines/workflow_gate/checks/linter.py +104 -0
  563. mind/logic/engines/workflow_gate/checks/quality.py +49 -0
  564. mind/logic/engines/workflow_gate/checks/ruff_format.py +99 -0
  565. mind/logic/engines/workflow_gate/checks/tests.py +81 -0
  566. mind/logic/engines/workflow_gate/engine.py +207 -0
  567. shared/__init__.py +32 -0
  568. shared/action_logger.py +61 -0
  569. shared/action_types.py +199 -0
  570. shared/activity_logging.py +149 -0
  571. shared/ai/constitutional_envelope.py +341 -0
  572. shared/ai/prompt_model.py +585 -0
  573. shared/ai/response_parser.py +191 -0
  574. shared/ast_utility.py +279 -0
  575. shared/atomic_action.py +117 -0
  576. shared/cli/__init__.py +6 -0
  577. shared/cli/app_introspection.py +134 -0
  578. shared/cli/command_meta.py +224 -0
  579. shared/cli_types.py +92 -0
  580. shared/component_primitive.py +216 -0
  581. shared/config.py +216 -0
  582. shared/config_loader.py +54 -0
  583. shared/context.py +113 -0
  584. shared/exceptions.py +100 -0
  585. shared/governance/__init__.py +9 -0
  586. shared/governance/coherence_harvester.py +258 -0
  587. shared/governance_token.py +77 -0
  588. shared/infrastructure/__init__.py +5 -0
  589. shared/infrastructure/adapters/__init__.py +5 -0
  590. shared/infrastructure/adapters/embedding_provider.py +66 -0
  591. shared/infrastructure/bootstrap_registry.py +57 -0
  592. shared/infrastructure/clients/__init__.py +5 -0
  593. shared/infrastructure/clients/qdrant_client.py +455 -0
  594. shared/infrastructure/config_service.py +382 -0
  595. shared/infrastructure/config_validator.py +70 -0
  596. shared/infrastructure/context/__init__.py +45 -0
  597. shared/infrastructure/context/builder.py +804 -0
  598. shared/infrastructure/context/cache.py +101 -0
  599. shared/infrastructure/context/database.py +205 -0
  600. shared/infrastructure/context/limb_workspace.py +134 -0
  601. shared/infrastructure/context/models.py +65 -0
  602. shared/infrastructure/context/providers/__init__.py +18 -0
  603. shared/infrastructure/context/providers/ast.py +211 -0
  604. shared/infrastructure/context/providers/db.py +165 -0
  605. shared/infrastructure/context/providers/vectors.py +195 -0
  606. shared/infrastructure/context/redactor.py +109 -0
  607. shared/infrastructure/context/serializers.py +144 -0
  608. shared/infrastructure/context/service.py +271 -0
  609. shared/infrastructure/context/validator.py +247 -0
  610. shared/infrastructure/database/models/__init__.py +80 -0
  611. shared/infrastructure/database/models/autonomous_proposals.py +83 -0
  612. shared/infrastructure/database/models/decision_traces.py +129 -0
  613. shared/infrastructure/database/models/governance.py +183 -0
  614. shared/infrastructure/database/models/knowledge.py +205 -0
  615. shared/infrastructure/database/models/learning.py +99 -0
  616. shared/infrastructure/database/models/llm_config.py +274 -0
  617. shared/infrastructure/database/models/operations.py +152 -0
  618. shared/infrastructure/database/models/refusals.py +147 -0
  619. shared/infrastructure/database/models/system.py +124 -0
  620. shared/infrastructure/database/models/vectors.py +113 -0
  621. shared/infrastructure/database/models/workers.py +96 -0
  622. shared/infrastructure/database/session_manager.py +166 -0
  623. shared/infrastructure/diagnostic_service.py +103 -0
  624. shared/infrastructure/events/__init__.py +5 -0
  625. shared/infrastructure/events/base.py +44 -0
  626. shared/infrastructure/events/bus.py +76 -0
  627. shared/infrastructure/git_service.py +385 -0
  628. shared/infrastructure/intent/action_risk.py +135 -0
  629. shared/infrastructure/intent/audit_verdict.py +131 -0
  630. shared/infrastructure/intent/autonomy_dirty_tree.py +104 -0
  631. shared/infrastructure/intent/canonical_enums.py +116 -0
  632. shared/infrastructure/intent/cognitive_roles.py +96 -0
  633. shared/infrastructure/intent/errors.py +13 -0
  634. shared/infrastructure/intent/filesystem_operations.py +359 -0
  635. shared/infrastructure/intent/intent_connector.py +157 -0
  636. shared/infrastructure/intent/intent_repository.py +707 -0
  637. shared/infrastructure/intent/intent_validator.py +248 -0
  638. shared/infrastructure/intent/operational_capabilities.py +470 -0
  639. shared/infrastructure/intent/operational_config.py +1343 -0
  640. shared/infrastructure/intent/operational_mode.py +66 -0
  641. shared/infrastructure/intent/task_type_phases.py +180 -0
  642. shared/infrastructure/intent/test_coverage_paths.py +181 -0
  643. shared/infrastructure/intent/vocabulary_projection.py +241 -0
  644. shared/infrastructure/knowledge/knowledge_service.py +155 -0
  645. shared/infrastructure/knowledge_graph_service.py +214 -0
  646. shared/infrastructure/llm/client.py +448 -0
  647. shared/infrastructure/llm/client_registry.py +153 -0
  648. shared/infrastructure/llm/fallback_client.py +144 -0
  649. shared/infrastructure/llm/providers/anthropic.py +113 -0
  650. shared/infrastructure/llm/providers/base.py +130 -0
  651. shared/infrastructure/llm/providers/ollama.py +265 -0
  652. shared/infrastructure/llm/providers/openai.py +168 -0
  653. shared/infrastructure/repositories/__init__.py +5 -0
  654. shared/infrastructure/repositories/db/__init__.py +5 -0
  655. shared/infrastructure/repositories/db/common.py +138 -0
  656. shared/infrastructure/repositories/db/engine.py +26 -0
  657. shared/infrastructure/repositories/db/migration_service.py +75 -0
  658. shared/infrastructure/repositories/db/status_service.py +61 -0
  659. shared/infrastructure/repositories/memory_repository.py +134 -0
  660. shared/infrastructure/repositories/symbol_definition_repository.py +170 -0
  661. shared/infrastructure/repositories/task_repository.py +59 -0
  662. shared/infrastructure/repositories/vector_link_repository.py +83 -0
  663. shared/infrastructure/rooted_repository.py +50 -0
  664. shared/infrastructure/secrets_service.py +317 -0
  665. shared/infrastructure/specs/__init__.py +9 -0
  666. shared/infrastructure/specs/specs_repository.py +100 -0
  667. shared/infrastructure/storage/file_classifier.py +32 -0
  668. shared/infrastructure/storage/file_handler.py +330 -0
  669. shared/infrastructure/storage/file_provider.py +233 -0
  670. shared/infrastructure/storage/integrity_service.py +108 -0
  671. shared/infrastructure/validation/black_formatter.py +41 -0
  672. shared/infrastructure/validation/quality.py +46 -0
  673. shared/infrastructure/validation/ruff_linter.py +104 -0
  674. shared/infrastructure/validation/syntax_checker.py +45 -0
  675. shared/infrastructure/validation/test_runner.py +167 -0
  676. shared/infrastructure/validation/yaml_validator.py +45 -0
  677. shared/infrastructure/vector/__init__.py +15 -0
  678. shared/infrastructure/vector/adapters/__init__.py +20 -0
  679. shared/infrastructure/vector/adapters/constitutional/__init__.py +26 -0
  680. shared/infrastructure/vector/adapters/constitutional/chunker.py +246 -0
  681. shared/infrastructure/vector/adapters/constitutional/doc_key_resolver.py +109 -0
  682. shared/infrastructure/vector/adapters/constitutional/item_builder.py +158 -0
  683. shared/infrastructure/vector/adapters/constitutional/utils.py +39 -0
  684. shared/infrastructure/vector/adapters/constitutional_adapter.py +309 -0
  685. shared/infrastructure/vector/adapters/specs_adapter.py +171 -0
  686. shared/infrastructure/vector/cognitive_adapter.py +119 -0
  687. shared/infrastructure/vector/vector_index_service.py +230 -0
  688. shared/logger.py +195 -0
  689. shared/models/__init__.py +47 -0
  690. shared/models/action_result.py +77 -0
  691. shared/models/audit_models.py +106 -0
  692. shared/models/audit_rendering.py +30 -0
  693. shared/models/capability_models.py +22 -0
  694. shared/models/constitutional_validation.py +185 -0
  695. shared/models/drift_models.py +24 -0
  696. shared/models/embedding_payload.py +45 -0
  697. shared/models/execution_models.py +71 -0
  698. shared/models/pattern_graph.py +62 -0
  699. shared/models/prompt_model.py +244 -0
  700. shared/models/refusal_result.py +294 -0
  701. shared/models/remediation.py +35 -0
  702. shared/models/validation_result.py +34 -0
  703. shared/models/vector_models.py +62 -0
  704. shared/models/workflow_models.py +242 -0
  705. shared/path_resolver.py +408 -0
  706. shared/path_utils.py +60 -0
  707. shared/processors/base_processor.py +171 -0
  708. shared/processors/yaml_processor.py +72 -0
  709. shared/protocols/__init__.py +21 -0
  710. shared/protocols/brain_services.py +35 -0
  711. shared/protocols/cognitive.py +35 -0
  712. shared/protocols/executor.py +47 -0
  713. shared/protocols/interpreter.py +24 -0
  714. shared/protocols/knowledge.py +21 -0
  715. shared/protocols/llm.py +25 -0
  716. shared/protocols/typer_protocols.py +37 -0
  717. shared/time.py +18 -0
  718. shared/universal.py +43 -0
  719. shared/utils/__init__.py +81 -0
  720. shared/utils/audit_grouping.py +50 -0
  721. shared/utils/common_knowledge.py +82 -0
  722. shared/utils/domain_mapper.py +61 -0
  723. shared/utils/embedding_utils.py +182 -0
  724. shared/utils/glob_match.py +93 -0
  725. shared/utils/header_tools.py +177 -0
  726. shared/utils/parallel_processor.py +60 -0
  727. shared/utils/parsing.py +189 -0
  728. shared/utils/path_utils.py +268 -0
  729. shared/utils/subprocess_utils.py +87 -0
  730. shared/workers/__init__.py +19 -0
  731. shared/workers/base.py +533 -0
  732. shared/workers/declaration_validator.py +124 -0
  733. shared/workers/loop_hold_telemetry.py +210 -0
  734. shared/workers/schedule.py +123 -0
  735. will/__init__.py +4 -0
  736. will/agents/__init__.py +4 -0
  737. will/agents/base_planner.py +133 -0
  738. will/agents/code_generation/__init__.py +15 -0
  739. will/agents/code_generation/code_generator.py +247 -0
  740. will/agents/code_generation/context_formatters.py +99 -0
  741. will/agents/code_generation/correction_engine.py +157 -0
  742. will/agents/code_generation/extraction.py +165 -0
  743. will/agents/code_generation/pattern_validator.py +264 -0
  744. will/agents/code_generation/prompt_builders.py +209 -0
  745. will/agents/coder_agent.py +229 -0
  746. will/agents/coder_agent_refusal_handler.py +168 -0
  747. will/agents/cognitive_orchestrator.py +152 -0
  748. will/agents/conversational/__init__.py +13 -0
  749. will/agents/conversational/agent.py +271 -0
  750. will/agents/conversational/factory.py +72 -0
  751. will/agents/conversational/helpers.py +116 -0
  752. will/agents/execution_agent.py +294 -0
  753. will/agents/governance_mixin.py +132 -0
  754. will/agents/planner_agent.py +261 -0
  755. will/agents/resource_selector.py +228 -0
  756. will/agents/strategic_auditor/__init__.py +15 -0
  757. will/agents/strategic_auditor/agent.py +199 -0
  758. will/agents/strategic_auditor/context_gatherer.py +586 -0
  759. will/agents/strategic_auditor/effects.py +136 -0
  760. will/agents/strategic_auditor/models.py +61 -0
  761. will/agents/strategic_auditor/reasoning.py +169 -0
  762. will/agents/tagger_agent.py +294 -0
  763. will/agents/traced_agent_mixin.py +33 -0
  764. will/autonomy/__init__.py +20 -0
  765. will/autonomy/autonomous_developer.py +127 -0
  766. will/autonomy/proposal.py +585 -0
  767. will/autonomy/proposal_execution_pipeline.py +264 -0
  768. will/autonomy/proposal_executor.py +410 -0
  769. will/autonomy/proposal_mapper.py +187 -0
  770. will/autonomy/proposal_repository.py +118 -0
  771. will/autonomy/proposal_service.py +251 -0
  772. will/autonomy/proposal_state_manager.py +239 -0
  773. will/deciders/__init__.py +9 -0
  774. will/deciders/governance_decider.py +207 -0
  775. will/governance/__init__.py +13 -0
  776. will/governance/audit_remediation_runner.py +197 -0
  777. will/governance/audit_runner.py +368 -0
  778. will/governance/census_runner.py +278 -0
  779. will/governance/coverage_runner.py +489 -0
  780. will/governance/daemon_runner.py +164 -0
  781. will/governance/fix_runner.py +693 -0
  782. will/governance/inspect_runner.py +521 -0
  783. will/governance/integrity_runner.py +66 -0
  784. will/governance/lint_runner.py +93 -0
  785. will/governance/refactor_runner.py +372 -0
  786. will/governance/sync_runner.py +186 -0
  787. will/interpreters/__init__.py +44 -0
  788. will/interpreters/cli_args_interpreter.py +106 -0
  789. will/interpreters/natural_language_interpreter.py +276 -0
  790. will/interpreters/request_interpreter.py +126 -0
  791. will/lifecycle/__init__.py +12 -0
  792. will/lifecycle/integration_runner.py +54 -0
  793. will/maintenance/metadata_scribe_service.py +64 -0
  794. will/orchestration/__init__.py +4 -0
  795. will/orchestration/cognitive_service.py +185 -0
  796. will/orchestration/decision_tracer.py +257 -0
  797. will/orchestration/intent_alignment.py +59 -0
  798. will/orchestration/intent_guard.py +20 -0
  799. will/orchestration/phase_registry.py +92 -0
  800. will/orchestration/process_orchestrator.py +270 -0
  801. will/orchestration/prompt_pipeline.py +174 -0
  802. will/orchestration/remediation_orchestrator.py +292 -0
  803. will/orchestration/self_correction_engine.py +154 -0
  804. will/orchestration/validation_pipeline.py +45 -0
  805. will/orchestration/workflow_orchestrator.py +277 -0
  806. will/phases/__init__.py +24 -0
  807. will/phases/audit_phase.py +152 -0
  808. will/phases/canary/pytest_runner.py +156 -0
  809. will/phases/canary/result_builder.py +130 -0
  810. will/phases/canary/test_discovery.py +104 -0
  811. will/phases/canary_validation_phase.py +188 -0
  812. will/phases/code_generation/artifact_saver.py +175 -0
  813. will/phases/code_generation/code_sensor.py +117 -0
  814. will/phases/code_generation/file_path_extractor.py +53 -0
  815. will/phases/code_generation/work_directory_manager.py +83 -0
  816. will/phases/code_generation_phase.py +480 -0
  817. will/phases/execution_phase.py +179 -0
  818. will/phases/interpret_phase.py +266 -0
  819. will/phases/load_phase.py +102 -0
  820. will/phases/parse_phase.py +117 -0
  821. will/phases/planning_phase.py +182 -0
  822. will/phases/runtime_phase.py +112 -0
  823. will/phases/sandbox_validation_phase.py +130 -0
  824. will/phases/style_check_phase.py +209 -0
  825. will/phases/test_generation_phase.py +159 -0
  826. will/self_healing/alignment/persistence.py +53 -0
  827. will/self_healing/alignment/sandbox.py +51 -0
  828. will/self_healing/alignment/specialists.py +165 -0
  829. will/self_healing/alignment_orchestrator.py +140 -0
  830. will/self_healing/audit_remediation_service.py +199 -0
  831. will/self_healing/batch_remediation_service.py +280 -0
  832. will/self_healing/capability_reconciliation_service.py +96 -0
  833. will/self_healing/capability_tagging_service.py +224 -0
  834. will/self_healing/clarity_service.py +204 -0
  835. will/self_healing/complexity_service.py +260 -0
  836. will/self_healing/context_aware_test_generator.py +298 -0
  837. will/self_healing/coverage_remediation_service.py +97 -0
  838. will/self_healing/coverage_watcher.py +192 -0
  839. will/self_healing/enrichment_service.py +211 -0
  840. will/self_healing/linelength_service.py +168 -0
  841. will/self_healing/modularity_remediation_service.py +203 -0
  842. will/self_healing/remediation_evidence_writer.py +144 -0
  843. will/self_healing/remediation_executor.py +113 -0
  844. will/self_healing/remediation_interpretation/__init__.py +1 -0
  845. will/self_healing/remediation_interpretation/file_context_assembler.py +383 -0
  846. will/self_healing/remediation_interpretation/file_role_detector.py +599 -0
  847. will/self_healing/remediation_interpretation/finding_normalizer.py +221 -0
  848. will/self_healing/remediation_interpretation/models.py +198 -0
  849. will/self_healing/remediation_interpretation/reasoning_brief_builder.py +235 -0
  850. will/self_healing/remediation_interpretation/responsibility_extractor.py +421 -0
  851. will/self_healing/remediation_interpretation/service.py +202 -0
  852. will/self_healing/remediation_interpretation/strategy_catalog.py +252 -0
  853. will/self_healing/remediation_interpretation/strategy_selector.py +395 -0
  854. will/self_healing/remediation_pattern_matcher.py +126 -0
  855. will/self_healing/simple_test_generator.py +252 -0
  856. will/self_healing/single_file_remediation.py +137 -0
  857. will/self_healing/test_generation/automatic_repair.py +377 -0
  858. will/self_healing/test_generation/code_extractor.py +238 -0
  859. will/self_healing/test_generation/context_builder.py +140 -0
  860. will/self_healing/test_generation/executor.py +64 -0
  861. will/self_healing/test_generation/failure_parser.py +37 -0
  862. will/self_healing/test_generation/generation_workflow.py +140 -0
  863. will/self_healing/test_generation/generator.py +283 -0
  864. will/self_healing/test_generation/llm_correction.py +160 -0
  865. will/self_healing/test_generation/repair_workflow.py +128 -0
  866. will/self_healing/test_generation/single_test_fixer.py +77 -0
  867. will/self_healing/test_generation/test_extractor.py +50 -0
  868. will/self_healing/test_generation/test_scorer.py +53 -0
  869. will/self_healing/test_generation/test_validator.py +64 -0
  870. will/self_healing/test_generator.py +12 -0
  871. will/strategists/__init__.py +46 -0
  872. will/strategists/base_strategist.py +29 -0
  873. will/strategists/clarity_strategist.py +55 -0
  874. will/strategists/complexity_strategist.py +55 -0
  875. will/strategists/fix_strategist.py +467 -0
  876. will/strategists/sync_strategist.py +369 -0
  877. will/strategists/test_strategist.py +140 -0
  878. will/strategists/validation_strategist.py +315 -0
  879. will/test_generation/__init__.py +46 -0
  880. will/test_generation/adaptive_test_generator.py +123 -0
  881. will/test_generation/artifacts.py +102 -0
  882. will/test_generation/harness_detection.py +103 -0
  883. will/test_generation/helpers/__init__.py +14 -0
  884. will/test_generation/helpers/context_extractor.py +100 -0
  885. will/test_generation/helpers/test_executor.py +230 -0
  886. will/test_generation/llm_output.py +62 -0
  887. will/test_generation/models.py +25 -0
  888. will/test_generation/persistence.py +248 -0
  889. will/test_generation/phases/__init__.py +16 -0
  890. will/test_generation/phases/generation_phase.py +150 -0
  891. will/test_generation/phases/load_phase.py +53 -0
  892. will/test_generation/phases/parse_phase.py +50 -0
  893. will/test_generation/prompt_engine.py +123 -0
  894. will/test_generation/result_aggregator.py +73 -0
  895. will/test_generation/sandbox.py +203 -0
  896. will/test_generation/strategy_link.py +56 -0
  897. will/test_generation/test_extractor.py +140 -0
  898. will/test_generation/validation.py +89 -0
  899. will/tools/__init__.py +13 -0
  900. will/tools/anchor_builder.py +111 -0
  901. will/tools/anchor_search.py +73 -0
  902. will/tools/anchors/discovery.py +55 -0
  903. will/tools/anchors/storage.py +32 -0
  904. will/tools/architectural_context_builder.py +94 -0
  905. will/tools/cognitive_toolbox.py +47 -0
  906. will/tools/context/code_snippet_extractor.py +83 -0
  907. will/tools/context/embedding_search.py +76 -0
  908. will/tools/context/formatter.py +87 -0
  909. will/tools/context/models.py +38 -0
  910. will/tools/context/query_builder.py +42 -0
  911. will/tools/context/retriever.py +182 -0
  912. will/tools/context/standards.py +53 -0
  913. will/tools/file_navigator.py +180 -0
  914. will/tools/layers.py +31 -0
  915. will/tools/module_anchor_generator.py +137 -0
  916. will/tools/module_descriptor.py +154 -0
  917. will/tools/policy_vectorizer.py +184 -0
  918. will/tools/symbol_finder.py +188 -0
  919. will/tools/tool_generator.py +103 -0
  920. will/workers/audit_ingest_worker.py +207 -0
  921. will/workers/audit_violation_filter.py +108 -0
  922. will/workers/audit_violation_normalizer.py +108 -0
  923. will/workers/audit_violation_sensor.py +370 -0
  924. will/workers/blackboard_shop_manager.py +280 -0
  925. will/workers/capability_tagger.py +153 -0
  926. will/workers/circuit_breaker.py +335 -0
  927. will/workers/coherence_sensor.py +212 -0
  928. will/workers/commit_reachability_auditor.py +135 -0
  929. will/workers/db_sync_worker.py +96 -0
  930. will/workers/governance_embedding/__init__.py +9 -0
  931. will/workers/governance_embedding/governance_embedder_worker.py +189 -0
  932. will/workers/intent_inspector.py +599 -0
  933. will/workers/observer_worker.py +158 -0
  934. will/workers/prompt_extractor_worker.py +241 -0
  935. will/workers/proposal_consumer_effects.py +216 -0
  936. will/workers/proposal_consumer_revival.py +131 -0
  937. will/workers/proposal_consumer_worker.py +271 -0
  938. will/workers/proposal_pipeline_shop_manager.py +273 -0
  939. will/workers/repo_crawler.py +171 -0
  940. will/workers/repo_embedding/__init__.py +18 -0
  941. will/workers/repo_embedding/helpers.py +245 -0
  942. will/workers/repo_embedding/repo_embedder_workers.py +163 -0
  943. will/workers/test_coverage_sensor.py +208 -0
  944. will/workers/test_remediator/__init__.py +12 -0
  945. will/workers/test_remediator/_operations.py +295 -0
  946. will/workers/test_remediator/worker.py +187 -0
  947. will/workers/test_runner_sensor.py +430 -0
  948. will/workers/violation_executor.py +496 -0
  949. will/workers/violation_remediator.py +394 -0
  950. will/workers/violation_remediator_blackboard.py +225 -0
  951. will/workers/violation_remediator_body/__init__.py +12 -0
  952. will/workers/violation_remediator_body/blackboard.py +139 -0
  953. will/workers/violation_remediator_body/ceremony.py +154 -0
  954. will/workers/violation_remediator_body/context.py +70 -0
  955. will/workers/violation_remediator_body/llm.py +112 -0
  956. will/workers/violation_remediator_body/models.py +35 -0
  957. will/workers/violation_remediator_body/worker.py +518 -0
  958. will/workers/violation_remediator_proposal.py +328 -0
  959. will/workers/worker_shop_manager.py +244 -0
  960. will/workflows/__init__.py +23 -0
  961. will/workflows/dev_sync_reporter.py +274 -0
  962. will/workflows/dev_sync_workflow.py +118 -0
@@ -0,0 +1,127 @@
1
+ # src/cli/commands/develop.py
2
+ """Unified interface for AI-native development.
3
+
4
+ Thin client over POST /v1/refactor/autonomous (ADR-057 D2). The A3 loop
5
+ runs server-side; this CLI dispatches the goal, polls the run resource,
6
+ and renders the outcome.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import logging
12
+ from pathlib import Path
13
+
14
+ import typer
15
+ from rich.console import Console
16
+ from rich.panel import Panel
17
+
18
+ from api.cli import CoreApiClient
19
+ from cli.utils import core_command
20
+
21
+
22
+ logger = logging.getLogger(__name__)
23
+ console = Console()
24
+ develop_app = typer.Typer(
25
+ help="AI-native development with constitutional governance", no_args_is_help=True
26
+ )
27
+
28
+
29
+ @develop_app.command("refactor")
30
+ @core_command(dangerous=True, requires_context=False)
31
+ # ID: 44c3e345-cc9a-4a81-a207-0ea84b69ff37
32
+ async def refactor_command(
33
+ ctx: typer.Context,
34
+ goal: str | None = typer.Argument(
35
+ None,
36
+ help="File path or high-level refactoring goal (e.g. 'src/utils.py' or 'Improve modularity of UserService').",
37
+ ),
38
+ from_file: Path | None = typer.Option(
39
+ None, "--from-file", "-f", help="Read the goal from a file."
40
+ ),
41
+ write: bool = typer.Option(
42
+ False, "--write", help="Actually apply changes to the codebase."
43
+ ),
44
+ ):
45
+ """Initiates an autonomous refactoring cycle via /v1/refactor/autonomous.
46
+
47
+ The command intelligently formats goals for INTERPRET phase:
48
+ - If goal looks like a file path: "refactor {path} for better modularity"
49
+ - If goal is natural language: passes as-is
50
+ """
51
+ _ = ctx
52
+ if not goal and (not from_file):
53
+ console.print(
54
+ "[red]❌ You must provide a goal either as an argument or with --from-file.[/red]"
55
+ )
56
+ raise typer.Exit(code=1)
57
+
58
+ raw_goal = (
59
+ from_file.read_text(encoding="utf-8").strip() if from_file else goal.strip()
60
+ )
61
+ goal_content = _format_refactor_goal(raw_goal)
62
+ if goal_content != raw_goal:
63
+ console.print(f"🔍 Formatted goal for INTERPRET phase: {goal_content}")
64
+
65
+ console.print(f"🚀 Starting autonomous refactor for: {goal_content}")
66
+ client = CoreApiClient()
67
+ initial = await client.refactor_autonomous(goal=goal_content, write=write)
68
+ run_id = initial.get("run_id")
69
+ if not run_id:
70
+ console.print(
71
+ f"[red]❌ refactor_autonomous failed to dispatch: {initial}[/red]"
72
+ )
73
+ raise typer.Exit(code=1)
74
+
75
+ console.print(f"[dim]Dispatched run {run_id} — polling…[/dim]")
76
+ final = await client.poll_refactor_run(run_id)
77
+
78
+ result = final.get("result") or {}
79
+ message = result.get("message") or final.get("error") or "(no message)"
80
+ if final.get("status") == "completed" and result.get("success"):
81
+ console.print(f"\n[bold green]✅ Success:[/bold green] {message}")
82
+ proposals = result.get("proposal_ids") or []
83
+ if proposals:
84
+ console.print(
85
+ f"[cyan]Generated {len(proposals)} proposal(s):[/cyan] "
86
+ + ", ".join(proposals[:5])
87
+ + (f" (+{len(proposals) - 5} more)" if len(proposals) > 5 else "")
88
+ )
89
+ else:
90
+ console.print(f"[red]Goal execution failed: {message}[/red]")
91
+ raise typer.Exit(code=1)
92
+
93
+
94
+ def _format_refactor_goal(raw_goal: str) -> str:
95
+ """Format raw goal into INTERPRET-friendly refactoring goal."""
96
+ refactor_keywords = [
97
+ "refactor",
98
+ "modularity",
99
+ "split",
100
+ "extract",
101
+ "improve",
102
+ "clarity",
103
+ ]
104
+ if any(keyword in raw_goal.lower() for keyword in refactor_keywords):
105
+ return raw_goal
106
+ if "/" in raw_goal or raw_goal.endswith(".py"):
107
+ return f"refactor {raw_goal} for better modularity"
108
+ return raw_goal
109
+
110
+
111
+ @develop_app.command("info")
112
+ # ID: 7964aa47-e138-4519-bdf3-e788b388e426
113
+ def info():
114
+ """Show information about the autonomous development system."""
115
+ body = (
116
+ "[bold cyan]CORE Autonomous Development[/bold cyan]\n\n"
117
+ "This command group uses the A3 (Planning-Specification-Execution) loop\n"
118
+ "to perform complex code modifications autonomously via the API.\n\n"
119
+ 'Usage: [yellow]core-admin develop refactor "your goal"[/yellow]\n\n'
120
+ "[bold]Smart Goal Formatting:[/bold]\n"
121
+ "• File paths are auto-formatted with refactoring context\n"
122
+ "• Natural language goals pass through unchanged\n\n"
123
+ "Examples:\n"
124
+ " core-admin develop refactor src/utils.py --write\n"
125
+ ' core-admin develop refactor "Improve clarity of AuthService" --write'
126
+ )
127
+ console.print(Panel.fit(body, border_style="cyan"))
@@ -0,0 +1,32 @@
1
+ # src/cli/commands/diagnostics.py
2
+
3
+ """
4
+ Diagnostic Command Group (Cleaned).
5
+
6
+ CONSTITUTIONAL PROMOTION (v2.6):
7
+ - Evacuated find-clusters and command-tree (Redundant aliases).
8
+ - Promoted debug-meta to admin.meta (ConstitutionalPathAnalyzer).
9
+ - Promoted unassigned-symbols to symbols.audit.
10
+
11
+ This file now only houses legacy Verb-First check shims.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import typer
17
+
18
+ from cli.logic.diagnostics_policy import policy_coverage
19
+ from cli.logic.diagnostics_registry import (
20
+ check_legacy_tags,
21
+ cli_registry,
22
+ manifest_hygiene,
23
+ )
24
+
25
+
26
+ app = typer.Typer(help="System integrity checks and constitutional auditing.")
27
+
28
+ # Register existing commands (These are still being promoted to Resource Neurons)
29
+ app.command("policy-coverage", help="Audits constitution coverage.")(policy_coverage)
30
+ app.command("manifest-hygiene", help="Checks capability manifests.")(manifest_hygiene)
31
+ app.command("cli-registry", help="Validates CLI registry schema.")(cli_registry)
32
+ app.command("legacy-tags", help="Scans for obsolete tags.")(check_legacy_tags)
@@ -0,0 +1,84 @@
1
+ # src/cli/commands/fix/__init__.py
2
+ """
3
+ Registers the 'fix' command group and its associated self-healing capabilities.
4
+
5
+ This module acts as a pure registration hub for the CLI.
6
+ Logic and UI helpers have been moved to prevent circular imports
7
+ between the CLI and the Atomic Body layers.
8
+
9
+ LEGACY ELIMINATION:
10
+ - Removed 'line-lengths' per Roadmap.
11
+ - Removed internal UI helpers to break circular dependencies.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import typer
17
+ from rich.console import Console
18
+
19
+ from shared.context import CoreContext
20
+ from shared.logger import getLogger
21
+
22
+
23
+ logger = getLogger(__name__)
24
+ console = Console()
25
+
26
+ # Configuration mapping for CLI metadata
27
+ COMMAND_CONFIG = {
28
+ "code-style": {"category": "formatting", "dangerous": False},
29
+ "headers": {"category": "compliance", "dangerous": True},
30
+ "clarity": {"category": "refactoring", "dangerous": True},
31
+ "complexity": {"category": "refactoring", "dangerous": True},
32
+ "ids": {"category": "metadata", "dangerous": True},
33
+ "purge-legacy-tags": {"category": "cleanup", "dangerous": True},
34
+ "policy-ids": {"category": "metadata", "dangerous": True},
35
+ "tags": {"category": "metadata", "dangerous": True},
36
+ "knowledge-graph": {"category": "database", "dangerous": False},
37
+ "duplicate-ids": {"category": "metadata", "dangerous": True},
38
+ "vector-sync": {"category": "database", "dangerous": True},
39
+ "atomic-actions": {"category": "compliance", "dangerous": True},
40
+ "body-ui": {"category": "governance", "dangerous": True},
41
+ "imports": {"category": "formatting", "dangerous": False},
42
+ }
43
+
44
+ fix_app = typer.Typer(
45
+ help="Self-healing tools that write changes to the codebase.",
46
+ no_args_is_help=True,
47
+ rich_markup_mode="rich",
48
+ )
49
+
50
+
51
+ @fix_app.callback()
52
+ # ID: 4165545f-18b7-4890-b89f-605ae2772b16
53
+ def fix_callback(
54
+ ctx: typer.Context,
55
+ verbose: bool = typer.Option(
56
+ False, "--verbose", "-v", help="Enable verbose output"
57
+ ),
58
+ debug: bool = typer.Option(False, "--debug", help="Enable debug output"),
59
+ ):
60
+ """Self-healing tools organized by category."""
61
+ core_context: CoreContext = ctx.obj
62
+ if debug:
63
+ core_context.debug = True
64
+ if verbose:
65
+ core_context.verbose = True
66
+
67
+
68
+ # LATE IMPORTS: These register themselves on fix_app when imported.
69
+ # This must remain at the bottom to ensure fix_app is defined first.
70
+ import cli.commands.fix.all_commands
71
+ import cli.commands.fix.atomic_actions
72
+ import cli.commands.fix.audit
73
+ import cli.commands.fix.body_ui
74
+
75
+ # import cli.commands.fix.clarity
76
+ import cli.commands.fix.code_style
77
+ import cli.commands.fix.db_tools
78
+ import cli.commands.fix.fix_ir
79
+ import cli.commands.fix.handler_discovery
80
+ import cli.commands.fix.imports
81
+ import cli.commands.fix.list_commands
82
+ import cli.commands.fix.metadata
83
+ import cli.commands.fix.modularity
84
+ import cli.commands.fix.settings_access
@@ -0,0 +1,94 @@
1
+ # src/cli/commands/fix/all_commands.py
2
+ """
3
+ Batch execution command for the 'fix' CLI group.
4
+
5
+ `core-admin fix all` runs a curated sequence of registered atomic
6
+ actions via POST /v1/fix/run/{fix_id} and POST /v1/fix/ir. The
7
+ sequence preserves the original prerequisite ordering.
8
+
9
+ Three pre-migration steps (purge-legacy-tags, policy-ids, knowledge-graph)
10
+ have no registered atomic action and were dropped from the sequence —
11
+ they remain available as standalone CLI subcommands. Filed as
12
+ governance debt; future Stage B reopens may restore the bundle.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import logging
18
+
19
+ import typer
20
+ from rich.console import Console
21
+
22
+ from api.cli import CoreApiClient
23
+ from cli.utils import core_command
24
+
25
+ from . import COMMAND_CONFIG, fix_app
26
+
27
+
28
+ logger = logging.getLogger(__name__)
29
+ console = Console()
30
+
31
+
32
+ _PLAN: list[tuple[str, str, str | None]] = [
33
+ # (step name, fix_id for /fix/run, or ir_kind for /fix/ir)
34
+ ("code-style", "fix.format", None),
35
+ ("ids", "fix.ids", None),
36
+ ("knowledge-sync", "sync.db", None),
37
+ ("vector-sync", "sync.vectors_code", None),
38
+ ("docstrings", "fix.docstrings", None),
39
+ ("tags", "fix.capability_tagging", None),
40
+ ("ir-triage", "", "triage"),
41
+ ("ir-log", "", "log"),
42
+ ]
43
+
44
+
45
+ @fix_app.command("all", help="Run a curated sequence of self-healing fixes.")
46
+ @core_command(dangerous=True, confirmation=True)
47
+ # ID: af5b3d93-3b58-45f9-bce6-33a5886d2a3c
48
+ async def run_all_fixes(
49
+ ctx: typer.Context,
50
+ skip_dangerous: bool = typer.Option(
51
+ True, help="Skip potentially dangerous operations that modify code logic."
52
+ ),
53
+ write: bool = typer.Option(
54
+ False, "--write", help="Apply changes. Default is dry-run."
55
+ ),
56
+ ) -> None:
57
+ """
58
+ Run a curated set of fix subcommands in a sequence that respects dependencies.
59
+ """
60
+ _ = ctx
61
+ client = CoreApiClient()
62
+ mode_str = "write" if write else "dry-run"
63
+
64
+ for name, fix_id, ir_kind in _PLAN:
65
+ cfg = COMMAND_CONFIG.get(name, {})
66
+ is_dangerous = cfg.get("dangerous", False)
67
+ if skip_dangerous and is_dangerous and write:
68
+ console.print(f"[yellow]Skipping dangerous command 'fix {name}'.[/yellow]")
69
+ continue
70
+ console.print(f"[bold cyan]▶ Running 'fix {name}' ({mode_str})[/bold cyan]")
71
+
72
+ if ir_kind is not None:
73
+ try:
74
+ result = await client.fix_ir(ir_kind)
75
+ console.print(f" -> IR scaffold: {result.get('path', '(unknown)')}")
76
+ except Exception as exc:
77
+ console.print(f" [red]✗ fix {name} failed: {exc}[/red]")
78
+ continue
79
+
80
+ initial = await client.run_fix(fix_id, write=write)
81
+ run_id = initial.get("run_id")
82
+ if not run_id:
83
+ console.print(f" [red]✗ {fix_id} failed to dispatch: {initial}[/red]")
84
+ continue
85
+ final = await client._poll_run(run_id)
86
+ status = final.get("status")
87
+ if status != "completed":
88
+ console.print(
89
+ f" [red]✗ {fix_id} failed: {final.get('error') or final}[/red]"
90
+ )
91
+ continue
92
+ console.print(f" [green]✓ {fix_id} completed.[/green]")
93
+
94
+ console.print("[green]✅ 'fix all' sequence completed[/green]")
@@ -0,0 +1,48 @@
1
+ # src/cli/commands/fix/atomic_actions.py
2
+ """
3
+ Fix atomic actions pattern violations — thin client over
4
+ POST /v1/fix/run/fix.atomic_actions.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import logging
10
+
11
+ import typer
12
+ from rich.console import Console
13
+
14
+ from api.cli import CoreApiClient
15
+ from cli.utils import core_command
16
+
17
+ from . import fix_app
18
+
19
+
20
+ logger = logging.getLogger(__name__)
21
+ console = Console()
22
+
23
+
24
+ @fix_app.command("atomic-actions", help="Fix atomic actions pattern violations.")
25
+ @core_command(dangerous=True, confirmation=False)
26
+ # ID: d729c8ff-0b0c-4873-85b6-0b8151a4265c
27
+ async def fix_atomic_actions_cmd(
28
+ ctx: typer.Context,
29
+ write: bool = typer.Option(False, "--write", help="Apply fixes."),
30
+ ) -> None:
31
+ """
32
+ Dispatches fix.atomic_actions via POST /v1/fix/run/{fix_id}.
33
+ """
34
+ _ = ctx
35
+ console.print("[cyan]Healing atomic actions...[/cyan]")
36
+ client = CoreApiClient()
37
+ initial = await client.run_fix("fix.atomic_actions", write=write)
38
+ run_id = initial.get("run_id")
39
+ if not run_id:
40
+ console.print(f"[red]fix.atomic_actions failed to dispatch: {initial}[/red]")
41
+ raise typer.Exit(1)
42
+ final = await client._poll_run(run_id)
43
+ if final.get("status") != "completed":
44
+ console.print(
45
+ f"[red]fix.atomic_actions failed: {final.get('error') or final}[/red]"
46
+ )
47
+ raise typer.Exit(1)
48
+ console.print("[green]✓ fix.atomic_actions completed.[/green]")
@@ -0,0 +1,146 @@
1
+ # src/cli/commands/fix/audit.py
2
+ """Audit remediation command for the 'fix' CLI group.
3
+
4
+ Thin client over POST /v1/audit/remediations (ADR-057 D4). The CLI
5
+ dispatches an audit_run_id + mode + write flag and polls the
6
+ audit_remediation_runs lifecycle. All remediation logic runs server-side.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import logging
12
+
13
+ import typer
14
+ from rich.table import Table
15
+
16
+ from api.cli import CoreApiClient
17
+ from cli.utils import core_command
18
+
19
+ from . import console, fix_app
20
+
21
+
22
+ logger = logging.getLogger(__name__)
23
+
24
+
25
+ # The CLI accepts both the long-form RemediationMode value names
26
+ # (safe_only / medium_risk / all_deterministic) and the wire-format names
27
+ # the API expects (safe / medium / all). Long-form names are translated.
28
+ _MODE_TO_WIRE = {
29
+ "safe": "safe",
30
+ "medium": "medium",
31
+ "all": "all",
32
+ "safe_only": "safe",
33
+ "medium_risk": "medium",
34
+ "all_deterministic": "all",
35
+ }
36
+
37
+
38
+ @fix_app.command("audit")
39
+ @core_command(dangerous=True, confirmation=True, requires_context=False)
40
+ # ID: 02131c6f-4f7e-4141-a7c6-7f72b7392e9f
41
+ async def fix_audit_command(
42
+ ctx: typer.Context,
43
+ audit_run_id: str = typer.Option(
44
+ ...,
45
+ "--audit-run-id",
46
+ help="UUID of the audit_runs row whose findings should be remediated.",
47
+ ),
48
+ write: bool = typer.Option(
49
+ False, "--write", help="Actually apply fixes (default: dry-run)"
50
+ ),
51
+ mode: str = typer.Option(
52
+ "safe",
53
+ "--mode",
54
+ help="Risk tolerance: safe | medium | all (long-form: safe_only / medium_risk / all_deterministic).",
55
+ ),
56
+ ) -> None:
57
+ """Autonomous remediation of audit findings via /v1/audit/remediations.
58
+
59
+ Examples:
60
+ # Dry-run — see what would be fixed
61
+ core-admin fix audit --audit-run-id <uuid>
62
+
63
+ # Apply safe fixes
64
+ core-admin fix audit --audit-run-id <uuid> --write
65
+
66
+ # Apply medium-risk fixes
67
+ core-admin fix audit --audit-run-id <uuid> --write --mode medium
68
+ """
69
+ _ = ctx
70
+ wire_mode = _MODE_TO_WIRE.get(mode)
71
+ if wire_mode is None:
72
+ console.print(
73
+ f"[red]Invalid mode: {mode}[/red]\n"
74
+ "Valid modes: safe, medium, all "
75
+ "(long-form aliases: safe_only, medium_risk, all_deterministic)"
76
+ )
77
+ raise typer.Exit(1)
78
+
79
+ console.print("\n[bold cyan]🔧 CORE Audit Remediation[/bold cyan]")
80
+ console.print(f"Audit run: {audit_run_id}")
81
+ console.print(f"Mode: {wire_mode}")
82
+ console.print(
83
+ f"Write: {'YES - Will modify files' if write else 'NO - Dry run only'}"
84
+ )
85
+ console.print()
86
+
87
+ client = CoreApiClient()
88
+ initial = await client.audit_remediate(
89
+ audit_run_id=audit_run_id, mode=wire_mode, write=write
90
+ )
91
+ run_id = initial.get("run_id")
92
+ if not run_id:
93
+ console.print(f"[red]❌ audit_remediate failed to dispatch: {initial}[/red]")
94
+ raise typer.Exit(code=1)
95
+
96
+ console.print(f"[dim]Dispatched run {run_id} — polling…[/dim]")
97
+ final = await client.poll_audit_remediation_run(run_id)
98
+ if final.get("status") != "completed":
99
+ console.print(
100
+ f"[red]❌ Remediation failed: {final.get('error') or final}[/red]"
101
+ )
102
+ raise typer.Exit(code=1)
103
+
104
+ _display_results(final.get("result") or {}, write=write)
105
+
106
+
107
+ def _display_results(result: dict, *, write: bool) -> None:
108
+ """Display remediation results in a Rich table."""
109
+ console.print("\n[bold]📊 Remediation Summary[/bold]\n")
110
+ summary_table = Table(show_header=False, box=None)
111
+ summary_table.add_column("Metric", style="cyan")
112
+ summary_table.add_column("Value", style="white")
113
+ summary_table.add_row("Total findings", str(result.get("total_findings", 0)))
114
+ summary_table.add_row("Fixes attempted", str(result.get("fixes_attempted", 0)))
115
+ summary_table.add_row(
116
+ "Fixes succeeded",
117
+ f"[green]{result.get('fixes_succeeded', 0)}[/green]",
118
+ )
119
+ if write:
120
+ summary_table.add_row("", "")
121
+ summary_table.add_row("Findings before", str(result.get("findings_before", 0)))
122
+ summary_table.add_row("Findings after", str(result.get("findings_after", 0)))
123
+ delta = int(result.get("improvement_delta", 0))
124
+ delta_color = "green" if delta > 0 else "red"
125
+ summary_table.add_row(
126
+ "Improvement",
127
+ f"[{delta_color}]{delta} fewer violations[/{delta_color}]",
128
+ )
129
+ console.print(summary_table)
130
+
131
+ if write:
132
+ if result.get("validation_passed"):
133
+ console.print("[green]✅ Validation PASSED - Quality improved[/green]")
134
+ else:
135
+ console.print("[red]❌ Validation FAILED - No improvement[/red]")
136
+
137
+ output_path = result.get("remediation_output_path")
138
+ if output_path:
139
+ console.print(f"\n[bold]📝 Evidence:[/bold] {output_path}")
140
+
141
+ if not write and result.get("fixes_attempted", 0) > 0:
142
+ console.print(
143
+ "\n[bold yellow]💡 Tip:[/bold yellow] Run with [cyan]--write[/cyan] "
144
+ "to apply these fixes"
145
+ )
146
+ console.print()
@@ -0,0 +1,93 @@
1
+ # src/cli/commands/fix/body_ui.py
2
+ """
3
+ CLI command: `core-admin fix body-ui`
4
+
5
+ Thin client over POST /v1/quality/body-ui (read) + POST /v1/fix/run/fix.body_ui
6
+ (write). Dry-run returns the violation list inline; --write dispatches the
7
+ LLM fixer asynchronously and polls.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import logging
13
+
14
+ import typer
15
+ from rich.console import Console
16
+
17
+ from api.cli import CoreApiClient
18
+ from cli.utils import core_command
19
+
20
+ from . import fix_app
21
+
22
+
23
+ logger = logging.getLogger(__name__)
24
+ console = Console()
25
+
26
+
27
+ @fix_app.command("body-ui", help="Fix Body-layer UI contract violations.")
28
+ @core_command(dangerous=True, confirmation=True)
29
+ # ID: e080af6d-2e0e-4b5d-967b-61c5b7223aaa
30
+ async def fix_body_ui_command(
31
+ ctx: typer.Context,
32
+ write: bool = typer.Option(
33
+ False,
34
+ "--write/--dry-run",
35
+ help="Dry-run by default; use --write to apply changes.",
36
+ ),
37
+ count: int = typer.Option(
38
+ None,
39
+ "--count",
40
+ "-n",
41
+ help="Limit the number of files to process (for safety/testing).",
42
+ ),
43
+ ) -> None:
44
+ """
45
+ Fix Body-layer UI/env violations (Rich, print/input, os.environ) using the LLM.
46
+
47
+ Dry-run path uses POST /v1/quality/body-ui (sync check) and reports the
48
+ violation count. --write path dispatches POST /v1/fix/run/fix.body_ui
49
+ (async LLM fixer), polls, and reports the summary.
50
+ """
51
+ _ = ctx
52
+ console.print("\n[bold cyan]🔧 Body UI Contracts Fixer[/bold cyan]\n")
53
+ client = CoreApiClient()
54
+
55
+ if not write:
56
+ console.print(
57
+ "[yellow]Running in DRY-RUN mode. Use --write to apply changes.[/yellow]\n"
58
+ )
59
+ check = await client.quality_body_ui()
60
+ if check.get("status") == "ok":
61
+ console.print("[green]✓ Body contracts compliant.[/green]")
62
+ return
63
+ violations = check.get("violations", [])
64
+ unique_files = len({v.get("file") for v in violations if v.get("file")})
65
+ console.print("[bold]Summary:[/bold]")
66
+ console.print(f" Files with violations : {unique_files}")
67
+ console.print(f" Total violations : {len(violations)}")
68
+ console.print(" Mode : DRY-RUN")
69
+ console.print("\n[yellow]Use --write to apply these changes.[/yellow]")
70
+ return
71
+
72
+ if count:
73
+ console.print(f"[dim]Limiting processing to first {count} file(s).[/dim]\n")
74
+ params: dict[str, object] = {}
75
+ if count is not None:
76
+ params["limit"] = count
77
+ initial = await client.run_fix("fix.body_ui", write=True, params=params)
78
+ run_id = initial.get("run_id")
79
+ if not run_id:
80
+ console.print(f"[red]fix.body_ui failed to dispatch: {initial}[/red]")
81
+ raise typer.Exit(1)
82
+ final = await client._poll_run(run_id)
83
+ if final.get("status") != "completed":
84
+ console.print(f"[red]fix.body_ui failed: {final.get('error') or final}[/red]")
85
+ raise typer.Exit(1)
86
+
87
+ result_data = (final.get("result") or {}).get("data", {})
88
+ console.print("[bold]Summary:[/bold]")
89
+ console.print(f" Files found : {result_data.get('files_found', 0)}")
90
+ console.print(f" Files processed : {result_data.get('files_processed', 0)}")
91
+ console.print(f" Files modified : {result_data.get('files_modified', 0)}")
92
+ console.print(" Mode : WRITE")
93
+ console.print("\n[green]✓ Body UI contracts successfully applied.[/green]")
@@ -0,0 +1,52 @@
1
+ # src/cli/commands/fix/code_style.py
2
+ """
3
+ Code style and formatting commands for the 'fix' CLI group.
4
+
5
+ Provides:
6
+ - fix headers — thin client over POST /v1/fix/run/fix.headers
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import logging
12
+
13
+ import typer
14
+ from rich.console import Console
15
+
16
+ from api.cli import CoreApiClient
17
+ from cli.utils import core_command
18
+
19
+ from . import fix_app
20
+
21
+
22
+ logger = logging.getLogger(__name__)
23
+ console = Console()
24
+
25
+
26
+ @fix_app.command(
27
+ "headers", help="Ensures all files have constitutionally compliant headers."
28
+ )
29
+ @core_command(dangerous=True, confirmation=True)
30
+ # ID: 0077efbb-9090-42bb-a602-2ff3b7853875
31
+ async def fix_headers_cmd(
32
+ ctx: typer.Context,
33
+ write: bool = typer.Option(
34
+ False, "--write", help="Apply fixes to files with violations."
35
+ ),
36
+ ) -> None:
37
+ """
38
+ Dispatches fix.headers via POST /v1/fix/run/{fix_id}.
39
+ """
40
+ _ = ctx
41
+ console.print("[cyan]Checking file headers...[/cyan]")
42
+ client = CoreApiClient()
43
+ initial = await client.run_fix("fix.headers", write=write)
44
+ run_id = initial.get("run_id")
45
+ if not run_id:
46
+ console.print(f"[red]fix.headers failed to dispatch: {initial}[/red]")
47
+ raise typer.Exit(1)
48
+ final = await client._poll_run(run_id)
49
+ if final.get("status") != "completed":
50
+ console.print(f"[red]fix.headers failed: {final.get('error') or final}[/red]")
51
+ raise typer.Exit(1)
52
+ console.print("[green]✓ fix.headers completed.[/green]")