empathy-framework 3.2.3__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 (328) hide show
  1. coach_wizards/__init__.py +11 -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 +22 -25
  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.2.3.dist-info → empathy_framework-3.8.2.dist-info}/METADATA +513 -58
  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-3.2.3.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 +177 -22
  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 +51 -49
  64. empathy_llm_toolkit/git_pattern_extractor.py +16 -12
  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 +13 -11
  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 +18 -20
  86. empathy_llm_toolkit/state.py +20 -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 +76 -77
  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} +27 -27
  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 +515 -109
  105. empathy_os/cli_unified.py +189 -42
  106. empathy_os/config/__init__.py +63 -0
  107. empathy_os/config/xml_config.py +239 -0
  108. empathy_os/config.py +87 -36
  109. empathy_os/coordination.py +48 -54
  110. empathy_os/core.py +90 -99
  111. empathy_os/cost_tracker.py +20 -23
  112. empathy_os/dashboard/__init__.py +15 -0
  113. empathy_os/dashboard/server.py +743 -0
  114. empathy_os/discovery.py +9 -11
  115. empathy_os/emergence.py +20 -21
  116. empathy_os/exceptions.py +18 -30
  117. empathy_os/feedback_loops.py +27 -30
  118. empathy_os/levels.py +31 -34
  119. empathy_os/leverage_points.py +27 -28
  120. empathy_os/logging_config.py +11 -12
  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 +29 -28
  160. empathy_os/persistence.py +30 -34
  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 +53 -56
  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 +12 -11
  192. empathy_os/trust/__init__.py +28 -0
  193. empathy_os/trust/circuit_breaker.py +579 -0
  194. empathy_os/trust_building.py +44 -36
  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} +123 -31
  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 +35 -26
  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-3.2.3.dist-info/RECORD +0 -104
  324. empathy_framework-3.2.3.dist-info/entry_points.txt +0 -7
  325. empathy_llm_toolkit/htmlcov/status.json +0 -1
  326. empathy_llm_toolkit/security/htmlcov/status.json +0 -1
  327. {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
  328. {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
empathy_os/cli_unified.py CHANGED
@@ -1,5 +1,4 @@
1
- """
2
- Unified CLI for Empathy Framework
1
+ """Unified CLI for Empathy Framework
3
2
 
4
3
  A single entry point for all Empathy Framework commands using Typer.
5
4
 
@@ -60,8 +59,7 @@ def callback(
60
59
  help="Show version and exit",
61
60
  ),
62
61
  ):
63
- """
64
- Empathy Framework - Predictive AI-Developer Collaboration
62
+ """Empathy Framework - Predictive AI-Developer Collaboration
65
63
 
66
64
  The AI collaboration framework that predicts problems before they happen.
67
65
 
@@ -82,7 +80,6 @@ def callback(
82
80
  empathy scan . Scan codebase for issues
83
81
  empathy inspect . Deep inspection with SARIF output
84
82
  """
85
- pass
86
83
 
87
84
 
88
85
  # =============================================================================
@@ -97,31 +94,33 @@ app.add_typer(memory_app, name="memory")
97
94
  def memory_status():
98
95
  """Check memory system status (Redis, patterns, stats)."""
99
96
  # Delegate to the existing CLI
100
- subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "status"])
97
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "status"], check=False)
101
98
 
102
99
 
103
100
  @memory_app.command("start")
104
101
  def memory_start():
105
102
  """Start Redis server for short-term memory."""
106
- subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "start"])
103
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "start"], check=False)
107
104
 
108
105
 
109
106
  @memory_app.command("stop")
110
107
  def memory_stop():
111
108
  """Stop Redis server."""
112
- subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stop"])
109
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stop"], check=False)
113
110
 
114
111
 
115
112
  @memory_app.command("stats")
116
113
  def memory_stats():
117
114
  """Show memory statistics."""
118
- subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stats"])
115
+ subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stats"], check=False)
119
116
 
120
117
 
121
118
  @memory_app.command("patterns")
122
119
  def memory_patterns():
123
120
  """List stored patterns."""
124
- subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "patterns", "--list"])
121
+ subprocess.run(
122
+ [sys.executable, "-m", "empathy_os.memory.control_panel", "patterns", "--list"], check=False
123
+ )
125
124
 
126
125
 
127
126
  # =============================================================================
@@ -136,7 +135,10 @@ app.add_typer(provider_app, name="provider")
136
135
  def provider_show(
137
136
  ctx: typer.Context,
138
137
  set_provider: str | None = typer.Option(
139
- None, "--set", "-s", help="Set provider (anthropic, openai, ollama, hybrid)"
138
+ None,
139
+ "--set",
140
+ "-s",
141
+ help="Set provider (anthropic, openai, google, ollama, hybrid)",
140
142
  ),
141
143
  interactive: bool = typer.Option(False, "--interactive", "-i", help="Interactive setup wizard"),
142
144
  format_out: str = typer.Option("table", "--format", "-f", help="Output format (table, json)"),
@@ -153,7 +155,7 @@ def provider_show(
153
155
  if format_out != "table":
154
156
  args.extend(["-f", format_out])
155
157
 
156
- subprocess.run(args)
158
+ subprocess.run(args, check=False)
157
159
 
158
160
 
159
161
  @provider_app.command("registry")
@@ -164,7 +166,7 @@ def provider_registry(
164
166
  args = [sys.executable, "-m", "empathy_os.models.cli", "registry"]
165
167
  if provider_filter:
166
168
  args.extend(["--provider", provider_filter])
167
- subprocess.run(args)
169
+ subprocess.run(args, check=False)
168
170
 
169
171
 
170
172
  @provider_app.command("costs")
@@ -183,7 +185,8 @@ def provider_costs(
183
185
  str(input_tokens),
184
186
  "--output-tokens",
185
187
  str(output_tokens),
186
- ]
188
+ ],
189
+ check=False,
187
190
  )
188
191
 
189
192
 
@@ -201,7 +204,7 @@ def provider_telemetry(
201
204
  args.append("--costs")
202
205
  if providers:
203
206
  args.append("--providers")
204
- subprocess.run(args)
207
+ subprocess.run(args, check=False)
205
208
 
206
209
 
207
210
  # =============================================================================
@@ -211,9 +214,12 @@ def provider_telemetry(
211
214
 
212
215
  @app.command("scan")
213
216
  def scan(
214
- path: Path = typer.Argument(Path("."), help="Path to scan"),
217
+ path: Path = typer.Argument(Path(), help="Path to scan"),
215
218
  format_out: str = typer.Option(
216
- "text", "--format", "-f", help="Output format (text, json, sarif)"
219
+ "text",
220
+ "--format",
221
+ "-f",
222
+ help="Output format (text, json, sarif)",
217
223
  ),
218
224
  fix: bool = typer.Option(False, "--fix", help="Auto-fix safe issues"),
219
225
  staged: bool = typer.Option(False, "--staged", help="Only scan staged changes"),
@@ -227,7 +233,7 @@ def scan(
227
233
  if staged:
228
234
  args.append("--staged")
229
235
 
230
- result = subprocess.run(args, capture_output=False)
236
+ result = subprocess.run(args, check=False, capture_output=False)
231
237
  if result.returncode != 0:
232
238
  console.print("[yellow]Note: empathy-scan may not be installed[/yellow]")
233
239
  console.print("Install with: pip install empathy-framework[software]")
@@ -240,9 +246,12 @@ def scan(
240
246
 
241
247
  @app.command("inspect")
242
248
  def inspect_cmd(
243
- path: Path = typer.Argument(Path("."), help="Path to inspect"),
249
+ path: Path = typer.Argument(Path(), help="Path to inspect"),
244
250
  format_out: str = typer.Option(
245
- "text", "--format", "-f", help="Output format (text, json, sarif)"
251
+ "text",
252
+ "--format",
253
+ "-f",
254
+ help="Output format (text, json, sarif)",
246
255
  ),
247
256
  ):
248
257
  """Deep inspection with code analysis."""
@@ -250,7 +259,7 @@ def inspect_cmd(
250
259
  if format_out != "text":
251
260
  args.extend(["--format", format_out])
252
261
 
253
- result = subprocess.run(args, capture_output=False)
262
+ result = subprocess.run(args, check=False, capture_output=False)
254
263
  if result.returncode != 0:
255
264
  console.print("[yellow]Note: empathy-inspect may not be installed[/yellow]")
256
265
  console.print("Install with: pip install empathy-framework[software]")
@@ -264,11 +273,14 @@ def inspect_cmd(
264
273
  @app.command("sync-claude")
265
274
  def sync_claude(
266
275
  source: str = typer.Option(
267
- "patterns", "--source", "-s", help="Source to sync (patterns, bugs)"
276
+ "patterns",
277
+ "--source",
278
+ "-s",
279
+ help="Source to sync (patterns, bugs)",
268
280
  ),
269
281
  ):
270
282
  """Sync patterns to Claude Code memory."""
271
- subprocess.run(["empathy-sync-claude", "--source", source])
283
+ subprocess.run(["empathy-sync-claude", "--source", source], check=False)
272
284
 
273
285
 
274
286
  # =============================================================================
@@ -279,13 +291,24 @@ def sync_claude(
279
291
  @app.command("morning")
280
292
  def morning():
281
293
  """Start-of-day briefing with patterns, git context, and priorities."""
282
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "morning"])
294
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "morning"], check=False)
283
295
 
284
296
 
285
297
  @app.command("ship")
286
- def 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
+ ):
287
303
  """Pre-commit validation (lint, format, tests, security)."""
288
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "ship"])
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)
289
312
 
290
313
 
291
314
  @app.command("health")
@@ -299,13 +322,13 @@ def health(
299
322
  args.append("--deep")
300
323
  if fix:
301
324
  args.append("--fix")
302
- subprocess.run(args)
325
+ subprocess.run(args, check=False)
303
326
 
304
327
 
305
328
  @app.command("fix-all")
306
329
  def fix_all():
307
330
  """Fix all lint and format issues."""
308
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "fix-all"])
331
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "fix-all"], check=False)
309
332
 
310
333
 
311
334
  @app.command("learn")
@@ -313,13 +336,15 @@ def learn(
313
336
  analyze: int = typer.Option(20, "--analyze", "-a", help="Number of commits to analyze"),
314
337
  ):
315
338
  """Learn patterns from commit history."""
316
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "learn", "--analyze", str(analyze)])
339
+ subprocess.run(
340
+ [sys.executable, "-m", "empathy_os.cli", "learn", "--analyze", str(analyze)], check=False
341
+ )
317
342
 
318
343
 
319
344
  @app.command("run")
320
345
  def run_repl():
321
346
  """Start interactive REPL mode."""
322
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "run"])
347
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "run"], check=False)
323
348
 
324
349
 
325
350
  # =============================================================================
@@ -333,18 +358,90 @@ app.add_typer(wizard_app, name="wizard")
333
358
  @wizard_app.command("list")
334
359
  def wizard_list():
335
360
  """List all available wizards."""
336
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "frameworks"])
361
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "frameworks"], check=False)
337
362
 
338
363
 
339
364
  @wizard_app.command("run")
340
365
  def wizard_run(
341
366
  name: str = typer.Argument(..., help="Wizard name to run"),
342
- path: Path = typer.Option(Path("."), "--path", "-p", help="Path to analyze"),
367
+ path: Path = typer.Option(Path(), "--path", "-p", help="Path to analyze"),
343
368
  ):
344
369
  """Run a specific wizard on your codebase."""
345
370
  console.print(f"[yellow]Running wizard:[/yellow] {name} on {path}")
346
371
  # Delegate to empathy-scan with wizard filter
347
- subprocess.run(["empathy-scan", str(path), "--wizards", name])
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)
348
445
 
349
446
 
350
447
  # =============================================================================
@@ -358,16 +455,62 @@ app.add_typer(workflow_app, name="workflow")
358
455
  @workflow_app.command("list")
359
456
  def workflow_list():
360
457
  """List available multi-model workflows."""
361
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "workflow", "list"])
458
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "workflow", "list"], check=False)
362
459
 
363
460
 
364
461
  @workflow_app.command("run")
365
462
  def workflow_run(
366
463
  name: str = typer.Argument(..., help="Workflow name"),
367
- path: Path = typer.Option(Path("."), "--path", "-p", help="Path to run on"),
464
+ path: Path = typer.Option(Path(), "--path", "-p", help="Path to run on"),
368
465
  ):
369
466
  """Run a multi-model workflow."""
370
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "workflow", "run", name, str(path)])
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
+ )
371
514
 
372
515
 
373
516
  # =============================================================================
@@ -408,37 +551,41 @@ def cheatsheet():
408
551
  [bold]Workflows[/bold]
409
552
  empathy workflow list Show available workflows
410
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
411
556
 
412
557
  [bold]Wizards[/bold]
413
558
  empathy wizard list Show available wizards
414
- empathy wizard run <name> Execute a wizard""",
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""",
415
562
  title="[bold blue]Empathy Framework Cheatsheet[/bold blue]",
416
- )
563
+ ),
417
564
  )
418
565
 
419
566
 
420
567
  @app.command("dashboard")
421
568
  def dashboard():
422
569
  """Launch visual dashboard."""
423
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "dashboard"])
570
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "dashboard"], check=False)
424
571
 
425
572
 
426
573
  @app.command("costs")
427
574
  def costs():
428
575
  """View API cost tracking."""
429
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "costs"])
576
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "costs"], check=False)
430
577
 
431
578
 
432
579
  @app.command("init")
433
580
  def init():
434
581
  """Create a new configuration file."""
435
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "init"])
582
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "init"], check=False)
436
583
 
437
584
 
438
585
  @app.command("status")
439
586
  def status():
440
587
  """What needs attention now."""
441
- subprocess.run([sys.executable, "-m", "empathy_os.cli", "status"])
588
+ subprocess.run([sys.executable, "-m", "empathy_os.cli", "status"], check=False)
442
589
 
443
590
 
444
591
  def 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
+ ]