Navya-Sree commited on
Commit
a854477
·
verified ·
1 Parent(s): e730abd

Create src/macg/orchestrator.py

Browse files
Files changed (1) hide show
  1. src/macg/orchestrator.py +34 -0
src/macg/orchestrator.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+ from dataclasses import asdict
3
+ from macg.protocol import Artifact
4
+ from macg.agents.coder import CoderAgent
5
+ from macg.agents.reviewer import ReviewerAgent
6
+ from macg.agents.tester import TesterAgent
7
+
8
+ class Orchestrator:
9
+ def __init__(self, coder: CoderAgent, reviewer: ReviewerAgent, tester: TesterAgent) -> None:
10
+ self.coder = coder
11
+ self.reviewer = reviewer
12
+ self.tester = tester
13
+
14
+ def run(self, task: str, max_iters: int = 3) -> Artifact:
15
+ art = Artifact(task=task, iteration=0)
16
+
17
+ for i in range(1, max_iters + 1):
18
+ art.iteration = i
19
+
20
+ # 1) code
21
+ art = self.coder.run(art)
22
+
23
+ # 2) review
24
+ art = self.reviewer.run(art)
25
+
26
+ # 3) test
27
+ art = self.tester.run(art)
28
+
29
+ if art.passed:
30
+ return art
31
+
32
+ # loop: reviewer notes will guide next coder revision
33
+ art.review_notes = art.review_notes + "\n- Tests failed; revise code to satisfy failing cases.\n"
34
+ return art