empathy-framework 3.7.0__py3-none-any.whl → 3.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.
- coach_wizards/code_reviewer_README.md +60 -0
- coach_wizards/code_reviewer_wizard.py +180 -0
- {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/METADATA +20 -2
- empathy_framework-3.7.1.dist-info/RECORD +327 -0
- {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/top_level.txt +5 -1
- empathy_healthcare_plugin/monitors/__init__.py +9 -0
- empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
- empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
- empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
- empathy_llm_toolkit/agent_factory/__init__.py +53 -0
- empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
- empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
- empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
- empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
- empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
- empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
- empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
- empathy_llm_toolkit/agent_factory/base.py +305 -0
- empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
- empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
- empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
- empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
- empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
- empathy_llm_toolkit/agent_factory/decorators.py +286 -0
- empathy_llm_toolkit/agent_factory/factory.py +558 -0
- empathy_llm_toolkit/agent_factory/framework.py +192 -0
- empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
- empathy_llm_toolkit/agent_factory/resilient.py +320 -0
- empathy_llm_toolkit/cli/__init__.py +8 -0
- empathy_llm_toolkit/cli/sync_claude.py +487 -0
- empathy_llm_toolkit/code_health.py +150 -3
- empathy_llm_toolkit/config/__init__.py +29 -0
- empathy_llm_toolkit/config/unified.py +295 -0
- empathy_llm_toolkit/routing/__init__.py +32 -0
- empathy_llm_toolkit/routing/model_router.py +362 -0
- empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
- empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
- empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
- empathy_llm_toolkit/security/README.md +262 -0
- empathy_llm_toolkit/security/__init__.py +62 -0
- empathy_llm_toolkit/security/audit_logger.py +929 -0
- empathy_llm_toolkit/security/audit_logger_example.py +152 -0
- empathy_llm_toolkit/security/pii_scrubber.py +640 -0
- empathy_llm_toolkit/security/secrets_detector.py +678 -0
- empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
- empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
- empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
- empathy_llm_toolkit/wizards/__init__.py +38 -0
- empathy_llm_toolkit/wizards/base_wizard.py +364 -0
- empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
- empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
- empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
- empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
- empathy_os/__init__.py +52 -52
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/cli.py +118 -8
- empathy_os/cli_unified.py +121 -1
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/memory/__init__.py +195 -0
- empathy_os/memory/claude_memory.py +466 -0
- empathy_os/memory/config.py +224 -0
- empathy_os/memory/control_panel.py +1298 -0
- empathy_os/memory/edges.py +179 -0
- empathy_os/memory/graph.py +567 -0
- empathy_os/memory/long_term.py +1193 -0
- empathy_os/memory/nodes.py +179 -0
- empathy_os/memory/redis_bootstrap.py +540 -0
- empathy_os/memory/security/__init__.py +31 -0
- empathy_os/memory/security/audit_logger.py +930 -0
- empathy_os/memory/security/pii_scrubber.py +640 -0
- empathy_os/memory/security/secrets_detector.py +678 -0
- empathy_os/memory/short_term.py +2119 -0
- empathy_os/memory/storage/__init__.py +15 -0
- empathy_os/memory/summary_index.py +583 -0
- empathy_os/memory/unified.py +619 -0
- empathy_os/metrics/__init__.py +12 -0
- empathy_os/metrics/prompt_metrics.py +190 -0
- empathy_os/models/__init__.py +136 -0
- empathy_os/models/__main__.py +13 -0
- empathy_os/models/cli.py +655 -0
- empathy_os/models/empathy_executor.py +354 -0
- empathy_os/models/executor.py +252 -0
- empathy_os/models/fallback.py +671 -0
- empathy_os/models/provider_config.py +563 -0
- empathy_os/models/registry.py +382 -0
- empathy_os/models/tasks.py +302 -0
- empathy_os/models/telemetry.py +548 -0
- empathy_os/models/token_estimator.py +378 -0
- empathy_os/models/validation.py +274 -0
- empathy_os/monitoring/__init__.py +52 -0
- empathy_os/monitoring/alerts.py +23 -0
- empathy_os/monitoring/alerts_cli.py +268 -0
- empathy_os/monitoring/multi_backend.py +271 -0
- empathy_os/monitoring/otel_backend.py +363 -0
- empathy_os/optimization/__init__.py +19 -0
- empathy_os/optimization/context_optimizer.py +272 -0
- empathy_os/plugins/__init__.py +28 -0
- empathy_os/plugins/base.py +361 -0
- empathy_os/plugins/registry.py +268 -0
- empathy_os/project_index/__init__.py +30 -0
- empathy_os/project_index/cli.py +335 -0
- empathy_os/project_index/crew_integration.py +430 -0
- empathy_os/project_index/index.py +425 -0
- empathy_os/project_index/models.py +501 -0
- empathy_os/project_index/reports.py +473 -0
- empathy_os/project_index/scanner.py +538 -0
- empathy_os/prompts/__init__.py +61 -0
- empathy_os/prompts/config.py +77 -0
- empathy_os/prompts/context.py +177 -0
- empathy_os/prompts/parser.py +285 -0
- empathy_os/prompts/registry.py +313 -0
- empathy_os/prompts/templates.py +208 -0
- empathy_os/resilience/__init__.py +56 -0
- empathy_os/resilience/circuit_breaker.py +256 -0
- empathy_os/resilience/fallback.py +179 -0
- empathy_os/resilience/health.py +300 -0
- empathy_os/resilience/retry.py +209 -0
- empathy_os/resilience/timeout.py +135 -0
- empathy_os/routing/__init__.py +43 -0
- empathy_os/routing/chain_executor.py +433 -0
- empathy_os/routing/classifier.py +217 -0
- empathy_os/routing/smart_router.py +234 -0
- empathy_os/routing/wizard_registry.py +307 -0
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/validation/__init__.py +19 -0
- empathy_os/validation/xml_validator.py +281 -0
- empathy_os/wizard_factory_cli.py +170 -0
- empathy_os/workflows/__init__.py +360 -0
- empathy_os/workflows/base.py +1530 -0
- empathy_os/workflows/bug_predict.py +962 -0
- empathy_os/workflows/code_review.py +960 -0
- empathy_os/workflows/code_review_adapters.py +310 -0
- empathy_os/workflows/code_review_pipeline.py +720 -0
- empathy_os/workflows/config.py +600 -0
- empathy_os/workflows/dependency_check.py +648 -0
- empathy_os/workflows/document_gen.py +1069 -0
- empathy_os/workflows/documentation_orchestrator.py +1205 -0
- empathy_os/workflows/health_check.py +679 -0
- empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
- empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
- empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
- empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
- empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
- empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
- empathy_os/workflows/manage_documentation.py +804 -0
- empathy_os/workflows/new_sample_workflow1.py +146 -0
- empathy_os/workflows/new_sample_workflow1_README.md +150 -0
- empathy_os/workflows/perf_audit.py +687 -0
- empathy_os/workflows/pr_review.py +748 -0
- empathy_os/workflows/progress.py +445 -0
- empathy_os/workflows/progress_server.py +322 -0
- empathy_os/workflows/refactor_plan.py +691 -0
- empathy_os/workflows/release_prep.py +808 -0
- empathy_os/workflows/research_synthesis.py +404 -0
- empathy_os/workflows/secure_release.py +585 -0
- empathy_os/workflows/security_adapters.py +297 -0
- empathy_os/workflows/security_audit.py +1050 -0
- empathy_os/workflows/step_config.py +234 -0
- empathy_os/workflows/test5.py +125 -0
- empathy_os/workflows/test5_README.md +158 -0
- empathy_os/workflows/test_gen.py +1855 -0
- empathy_os/workflows/test_lifecycle.py +526 -0
- empathy_os/workflows/test_maintenance.py +626 -0
- empathy_os/workflows/test_maintenance_cli.py +590 -0
- empathy_os/workflows/test_maintenance_crew.py +821 -0
- empathy_os/workflows/xml_enhanced_crew.py +285 -0
- empathy_software_plugin/cli/__init__.py +120 -0
- empathy_software_plugin/cli/inspect.py +362 -0
- empathy_software_plugin/cli.py +3 -1
- empathy_software_plugin/wizards/__init__.py +42 -0
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
- empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
- empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
- empathy_software_plugin/wizards/base_wizard.py +288 -0
- empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
- empathy_software_plugin/wizards/code_review_wizard.py +606 -0
- empathy_software_plugin/wizards/debugging/__init__.py +50 -0
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
- empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
- empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
- empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
- empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
- empathy_software_plugin/wizards/debugging/verification.py +369 -0
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
- empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
- empathy_software_plugin/wizards/performance/__init__.py +9 -0
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
- empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
- empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
- empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
- empathy_software_plugin/wizards/security/__init__.py +32 -0
- empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
- empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
- empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
- empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
- empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
- empathy_software_plugin/wizards/testing/__init__.py +27 -0
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
- empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
- empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
- empathy_software_plugin/wizards/testing_wizard.py +274 -0
- hot_reload/README.md +473 -0
- hot_reload/__init__.py +62 -0
- hot_reload/config.py +84 -0
- hot_reload/integration.py +228 -0
- hot_reload/reloader.py +298 -0
- hot_reload/watcher.py +179 -0
- hot_reload/websocket.py +176 -0
- scaffolding/README.md +589 -0
- scaffolding/__init__.py +35 -0
- scaffolding/__main__.py +14 -0
- scaffolding/cli.py +240 -0
- test_generator/__init__.py +38 -0
- test_generator/__main__.py +14 -0
- test_generator/cli.py +226 -0
- test_generator/generator.py +325 -0
- test_generator/risk_analyzer.py +216 -0
- workflow_patterns/__init__.py +33 -0
- workflow_patterns/behavior.py +249 -0
- workflow_patterns/core.py +76 -0
- workflow_patterns/output.py +99 -0
- workflow_patterns/registry.py +255 -0
- workflow_patterns/structural.py +288 -0
- workflow_scaffolding/__init__.py +11 -0
- workflow_scaffolding/__main__.py +12 -0
- workflow_scaffolding/cli.py +206 -0
- workflow_scaffolding/generator.py +265 -0
- agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
- agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
- agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
- agents/compliance_anticipation_agent.py +0 -1422
- agents/compliance_db.py +0 -339
- agents/epic_integration_wizard.py +0 -530
- agents/notifications.py +0 -291
- agents/trust_building_behaviors.py +0 -872
- empathy_framework-3.7.0.dist-info/RECORD +0 -105
- {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/WHEEL +0 -0
- {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/entry_points.txt +0 -0
- {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/licenses/LICENSE +0 -0
- /empathy_os/{monitoring.py → agent_monitoring.py} +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"""Customer Support Wizard - Privacy-Compliant AI Assistant
|
|
2
|
+
|
|
3
|
+
Specialized wizard for customer support with PII protection, ticket management,
|
|
4
|
+
and comprehensive audit logging.
|
|
5
|
+
|
|
6
|
+
Key Features:
|
|
7
|
+
- Customer PII detection and protection
|
|
8
|
+
- Automatic de-identification before LLM processing
|
|
9
|
+
- Ticket and case number tracking
|
|
10
|
+
- Comprehensive audit trail
|
|
11
|
+
- Support escalation handling
|
|
12
|
+
- Automatic classification as INTERNAL
|
|
13
|
+
|
|
14
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
15
|
+
Licensed under Fair Source 0.9
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import logging
|
|
19
|
+
|
|
20
|
+
from empathy_llm_toolkit import EmpathyLLM
|
|
21
|
+
|
|
22
|
+
from .base_wizard import BaseWizard, WizardConfig
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Customer support PII patterns
|
|
28
|
+
SUPPORT_PII_PATTERNS = [
|
|
29
|
+
# Standard PII
|
|
30
|
+
"email",
|
|
31
|
+
"phone",
|
|
32
|
+
"address",
|
|
33
|
+
"credit_card",
|
|
34
|
+
"ip_address",
|
|
35
|
+
# Support-specific
|
|
36
|
+
"customer_id",
|
|
37
|
+
"ticket_number",
|
|
38
|
+
"order_number",
|
|
39
|
+
"account_number",
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class CustomerSupportWizard(BaseWizard):
|
|
44
|
+
"""Privacy-compliant customer support AI assistant
|
|
45
|
+
|
|
46
|
+
Implements customer PII protection for support operations:
|
|
47
|
+
1. Customer PII detection and scrubbing
|
|
48
|
+
2. Ticket tracking and management
|
|
49
|
+
3. Encryption for sensitive customer data
|
|
50
|
+
4. Comprehensive audit logging
|
|
51
|
+
5. 2-year retention
|
|
52
|
+
6. Access control enforcement
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
>>> from empathy_llm_toolkit import EmpathyLLM
|
|
56
|
+
>>> from empathy_llm_toolkit.wizards import CustomerSupportWizard
|
|
57
|
+
>>>
|
|
58
|
+
>>> llm = EmpathyLLM(
|
|
59
|
+
... provider="anthropic",
|
|
60
|
+
... api_key=os.getenv("ANTHROPIC_API_KEY"),
|
|
61
|
+
... enable_security=True,
|
|
62
|
+
... )
|
|
63
|
+
>>>
|
|
64
|
+
>>> wizard = CustomerSupportWizard(llm)
|
|
65
|
+
>>>
|
|
66
|
+
>>> result = await wizard.process(
|
|
67
|
+
... user_input="Help resolve customer issue with order #12345",
|
|
68
|
+
... user_id="agent@company.com"
|
|
69
|
+
... )
|
|
70
|
+
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
def __init__(
|
|
74
|
+
self,
|
|
75
|
+
llm: EmpathyLLM,
|
|
76
|
+
custom_pii_patterns: list[str] | None = None,
|
|
77
|
+
):
|
|
78
|
+
"""Initialize customer support wizard
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
llm: EmpathyLLM instance (security recommended)
|
|
82
|
+
custom_pii_patterns: Additional company-specific PII patterns
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
pii_patterns = SUPPORT_PII_PATTERNS.copy()
|
|
86
|
+
|
|
87
|
+
if custom_pii_patterns:
|
|
88
|
+
pii_patterns.extend(custom_pii_patterns)
|
|
89
|
+
|
|
90
|
+
config = WizardConfig(
|
|
91
|
+
name="Customer Support Assistant",
|
|
92
|
+
description="Privacy-compliant AI assistant for customer support teams",
|
|
93
|
+
domain="customer_support",
|
|
94
|
+
default_empathy_level=4, # Anticipatory - predicts customer needs
|
|
95
|
+
enable_security=True,
|
|
96
|
+
pii_patterns=pii_patterns,
|
|
97
|
+
enable_secrets_detection=True,
|
|
98
|
+
block_on_secrets=True,
|
|
99
|
+
audit_all_access=True,
|
|
100
|
+
retention_days=730, # 2 years
|
|
101
|
+
default_classification="INTERNAL",
|
|
102
|
+
auto_classify=True,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
super().__init__(llm, config)
|
|
106
|
+
|
|
107
|
+
logger.info(
|
|
108
|
+
f"CustomerSupportWizard initialized: {len(pii_patterns)} PII patterns, "
|
|
109
|
+
f"empathy level={config.default_empathy_level}, security={llm.enable_security}",
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def _build_system_prompt(self, user_input: str = "") -> str:
|
|
113
|
+
"""Build customer support system prompt
|
|
114
|
+
|
|
115
|
+
Uses XML-enhanced prompts if enabled for improved consistency
|
|
116
|
+
and reduced hallucinations in customer-facing scenarios.
|
|
117
|
+
"""
|
|
118
|
+
# Check if XML prompts are enabled
|
|
119
|
+
if self._is_xml_enabled():
|
|
120
|
+
# Use XML-enhanced prompt for better structure
|
|
121
|
+
return self._render_xml_prompt(
|
|
122
|
+
role="privacy-compliant AI customer support assistant for help desk operations",
|
|
123
|
+
goal="Assist support agents with customer inquiries, issue resolution, and excellent service delivery",
|
|
124
|
+
instructions=[
|
|
125
|
+
"Assist support agents with customer inquiries and technical issues",
|
|
126
|
+
"Provide product knowledge, troubleshooting steps, and resolution guidance",
|
|
127
|
+
"Help draft clear, empathetic customer communications",
|
|
128
|
+
"Support ticket management, resolution tracking, and escalation decisions",
|
|
129
|
+
"Recommend solutions based on company policies and best practices",
|
|
130
|
+
"Maintain professional yet friendly communication style",
|
|
131
|
+
],
|
|
132
|
+
constraints=[
|
|
133
|
+
"CRITICAL: All customer PII automatically de-identified - never request or display customer names, emails, accounts",
|
|
134
|
+
"You are a support tool assisting agents, NOT a replacement for human judgment",
|
|
135
|
+
"CANNOT make refund, replacement, or policy exception decisions autonomously",
|
|
136
|
+
"Always defer to supervisors for complex, sensitive, or high-value cases",
|
|
137
|
+
"Prioritize customer satisfaction while following company policies",
|
|
138
|
+
"Customer privacy paramount - all interactions logged for audit",
|
|
139
|
+
],
|
|
140
|
+
input_type="support_query",
|
|
141
|
+
input_payload=user_input if user_input else "[Support agent query]",
|
|
142
|
+
extra={
|
|
143
|
+
"domain": "Customer Support / Help Desk",
|
|
144
|
+
"empathy_level": self.config.default_empathy_level,
|
|
145
|
+
"pii_patterns_enabled": len(self.config.pii_patterns),
|
|
146
|
+
"retention_days": self.config.retention_days,
|
|
147
|
+
},
|
|
148
|
+
)
|
|
149
|
+
else:
|
|
150
|
+
# Fallback to legacy plain text prompt
|
|
151
|
+
return """You are a privacy-compliant AI customer support assistant.
|
|
152
|
+
|
|
153
|
+
**Domain**: Customer Support / Help Desk
|
|
154
|
+
|
|
155
|
+
**Your Role**:
|
|
156
|
+
- Assist support agents with customer inquiries and issues
|
|
157
|
+
- Provide product knowledge and troubleshooting guidance
|
|
158
|
+
- Help draft customer communications
|
|
159
|
+
- Support ticket resolution and escalation
|
|
160
|
+
|
|
161
|
+
**Customer Privacy**:
|
|
162
|
+
- All customer PII is automatically de-identified before you see it
|
|
163
|
+
- Never request or display customer names, emails, or account numbers
|
|
164
|
+
- Maintain customer confidentiality at all times
|
|
165
|
+
- Focus on issue resolution and service excellence
|
|
166
|
+
|
|
167
|
+
**Support Guidelines**:
|
|
168
|
+
- Prioritize customer satisfaction and issue resolution
|
|
169
|
+
- Provide clear, actionable solutions
|
|
170
|
+
- Escalate complex issues appropriately
|
|
171
|
+
- Follow company policies and procedures
|
|
172
|
+
|
|
173
|
+
**Communication Style**:
|
|
174
|
+
- Empathetic and patient
|
|
175
|
+
- Clear and helpful
|
|
176
|
+
- Solution-oriented
|
|
177
|
+
- Professional yet friendly
|
|
178
|
+
|
|
179
|
+
**Important Disclaimers**:
|
|
180
|
+
- You are a support tool to assist agents, not a replacement for human judgment
|
|
181
|
+
- Cannot make refund, replacement, or policy exception decisions
|
|
182
|
+
- Always defer to supervisors for complex or sensitive cases
|
|
183
|
+
- Recommendations should be reviewed by support agents
|
|
184
|
+
|
|
185
|
+
Remember: Customer satisfaction and privacy are paramount. Interactions are logged.
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
def get_pii_patterns(self) -> list[str]:
|
|
189
|
+
"""Get list of customer support PII patterns being detected"""
|
|
190
|
+
return self.config.pii_patterns.copy()
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"""Healthcare Wizard - HIPAA-Compliant AI Assistant
|
|
2
|
+
|
|
3
|
+
Specialized wizard for healthcare applications with enhanced PHI protection,
|
|
4
|
+
mandatory encryption, comprehensive audit logging, and HIPAA compliance features.
|
|
5
|
+
|
|
6
|
+
Key Features:
|
|
7
|
+
- Enhanced PHI/PII detection (10+ medical patterns)
|
|
8
|
+
- Automatic de-identification before LLM processing
|
|
9
|
+
- Mandatory AES-256-GCM encryption for all data
|
|
10
|
+
- 90-day minimum retention (HIPAA §164.528)
|
|
11
|
+
- Comprehensive audit trail (HIPAA §164.312(b))
|
|
12
|
+
- Access control and permission enforcement
|
|
13
|
+
- Automatic classification as SENSITIVE
|
|
14
|
+
|
|
15
|
+
Reference:
|
|
16
|
+
- HIPAA Security Rule (45 CFR §164.312)
|
|
17
|
+
- HIPAA Privacy Rule (45 CFR §164.514)
|
|
18
|
+
- HITECH Act requirements
|
|
19
|
+
|
|
20
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
21
|
+
Licensed under Fair Source 0.9
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
import logging
|
|
25
|
+
from typing import Any
|
|
26
|
+
|
|
27
|
+
from empathy_llm_toolkit import EmpathyLLM
|
|
28
|
+
|
|
29
|
+
from .base_wizard import BaseWizard, WizardConfig
|
|
30
|
+
|
|
31
|
+
logger = logging.getLogger(__name__)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Enhanced PHI patterns for healthcare (beyond standard PII)
|
|
35
|
+
HEALTHCARE_PHI_PATTERNS = [
|
|
36
|
+
# Standard PII (enabled by default)
|
|
37
|
+
"email",
|
|
38
|
+
"phone",
|
|
39
|
+
"ssn",
|
|
40
|
+
"address",
|
|
41
|
+
"credit_card",
|
|
42
|
+
"ip_address",
|
|
43
|
+
# Healthcare-specific PHI
|
|
44
|
+
"mrn", # Medical Record Number
|
|
45
|
+
"patient_id", # Patient identifier
|
|
46
|
+
"dob", # Date of birth
|
|
47
|
+
"insurance_id", # Insurance/policy numbers
|
|
48
|
+
"provider_npi", # National Provider Identifier
|
|
49
|
+
"cpt_code", # Medical procedure codes
|
|
50
|
+
"icd_code", # Diagnosis codes
|
|
51
|
+
"medication_name", # Medication names (optional, configurable)
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class HealthcareWizard(BaseWizard):
|
|
56
|
+
"""HIPAA-compliant healthcare AI assistant
|
|
57
|
+
|
|
58
|
+
Implements defense-in-depth security for Protected Health Information (PHI):
|
|
59
|
+
1. Enhanced PHI detection and scrubbing
|
|
60
|
+
2. Secrets detection (API keys, passwords in medical software configs)
|
|
61
|
+
3. Mandatory encryption (AES-256-GCM)
|
|
62
|
+
4. Comprehensive audit logging
|
|
63
|
+
5. 90-day minimum retention
|
|
64
|
+
6. Access control enforcement
|
|
65
|
+
|
|
66
|
+
Example:
|
|
67
|
+
>>> from empathy_llm_toolkit import EmpathyLLM
|
|
68
|
+
>>> from empathy_llm_toolkit.wizards import HealthcareWizard
|
|
69
|
+
>>>
|
|
70
|
+
>>> llm = EmpathyLLM(
|
|
71
|
+
... provider="anthropic",
|
|
72
|
+
... api_key=os.getenv("ANTHROPIC_API_KEY"),
|
|
73
|
+
... enable_security=True,
|
|
74
|
+
... )
|
|
75
|
+
>>>
|
|
76
|
+
>>> wizard = HealthcareWizard(llm)
|
|
77
|
+
>>>
|
|
78
|
+
>>> result = await wizard.process(
|
|
79
|
+
... user_input="Patient John Doe (MRN 123456) needs follow-up",
|
|
80
|
+
... user_id="doctor@hospital.com"
|
|
81
|
+
... )
|
|
82
|
+
>>>
|
|
83
|
+
>>> print(result['security_report']['phi_removed']) # PHI was scrubbed
|
|
84
|
+
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
def __init__(
|
|
88
|
+
self,
|
|
89
|
+
llm: EmpathyLLM,
|
|
90
|
+
enable_medication_scrubbing: bool = False,
|
|
91
|
+
enable_diagnosis_scrubbing: bool = False,
|
|
92
|
+
custom_phi_patterns: list[str] | None = None,
|
|
93
|
+
):
|
|
94
|
+
"""Initialize HIPAA-compliant healthcare wizard
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
llm: EmpathyLLM instance (security should be enabled)
|
|
98
|
+
enable_medication_scrubbing: Scrub medication names (may reduce context)
|
|
99
|
+
enable_diagnosis_scrubbing: Scrub diagnosis codes (may reduce context)
|
|
100
|
+
custom_phi_patterns: Additional facility-specific PHI patterns
|
|
101
|
+
|
|
102
|
+
Note:
|
|
103
|
+
For maximum HIPAA compliance, llm should be initialized with
|
|
104
|
+
enable_security=True. This wizard enforces SENSITIVE classification
|
|
105
|
+
and 90-day retention regardless of LLM security settings.
|
|
106
|
+
|
|
107
|
+
"""
|
|
108
|
+
# Build PHI pattern list
|
|
109
|
+
phi_patterns = HEALTHCARE_PHI_PATTERNS.copy()
|
|
110
|
+
|
|
111
|
+
if not enable_medication_scrubbing:
|
|
112
|
+
phi_patterns.remove("medication_name")
|
|
113
|
+
if not enable_diagnosis_scrubbing:
|
|
114
|
+
if "cpt_code" in phi_patterns:
|
|
115
|
+
phi_patterns.remove("cpt_code")
|
|
116
|
+
if "icd_code" in phi_patterns:
|
|
117
|
+
phi_patterns.remove("icd_code")
|
|
118
|
+
|
|
119
|
+
if custom_phi_patterns:
|
|
120
|
+
phi_patterns.extend(custom_phi_patterns)
|
|
121
|
+
|
|
122
|
+
# HIPAA-compliant configuration
|
|
123
|
+
config = WizardConfig(
|
|
124
|
+
name="Healthcare Assistant",
|
|
125
|
+
description="HIPAA-compliant AI assistant for healthcare professionals",
|
|
126
|
+
domain="healthcare",
|
|
127
|
+
# Empathy configuration
|
|
128
|
+
default_empathy_level=3, # Proactive - anticipates needs
|
|
129
|
+
# Security configuration (HIPAA requirements)
|
|
130
|
+
enable_security=True,
|
|
131
|
+
pii_patterns=phi_patterns,
|
|
132
|
+
enable_secrets_detection=True,
|
|
133
|
+
block_on_secrets=True, # CRITICAL: Block if secrets detected
|
|
134
|
+
# Audit configuration (HIPAA §164.312(b))
|
|
135
|
+
audit_all_access=True, # Log every interaction
|
|
136
|
+
retention_days=90, # HIPAA minimum for audit logs
|
|
137
|
+
# Classification (HIPAA §164.514)
|
|
138
|
+
default_classification="SENSITIVE", # PHI is always SENSITIVE
|
|
139
|
+
auto_classify=True,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
super().__init__(llm, config)
|
|
143
|
+
|
|
144
|
+
# Verify security is enabled
|
|
145
|
+
if not llm.enable_security:
|
|
146
|
+
logger.warning(
|
|
147
|
+
"HealthcareWizard initialized with security DISABLED. "
|
|
148
|
+
"HIPAA compliance requires enable_security=True in EmpathyLLM.",
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
logger.info(
|
|
152
|
+
f"HealthcareWizard initialized: {len(phi_patterns)} PHI patterns, "
|
|
153
|
+
f"empathy level={config.default_empathy_level}, security={llm.enable_security}",
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
async def process(
|
|
157
|
+
self,
|
|
158
|
+
user_input: str,
|
|
159
|
+
user_id: str,
|
|
160
|
+
empathy_level: int | None = None,
|
|
161
|
+
session_context: dict[str, Any] | None = None,
|
|
162
|
+
patient_id: str | None = None,
|
|
163
|
+
) -> dict[str, Any]:
|
|
164
|
+
"""Process healthcare request with HIPAA compliance
|
|
165
|
+
|
|
166
|
+
Args:
|
|
167
|
+
user_input: Healthcare professional's message (may contain PHI)
|
|
168
|
+
user_id: Healthcare provider identifier (email, NPI, etc.)
|
|
169
|
+
empathy_level: Override default empathy level
|
|
170
|
+
session_context: Session metadata (encounter ID, facility, etc.)
|
|
171
|
+
patient_id: Patient identifier for audit trail (optional)
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
Dict containing:
|
|
175
|
+
- response: De-identified AI response
|
|
176
|
+
- security_report: PHI scrubbing and security scan results
|
|
177
|
+
- empathy_level: Level used
|
|
178
|
+
- hipaa_compliance: Compliance status
|
|
179
|
+
- audit_event_id: Audit trail event ID
|
|
180
|
+
|
|
181
|
+
Raises:
|
|
182
|
+
SecurityError: If secrets detected in input
|
|
183
|
+
ValueError: If invalid user_id or parameters
|
|
184
|
+
|
|
185
|
+
"""
|
|
186
|
+
# Enhance session context with patient ID for audit trail
|
|
187
|
+
if patient_id:
|
|
188
|
+
if session_context is None:
|
|
189
|
+
session_context = {}
|
|
190
|
+
session_context["patient_id"] = patient_id
|
|
191
|
+
|
|
192
|
+
# Log PHI access
|
|
193
|
+
self.logger.info(
|
|
194
|
+
f"PHI access: user={user_id}, wizard={self.config.name}, "
|
|
195
|
+
f"patient={patient_id}, audit=True",
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# Process through base wizard (handles security pipeline)
|
|
199
|
+
result = await super().process(
|
|
200
|
+
user_input=user_input,
|
|
201
|
+
user_id=user_id,
|
|
202
|
+
empathy_level=empathy_level,
|
|
203
|
+
session_context=session_context,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
# Add HIPAA compliance metadata
|
|
207
|
+
result["hipaa_compliance"] = {
|
|
208
|
+
"phi_detected": result.get("security_report", {}).get("pii_count", 0) > 0,
|
|
209
|
+
"phi_scrubbed": True if self.llm.enable_security else False,
|
|
210
|
+
"encrypted": result.get("security_report", {}).get("encrypted", False),
|
|
211
|
+
"audit_logged": True,
|
|
212
|
+
"retention_days": self.config.retention_days,
|
|
213
|
+
"classification": "SENSITIVE",
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
# Log completion
|
|
217
|
+
self.logger.info(
|
|
218
|
+
f"PHI processing complete: user={user_id}, "
|
|
219
|
+
f"detected={result['hipaa_compliance']['phi_detected']}, "
|
|
220
|
+
f"scrubbed={result['hipaa_compliance']['phi_scrubbed']}",
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
return result
|
|
224
|
+
|
|
225
|
+
def _build_system_prompt(self, user_input: str = "") -> str:
|
|
226
|
+
"""Build HIPAA-aware system prompt for healthcare domain
|
|
227
|
+
|
|
228
|
+
Includes:
|
|
229
|
+
- Healthcare domain knowledge
|
|
230
|
+
- HIPAA compliance reminders
|
|
231
|
+
- Clinical communication best practices
|
|
232
|
+
- Patient privacy emphasis
|
|
233
|
+
|
|
234
|
+
Uses XML-enhanced prompts if enabled for improved reliability
|
|
235
|
+
and reduced hallucinations (critical for HIPAA compliance).
|
|
236
|
+
"""
|
|
237
|
+
# Check if XML prompts are enabled
|
|
238
|
+
if self._is_xml_enabled():
|
|
239
|
+
# Use XML-enhanced prompt for better structure and HIPAA compliance
|
|
240
|
+
return self._render_xml_prompt(
|
|
241
|
+
role="HIPAA-compliant AI healthcare assistant for clinical decision support",
|
|
242
|
+
goal="Assist healthcare professionals with evidence-based clinical guidance while maintaining strict HIPAA compliance and patient safety",
|
|
243
|
+
instructions=[
|
|
244
|
+
"Provide clinical decision support based on current evidence-based guidelines",
|
|
245
|
+
"Support clinical documentation following standardized formats (SBAR, SOAP, etc.)",
|
|
246
|
+
"Help with care coordination and patient management workflows",
|
|
247
|
+
"Use standardized medical terminology (ICD-10, CPT, SNOMED) where appropriate",
|
|
248
|
+
"Acknowledge limitations and suggest specialist consultation when needed",
|
|
249
|
+
"Maintain professional, empathetic communication",
|
|
250
|
+
],
|
|
251
|
+
constraints=[
|
|
252
|
+
"CRITICAL: All PHI is automatically de-identified - never request or display patient identifiers",
|
|
253
|
+
"You are a decision support tool, NOT a replacement for professional clinical judgment",
|
|
254
|
+
"NEVER diagnose or prescribe - support licensed healthcare providers who do",
|
|
255
|
+
"In emergencies, direct to appropriate emergency services immediately",
|
|
256
|
+
"Focus on clinical reasoning and evidence-based medicine",
|
|
257
|
+
"Patient safety and privacy are paramount - all interactions logged for HIPAA compliance",
|
|
258
|
+
],
|
|
259
|
+
input_type="clinical_query",
|
|
260
|
+
input_payload=user_input if user_input else "[Healthcare professional query]",
|
|
261
|
+
extra={
|
|
262
|
+
"domain": "Healthcare / Clinical Medicine",
|
|
263
|
+
"compliance": "HIPAA §164.312 (Security Rule), §164.514 (Privacy Rule)",
|
|
264
|
+
"empathy_level": self.config.default_empathy_level,
|
|
265
|
+
"phi_detection_enabled": len(self.config.pii_patterns),
|
|
266
|
+
},
|
|
267
|
+
)
|
|
268
|
+
else:
|
|
269
|
+
# Fallback to legacy plain text prompt
|
|
270
|
+
return """You are a HIPAA-compliant AI healthcare assistant.
|
|
271
|
+
|
|
272
|
+
**Domain**: Healthcare / Clinical Medicine
|
|
273
|
+
|
|
274
|
+
**Your Role**:
|
|
275
|
+
- Assist healthcare professionals with clinical decision support
|
|
276
|
+
- Provide evidence-based medical information
|
|
277
|
+
- Support clinical documentation and communication
|
|
278
|
+
- Help with care coordination and patient management
|
|
279
|
+
|
|
280
|
+
**HIPAA Compliance**:
|
|
281
|
+
- All patient data (PHI) is automatically de-identified before you see it
|
|
282
|
+
- Never request or display patient identifiers in your responses
|
|
283
|
+
- Focus on clinical reasoning and medical knowledge
|
|
284
|
+
- Maintain patient confidentiality at all times
|
|
285
|
+
|
|
286
|
+
**Clinical Guidelines**:
|
|
287
|
+
- Base recommendations on current evidence-based guidelines
|
|
288
|
+
- Acknowledge limitations and suggest consulting specialists when appropriate
|
|
289
|
+
- Use standardized medical terminology (ICD-10, CPT, SNOMED)
|
|
290
|
+
- Follow clinical communication best practices (SBAR, SOAP, etc.)
|
|
291
|
+
|
|
292
|
+
**Communication Style**:
|
|
293
|
+
- Professional and empathetic
|
|
294
|
+
- Clear and concise
|
|
295
|
+
- Evidence-based
|
|
296
|
+
- Action-oriented when appropriate
|
|
297
|
+
|
|
298
|
+
**Important Disclaimers**:
|
|
299
|
+
- You are a clinical decision support tool, not a replacement for professional judgment
|
|
300
|
+
- Always defer to licensed healthcare providers for final decisions
|
|
301
|
+
- In emergencies, direct users to appropriate emergency services
|
|
302
|
+
- Do not diagnose or prescribe - support healthcare professionals who do
|
|
303
|
+
|
|
304
|
+
Remember: Patient safety and privacy are paramount. Interactions are logged for HIPAA compliance.
|
|
305
|
+
"""
|
|
306
|
+
|
|
307
|
+
def get_phi_patterns(self) -> list[str]:
|
|
308
|
+
"""Get list of PHI patterns being detected"""
|
|
309
|
+
return self.config.pii_patterns.copy()
|
|
310
|
+
|
|
311
|
+
def get_hipaa_compliance_status(self) -> dict[str, Any]:
|
|
312
|
+
"""Get HIPAA compliance status for this wizard
|
|
313
|
+
|
|
314
|
+
Returns:
|
|
315
|
+
Dict with compliance checks and recommendations
|
|
316
|
+
|
|
317
|
+
"""
|
|
318
|
+
status: dict[str, Any] = {
|
|
319
|
+
"compliant": True,
|
|
320
|
+
"checks": {},
|
|
321
|
+
"recommendations": [],
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
# Check 1: Security enabled
|
|
325
|
+
status["checks"]["security_enabled"] = self.llm.enable_security
|
|
326
|
+
if not self.llm.enable_security:
|
|
327
|
+
status["compliant"] = False
|
|
328
|
+
status["recommendations"].append(
|
|
329
|
+
"Enable security in EmpathyLLM (enable_security=True) for HIPAA compliance",
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
# Check 2: Encryption for SENSITIVE data
|
|
333
|
+
# Note: Encryption is handled by SecureMemDocsIntegration, not directly by EmpathyLLM
|
|
334
|
+
status["checks"]["encryption_enabled"] = self.llm.enable_security
|
|
335
|
+
if not status["checks"]["encryption_enabled"]:
|
|
336
|
+
status["recommendations"].append(
|
|
337
|
+
"Enable encryption for SENSITIVE data (HIPAA §164.312(a)(2)(iv))",
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
# Check 3: Audit logging
|
|
341
|
+
status["checks"]["audit_logging"] = (
|
|
342
|
+
self.llm.enable_security and self.config.audit_all_access
|
|
343
|
+
)
|
|
344
|
+
if not status["checks"]["audit_logging"]:
|
|
345
|
+
status["compliant"] = False
|
|
346
|
+
status["recommendations"].append(
|
|
347
|
+
"Enable comprehensive audit logging (HIPAA §164.312(b))",
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
# Check 4: PHI detection
|
|
351
|
+
status["checks"]["phi_detection"] = len(self.config.pii_patterns) >= 10
|
|
352
|
+
if not status["checks"]["phi_detection"]:
|
|
353
|
+
status["recommendations"].append("Enable comprehensive PHI detection patterns")
|
|
354
|
+
|
|
355
|
+
# Check 5: Minimum retention
|
|
356
|
+
status["checks"]["retention_policy"] = self.config.retention_days >= 90
|
|
357
|
+
if not status["checks"]["retention_policy"]:
|
|
358
|
+
status["recommendations"].append(
|
|
359
|
+
"Set minimum 90-day retention for audit logs (HIPAA §164.528)",
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
return status
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Patient Assessment Wizard
|
|
2
|
+
|
|
3
|
+
**Domain:** healthcare
|
|
4
|
+
**Type:** Wizard
|
|
5
|
+
**Generated:** Pattern-Compose Methodology
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Auto-generated wizard using proven patterns from the Empathy Framework.
|
|
10
|
+
|
|
11
|
+
## Patterns Used
|
|
12
|
+
|
|
13
|
+
- **Empathy Level**: 0-4 empathy level configuration
|
|
14
|
+
- **User Guidance**: Help text, examples, and prompts
|
|
15
|
+
- **Linear Flow**: Step-by-step wizard with review and approval
|
|
16
|
+
- **Structured Fields**: Predefined fields per step with validation
|
|
17
|
+
- **Step Validation**: Ensure steps are completed in order
|
|
18
|
+
- **User Approval**: Preview → Explicit Approval → Finalize
|
|
19
|
+
- **Educational Banner**: Safety notices and educational content
|
|
20
|
+
- **AI Enhancement**: Improve user input with AI
|
|
21
|
+
- **Config Validation**: Validate wizard configuration on initialization
|
|
22
|
+
- **Session-Based**: State management with session storage
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from wizards.patient_assessment_wizard import PatientAssessmentWizard
|
|
28
|
+
|
|
29
|
+
wizard = PatientAssessmentWizard()
|
|
30
|
+
result = await wizard.process(user_input="...")
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## API Endpoints
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Process with wizard
|
|
37
|
+
POST /api/wizard/patient_assessment/process
|
|
38
|
+
{
|
|
39
|
+
"input": "your input here",
|
|
40
|
+
"context": {}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Testing
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Run unit tests
|
|
48
|
+
pytest tests/unit/wizards/test_patient_assessment_wizard.py
|
|
49
|
+
|
|
50
|
+
# Run with coverage
|
|
51
|
+
pytest tests/unit/wizards/test_patient_assessment_wizard.py --cov
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Next Steps
|
|
55
|
+
|
|
56
|
+
1. Customize wizard logic as needed
|
|
57
|
+
2. Add domain-specific validation
|
|
58
|
+
3. Extend with additional features
|
|
59
|
+
4. Update tests for custom logic
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
**Generated by:** Empathy Framework - Wizard Factory
|
|
64
|
+
**Methodology:** Pattern-Compose
|