empathy-framework 2.4.0__py3-none-any.whl → 3.8.2__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 (329) hide show
  1. coach_wizards/__init__.py +13 -12
  2. coach_wizards/accessibility_wizard.py +12 -12
  3. coach_wizards/api_wizard.py +12 -12
  4. coach_wizards/base_wizard.py +26 -20
  5. coach_wizards/cicd_wizard.py +15 -13
  6. coach_wizards/code_reviewer_README.md +60 -0
  7. coach_wizards/code_reviewer_wizard.py +180 -0
  8. coach_wizards/compliance_wizard.py +12 -12
  9. coach_wizards/database_wizard.py +12 -12
  10. coach_wizards/debugging_wizard.py +12 -12
  11. coach_wizards/documentation_wizard.py +12 -12
  12. coach_wizards/generate_wizards.py +1 -2
  13. coach_wizards/localization_wizard.py +101 -19
  14. coach_wizards/migration_wizard.py +12 -12
  15. coach_wizards/monitoring_wizard.py +12 -12
  16. coach_wizards/observability_wizard.py +12 -12
  17. coach_wizards/performance_wizard.py +12 -12
  18. coach_wizards/prompt_engineering_wizard.py +661 -0
  19. coach_wizards/refactoring_wizard.py +12 -12
  20. coach_wizards/scaling_wizard.py +12 -12
  21. coach_wizards/security_wizard.py +12 -12
  22. coach_wizards/testing_wizard.py +12 -12
  23. empathy_framework-3.8.2.dist-info/METADATA +1176 -0
  24. empathy_framework-3.8.2.dist-info/RECORD +333 -0
  25. empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
  26. {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/top_level.txt +5 -1
  27. empathy_healthcare_plugin/__init__.py +1 -2
  28. empathy_healthcare_plugin/monitors/__init__.py +9 -0
  29. empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
  30. empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
  31. empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
  32. empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
  33. empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
  34. empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
  35. empathy_llm_toolkit/__init__.py +7 -7
  36. empathy_llm_toolkit/agent_factory/__init__.py +53 -0
  37. empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
  38. empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
  39. empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
  40. empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
  41. empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
  42. empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
  43. empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
  44. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
  45. empathy_llm_toolkit/agent_factory/base.py +305 -0
  46. empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
  47. empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
  48. empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
  49. empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
  50. empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
  51. empathy_llm_toolkit/agent_factory/decorators.py +286 -0
  52. empathy_llm_toolkit/agent_factory/factory.py +558 -0
  53. empathy_llm_toolkit/agent_factory/framework.py +192 -0
  54. empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
  55. empathy_llm_toolkit/agent_factory/resilient.py +320 -0
  56. empathy_llm_toolkit/claude_memory.py +14 -15
  57. empathy_llm_toolkit/cli/__init__.py +8 -0
  58. empathy_llm_toolkit/cli/sync_claude.py +487 -0
  59. empathy_llm_toolkit/code_health.py +186 -28
  60. empathy_llm_toolkit/config/__init__.py +29 -0
  61. empathy_llm_toolkit/config/unified.py +295 -0
  62. empathy_llm_toolkit/contextual_patterns.py +11 -12
  63. empathy_llm_toolkit/core.py +168 -53
  64. empathy_llm_toolkit/git_pattern_extractor.py +17 -13
  65. empathy_llm_toolkit/levels.py +6 -13
  66. empathy_llm_toolkit/pattern_confidence.py +14 -18
  67. empathy_llm_toolkit/pattern_resolver.py +10 -12
  68. empathy_llm_toolkit/pattern_summary.py +16 -14
  69. empathy_llm_toolkit/providers.py +194 -28
  70. empathy_llm_toolkit/routing/__init__.py +32 -0
  71. empathy_llm_toolkit/routing/model_router.py +362 -0
  72. empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
  73. empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
  74. empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
  75. empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
  76. empathy_llm_toolkit/security/README.md +262 -0
  77. empathy_llm_toolkit/security/__init__.py +62 -0
  78. empathy_llm_toolkit/security/audit_logger.py +929 -0
  79. empathy_llm_toolkit/security/audit_logger_example.py +152 -0
  80. empathy_llm_toolkit/security/pii_scrubber.py +640 -0
  81. empathy_llm_toolkit/security/secrets_detector.py +678 -0
  82. empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
  83. empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
  84. empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
  85. empathy_llm_toolkit/session_status.py +20 -22
  86. empathy_llm_toolkit/state.py +28 -21
  87. empathy_llm_toolkit/wizards/__init__.py +38 -0
  88. empathy_llm_toolkit/wizards/base_wizard.py +364 -0
  89. empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
  90. empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
  91. empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
  92. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
  93. empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
  94. empathy_os/__init__.py +125 -84
  95. empathy_os/adaptive/__init__.py +13 -0
  96. empathy_os/adaptive/task_complexity.py +127 -0
  97. empathy_os/{monitoring.py → agent_monitoring.py} +28 -28
  98. empathy_os/cache/__init__.py +117 -0
  99. empathy_os/cache/base.py +166 -0
  100. empathy_os/cache/dependency_manager.py +253 -0
  101. empathy_os/cache/hash_only.py +248 -0
  102. empathy_os/cache/hybrid.py +390 -0
  103. empathy_os/cache/storage.py +282 -0
  104. empathy_os/cli.py +1516 -70
  105. empathy_os/cli_unified.py +597 -0
  106. empathy_os/config/__init__.py +63 -0
  107. empathy_os/config/xml_config.py +239 -0
  108. empathy_os/config.py +95 -37
  109. empathy_os/coordination.py +72 -68
  110. empathy_os/core.py +94 -107
  111. empathy_os/cost_tracker.py +74 -55
  112. empathy_os/dashboard/__init__.py +15 -0
  113. empathy_os/dashboard/server.py +743 -0
  114. empathy_os/discovery.py +17 -14
  115. empathy_os/emergence.py +21 -22
  116. empathy_os/exceptions.py +18 -30
  117. empathy_os/feedback_loops.py +30 -33
  118. empathy_os/levels.py +32 -35
  119. empathy_os/leverage_points.py +31 -32
  120. empathy_os/logging_config.py +19 -16
  121. empathy_os/memory/__init__.py +195 -0
  122. empathy_os/memory/claude_memory.py +466 -0
  123. empathy_os/memory/config.py +224 -0
  124. empathy_os/memory/control_panel.py +1298 -0
  125. empathy_os/memory/edges.py +179 -0
  126. empathy_os/memory/graph.py +567 -0
  127. empathy_os/memory/long_term.py +1194 -0
  128. empathy_os/memory/nodes.py +179 -0
  129. empathy_os/memory/redis_bootstrap.py +540 -0
  130. empathy_os/memory/security/__init__.py +31 -0
  131. empathy_os/memory/security/audit_logger.py +930 -0
  132. empathy_os/memory/security/pii_scrubber.py +640 -0
  133. empathy_os/memory/security/secrets_detector.py +678 -0
  134. empathy_os/memory/short_term.py +2119 -0
  135. empathy_os/memory/storage/__init__.py +15 -0
  136. empathy_os/memory/summary_index.py +583 -0
  137. empathy_os/memory/unified.py +619 -0
  138. empathy_os/metrics/__init__.py +12 -0
  139. empathy_os/metrics/prompt_metrics.py +190 -0
  140. empathy_os/models/__init__.py +136 -0
  141. empathy_os/models/__main__.py +13 -0
  142. empathy_os/models/cli.py +655 -0
  143. empathy_os/models/empathy_executor.py +354 -0
  144. empathy_os/models/executor.py +252 -0
  145. empathy_os/models/fallback.py +671 -0
  146. empathy_os/models/provider_config.py +563 -0
  147. empathy_os/models/registry.py +382 -0
  148. empathy_os/models/tasks.py +302 -0
  149. empathy_os/models/telemetry.py +548 -0
  150. empathy_os/models/token_estimator.py +378 -0
  151. empathy_os/models/validation.py +274 -0
  152. empathy_os/monitoring/__init__.py +52 -0
  153. empathy_os/monitoring/alerts.py +23 -0
  154. empathy_os/monitoring/alerts_cli.py +268 -0
  155. empathy_os/monitoring/multi_backend.py +271 -0
  156. empathy_os/monitoring/otel_backend.py +363 -0
  157. empathy_os/optimization/__init__.py +19 -0
  158. empathy_os/optimization/context_optimizer.py +272 -0
  159. empathy_os/pattern_library.py +30 -29
  160. empathy_os/persistence.py +35 -37
  161. empathy_os/platform_utils.py +261 -0
  162. empathy_os/plugins/__init__.py +28 -0
  163. empathy_os/plugins/base.py +361 -0
  164. empathy_os/plugins/registry.py +268 -0
  165. empathy_os/project_index/__init__.py +30 -0
  166. empathy_os/project_index/cli.py +335 -0
  167. empathy_os/project_index/crew_integration.py +430 -0
  168. empathy_os/project_index/index.py +425 -0
  169. empathy_os/project_index/models.py +501 -0
  170. empathy_os/project_index/reports.py +473 -0
  171. empathy_os/project_index/scanner.py +538 -0
  172. empathy_os/prompts/__init__.py +61 -0
  173. empathy_os/prompts/config.py +77 -0
  174. empathy_os/prompts/context.py +177 -0
  175. empathy_os/prompts/parser.py +285 -0
  176. empathy_os/prompts/registry.py +313 -0
  177. empathy_os/prompts/templates.py +208 -0
  178. empathy_os/redis_config.py +144 -58
  179. empathy_os/redis_memory.py +79 -77
  180. empathy_os/resilience/__init__.py +56 -0
  181. empathy_os/resilience/circuit_breaker.py +256 -0
  182. empathy_os/resilience/fallback.py +179 -0
  183. empathy_os/resilience/health.py +300 -0
  184. empathy_os/resilience/retry.py +209 -0
  185. empathy_os/resilience/timeout.py +135 -0
  186. empathy_os/routing/__init__.py +43 -0
  187. empathy_os/routing/chain_executor.py +433 -0
  188. empathy_os/routing/classifier.py +217 -0
  189. empathy_os/routing/smart_router.py +234 -0
  190. empathy_os/routing/wizard_registry.py +307 -0
  191. empathy_os/templates.py +19 -14
  192. empathy_os/trust/__init__.py +28 -0
  193. empathy_os/trust/circuit_breaker.py +579 -0
  194. empathy_os/trust_building.py +67 -58
  195. empathy_os/validation/__init__.py +19 -0
  196. empathy_os/validation/xml_validator.py +281 -0
  197. empathy_os/wizard_factory_cli.py +170 -0
  198. empathy_os/{workflows.py → workflow_commands.py} +131 -37
  199. empathy_os/workflows/__init__.py +360 -0
  200. empathy_os/workflows/base.py +1660 -0
  201. empathy_os/workflows/bug_predict.py +962 -0
  202. empathy_os/workflows/code_review.py +960 -0
  203. empathy_os/workflows/code_review_adapters.py +310 -0
  204. empathy_os/workflows/code_review_pipeline.py +720 -0
  205. empathy_os/workflows/config.py +600 -0
  206. empathy_os/workflows/dependency_check.py +648 -0
  207. empathy_os/workflows/document_gen.py +1069 -0
  208. empathy_os/workflows/documentation_orchestrator.py +1205 -0
  209. empathy_os/workflows/health_check.py +679 -0
  210. empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
  211. empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
  212. empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
  213. empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
  214. empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
  215. empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
  216. empathy_os/workflows/manage_documentation.py +804 -0
  217. empathy_os/workflows/new_sample_workflow1.py +146 -0
  218. empathy_os/workflows/new_sample_workflow1_README.md +150 -0
  219. empathy_os/workflows/perf_audit.py +687 -0
  220. empathy_os/workflows/pr_review.py +748 -0
  221. empathy_os/workflows/progress.py +445 -0
  222. empathy_os/workflows/progress_server.py +322 -0
  223. empathy_os/workflows/refactor_plan.py +693 -0
  224. empathy_os/workflows/release_prep.py +808 -0
  225. empathy_os/workflows/research_synthesis.py +404 -0
  226. empathy_os/workflows/secure_release.py +585 -0
  227. empathy_os/workflows/security_adapters.py +297 -0
  228. empathy_os/workflows/security_audit.py +1046 -0
  229. empathy_os/workflows/step_config.py +234 -0
  230. empathy_os/workflows/test5.py +125 -0
  231. empathy_os/workflows/test5_README.md +158 -0
  232. empathy_os/workflows/test_gen.py +1855 -0
  233. empathy_os/workflows/test_lifecycle.py +526 -0
  234. empathy_os/workflows/test_maintenance.py +626 -0
  235. empathy_os/workflows/test_maintenance_cli.py +590 -0
  236. empathy_os/workflows/test_maintenance_crew.py +821 -0
  237. empathy_os/workflows/xml_enhanced_crew.py +285 -0
  238. empathy_software_plugin/__init__.py +1 -2
  239. empathy_software_plugin/cli/__init__.py +120 -0
  240. empathy_software_plugin/cli/inspect.py +362 -0
  241. empathy_software_plugin/cli.py +49 -27
  242. empathy_software_plugin/plugin.py +4 -8
  243. empathy_software_plugin/wizards/__init__.py +42 -0
  244. empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
  245. empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
  246. empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
  247. empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
  248. empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
  249. empathy_software_plugin/wizards/base_wizard.py +288 -0
  250. empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
  251. empathy_software_plugin/wizards/code_review_wizard.py +606 -0
  252. empathy_software_plugin/wizards/debugging/__init__.py +50 -0
  253. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
  254. empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
  255. empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
  256. empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
  257. empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
  258. empathy_software_plugin/wizards/debugging/verification.py +369 -0
  259. empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
  260. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
  261. empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
  262. empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
  263. empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
  264. empathy_software_plugin/wizards/performance/__init__.py +9 -0
  265. empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
  266. empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
  267. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
  268. empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
  269. empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
  270. empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
  271. empathy_software_plugin/wizards/security/__init__.py +32 -0
  272. empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
  273. empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
  274. empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
  275. empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
  276. empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
  277. empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
  278. empathy_software_plugin/wizards/testing/__init__.py +27 -0
  279. empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
  280. empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
  281. empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
  282. empathy_software_plugin/wizards/testing_wizard.py +274 -0
  283. hot_reload/README.md +473 -0
  284. hot_reload/__init__.py +62 -0
  285. hot_reload/config.py +84 -0
  286. hot_reload/integration.py +228 -0
  287. hot_reload/reloader.py +298 -0
  288. hot_reload/watcher.py +179 -0
  289. hot_reload/websocket.py +176 -0
  290. scaffolding/README.md +589 -0
  291. scaffolding/__init__.py +35 -0
  292. scaffolding/__main__.py +14 -0
  293. scaffolding/cli.py +240 -0
  294. test_generator/__init__.py +38 -0
  295. test_generator/__main__.py +14 -0
  296. test_generator/cli.py +226 -0
  297. test_generator/generator.py +325 -0
  298. test_generator/risk_analyzer.py +216 -0
  299. workflow_patterns/__init__.py +33 -0
  300. workflow_patterns/behavior.py +249 -0
  301. workflow_patterns/core.py +76 -0
  302. workflow_patterns/output.py +99 -0
  303. workflow_patterns/registry.py +255 -0
  304. workflow_patterns/structural.py +288 -0
  305. workflow_scaffolding/__init__.py +11 -0
  306. workflow_scaffolding/__main__.py +12 -0
  307. workflow_scaffolding/cli.py +206 -0
  308. workflow_scaffolding/generator.py +265 -0
  309. agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
  310. agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
  311. agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
  312. agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
  313. agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
  314. agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
  315. agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
  316. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
  317. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
  318. agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
  319. agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
  320. agents/compliance_anticipation_agent.py +0 -1427
  321. agents/epic_integration_wizard.py +0 -541
  322. agents/trust_building_behaviors.py +0 -891
  323. empathy_framework-2.4.0.dist-info/METADATA +0 -485
  324. empathy_framework-2.4.0.dist-info/RECORD +0 -102
  325. empathy_framework-2.4.0.dist-info/entry_points.txt +0 -6
  326. empathy_llm_toolkit/htmlcov/status.json +0 -1
  327. empathy_llm_toolkit/security/htmlcov/status.json +0 -1
  328. {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
  329. {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,597 @@
1
+ """Unified CLI for Empathy Framework
2
+
3
+ A single entry point for all Empathy Framework commands using Typer.
4
+
5
+ Usage:
6
+ empathy --help # Show all commands
7
+ empathy memory status # Memory control panel
8
+ empathy provider # Show provider config
9
+ empathy scan . # Scan codebase
10
+ empathy morning # Start-of-day briefing
11
+
12
+ Copyright 2025 Smart-AI-Memory
13
+ Licensed under Fair Source License 0.9
14
+ """
15
+
16
+ import subprocess
17
+ import sys
18
+ from importlib.metadata import version as get_version
19
+ from pathlib import Path
20
+
21
+ import typer
22
+ from rich.console import Console
23
+ from rich.panel import Panel
24
+
25
+ # Create the main Typer app
26
+ app = typer.Typer(
27
+ name="empathy",
28
+ help="Empathy Framework - Predictive AI-Developer Collaboration",
29
+ no_args_is_help=True,
30
+ rich_markup_mode="rich",
31
+ )
32
+
33
+ console = Console()
34
+
35
+
36
+ def get_empathy_version() -> str:
37
+ """Get the installed version of empathy-framework."""
38
+ try:
39
+ return get_version("empathy-framework")
40
+ except Exception:
41
+ return "dev"
42
+
43
+
44
+ def version_callback(value: bool):
45
+ """Show version and exit."""
46
+ if value:
47
+ console.print(f"[bold blue]Empathy Framework[/bold blue] v{get_empathy_version()}")
48
+ raise typer.Exit()
49
+
50
+
51
+ @app.callback()
52
+ def callback(
53
+ version: bool = typer.Option(
54
+ None,
55
+ "--version",
56
+ "-v",
57
+ callback=version_callback,
58
+ is_eager=True,
59
+ help="Show version and exit",
60
+ ),
61
+ ):
62
+ """Empathy Framework - Predictive AI-Developer Collaboration
63
+
64
+ The AI collaboration framework that predicts problems before they happen.
65
+
66
+ [bold]Quick Start:[/bold]
67
+ empathy morning Start-of-day briefing
68
+ empathy health Quick health check
69
+ empathy ship Pre-commit validation
70
+
71
+ [bold]Memory:[/bold]
72
+ empathy memory status Check memory system status
73
+ empathy memory start Start Redis server
74
+
75
+ [bold]Provider:[/bold]
76
+ empathy provider Show current provider config
77
+ empathy provider --set hybrid Configure provider
78
+
79
+ [bold]Inspection:[/bold]
80
+ empathy scan . Scan codebase for issues
81
+ empathy inspect . Deep inspection with SARIF output
82
+ """
83
+
84
+
85
+ # =============================================================================
86
+ # MEMORY SUBCOMMAND GROUP
87
+ # =============================================================================
88
+
89
+ memory_app = typer.Typer(help="Memory system control panel")
90
+ app.add_typer(memory_app, name="memory")
91
+
92
+
93
+ @memory_app.command("status")
94
+ def memory_status():
95
+ """Check memory system status (Redis, patterns, stats)."""
96
+ # Delegate to the existing CLI
97
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "status"], check=False)
98
+
99
+
100
+ @memory_app.command("start")
101
+ def memory_start():
102
+ """Start Redis server for short-term memory."""
103
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "start"], check=False)
104
+
105
+
106
+ @memory_app.command("stop")
107
+ def memory_stop():
108
+ """Stop Redis server."""
109
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stop"], check=False)
110
+
111
+
112
+ @memory_app.command("stats")
113
+ def memory_stats():
114
+ """Show memory statistics."""
115
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stats"], check=False)
116
+
117
+
118
+ @memory_app.command("patterns")
119
+ def memory_patterns():
120
+ """List stored patterns."""
121
+ subprocess.run(
122
+ [sys.executable, "-m", "empathy_os.memory.control_panel", "patterns", "--list"], check=False
123
+ )
124
+
125
+
126
+ # =============================================================================
127
+ # PROVIDER SUBCOMMAND GROUP
128
+ # =============================================================================
129
+
130
+ provider_app = typer.Typer(help="Multi-model provider configuration")
131
+ app.add_typer(provider_app, name="provider")
132
+
133
+
134
+ @provider_app.callback(invoke_without_command=True)
135
+ def provider_show(
136
+ ctx: typer.Context,
137
+ set_provider: str | None = typer.Option(
138
+ None,
139
+ "--set",
140
+ "-s",
141
+ help="Set provider (anthropic, openai, google, ollama, hybrid)",
142
+ ),
143
+ interactive: bool = typer.Option(False, "--interactive", "-i", help="Interactive setup wizard"),
144
+ format_out: str = typer.Option("table", "--format", "-f", help="Output format (table, json)"),
145
+ ):
146
+ """Show or configure provider settings."""
147
+ if ctx.invoked_subcommand is not None:
148
+ return
149
+
150
+ args = [sys.executable, "-m", "empathy_os.models.cli", "provider"]
151
+ if set_provider:
152
+ args.extend(["--set", set_provider])
153
+ if interactive:
154
+ args.append("--interactive")
155
+ if format_out != "table":
156
+ args.extend(["-f", format_out])
157
+
158
+ subprocess.run(args, check=False)
159
+
160
+
161
+ @provider_app.command("registry")
162
+ def provider_registry(
163
+ provider_filter: str | None = typer.Option(None, "--provider", "-p", help="Filter by provider"),
164
+ ):
165
+ """Show all available models in the registry."""
166
+ args = [sys.executable, "-m", "empathy_os.models.cli", "registry"]
167
+ if provider_filter:
168
+ args.extend(["--provider", provider_filter])
169
+ subprocess.run(args, check=False)
170
+
171
+
172
+ @provider_app.command("costs")
173
+ def provider_costs(
174
+ input_tokens: int = typer.Option(10000, "--input-tokens", "-i", help="Input tokens"),
175
+ output_tokens: int = typer.Option(2000, "--output-tokens", "-o", help="Output tokens"),
176
+ ):
177
+ """Estimate costs for token usage."""
178
+ subprocess.run(
179
+ [
180
+ sys.executable,
181
+ "-m",
182
+ "empathy_os.models.cli",
183
+ "costs",
184
+ "--input-tokens",
185
+ str(input_tokens),
186
+ "--output-tokens",
187
+ str(output_tokens),
188
+ ],
189
+ check=False,
190
+ )
191
+
192
+
193
+ @provider_app.command("telemetry")
194
+ def provider_telemetry(
195
+ summary: bool = typer.Option(False, "--summary", help="Show summary"),
196
+ costs: bool = typer.Option(False, "--costs", help="Show cost breakdown"),
197
+ providers: bool = typer.Option(False, "--providers", help="Show provider usage"),
198
+ ):
199
+ """View telemetry and analytics."""
200
+ args = [sys.executable, "-m", "empathy_os.models.cli", "telemetry"]
201
+ if summary:
202
+ args.append("--summary")
203
+ if costs:
204
+ args.append("--costs")
205
+ if providers:
206
+ args.append("--providers")
207
+ subprocess.run(args, check=False)
208
+
209
+
210
+ # =============================================================================
211
+ # SCAN COMMAND
212
+ # =============================================================================
213
+
214
+
215
+ @app.command("scan")
216
+ def scan(
217
+ path: Path = typer.Argument(Path(), help="Path to scan"),
218
+ format_out: str = typer.Option(
219
+ "text",
220
+ "--format",
221
+ "-f",
222
+ help="Output format (text, json, sarif)",
223
+ ),
224
+ fix: bool = typer.Option(False, "--fix", help="Auto-fix safe issues"),
225
+ staged: bool = typer.Option(False, "--staged", help="Only scan staged changes"),
226
+ ):
227
+ """Scan codebase for issues."""
228
+ args = ["empathy-scan", str(path)]
229
+ if format_out != "text":
230
+ args.extend(["--format", format_out])
231
+ if fix:
232
+ args.append("--fix")
233
+ if staged:
234
+ args.append("--staged")
235
+
236
+ result = subprocess.run(args, check=False, capture_output=False)
237
+ if result.returncode != 0:
238
+ console.print("[yellow]Note: empathy-scan may not be installed[/yellow]")
239
+ console.print("Install with: pip install empathy-framework[software]")
240
+
241
+
242
+ # =============================================================================
243
+ # INSPECT COMMAND
244
+ # =============================================================================
245
+
246
+
247
+ @app.command("inspect")
248
+ def inspect_cmd(
249
+ path: Path = typer.Argument(Path(), help="Path to inspect"),
250
+ format_out: str = typer.Option(
251
+ "text",
252
+ "--format",
253
+ "-f",
254
+ help="Output format (text, json, sarif)",
255
+ ),
256
+ ):
257
+ """Deep inspection with code analysis."""
258
+ args = ["empathy-inspect", str(path)]
259
+ if format_out != "text":
260
+ args.extend(["--format", format_out])
261
+
262
+ result = subprocess.run(args, check=False, capture_output=False)
263
+ if result.returncode != 0:
264
+ console.print("[yellow]Note: empathy-inspect may not be installed[/yellow]")
265
+ console.print("Install with: pip install empathy-framework[software]")
266
+
267
+
268
+ # =============================================================================
269
+ # SYNC-CLAUDE COMMAND
270
+ # =============================================================================
271
+
272
+
273
+ @app.command("sync-claude")
274
+ def sync_claude(
275
+ source: str = typer.Option(
276
+ "patterns",
277
+ "--source",
278
+ "-s",
279
+ help="Source to sync (patterns, bugs)",
280
+ ),
281
+ ):
282
+ """Sync patterns to Claude Code memory."""
283
+ subprocess.run(["empathy-sync-claude", "--source", source], check=False)
284
+
285
+
286
+ # =============================================================================
287
+ # WORKFLOW COMMANDS (delegate to legacy CLI)
288
+ # =============================================================================
289
+
290
+
291
+ @app.command("morning")
292
+ def morning():
293
+ """Start-of-day briefing with patterns, git context, and priorities."""
294
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "morning"], check=False)
295
+
296
+
297
+ @app.command("ship")
298
+ def ship(
299
+ tests_only: bool = typer.Option(False, "--tests-only", help="Run tests only"),
300
+ security_only: bool = typer.Option(False, "--security-only", help="Run security checks only"),
301
+ skip_sync: bool = typer.Option(False, "--skip-sync", help="Skip Claude sync"),
302
+ ):
303
+ """Pre-commit validation (lint, format, tests, security)."""
304
+ args = [sys.executable, "-m", "empathy_os.cli", "ship"]
305
+ if tests_only:
306
+ args.append("--tests-only")
307
+ if security_only:
308
+ args.append("--security-only")
309
+ if skip_sync:
310
+ args.append("--skip-sync")
311
+ subprocess.run(args, check=False)
312
+
313
+
314
+ @app.command("health")
315
+ def health(
316
+ deep: bool = typer.Option(False, "--deep", help="Comprehensive health check"),
317
+ fix: bool = typer.Option(False, "--fix", help="Auto-fix issues"),
318
+ ):
319
+ """Quick health check (lint, types, tests)."""
320
+ args = [sys.executable, "-m", "empathy_os.cli", "health"]
321
+ if deep:
322
+ args.append("--deep")
323
+ if fix:
324
+ args.append("--fix")
325
+ subprocess.run(args, check=False)
326
+
327
+
328
+ @app.command("fix-all")
329
+ def fix_all():
330
+ """Fix all lint and format issues."""
331
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "fix-all"], check=False)
332
+
333
+
334
+ @app.command("learn")
335
+ def learn(
336
+ analyze: int = typer.Option(20, "--analyze", "-a", help="Number of commits to analyze"),
337
+ ):
338
+ """Learn patterns from commit history."""
339
+ subprocess.run(
340
+ [sys.executable, "-m", "empathy_os.cli", "learn", "--analyze", str(analyze)], check=False
341
+ )
342
+
343
+
344
+ @app.command("run")
345
+ def run_repl():
346
+ """Start interactive REPL mode."""
347
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "run"], check=False)
348
+
349
+
350
+ # =============================================================================
351
+ # WIZARD COMMANDS
352
+ # =============================================================================
353
+
354
+ wizard_app = typer.Typer(help="AI Development Wizards")
355
+ app.add_typer(wizard_app, name="wizard")
356
+
357
+
358
+ @wizard_app.command("list")
359
+ def wizard_list():
360
+ """List all available wizards."""
361
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "frameworks"], check=False)
362
+
363
+
364
+ @wizard_app.command("run")
365
+ def wizard_run(
366
+ name: str = typer.Argument(..., help="Wizard name to run"),
367
+ path: Path = typer.Option(Path(), "--path", "-p", help="Path to analyze"),
368
+ ):
369
+ """Run a specific wizard on your codebase."""
370
+ console.print(f"[yellow]Running wizard:[/yellow] {name} on {path}")
371
+ # Delegate to empathy-scan with wizard filter
372
+ subprocess.run(["empathy-scan", str(path), "--wizards", name], check=False)
373
+
374
+
375
+ @wizard_app.command("create")
376
+ def wizard_create(
377
+ name: str = typer.Argument(..., help="Wizard name (snake_case)"),
378
+ domain: str = typer.Option(
379
+ ..., "--domain", "-d", help="Domain (healthcare, finance, software)"
380
+ ),
381
+ wizard_type: str = typer.Option(
382
+ "domain", "--type", "-t", help="Wizard type (domain, coach, ai)"
383
+ ),
384
+ methodology: str = typer.Option(
385
+ "pattern", "--methodology", "-m", help="Methodology (pattern, tdd)"
386
+ ),
387
+ patterns: str | None = typer.Option(
388
+ None, "--patterns", "-p", help="Comma-separated pattern IDs"
389
+ ),
390
+ interactive: bool = typer.Option(
391
+ False, "--interactive", "-i", help="Interactive pattern selection"
392
+ ),
393
+ ):
394
+ """Create a new wizard using Wizard Factory (12x faster)."""
395
+ cmd = [
396
+ sys.executable,
397
+ "-m",
398
+ "scaffolding",
399
+ "create",
400
+ name,
401
+ "--domain",
402
+ domain,
403
+ "--type",
404
+ wizard_type,
405
+ "--methodology",
406
+ methodology,
407
+ ]
408
+ if patterns:
409
+ cmd.extend(["--patterns", patterns])
410
+ if interactive:
411
+ cmd.append("--interactive")
412
+ subprocess.run(cmd, check=False)
413
+
414
+
415
+ @wizard_app.command("list-patterns")
416
+ def wizard_list_patterns():
417
+ """List all available wizard patterns."""
418
+ subprocess.run([sys.executable, "-m", "scaffolding", "list-patterns"], check=False)
419
+
420
+
421
+ @wizard_app.command("generate-tests")
422
+ def wizard_generate_tests(
423
+ wizard_id: str = typer.Argument(..., help="Wizard ID"),
424
+ patterns: str = typer.Option(..., "--patterns", "-p", help="Comma-separated pattern IDs"),
425
+ output: Path | None = typer.Option(None, "--output", "-o", help="Output directory"),
426
+ ):
427
+ """Generate tests for a wizard."""
428
+ cmd = [sys.executable, "-m", "test_generator", "generate", wizard_id, "--patterns", patterns]
429
+ if output:
430
+ cmd.extend(["--output", str(output)])
431
+ subprocess.run(cmd, check=False)
432
+
433
+
434
+ @wizard_app.command("analyze")
435
+ def wizard_analyze(
436
+ wizard_id: str = typer.Argument(..., help="Wizard ID"),
437
+ patterns: str = typer.Option(..., "--patterns", "-p", help="Wizard ID"),
438
+ json_output: bool = typer.Option(False, "--json", help="Output JSON format"),
439
+ ):
440
+ """Analyze wizard risk and get coverage recommendations."""
441
+ cmd = [sys.executable, "-m", "test_generator", "analyze", wizard_id, "--patterns", patterns]
442
+ if json_output:
443
+ cmd.append("--json")
444
+ subprocess.run(cmd, check=False)
445
+
446
+
447
+ # =============================================================================
448
+ # WORKFLOW SUBCOMMAND GROUP
449
+ # =============================================================================
450
+
451
+ workflow_app = typer.Typer(help="Multi-model workflows")
452
+ app.add_typer(workflow_app, name="workflow")
453
+
454
+
455
+ @workflow_app.command("list")
456
+ def workflow_list():
457
+ """List available multi-model workflows."""
458
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "workflow", "list"], check=False)
459
+
460
+
461
+ @workflow_app.command("run")
462
+ def workflow_run(
463
+ name: str = typer.Argument(..., help="Workflow name"),
464
+ path: Path = typer.Option(Path(), "--path", "-p", help="Path to run on"),
465
+ ):
466
+ """Run a multi-model workflow."""
467
+ subprocess.run(
468
+ [sys.executable, "-m", "empathy_os.cli", "workflow", "run", name, str(path)], check=False
469
+ )
470
+
471
+
472
+ @workflow_app.command("create")
473
+ def workflow_create(
474
+ name: str = typer.Argument(..., help="Workflow name (kebab-case, e.g., bug-scanner)"),
475
+ description: str = typer.Option(None, "--description", "-d", help="Workflow description"),
476
+ patterns: str = typer.Option(None, "--patterns", "-p", help="Comma-separated pattern IDs"),
477
+ stages: str = typer.Option(None, "--stages", "-s", help="Comma-separated stage names"),
478
+ tier_map: str = typer.Option(
479
+ None, "--tier-map", "-t", help="Tier map (e.g., analyze:CHEAP,process:CAPABLE)"
480
+ ),
481
+ output: Path = typer.Option(None, "--output", "-o", help="Output directory"),
482
+ ):
483
+ """Create a new workflow using Workflow Factory (12x faster)."""
484
+ cmd = [sys.executable, "-m", "workflow_scaffolding", "create", name]
485
+ if description:
486
+ cmd.extend(["--description", description])
487
+ if patterns:
488
+ cmd.extend(["--patterns", patterns])
489
+ if stages:
490
+ cmd.extend(["--stages", stages])
491
+ if tier_map:
492
+ cmd.extend(["--tier-map", tier_map])
493
+ if output:
494
+ cmd.extend(["--output", str(output)])
495
+ subprocess.run(cmd, check=False)
496
+
497
+
498
+ @workflow_app.command("list-patterns")
499
+ def workflow_list_patterns():
500
+ """List available workflow patterns."""
501
+ subprocess.run([sys.executable, "-m", "workflow_scaffolding", "list-patterns"], check=False)
502
+
503
+
504
+ @workflow_app.command("recommend")
505
+ def workflow_recommend(
506
+ workflow_type: str = typer.Argument(
507
+ ..., help="Workflow type (code-analysis, simple, multi-agent, etc.)"
508
+ ),
509
+ ):
510
+ """Recommend patterns for a workflow type."""
511
+ subprocess.run(
512
+ [sys.executable, "-m", "workflow_scaffolding", "recommend", workflow_type], check=False
513
+ )
514
+
515
+
516
+ # =============================================================================
517
+ # UTILITY COMMANDS
518
+ # =============================================================================
519
+
520
+
521
+ @app.command("cheatsheet")
522
+ def cheatsheet():
523
+ """Show quick reference for all commands."""
524
+ console.print(
525
+ Panel.fit(
526
+ """[bold]Getting Started[/bold]
527
+ empathy morning Start-of-day briefing
528
+ empathy health Quick health check
529
+ empathy ship Pre-commit validation
530
+ empathy run Interactive REPL
531
+
532
+ [bold]Memory System[/bold]
533
+ empathy memory status Check Redis & patterns
534
+ empathy memory start Start Redis server
535
+ empathy memory patterns List stored patterns
536
+
537
+ [bold]Provider Config[/bold]
538
+ empathy provider Show current config
539
+ empathy provider --set hybrid Use best-of-breed
540
+ empathy provider registry List all models
541
+
542
+ [bold]Code Inspection[/bold]
543
+ empathy scan . Scan for issues
544
+ empathy inspect . Deep analysis (SARIF)
545
+ empathy fix-all Auto-fix everything
546
+
547
+ [bold]Pattern Learning[/bold]
548
+ empathy learn --analyze 20 Learn from commits
549
+ empathy sync-claude Sync to Claude Code
550
+
551
+ [bold]Workflows[/bold]
552
+ empathy workflow list Show available workflows
553
+ empathy workflow run <name> Execute a workflow
554
+ empathy workflow create <name> -p <patterns> Create workflow (12x faster)
555
+ empathy workflow list-patterns List available patterns
556
+
557
+ [bold]Wizards[/bold]
558
+ empathy wizard list Show available wizards
559
+ empathy wizard run <name> Execute a wizard
560
+ empathy wizard create <name> -d <domain> Create wizard (12x faster)
561
+ empathy wizard list-patterns List available patterns""",
562
+ title="[bold blue]Empathy Framework Cheatsheet[/bold blue]",
563
+ ),
564
+ )
565
+
566
+
567
+ @app.command("dashboard")
568
+ def dashboard():
569
+ """Launch visual dashboard."""
570
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "dashboard"], check=False)
571
+
572
+
573
+ @app.command("costs")
574
+ def costs():
575
+ """View API cost tracking."""
576
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "costs"], check=False)
577
+
578
+
579
+ @app.command("init")
580
+ def init():
581
+ """Create a new configuration file."""
582
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "init"], check=False)
583
+
584
+
585
+ @app.command("status")
586
+ def status():
587
+ """What needs attention now."""
588
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "status"], check=False)
589
+
590
+
591
+ def main():
592
+ """Entry point for the unified CLI."""
593
+ app()
594
+
595
+
596
+ if __name__ == "__main__":
597
+ main()
@@ -0,0 +1,63 @@
1
+ """Configuration management for Empathy Framework.
2
+
3
+ This package provides:
4
+ 1. Original EmpathyConfig (backward compatible)
5
+ 2. XML enhancement configurations (new)
6
+
7
+ Copyright 2026 Smart-AI-Memory
8
+ Licensed under Fair Source License 0.9
9
+ """
10
+
11
+ # Import original config from parent module's config.py for backward compatibility
12
+ import importlib.util
13
+ import sys
14
+ from pathlib import Path
15
+
16
+ # Check if PyYAML is available
17
+ try:
18
+ import yaml # noqa: F401
19
+
20
+ YAML_AVAILABLE = True
21
+ except ImportError:
22
+ YAML_AVAILABLE = False
23
+
24
+ # Load the original config.py module directly
25
+ config_py_path = Path(__file__).parent.parent / "config.py"
26
+ spec = importlib.util.spec_from_file_location("empathy_os_config_legacy", config_py_path)
27
+ if spec and spec.loader:
28
+ legacy_config = importlib.util.module_from_spec(spec)
29
+ spec.loader.exec_module(legacy_config)
30
+ EmpathyConfig = legacy_config.EmpathyConfig
31
+ load_config = legacy_config.load_config
32
+ else:
33
+ # Fallback if import fails
34
+ EmpathyConfig = None
35
+ load_config = None
36
+
37
+ # Import XML enhancement configs
38
+ from empathy_os.config.xml_config import ( # noqa: E402
39
+ AdaptiveConfig,
40
+ EmpathyXMLConfig,
41
+ I18nConfig,
42
+ MetricsConfig,
43
+ OptimizationConfig,
44
+ XMLConfig,
45
+ get_config,
46
+ set_config,
47
+ )
48
+
49
+ __all__ = [
50
+ # Original config (backward compatible)
51
+ "EmpathyConfig",
52
+ "load_config",
53
+ "YAML_AVAILABLE",
54
+ # XML enhancement configs
55
+ "XMLConfig",
56
+ "OptimizationConfig",
57
+ "AdaptiveConfig",
58
+ "I18nConfig",
59
+ "MetricsConfig",
60
+ "EmpathyXMLConfig",
61
+ "get_config",
62
+ "set_config",
63
+ ]