empathy-framework 4.6.6__py3-none-any.whl → 4.7.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. empathy_framework-4.7.1.dist-info/METADATA +690 -0
  2. empathy_framework-4.7.1.dist-info/RECORD +379 -0
  3. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/top_level.txt +1 -2
  4. empathy_healthcare_plugin/monitors/monitoring/__init__.py +9 -9
  5. empathy_llm_toolkit/agent_factory/__init__.py +6 -6
  6. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +7 -10
  7. empathy_llm_toolkit/agents_md/__init__.py +22 -0
  8. empathy_llm_toolkit/agents_md/loader.py +218 -0
  9. empathy_llm_toolkit/agents_md/parser.py +271 -0
  10. empathy_llm_toolkit/agents_md/registry.py +307 -0
  11. empathy_llm_toolkit/commands/__init__.py +51 -0
  12. empathy_llm_toolkit/commands/context.py +375 -0
  13. empathy_llm_toolkit/commands/loader.py +301 -0
  14. empathy_llm_toolkit/commands/models.py +231 -0
  15. empathy_llm_toolkit/commands/parser.py +371 -0
  16. empathy_llm_toolkit/commands/registry.py +429 -0
  17. empathy_llm_toolkit/config/__init__.py +8 -8
  18. empathy_llm_toolkit/config/unified.py +3 -7
  19. empathy_llm_toolkit/context/__init__.py +22 -0
  20. empathy_llm_toolkit/context/compaction.py +455 -0
  21. empathy_llm_toolkit/context/manager.py +434 -0
  22. empathy_llm_toolkit/hooks/__init__.py +24 -0
  23. empathy_llm_toolkit/hooks/config.py +306 -0
  24. empathy_llm_toolkit/hooks/executor.py +289 -0
  25. empathy_llm_toolkit/hooks/registry.py +302 -0
  26. empathy_llm_toolkit/hooks/scripts/__init__.py +39 -0
  27. empathy_llm_toolkit/hooks/scripts/evaluate_session.py +201 -0
  28. empathy_llm_toolkit/hooks/scripts/first_time_init.py +285 -0
  29. empathy_llm_toolkit/hooks/scripts/pre_compact.py +207 -0
  30. empathy_llm_toolkit/hooks/scripts/session_end.py +183 -0
  31. empathy_llm_toolkit/hooks/scripts/session_start.py +163 -0
  32. empathy_llm_toolkit/hooks/scripts/suggest_compact.py +225 -0
  33. empathy_llm_toolkit/learning/__init__.py +30 -0
  34. empathy_llm_toolkit/learning/evaluator.py +438 -0
  35. empathy_llm_toolkit/learning/extractor.py +514 -0
  36. empathy_llm_toolkit/learning/storage.py +560 -0
  37. empathy_llm_toolkit/providers.py +4 -11
  38. empathy_llm_toolkit/security/__init__.py +17 -17
  39. empathy_llm_toolkit/utils/tokens.py +2 -5
  40. empathy_os/__init__.py +202 -70
  41. empathy_os/cache_monitor.py +5 -3
  42. empathy_os/cli/__init__.py +11 -55
  43. empathy_os/cli/__main__.py +29 -15
  44. empathy_os/cli/commands/inspection.py +21 -12
  45. empathy_os/cli/commands/memory.py +4 -12
  46. empathy_os/cli/commands/profiling.py +198 -0
  47. empathy_os/cli/commands/utilities.py +27 -7
  48. empathy_os/cli.py +28 -57
  49. empathy_os/cli_unified.py +525 -1164
  50. empathy_os/cost_tracker.py +9 -3
  51. empathy_os/dashboard/server.py +200 -2
  52. empathy_os/hot_reload/__init__.py +7 -7
  53. empathy_os/hot_reload/config.py +6 -7
  54. empathy_os/hot_reload/integration.py +35 -35
  55. empathy_os/hot_reload/reloader.py +57 -57
  56. empathy_os/hot_reload/watcher.py +28 -28
  57. empathy_os/hot_reload/websocket.py +2 -2
  58. empathy_os/memory/__init__.py +11 -4
  59. empathy_os/memory/claude_memory.py +1 -1
  60. empathy_os/memory/cross_session.py +8 -12
  61. empathy_os/memory/edges.py +6 -6
  62. empathy_os/memory/file_session.py +770 -0
  63. empathy_os/memory/graph.py +30 -30
  64. empathy_os/memory/nodes.py +6 -6
  65. empathy_os/memory/short_term.py +15 -9
  66. empathy_os/memory/unified.py +606 -140
  67. empathy_os/meta_workflows/agent_creator.py +3 -9
  68. empathy_os/meta_workflows/cli_meta_workflows.py +113 -53
  69. empathy_os/meta_workflows/form_engine.py +6 -18
  70. empathy_os/meta_workflows/intent_detector.py +64 -24
  71. empathy_os/meta_workflows/models.py +3 -1
  72. empathy_os/meta_workflows/pattern_learner.py +13 -31
  73. empathy_os/meta_workflows/plan_generator.py +55 -47
  74. empathy_os/meta_workflows/session_context.py +2 -3
  75. empathy_os/meta_workflows/workflow.py +20 -51
  76. empathy_os/models/cli.py +2 -2
  77. empathy_os/models/tasks.py +1 -2
  78. empathy_os/models/telemetry.py +4 -1
  79. empathy_os/models/token_estimator.py +3 -1
  80. empathy_os/monitoring/alerts.py +938 -9
  81. empathy_os/monitoring/alerts_cli.py +346 -183
  82. empathy_os/orchestration/execution_strategies.py +12 -29
  83. empathy_os/orchestration/pattern_learner.py +20 -26
  84. empathy_os/orchestration/real_tools.py +6 -15
  85. empathy_os/platform_utils.py +2 -1
  86. empathy_os/plugins/__init__.py +2 -2
  87. empathy_os/plugins/base.py +64 -64
  88. empathy_os/plugins/registry.py +32 -32
  89. empathy_os/project_index/index.py +49 -15
  90. empathy_os/project_index/models.py +1 -2
  91. empathy_os/project_index/reports.py +1 -1
  92. empathy_os/project_index/scanner.py +1 -0
  93. empathy_os/redis_memory.py +10 -7
  94. empathy_os/resilience/__init__.py +1 -1
  95. empathy_os/resilience/health.py +10 -10
  96. empathy_os/routing/__init__.py +7 -7
  97. empathy_os/routing/chain_executor.py +37 -37
  98. empathy_os/routing/classifier.py +36 -36
  99. empathy_os/routing/smart_router.py +40 -40
  100. empathy_os/routing/{wizard_registry.py → workflow_registry.py} +47 -47
  101. empathy_os/scaffolding/__init__.py +8 -8
  102. empathy_os/scaffolding/__main__.py +1 -1
  103. empathy_os/scaffolding/cli.py +28 -28
  104. empathy_os/socratic/__init__.py +3 -19
  105. empathy_os/socratic/ab_testing.py +25 -36
  106. empathy_os/socratic/blueprint.py +38 -38
  107. empathy_os/socratic/cli.py +34 -20
  108. empathy_os/socratic/collaboration.py +30 -28
  109. empathy_os/socratic/domain_templates.py +9 -1
  110. empathy_os/socratic/embeddings.py +17 -13
  111. empathy_os/socratic/engine.py +135 -70
  112. empathy_os/socratic/explainer.py +70 -60
  113. empathy_os/socratic/feedback.py +24 -19
  114. empathy_os/socratic/forms.py +15 -10
  115. empathy_os/socratic/generator.py +51 -35
  116. empathy_os/socratic/llm_analyzer.py +25 -23
  117. empathy_os/socratic/mcp_server.py +99 -159
  118. empathy_os/socratic/session.py +19 -13
  119. empathy_os/socratic/storage.py +98 -67
  120. empathy_os/socratic/success.py +38 -27
  121. empathy_os/socratic/visual_editor.py +51 -39
  122. empathy_os/socratic/web_ui.py +99 -66
  123. empathy_os/telemetry/cli.py +3 -1
  124. empathy_os/telemetry/usage_tracker.py +1 -3
  125. empathy_os/test_generator/__init__.py +3 -3
  126. empathy_os/test_generator/cli.py +28 -28
  127. empathy_os/test_generator/generator.py +64 -66
  128. empathy_os/test_generator/risk_analyzer.py +11 -11
  129. empathy_os/vscode_bridge 2.py +173 -0
  130. empathy_os/vscode_bridge.py +173 -0
  131. empathy_os/workflows/__init__.py +212 -120
  132. empathy_os/workflows/batch_processing.py +8 -24
  133. empathy_os/workflows/bug_predict.py +1 -1
  134. empathy_os/workflows/code_review.py +20 -5
  135. empathy_os/workflows/code_review_pipeline.py +13 -8
  136. empathy_os/workflows/keyboard_shortcuts/workflow.py +6 -2
  137. empathy_os/workflows/manage_documentation.py +1 -0
  138. empathy_os/workflows/orchestrated_health_check.py +6 -11
  139. empathy_os/workflows/orchestrated_release_prep.py +3 -3
  140. empathy_os/workflows/pr_review.py +18 -10
  141. empathy_os/workflows/progressive/README 2.md +454 -0
  142. empathy_os/workflows/progressive/__init__ 2.py +92 -0
  143. empathy_os/workflows/progressive/__init__.py +2 -12
  144. empathy_os/workflows/progressive/cli 2.py +242 -0
  145. empathy_os/workflows/progressive/cli.py +14 -37
  146. empathy_os/workflows/progressive/core 2.py +488 -0
  147. empathy_os/workflows/progressive/core.py +12 -12
  148. empathy_os/workflows/progressive/orchestrator 2.py +701 -0
  149. empathy_os/workflows/progressive/orchestrator.py +166 -144
  150. empathy_os/workflows/progressive/reports 2.py +528 -0
  151. empathy_os/workflows/progressive/reports.py +22 -31
  152. empathy_os/workflows/progressive/telemetry 2.py +280 -0
  153. empathy_os/workflows/progressive/telemetry.py +8 -14
  154. empathy_os/workflows/progressive/test_gen 2.py +514 -0
  155. empathy_os/workflows/progressive/test_gen.py +29 -48
  156. empathy_os/workflows/progressive/workflow 2.py +628 -0
  157. empathy_os/workflows/progressive/workflow.py +31 -70
  158. empathy_os/workflows/release_prep.py +21 -6
  159. empathy_os/workflows/release_prep_crew.py +1 -0
  160. empathy_os/workflows/secure_release.py +13 -6
  161. empathy_os/workflows/security_audit.py +8 -3
  162. empathy_os/workflows/test_coverage_boost_crew.py +3 -2
  163. empathy_os/workflows/test_maintenance_crew.py +1 -0
  164. empathy_os/workflows/test_runner.py +16 -12
  165. empathy_software_plugin/SOFTWARE_PLUGIN_README.md +25 -703
  166. empathy_software_plugin/cli.py +0 -122
  167. patterns/README.md +119 -0
  168. patterns/__init__.py +95 -0
  169. patterns/behavior.py +298 -0
  170. patterns/code_review_memory.json +441 -0
  171. patterns/core.py +97 -0
  172. patterns/debugging.json +3763 -0
  173. patterns/empathy.py +268 -0
  174. patterns/health_check_memory.json +505 -0
  175. patterns/input.py +161 -0
  176. patterns/memory_graph.json +8 -0
  177. patterns/refactoring_memory.json +1113 -0
  178. patterns/registry.py +663 -0
  179. patterns/security_memory.json +8 -0
  180. patterns/structural.py +415 -0
  181. patterns/validation.py +194 -0
  182. coach_wizards/__init__.py +0 -45
  183. coach_wizards/accessibility_wizard.py +0 -91
  184. coach_wizards/api_wizard.py +0 -91
  185. coach_wizards/base_wizard.py +0 -209
  186. coach_wizards/cicd_wizard.py +0 -91
  187. coach_wizards/code_reviewer_README.md +0 -60
  188. coach_wizards/code_reviewer_wizard.py +0 -180
  189. coach_wizards/compliance_wizard.py +0 -91
  190. coach_wizards/database_wizard.py +0 -91
  191. coach_wizards/debugging_wizard.py +0 -91
  192. coach_wizards/documentation_wizard.py +0 -91
  193. coach_wizards/generate_wizards.py +0 -347
  194. coach_wizards/localization_wizard.py +0 -173
  195. coach_wizards/migration_wizard.py +0 -91
  196. coach_wizards/monitoring_wizard.py +0 -91
  197. coach_wizards/observability_wizard.py +0 -91
  198. coach_wizards/performance_wizard.py +0 -91
  199. coach_wizards/prompt_engineering_wizard.py +0 -661
  200. coach_wizards/refactoring_wizard.py +0 -91
  201. coach_wizards/scaling_wizard.py +0 -90
  202. coach_wizards/security_wizard.py +0 -92
  203. coach_wizards/testing_wizard.py +0 -91
  204. empathy_framework-4.6.6.dist-info/METADATA +0 -1597
  205. empathy_framework-4.6.6.dist-info/RECORD +0 -410
  206. empathy_llm_toolkit/wizards/__init__.py +0 -43
  207. empathy_llm_toolkit/wizards/base_wizard.py +0 -364
  208. empathy_llm_toolkit/wizards/customer_support_wizard.py +0 -190
  209. empathy_llm_toolkit/wizards/healthcare_wizard.py +0 -378
  210. empathy_llm_toolkit/wizards/patient_assessment_README.md +0 -64
  211. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +0 -193
  212. empathy_llm_toolkit/wizards/technology_wizard.py +0 -209
  213. empathy_os/wizard_factory_cli.py +0 -170
  214. empathy_software_plugin/wizards/__init__.py +0 -42
  215. empathy_software_plugin/wizards/advanced_debugging_wizard.py +0 -395
  216. empathy_software_plugin/wizards/agent_orchestration_wizard.py +0 -511
  217. empathy_software_plugin/wizards/ai_collaboration_wizard.py +0 -503
  218. empathy_software_plugin/wizards/ai_context_wizard.py +0 -441
  219. empathy_software_plugin/wizards/ai_documentation_wizard.py +0 -503
  220. empathy_software_plugin/wizards/base_wizard.py +0 -288
  221. empathy_software_plugin/wizards/book_chapter_wizard.py +0 -519
  222. empathy_software_plugin/wizards/code_review_wizard.py +0 -604
  223. empathy_software_plugin/wizards/debugging/__init__.py +0 -50
  224. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +0 -414
  225. empathy_software_plugin/wizards/debugging/config_loaders.py +0 -446
  226. empathy_software_plugin/wizards/debugging/fix_applier.py +0 -469
  227. empathy_software_plugin/wizards/debugging/language_patterns.py +0 -385
  228. empathy_software_plugin/wizards/debugging/linter_parsers.py +0 -470
  229. empathy_software_plugin/wizards/debugging/verification.py +0 -369
  230. empathy_software_plugin/wizards/enhanced_testing_wizard.py +0 -537
  231. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +0 -816
  232. empathy_software_plugin/wizards/multi_model_wizard.py +0 -501
  233. empathy_software_plugin/wizards/pattern_extraction_wizard.py +0 -422
  234. empathy_software_plugin/wizards/pattern_retriever_wizard.py +0 -400
  235. empathy_software_plugin/wizards/performance/__init__.py +0 -9
  236. empathy_software_plugin/wizards/performance/bottleneck_detector.py +0 -221
  237. empathy_software_plugin/wizards/performance/profiler_parsers.py +0 -278
  238. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +0 -429
  239. empathy_software_plugin/wizards/performance_profiling_wizard.py +0 -305
  240. empathy_software_plugin/wizards/prompt_engineering_wizard.py +0 -425
  241. empathy_software_plugin/wizards/rag_pattern_wizard.py +0 -461
  242. empathy_software_plugin/wizards/security/__init__.py +0 -32
  243. empathy_software_plugin/wizards/security/exploit_analyzer.py +0 -290
  244. empathy_software_plugin/wizards/security/owasp_patterns.py +0 -241
  245. empathy_software_plugin/wizards/security/vulnerability_scanner.py +0 -604
  246. empathy_software_plugin/wizards/security_analysis_wizard.py +0 -322
  247. empathy_software_plugin/wizards/security_learning_wizard.py +0 -740
  248. empathy_software_plugin/wizards/tech_debt_wizard.py +0 -726
  249. empathy_software_plugin/wizards/testing/__init__.py +0 -27
  250. empathy_software_plugin/wizards/testing/coverage_analyzer.py +0 -459
  251. empathy_software_plugin/wizards/testing/quality_analyzer.py +0 -525
  252. empathy_software_plugin/wizards/testing/test_suggester.py +0 -533
  253. empathy_software_plugin/wizards/testing_wizard.py +0 -274
  254. wizards/__init__.py +0 -82
  255. wizards/admission_assessment_wizard.py +0 -644
  256. wizards/care_plan.py +0 -321
  257. wizards/clinical_assessment.py +0 -769
  258. wizards/discharge_planning.py +0 -77
  259. wizards/discharge_summary_wizard.py +0 -468
  260. wizards/dosage_calculation.py +0 -497
  261. wizards/incident_report_wizard.py +0 -454
  262. wizards/medication_reconciliation.py +0 -85
  263. wizards/nursing_assessment.py +0 -171
  264. wizards/patient_education.py +0 -654
  265. wizards/quality_improvement.py +0 -705
  266. wizards/sbar_report.py +0 -324
  267. wizards/sbar_wizard.py +0 -608
  268. wizards/shift_handoff_wizard.py +0 -535
  269. wizards/soap_note_wizard.py +0 -679
  270. wizards/treatment_plan.py +0 -15
  271. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/WHEEL +0 -0
  272. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/entry_points.txt +0 -0
  273. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/licenses/LICENSE +0 -0
patterns/empathy.py ADDED
@@ -0,0 +1,268 @@
1
+ """Empathy patterns for user experience.
2
+
3
+ Empathy patterns ensure wizards provide excellent user experience:
4
+ - Empathy Levels: 0-4 empathy configuration
5
+ - Educational Banners: Safety notices and educational content
6
+ - User Guidance: Help text, examples, and prompts
7
+
8
+ Copyright 2025 Smart AI Memory, LLC
9
+ Licensed under Fair Source 0.9
10
+ """
11
+
12
+ from typing import Literal
13
+
14
+ from pydantic import Field
15
+
16
+ from .core import BasePattern, CodeGeneratorMixin, PatternCategory
17
+
18
+
19
+ class EmpathyLevelPattern(BasePattern, CodeGeneratorMixin):
20
+ """Empathy level configuration pattern.
21
+
22
+ **Description:**
23
+ The Empathy Framework supports 5 levels of empathy (0-4), determining
24
+ how proactive and anticipatory a wizard is.
25
+
26
+ **Usage:** 16 wizards (all domain wizards)
27
+ **Reusability:** 1.0 (universal pattern)
28
+
29
+ **Empathy Levels:**
30
+ - Level 0: Pure Data/Computation - No empathy, just calculations
31
+ - Level 1: Reactive - Responds to explicit requests only
32
+ - Level 2: Responsive - Understands context, provides helpful responses
33
+ - Level 3: Proactive - Suggests improvements and alternatives
34
+ - Level 4: Anticipatory - Predicts future needs and prevents issues
35
+
36
+ **Configuration:**
37
+ @dataclass
38
+ class WizardConfig:
39
+ default_empathy_level: int = 2 # 0-4
40
+
41
+ **Usage:**
42
+ result = await wizard.process(
43
+ user_input="...",
44
+ user_id="user123",
45
+ empathy_level=4, # Override default
46
+ )
47
+ """
48
+
49
+ category: Literal[PatternCategory.EMPATHY] = PatternCategory.EMPATHY
50
+ default_level: int = Field(
51
+ default=2,
52
+ description="Default empathy level (0-4)",
53
+ ge=0,
54
+ le=4,
55
+ )
56
+ level_descriptions: dict[int, str] = Field(
57
+ default_factory=lambda: {
58
+ 0: "Pure data/computation - no empathy",
59
+ 1: "Reactive - responds to explicit requests",
60
+ 2: "Responsive - understands context",
61
+ 3: "Proactive - suggests improvements",
62
+ 4: "Anticipatory - predicts future needs",
63
+ },
64
+ description="Description of each empathy level",
65
+ )
66
+ allow_user_override: bool = Field(
67
+ default=True,
68
+ description="Whether users can override empathy level per request",
69
+ )
70
+
71
+ def generate_code(self) -> str:
72
+ """Generate WizardConfig with empathy levels."""
73
+ return '''
74
+ from dataclasses import dataclass
75
+
76
+ @dataclass
77
+ class WizardConfig:
78
+ """Configuration for an Empathy wizard"""
79
+
80
+ # Wizard identity
81
+ name: str
82
+ description: str
83
+ domain: str
84
+
85
+ # Empathy level (0-4)
86
+ default_empathy_level: int = 2
87
+
88
+ # Security configuration
89
+ enable_security: bool = False
90
+ pii_patterns: list[str] = None
91
+
92
+ def _validate_config(self):
93
+ """Validate wizard configuration"""
94
+ if not 0 <= self.default_empathy_level <= 4:
95
+ raise ValueError(
96
+ f"Empathy level must be 0-4, got {self.default_empathy_level}"
97
+ )
98
+
99
+
100
+ class BaseWizard:
101
+ """Base wizard with empathy support"""
102
+
103
+ def __init__(self, llm, config: WizardConfig):
104
+ self.llm = llm
105
+ self.config = config
106
+ self._validate_config()
107
+
108
+ async def process(
109
+ self,
110
+ user_input: str,
111
+ user_id: str,
112
+ empathy_level: int | None = None,
113
+ session_context: dict | None = None,
114
+ ):
115
+ """Process with empathy level support"""
116
+ level = empathy_level if empathy_level is not None else self.config.default_empathy_level
117
+
118
+ # Process with specified empathy level
119
+ result = await self.llm.interact(
120
+ user_id=user_id,
121
+ user_input=user_input,
122
+ force_level=level,
123
+ context=session_context or {},
124
+ )
125
+
126
+ result["empathy_level"] = level
127
+ return result
128
+ '''
129
+
130
+
131
+ class EducationalBannerPattern(BasePattern, CodeGeneratorMixin):
132
+ """Educational banner pattern.
133
+
134
+ **Description:**
135
+ Wizards that deal with sensitive domains (healthcare, legal, finance)
136
+ display educational banners to remind users of limitations and proper use.
137
+
138
+ **Usage:** 16 wizards (all healthcare wizards)
139
+ **Reusability:** 1.0 (should be universal for sensitive domains)
140
+
141
+ **Purpose:**
142
+ - Clarify tool is educational/assistive, not replacement for professionals
143
+ - Set appropriate expectations
144
+ - Legal/liability protection
145
+ - Promote responsible use
146
+
147
+ **Display:**
148
+ - Shown at wizard start
149
+ - Included in all generated reports
150
+ - Cannot be dismissed permanently (shown every session)
151
+
152
+ **Example:**
153
+ ⚕️ EDUCATIONAL TOOL NOTICE ⚕️
154
+ This wizard is an educational tool for healthcare professionals.
155
+ All clinical documentation should be reviewed by qualified providers.
156
+ Never rely solely on automated tools for clinical decisions.
157
+ """
158
+
159
+ category: Literal[PatternCategory.EMPATHY] = PatternCategory.EMPATHY
160
+ banner_text: str = Field(..., description="Banner text to display")
161
+ banner_type: Literal["educational", "warning", "disclaimer"] = Field(
162
+ default="educational",
163
+ description="Type of banner",
164
+ )
165
+ display_locations: list[str] = Field(
166
+ default_factory=lambda: ["start", "report", "preview"],
167
+ description="Where to display the banner",
168
+ )
169
+ can_dismiss: bool = Field(
170
+ default=False,
171
+ description="Whether users can dismiss the banner",
172
+ )
173
+
174
+ def generate_code(self) -> str:
175
+ """Generate banner constant and display logic."""
176
+ icon = {
177
+ "educational": "⚕️",
178
+ "warning": "⚠️",
179
+ "disclaimer": "📋",
180
+ }.get(self.banner_type, "ℹ️")
181
+
182
+ return f'''
183
+ # Educational banner
184
+ BANNER = """
185
+ {icon} {self.banner_type.upper()} {icon}
186
+ {self.banner_text}
187
+ """
188
+
189
+
190
+ @router.post("/start")
191
+ async def start_wizard():
192
+ """Start wizard with educational banner"""
193
+ wizard_id = str(uuid4())
194
+
195
+ session_data = {{
196
+ "wizard_id": wizard_id,
197
+ "current_step": 1,
198
+ "total_steps": 5,
199
+ "collected_data": {{}},
200
+ }}
201
+
202
+ await _store_session(wizard_id, session_data)
203
+
204
+ return {{
205
+ "wizard_id": wizard_id,
206
+ "current_step": 1,
207
+ "banner": BANNER, # Show banner at start
208
+ }}
209
+
210
+
211
+ @router.post("/{{wizard_id}}/preview")
212
+ async def preview_report(wizard_id: str):
213
+ """Preview with banner"""
214
+ session = await _get_session(wizard_id)
215
+ preview = _generate_report(session["collected_data"])
216
+
217
+ return {{
218
+ "preview": preview,
219
+ "banner": BANNER, # Show banner in preview
220
+ }}
221
+
222
+
223
+ def _generate_report(collected_data: dict) -> dict:
224
+ """Generate report with banner"""
225
+ return {{
226
+ "data": collected_data,
227
+ "narrative": "...",
228
+ "banner": BANNER, # Include banner in report
229
+ }}
230
+ '''
231
+
232
+
233
+ class UserGuidancePattern(BasePattern):
234
+ """User guidance and help pattern.
235
+
236
+ **Description:**
237
+ Wizards that provide comprehensive help text, examples, and prompts
238
+ to guide users through complex workflows.
239
+
240
+ **Usage:** All wizards should use this pattern
241
+ **Reusability:** 1.0
242
+
243
+ **Guidance Types:**
244
+ - Step-level help text: Explains what to do in each step
245
+ - Field-level examples: Shows example values for fields
246
+ - Contextual prompts: Dynamic prompts based on previous inputs
247
+ - Error messages: Clear, actionable error messages
248
+
249
+ **Best Practices:**
250
+ - Use plain language (avoid jargon)
251
+ - Provide concrete examples
252
+ - Explain "why" not just "what"
253
+ - Anticipate user questions
254
+ """
255
+
256
+ category: Literal[PatternCategory.EMPATHY] = PatternCategory.EMPATHY
257
+ help_text_per_step: dict[int, str] = Field(
258
+ default_factory=dict,
259
+ description="Help text for each step",
260
+ )
261
+ field_examples: dict[str, list[str]] = Field(
262
+ default_factory=dict,
263
+ description="Example values for each field",
264
+ )
265
+ contextual_prompts: bool = Field(
266
+ default=False,
267
+ description="Whether to generate dynamic prompts based on context",
268
+ )