Spaces:
Sleeping
Sleeping
File size: 1,647 Bytes
335e0a3 2c6f0a7 335e0a3 2c6f0a7 335e0a3 96a22b4 335e0a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
from langgraph.graph import StateGraph, END
from .state import PRReviewState
from .nodes import (
code_retriever_node,
code_reviewer_node,
feedback_formatter_node,
post_code_review_node,
update_review_body_based_on_human_input_node,
)
def create_graph():
"""Creates and compiles the LangGraph for the PR review process."""
workflow = StateGraph(PRReviewState)
# --- Node Definitions ---
workflow.add_node("code_retriever", code_retriever_node)
workflow.add_node("code_reviewer", code_reviewer_node)
workflow.add_node("feedback_formatter", feedback_formatter_node)
workflow.add_node("post_code_review", post_code_review_node)
workflow.add_node("update_review_body_based_on_human_input_node", update_review_body_based_on_human_input_node)
# --- Edge Definitions ---
workflow.set_entry_point("code_retriever")
workflow.add_edge("code_retriever", "code_reviewer")
workflow.add_edge("code_reviewer", "feedback_formatter")
workflow.add_edge("feedback_formatter", "post_code_review")
workflow.add_edge("post_code_review", "update_review_body_based_on_human_input_node")
workflow.add_edge("update_review_body_based_on_human_input_node", END)
# The compilation with the checkpointer is now handled in app.py
return workflow
# To make it runnable for debugging or direct invocation
if __name__ == "__main__":
app = create_graph()
# You can add debug invocation here, e.g.:
# from .state import PRReviewState
# initial_state = PRReviewState(repo_name="your/repo", pr_id=123, ...)
# for event in app.stream(initial_state):
# print(event)
|