adityamanwatkar commited on
Commit
43af590
·
verified ·
1 Parent(s): 4df72e6

Update src/app/graph/workflow.py

Browse files
Files changed (1) hide show
  1. src/app/graph/workflow.py +53 -51
src/app/graph/workflow.py CHANGED
@@ -1,52 +1,54 @@
1
- from langgraph.graph import StateGraph
2
- from typing import TypedDict
3
- from app.agents.analyzer import analyzer_node
4
- from app.agents.generator import generator_node
5
- from app.agents.reviewer import reviewer_node
6
- from app.agents.refactor import refactor_node
7
- from app.config import MAX_ITERATIONS
8
-
9
-
10
- class CodeState(TypedDict):
11
- prompt: str
12
- structured_prompt: str
13
- code: str
14
- review: str
15
- iteration: int
16
-
17
-
18
- def should_continue(state):
19
- if state["iteration"] >= MAX_ITERATIONS:
20
- return "end"
21
-
22
- if "critical" in state["review"].lower():
23
- return "refactor"
24
-
25
- return "end"
26
-
27
-
28
- def build_graph():
29
- builder = StateGraph(CodeState)
30
-
31
- builder.add_node("analyzer", analyzer_node)
32
- builder.add_node("generator", generator_node)
33
- builder.add_node("reviewer", reviewer_node)
34
- builder.add_node("refactor", refactor_node)
35
-
36
- builder.set_entry_point("analyzer")
37
-
38
- builder.add_edge("analyzer", "generator")
39
- builder.add_edge("generator", "reviewer")
40
-
41
- builder.add_conditional_edges(
42
- "reviewer",
43
- should_continue,
44
- {
45
- "refactor": "refactor",
46
- "end": None
47
- }
48
- )
49
-
50
- builder.add_edge("refactor", "reviewer")
51
-
 
 
52
  return builder.compile()
 
1
+ from langgraph.graph import StateGraph
2
+ from typing import TypedDict
3
+ from app.agents.analyzer import analyzer_node
4
+ from app.agents.generator import generator_node
5
+ from app.agents.reviewer import reviewer_node
6
+ from app.agents.refactor import refactor_node
7
+ from app.config import MAX_ITERATIONS
8
+ from langgraph.graph import END
9
+
10
+ class CodeState(TypedDict):
11
+ prompt: str
12
+ structured_prompt: str
13
+ code: str
14
+ review: str
15
+ iteration: int
16
+
17
+
18
+ def should_continue(state):
19
+ review = state.get("review", "").lower()
20
+
21
+ if state["iteration"] >= MAX_ITERATIONS:
22
+ return "end"
23
+
24
+ if any(word in review for word in ["critical", "error", "bug"]):
25
+ return "refactor"
26
+
27
+ return "end"
28
+
29
+
30
+ def build_graph():
31
+ builder = StateGraph(CodeState)
32
+
33
+ builder.add_node("analyzer", analyzer_node)
34
+ builder.add_node("generator", generator_node)
35
+ builder.add_node("reviewer", reviewer_node)
36
+ builder.add_node("refactor", refactor_node)
37
+
38
+ builder.set_entry_point("analyzer")
39
+
40
+ builder.add_edge("analyzer", "generator")
41
+ builder.add_edge("generator", "reviewer")
42
+
43
+ builder.add_conditional_edges(
44
+ "reviewer",
45
+ should_continue,
46
+ {
47
+ "refactor": "refactor",
48
+ "end": END
49
+ }
50
+ )
51
+
52
+ builder.add_edge("refactor", "reviewer")
53
+
54
  return builder.compile()