Skip to main content
Glama
agent_manager_wrapper.py4.69 kB
""" Agent Manager Initialization Wrapper This module provides a robust wrapper for agent manager initialization that handles import failures gracefully. """ import logging import traceback import sys import os class AgentManagerWrapper: """Wrapper that provides agent manager functionality with graceful degradation.""" def __init__(self): self.agent_manager = None self._init_agent_manager() def _init_agent_manager(self): """Initialize the agent manager with comprehensive error handling.""" try: # Skip threading for simplicity and better debugging # Import both the AI Manager and the core Agent Manager ai_manager = None # First, try to import and create AIManager try: addon_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ai_dir = os.path.join(addon_dir, "ai") if ai_dir not in sys.path: sys.path.insert(0, ai_dir) # Try different import strategies for AIManager try: from agent_manager import AIManager except ImportError: try: from ai.agent_manager import AIManager except ImportError: # Last resort - add the specific path and try again sys.path.insert(0, addon_dir) from ai.agent_manager import AIManager ai_manager = AIManager() logging.info("AIManager imported and created from ai/agent_manager.py") except Exception as e: logging.error(f"Failed to import/create AIManager: {e}") logging.debug(traceback.format_exc()) # Then, try to import and create the core AgentManager core_agent_manager = None try: # Try relative import first from .agent_manager import AgentManager core_agent_manager = AgentManager() logging.info("Core AgentManager created successfully (relative import)") except (ImportError, ValueError) as e: logging.warning(f"Relative import failed: {e}") try: # Try absolute import as fallback from agent_manager import AgentManager core_agent_manager = AgentManager() logging.info( "Core AgentManager created successfully (absolute import)" ) except ImportError as e2: logging.error(f"Both relative and absolute imports failed: {e2}") core_agent_manager = None if core_agent_manager: self.agent_manager = core_agent_manager logging.info("Core AgentManager set as primary agent manager") # Connect the AI Manager to the core Agent Manager if available if ai_manager and hasattr(self.agent_manager, "set_ai_provider"): # Use the AI Manager as the AI provider for the core Agent Manager self.agent_manager.set_ai_provider(ai_manager) logging.info("AI Manager connected to core Agent Manager") else: # Fallback to just the AI Manager if core Agent Manager fails if ai_manager: self.agent_manager = ai_manager logging.info("Using AI Manager as fallback") else: self.agent_manager = None logging.error("No agent manager could be created") except Exception as e: logging.error(f"Agent manager initialization failed: {e}") logging.error(f"Traceback: {traceback.format_exc()}") self.agent_manager = None def get_agent_manager(self): """Get the agent manager instance.""" return self.agent_manager def is_available(self): """Check if agent manager is available.""" return self.agent_manager is not None # Global instance _agent_wrapper = None def get_agent_manager(): """Get the global agent manager instance.""" global _agent_wrapper if _agent_wrapper is None: _agent_wrapper = AgentManagerWrapper() return _agent_wrapper.get_agent_manager() def is_agent_manager_available(): """Check if agent manager is available.""" global _agent_wrapper if _agent_wrapper is None: _agent_wrapper = AgentManagerWrapper() return _agent_wrapper.is_available()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jango-blockchained/mcp-freecad'

If you have feedback or need assistance with the MCP directory API, please join our Discord server