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/levels.py CHANGED
@@ -1,5 +1,4 @@
1
- """
2
- Five Levels of AI Empathy - Individual Level Classes
1
+ """Five Levels of AI Empathy - Individual Level Classes
3
2
 
4
3
  Provides concrete implementations for each empathy level:
5
4
  - Level 1: Reactive Empathy (respond to explicit requests)
@@ -23,8 +22,7 @@ from typing import Any
23
22
 
24
23
  @dataclass
25
24
  class EmpathyAction:
26
- """
27
- An action taken at a specific empathy level
25
+ """An action taken at a specific empathy level
28
26
 
29
27
  Records what action was taken, at what level, and the outcome.
30
28
  """
@@ -38,8 +36,7 @@ class EmpathyAction:
38
36
 
39
37
 
40
38
  class EmpathyLevel(ABC):
41
- """
42
- Abstract base class for empathy levels
39
+ """Abstract base class for empathy levels
43
40
 
44
41
  Each level implements specific behaviors appropriate to that
45
42
  level of empathy sophistication.
@@ -53,8 +50,7 @@ class EmpathyLevel(ABC):
53
50
 
54
51
  @abstractmethod
55
52
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
56
- """
57
- Respond to a situation at this empathy level.
53
+ """Respond to a situation at this empathy level.
58
54
 
59
55
  This abstract method defines the core behavior for each empathy level.
60
56
  Subclasses must implement level-specific response logic that corresponds
@@ -90,8 +86,8 @@ class EmpathyLevel(ABC):
90
86
 
91
87
  Implementations should record actions via self.record_action() and
92
88
  maintain consistency in the response format across levels.
89
+
93
90
  """
94
- pass
95
91
 
96
92
  def record_action(
97
93
  self,
@@ -116,8 +112,7 @@ class EmpathyLevel(ABC):
116
112
 
117
113
 
118
114
  class Level1Reactive(EmpathyLevel):
119
- """
120
- Level 1: Reactive Empathy
115
+ """Level 1: Reactive Empathy
121
116
 
122
117
  **Principle**: Help after being asked
123
118
 
@@ -143,14 +138,14 @@ class Level1Reactive(EmpathyLevel):
143
138
  >>> response = level1.respond({"request": "status", "subject": "project"})
144
139
  >>> print(response["action"])
145
140
  'provide_requested_information'
141
+
146
142
  """
147
143
 
148
144
  level_number = 1
149
145
  level_name = "Reactive Empathy"
150
146
 
151
147
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
152
- """
153
- Respond reactively to explicit request
148
+ """Respond reactively to explicit request
154
149
 
155
150
  Only provides what was directly asked for.
156
151
  """
@@ -177,8 +172,7 @@ class Level1Reactive(EmpathyLevel):
177
172
 
178
173
 
179
174
  class Level2Guided(EmpathyLevel):
180
- """
181
- Level 2: Guided Empathy
175
+ """Level 2: Guided Empathy
182
176
 
183
177
  **Principle**: Collaborative exploration with user input
184
178
 
@@ -208,14 +202,14 @@ class Level2Guided(EmpathyLevel):
208
202
  ... })
209
203
  >>> print(len(response["clarifying_questions"]))
210
204
  3
205
+
211
206
  """
212
207
 
213
208
  level_number = 2
214
209
  level_name = "Guided Empathy"
215
210
 
216
211
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
217
- """
218
- Respond with guided exploration
212
+ """Respond with guided exploration
219
213
 
220
214
  Asks questions to understand needs and collaboratively explore solutions.
221
215
  """
@@ -266,8 +260,7 @@ class Level2Guided(EmpathyLevel):
266
260
 
267
261
 
268
262
  class Level3Proactive(EmpathyLevel):
269
- """
270
- Level 3: Proactive Empathy
263
+ """Level 3: Proactive Empathy
271
264
 
272
265
  **Principle**: Act before being asked (when confidence is high)
273
266
 
@@ -296,14 +289,14 @@ class Level3Proactive(EmpathyLevel):
296
289
  ... "confidence": 0.9
297
290
  ... })
298
291
  >>> print(response["proactive_offer"])
292
+
299
293
  """
300
294
 
301
295
  level_number = 3
302
296
  level_name = "Proactive Empathy"
303
297
 
304
298
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
305
- """
306
- Respond proactively to observed needs
299
+ """Respond proactively to observed needs
307
300
 
308
301
  Takes initiative on obvious needs without being asked.
309
302
  """
@@ -351,8 +344,7 @@ class Level3Proactive(EmpathyLevel):
351
344
 
352
345
 
353
346
  class Level4Anticipatory(EmpathyLevel):
354
- """
355
- Level 4: Anticipatory Empathy
347
+ """Level 4: Anticipatory Empathy
356
348
 
357
349
  **Principle**: Predict and prepare for future needs
358
350
 
@@ -387,14 +379,14 @@ class Level4Anticipatory(EmpathyLevel):
387
379
  ... "prediction_horizon": "30_days"
388
380
  ... })
389
381
  >>> print(response["predicted_needs"])
382
+
390
383
  """
391
384
 
392
385
  level_number = 4
393
386
  level_name = "Anticipatory Empathy"
394
387
 
395
388
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
396
- """
397
- Respond anticipatorily to predicted future needs
389
+ """Respond anticipatorily to predicted future needs
398
390
 
399
391
  Analyzes trajectory and prepares for future needs before they arise.
400
392
  """
@@ -427,7 +419,10 @@ class Level4Anticipatory(EmpathyLevel):
427
419
  return response
428
420
 
429
421
  def _predict_future_needs(
430
- self, current_state: dict[str, Any], trajectory: str, horizon: str
422
+ self,
423
+ current_state: dict[str, Any],
424
+ trajectory: str,
425
+ horizon: str,
431
426
  ) -> dict[str, Any]:
432
427
  """Predict future needs based on current trajectory"""
433
428
  # Simulate prediction logic
@@ -452,8 +447,7 @@ class Level4Anticipatory(EmpathyLevel):
452
447
 
453
448
 
454
449
  class Level5Systems(EmpathyLevel):
455
- """
456
- Level 5: Systems Empathy
450
+ """Level 5: Systems Empathy
457
451
 
458
452
  **Principle**: Build structures that help at scale
459
453
 
@@ -489,20 +483,20 @@ class Level5Systems(EmpathyLevel):
489
483
  ... "pattern": "repetitive_structure"
490
484
  ... })
491
485
  >>> print(response["system_created"])
486
+
492
487
  """
493
488
 
494
489
  level_number = 5
495
490
  level_name = "Systems Empathy"
496
491
 
497
492
  def respond(self, context: dict[str, Any]) -> dict[str, Any]:
498
- """
499
- Respond with systems-level solution
493
+ """Respond with systems-level solution
500
494
 
501
495
  Creates reusable structures that help at scale.
502
496
  """
503
497
  problem_class = context.get("problem_class", "unknown")
504
498
  instances = context.get("instances", 0)
505
- pattern = context.get("pattern", None)
499
+ pattern = context.get("pattern")
506
500
 
507
501
  system_design = self._design_system_solution(problem_class, instances, pattern)
508
502
 
@@ -530,7 +524,10 @@ class Level5Systems(EmpathyLevel):
530
524
  return response
531
525
 
532
526
  def _design_system_solution(
533
- self, problem_class: str, instances: int, pattern: str | None
527
+ self,
528
+ problem_class: str,
529
+ instances: int,
530
+ pattern: str | None,
534
531
  ) -> dict[str, Any]:
535
532
  """Design a system-level solution"""
536
533
  return {
@@ -555,8 +552,7 @@ class Level5Systems(EmpathyLevel):
555
552
 
556
553
  # Convenience function to get level class by number
557
554
  def get_level_class(level: int) -> type:
558
- """
559
- Get the class for a specific empathy level
555
+ """Get the class for a specific empathy level
560
556
 
561
557
  Args:
562
558
  level: Level number (1-5)
@@ -569,6 +565,7 @@ def get_level_class(level: int) -> type:
569
565
  >>> level4 = LevelClass()
570
566
  >>> print(level4.level_name)
571
567
  'Anticipatory Empathy'
568
+
572
569
  """
573
570
  levels = {
574
571
  1: Level1Reactive,
@@ -1,5 +1,4 @@
1
- """
2
- Leverage Point Analysis for System Interventions
1
+ """Leverage Point Analysis for System Interventions
3
2
 
4
3
  Identifies high-leverage intervention points based on Donella Meadows's
5
4
  seminal work "Leverage Points: Places to Intervene in a System".
@@ -17,8 +16,7 @@ from typing import Any
17
16
 
18
17
 
19
18
  class LeverageLevel(IntEnum):
20
- """
21
- Donella Meadows's 12 Leverage Points (ordered by effectiveness)
19
+ """Donella Meadows's 12 Leverage Points (ordered by effectiveness)
22
20
 
23
21
  Higher numbers = More effective leverage points
24
22
  Lower numbers = Less effective (but often easier to implement)
@@ -45,8 +43,7 @@ class LeverageLevel(IntEnum):
45
43
 
46
44
  @dataclass
47
45
  class LeveragePoint:
48
- """
49
- A specific leverage point identified in the system
46
+ """A specific leverage point identified in the system
50
47
 
51
48
  Represents a place where intervention can create significant change
52
49
  in system behavior.
@@ -64,8 +61,7 @@ class LeveragePoint:
64
61
 
65
62
 
66
63
  class LeveragePointAnalyzer:
67
- """
68
- Identifies high-leverage intervention points in AI-human systems
64
+ """Identifies high-leverage intervention points in AI-human systems
69
65
 
70
66
  Based on Donella Meadows's 12 leverage points. Helps identify where
71
67
  to intervene in a system for maximum effectiveness.
@@ -118,6 +114,7 @@ class LeveragePointAnalyzer:
118
114
  >>> points = analyzer.find_leverage_points(problem)
119
115
  >>> for point in points:
120
116
  ... print(f"{point.level.name}: {point.description}")
117
+
121
118
  """
122
119
 
123
120
  def __init__(self):
@@ -125,8 +122,7 @@ class LeveragePointAnalyzer:
125
122
  self.identified_points: list[LeveragePoint] = []
126
123
 
127
124
  def find_leverage_points(self, problem_class: dict[str, Any]) -> list[LeveragePoint]:
128
- """
129
- Find high-leverage intervention points for a problem class
125
+ """Find high-leverage intervention points for a problem class
130
126
 
131
127
  Analyzes the problem and identifies leverage points at different
132
128
  levels of the Meadows hierarchy.
@@ -148,6 +144,7 @@ class LeveragePointAnalyzer:
148
144
  ... "instances": 50
149
145
  ... }
150
146
  >>> points = analyzer.find_leverage_points(problem)
147
+
151
148
  """
152
149
  points: list[LeveragePoint] = []
153
150
  problem_type = problem_class.get("class", "unknown")
@@ -174,8 +171,7 @@ class LeveragePointAnalyzer:
174
171
  return points_ranked
175
172
 
176
173
  def rank_by_effectiveness(self, points: list[LeveragePoint]) -> list[LeveragePoint]:
177
- """
178
- Rank leverage points by Meadows's hierarchy
174
+ """Rank leverage points by Meadows's hierarchy
179
175
 
180
176
  Higher leverage levels (paradigms, goals) ranked before lower
181
177
  levels (parameters, buffers).
@@ -185,6 +181,7 @@ class LeveragePointAnalyzer:
185
181
 
186
182
  Returns:
187
183
  Sorted list with most effective points first
184
+
188
185
  """
189
186
  return sorted(points, key=lambda p: p.level, reverse=True)
190
187
 
@@ -206,7 +203,7 @@ class LeveragePointAnalyzer:
206
203
  "Documentation becomes natural part of workflow",
207
204
  "Quality improves as purpose clarifies",
208
205
  ],
209
- )
206
+ ),
210
207
  )
211
208
 
212
209
  # High leverage: Change goal
@@ -223,7 +220,7 @@ class LeveragePointAnalyzer:
223
220
  "Less redundant documentation",
224
221
  "More collaboration",
225
222
  ],
226
- )
223
+ ),
227
224
  )
228
225
 
229
226
  # Medium leverage: Self-organization (Level 5 systems thinking)
@@ -240,7 +237,7 @@ class LeveragePointAnalyzer:
240
237
  "Free developers for creative work",
241
238
  "Maintain quality through pattern detection",
242
239
  ],
243
- )
240
+ ),
244
241
  )
245
242
 
246
243
  # Low leverage: Parameters (quickest but least impactful)
@@ -253,7 +250,7 @@ class LeveragePointAnalyzer:
253
250
  implementation_difficulty=0.1,
254
251
  proposed_intervention="Cut required fields from 20 to 8",
255
252
  expected_outcomes=["Faster documentation", "May not address root cause"],
256
- )
253
+ ),
257
254
  )
258
255
 
259
256
  return points
@@ -276,7 +273,7 @@ class LeveragePointAnalyzer:
276
273
  "Set appropriate expectations",
277
274
  "Build genuine partnership",
278
275
  ],
279
- )
276
+ ),
280
277
  )
281
278
 
282
279
  # High leverage: Information flows
@@ -293,7 +290,7 @@ class LeveragePointAnalyzer:
293
290
  "Can verify AI logic",
294
291
  "Trust through transparency",
295
292
  ],
296
- )
293
+ ),
297
294
  )
298
295
 
299
296
  # Medium leverage: Reinforcing feedback loops
@@ -310,7 +307,7 @@ class LeveragePointAnalyzer:
310
307
  "Positive feedback loop activated",
311
308
  "Natural progression to harder tasks",
312
309
  ],
313
- )
310
+ ),
314
311
  )
315
312
 
316
313
  return points
@@ -329,7 +326,7 @@ class LeveragePointAnalyzer:
329
326
  implementation_difficulty=0.6,
330
327
  proposed_intervention="Optimize for long-term throughput not short-term speed",
331
328
  expected_outcomes=["Prevent burnout", "Sustainable productivity", "Higher quality"],
332
- )
329
+ ),
333
330
  )
334
331
 
335
332
  # Medium leverage: Delays
@@ -342,7 +339,7 @@ class LeveragePointAnalyzer:
342
339
  implementation_difficulty=0.4,
343
340
  proposed_intervention="Implement continuous testing with instant feedback",
344
341
  expected_outcomes=["Faster iteration", "Catch errors early", "Better learning"],
345
- )
342
+ ),
346
343
  )
347
344
 
348
345
  return points
@@ -360,7 +357,7 @@ class LeveragePointAnalyzer:
360
357
  impact_potential=0.8,
361
358
  implementation_difficulty=0.8,
362
359
  proposed_intervention="Examine and challenge fundamental beliefs about problem",
363
- )
360
+ ),
364
361
  )
365
362
 
366
363
  # Consider information flows
@@ -372,16 +369,17 @@ class LeveragePointAnalyzer:
372
369
  impact_potential=0.6,
373
370
  implementation_difficulty=0.4,
374
371
  proposed_intervention="Make relevant information more accessible to stakeholders",
375
- )
372
+ ),
376
373
  )
377
374
 
378
375
  return points
379
376
 
380
377
  def get_top_leverage_points(
381
- self, n: int = 3, min_level: LeverageLevel | None = None
378
+ self,
379
+ n: int = 3,
380
+ min_level: LeverageLevel | None = None,
382
381
  ) -> list[LeveragePoint]:
383
- """
384
- Get top N leverage points, optionally filtered by minimum level
382
+ """Get top N leverage points, optionally filtered by minimum level
385
383
 
386
384
  Args:
387
385
  n: Number of top points to return
@@ -389,6 +387,7 @@ class LeveragePointAnalyzer:
389
387
 
390
388
  Returns:
391
389
  Top N leverage points
390
+
392
391
  """
393
392
  points = self.identified_points
394
393
 
@@ -398,8 +397,7 @@ class LeveragePointAnalyzer:
398
397
  return sorted(points, key=lambda p: p.level, reverse=True)[:n]
399
398
 
400
399
  def analyze_intervention_feasibility(self, point: LeveragePoint) -> dict[str, Any]:
401
- """
402
- Analyze feasibility of intervening at a leverage point
400
+ """Analyze feasibility of intervening at a leverage point
403
401
 
404
402
  Considers:
405
403
  - Impact potential
@@ -412,6 +410,7 @@ class LeveragePointAnalyzer:
412
410
 
413
411
  Returns:
414
412
  Feasibility analysis with recommendation
413
+
415
414
  """
416
415
  # Calculate feasibility score (impact vs difficulty)
417
416
  feasibility_score = point.impact_potential / max(point.implementation_difficulty, 0.1)
@@ -1,5 +1,4 @@
1
- """
2
- Centralized Logging Configuration for Empathy Framework
1
+ """Centralized Logging Configuration for Empathy Framework
3
2
 
4
3
  Provides professional logging setup with:
5
4
  - Console and file logging
@@ -32,12 +31,12 @@ class StructuredFormatter(logging.Formatter):
32
31
  BOLD = "\033[1m"
33
32
 
34
33
  def __init__(self, use_color: bool = True, include_context: bool = False):
35
- """
36
- Initialize formatter.
34
+ """Initialize formatter.
37
35
 
38
36
  Args:
39
37
  use_color: Whether to use colored output
40
38
  include_context: Whether to include contextual information
39
+
41
40
  """
42
41
  self.use_color = use_color and sys.stderr.isatty()
43
42
  self.include_context = include_context
@@ -80,8 +79,7 @@ def create_logger(
80
79
  max_bytes: int = 10 * 1024 * 1024, # 10MB
81
80
  backup_count: int = 5,
82
81
  ) -> logging.Logger:
83
- """
84
- Create a configured logger instance.
82
+ """Create a configured logger instance.
85
83
 
86
84
  Args:
87
85
  name: Logger name (typically __name__)
@@ -100,6 +98,7 @@ def create_logger(
100
98
  >>> logger = create_logger(__name__, level=logging.DEBUG)
101
99
  >>> logger.info("Application started")
102
100
  >>> logger.debug("Detailed debug information")
101
+
103
102
  """
104
103
  logger = logging.getLogger(name)
105
104
 
@@ -157,8 +156,7 @@ class LoggingConfig:
157
156
  use_color: bool = True,
158
157
  include_context: bool = False,
159
158
  ) -> None:
160
- """
161
- Configure global logging settings.
159
+ """Configure global logging settings.
162
160
 
163
161
  Args:
164
162
  level: Default logging level
@@ -172,6 +170,7 @@ class LoggingConfig:
172
170
  ... log_dir="./logs",
173
171
  ... use_color=True
174
172
  ... )
173
+
175
174
  """
176
175
  cls._level = level
177
176
  cls._log_dir = log_dir
@@ -185,8 +184,7 @@ class LoggingConfig:
185
184
  name: str,
186
185
  level: int | None = None,
187
186
  ) -> logging.Logger:
188
- """
189
- Get or create a logger instance.
187
+ """Get or create a logger instance.
190
188
 
191
189
  Args:
192
190
  name: Logger name (typically __name__)
@@ -198,6 +196,7 @@ class LoggingConfig:
198
196
  Example:
199
197
  >>> logger = LoggingConfig.get_logger(__name__)
200
198
  >>> logger.info("Processing data")
199
+
201
200
  """
202
201
  if name not in cls._loggers:
203
202
  if not cls._configured:
@@ -224,8 +223,7 @@ class LoggingConfig:
224
223
 
225
224
 
226
225
  def get_logger(name: str) -> logging.Logger:
227
- """
228
- Convenience function to get a logger.
226
+ """Convenience function to get a logger.
229
227
 
230
228
  This is the primary function to use throughout the codebase.
231
229
 
@@ -240,6 +238,7 @@ def get_logger(name: str) -> logging.Logger:
240
238
  >>> logger = get_logger(__name__)
241
239
  >>> logger.info("Starting process")
242
240
  >>> logger.debug("Processing item", extra={"context": {"item_id": 123}})
241
+
243
242
  """
244
243
  return LoggingConfig.get_logger(name)
245
244