empathy-framework 4.6.6__py3-none-any.whl → 4.7.0__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 (247) hide show
  1. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/METADATA +7 -6
  2. empathy_framework-4.7.0.dist-info/RECORD +354 -0
  3. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/top_level.txt +0 -2
  4. empathy_healthcare_plugin/monitors/monitoring/__init__.py +9 -9
  5. empathy_llm_toolkit/agent_factory/__init__.py +6 -6
  6. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +7 -10
  7. empathy_llm_toolkit/agents_md/__init__.py +22 -0
  8. empathy_llm_toolkit/agents_md/loader.py +218 -0
  9. empathy_llm_toolkit/agents_md/parser.py +271 -0
  10. empathy_llm_toolkit/agents_md/registry.py +307 -0
  11. empathy_llm_toolkit/commands/__init__.py +51 -0
  12. empathy_llm_toolkit/commands/context.py +375 -0
  13. empathy_llm_toolkit/commands/loader.py +301 -0
  14. empathy_llm_toolkit/commands/models.py +231 -0
  15. empathy_llm_toolkit/commands/parser.py +371 -0
  16. empathy_llm_toolkit/commands/registry.py +429 -0
  17. empathy_llm_toolkit/config/__init__.py +8 -8
  18. empathy_llm_toolkit/config/unified.py +3 -7
  19. empathy_llm_toolkit/context/__init__.py +22 -0
  20. empathy_llm_toolkit/context/compaction.py +455 -0
  21. empathy_llm_toolkit/context/manager.py +434 -0
  22. empathy_llm_toolkit/hooks/__init__.py +24 -0
  23. empathy_llm_toolkit/hooks/config.py +306 -0
  24. empathy_llm_toolkit/hooks/executor.py +289 -0
  25. empathy_llm_toolkit/hooks/registry.py +302 -0
  26. empathy_llm_toolkit/hooks/scripts/__init__.py +39 -0
  27. empathy_llm_toolkit/hooks/scripts/evaluate_session.py +201 -0
  28. empathy_llm_toolkit/hooks/scripts/first_time_init.py +285 -0
  29. empathy_llm_toolkit/hooks/scripts/pre_compact.py +207 -0
  30. empathy_llm_toolkit/hooks/scripts/session_end.py +183 -0
  31. empathy_llm_toolkit/hooks/scripts/session_start.py +163 -0
  32. empathy_llm_toolkit/hooks/scripts/suggest_compact.py +225 -0
  33. empathy_llm_toolkit/learning/__init__.py +30 -0
  34. empathy_llm_toolkit/learning/evaluator.py +438 -0
  35. empathy_llm_toolkit/learning/extractor.py +514 -0
  36. empathy_llm_toolkit/learning/storage.py +560 -0
  37. empathy_llm_toolkit/providers.py +4 -11
  38. empathy_llm_toolkit/security/__init__.py +17 -17
  39. empathy_llm_toolkit/utils/tokens.py +2 -5
  40. empathy_os/__init__.py +202 -70
  41. empathy_os/cache_monitor.py +5 -3
  42. empathy_os/cli/__init__.py +11 -55
  43. empathy_os/cli/__main__.py +29 -15
  44. empathy_os/cli/commands/inspection.py +21 -12
  45. empathy_os/cli/commands/memory.py +4 -12
  46. empathy_os/cli/commands/profiling.py +198 -0
  47. empathy_os/cli/commands/utilities.py +27 -7
  48. empathy_os/cli.py +28 -57
  49. empathy_os/cli_unified.py +525 -1164
  50. empathy_os/cost_tracker.py +9 -3
  51. empathy_os/dashboard/server.py +200 -2
  52. empathy_os/hot_reload/__init__.py +7 -7
  53. empathy_os/hot_reload/config.py +6 -7
  54. empathy_os/hot_reload/integration.py +35 -35
  55. empathy_os/hot_reload/reloader.py +57 -57
  56. empathy_os/hot_reload/watcher.py +28 -28
  57. empathy_os/hot_reload/websocket.py +2 -2
  58. empathy_os/memory/__init__.py +11 -4
  59. empathy_os/memory/claude_memory.py +1 -1
  60. empathy_os/memory/cross_session.py +8 -12
  61. empathy_os/memory/edges.py +6 -6
  62. empathy_os/memory/file_session.py +770 -0
  63. empathy_os/memory/graph.py +30 -30
  64. empathy_os/memory/nodes.py +6 -6
  65. empathy_os/memory/short_term.py +15 -9
  66. empathy_os/memory/unified.py +606 -140
  67. empathy_os/meta_workflows/agent_creator.py +3 -9
  68. empathy_os/meta_workflows/cli_meta_workflows.py +113 -53
  69. empathy_os/meta_workflows/form_engine.py +6 -18
  70. empathy_os/meta_workflows/intent_detector.py +64 -24
  71. empathy_os/meta_workflows/models.py +3 -1
  72. empathy_os/meta_workflows/pattern_learner.py +13 -31
  73. empathy_os/meta_workflows/plan_generator.py +55 -47
  74. empathy_os/meta_workflows/session_context.py +2 -3
  75. empathy_os/meta_workflows/workflow.py +20 -51
  76. empathy_os/models/cli.py +2 -2
  77. empathy_os/models/tasks.py +1 -2
  78. empathy_os/models/telemetry.py +4 -1
  79. empathy_os/models/token_estimator.py +3 -1
  80. empathy_os/monitoring/alerts.py +938 -9
  81. empathy_os/monitoring/alerts_cli.py +346 -183
  82. empathy_os/orchestration/execution_strategies.py +12 -29
  83. empathy_os/orchestration/pattern_learner.py +20 -26
  84. empathy_os/orchestration/real_tools.py +6 -15
  85. empathy_os/platform_utils.py +2 -1
  86. empathy_os/plugins/__init__.py +2 -2
  87. empathy_os/plugins/base.py +64 -64
  88. empathy_os/plugins/registry.py +32 -32
  89. empathy_os/project_index/index.py +49 -15
  90. empathy_os/project_index/models.py +1 -2
  91. empathy_os/project_index/reports.py +1 -1
  92. empathy_os/project_index/scanner.py +1 -0
  93. empathy_os/redis_memory.py +10 -7
  94. empathy_os/resilience/__init__.py +1 -1
  95. empathy_os/resilience/health.py +10 -10
  96. empathy_os/routing/__init__.py +7 -7
  97. empathy_os/routing/chain_executor.py +37 -37
  98. empathy_os/routing/classifier.py +36 -36
  99. empathy_os/routing/smart_router.py +40 -40
  100. empathy_os/routing/{wizard_registry.py → workflow_registry.py} +47 -47
  101. empathy_os/scaffolding/__init__.py +8 -8
  102. empathy_os/scaffolding/__main__.py +1 -1
  103. empathy_os/scaffolding/cli.py +28 -28
  104. empathy_os/socratic/__init__.py +3 -19
  105. empathy_os/socratic/ab_testing.py +25 -36
  106. empathy_os/socratic/blueprint.py +38 -38
  107. empathy_os/socratic/cli.py +34 -20
  108. empathy_os/socratic/collaboration.py +30 -28
  109. empathy_os/socratic/domain_templates.py +9 -1
  110. empathy_os/socratic/embeddings.py +17 -13
  111. empathy_os/socratic/engine.py +135 -70
  112. empathy_os/socratic/explainer.py +70 -60
  113. empathy_os/socratic/feedback.py +24 -19
  114. empathy_os/socratic/forms.py +15 -10
  115. empathy_os/socratic/generator.py +51 -35
  116. empathy_os/socratic/llm_analyzer.py +25 -23
  117. empathy_os/socratic/mcp_server.py +99 -159
  118. empathy_os/socratic/session.py +19 -13
  119. empathy_os/socratic/storage.py +98 -67
  120. empathy_os/socratic/success.py +38 -27
  121. empathy_os/socratic/visual_editor.py +51 -39
  122. empathy_os/socratic/web_ui.py +99 -66
  123. empathy_os/telemetry/cli.py +3 -1
  124. empathy_os/telemetry/usage_tracker.py +1 -3
  125. empathy_os/test_generator/__init__.py +3 -3
  126. empathy_os/test_generator/cli.py +28 -28
  127. empathy_os/test_generator/generator.py +64 -66
  128. empathy_os/test_generator/risk_analyzer.py +11 -11
  129. empathy_os/vscode_bridge.py +173 -0
  130. empathy_os/workflows/__init__.py +212 -120
  131. empathy_os/workflows/batch_processing.py +8 -24
  132. empathy_os/workflows/bug_predict.py +1 -1
  133. empathy_os/workflows/code_review.py +20 -5
  134. empathy_os/workflows/code_review_pipeline.py +13 -8
  135. empathy_os/workflows/keyboard_shortcuts/workflow.py +6 -2
  136. empathy_os/workflows/manage_documentation.py +1 -0
  137. empathy_os/workflows/orchestrated_health_check.py +6 -11
  138. empathy_os/workflows/orchestrated_release_prep.py +3 -3
  139. empathy_os/workflows/pr_review.py +18 -10
  140. empathy_os/workflows/progressive/__init__.py +2 -12
  141. empathy_os/workflows/progressive/cli.py +14 -37
  142. empathy_os/workflows/progressive/core.py +12 -12
  143. empathy_os/workflows/progressive/orchestrator.py +166 -144
  144. empathy_os/workflows/progressive/reports.py +22 -31
  145. empathy_os/workflows/progressive/telemetry.py +8 -14
  146. empathy_os/workflows/progressive/test_gen.py +29 -48
  147. empathy_os/workflows/progressive/workflow.py +31 -70
  148. empathy_os/workflows/release_prep.py +21 -6
  149. empathy_os/workflows/release_prep_crew.py +1 -0
  150. empathy_os/workflows/secure_release.py +13 -6
  151. empathy_os/workflows/security_audit.py +8 -3
  152. empathy_os/workflows/test_coverage_boost_crew.py +3 -2
  153. empathy_os/workflows/test_maintenance_crew.py +1 -0
  154. empathy_os/workflows/test_runner.py +16 -12
  155. empathy_software_plugin/SOFTWARE_PLUGIN_README.md +25 -703
  156. empathy_software_plugin/cli.py +0 -122
  157. coach_wizards/__init__.py +0 -45
  158. coach_wizards/accessibility_wizard.py +0 -91
  159. coach_wizards/api_wizard.py +0 -91
  160. coach_wizards/base_wizard.py +0 -209
  161. coach_wizards/cicd_wizard.py +0 -91
  162. coach_wizards/code_reviewer_README.md +0 -60
  163. coach_wizards/code_reviewer_wizard.py +0 -180
  164. coach_wizards/compliance_wizard.py +0 -91
  165. coach_wizards/database_wizard.py +0 -91
  166. coach_wizards/debugging_wizard.py +0 -91
  167. coach_wizards/documentation_wizard.py +0 -91
  168. coach_wizards/generate_wizards.py +0 -347
  169. coach_wizards/localization_wizard.py +0 -173
  170. coach_wizards/migration_wizard.py +0 -91
  171. coach_wizards/monitoring_wizard.py +0 -91
  172. coach_wizards/observability_wizard.py +0 -91
  173. coach_wizards/performance_wizard.py +0 -91
  174. coach_wizards/prompt_engineering_wizard.py +0 -661
  175. coach_wizards/refactoring_wizard.py +0 -91
  176. coach_wizards/scaling_wizard.py +0 -90
  177. coach_wizards/security_wizard.py +0 -92
  178. coach_wizards/testing_wizard.py +0 -91
  179. empathy_framework-4.6.6.dist-info/RECORD +0 -410
  180. empathy_llm_toolkit/wizards/__init__.py +0 -43
  181. empathy_llm_toolkit/wizards/base_wizard.py +0 -364
  182. empathy_llm_toolkit/wizards/customer_support_wizard.py +0 -190
  183. empathy_llm_toolkit/wizards/healthcare_wizard.py +0 -378
  184. empathy_llm_toolkit/wizards/patient_assessment_README.md +0 -64
  185. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +0 -193
  186. empathy_llm_toolkit/wizards/technology_wizard.py +0 -209
  187. empathy_os/wizard_factory_cli.py +0 -170
  188. empathy_software_plugin/wizards/__init__.py +0 -42
  189. empathy_software_plugin/wizards/advanced_debugging_wizard.py +0 -395
  190. empathy_software_plugin/wizards/agent_orchestration_wizard.py +0 -511
  191. empathy_software_plugin/wizards/ai_collaboration_wizard.py +0 -503
  192. empathy_software_plugin/wizards/ai_context_wizard.py +0 -441
  193. empathy_software_plugin/wizards/ai_documentation_wizard.py +0 -503
  194. empathy_software_plugin/wizards/base_wizard.py +0 -288
  195. empathy_software_plugin/wizards/book_chapter_wizard.py +0 -519
  196. empathy_software_plugin/wizards/code_review_wizard.py +0 -604
  197. empathy_software_plugin/wizards/debugging/__init__.py +0 -50
  198. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +0 -414
  199. empathy_software_plugin/wizards/debugging/config_loaders.py +0 -446
  200. empathy_software_plugin/wizards/debugging/fix_applier.py +0 -469
  201. empathy_software_plugin/wizards/debugging/language_patterns.py +0 -385
  202. empathy_software_plugin/wizards/debugging/linter_parsers.py +0 -470
  203. empathy_software_plugin/wizards/debugging/verification.py +0 -369
  204. empathy_software_plugin/wizards/enhanced_testing_wizard.py +0 -537
  205. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +0 -816
  206. empathy_software_plugin/wizards/multi_model_wizard.py +0 -501
  207. empathy_software_plugin/wizards/pattern_extraction_wizard.py +0 -422
  208. empathy_software_plugin/wizards/pattern_retriever_wizard.py +0 -400
  209. empathy_software_plugin/wizards/performance/__init__.py +0 -9
  210. empathy_software_plugin/wizards/performance/bottleneck_detector.py +0 -221
  211. empathy_software_plugin/wizards/performance/profiler_parsers.py +0 -278
  212. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +0 -429
  213. empathy_software_plugin/wizards/performance_profiling_wizard.py +0 -305
  214. empathy_software_plugin/wizards/prompt_engineering_wizard.py +0 -425
  215. empathy_software_plugin/wizards/rag_pattern_wizard.py +0 -461
  216. empathy_software_plugin/wizards/security/__init__.py +0 -32
  217. empathy_software_plugin/wizards/security/exploit_analyzer.py +0 -290
  218. empathy_software_plugin/wizards/security/owasp_patterns.py +0 -241
  219. empathy_software_plugin/wizards/security/vulnerability_scanner.py +0 -604
  220. empathy_software_plugin/wizards/security_analysis_wizard.py +0 -322
  221. empathy_software_plugin/wizards/security_learning_wizard.py +0 -740
  222. empathy_software_plugin/wizards/tech_debt_wizard.py +0 -726
  223. empathy_software_plugin/wizards/testing/__init__.py +0 -27
  224. empathy_software_plugin/wizards/testing/coverage_analyzer.py +0 -459
  225. empathy_software_plugin/wizards/testing/quality_analyzer.py +0 -525
  226. empathy_software_plugin/wizards/testing/test_suggester.py +0 -533
  227. empathy_software_plugin/wizards/testing_wizard.py +0 -274
  228. wizards/__init__.py +0 -82
  229. wizards/admission_assessment_wizard.py +0 -644
  230. wizards/care_plan.py +0 -321
  231. wizards/clinical_assessment.py +0 -769
  232. wizards/discharge_planning.py +0 -77
  233. wizards/discharge_summary_wizard.py +0 -468
  234. wizards/dosage_calculation.py +0 -497
  235. wizards/incident_report_wizard.py +0 -454
  236. wizards/medication_reconciliation.py +0 -85
  237. wizards/nursing_assessment.py +0 -171
  238. wizards/patient_education.py +0 -654
  239. wizards/quality_improvement.py +0 -705
  240. wizards/sbar_report.py +0 -324
  241. wizards/sbar_wizard.py +0 -608
  242. wizards/shift_handoff_wizard.py +0 -535
  243. wizards/soap_note_wizard.py +0 -679
  244. wizards/treatment_plan.py +0 -15
  245. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/WHEEL +0 -0
  246. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/entry_points.txt +0 -0
  247. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,307 @@
1
+ """Agent Registry
2
+
3
+ Central registry for managing available agents.
4
+
5
+ Copyright 2025 Smart-AI-Memory
6
+ Licensed under Fair Source License 0.9
7
+ """
8
+
9
+ import logging
10
+ from collections.abc import Iterator
11
+ from pathlib import Path
12
+ from typing import Any
13
+
14
+ from empathy_llm_toolkit.agents_md.loader import AgentLoader
15
+ from empathy_llm_toolkit.config.unified import UnifiedAgentConfig
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ class AgentRegistry:
21
+ """Central registry for agent configurations.
22
+
23
+ Provides a single point of access for all available agents,
24
+ supporting both programmatic registration and directory loading.
25
+
26
+ Example:
27
+ # Create registry and load agents
28
+ registry = AgentRegistry()
29
+ registry.load_from_directory("agents/")
30
+
31
+ # Get an agent by name
32
+ architect = registry.get("architect")
33
+
34
+ # Register a custom agent
35
+ registry.register(my_custom_config)
36
+
37
+ # List all available agents
38
+ for name in registry.list_agents():
39
+ print(name)
40
+ """
41
+
42
+ _instance: "AgentRegistry | None" = None
43
+
44
+ def __init__(self):
45
+ """Initialize the registry."""
46
+ self._agents: dict[str, UnifiedAgentConfig] = {}
47
+ self._loader = AgentLoader()
48
+ self._load_paths: list[Path] = []
49
+
50
+ @classmethod
51
+ def get_instance(cls) -> "AgentRegistry":
52
+ """Get the singleton registry instance.
53
+
54
+ Returns:
55
+ The global AgentRegistry instance
56
+
57
+ """
58
+ if cls._instance is None:
59
+ cls._instance = cls()
60
+ return cls._instance
61
+
62
+ @classmethod
63
+ def reset_instance(cls) -> None:
64
+ """Reset the singleton instance (mainly for testing)."""
65
+ cls._instance = None
66
+
67
+ def register(
68
+ self,
69
+ config: UnifiedAgentConfig,
70
+ overwrite: bool = False,
71
+ ) -> None:
72
+ """Register an agent configuration.
73
+
74
+ Args:
75
+ config: Agent configuration to register
76
+ overwrite: If True, overwrite existing agent with same name
77
+
78
+ Raises:
79
+ ValueError: If agent name already exists and overwrite=False
80
+
81
+ """
82
+ if config.name in self._agents and not overwrite:
83
+ raise ValueError(
84
+ f"Agent '{config.name}' already registered. Use overwrite=True to replace."
85
+ )
86
+
87
+ self._agents[config.name] = config
88
+ logger.debug("Registered agent: %s", config.name)
89
+
90
+ def unregister(self, name: str) -> bool:
91
+ """Unregister an agent by name.
92
+
93
+ Args:
94
+ name: Agent name to remove
95
+
96
+ Returns:
97
+ True if agent was found and removed
98
+
99
+ """
100
+ if name in self._agents:
101
+ del self._agents[name]
102
+ logger.debug("Unregistered agent: %s", name)
103
+ return True
104
+ return False
105
+
106
+ def get(self, name: str) -> UnifiedAgentConfig | None:
107
+ """Get an agent configuration by name.
108
+
109
+ Args:
110
+ name: Agent name
111
+
112
+ Returns:
113
+ Agent config or None if not found
114
+
115
+ """
116
+ return self._agents.get(name)
117
+
118
+ def get_required(self, name: str) -> UnifiedAgentConfig:
119
+ """Get an agent configuration, raising if not found.
120
+
121
+ Args:
122
+ name: Agent name
123
+
124
+ Returns:
125
+ Agent configuration
126
+
127
+ Raises:
128
+ KeyError: If agent not found
129
+
130
+ """
131
+ config = self.get(name)
132
+ if config is None:
133
+ available = ", ".join(sorted(self._agents.keys()))
134
+ raise KeyError(f"Agent '{name}' not found. Available agents: {available}")
135
+ return config
136
+
137
+ def has(self, name: str) -> bool:
138
+ """Check if an agent is registered.
139
+
140
+ Args:
141
+ name: Agent name
142
+
143
+ Returns:
144
+ True if agent exists
145
+
146
+ """
147
+ return name in self._agents
148
+
149
+ def list_agents(self) -> list[str]:
150
+ """Get list of all registered agent names.
151
+
152
+ Returns:
153
+ Sorted list of agent names
154
+
155
+ """
156
+ return sorted(self._agents.keys())
157
+
158
+ def iter_agents(self) -> Iterator[UnifiedAgentConfig]:
159
+ """Iterate over all registered agents.
160
+
161
+ Yields:
162
+ Agent configurations
163
+
164
+ """
165
+ for name in sorted(self._agents.keys()):
166
+ yield self._agents[name]
167
+
168
+ def load_from_directory(
169
+ self,
170
+ directory: str | Path,
171
+ recursive: bool = False,
172
+ overwrite: bool = False,
173
+ ) -> int:
174
+ """Load agents from a directory.
175
+
176
+ Args:
177
+ directory: Directory containing .md agent files
178
+ recursive: If True, scan subdirectories
179
+ overwrite: If True, overwrite existing agents
180
+
181
+ Returns:
182
+ Number of agents loaded
183
+
184
+ """
185
+ directory = Path(directory)
186
+ self._load_paths.append(directory)
187
+
188
+ agents = self._loader.load_directory(directory, recursive=recursive)
189
+
190
+ loaded = 0
191
+ for _name, config in agents.items():
192
+ try:
193
+ self.register(config, overwrite=overwrite)
194
+ loaded += 1
195
+ except ValueError as e:
196
+ logger.warning("Skipping agent: %s", e)
197
+
198
+ logger.info("Loaded %d agent(s) from %s", loaded, directory)
199
+ return loaded
200
+
201
+ def load_from_file(
202
+ self,
203
+ file_path: str | Path,
204
+ overwrite: bool = False,
205
+ ) -> UnifiedAgentConfig:
206
+ """Load a single agent from a file.
207
+
208
+ Args:
209
+ file_path: Path to agent markdown file
210
+ overwrite: If True, overwrite existing agent
211
+
212
+ Returns:
213
+ Loaded agent configuration
214
+
215
+ """
216
+ config = self._loader.load(file_path)
217
+ self.register(config, overwrite=overwrite)
218
+ return config
219
+
220
+ def reload(self) -> int:
221
+ """Reload all agents from previously loaded directories.
222
+
223
+ Returns:
224
+ Total number of agents after reload
225
+
226
+ """
227
+ self._agents.clear()
228
+
229
+ for directory in self._load_paths:
230
+ if directory.exists():
231
+ self.load_from_directory(directory, overwrite=True)
232
+
233
+ return len(self._agents)
234
+
235
+ def get_by_role(self, role: str) -> list[UnifiedAgentConfig]:
236
+ """Get all agents with a specific role.
237
+
238
+ Args:
239
+ role: Role to filter by
240
+
241
+ Returns:
242
+ List of matching agent configs
243
+
244
+ """
245
+ role = role.lower()
246
+ return [config for config in self._agents.values() if config.role.lower() == role]
247
+
248
+ def get_by_empathy_level(
249
+ self,
250
+ min_level: int = 1,
251
+ max_level: int = 5,
252
+ ) -> list[UnifiedAgentConfig]:
253
+ """Get agents within an empathy level range.
254
+
255
+ Args:
256
+ min_level: Minimum empathy level (inclusive)
257
+ max_level: Maximum empathy level (inclusive)
258
+
259
+ Returns:
260
+ List of matching agent configs
261
+
262
+ """
263
+ return [
264
+ config
265
+ for config in self._agents.values()
266
+ if min_level <= config.empathy_level <= max_level
267
+ ]
268
+
269
+ def get_summary(self) -> dict[str, Any]:
270
+ """Get a summary of registered agents.
271
+
272
+ Returns:
273
+ Summary dictionary
274
+
275
+ """
276
+ by_role = {}
277
+ by_level = {}
278
+ by_tier = {}
279
+
280
+ for config in self._agents.values():
281
+ role = config.role
282
+ by_role[role] = by_role.get(role, 0) + 1
283
+
284
+ level = config.empathy_level
285
+ by_level[level] = by_level.get(level, 0) + 1
286
+
287
+ tier = (
288
+ config.model_tier.value
289
+ if hasattr(config.model_tier, "value")
290
+ else str(config.model_tier)
291
+ )
292
+ by_tier[tier] = by_tier.get(tier, 0) + 1
293
+
294
+ return {
295
+ "total_agents": len(self._agents),
296
+ "agent_names": self.list_agents(),
297
+ "by_role": by_role,
298
+ "by_empathy_level": by_level,
299
+ "by_model_tier": by_tier,
300
+ "load_paths": [str(p) for p in self._load_paths],
301
+ }
302
+
303
+ def clear(self) -> None:
304
+ """Clear all registered agents."""
305
+ self._agents.clear()
306
+ self._load_paths.clear()
307
+ logger.debug("Cleared agent registry")
@@ -0,0 +1,51 @@
1
+ """Commands Module for Empathy Framework
2
+
3
+ Provides command loading, parsing, and execution with integration
4
+ to hooks, context management, and learning modules.
5
+
6
+ Architectural patterns inspired by everything-claude-code by Affaan Mustafa.
7
+ See: https://github.com/affaan-m/everything-claude-code (MIT License)
8
+ See: ACKNOWLEDGMENTS.md for full attribution.
9
+
10
+ Copyright 2025 Smart AI Memory, LLC
11
+ Licensed under Fair Source 0.9
12
+ """
13
+
14
+ from empathy_llm_toolkit.commands.context import (
15
+ CommandContext,
16
+ CommandExecutor,
17
+ create_command_context,
18
+ )
19
+ from empathy_llm_toolkit.commands.loader import (
20
+ CommandLoader,
21
+ get_default_commands_directory,
22
+ load_commands_from_paths,
23
+ )
24
+ from empathy_llm_toolkit.commands.models import (
25
+ CommandCategory,
26
+ CommandConfig,
27
+ CommandMetadata,
28
+ CommandResult,
29
+ )
30
+ from empathy_llm_toolkit.commands.parser import CommandParser
31
+ from empathy_llm_toolkit.commands.registry import CommandRegistry
32
+
33
+ __all__ = [
34
+ # Models
35
+ "CommandCategory",
36
+ "CommandConfig",
37
+ "CommandContext",
38
+ "CommandMetadata",
39
+ "CommandResult",
40
+ # Parser
41
+ "CommandParser",
42
+ # Loader
43
+ "CommandLoader",
44
+ "get_default_commands_directory",
45
+ "load_commands_from_paths",
46
+ # Registry
47
+ "CommandRegistry",
48
+ # Context & Executor
49
+ "CommandExecutor",
50
+ "create_command_context",
51
+ ]