from langgraph.graph import StateGraph, START, END from agent.state import AgentState from agent.nodes import ( detect_intent, handle_greeting, handle_unknown, retrieve_knowledge, generate_rag_response, process_lead, execute_tool ) from agent.router import route_intent, route_after_lead def build_graph(): workflow = StateGraph(AgentState) workflow.add_node("detect_intent", detect_intent) workflow.add_node("handle_greeting", handle_greeting) workflow.add_node("handle_unknown", handle_unknown) workflow.add_node("retrieve_knowledge", retrieve_knowledge) workflow.add_node("generate_rag_response", generate_rag_response) workflow.add_node("process_lead", process_lead) workflow.add_node("execute_tool", execute_tool) workflow.add_edge(START, "detect_intent") workflow.add_conditional_edges( "detect_intent", route_intent, { "handle_greeting": "handle_greeting", "retrieve_knowledge": "retrieve_knowledge", "process_lead": "process_lead", "handle_unknown": "handle_unknown" } ) workflow.add_edge("retrieve_knowledge", "generate_rag_response") workflow.add_conditional_edges( "process_lead", route_after_lead, { "execute_tool": "execute_tool", "__end__": END } ) workflow.add_edge("handle_greeting", END) workflow.add_edge("handle_unknown", END) workflow.add_edge("generate_rag_response", END) workflow.add_edge("execute_tool", END) app = workflow.compile() return app app = build_graph()