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.
Files changed (267) hide show
  1. coach_wizards/code_reviewer_README.md +60 -0
  2. coach_wizards/code_reviewer_wizard.py +180 -0
  3. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/METADATA +20 -2
  4. empathy_framework-3.7.1.dist-info/RECORD +327 -0
  5. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/top_level.txt +5 -1
  6. empathy_healthcare_plugin/monitors/__init__.py +9 -0
  7. empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
  8. empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
  9. empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
  10. empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
  11. empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
  12. empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
  13. empathy_llm_toolkit/agent_factory/__init__.py +53 -0
  14. empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
  15. empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
  16. empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
  17. empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
  18. empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
  19. empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
  20. empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
  21. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
  22. empathy_llm_toolkit/agent_factory/base.py +305 -0
  23. empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
  24. empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
  25. empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
  26. empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
  27. empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
  28. empathy_llm_toolkit/agent_factory/decorators.py +286 -0
  29. empathy_llm_toolkit/agent_factory/factory.py +558 -0
  30. empathy_llm_toolkit/agent_factory/framework.py +192 -0
  31. empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
  32. empathy_llm_toolkit/agent_factory/resilient.py +320 -0
  33. empathy_llm_toolkit/cli/__init__.py +8 -0
  34. empathy_llm_toolkit/cli/sync_claude.py +487 -0
  35. empathy_llm_toolkit/code_health.py +150 -3
  36. empathy_llm_toolkit/config/__init__.py +29 -0
  37. empathy_llm_toolkit/config/unified.py +295 -0
  38. empathy_llm_toolkit/routing/__init__.py +32 -0
  39. empathy_llm_toolkit/routing/model_router.py +362 -0
  40. empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
  41. empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
  42. empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
  43. empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
  44. empathy_llm_toolkit/security/README.md +262 -0
  45. empathy_llm_toolkit/security/__init__.py +62 -0
  46. empathy_llm_toolkit/security/audit_logger.py +929 -0
  47. empathy_llm_toolkit/security/audit_logger_example.py +152 -0
  48. empathy_llm_toolkit/security/pii_scrubber.py +640 -0
  49. empathy_llm_toolkit/security/secrets_detector.py +678 -0
  50. empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
  51. empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
  52. empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
  53. empathy_llm_toolkit/wizards/__init__.py +38 -0
  54. empathy_llm_toolkit/wizards/base_wizard.py +364 -0
  55. empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
  56. empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
  57. empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
  58. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
  59. empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
  60. empathy_os/__init__.py +52 -52
  61. empathy_os/adaptive/__init__.py +13 -0
  62. empathy_os/adaptive/task_complexity.py +127 -0
  63. empathy_os/cli.py +118 -8
  64. empathy_os/cli_unified.py +121 -1
  65. empathy_os/config/__init__.py +63 -0
  66. empathy_os/config/xml_config.py +239 -0
  67. empathy_os/dashboard/__init__.py +15 -0
  68. empathy_os/dashboard/server.py +743 -0
  69. empathy_os/memory/__init__.py +195 -0
  70. empathy_os/memory/claude_memory.py +466 -0
  71. empathy_os/memory/config.py +224 -0
  72. empathy_os/memory/control_panel.py +1298 -0
  73. empathy_os/memory/edges.py +179 -0
  74. empathy_os/memory/graph.py +567 -0
  75. empathy_os/memory/long_term.py +1193 -0
  76. empathy_os/memory/nodes.py +179 -0
  77. empathy_os/memory/redis_bootstrap.py +540 -0
  78. empathy_os/memory/security/__init__.py +31 -0
  79. empathy_os/memory/security/audit_logger.py +930 -0
  80. empathy_os/memory/security/pii_scrubber.py +640 -0
  81. empathy_os/memory/security/secrets_detector.py +678 -0
  82. empathy_os/memory/short_term.py +2119 -0
  83. empathy_os/memory/storage/__init__.py +15 -0
  84. empathy_os/memory/summary_index.py +583 -0
  85. empathy_os/memory/unified.py +619 -0
  86. empathy_os/metrics/__init__.py +12 -0
  87. empathy_os/metrics/prompt_metrics.py +190 -0
  88. empathy_os/models/__init__.py +136 -0
  89. empathy_os/models/__main__.py +13 -0
  90. empathy_os/models/cli.py +655 -0
  91. empathy_os/models/empathy_executor.py +354 -0
  92. empathy_os/models/executor.py +252 -0
  93. empathy_os/models/fallback.py +671 -0
  94. empathy_os/models/provider_config.py +563 -0
  95. empathy_os/models/registry.py +382 -0
  96. empathy_os/models/tasks.py +302 -0
  97. empathy_os/models/telemetry.py +548 -0
  98. empathy_os/models/token_estimator.py +378 -0
  99. empathy_os/models/validation.py +274 -0
  100. empathy_os/monitoring/__init__.py +52 -0
  101. empathy_os/monitoring/alerts.py +23 -0
  102. empathy_os/monitoring/alerts_cli.py +268 -0
  103. empathy_os/monitoring/multi_backend.py +271 -0
  104. empathy_os/monitoring/otel_backend.py +363 -0
  105. empathy_os/optimization/__init__.py +19 -0
  106. empathy_os/optimization/context_optimizer.py +272 -0
  107. empathy_os/plugins/__init__.py +28 -0
  108. empathy_os/plugins/base.py +361 -0
  109. empathy_os/plugins/registry.py +268 -0
  110. empathy_os/project_index/__init__.py +30 -0
  111. empathy_os/project_index/cli.py +335 -0
  112. empathy_os/project_index/crew_integration.py +430 -0
  113. empathy_os/project_index/index.py +425 -0
  114. empathy_os/project_index/models.py +501 -0
  115. empathy_os/project_index/reports.py +473 -0
  116. empathy_os/project_index/scanner.py +538 -0
  117. empathy_os/prompts/__init__.py +61 -0
  118. empathy_os/prompts/config.py +77 -0
  119. empathy_os/prompts/context.py +177 -0
  120. empathy_os/prompts/parser.py +285 -0
  121. empathy_os/prompts/registry.py +313 -0
  122. empathy_os/prompts/templates.py +208 -0
  123. empathy_os/resilience/__init__.py +56 -0
  124. empathy_os/resilience/circuit_breaker.py +256 -0
  125. empathy_os/resilience/fallback.py +179 -0
  126. empathy_os/resilience/health.py +300 -0
  127. empathy_os/resilience/retry.py +209 -0
  128. empathy_os/resilience/timeout.py +135 -0
  129. empathy_os/routing/__init__.py +43 -0
  130. empathy_os/routing/chain_executor.py +433 -0
  131. empathy_os/routing/classifier.py +217 -0
  132. empathy_os/routing/smart_router.py +234 -0
  133. empathy_os/routing/wizard_registry.py +307 -0
  134. empathy_os/trust/__init__.py +28 -0
  135. empathy_os/trust/circuit_breaker.py +579 -0
  136. empathy_os/validation/__init__.py +19 -0
  137. empathy_os/validation/xml_validator.py +281 -0
  138. empathy_os/wizard_factory_cli.py +170 -0
  139. empathy_os/workflows/__init__.py +360 -0
  140. empathy_os/workflows/base.py +1530 -0
  141. empathy_os/workflows/bug_predict.py +962 -0
  142. empathy_os/workflows/code_review.py +960 -0
  143. empathy_os/workflows/code_review_adapters.py +310 -0
  144. empathy_os/workflows/code_review_pipeline.py +720 -0
  145. empathy_os/workflows/config.py +600 -0
  146. empathy_os/workflows/dependency_check.py +648 -0
  147. empathy_os/workflows/document_gen.py +1069 -0
  148. empathy_os/workflows/documentation_orchestrator.py +1205 -0
  149. empathy_os/workflows/health_check.py +679 -0
  150. empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
  151. empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
  152. empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
  153. empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
  154. empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
  155. empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
  156. empathy_os/workflows/manage_documentation.py +804 -0
  157. empathy_os/workflows/new_sample_workflow1.py +146 -0
  158. empathy_os/workflows/new_sample_workflow1_README.md +150 -0
  159. empathy_os/workflows/perf_audit.py +687 -0
  160. empathy_os/workflows/pr_review.py +748 -0
  161. empathy_os/workflows/progress.py +445 -0
  162. empathy_os/workflows/progress_server.py +322 -0
  163. empathy_os/workflows/refactor_plan.py +691 -0
  164. empathy_os/workflows/release_prep.py +808 -0
  165. empathy_os/workflows/research_synthesis.py +404 -0
  166. empathy_os/workflows/secure_release.py +585 -0
  167. empathy_os/workflows/security_adapters.py +297 -0
  168. empathy_os/workflows/security_audit.py +1050 -0
  169. empathy_os/workflows/step_config.py +234 -0
  170. empathy_os/workflows/test5.py +125 -0
  171. empathy_os/workflows/test5_README.md +158 -0
  172. empathy_os/workflows/test_gen.py +1855 -0
  173. empathy_os/workflows/test_lifecycle.py +526 -0
  174. empathy_os/workflows/test_maintenance.py +626 -0
  175. empathy_os/workflows/test_maintenance_cli.py +590 -0
  176. empathy_os/workflows/test_maintenance_crew.py +821 -0
  177. empathy_os/workflows/xml_enhanced_crew.py +285 -0
  178. empathy_software_plugin/cli/__init__.py +120 -0
  179. empathy_software_plugin/cli/inspect.py +362 -0
  180. empathy_software_plugin/cli.py +3 -1
  181. empathy_software_plugin/wizards/__init__.py +42 -0
  182. empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
  183. empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
  184. empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
  185. empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
  186. empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
  187. empathy_software_plugin/wizards/base_wizard.py +288 -0
  188. empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
  189. empathy_software_plugin/wizards/code_review_wizard.py +606 -0
  190. empathy_software_plugin/wizards/debugging/__init__.py +50 -0
  191. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
  192. empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
  193. empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
  194. empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
  195. empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
  196. empathy_software_plugin/wizards/debugging/verification.py +369 -0
  197. empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
  198. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
  199. empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
  200. empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
  201. empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
  202. empathy_software_plugin/wizards/performance/__init__.py +9 -0
  203. empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
  204. empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
  205. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
  206. empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
  207. empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
  208. empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
  209. empathy_software_plugin/wizards/security/__init__.py +32 -0
  210. empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
  211. empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
  212. empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
  213. empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
  214. empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
  215. empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
  216. empathy_software_plugin/wizards/testing/__init__.py +27 -0
  217. empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
  218. empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
  219. empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
  220. empathy_software_plugin/wizards/testing_wizard.py +274 -0
  221. hot_reload/README.md +473 -0
  222. hot_reload/__init__.py +62 -0
  223. hot_reload/config.py +84 -0
  224. hot_reload/integration.py +228 -0
  225. hot_reload/reloader.py +298 -0
  226. hot_reload/watcher.py +179 -0
  227. hot_reload/websocket.py +176 -0
  228. scaffolding/README.md +589 -0
  229. scaffolding/__init__.py +35 -0
  230. scaffolding/__main__.py +14 -0
  231. scaffolding/cli.py +240 -0
  232. test_generator/__init__.py +38 -0
  233. test_generator/__main__.py +14 -0
  234. test_generator/cli.py +226 -0
  235. test_generator/generator.py +325 -0
  236. test_generator/risk_analyzer.py +216 -0
  237. workflow_patterns/__init__.py +33 -0
  238. workflow_patterns/behavior.py +249 -0
  239. workflow_patterns/core.py +76 -0
  240. workflow_patterns/output.py +99 -0
  241. workflow_patterns/registry.py +255 -0
  242. workflow_patterns/structural.py +288 -0
  243. workflow_scaffolding/__init__.py +11 -0
  244. workflow_scaffolding/__main__.py +12 -0
  245. workflow_scaffolding/cli.py +206 -0
  246. workflow_scaffolding/generator.py +265 -0
  247. agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
  248. agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
  249. agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
  250. agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
  251. agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
  252. agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
  253. agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
  254. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
  255. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
  256. agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
  257. agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
  258. agents/compliance_anticipation_agent.py +0 -1422
  259. agents/compliance_db.py +0 -339
  260. agents/epic_integration_wizard.py +0 -530
  261. agents/notifications.py +0 -291
  262. agents/trust_building_behaviors.py +0 -872
  263. empathy_framework-3.7.0.dist-info/RECORD +0 -105
  264. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/WHEEL +0 -0
  265. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/entry_points.txt +0 -0
  266. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/licenses/LICENSE +0 -0
  267. /empathy_os/{monitoring.py → agent_monitoring.py} +0 -0
@@ -0,0 +1,193 @@
1
+ """PatientAssessmentWizard - Generated by Pattern-Compose
2
+
3
+ Domain: healthcare
4
+ Patterns: empathy_level, user_guidance, linear_flow, structured_fields, step_validation, approval, educational_banner, ai_enhancement, config_validation, session_based
5
+ Generated: Auto-generated by Empathy Framework
6
+ """
7
+
8
+ from datetime import datetime
9
+ from typing import Any
10
+ from uuid import uuid4
11
+
12
+ from fastapi import APIRouter, HTTPException
13
+ from pydantic import BaseModel
14
+
15
+ router = APIRouter(
16
+ prefix="/wizards/patient_assessment",
17
+ tags=["wizards"],
18
+ )
19
+
20
+
21
+ # Request/Response Models
22
+ class WizardRequest(BaseModel):
23
+ """Request model for wizard."""
24
+
25
+ input: str
26
+ context: dict[str, Any] | None = None
27
+
28
+
29
+ class WizardResponse(BaseModel):
30
+ """Response model for wizard."""
31
+
32
+ success: bool
33
+ output: str
34
+ wizard_id: str | None = None
35
+ error: str | None = None
36
+
37
+
38
+ # Session storage (Redis in production, memory for development)
39
+ _wizard_sessions: dict[str, dict[str, Any]] = {}
40
+
41
+
42
+ @router.post("/start")
43
+ async def start_wizard():
44
+ """Start patient_assessment wizard session.
45
+
46
+ Returns wizard_id and first step configuration.
47
+ """
48
+ wizard_id = str(uuid4())
49
+
50
+ session_data = {
51
+ "wizard_id": wizard_id,
52
+ "wizard_type": "patient_assessment",
53
+ "current_step": 1,
54
+ "total_steps": 5, # TODO: Adjust based on your wizard
55
+ "collected_data": {},
56
+ "created_at": datetime.now().isoformat(),
57
+ }
58
+
59
+ _wizard_sessions[wizard_id] = session_data
60
+
61
+ return {
62
+ "wizard_id": wizard_id,
63
+ "current_step": 1,
64
+ "total_steps": 5,
65
+ "message": "Wizard started successfully",
66
+ }
67
+
68
+
69
+ @router.post("/{wizard_id}/step")
70
+ async def submit_step(wizard_id: str, step_data: dict[str, Any]):
71
+ """Submit data for current step.
72
+
73
+ Validates step sequence and stores data.
74
+ """
75
+ if wizard_id not in _wizard_sessions:
76
+ raise HTTPException(404, "Wizard session not found")
77
+
78
+ session = _wizard_sessions[wizard_id]
79
+ current_step = session["current_step"]
80
+ total_steps = session["total_steps"]
81
+
82
+ # Validate step number
83
+ submitted_step = step_data.get("step", current_step)
84
+ if submitted_step != current_step:
85
+ raise HTTPException(422, f"Expected step {current_step}, got step {submitted_step}")
86
+
87
+ # Store data
88
+ session["collected_data"].update(step_data.get("data", {}))
89
+ session["updated_at"] = datetime.now().isoformat()
90
+
91
+ # Advance to next step
92
+ if current_step < total_steps:
93
+ session["current_step"] = current_step + 1
94
+
95
+ return {
96
+ "wizard_id": wizard_id,
97
+ "current_step": session["current_step"],
98
+ "total_steps": total_steps,
99
+ "message": f"Step {current_step} completed",
100
+ }
101
+
102
+
103
+ @router.post("/{wizard_id}/preview")
104
+ async def preview_report(wizard_id: str):
105
+ """Generate preview without finalizing.
106
+
107
+ Allows user to review before explicit approval.
108
+ """
109
+ if wizard_id not in _wizard_sessions:
110
+ raise HTTPException(404, "Wizard session not found")
111
+
112
+ session = _wizard_sessions[wizard_id]
113
+
114
+ if session["current_step"] != session["total_steps"]:
115
+ raise HTTPException(400, "Complete all steps before preview")
116
+
117
+ # Generate preview
118
+ preview = _generate_report(session["collected_data"])
119
+ session["preview_report"] = preview
120
+ session["preview_generated_at"] = datetime.now().isoformat()
121
+
122
+ return {
123
+ "preview": preview,
124
+ "message": "Preview generated. Review and approve to finalize.",
125
+ }
126
+
127
+
128
+ @router.post("/{wizard_id}/save")
129
+ async def save_report(wizard_id: str, approval: dict[str, Any]):
130
+ """Finalize report with user approval.
131
+
132
+ Requires preview generated and explicit user approval.
133
+ """
134
+ if wizard_id not in _wizard_sessions:
135
+ raise HTTPException(404, "Wizard session not found")
136
+
137
+ session = _wizard_sessions[wizard_id]
138
+
139
+ # Verify preview generated
140
+ if "preview_report" not in session:
141
+ raise HTTPException(400, "Must generate preview before saving. Call /preview first.")
142
+
143
+ # Verify user approval
144
+ if not approval.get("user_approved", False):
145
+ raise HTTPException(400, "User approval required. Set 'user_approved': true")
146
+
147
+ # Mark as complete
148
+ session["completed"] = True
149
+ session["completed_at"] = datetime.now().isoformat()
150
+ session["final_report"] = session["preview_report"]
151
+
152
+ return {
153
+ "wizard_id": wizard_id,
154
+ "completed": True,
155
+ "report": session["final_report"],
156
+ "message": "Report finalized successfully",
157
+ }
158
+
159
+
160
+ @router.get("/{wizard_id}/report")
161
+ async def get_report(wizard_id: str):
162
+ """Retrieve completed report.
163
+
164
+ Only available after wizard is completed.
165
+ """
166
+ if wizard_id not in _wizard_sessions:
167
+ raise HTTPException(404, "Wizard session not found")
168
+
169
+ session = _wizard_sessions[wizard_id]
170
+
171
+ if not session.get("completed", False):
172
+ raise HTTPException(422, "Wizard not yet completed")
173
+
174
+ return {
175
+ "wizard_id": wizard_id,
176
+ "report": _generate_report(session["collected_data"]),
177
+ }
178
+
179
+
180
+ def _generate_report(collected_data: dict[str, Any]) -> dict[str, Any]:
181
+ """Generate report from collected data.
182
+
183
+ TODO: Customize report generation for your wizard.
184
+ """
185
+ return {
186
+ "data": collected_data,
187
+ "generated_at": datetime.now().isoformat(),
188
+ "wizard_type": "patient_assessment",
189
+ }
190
+
191
+
192
+ # Export router
193
+ __all__ = ["router"]
@@ -0,0 +1,194 @@
1
+ """Technology/IT Wizard - System Security Compliant AI Assistant
2
+
3
+ Specialized wizard for IT and technology operations with system security,
4
+ infrastructure data protection, and comprehensive audit logging.
5
+
6
+ Key Features:
7
+ - System and infrastructure data protection
8
+ - Secrets detection (API keys, credentials, tokens)
9
+ - Security log analysis
10
+ - Comprehensive audit trail
11
+ - DevOps and infrastructure security
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
+ # Technology/IT PII patterns
28
+ TECHNOLOGY_PII_PATTERNS = [
29
+ # Standard PII
30
+ "email",
31
+ "phone",
32
+ "ip_address",
33
+ # Technology-specific
34
+ "api_key",
35
+ "access_token",
36
+ "ssh_key",
37
+ "database_credential",
38
+ ]
39
+
40
+
41
+ class TechnologyWizard(BaseWizard):
42
+ """System security compliant technology and IT AI assistant
43
+
44
+ Implements data protection for IT operations:
45
+ 1. Infrastructure data detection and protection
46
+ 2. Enhanced secrets detection (API keys, credentials)
47
+ 3. Encryption for sensitive system data
48
+ 4. Comprehensive audit logging
49
+ 5. 1-year retention
50
+ 6. Access control enforcement
51
+
52
+ Example:
53
+ >>> from empathy_llm_toolkit import EmpathyLLM
54
+ >>> from empathy_llm_toolkit.wizards import TechnologyWizard
55
+ >>>
56
+ >>> llm = EmpathyLLM(
57
+ ... provider="anthropic",
58
+ ... api_key=os.getenv("ANTHROPIC_API_KEY"),
59
+ ... enable_security=True,
60
+ ... )
61
+ >>>
62
+ >>> wizard = TechnologyWizard(llm)
63
+ >>>
64
+ >>> result = await wizard.process(
65
+ ... user_input="Help me troubleshoot this infrastructure issue",
66
+ ... user_id="sysadmin@company.com"
67
+ ... )
68
+
69
+ """
70
+
71
+ def __init__(
72
+ self,
73
+ llm: EmpathyLLM,
74
+ custom_pii_patterns: list[str] | None = None,
75
+ ):
76
+ """Initialize technology/IT wizard
77
+
78
+ Args:
79
+ llm: EmpathyLLM instance (security should be enabled)
80
+ custom_pii_patterns: Additional organization-specific patterns
81
+
82
+ """
83
+ pii_patterns = TECHNOLOGY_PII_PATTERNS.copy()
84
+
85
+ if custom_pii_patterns:
86
+ pii_patterns.extend(custom_pii_patterns)
87
+
88
+ config = WizardConfig(
89
+ name="Technology & IT Assistant",
90
+ description="System security compliant AI assistant for IT operations",
91
+ domain="technology",
92
+ default_empathy_level=3, # Proactive
93
+ enable_security=True,
94
+ pii_patterns=pii_patterns,
95
+ enable_secrets_detection=True,
96
+ block_on_secrets=True, # CRITICAL for IT security
97
+ audit_all_access=True,
98
+ retention_days=365, # 1 year for system logs
99
+ default_classification="INTERNAL",
100
+ auto_classify=True,
101
+ )
102
+
103
+ super().__init__(llm, config)
104
+
105
+ if not llm.enable_security:
106
+ logger.warning(
107
+ "TechnologyWizard initialized with security DISABLED. "
108
+ "IT security requires enable_security=True in EmpathyLLM.",
109
+ )
110
+
111
+ logger.info(
112
+ f"TechnologyWizard initialized: {len(pii_patterns)} PII patterns, "
113
+ f"empathy level={config.default_empathy_level}, security={llm.enable_security}",
114
+ )
115
+
116
+ def _build_system_prompt(self, user_input: str = "") -> str:
117
+ """Build technology/IT system prompt
118
+
119
+ Uses XML-enhanced prompts if enabled for improved precision
120
+ and reduced errors in critical IT operations.
121
+ """
122
+ # Check if XML prompts are enabled
123
+ if self._is_xml_enabled():
124
+ # Use XML-enhanced prompt for better structure
125
+ return self._render_xml_prompt(
126
+ role="system security compliant AI technology and IT assistant for infrastructure operations",
127
+ goal="Assist IT professionals with secure, reliable system administration, infrastructure design, and DevOps automation",
128
+ instructions=[
129
+ "Assist IT professionals with system administration, troubleshooting, and operations",
130
+ "Support infrastructure design, optimization, and scalability planning",
131
+ "Provide security analysis, incident response guidance, and threat mitigation",
132
+ "Help with DevOps automation, CI/CD pipelines, and deployment strategies",
133
+ "Base recommendations on industry best practices (NIST, CIS, OWASP)",
134
+ "Acknowledge compliance requirements (SOC2, ISO 27001, PCI-DSS, GDPR)",
135
+ ],
136
+ constraints=[
137
+ "CRITICAL: System data automatically protected - never request or display API keys, credentials, passwords, tokens",
138
+ "You are an IT support tool, NOT a replacement for sysadmin or security expert judgment",
139
+ "CANNOT make production deployment, security policy, or infrastructure decisions autonomously",
140
+ "Always defer to IT leadership for critical infrastructure changes",
141
+ "Maintain strict confidentiality of infrastructure data",
142
+ "System security and data protection paramount - all interactions logged for audit",
143
+ ],
144
+ input_type="it_query",
145
+ input_payload=user_input if user_input else "[IT professional query]",
146
+ extra={
147
+ "domain": "Technology / IT Operations / DevOps / Infrastructure",
148
+ "empathy_level": self.config.default_empathy_level,
149
+ "secrets_detection_enabled": self.config.enable_secrets_detection,
150
+ "retention_days": self.config.retention_days,
151
+ },
152
+ )
153
+ else:
154
+ # Fallback to legacy plain text prompt
155
+ return """You are a system security compliant AI technology and IT assistant.
156
+
157
+ **Domain**: Technology / IT Operations / DevOps / Infrastructure
158
+
159
+ **Your Role**:
160
+ - Assist IT professionals with system administration and troubleshooting
161
+ - Support infrastructure design and optimization
162
+ - Help with security analysis and incident response
163
+ - Provide guidance on DevOps and automation
164
+
165
+ **Security**:
166
+ - All system information is automatically protected before you see it
167
+ - Never request or display API keys, credentials, passwords, or tokens
168
+ - Maintain strict confidentiality of infrastructure data
169
+ - All interactions comply with IT security policies
170
+
171
+ **Technology Guidelines**:
172
+ - Base recommendations on industry best practices and security standards
173
+ - Acknowledge compliance requirements (SOC2, ISO 27001, etc.)
174
+ - Provide practical technical guidance
175
+ - Follow DevOps and SRE principles
176
+
177
+ **Communication Style**:
178
+ - Technical and precise
179
+ - Clear and actionable
180
+ - Security-focused
181
+ - Problem-solving oriented
182
+
183
+ **Important Disclaimers**:
184
+ - You are an IT support tool, not a replacement for sysadmin judgment
185
+ - Cannot make production deployment or security policy decisions
186
+ - Not a substitute for qualified IT professionals and security experts
187
+ - Always defer to IT leadership for critical infrastructure decisions
188
+
189
+ Remember: System security and data protection are paramount. Interactions are logged.
190
+ """
191
+
192
+ def get_pii_patterns(self) -> list[str]:
193
+ """Get list of technology PII patterns being detected"""
194
+ return self.config.pii_patterns.copy()
empathy_os/__init__.py CHANGED
@@ -59,28 +59,29 @@ __version__ = "1.0.0-beta"
59
59
  __author__ = "Patrick Roebuck"
60
60
  __email__ = "hello@deepstudy.ai"
61
61
 
62
+ from .agent_monitoring import AgentMetrics, AgentMonitor, TeamMetrics
62
63
  from .config import EmpathyConfig, load_config
63
64
  from .coordination import (
64
- AgentCoordinator,
65
- AgentTask,
66
- ConflictResolver,
67
- ResolutionResult,
68
- ResolutionStrategy,
69
- TeamPriorities,
70
- TeamSession,
65
+ AgentCoordinator,
66
+ AgentTask,
67
+ ConflictResolver,
68
+ ResolutionResult,
69
+ ResolutionStrategy,
70
+ TeamPriorities,
71
+ TeamSession,
71
72
  )
72
73
  from .core import EmpathyOS
73
74
  from .emergence import EmergenceDetector
74
75
  from .exceptions import (
75
- CollaborationStateError,
76
- ConfidenceThresholdError,
77
- EmpathyFrameworkError,
78
- EmpathyLevelError,
79
- FeedbackLoopError,
80
- LeveragePointError,
81
- PatternNotFoundError,
82
- TrustThresholdError,
83
- ValidationError,
76
+ CollaborationStateError,
77
+ ConfidenceThresholdError,
78
+ EmpathyFrameworkError,
79
+ EmpathyLevelError,
80
+ FeedbackLoopError,
81
+ LeveragePointError,
82
+ PatternNotFoundError,
83
+ TrustThresholdError,
84
+ ValidationError,
84
85
  )
85
86
  from .feedback_loops import FeedbackLoopDetector
86
87
  from .levels import Level1Reactive, Level2Guided, Level3Proactive, Level4Anticipatory, Level5Systems
@@ -89,43 +90,42 @@ from .logging_config import LoggingConfig, get_logger
89
90
 
90
91
  # Memory module (unified short-term + long-term + security)
91
92
  from .memory import (
92
- AccessTier,
93
- AgentCredentials, # Memory module imports
94
- AuditEvent,
95
- AuditLogger,
96
- Classification,
97
- ClassificationRules,
98
- ClaudeMemoryConfig,
99
- ClaudeMemoryLoader,
100
- ConflictContext,
101
- EncryptionManager,
102
- Environment,
103
- MemDocsStorage,
104
- MemoryConfig,
105
- MemoryPermissionError,
106
- PatternMetadata,
107
- PIIDetection,
108
- PIIPattern,
109
- PIIScrubber,
110
- RedisShortTermMemory,
111
- SecretDetection,
112
- SecretsDetector,
113
- SecretType,
114
- SecureMemDocsIntegration,
115
- SecurePattern,
116
- SecurityError,
117
- SecurityViolation,
118
- Severity,
119
- StagedPattern,
120
- TTLStrategy,
121
- UnifiedMemory,
122
- check_redis_connection,
123
- detect_secrets,
124
- get_railway_redis,
125
- get_redis_config,
126
- get_redis_memory,
93
+ AccessTier,
94
+ AgentCredentials, # Memory module imports
95
+ AuditEvent,
96
+ AuditLogger,
97
+ Classification,
98
+ ClassificationRules,
99
+ ClaudeMemoryConfig,
100
+ ClaudeMemoryLoader,
101
+ ConflictContext,
102
+ EncryptionManager,
103
+ Environment,
104
+ MemDocsStorage,
105
+ MemoryConfig,
106
+ MemoryPermissionError,
107
+ PatternMetadata,
108
+ PIIDetection,
109
+ PIIPattern,
110
+ PIIScrubber,
111
+ RedisShortTermMemory,
112
+ SecretDetection,
113
+ SecretsDetector,
114
+ SecretType,
115
+ SecureMemDocsIntegration,
116
+ SecurePattern,
117
+ SecurityError,
118
+ SecurityViolation,
119
+ Severity,
120
+ StagedPattern,
121
+ TTLStrategy,
122
+ UnifiedMemory,
123
+ check_redis_connection,
124
+ detect_secrets,
125
+ get_railway_redis,
126
+ get_redis_config,
127
+ get_redis_memory,
127
128
  )
128
- from .monitoring import AgentMetrics, AgentMonitor, TeamMetrics
129
129
  from .pattern_library import Pattern, PatternLibrary, PatternMatch
130
130
  from .persistence import MetricsCollector, PatternPersistence, StateManager
131
131
  from .trust_building import TrustBuildingBehaviors
@@ -0,0 +1,13 @@
1
+ """Adaptive prompting system for dynamic model and compression selection.
2
+
3
+ Copyright 2026 Smart-AI-Memory
4
+ Licensed under Fair Source License 0.9
5
+ """
6
+
7
+ from empathy_os.adaptive.task_complexity import (
8
+ ComplexityScore,
9
+ TaskComplexity,
10
+ TaskComplexityScorer,
11
+ )
12
+
13
+ __all__ = ["TaskComplexity", "ComplexityScore", "TaskComplexityScorer"]
@@ -0,0 +1,127 @@
1
+ """Task complexity scoring for adaptive prompt selection.
2
+
3
+ Uses simple heuristics (token count, LOC) to classify tasks as
4
+ simple, moderate, complex, or very complex, enabling dynamic
5
+ model tier and compression level selection.
6
+
7
+ Copyright 2026 Smart-AI-Memory
8
+ Licensed under Fair Source License 0.9
9
+ """
10
+
11
+ from dataclasses import dataclass
12
+ from enum import Enum
13
+
14
+ try:
15
+ import tiktoken
16
+ except ImportError:
17
+ tiktoken = None # type: ignore[assignment]
18
+
19
+
20
+ class TaskComplexity(Enum):
21
+ """Task complexity levels for adaptive prompting."""
22
+
23
+ SIMPLE = "simple" # <100 tokens, <50 LOC
24
+ MODERATE = "moderate" # 100-500 tokens, 50-200 LOC
25
+ COMPLEX = "complex" # 500-2000 tokens, 200-1000 LOC
26
+ VERY_COMPLEX = "very_complex" # >2000 tokens, >1000 LOC
27
+
28
+
29
+ @dataclass
30
+ class ComplexityScore:
31
+ """Task complexity scoring result.
32
+
33
+ Attributes:
34
+ token_count: Estimated input tokens
35
+ line_count: Lines of code in context
36
+ file_count: Number of files involved
37
+ complexity_level: Classified complexity
38
+ confidence: Confidence in classification (0-1)
39
+ """
40
+
41
+ token_count: int
42
+ line_count: int
43
+ file_count: int
44
+ complexity_level: TaskComplexity
45
+ confidence: float
46
+
47
+
48
+ class TaskComplexityScorer:
49
+ """Scores task complexity using simple heuristics.
50
+
51
+ Uses token counting (via tiktoken if available) and line counting
52
+ to estimate task complexity for adaptive prompt selection.
53
+
54
+ Usage:
55
+ scorer = TaskComplexityScorer()
56
+ score = scorer.score_task(
57
+ description="Refactor authentication module",
58
+ context=source_code,
59
+ files=["auth.py", "session.py"]
60
+ )
61
+
62
+ if score.complexity_level == TaskComplexity.VERY_COMPLEX:
63
+ use_premium_model()
64
+ """
65
+
66
+ def __init__(self):
67
+ """Initialize complexity scorer."""
68
+ if tiktoken:
69
+ self.tokenizer = tiktoken.get_encoding("cl100k_base")
70
+ else:
71
+ self.tokenizer = None
72
+
73
+ def score_task(
74
+ self,
75
+ description: str,
76
+ context: str | None = None,
77
+ files: list[str] | None = None,
78
+ ) -> ComplexityScore:
79
+ """Score task complexity.
80
+
81
+ Args:
82
+ description: Task description
83
+ context: Optional context (code, docs, etc.)
84
+ files: Optional list of file paths
85
+
86
+ Returns:
87
+ ComplexityScore with classification and metrics
88
+ """
89
+ # Count tokens
90
+ if self.tokenizer:
91
+ token_count = len(self.tokenizer.encode(description))
92
+ if context:
93
+ token_count += len(self.tokenizer.encode(context))
94
+ else:
95
+ # Fallback: rough estimate (4 chars per token)
96
+ token_count = len(description) // 4
97
+ if context:
98
+ token_count += len(context) // 4
99
+
100
+ # Count lines of code
101
+ line_count = 0
102
+ if context:
103
+ line_count = len(context.split("\n"))
104
+
105
+ # Count files
106
+ file_count = len(files) if files else 0
107
+
108
+ # Determine complexity level using thresholds
109
+ if token_count < 100 and line_count < 50:
110
+ complexity = TaskComplexity.SIMPLE
111
+ elif token_count < 500 and line_count < 200:
112
+ complexity = TaskComplexity.MODERATE
113
+ elif token_count < 2000 and line_count < 1000:
114
+ complexity = TaskComplexity.COMPLEX
115
+ else:
116
+ complexity = TaskComplexity.VERY_COMPLEX
117
+
118
+ # Confidence is moderate for simple heuristics
119
+ confidence = 0.8 if self.tokenizer else 0.6
120
+
121
+ return ComplexityScore(
122
+ token_count=token_count,
123
+ line_count=line_count,
124
+ file_count=file_count,
125
+ complexity_level=complexity,
126
+ confidence=confidence,
127
+ )