File size: 1,760 Bytes
cbd4d19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
Orchestrator {
  n1: circle label="Complex task arrives"
  n2: rectangle label="Request shared context"
  n3: rectangle label="Create research subtask"
  n4: rectangle label="Create action subtask"
  n5: rectangle label="Receive findings and results"
  n6: rectangle label="Compile final answer"
  n1.handle(right) -> n2.handle(left)
  n2.handle(bottom) -> SharedMemory.n7.handle(top) [label="Read state"]
  n3.handle(right) -> n4.handle(left)
  n3.handle(bottom) -> Researcher.n9.handle(top) [label="Research task"]
  n4.handle(bottom) -> Operator.n13.handle(top) [label="Action task"]
  n5.handle(right) -> n6.handle(left)
  Researcher.n12.handle(top) -> n5.handle(left) [label="Finding"]
  Operator.n17.handle(top) -> n5.handle(right) [label="Result"]
}

Researcher {
  n9: rectangle label="Receive research task"
  n10: rectangle label="Read shared memory"
  n11: rectangle label="Analyze with context"
  n12: rectangle label="Return finding"
  n9.handle(right) -> n10.handle(left)
  n10.handle(right) -> n11.handle(left)
  n11.handle(right) -> n12.handle(left)
  n10.handle(bottom) -> SharedMemory.n7.handle(left) [label="Read state"]
}

Operator {
  n13: rectangle label="Receive action task"
  n14: rectangle label="Read shared memory"
  n15: rectangle label="Execute with context"
  n16: rectangle label="Write result to memory"
  n17: rectangle label="Return result"
  n13.handle(right) -> n14.handle(left)
  n14.handle(right) -> n15.handle(left)
  n15.handle(right) -> n16.handle(left)
  n16.handle(bottom) -> SharedMemory.n8.handle(left) [label="Write state"]
  n15.handle(bottom) -> n17.handle(top)
}

SharedMemory {
  n7: rectangle label="Resolve memory request"
  n8: rectangle label="Update shared state"
  n7.handle(right) -> n8.handle(left)
}