- Created modular execution_data_client to abstract DB and caching
- Simple in-memory cache for hot path operations (get_node, get_node_executions)
- Non-blocking queue for output and status updates
- Removed direct references to DatabaseManager and Redis from manager.py
- All execution data access now goes through generic ExecutionDataClient
This reduces blocking I/O operations during graph execution by caching frequently accessed data in memory and queuing non-critical updates.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>