empathy-framework 2.4.0__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.
- coach_wizards/__init__.py +13 -12
- coach_wizards/accessibility_wizard.py +12 -12
- coach_wizards/api_wizard.py +12 -12
- coach_wizards/base_wizard.py +26 -20
- coach_wizards/cicd_wizard.py +15 -13
- coach_wizards/code_reviewer_README.md +60 -0
- coach_wizards/code_reviewer_wizard.py +180 -0
- coach_wizards/compliance_wizard.py +12 -12
- coach_wizards/database_wizard.py +12 -12
- coach_wizards/debugging_wizard.py +12 -12
- coach_wizards/documentation_wizard.py +12 -12
- coach_wizards/generate_wizards.py +1 -2
- coach_wizards/localization_wizard.py +101 -19
- coach_wizards/migration_wizard.py +12 -12
- coach_wizards/monitoring_wizard.py +12 -12
- coach_wizards/observability_wizard.py +12 -12
- coach_wizards/performance_wizard.py +12 -12
- coach_wizards/prompt_engineering_wizard.py +661 -0
- coach_wizards/refactoring_wizard.py +12 -12
- coach_wizards/scaling_wizard.py +12 -12
- coach_wizards/security_wizard.py +12 -12
- coach_wizards/testing_wizard.py +12 -12
- empathy_framework-3.8.2.dist-info/METADATA +1176 -0
- empathy_framework-3.8.2.dist-info/RECORD +333 -0
- empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/top_level.txt +5 -1
- empathy_healthcare_plugin/__init__.py +1 -2
- 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/__init__.py +7 -7
- 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/claude_memory.py +14 -15
- empathy_llm_toolkit/cli/__init__.py +8 -0
- empathy_llm_toolkit/cli/sync_claude.py +487 -0
- empathy_llm_toolkit/code_health.py +186 -28
- empathy_llm_toolkit/config/__init__.py +29 -0
- empathy_llm_toolkit/config/unified.py +295 -0
- empathy_llm_toolkit/contextual_patterns.py +11 -12
- empathy_llm_toolkit/core.py +168 -53
- empathy_llm_toolkit/git_pattern_extractor.py +17 -13
- empathy_llm_toolkit/levels.py +6 -13
- empathy_llm_toolkit/pattern_confidence.py +14 -18
- empathy_llm_toolkit/pattern_resolver.py +10 -12
- empathy_llm_toolkit/pattern_summary.py +16 -14
- empathy_llm_toolkit/providers.py +194 -28
- 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/session_status.py +20 -22
- empathy_llm_toolkit/state.py +28 -21
- 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 +125 -84
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/{monitoring.py → agent_monitoring.py} +28 -28
- empathy_os/cache/__init__.py +117 -0
- empathy_os/cache/base.py +166 -0
- empathy_os/cache/dependency_manager.py +253 -0
- empathy_os/cache/hash_only.py +248 -0
- empathy_os/cache/hybrid.py +390 -0
- empathy_os/cache/storage.py +282 -0
- empathy_os/cli.py +1516 -70
- empathy_os/cli_unified.py +597 -0
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/config.py +95 -37
- empathy_os/coordination.py +72 -68
- empathy_os/core.py +94 -107
- empathy_os/cost_tracker.py +74 -55
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/discovery.py +17 -14
- empathy_os/emergence.py +21 -22
- empathy_os/exceptions.py +18 -30
- empathy_os/feedback_loops.py +30 -33
- empathy_os/levels.py +32 -35
- empathy_os/leverage_points.py +31 -32
- empathy_os/logging_config.py +19 -16
- 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 +1194 -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/pattern_library.py +30 -29
- empathy_os/persistence.py +35 -37
- empathy_os/platform_utils.py +261 -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/redis_config.py +144 -58
- empathy_os/redis_memory.py +79 -77
- 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/templates.py +19 -14
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/trust_building.py +67 -58
- 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.py → workflow_commands.py} +131 -37
- empathy_os/workflows/__init__.py +360 -0
- empathy_os/workflows/base.py +1660 -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 +693 -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 +1046 -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/__init__.py +1 -2
- empathy_software_plugin/cli/__init__.py +120 -0
- empathy_software_plugin/cli/inspect.py +362 -0
- empathy_software_plugin/cli.py +49 -27
- empathy_software_plugin/plugin.py +4 -8
- 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 -1427
- agents/epic_integration_wizard.py +0 -541
- agents/trust_building_behaviors.py +0 -891
- empathy_framework-2.4.0.dist-info/METADATA +0 -485
- empathy_framework-2.4.0.dist-info/RECORD +0 -102
- empathy_framework-2.4.0.dist-info/entry_points.txt +0 -6
- empathy_llm_toolkit/htmlcov/status.json +0 -1
- empathy_llm_toolkit/security/htmlcov/status.json +0 -1
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
- {empathy_framework-2.4.0.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:
|
|
@@ -262,12 +259,12 @@ class SessionStatusCollector:
|
|
|
262
259
|
priority=80,
|
|
263
260
|
icon="🔴",
|
|
264
261
|
title=f"Bugs: {len(high_severity)} high-severity",
|
|
265
|
-
description=f"Fix {first_bug.get('error_type', '
|
|
262
|
+
description=f"Fix {first_bug.get('error_type', '?')} in {first_bug.get('file_path', '?')[:40]}",
|
|
266
263
|
action_prompt=f"Fix high-severity bug {first_bug.get('bug_id', 'unknown')}: "
|
|
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)
|
|
@@ -280,12 +277,12 @@ class SessionStatusCollector:
|
|
|
280
277
|
icon="🟡",
|
|
281
278
|
title=f"Bugs: {len(investigating)} investigating",
|
|
282
279
|
description=f"Resolve {first_bug.get('bug_id', 'unknown')}",
|
|
283
|
-
action_prompt=f"Continue investigating
|
|
280
|
+
action_prompt=f"Continue investigating {first_bug.get('bug_id', '?')}: "
|
|
284
281
|
f"{first_bug.get('error_message', 'No description')}. "
|
|
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
|
|
empathy_llm_toolkit/state.py
CHANGED
|
@@ -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
|
|
@@ -95,8 +91,20 @@ class CollaborationState:
|
|
|
95
91
|
# Context that persists across interactions
|
|
96
92
|
shared_context: dict[str, Any] = field(default_factory=dict)
|
|
97
93
|
|
|
94
|
+
@property
|
|
95
|
+
def success_rate(self) -> float:
|
|
96
|
+
"""Calculate success rate from successful and failed actions."""
|
|
97
|
+
total = self.successful_actions + self.failed_actions
|
|
98
|
+
if total == 0:
|
|
99
|
+
return 1.0 # Default to 100% if no actions yet
|
|
100
|
+
return self.successful_actions / total
|
|
101
|
+
|
|
98
102
|
def add_interaction(
|
|
99
|
-
self,
|
|
103
|
+
self,
|
|
104
|
+
role: str,
|
|
105
|
+
content: str,
|
|
106
|
+
empathy_level: int,
|
|
107
|
+
metadata: dict | None = None,
|
|
100
108
|
):
|
|
101
109
|
"""Add interaction to history"""
|
|
102
110
|
self.interactions.append(
|
|
@@ -106,7 +114,7 @@ class CollaborationState:
|
|
|
106
114
|
content=content,
|
|
107
115
|
empathy_level=empathy_level,
|
|
108
116
|
metadata=metadata or {},
|
|
109
|
-
)
|
|
117
|
+
),
|
|
110
118
|
)
|
|
111
119
|
|
|
112
120
|
# Track level history
|
|
@@ -114,12 +122,12 @@ class CollaborationState:
|
|
|
114
122
|
self.level_history.append(empathy_level)
|
|
115
123
|
|
|
116
124
|
def update_trust(self, outcome: str, magnitude: float = 1.0):
|
|
117
|
-
"""
|
|
118
|
-
Update trust level based on action outcome.
|
|
125
|
+
"""Update trust level based on action outcome.
|
|
119
126
|
|
|
120
127
|
Args:
|
|
121
128
|
outcome: "success" or "failure"
|
|
122
129
|
magnitude: How much to adjust (0.0 to 1.0)
|
|
130
|
+
|
|
123
131
|
"""
|
|
124
132
|
if outcome == "success":
|
|
125
133
|
adjustment = 0.05 * magnitude
|
|
@@ -151,8 +159,7 @@ class CollaborationState:
|
|
|
151
159
|
self.detected_patterns.append(pattern)
|
|
152
160
|
|
|
153
161
|
def find_matching_pattern(self, trigger_text: str) -> UserPattern | None:
|
|
154
|
-
"""
|
|
155
|
-
Find pattern that matches current input.
|
|
162
|
+
"""Find pattern that matches current input.
|
|
156
163
|
|
|
157
164
|
Returns pattern with highest confidence if found.
|
|
158
165
|
"""
|
|
@@ -169,10 +176,11 @@ class CollaborationState:
|
|
|
169
176
|
return None
|
|
170
177
|
|
|
171
178
|
def get_conversation_history(
|
|
172
|
-
self,
|
|
179
|
+
self,
|
|
180
|
+
max_turns: int = 10,
|
|
181
|
+
include_metadata: bool = False,
|
|
173
182
|
) -> list[dict[str, Any]]:
|
|
174
|
-
"""
|
|
175
|
-
Get recent conversation history in LLM format.
|
|
183
|
+
"""Get recent conversation history in LLM format.
|
|
176
184
|
|
|
177
185
|
Args:
|
|
178
186
|
max_turns: Maximum number of turns to include
|
|
@@ -180,17 +188,16 @@ class CollaborationState:
|
|
|
180
188
|
|
|
181
189
|
Returns:
|
|
182
190
|
List of {"role": "user/assistant", "content": "..."}
|
|
191
|
+
|
|
183
192
|
"""
|
|
184
193
|
recent = self.interactions[-max_turns:] if max_turns else self.interactions
|
|
185
194
|
|
|
186
195
|
if include_metadata:
|
|
187
196
|
return [{"role": i.role, "content": i.content, "metadata": i.metadata} for i in recent]
|
|
188
|
-
|
|
189
|
-
return [{"role": i.role, "content": i.content} for i in recent]
|
|
197
|
+
return [{"role": i.role, "content": i.content} for i in recent]
|
|
190
198
|
|
|
191
199
|
def should_progress_to_level(self, level: int) -> bool:
|
|
192
|
-
"""
|
|
193
|
-
Determine if system should progress to higher empathy level.
|
|
200
|
+
"""Determine if system should progress to higher empathy level.
|
|
194
201
|
|
|
195
202
|
Progression criteria:
|
|
196
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
|
+
]
|