from langgraph.graph import END, StateGraph from backend.graph.nodes import ( ask_question, counter_question, evaluate_answer, generate_report, route_after_evaluation, summarize, ) from backend.graph.state import InterviewState def build_graph(checkpointer): """Compile the interview graph with the given checkpointer. Call once at startup.""" builder = StateGraph(InterviewState) builder.add_node("ask_question", ask_question) builder.add_node("evaluate_answer", evaluate_answer) builder.add_node("counter_question", counter_question) builder.add_node("summarize", summarize) builder.add_node("generate_report", generate_report) builder.set_entry_point("ask_question") builder.add_edge("ask_question", "evaluate_answer") builder.add_conditional_edges( "evaluate_answer", route_after_evaluation, { "counter": "counter_question", "next_question": "ask_question", "summarize": "summarize", "end": "generate_report", }, ) builder.add_edge("counter_question", "evaluate_answer") builder.add_edge("summarize", "ask_question") builder.add_edge("generate_report", END) return builder.compile( checkpointer=checkpointer, interrupt_before=["evaluate_answer"], )