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
/*
┌──────────────────────────────────────────────────┐
│ ChannelManager │
│ ┌─────── inbound_rx ──────┐ outbound_tx ──▶ │
│ │ polls plugins FFI │ sends into FFI │
│ └─────────────────────────┘ │
└──────────────────────────────────────────────────┘
▲ ▲
subscribe │ │ .send(...)
│ │
│ │
┌─────────────────┴────────────────┐
│ flow_router.rs │
│ maps ChannelMessage → Vec<(flow_id,start_node)>
└─────────────────────────────────┘
▲
│ for each (flow, start_node):
│
┌─────────────────┴──────────────────┐
│ FlowManager (engine) │
│ .process_message(flow, node, msg)│
└────────────────────────────────────┘
│
inside flow ▼
┌──────────────────────────────────┐
│ node.rs │
│ ┌─ChannelNode─┐ ┌─ToolNode─┐ │
│ │subscribe in │ │ process │ │
│ │emit out │ │ │ │
└──────────────────────────────────┘
*/
pub use PluginWrapper;