Source { # Event Sources
  n1: circle label="Start"
  n2: rectangle label="User action event"
  n3: rectangle label="System alert event"
  n1.handle(right) -> n2.handle(left)
  n2.handle(bottom) -> Broker.n4.handle(top) [label="Publish event"]
  n3.handle(bottom) -> Broker.n4.handle(top) [label="Publish event"]
}

Broker { # Event Broker (Kafka / Pub-Sub)
  n4: rectangle label="Event bus receives event"
  n5: rectangle label="Route to subscribers"
  n4.handle(right) -> n5.handle(left)
  n5.handle(bottom) -> Orders.n6.handle(top) [label="topic: orders"]
  n5.handle(bottom) -> Alerts.n8.handle(top) [label="topic: alerts"]
  n5.handle(bottom) -> Analytics.n10.handle(top) [label="topic: analytics"]
}

Orders { # Order Processing Agent
  n6: rectangle label="Parse order event"
  n7: rectangle label="Execute fulfillment"
  n6.handle(right) -> n7.handle(left)
  n7.handle(bottom) -> Broker.n4.handle(top) [label="Publish: order.completed"]
}

Alerts { # Alert Triage Agent
  n8: rectangle label="Classify severity"
  n9: rectangle label="Route to on-call or auto-resolve"
  n8.handle(right) -> n9.handle(left)
  n9.handle(bottom) -> Broker.n4.handle(top) [label="Publish: alert.resolved"]
}

Analytics { # Analytics Agent
  n10: rectangle label="Aggregate metrics"
  n11: rectangle label="Update dashboard"
  n12: circle label="Stored"
  n10.handle(right) -> n11.handle(left)
  n11.handle(right) -> n12.handle(left)
}
