Skip to content

Commit e64c245

Browse files
fix: resolve registry regressions and remove duplicate Gemini adapter method
Agent-Logs-Url: https://github.com/MervinPraison/PraisonAI/sessions/5a46a1b0-a487-465c-bb7f-e56c29673ba7 Co-authored-by: MervinPraison <454862+MervinPraison@users.noreply.github.com>
1 parent cfc221f commit e64c245

File tree

3 files changed

+19
-29
lines changed

3 files changed

+19
-29
lines changed

src/praisonai-agents/praisonaiagents/agent/agent.py

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,21 @@ def get_registered_agents(self, port: int) -> dict:
211211
with self._lock:
212212
return self._registered_agents.get(port, {}).copy()
213213

214+
def cleanup_agent_registrations(self, agent_id: str) -> None:
215+
"""Remove all registrations for an agent ID and clean empty port state."""
216+
with self._lock:
217+
ports_to_clean = []
218+
for port, path_dict in self._registered_agents.items():
219+
paths_to_remove = [path for path, registered_id in path_dict.items() if registered_id == agent_id]
220+
for path in paths_to_remove:
221+
del path_dict[path]
222+
if not path_dict:
223+
ports_to_clean.append(port)
224+
225+
for port in ports_to_clean:
226+
self._registered_agents.pop(port, None)
227+
self._server_started.pop(port, None)
228+
214229
# Backward compatibility - use default instance
215230
def _get_default_server_registry() -> ServerRegistry:
216231
return ServerRegistry.get_default_instance()
@@ -4611,28 +4626,7 @@ def _cleanup_server_registrations(self) -> None:
46114626
return # No ID generated, nothing registered
46124627

46134628
try:
4614-
agent_id = self._agent_id
4615-
with _server_lock:
4616-
# Remove from _registered_agents
4617-
ports_to_clean = []
4618-
for port, path_dict in _registered_agents.items():
4619-
paths_to_remove = []
4620-
for path, registered_id in path_dict.items():
4621-
if registered_id == agent_id:
4622-
paths_to_remove.append(path)
4623-
4624-
for path in paths_to_remove:
4625-
del path_dict[path]
4626-
4627-
# If no paths left for this port, mark port for cleanup
4628-
if not path_dict:
4629-
ports_to_clean.append(port)
4630-
4631-
# Clean up empty port entries
4632-
for port in ports_to_clean:
4633-
_registered_agents.pop(port, None)
4634-
_server_started.pop(port, None)
4635-
# Note: We don't clean up _shared_apps here as other agents might be using them
4629+
_get_default_server_registry().cleanup_agent_registrations(self._agent_id)
46364630

46374631
except Exception as e:
46384632
import sys
@@ -4669,4 +4663,3 @@ def is_closed(self) -> bool:
46694663

46704664
def __str__(self):
46714665
return f"Agent(name='{self.name}', role='{self.role}', goal='{self.goal}')"
4672-

src/praisonai-agents/praisonaiagents/llm/adapters/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,6 @@ def format_tools(self, tools: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
209209
def supports_streaming_with_tools(self) -> bool:
210210
# Gemini has issues with streaming + tools
211211
return False
212-
213-
def supports_structured_output(self) -> bool:
214-
return True
215212

216213

217214
# Provider adapter registry - public for extension
@@ -285,4 +282,4 @@ def has_provider_adapter(name: str) -> bool:
285282
'add_provider_adapter',
286283
'list_provider_adapters',
287284
'has_provider_adapter',
288-
]
285+
]

src/praisonai-agents/praisonaiagents/memory/adapters/registry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def add_memory_factory(name: str, factory_func: Callable[..., MemoryProtocol]) -
7474

7575
def has_memory_adapter(name: str) -> bool:
7676
"""Canonical alias for is_available (preferred naming per AGENTS.md)."""
77-
return _memory_registry.is_available(name)
77+
return get_default_memory_registry().is_available(name)
7878

7979

8080
def get_first_available_memory_adapter(
@@ -93,7 +93,7 @@ def get_first_available_memory_adapter(
9393
if preferences is None:
9494
preferences = ["sqlite", "in_memory"]
9595

96-
return _memory_registry.get_first_available(preferences, **kwargs)
96+
return get_default_memory_registry().get_first_available(preferences, **kwargs)
9797

9898

9999
__all__ = [

0 commit comments

Comments
 (0)