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,170 @@
1
+ # src/cli/commands/refactor_support/display.py
2
+
3
+ """Display formatting for refactoring analysis output.
4
+
5
+ Pure presentation layer. No CORE-internal imports; Rich rendering only.
6
+ All output routes through `console.print` per the CLAUDE.md Rich rule
7
+ (Rich objects/markup must not pass through `logger.info`).
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import logging
13
+
14
+ from rich.console import Console
15
+ from rich.table import Table
16
+
17
+
18
+ logger = logging.getLogger(__name__)
19
+ console = Console()
20
+
21
+
22
+ # ID: faf1e919-5ae7-4a63-8e3b-89847123dd51
23
+ class RefactorDisplay:
24
+ """Handles Rich-based display formatting for refactoring analysis."""
25
+
26
+ def __init__(self):
27
+ self.console = console
28
+
29
+ @staticmethod
30
+ # ID: 903e0fd9-1162-4d90-951c-9cc4ed2497f5
31
+ def show_file_analysis(file_path: str, details: dict, target_value: float) -> None:
32
+ """Display detailed analysis for a single file."""
33
+ console.print(f"[bold cyan]🔍 Analyzing Modularity: {file_path}[/bold cyan]\n")
34
+ score = details["total_score"]
35
+ breakdown = details["breakdown"]
36
+ status, color = RefactorDisplay._get_status(score, target_value)
37
+ console.print(
38
+ f"[{color}]Status: {status} "
39
+ f"(Score: {score:.1f} / Target: <{target_value})[/{color}]\n"
40
+ )
41
+ RefactorDisplay._show_breakdown_table(breakdown, score)
42
+ RefactorDisplay._show_responsibilities(details)
43
+ RefactorDisplay._show_cohesion_warning(details)
44
+ RefactorDisplay._show_coupling_warning(details)
45
+
46
+ @staticmethod
47
+ # ID: 1f9a5dcb-9ae6-45a6-bce0-e3a98c74ba97
48
+ def show_recommendations(recommendations: list[str]) -> None:
49
+ """Display recommendations."""
50
+ console.print("\n[bold green]💡 Recommended Improvements:[/bold green]")
51
+ for rec in recommendations:
52
+ console.print(f" - {rec}")
53
+
54
+ @staticmethod
55
+ # ID: f9985b46-2553-46df-9e10-fb86eceb56ea
56
+ def show_clean_file() -> None:
57
+ """Display message for exceptionally clean files."""
58
+ console.print("[bold green]✅ This file is exceptionally clean.[/bold green]")
59
+
60
+ @staticmethod
61
+ # ID: 9f129067-663c-4ec0-944a-59c3aac772a3
62
+ def show_candidates_table(
63
+ candidates: list[dict], target_value: float, limit: int
64
+ ) -> None:
65
+ """Display table of refactoring candidates."""
66
+ table = Table(title=f"Refactoring Candidates (Top {limit})")
67
+ table.add_column("File Path", style="cyan")
68
+ table.add_column("Score", justify="right")
69
+ table.add_column("Resp.", justify="right")
70
+ table.add_column("Lines", justify="right")
71
+ for c in candidates[:limit]:
72
+ color = "red" if c["score"] > target_value else "yellow"
73
+ table.add_row(
74
+ str(c["file"]),
75
+ f"[{color}]{c['score']:.1f}[/{color}]",
76
+ str(c["resp"]),
77
+ str(c["loc"]),
78
+ )
79
+ console.print(table)
80
+
81
+ @staticmethod
82
+ # ID: bedaeaa7-18e6-4ad9-b47e-ac1faa3e70f5
83
+ def show_no_candidates() -> None:
84
+ """Display message when no candidates exceed threshold."""
85
+ console.print(
86
+ "[bold green]✅ No files found exceeding the modularity threshold.[/bold green]"
87
+ )
88
+
89
+ @staticmethod
90
+ # ID: fb2cc8dc-a8e7-4310-8a91-fd89a6b203ea
91
+ def show_stats(
92
+ total_files: int,
93
+ avg_score: float,
94
+ target_value: float,
95
+ high_risk: int,
96
+ warning: int,
97
+ healthy: int,
98
+ ) -> None:
99
+ """Display codebase statistics."""
100
+ console.print("[bold cyan]📊 System Modularity Statistics[/bold cyan]\n")
101
+ console.print(f"Total Files Analyzed : [bold]{total_files}[/bold]")
102
+ console.print(f"Constitutional Target: <{target_value}")
103
+ console.print(f"Average System Score : [bold]{avg_score:.1f}/100[/bold]\n")
104
+ warning_level = target_value * 0.8
105
+ console.print("[bold]Health Distribution (80% Gaussian Gauge):[/bold]")
106
+ console.print(f" 🔴 High Risk (>{target_value}) : {high_risk} files")
107
+ console.print(
108
+ f" 🟡 Warning ({warning_level:.0f}-{target_value:.0f}) : {warning} files"
109
+ )
110
+ console.print(f" 🟢 Healthy (<{warning_level:.0f}) : {healthy} files")
111
+
112
+ @staticmethod
113
+ def _get_status(score: float, target_value: float) -> tuple[str, str]:
114
+ """Determine status and color based on score."""
115
+ if score > target_value:
116
+ return ("NON-COMPLIANT", "red")
117
+ elif score > target_value * 0.8:
118
+ return ("WARNING: BORDERLINE", "yellow")
119
+ else:
120
+ return ("COMPLIANT", "green")
121
+
122
+ @staticmethod
123
+ def _show_breakdown_table(breakdown: dict, total_score: float) -> None:
124
+ """Show modularity breakdown table."""
125
+ table = Table(title="Modularity Breakdown", box=None)
126
+ table.add_column("Dimension", style="cyan")
127
+ table.add_column("Impact", justify="right")
128
+ table.add_column("Max Weight", justify="right")
129
+ table.add_row("Responsibilities", f"{breakdown['responsibilities']:.1f}", "35")
130
+ table.add_row("Semantic Cohesion", f"{breakdown['cohesion']:.1f}", "25")
131
+ table.add_row("Dependency Coupling", f"{breakdown['coupling']:.1f}", "25")
132
+ table.add_row("Code Volume", f"{breakdown['size']:.1f}", "15")
133
+ table.add_row(
134
+ "[bold]TOTAL DEBT[/bold]", f"[bold]{total_score:.1f}[/bold]", "100"
135
+ )
136
+ console.print(table)
137
+
138
+ @staticmethod
139
+ def _show_responsibilities(details: dict) -> None:
140
+ """Show detected responsibilities."""
141
+ responsibilities = details.get("responsibilities")
142
+ if responsibilities:
143
+ console.print(
144
+ f"\n[bold]Detected Responsibilities ({len(responsibilities)}):[/bold]"
145
+ )
146
+ for resp in responsibilities:
147
+ console.print(f" • {resp.replace('_', ' ').title()}")
148
+
149
+ @staticmethod
150
+ def _show_cohesion_warning(details: dict) -> None:
151
+ """Show cohesion warning if applicable."""
152
+ cohesion = details.get("cohesion", 1.0)
153
+ if cohesion < 0.7:
154
+ console.print(
155
+ f"\n[bold yellow]⚠️ Low Semantic Cohesion:[/bold yellow] {cohesion:.2f}"
156
+ )
157
+ console.print(" Functions in this file may not belong together logically.")
158
+
159
+ @staticmethod
160
+ def _show_coupling_warning(details: dict) -> None:
161
+ """Show coupling warning if applicable."""
162
+ concern_count = details.get("concern_count", 0)
163
+ if concern_count > 3:
164
+ console.print(
165
+ f"\n[bold yellow]⚠️ High Coupling:[/bold yellow] touches "
166
+ f"{concern_count} areas."
167
+ )
168
+ concerns = details.get("concerns") or []
169
+ if concerns:
170
+ console.print(f" Areas: {', '.join(concerns)}")
@@ -0,0 +1,55 @@
1
+ # src/cli/commands/refactor_support/recommendations.py
2
+
3
+ """Generates smart recommendations based on analysis results.
4
+
5
+ Pure presentation/text helper. Thresholds are baked in as CLI defaults
6
+ rather than reaching into `shared.infrastructure.intent.operational_config`;
7
+ the recommendation surface is governor-tuned only when copy changes, not
8
+ on operational drift.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+
14
+ _RESPONSIBILITIES_THRESHOLD = 20.0
15
+ _COHESION_THRESHOLD = 15.0
16
+ _COUPLING_THRESHOLD = 15.0
17
+ _LOC_THRESHOLD = 400
18
+
19
+
20
+ # ID: 36f3d7ff-4832-419e-863a-7c169e8e5fe1
21
+ class RecommendationEngine:
22
+ """Generates actionable recommendations from modularity analysis."""
23
+
24
+ @staticmethod
25
+ # ID: 90c40477-7955-446f-adb9-c330eadbe2d2
26
+ def generate(details: dict) -> list[str]:
27
+ """Generate recommendations based on breakdown scores."""
28
+ recommendations: list[str] = []
29
+ breakdown = details.get("breakdown", {})
30
+
31
+ if breakdown.get("responsibilities", 0) > _RESPONSIBILITIES_THRESHOLD:
32
+ recommendations.append(
33
+ "[bold]Split Module:[/bold] This file is doing too many things. "
34
+ "Extract logic into new files."
35
+ )
36
+
37
+ if breakdown.get("cohesion", 0) > _COHESION_THRESHOLD:
38
+ recommendations.append(
39
+ "[bold]Refine Logic:[/bold] Group related functions more tightly "
40
+ "to improve focus."
41
+ )
42
+
43
+ if breakdown.get("coupling", 0) > _COUPLING_THRESHOLD:
44
+ recommendations.append(
45
+ "[bold]Decouple:[/bold] Reduce external imports; use shared "
46
+ "services instead of direct calls."
47
+ )
48
+
49
+ if details.get("lines_of_code", 0) > _LOC_THRESHOLD:
50
+ recommendations.append(
51
+ "[bold]Reduce Volume:[/bold] File is physically too long. "
52
+ "Move helpers to shared/utils."
53
+ )
54
+
55
+ return recommendations
cli/commands/run.py ADDED
@@ -0,0 +1,60 @@
1
+ # src/cli/commands/run.py
2
+ """
3
+ Commands for executing specific complex system processes.
4
+
5
+ `vectorize` is a thin client over POST /v1/sync/code-vectors (ADR-058 D2).
6
+ The constitutional worker pipeline (`RepoCrawlerWorker` +
7
+ `RepoEmbedderWorker`) runs server-side; this CLI polls the sync_runs
8
+ resource until terminal.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import logging
14
+
15
+ import typer
16
+
17
+ from api.cli import CoreApiClient
18
+ from cli.utils import core_command
19
+
20
+
21
+ logger = logging.getLogger(__name__)
22
+ run_app = typer.Typer(
23
+ help="Commands for executing complex processes and autonomous cycles.",
24
+ no_args_is_help=True,
25
+ )
26
+
27
+
28
+ @run_app.command("vectorize")
29
+ @core_command(dangerous=True, requires_context=False)
30
+ # ID: f8e9d0a1-b2c3-4d5e-6f7a-8b9c0d1e2f3a
31
+ async def vectorize_command(
32
+ ctx: typer.Context,
33
+ write: bool = typer.Option(False, "--write", help="Commit vectors to Qdrant."),
34
+ force: bool = typer.Option(
35
+ False, help="Force re-vectorization of all capabilities."
36
+ ),
37
+ ):
38
+ """Vectorize codebase artifacts via the constitutional worker pipeline."""
39
+ _ = ctx
40
+ _ = force # API doesn't currently expose a force flag; #361 follow-up.
41
+ typer.secho(
42
+ "🚀 Starting vectorization via constitutional worker pipeline...",
43
+ fg=typer.colors.CYAN,
44
+ )
45
+ client = CoreApiClient()
46
+ initial = await client.sync_code_vectors(write=write)
47
+ run_id = initial.get("run_id")
48
+ if not run_id:
49
+ typer.secho(
50
+ f"❌ sync_code_vectors failed to dispatch: {initial}", fg=typer.colors.RED
51
+ )
52
+ raise typer.Exit(1)
53
+ final = await client.poll_sync_run(run_id)
54
+ if final.get("status") != "completed":
55
+ typer.secho(
56
+ f"❌ Vectorization failed: {final.get('error') or final}",
57
+ fg=typer.colors.RED,
58
+ )
59
+ raise typer.Exit(1)
60
+ typer.secho("✅ Vectorization completed", fg=typer.colors.GREEN)
cli/commands/search.py ADDED
@@ -0,0 +1,103 @@
1
+ # src/cli/commands/search.py
2
+
3
+ """Search command group — capabilities and commands, both via API.
4
+
5
+ Per ADR-057 D5 (revised 2026-05-18) and #363 (closed 2026-05-19):
6
+ - `search capabilities` is served by GET /v1/search/capabilities.
7
+ - `search commands` is served by GET /v1/search/commands.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import logging
13
+
14
+ import typer
15
+ from rich.console import Console
16
+ from rich.table import Table
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
+ search_app = typer.Typer(
25
+ help="Discover capabilities and commands.", no_args_is_help=True
26
+ )
27
+
28
+
29
+ @search_app.command("capabilities")
30
+ @core_command(dangerous=False, requires_context=False)
31
+ # ID: 4df5c462-ba14-4849-b707-ef1fce79b9b4
32
+ async def search_capabilities_cmd(
33
+ ctx: typer.Context,
34
+ query: str = typer.Argument(..., help="The semantic query to search for."),
35
+ limit: int = typer.Option(5, "--limit", "-n", help="Max results to return."),
36
+ ) -> None:
37
+ """Performs a semantic search for capabilities via /v1/search/capabilities."""
38
+ _ = ctx
39
+ console.print(
40
+ f"🧠 Searching for capabilities related to: '[cyan]{query}[/cyan]'..."
41
+ )
42
+ client = CoreApiClient()
43
+ payload = await client.inspect_search_capabilities(q=query, limit=limit)
44
+ if not payload.get("available", False):
45
+ error = payload.get("error", "unknown error")
46
+ console.print(f"[yellow]Search unavailable: {error}[/yellow]")
47
+ return
48
+ results = payload.get("results") or []
49
+ if not results:
50
+ console.print("[yellow]No relevant capabilities found.[/yellow]")
51
+ return
52
+ table = Table(title="Top Matching Capabilities")
53
+ table.add_column("Score", style="magenta", justify="right")
54
+ table.add_column("Capability Key", style="cyan")
55
+ table.add_column("Description", style="green")
56
+ for hit in results:
57
+ hit_payload = hit.get("payload", {}) or {}
58
+ key = hit_payload.get("key", "none")
59
+ description = (
60
+ hit_payload.get("description") or "No description provided."
61
+ ).strip()
62
+ score = f"{hit.get('score', 0):.4f}"
63
+ table.add_row(score, key, description)
64
+ console.print(table)
65
+
66
+
67
+ @search_app.command("commands")
68
+ @core_command(dangerous=False, requires_context=False)
69
+ # ID: 49b5f4fd-7f51-4a19-aa56-7373d83d381d
70
+ async def search_commands_cmd(
71
+ ctx: typer.Context,
72
+ term: str = typer.Argument(
73
+ ..., help="Term to search in command names/descriptions."
74
+ ),
75
+ limit: int = typer.Option(25, "--limit", "-l", help="Max results."),
76
+ ) -> None:
77
+ """Fuzzy search across CLI commands via /v1/search/commands."""
78
+ _ = ctx
79
+ console.print(f"🔍 Searching CLI commands for: '[cyan]{term}[/cyan]'...")
80
+ client = CoreApiClient()
81
+ payload = await client.inspect_search_commands(q=term, limit=limit)
82
+ if not payload.get("available", False):
83
+ error = payload.get("error", "unknown error")
84
+ console.print(f"[yellow]Search unavailable: {error}[/yellow]")
85
+ return
86
+ results = payload.get("results") or []
87
+ if not results:
88
+ console.print("[yellow]No matching commands found.[/yellow]")
89
+ return
90
+ table = Table(title=f"Matching Commands ({len(results)})")
91
+ table.add_column("Command", style="cyan")
92
+ table.add_column("Module", style="magenta")
93
+ table.add_column("Description", style="green")
94
+ for hit in results:
95
+ description = (hit.get("description") or "").strip() or "—"
96
+ if len(description) > 100:
97
+ description = description[:99] + "…"
98
+ table.add_row(
99
+ hit.get("command", "—"),
100
+ hit.get("module", "—"),
101
+ description,
102
+ )
103
+ console.print(table)
cli/commands/status.py ADDED
@@ -0,0 +1,86 @@
1
+ # src/cli/commands/status.py
2
+ """Status command group.
3
+
4
+ Golden Path:
5
+ - status drift {guard|symbol|vector|all}
6
+
7
+ All drift scopes route to /v1/status/drift (ADR-057 D3) plus the local
8
+ `cli.commands.guard.guard_drift_cmd` for the manifest-vs-code guard
9
+ check. No imports from `mind.*` — that was a layer inversion on the old
10
+ status path.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import logging
16
+
17
+ import typer
18
+ from rich.console import Console
19
+
20
+ from api.cli import CoreApiClient
21
+ from cli.utils import core_command
22
+
23
+
24
+ logger = logging.getLogger(__name__)
25
+ console = Console()
26
+ status_app = typer.Typer(
27
+ help="Single-glance system state and readiness.", no_args_is_help=True
28
+ )
29
+
30
+
31
+ def _warn_not_wired(detail: str) -> None:
32
+ typer.secho(f"STATUS: not fully wired yet ({detail})", fg=typer.colors.YELLOW)
33
+
34
+
35
+ @status_app.command("drift")
36
+ @core_command(dangerous=False, requires_context=False)
37
+ # ID: 17ba54ad-6d9e-4392-9512-7b62053575ea
38
+ async def drift_cmd(
39
+ ctx: typer.Context,
40
+ scope: str = typer.Argument("all", help="Drift scope: guard|symbol|vector|all"),
41
+ ) -> None:
42
+ """Consolidated drift entry point."""
43
+ _ = ctx
44
+ scope_norm = (scope or "all").strip().lower()
45
+ if scope_norm not in {"guard", "symbol", "vector", "all"}:
46
+ typer.secho(
47
+ f"Invalid scope '{scope}'. Use: guard|symbol|vector|all",
48
+ fg=typer.colors.RED,
49
+ )
50
+ raise typer.Exit(code=2)
51
+
52
+ client = CoreApiClient()
53
+
54
+ # ID: 76621d1c-d1a8-4b47-8210-3c969bc138f1
55
+ async def run_guard() -> None:
56
+ console.print("[bold]Drift: guard[/bold]")
57
+ try:
58
+ from cli.commands.guard import run_guard_drift
59
+ except Exception as exc:
60
+ logger.debug("status drift: cannot import run_guard_drift: %s", exc)
61
+ _warn_not_wired("guard drift handler not available")
62
+ return
63
+ await run_guard_drift()
64
+
65
+ # ID: 54d8b8dd-0ea6-4199-bcc3-0b68fb356c79
66
+ async def run_symbol_or_vector(api_scope: str) -> None:
67
+ console.print(f"[bold]Drift: {api_scope}[/bold]")
68
+ payload = await client.status_drift(scope=api_scope)
69
+ console.print(payload)
70
+
71
+ if scope_norm == "guard":
72
+ await run_guard()
73
+ return
74
+ if scope_norm == "symbol":
75
+ await run_symbol_or_vector("symbols")
76
+ return
77
+ if scope_norm == "vector":
78
+ await run_symbol_or_vector("vectors")
79
+ return
80
+
81
+ # scope == "all"
82
+ await run_guard()
83
+ console.print()
84
+ await run_symbol_or_vector("symbols")
85
+ console.print()
86
+ await run_symbol_or_vector("vectors")
cli/commands/submit.py ADDED
@@ -0,0 +1,23 @@
1
+ # src/cli/commands/submit.py
2
+
3
+ """DEPRECATED: Use 'core-admin proposals integrate' instead."""
4
+
5
+ from __future__ import annotations
6
+
7
+ import typer
8
+
9
+ from cli.utils import deprecated_command
10
+
11
+
12
+ submit_app = typer.Typer(
13
+ help="[DEPRECATED] Use 'proposals' resource.", no_args_is_help=True
14
+ )
15
+
16
+
17
+ @submit_app.command("changes")
18
+ # ID: ce382b1a-af48-4e9b-bcd9-ce8938b58d51
19
+ def integrate_command(ctx: typer.Context, message: str = typer.Option(..., "-m")):
20
+ """DEPRECATED shim for proposals integrate."""
21
+ deprecated_command("submit changes", "proposals integrate")
22
+ # Forward to the new command logic if needed, or simply exit.
23
+ raise typer.Exit(1)
cli/interactive.py ADDED
@@ -0,0 +1,177 @@
1
+ # src/cli/interactive.py
2
+ from __future__ import annotations
3
+
4
+ import sys
5
+
6
+ from rich.console import Console
7
+ from rich.panel import Panel
8
+
9
+ from shared.utils.subprocess_utils import run_poetry_command
10
+
11
+
12
+ console = Console()
13
+
14
+
15
+ def _show_menu(title: str, options: dict[str, str], actions: dict):
16
+ while True:
17
+ console.clear()
18
+ console.print(Panel(f"[bold cyan]{title}[/bold cyan]"))
19
+ for key, text in options.items():
20
+ console.print(f" [{key}] {text}")
21
+ console.print("\n [b] Back | [q] Quit")
22
+ choice = console.input("\nEnter choice: ").lower()
23
+ if choice == "b":
24
+ return
25
+ if choice == "q":
26
+ sys.exit(0)
27
+ action = actions.get(choice)
28
+ if action:
29
+ try:
30
+ action()
31
+ except Exception as e:
32
+ console.print(f"[red]Error: {e}[/red]")
33
+ console.input("\nPress Enter to return...")
34
+
35
+
36
+ # ID: 827a231b-79dd-42ba-8ae4-2e3857a2f4b2
37
+ def show_development_menu():
38
+ _show_menu(
39
+ title="AI Development & Quality",
40
+ options={
41
+ "1": "Dev Sync (Fix & Sync Everything)",
42
+ "2": "Chat with CORE (Intent Translation)",
43
+ "3": "Run Project Tests",
44
+ "4": "Interactive Test Generation",
45
+ },
46
+ actions={
47
+ "1": lambda: run_poetry_command(
48
+ "Syncing...", ["core-admin", "dev", "sync", "--write"]
49
+ ),
50
+ "2": lambda: run_poetry_command(
51
+ "Thinking...", ["core-admin", "dev", "chat", console.input("Goal: ")]
52
+ ),
53
+ "3": lambda: run_poetry_command(
54
+ "Testing...", ["core-admin", "code", "test"]
55
+ ),
56
+ "4": lambda: run_poetry_command(
57
+ "Starting...", ["core-admin", "dev", "test", console.input("File: ")]
58
+ ),
59
+ },
60
+ )
61
+
62
+
63
+ # ID: c36a1e25-f2e0-4bf6-b860-1ecdfc6089eb
64
+ def show_governance_menu():
65
+ _show_menu(
66
+ title="Constitutional Governance",
67
+ options={
68
+ "1": "Validate Constitution (.intent)",
69
+ "2": "Check Rule Coverage",
70
+ "3": "List A3 Proposals",
71
+ "4": "Query the Mind (Semantic Search)",
72
+ },
73
+ actions={
74
+ "1": lambda: run_poetry_command(
75
+ "Validating...", ["core-admin", "constitution", "validate"]
76
+ ),
77
+ "2": lambda: run_poetry_command(
78
+ "Checking...", ["core-admin", "constitution", "status"]
79
+ ),
80
+ "3": lambda: run_poetry_command(
81
+ "Listing...", ["core-admin", "proposals", "list"]
82
+ ),
83
+ "4": lambda: run_poetry_command(
84
+ "Searching...",
85
+ ["core-admin", "constitution", "query", console.input("Question: ")],
86
+ ),
87
+ },
88
+ )
89
+
90
+
91
+ # ID: 6b97f86f-c37f-4df8-a754-4c1e84c4b575
92
+ def show_system_menu():
93
+ """Displays the System Health & CI submenu."""
94
+ _show_menu(
95
+ title="System Health & CI",
96
+ options={
97
+ "1": "Run Full Check (lint, test, audit)",
98
+ "2": "Run Only Tests",
99
+ "3": "Format All Code",
100
+ },
101
+ actions={
102
+ "1": lambda: run_poetry_command(
103
+ "Running system check...", ["core-admin", "check", "system"]
104
+ ),
105
+ "2": lambda: run_poetry_command(
106
+ "Running tests...", ["core-admin", "check", "tests"]
107
+ ),
108
+ "3": lambda: run_poetry_command(
109
+ "Formatting code...", ["core-admin", "fix", "code-style"]
110
+ ),
111
+ },
112
+ )
113
+
114
+
115
+ # ID: 74f08345-03bd-4112-a13f-1353113e2c44
116
+ def show_project_lifecycle_menu():
117
+ """Displays the Project Lifecycle submenu."""
118
+ _show_menu(
119
+ title="Project Lifecycle",
120
+ options={
121
+ "1": "Create New Governed Application",
122
+ "2": "Onboard Existing Repository (BYOR)",
123
+ },
124
+ actions={
125
+ "1": lambda: run_poetry_command(
126
+ "Creating new application...",
127
+ [
128
+ "core-admin",
129
+ "manage",
130
+ "project",
131
+ "new",
132
+ console.input("Enter the name for the new application: "),
133
+ "--write",
134
+ ],
135
+ ),
136
+ "2": lambda: run_poetry_command(
137
+ "Onboarding repository...",
138
+ [
139
+ "core-admin",
140
+ "manage",
141
+ "project",
142
+ "onboard",
143
+ console.input("Enter the path to the existing repository: "),
144
+ "--write",
145
+ ],
146
+ ),
147
+ },
148
+ )
149
+
150
+
151
+ # ID: 30f97ec8-8803-4ef3-91cf-4fb31943e28c
152
+ def launch_interactive_menu():
153
+ """The main entry point for the interactive TUI menu."""
154
+ while True:
155
+ console.clear()
156
+ console.print(
157
+ Panel(
158
+ "[bold green]🏛️ Welcome to the CORE Interactive Shell[/bold green]",
159
+ subtitle="Select a command group",
160
+ )
161
+ )
162
+ console.print("[bold cyan]1.[/bold cyan] AI Development & Self-Healing")
163
+ console.print("[bold cyan]2.[/bold cyan] Constitutional Governance")
164
+ console.print("[bold cyan]3.[/bold cyan] System Health & CI")
165
+ console.print("[bold cyan]4.[/bold cyan] Project Lifecycle")
166
+ console.print("\n[bold red]q.[/bold red] Quit")
167
+ choice = console.input("\nEnter your choice: ")
168
+ if choice == "1":
169
+ show_development_menu()
170
+ elif choice == "2":
171
+ show_governance_menu()
172
+ elif choice == "3":
173
+ show_system_menu()
174
+ elif choice == "4":
175
+ show_project_lifecycle_menu()
176
+ elif choice.lower() == "q":
177
+ break
cli/logic/__init__.py ADDED
@@ -0,0 +1,7 @@
1
+ # src/cli/logic/__init__.py
2
+ """
3
+ This file marks the 'commands' directory as a Python package,
4
+ allowing command modules to be imported from here.
5
+ """
6
+
7
+ from __future__ import annotations