@@ -19,6 +19,7 @@ export interface PatternContent {
1919 whenToUse : string [ ] ;
2020 architectureMermaid : string ;
2121 howItWorks : string [ ] ;
22+ eventFlow : string ;
2223 agents : PatternAgent [ ] ;
2324 tradeoffs : {
2425 pros : string [ ] ;
@@ -54,6 +55,14 @@ const router: PatternContent = {
5455 "The matched specialist agent processes the original input with domain-specific expertise" ,
5556 "The specialist's streamed response becomes the final output" ,
5657 ] ,
58+ eventFlow : `agent_start {agent: "router", role: "classifier"}
59+ chunk {agent: "router", content: "BILLING"}
60+ agent_end {agent: "router", ...}
61+ handoff {from: "router", to: "billing", reason: "billing intent detected"}
62+ agent_start {agent: "billing", role: "specialist"}
63+ chunk {agent: "billing", content: "I can help with your invoice..."}
64+ agent_end {agent: "billing", ...}
65+ done {totalUsage: {...}}` ,
5766 agents : [
5867 {
5968 name : "router" ,
@@ -129,6 +138,18 @@ const pipeline: PatternContent = {
129138 "Output passes to the Editor, who refines for clarity, grammar, and coherence" ,
130139 "The editor's output is the final result" ,
131140 ] ,
141+ eventFlow : `agent_start {agent: "researcher", role: "research expert"}
142+ chunk {agent: "researcher", content: "...research findings..."}
143+ agent_end {agent: "researcher", ...}
144+ handoff {from: "researcher", to: "writer", reason: "passing to next stage"}
145+ agent_start {agent: "writer", role: "content writer"}
146+ chunk {agent: "writer", content: "...draft article..."}
147+ agent_end {agent: "writer", ...}
148+ handoff {from: "writer", to: "editor", reason: "passing to next stage"}
149+ agent_start {agent: "editor", role: "editor"}
150+ chunk {agent: "editor", content: "...polished article..."}
151+ agent_end {agent: "editor", ...}
152+ done {totalUsage: {...}}` ,
132153 agents : [
133154 {
134155 name : "researcher" ,
@@ -206,6 +227,20 @@ const supervisor: PatternContent = {
206227 "Retry loop: if output is inadequate, the worker retries with the supervisor's feedback appended (up to 3 attempts)" ,
207228 "Final output: the last worker's accepted output becomes the pattern's result" ,
208229 ] ,
230+ eventFlow : `agent_start {agent: "supervisor", role: "planner"}
231+ chunk {agent: "supervisor", content: "Plan: search -> analysis -> summary"}
232+ agent_end {agent: "supervisor", ...}
233+ handoff {from: "supervisor", to: "search", reason: "Dispatching search task"}
234+ agent_start {agent: "search", role: "information gatherer"}
235+ chunk {agent: "search", content: "...findings..."}
236+ agent_end {agent: "search", ...}
237+ handoff {from: "search", to: "supervisor", reason: "Reviewing search output"}
238+ agent_start {agent: "supervisor", role: "reviewer"}
239+ chunk {agent: "supervisor", content: "Review: adequate. ..."}
240+ agent_end {agent: "supervisor", ...}
241+ handoff {from: "supervisor", to: "analysis", reason: "Dispatching analysis task"}
242+ ...
243+ done {totalUsage: {...}}` ,
209244 agents : [
210245 {
211246 name : "supervisor" ,
@@ -286,6 +321,20 @@ const debate: PatternContent = {
286321 "This repeats for 2 rounds (configurable), with each debater seeing the full transcript so far" ,
287322 "After all rounds, the judge receives the complete debate transcript and delivers a verdict with reasoning" ,
288323 ] ,
324+ eventFlow : `agent_start {agent: "bull", role: "debater"}
325+ chunk {agent: "bull", content: "...arguments for..."}
326+ agent_end {agent: "bull", ...}
327+ handoff {from: "bull", to: "bear", reason: "round 1"}
328+ agent_start {agent: "bear", role: "debater"}
329+ chunk {agent: "bear", content: "...arguments against..."}
330+ agent_end {agent: "bear", ...}
331+ handoff {from: "bear", to: "bull", reason: "next round"}
332+ ...
333+ handoff {from: "bear", to: "judge", reason: "debate complete"}
334+ agent_start {agent: "judge", role: "judge"}
335+ chunk {agent: "judge", content: "...verdict and reasoning..."}
336+ agent_end {agent: "judge", ...}
337+ done {totalUsage: {...}}` ,
289338 agents : [
290339 {
291340 name : "bull" ,
@@ -368,6 +417,14 @@ const swarm: PatternContent = {
368417 "The target agent can also hand off to another agent if needed" ,
369418 "The chain continues until an agent responds without a handoff (max 5 iterations)" ,
370419 ] ,
420+ eventFlow : `agent_start {agent: "triage", role: "triage"}
421+ chunk {agent: "triage", content: "...I'll connect you..."}
422+ agent_end {agent: "triage", ...}
423+ handoff {from: "triage", to: "billing", reason: "triage handed off to billing"}
424+ agent_start {agent: "billing", role: "specialist"}
425+ chunk {agent: "billing", content: "...I can help with your invoice..."}
426+ agent_end {agent: "billing", ...}
427+ done {totalUsage: {...}}` ,
371428 agents : [
372429 {
373430 name : "triage" ,
@@ -450,6 +507,22 @@ const mapReduce: PatternContent = {
450507 "Fan-in \u2014 a single handoff event signals all mappers are done" ,
451508 "Reduce \u2014 the ReducerAgent synthesizes all mapper outputs into one coherent response" ,
452509 ] ,
510+ eventFlow : `agent_start {agent: "splitter", role: "splitter"}
511+ chunk {agent: "splitter", content: "...subtask plan..."}
512+ agent_end {agent: "splitter", ...}
513+ handoff {from: "splitter", to: "mapper-1", reason: "fan-out"}
514+ handoff {from: "splitter", to: "mapper-2", reason: "fan-out"}
515+ agent_start {agent: "mapper-1", role: "mapper"}
516+ agent_start {agent: "mapper-2", role: "mapper"}
517+ chunk {agent: "mapper-1", content: "...analysis A..."}
518+ chunk {agent: "mapper-2", content: "...analysis B..."}
519+ agent_end {agent: "mapper-1", ...}
520+ agent_end {agent: "mapper-2", ...}
521+ handoff {from: "mappers", to: "reducer", reason: "fan-in"}
522+ agent_start {agent: "reducer", role: "reducer"}
523+ chunk {agent: "reducer", content: "...synthesis..."}
524+ agent_end {agent: "reducer", ...}
525+ done {totalUsage: {...}}` ,
453526 agents : [
454527 {
455528 name : "splitter" ,
@@ -524,6 +597,22 @@ const reflection: PatternContent = {
524597 "The loop repeats until pass or max iterations (3) are reached" ,
525598 "On the final iteration, the critic is skipped \u2014 the generator's output is the final answer" ,
526599 ] ,
600+ eventFlow : `agent_start {agent: "generator", role: "content generator"}
601+ chunk {agent: "generator", content: "...initial draft..."}
602+ agent_end {agent: "generator", ...}
603+ handoff {from: "generator", to: "critic", reason: "iteration 1 — reviewing"}
604+ agent_start {agent: "critic", role: "content critic"}
605+ chunk {agent: "critic", content: "...evaluation...{verdict: revise}"}
606+ agent_end {agent: "critic", ...}
607+ handoff {from: "critic", to: "generator", reason: "revision needed: ..."}
608+ agent_start {agent: "generator", role: "content generator"}
609+ chunk {agent: "generator", content: "...revised draft..."}
610+ agent_end {agent: "generator", ...}
611+ handoff {from: "generator", to: "critic", reason: "iteration 2 — reviewing"}
612+ agent_start {agent: "critic", role: "content critic"}
613+ chunk {agent: "critic", content: "...evaluation...{verdict: pass}"}
614+ agent_end {agent: "critic", ...}
615+ done {totalUsage: {...}}` ,
527616 agents : [
528617 {
529618 name : "generator" ,
0 commit comments