Spaces:
Sleeping
Sleeping
| from langgraph.graph import StateGraph | |
| from typing import TypedDict | |
| from app.agents.analyzer import analyzer_node | |
| from app.agents.generator import generator_node | |
| from app.agents.reviewer import reviewer_node | |
| from app.agents.refactor import refactor_node | |
| from app.config import MAX_ITERATIONS | |
| class CodeState(TypedDict): | |
| prompt: str | |
| structured_prompt: str | |
| code: str | |
| review: str | |
| iteration: int | |
| def should_continue(state): | |
| if state["iteration"] >= MAX_ITERATIONS: | |
| return "end" | |
| if "critical" in state["review"].lower(): | |
| return "refactor" | |
| return "end" | |
| def build_graph(): | |
| builder = StateGraph(CodeState) | |
| builder.add_node("analyzer", analyzer_node) | |
| builder.add_node("generator", generator_node) | |
| builder.add_node("reviewer", reviewer_node) | |
| builder.add_node("refactor", refactor_node) | |
| builder.set_entry_point("analyzer") | |
| builder.add_edge("analyzer", "generator") | |
| builder.add_edge("generator", "reviewer") | |
| builder.add_conditional_edges( | |
| "reviewer", | |
| should_continue, | |
| { | |
| "refactor": "refactor", | |
| "end": None | |
| } | |
| ) | |
| builder.add_edge("refactor", "reviewer") | |
| return builder.compile() |