Initialize the agent context manager and all registered agents.
(self, agent_names: Optional[List[str]] = None)
| 87 | self._variables_lock = asyncio.Lock() # Lock for get/set trainable variables |
| 88 | |
| 89 | async def initialize(self, agent_names: Optional[List[str]] = None) -> None: |
| 90 | """Initialize the agent context manager and all registered agents.""" |
| 91 | |
| 92 | # Register agent-related symbols for auto-injection in dynamic code |
| 93 | dynamic_manager.register_symbol("AGENT", AGENT) |
| 94 | dynamic_manager.register_symbol("Agent", Agent) |
| 95 | dynamic_manager.register_symbol("AgentConfig", AgentConfig) |
| 96 | |
| 97 | # Register agent context provider for automatic import injection |
| 98 | def agent_context_provider(): |
| 99 | return { |
| 100 | "AGENT": AGENT, |
| 101 | "Agent": Agent, |
| 102 | "AgentConfig": AgentConfig, |
| 103 | } |
| 104 | |
| 105 | dynamic_manager.register_context_provider("agent", agent_context_provider) |
| 106 | |
| 107 | # Initialize Faiss service for agent embedding |
| 108 | self._faiss_service = FaissService( |
| 109 | base_dir=self.base_dir, |
| 110 | model_name=self.model_name, |
| 111 | ) |
| 112 | |
| 113 | # Load agents from AGENT registry |
| 114 | agent_configs: Dict[str, AgentConfig] = {} |
| 115 | registry_agent_configs: Dict[str, AgentConfig] = await self._load_from_registry() |
| 116 | agent_configs.update(registry_agent_configs) |
| 117 | |
| 118 | # Load agents from code JSON (including older versions / dynamic agents) |
| 119 | code_agent_configs: Dict[str, AgentConfig] = await self._load_from_code() |
| 120 | |
| 121 | # Merge code configs with registry configs, only override if code version is strictly greater |
| 122 | for agent_name, code_config in code_agent_configs.items(): |
| 123 | if agent_name in agent_configs: |
| 124 | registry_config = agent_configs[agent_name] |
| 125 | if ( |
| 126 | version_manager.compare_versions( |
| 127 | code_config.version, registry_config.version |
| 128 | ) |
| 129 | > 0 |
| 130 | ): |
| 131 | logger.info( |
| 132 | f"| 🔄 Overriding agent {agent_name} from registry " |
| 133 | f"(v{registry_config.version}) with code version (v{code_config.version})" |
| 134 | ) |
| 135 | agent_configs[agent_name] = code_config |
| 136 | else: |
| 137 | logger.info( |
| 138 | f"| 📌 Keeping agent {agent_name} from registry (v{registry_config.version}), " |
| 139 | f"code version (v{code_config.version}) is not greater" |
| 140 | ) |
| 141 | # If versions are equal, update the history with registry config (which has real class, not dynamic) |
| 142 | if version_manager.compare_versions(code_config.version, registry_config.version) == 0: |
| 143 | # Replace the code config in history with registry config to preserve real class reference |
| 144 | if agent_name in self._agent_history_versions: |
| 145 | self._agent_history_versions[agent_name][registry_config.version] = registry_config |
| 146 | else: |
no test coverage detected