empathy-framework 3.3.2__py3-none-any.whl → 3.3.3__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: empathy-framework
3
- Version: 3.3.2
3
+ Version: 3.3.3
4
4
  Summary: AI collaboration framework with persistent memory, anticipatory intelligence, code inspection, and multi-agent orchestration
5
5
  Author-email: Patrick Roebuck <patrick.roebuck@smartAImemory.com>
6
6
  Maintainer-email: Smart-AI-Memory <patrick.roebuck@smartAImemory.com>
@@ -32,7 +32,7 @@ coach_wizards/refactoring_wizard.py,sha256=1AuRyX45KI63n_-fvvbRXamqvPbrB-O1B7TPP
32
32
  coach_wizards/scaling_wizard.py,sha256=yLULCkflLoBKS4hOSBPQuKKGBGHgKExnuEp5WLTIY-8,2596
33
33
  coach_wizards/security_wizard.py,sha256=tr1iq0egAMLCM-wOFhTDN5dHQRFuhSshXSkv17Jm7eM,2603
34
34
  coach_wizards/testing_wizard.py,sha256=M2RtaTa1WHsk42svJAEZpLySU3PXJJZn2jigouMJrG0,2561
35
- empathy_framework-3.3.2.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
35
+ empathy_framework-3.3.3.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
36
36
  empathy_healthcare_plugin/__init__.py,sha256=FvVcD7WQTlmCCLgSPfM-FPT2l-ma1oAACBZWhtYFAUA,296
37
37
  empathy_healthcare_plugin/protocols/cardiac.json,sha256=uShOvI2RQJYLZacLT2R_aHfsjvJdyCu_gYfpMfK3N74,2088
38
38
  empathy_healthcare_plugin/protocols/post_operative.json,sha256=nqh3ydPY8FNSLv-Q3QmH8Dsyc1c4LvQxUSP84B8W6xk,2021
@@ -54,10 +54,10 @@ empathy_llm_toolkit/session_status.py,sha256=pJwqHwbVwR2Q6coRkB_34CWRCMoF-r4-YBt
54
54
  empathy_llm_toolkit/state.py,sha256=oi8bPqUHkmfgkfT4_4eD1ndIGH_THyLQDYlIWZLUx5s,8051
55
55
  empathy_llm_toolkit/htmlcov/status.json,sha256=emOFm_dTJcNl_Bw_lh62qNbnU6yzhne8TWlQkrPVdrk,8544
56
56
  empathy_llm_toolkit/security/htmlcov/status.json,sha256=ELS9bn59azqfEyyokI-nV4gQLPQh4bVwHsmhVbdrKYI,4402
57
- empathy_os/__init__.py,sha256=pvaca4oCfdL4MG5WO-RKJeXBOk0oj02Mhh_E0h7zSyY,5896
57
+ empathy_os/__init__.py,sha256=4WGijLjIQ6xHlSWxl5hb9FxTU-EJB1-Kel7gf3LcQMI,7069
58
58
  empathy_os/cli.py,sha256=k3r_0as7mtOPnLyp3cNKRQiLSKYJqFlmYuRuhdiRrwM,87001
59
59
  empathy_os/cli_unified.py,sha256=TvfsheONim8ETegZo3KJA2vBtFD0fn0rRikUz83w1Dg,14021
60
- empathy_os/config.py,sha256=4HbsxrXTgZrvuhwA5MojMQHhhVArCNBsOkFMf_ytDj0,12736
60
+ empathy_os/config.py,sha256=tPM9gsVE0y8DsC_cxfZxyngq2cKiWN1F6ezKGKON5jI,13709
61
61
  empathy_os/coordination.py,sha256=0jKt2DzzJmFjpXJs4pMXBcUktCFHsa9i3rkXzXxykGk,28656
62
62
  empathy_os/core.py,sha256=kL_37DajqIV1_b0ldee8rGG0xUTrSzAqYuQ4dowSxuw,53229
63
63
  empathy_os/cost_tracker.py,sha256=VwjkyKEm-gbmyO7wQ88t82RNZfc-LCp0vpK699Giqp0,12575
@@ -76,10 +76,10 @@ empathy_os/redis_config.py,sha256=L8KoHFwhl-_twSswMfELUgOmANOTPRB9Yj8VXuxfSb4,59
76
76
  empathy_os/redis_memory.py,sha256=lWS_F4FeDkmEI-jIgkPTzs3D8TTDB0627WsOxYMT-XM,23276
77
77
  empathy_os/templates.py,sha256=ap4u9i5O9KA83wWLfoUCS7phDHKb6wj8M1Zcm218lN0,17069
78
78
  empathy_os/trust_building.py,sha256=8ZvNwJmeDyKeUIkk_331M9jwKcqrsn6K43gnGtnIXbM,18790
79
- empathy_os/workflow_commands.py,sha256=PmU2fKW6__Wl0UVrqVW2Byb0yMFvUMIzEyYv8S48iZA,21904
79
+ empathy_os/workflow_commands.py,sha256=ZfACBQKjaAfEZER4yRRsFVw9IfGhhPVGwQyBjD1HUAk,21904
80
80
  empathy_software_plugin/SOFTWARE_PLUGIN_README.md,sha256=RXIOB9Mt-8JrfGAA3ZUuRPT34sThubrwUgg5iNcSKIc,22591
81
81
  empathy_software_plugin/__init__.py,sha256=Ylyj95pSsoN9Zasam96DH61uBHoMJh3kbhO7k_VaCWo,310
82
- empathy_software_plugin/cli.py,sha256=GrZWpnFJ9allM9sYrh8rSxSlVDU6RZVnEy4FYg-dSG8,22366
82
+ empathy_software_plugin/cli.py,sha256=N48zwVs4EfGX-69PqhiMJ77H5TS_BpCbLVJ6JTTkypw,22414
83
83
  empathy_software_plugin/plugin.py,sha256=NNZTILE5Npo4SahA4F_3awIizLHI32_wWTFAutvmsqQ,6700
84
84
  wizards/__init__.py,sha256=5JJ6rtS5mwJtuZIgO2sYHZlCy0XJP2eyyCK5zMD6ZAc,2452
85
85
  wizards/admission_assessment_wizard.py,sha256=-Th9bwu6Sd6V2jA4fciK35QpoFc40U1quZHDMdOH93U,23609
@@ -98,8 +98,8 @@ wizards/sbar_wizard.py,sha256=CJ63JAXwcfBf6C3aYyxY2LODbARP9GPl0ZGJWLbx88E,21790
98
98
  wizards/shift_handoff_wizard.py,sha256=SkoNB0nLQGg92yz4j1j3NBR2mGVe_rw1pTjOFDy-JH0,19092
99
99
  wizards/soap_note_wizard.py,sha256=DBzuuuOvIONhwdfn8jaE4PCuGeKsFwM65XTb6gKFIy4,23572
100
100
  wizards/treatment_plan.py,sha256=t2Qk5eCa1gobEUaBztnwem_p9OuJK5BKqJ-Po8vXuns,512
101
- empathy_framework-3.3.2.dist-info/METADATA,sha256=0759VJYAHhsg8gLS31LhFkG8TjzLTSXcVEOKAMX4Lqk,28781
102
- empathy_framework-3.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
- empathy_framework-3.3.2.dist-info/entry_points.txt,sha256=zMu7sKCiLndbEEXjTecltS-1P_JZoEUKrifuRBBbroc,1268
104
- empathy_framework-3.3.2.dist-info/top_level.txt,sha256=8zHB-_f0MI2K55LIEjCeaFNcog3_KgLBa_dDfzE8ESI,110
105
- empathy_framework-3.3.2.dist-info/RECORD,,
101
+ empathy_framework-3.3.3.dist-info/METADATA,sha256=RyG6jGb_KTSrLrIT5ueZ5tckAWXXSTToyR37ePnVPh8,28781
102
+ empathy_framework-3.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
+ empathy_framework-3.3.3.dist-info/entry_points.txt,sha256=zMu7sKCiLndbEEXjTecltS-1P_JZoEUKrifuRBBbroc,1268
104
+ empathy_framework-3.3.3.dist-info/top_level.txt,sha256=8zHB-_f0MI2K55LIEjCeaFNcog3_KgLBa_dDfzE8ESI,110
105
+ empathy_framework-3.3.3.dist-info/RECORD,,
empathy_os/__init__.py CHANGED
@@ -62,26 +62,26 @@ __email__ = "hello@deepstudy.ai"
62
62
 
63
63
  from .config import EmpathyConfig, load_config
64
64
  from .coordination import (
65
- AgentCoordinator,
66
- AgentTask,
67
- ConflictResolver,
68
- ResolutionResult,
69
- ResolutionStrategy,
70
- TeamPriorities,
71
- TeamSession,
65
+ AgentCoordinator,
66
+ AgentTask,
67
+ ConflictResolver,
68
+ ResolutionResult,
69
+ ResolutionStrategy,
70
+ TeamPriorities,
71
+ TeamSession,
72
72
  )
73
73
  from .core import EmpathyOS
74
74
  from .emergence import EmergenceDetector
75
75
  from .exceptions import (
76
- CollaborationStateError,
77
- ConfidenceThresholdError,
78
- EmpathyFrameworkError,
79
- EmpathyLevelError,
80
- FeedbackLoopError,
81
- LeveragePointError,
82
- PatternNotFoundError,
83
- TrustThresholdError,
84
- ValidationError,
76
+ CollaborationStateError,
77
+ ConfidenceThresholdError,
78
+ EmpathyFrameworkError,
79
+ EmpathyLevelError,
80
+ FeedbackLoopError,
81
+ LeveragePointError,
82
+ PatternNotFoundError,
83
+ TrustThresholdError,
84
+ ValidationError,
85
85
  )
86
86
  from .feedback_loops import FeedbackLoopDetector
87
87
  from .levels import Level1Reactive, Level2Guided, Level3Proactive, Level4Anticipatory, Level5Systems
@@ -90,41 +90,41 @@ from .logging_config import LoggingConfig, get_logger
90
90
 
91
91
  # Memory module (unified short-term + long-term + security)
92
92
  from .memory import (
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,
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,
128
128
  )
129
129
  from .monitoring import AgentMetrics, AgentMonitor, TeamMetrics
130
130
  from .pattern_library import Pattern, PatternLibrary, PatternMatch
empathy_os/config.py CHANGED
@@ -95,6 +95,12 @@ class EmpathyConfig:
95
95
  Example:
96
96
  >>> config = EmpathyConfig.from_yaml("empathy.config.yml")
97
97
  >>> empathy = EmpathyOS(config=config)
98
+
99
+ Note:
100
+ Unknown fields in the YAML file are silently ignored.
101
+ This allows config files to contain settings for other
102
+ components (e.g., model_preferences, workflows) without
103
+ breaking EmpathyConfig loading.
98
104
  """
99
105
  if not YAML_AVAILABLE:
100
106
  raise ImportError(
@@ -104,7 +110,14 @@ class EmpathyConfig:
104
110
  with open(filepath) as f:
105
111
  data = yaml.safe_load(f)
106
112
 
107
- return cls(**data)
113
+ # Filter to only known fields (gracefully ignore unknown fields like
114
+ # 'provider', 'model_preferences', 'workflows', etc.)
115
+ from dataclasses import fields as dataclass_fields
116
+
117
+ valid_fields = {f.name for f in dataclass_fields(cls)}
118
+ filtered_data = {k: v for k, v in data.items() if k in valid_fields}
119
+
120
+ return cls(**filtered_data)
108
121
 
109
122
  @classmethod
110
123
  def from_json(cls, filepath: str) -> "EmpathyConfig":
@@ -120,11 +133,20 @@ class EmpathyConfig:
120
133
  Example:
121
134
  >>> config = EmpathyConfig.from_json("empathy.config.json")
122
135
  >>> empathy = EmpathyOS(config=config)
136
+
137
+ Note:
138
+ Unknown fields in the JSON file are silently ignored.
123
139
  """
124
140
  with open(filepath) as f:
125
141
  data = json.load(f)
126
142
 
127
- return cls(**data)
143
+ # Filter to only known fields (gracefully ignore unknown fields)
144
+ from dataclasses import fields as dataclass_fields
145
+
146
+ valid_fields = {f.name for f in dataclass_fields(cls)}
147
+ filtered_data = {k: v for k, v in data.items() if k in valid_fields}
148
+
149
+ return cls(**filtered_data)
128
150
 
129
151
  @classmethod
130
152
  def from_env(cls, prefix: str = "EMPATHY_") -> "EmpathyConfig":
@@ -346,8 +346,8 @@ def ship_workflow(
346
346
  print("5. Syncing patterns to Claude Code...")
347
347
  # Import here to avoid circular imports
348
348
  try:
349
- from empathy_llm_toolkit.cli.sync_claude import ( # type: ignore[attr-defined]
350
- sync_patterns_to_claude,
349
+ from empathy_llm_toolkit.cli.sync_claude import (
350
+ sync_patterns_to_claude, # type: ignore[attr-defined]
351
351
  )
352
352
 
353
353
  result = sync_patterns_to_claude(
@@ -655,7 +655,9 @@ def scan_command():
655
655
  severity_icon = (
656
656
  "🔴"
657
657
  if issue.severity == "high"
658
- else "🟡" if issue.severity == "medium" else "🔵"
658
+ else "🟡"
659
+ if issue.severity == "medium"
660
+ else "🔵"
659
661
  )
660
662
  print(f" {severity_icon} Line {issue.line_number}: {issue.message}")
661
663
  if len(result.issues) > 3: