agent-runtime/agent/nodes/__init__.py
Nico 5f447dfd53 v0.14.0: v2 Director-drives architecture + 3-pod K8s split
Architecture:
- director_v2: always-on brain, produces DirectorPlan with tool_sequence
- thinker_v2: pure executor, runs tools from DirectorPlan
- interpreter_v1: factual result summarizer, no hallucination
- v2_director_drives graph: Input -> Director -> Thinker -> Output

Infrastructure:
- Split into 3 pods: cog-frontend (nginx), cog-runtime (FastAPI), cog-mcp (SSE proxy)
- MCP survives runtime restarts (separate pod, proxies via HTTP)
- Async send pipeline: /api/send/check -> /api/send -> /api/result with progress
- Zero-downtime rolling updates (maxUnavailable: 0)
- Dynamic graph visualization (fetched from API, not hardcoded)

Tests: 22 new mocked unit tests (director_v2: 7, thinker_v2: 8, interpreter_v1: 7)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 04:17:44 +02:00

47 lines
1.5 KiB
Python

"""Node modules — versioned nodes + shared (unversioned) nodes."""
# Shared nodes (pure code, no LLM, no versioning)
from .sensor import SensorNode
from .ui import UINode
# Versioned nodes — v1 (current)
from .input_v1 import InputNode as InputNodeV1
from .thinker_v1 import ThinkerNode as ThinkerNodeV1
from .output_v1 import OutputNode as OutputNodeV1
from .memorizer_v1 import MemorizerNode as MemorizerNodeV1
from .director_v1 import DirectorNode as DirectorNodeV1
# Versioned nodes — v2
from .director_v2 import DirectorV2Node
from .thinker_v2 import ThinkerV2Node
from .interpreter_v1 import InterpreterNode
# Default aliases (used by runtime.py until engine.py takes over)
InputNode = InputNodeV1
ThinkerNode = ThinkerNodeV1
OutputNode = OutputNodeV1
MemorizerNode = MemorizerNodeV1
DirectorNode = DirectorNodeV1
# Registry — engine.py uses this to look up node classes by name
NODE_REGISTRY = {
"sensor": SensorNode,
"ui": UINode,
"input_v1": InputNodeV1,
"thinker_v1": ThinkerNodeV1,
"output_v1": OutputNodeV1,
"memorizer_v1": MemorizerNodeV1,
"director_v1": DirectorNodeV1,
"director_v2": DirectorV2Node,
"thinker_v2": ThinkerV2Node,
"interpreter_v1": InterpreterNode,
}
__all__ = [
"SensorNode", "UINode",
"InputNodeV1", "ThinkerNodeV1", "OutputNodeV1", "MemorizerNodeV1", "DirectorNodeV1",
"DirectorV2Node", "ThinkerV2Node", "InterpreterNode",
"InputNode", "ThinkerNode", "OutputNode", "MemorizerNode", "DirectorNode",
"NODE_REGISTRY",
]