smlflg's picture
Initial public upload from Projekte/Agent8Agent
f2c56d3 verified
Raw History Blame Contribute Delete
2.89 kB
"""Graph-Aufbau der agentischen Sanduhr (Mockup).
build_graph(checkpointer=None):
- checkpointer=None → für `langgraph dev` (Studio injiziert eigene Persistenz)
- checkpointer=... → für direkten Invoke/Tests (interrupt braucht einen Saver)
"""
from __future__ import annotations
from langgraph.graph import END, START, StateGraph
from .nodes import (
automation_output,
execute_with_codex,
fan_out_research,
hai_owner_packet,
human_escalation,
intake_router,
learning_agent,
meta_agent,
park,
priority_gate,
research_subagent,
research_with_opus,
route_after_verifier,
route_thought,
verifier_mediator,
)
from .state import ThoughtState
def build_graph(checkpointer=None):
g = StateGraph(ThoughtState)
# Nodes
g.add_node("intake_router", intake_router)
g.add_node("priority_gate", priority_gate)
g.add_node("execute_with_codex", execute_with_codex)
g.add_node("research_with_opus", research_with_opus)
g.add_node("research_subagent", research_subagent)
g.add_node("learning_agent", learning_agent)
g.add_node("meta_agent", meta_agent)
g.add_node("park", park)
g.add_node("verifier_mediator", verifier_mediator)
g.add_node("human_escalation", human_escalation)
g.add_node("hai_owner_packet", hai_owner_packet)
g.add_node("automation_output", automation_output)
# Intake-Pyramide
g.add_edge(START, "intake_router")
g.add_edge("intake_router", "priority_gate")
# prio-Gate → Lane (A/B/C/D/E)
g.add_conditional_edges(
"priority_gate",
route_thought,
{
"execute_with_codex": "execute_with_codex",
"research_with_opus": "research_with_opus",
"learning_agent": "learning_agent",
"meta_agent": "meta_agent",
"park": "park",
},
)
# Research-Lane: Send-Fanout → Subagenten → join
g.add_conditional_edges("research_with_opus", fan_out_research, ["research_subagent"])
g.add_edge("research_subagent", "verifier_mediator")
# Übrige Lanes → Verifier
g.add_edge("execute_with_codex", "verifier_mediator")
g.add_edge("learning_agent", "verifier_mediator")
g.add_edge("meta_agent", "verifier_mediator")
# park ist terminal (Anti-Fanout-Ventil)
g.add_edge("park", END)
# Konflikt-Lane
g.add_conditional_edges(
"verifier_mediator",
route_after_verifier,
{"human_escalation": "human_escalation", "hai_owner_packet": "hai_owner_packet"},
)
g.add_edge("human_escalation", "hai_owner_packet")
# Taille → Automation-Output → Ende
g.add_edge("hai_owner_packet", "automation_output")
g.add_edge("automation_output", END)
return g.compile(checkpointer=checkpointer)
# Modul-Level-Graph für LangGraph Studio (langgraph.json).
graph = build_graph()