# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates # SPDX-License-Identifier: MIT from langgraph.graph import StateGraph, START, END from langgraph.checkpoint.memory import MemorySaver from .types import State from .nodes import ( coordinator_node, planner_node, reporter_node, research_team_node, researcher_node, coder_node, human_feedback_node, ) def build_graph(): """Build and return the agent workflow graph.""" # use persistent memory to save conversation history # TODO: be compatible with SQLite / PostgreSQL memory = MemorySaver() # build state graph builder = StateGraph(State) builder.add_edge(START, "coordinator") builder.add_node("coordinator", coordinator_node) builder.add_node("planner", planner_node) builder.add_node("reporter", reporter_node) builder.add_node("research_team", research_team_node) builder.add_node("researcher", researcher_node) builder.add_node("coder", coder_node) builder.add_node("human_feedback", human_feedback_node) builder.add_edge("reporter", END) return builder.compile(checkpointer=memory)