#!/usr/bin/env python3"""Example runner for Dominoes game with rich UI visualization."""importtracebackimportuuidfromrich.consoleimportConsolefromrich.panelimportPanelfromhaive.games.dominoes.agentimportDominoesAgentfromhaive.games.dominoes.configimportDominoesAgentConfig# Set up logging - uncomment to see detailed debug logs# logging.basicConfig(level=logging.DEBUG)
[docs]defrun_dominoes_game(agent:DominoesAgent,delay:float=1.5):"""Run a Dominoes game with visualization. Args: agent: Configured DominoesAgent delay: Delay between moves in seconds """console=Console()console.print(Panel("Starting Dominoes game with Rich UI visualization",title="🎲 Dominoes Game 🎲",border_style="magenta",))try:# Run the game with UIfinal_state=agent.run_game_with_ui(delay=delay)# Print final messageconsole.print("\n")console.print(Panel("Game has completed! Thanks for playing!",title="🎲 Game Complete 🎲",border_style="green",))returnfinal_stateexceptExceptionase:console.print(f"[bold red]Error running game: {e}[/bold red]")console.print(Panel(traceback.format_exc(),title="Error Details",border_style="red",))returnNone
# Entry pointif__name__=="__main__":console=Console()try:# Create agent config with a unique ID for the sessionconfig=DominoesAgentConfig(name="dominoes_game",runnable_config={"configurable":{"thread_id":uuid.uuid4().hex[:8],"recursion_limit":400,}},)# Create agentagent=DominoesAgent(config)# Run the gamerun_dominoes_game(agent,delay=1.2)exceptExceptionase:console.print(f"[bold red]Critical error: {e}[/bold red]")console.print(Panel(traceback.format_exc(),title="Error Details",border_style="red",))