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
@@ -0,0 +1,278 @@
1
+ """Secure MemDocs Integration - Example Usage
2
+
3
+ Demonstrates Phase 2 enterprise privacy integration with:
4
+ - PII scrubbing
5
+ - Secrets detection
6
+ - Three-tier classification
7
+ - Encryption for SENSITIVE patterns
8
+ - Audit logging
9
+
10
+ Author: Empathy Framework Team
11
+ Version: 1.8.0-beta
12
+ """
13
+
14
+ import sys
15
+ from pathlib import Path
16
+
17
+ # Add parent directory to path for imports
18
+ sys.path.insert(0, str(Path(__file__).parent.parent.parent))
19
+
20
+ from empathy_llm_toolkit.security import SecureMemDocsIntegration, SecurityError
21
+
22
+
23
+ def example_basic_usage():
24
+ """Example 1: Basic pattern storage with auto-classification"""
25
+ print("\n=== Example 1: Basic Pattern Storage ===\n")
26
+
27
+ # Initialize secure integration
28
+ integration = SecureMemDocsIntegration(
29
+ storage_dir="./example_memdocs",
30
+ audit_log_dir="./example_logs",
31
+ )
32
+
33
+ # Store a simple pattern
34
+ content = """
35
+ Standard Python sorting algorithm implementation:
36
+
37
+ def quick_sort(arr):
38
+ if len(arr) <= 1:
39
+ return arr
40
+ pivot = arr[len(arr) // 2]
41
+ left = [x for x in arr if x < pivot]
42
+ middle = [x for x in arr if x == pivot]
43
+ right = [x for x in arr if x > pivot]
44
+ return quick_sort(left) + middle + quick_sort(right)
45
+ """
46
+
47
+ result = integration.store_pattern(
48
+ content=content,
49
+ pattern_type="algorithm",
50
+ user_id="developer@company.com",
51
+ )
52
+
53
+ print("Pattern stored successfully!")
54
+ print(f" Pattern ID: {result['pattern_id']}")
55
+ print(f" Classification: {result['classification']}")
56
+ print(f" PII removed: {result['sanitization_report']['pii_count']}")
57
+ print(f" Encrypted: {result['metadata']['encrypted']}")
58
+ print(f" Retention: {result['metadata']['retention_days']} days")
59
+
60
+ return result["pattern_id"]
61
+
62
+
63
+ def example_pii_scrubbing():
64
+ """Example 2: PII scrubbing in action"""
65
+ print("\n=== Example 2: PII Scrubbing ===\n")
66
+
67
+ integration = SecureMemDocsIntegration(
68
+ storage_dir="./example_memdocs",
69
+ audit_log_dir="./example_logs",
70
+ )
71
+
72
+ # Content with PII
73
+ content = """
74
+ Contact Information:
75
+ - Email: john.doe@example.com
76
+ - Phone: 555-123-4567
77
+ - SSN: 123-45-6789
78
+
79
+ For support, call our team at support@company.com
80
+ """
81
+
82
+ result = integration.store_pattern(
83
+ content=content,
84
+ pattern_type="contact_info",
85
+ user_id="hr@company.com",
86
+ )
87
+
88
+ print("Pattern stored with PII scrubbing:")
89
+ print(f" Pattern ID: {result['pattern_id']}")
90
+ print(f" PII removed: {result['sanitization_report']['pii_count']} items")
91
+ for pii_item in result["sanitization_report"]["pii_removed"]:
92
+ print(f" - {pii_item['type']}")
93
+
94
+ # Retrieve to see scrubbed content
95
+ pattern = integration.retrieve_pattern(
96
+ pattern_id=result["pattern_id"],
97
+ user_id="hr@company.com",
98
+ )
99
+
100
+ print("\nRetrieved content (PII scrubbed):")
101
+ print(pattern["content"][:200] + "...")
102
+
103
+ return result["pattern_id"]
104
+
105
+
106
+ def example_secrets_blocking():
107
+ """Example 3: Secrets detection blocks storage"""
108
+ print("\n=== Example 3: Secrets Detection ===\n")
109
+
110
+ integration = SecureMemDocsIntegration(
111
+ storage_dir="./example_memdocs",
112
+ audit_log_dir="./example_logs",
113
+ )
114
+
115
+ # Content with secrets (WILL BE BLOCKED)
116
+ content = """
117
+ # Configuration
118
+ ANTHROPIC_API_KEY = "sk-ant-api03-abc123xyz789..."
119
+ OPENAI_API_KEY = "sk-proj-abc123xyz789..."
120
+ DATABASE_URL = "postgres://user:password@localhost:5432/db"
121
+ """
122
+
123
+ try:
124
+ integration.store_pattern(
125
+ content=content,
126
+ pattern_type="config",
127
+ user_id="developer@company.com",
128
+ )
129
+ print("ERROR: Secrets should have been blocked!")
130
+ except SecurityError as e:
131
+ print("Storage blocked (as expected):")
132
+ print(f" Reason: {e!s}")
133
+ print(" Action: Secrets detected and storage prevented")
134
+ print(" Audit: Security violation logged")
135
+
136
+
137
+ def example_healthcare_sensitive():
138
+ """Example 4: Healthcare pattern with SENSITIVE classification"""
139
+ print("\n=== Example 4: Healthcare Pattern (SENSITIVE) ===\n")
140
+
141
+ integration = SecureMemDocsIntegration(
142
+ storage_dir="./example_memdocs",
143
+ audit_log_dir="./example_logs",
144
+ )
145
+
146
+ # Healthcare content (auto-classified as SENSITIVE)
147
+ content = """
148
+ # Patient Vital Signs Monitoring Protocol
149
+
150
+ Normal ranges:
151
+ - Heart rate: 60-100 bpm
152
+ - Blood pressure: 90/60 to 120/80 mmHg
153
+ - Respiratory rate: 12-20 breaths/min
154
+ - Temperature: 97-99°F (36.1-37.2°C)
155
+ - Oxygen saturation: 95-100%
156
+
157
+ Alert thresholds:
158
+ - Heart rate < 50 or > 120 bpm
159
+ - Systolic BP < 90 or > 180 mmHg
160
+ - Oxygen saturation < 92%
161
+ """
162
+
163
+ result = integration.store_pattern(
164
+ content=content,
165
+ pattern_type="clinical_protocol",
166
+ user_id="nurse@hospital.com",
167
+ )
168
+
169
+ print("Healthcare pattern stored:")
170
+ print(f" Pattern ID: {result['pattern_id']}")
171
+ print(f" Classification: {result['classification']} (auto-detected)")
172
+ print(f" Encrypted: {result['metadata']['encrypted']} (HIPAA compliance)")
173
+ print(f" Retention: {result['metadata']['retention_days']} days (HIPAA minimum)")
174
+ print(" Access: Creator only (explicit permission required)")
175
+
176
+ # Retrieve (only creator can access)
177
+ pattern = integration.retrieve_pattern(
178
+ pattern_id=result["pattern_id"],
179
+ user_id="nurse@hospital.com",
180
+ )
181
+
182
+ print("\nPattern retrieved and decrypted successfully")
183
+ print(f" Content length: {len(pattern['content'])} chars")
184
+
185
+ # Try to retrieve as different user (will be blocked)
186
+ try:
187
+ pattern = integration.retrieve_pattern(
188
+ pattern_id=result["pattern_id"],
189
+ user_id="other_user@hospital.com",
190
+ )
191
+ print("ERROR: Access should have been denied!")
192
+ except Exception:
193
+ print("\nAccess denied for different user (as expected):")
194
+ print(" Reason: SENSITIVE patterns require explicit permission")
195
+
196
+ return result["pattern_id"]
197
+
198
+
199
+ def example_list_patterns():
200
+ """Example 5: List accessible patterns"""
201
+ print("\n=== Example 5: List Patterns ===\n")
202
+
203
+ integration = SecureMemDocsIntegration(
204
+ storage_dir="./example_memdocs",
205
+ audit_log_dir="./example_logs",
206
+ )
207
+
208
+ # List patterns for user
209
+ patterns = integration.list_patterns(user_id="developer@company.com")
210
+
211
+ print(f"Accessible patterns: {len(patterns)}")
212
+ for pattern in patterns:
213
+ print(f"\n Pattern: {pattern['pattern_id']}")
214
+ print(f" Type: {pattern['pattern_type']}")
215
+ print(f" Classification: {pattern['classification']}")
216
+ print(f" Created: {pattern['created_at']}")
217
+ print(f" Encrypted: {pattern['encrypted']}")
218
+
219
+
220
+ def example_statistics():
221
+ """Example 6: Get storage statistics"""
222
+ print("\n=== Example 6: Storage Statistics ===\n")
223
+
224
+ integration = SecureMemDocsIntegration(
225
+ storage_dir="./example_memdocs",
226
+ audit_log_dir="./example_logs",
227
+ )
228
+
229
+ stats = integration.get_statistics()
230
+
231
+ print("MemDocs Statistics:")
232
+ print(f" Total patterns: {stats['total_patterns']}")
233
+ print(" By classification:")
234
+ for classification, count in stats["by_classification"].items():
235
+ print(f" - {classification}: {count}")
236
+ print(f" Encrypted patterns: {stats['encrypted_count']}")
237
+ print(f" With PII scrubbed: {stats['with_pii_scrubbed']}")
238
+
239
+
240
+ def main():
241
+ """Run all examples"""
242
+ print("=" * 70)
243
+ print("Secure MemDocs Integration - Example Usage")
244
+ print("Phase 2: Enterprise Privacy Integration")
245
+ print("=" * 70)
246
+
247
+ try:
248
+ # Example 1: Basic usage
249
+ example_basic_usage()
250
+
251
+ # Example 2: PII scrubbing
252
+ example_pii_scrubbing()
253
+
254
+ # Example 3: Secrets blocking
255
+ example_secrets_blocking()
256
+
257
+ # Example 4: Healthcare (SENSITIVE)
258
+ example_healthcare_sensitive()
259
+
260
+ # Example 5: List patterns
261
+ example_list_patterns()
262
+
263
+ # Example 6: Statistics
264
+ example_statistics()
265
+
266
+ print("\n" + "=" * 70)
267
+ print("All examples completed successfully!")
268
+ print("=" * 70)
269
+
270
+ except Exception as e:
271
+ print(f"\n\nError running examples: {e}")
272
+ import traceback
273
+
274
+ traceback.print_exc()
275
+
276
+
277
+ if __name__ == "__main__":
278
+ main()
@@ -1,5 +1,4 @@
1
- """
2
- Session Status Assistant
1
+ """Session Status Assistant
3
2
 
4
3
  Proactive briefing system that greets developers when they return to an
5
4
  Empathy-enhanced project, providing a prioritized status report with
@@ -93,8 +92,7 @@ class SessionStatus:
93
92
 
94
93
 
95
94
  class SessionStatusCollector:
96
- """
97
- Aggregates project status from all data sources.
95
+ """Aggregates project status from all data sources.
98
96
 
99
97
  Scans patterns directories, roadmap docs, and git history
100
98
  to build a prioritized status report for developers.
@@ -119,8 +117,7 @@ class SessionStatusCollector:
119
117
  self._state: dict[str, Any] | None = None
120
118
 
121
119
  def should_show(self) -> bool:
122
- """
123
- Check if status should be shown based on inactivity.
120
+ """Check if status should be shown based on inactivity.
124
121
 
125
122
  Returns True if:
126
123
  - First interaction after inactivity_minutes of no activity
@@ -164,11 +161,11 @@ class SessionStatusCollector:
164
161
  logger.debug("Recorded interaction at %s", state["last_interaction"])
165
162
 
166
163
  def collect(self) -> SessionStatus:
167
- """
168
- Collect and prioritize status items from all data sources.
164
+ """Collect and prioritize status items from all data sources.
169
165
 
170
166
  Returns:
171
167
  SessionStatus with prioritized items and wins
168
+
172
169
  """
173
170
  status = SessionStatus()
174
171
 
@@ -224,7 +221,7 @@ class SessionStatusCollector:
224
221
  action_prompt=f"Review security finding: {finding}. "
225
222
  f"Provide analysis and recommend: ACCEPTED, DEFERRED, or FALSE_POSITIVE.",
226
223
  details={"pending_count": pending_count, "items": pending_items[:3]},
227
- )
224
+ ),
228
225
  )
229
226
 
230
227
  def _collect_bug_items(self, status: SessionStatus) -> None:
@@ -267,7 +264,7 @@ class SessionStatusCollector:
267
264
  f"{first_bug.get('error_message', 'No description')}. "
268
265
  f"File: {first_bug.get('file_path', 'unknown')}",
269
266
  details={"count": len(high_severity), "bugs": high_severity[:3]},
270
- )
267
+ ),
271
268
  )
272
269
 
273
270
  # Add investigating bugs (P2)
@@ -285,7 +282,7 @@ class SessionStatusCollector:
285
282
  f"Use: empathy patterns resolve {first_bug.get('bug_id', '')} "
286
283
  f"--root-cause '<cause>' --fix '<fix>'",
287
284
  details={"count": len(investigating), "bugs": investigating[:5]},
288
- )
285
+ ),
289
286
  )
290
287
 
291
288
  def _collect_tech_debt_items(self, status: SessionStatus) -> None:
@@ -336,7 +333,7 @@ class SessionStatusCollector:
336
333
  "change": change,
337
334
  "hotspots": current.get("hotspots", [])[:3],
338
335
  },
339
- )
336
+ ),
340
337
  )
341
338
  elif change < 0:
342
339
  # Tech debt decreasing - this is a win
@@ -364,7 +361,7 @@ class SessionStatusCollector:
364
361
  {
365
362
  "task": task.strip(),
366
363
  "file": plan_file.name,
367
- }
364
+ },
368
365
  )
369
366
  except OSError as e:
370
367
  logger.warning("Failed to read plan file %s: %s", plan_file, e)
@@ -381,7 +378,7 @@ class SessionStatusCollector:
381
378
  action_prompt=f"Continue roadmap item from {first_task['file']}: "
382
379
  f"{first_task['task']}",
383
380
  details={"count": len(unchecked_tasks), "tasks": unchecked_tasks[:5]},
384
- )
381
+ ),
385
382
  )
386
383
 
387
384
  def _collect_git_items(self, status: SessionStatus) -> None:
@@ -389,6 +386,7 @@ class SessionStatusCollector:
389
386
  try:
390
387
  result = subprocess.run(
391
388
  ["git", "log", "-10", "--format=%h|%s", "--since=7.days"],
389
+ check=False,
392
390
  capture_output=True,
393
391
  text=True,
394
392
  timeout=5,
@@ -413,7 +411,7 @@ class SessionStatusCollector:
413
411
  {
414
412
  "hash": commit_hash,
415
413
  "message": message,
416
- }
414
+ },
417
415
  )
418
416
 
419
417
  if wip_commits:
@@ -429,7 +427,7 @@ class SessionStatusCollector:
429
427
  f"{first_commit['message']}. "
430
428
  "This commit may need follow-up work.",
431
429
  details={"count": len(wip_commits), "commits": wip_commits[:5]},
432
- )
430
+ ),
433
431
  )
434
432
 
435
433
  except Exception as e:
@@ -540,8 +538,7 @@ class SessionStatusCollector:
540
538
  status: SessionStatus,
541
539
  max_items: int | None = None,
542
540
  ) -> str:
543
- """
544
- Format status for terminal output.
541
+ """Format status for terminal output.
545
542
 
546
543
  Args:
547
544
  status: The SessionStatus to format
@@ -549,6 +546,7 @@ class SessionStatusCollector:
549
546
 
550
547
  Returns:
551
548
  Formatted markdown string
549
+
552
550
  """
553
551
  max_items = max_items or self.config["max_display_items"]
554
552
  sorted_items = status.get_sorted_items()
@@ -616,8 +614,7 @@ class SessionStatusCollector:
616
614
  return json.dumps(data, indent=2, default=str)
617
615
 
618
616
  def get_action_prompt(self, status: SessionStatus, selection: int) -> str | None:
619
- """
620
- Get the action prompt for a selected item.
617
+ """Get the action prompt for a selected item.
621
618
 
622
619
  Args:
623
620
  status: The SessionStatus
@@ -625,6 +622,7 @@ class SessionStatusCollector:
625
622
 
626
623
  Returns:
627
624
  Action prompt string, or None if invalid selection
625
+
628
626
  """
629
627
  sorted_items = status.get_sorted_items()
630
628
 
@@ -1,5 +1,4 @@
1
- """
2
- Collaboration State Management
1
+ """Collaboration State Management
3
2
 
4
3
  Tracks AI-human collaboration over time to enable Level 3+ empathy.
5
4
 
@@ -24,8 +23,7 @@ class PatternType(Enum):
24
23
 
25
24
  @dataclass
26
25
  class UserPattern:
27
- """
28
- A detected pattern in user behavior.
26
+ """A detected pattern in user behavior.
29
27
 
30
28
  Enables Level 3 (Proactive) empathy.
31
29
  """
@@ -39,8 +37,7 @@ class UserPattern:
39
37
  context: dict[str, Any] = field(default_factory=dict)
40
38
 
41
39
  def should_act(self, trust_level: float) -> bool:
42
- """
43
- Determine if we should act proactively on this pattern.
40
+ """Determine if we should act proactively on this pattern.
44
41
 
45
42
  Requires both high confidence and sufficient trust.
46
43
  """
@@ -60,8 +57,7 @@ class Interaction:
60
57
 
61
58
  @dataclass
62
59
  class CollaborationState:
63
- """
64
- Tracks AI-human collaboration state over time.
60
+ """Tracks AI-human collaboration state over time.
65
61
 
66
62
  This is the foundation for Level 2+ empathy:
67
63
  - Level 2: Uses conversation history for context
@@ -104,7 +100,11 @@ class CollaborationState:
104
100
  return self.successful_actions / total
105
101
 
106
102
  def add_interaction(
107
- self, role: str, content: str, empathy_level: int, metadata: dict | None = None
103
+ self,
104
+ role: str,
105
+ content: str,
106
+ empathy_level: int,
107
+ metadata: dict | None = None,
108
108
  ):
109
109
  """Add interaction to history"""
110
110
  self.interactions.append(
@@ -114,7 +114,7 @@ class CollaborationState:
114
114
  content=content,
115
115
  empathy_level=empathy_level,
116
116
  metadata=metadata or {},
117
- )
117
+ ),
118
118
  )
119
119
 
120
120
  # Track level history
@@ -122,12 +122,12 @@ class CollaborationState:
122
122
  self.level_history.append(empathy_level)
123
123
 
124
124
  def update_trust(self, outcome: str, magnitude: float = 1.0):
125
- """
126
- Update trust level based on action outcome.
125
+ """Update trust level based on action outcome.
127
126
 
128
127
  Args:
129
128
  outcome: "success" or "failure"
130
129
  magnitude: How much to adjust (0.0 to 1.0)
130
+
131
131
  """
132
132
  if outcome == "success":
133
133
  adjustment = 0.05 * magnitude
@@ -159,8 +159,7 @@ class CollaborationState:
159
159
  self.detected_patterns.append(pattern)
160
160
 
161
161
  def find_matching_pattern(self, trigger_text: str) -> UserPattern | None:
162
- """
163
- Find pattern that matches current input.
162
+ """Find pattern that matches current input.
164
163
 
165
164
  Returns pattern with highest confidence if found.
166
165
  """
@@ -177,10 +176,11 @@ class CollaborationState:
177
176
  return None
178
177
 
179
178
  def get_conversation_history(
180
- self, max_turns: int = 10, include_metadata: bool = False
179
+ self,
180
+ max_turns: int = 10,
181
+ include_metadata: bool = False,
181
182
  ) -> list[dict[str, Any]]:
182
- """
183
- Get recent conversation history in LLM format.
183
+ """Get recent conversation history in LLM format.
184
184
 
185
185
  Args:
186
186
  max_turns: Maximum number of turns to include
@@ -188,17 +188,16 @@ class CollaborationState:
188
188
 
189
189
  Returns:
190
190
  List of {"role": "user/assistant", "content": "..."}
191
+
191
192
  """
192
193
  recent = self.interactions[-max_turns:] if max_turns else self.interactions
193
194
 
194
195
  if include_metadata:
195
196
  return [{"role": i.role, "content": i.content, "metadata": i.metadata} for i in recent]
196
- else:
197
- return [{"role": i.role, "content": i.content} for i in recent]
197
+ return [{"role": i.role, "content": i.content} for i in recent]
198
198
 
199
199
  def should_progress_to_level(self, level: int) -> bool:
200
- """
201
- Determine if system should progress to higher empathy level.
200
+ """Determine if system should progress to higher empathy level.
202
201
 
203
202
  Progression criteria:
204
203
  - Level 2: Immediate (guided questions always helpful)
@@ -0,0 +1,38 @@
1
+ """Empathy LLM Wizards - Canonical Examples
2
+
3
+ Core wizard base class and canonical domain examples demonstrating
4
+ the Empathy Framework's capabilities across different use cases.
5
+
6
+ Included Wizards (3 canonical examples):
7
+ 1. HealthcareWizard - HIPAA-compliant medical assistant
8
+ 2. CustomerSupportWizard - Customer service and help desk
9
+ 3. TechnologyWizard - IT and software development operations
10
+
11
+ Additional Wizards Available:
12
+ For specialized domain wizards, install separate packages:
13
+ - Healthcare (23 wizards): pip install empathy-healthcare-wizards
14
+ - Tech & AI (16 wizards): pip install empathy-software-wizards
15
+ - Business (12+ wizards): pip install empathy-business-wizards
16
+
17
+ Or try the live dashboards:
18
+ - Healthcare: https://healthcare.smartaimemory.com/static/dashboard.html
19
+ - Tech & AI: https://wizards.smartaimemory.com/
20
+
21
+ Copyright 2025 Smart AI Memory, LLC
22
+ Licensed under Fair Source 0.9
23
+ """
24
+
25
+ from .base_wizard import BaseWizard, WizardConfig
26
+ from .customer_support_wizard import CustomerSupportWizard
27
+ from .healthcare_wizard import HealthcareWizard
28
+ from .technology_wizard import TechnologyWizard
29
+
30
+ __all__ = [
31
+ # Base classes
32
+ "BaseWizard",
33
+ # Canonical domain examples
34
+ "CustomerSupportWizard",
35
+ "HealthcareWizard",
36
+ "TechnologyWizard",
37
+ "WizardConfig",
38
+ ]