diff --git a/agentserver/console/console_registry.py b/agentserver/console/console_registry.py new file mode 100644 index 0000000..6136f05 --- /dev/null +++ b/agentserver/console/console_registry.py @@ -0,0 +1,19 @@ +""" +console_registry.py — Global console reference for handlers. + +This module provides a central place to register and retrieve +the active console instance, avoiding Python module import issues. +""" + +_console = None + + +def set_console(console): + """Set the active console instance.""" + global _console + _console = console + + +def get_console(): + """Get the active console instance (or None).""" + return _console diff --git a/handlers/hello.py b/handlers/hello.py index 7aab6cd..54c468b 100644 --- a/handlers/hello.py +++ b/handlers/hello.py @@ -126,18 +126,12 @@ async def handle_response_print(payload: ShoutedResponse, metadata: HandlerMetad Routes output to the TUI console if available, otherwise prints to stdout. """ - console = None - try: - from run_organism import get_console - console = get_console() - except ImportError as e: - print(f"[DEBUG] ImportError: {e}") + from agentserver.console.console_registry import get_console - if console is not None: - if hasattr(console, 'on_response'): - console.on_response("shouter", payload) - else: - print(f"[DEBUG] console has no on_response: {type(console)}") + console = get_console() + + if console is not None and hasattr(console, 'on_response'): + console.on_response("shouter", payload) else: - print(f"[DEBUG] console is None, printing to stdout") + # Fallback for simple mode or no console print(f"\033[36m[response] {payload.message}\033[0m") diff --git a/run_organism.py b/run_organism.py index eeed289..b3169ea 100644 --- a/run_organism.py +++ b/run_organism.py @@ -23,20 +23,11 @@ import sys from pathlib import Path from agentserver.message_bus import bootstrap - - -# Global console reference for response handler -_console = None - - -def get_console(): - """Get the current console instance.""" - return _console +from agentserver.console.console_registry import set_console async def run_organism(config_path: str = "config/organism.yaml", use_simple: bool = False): """Boot organism with TUI console.""" - global _console # Bootstrap the pump pump = await bootstrap(config_path) @@ -48,7 +39,7 @@ async def run_organism(config_path: str = "config/organism.yaml", use_simple: bo if not await console.authenticate(): print("Authentication failed.") return - _console = None + set_console(None) pump_task = asyncio.create_task(pump.run()) try: @@ -65,7 +56,7 @@ async def run_organism(config_path: str = "config/organism.yaml", use_simple: bo # Use new TUI console from agentserver.console.tui_console import TUIConsole console = TUIConsole(pump) - _console = console + set_console(console) # Register for handlers to find # Start pump in background pump_task = asyncio.create_task(pump.run())