1```mermaid
2%% ROUTER Mode Data Flow (multi-model)
3%% Detailed flows: ./flows/server-flow.mmd, ./flows/models-flow.mmd, ./flows/chat-flow.mmd
4
5sequenceDiagram
6 participant User as ๐ค User
7 participant UI as ๐งฉ UI
8 participant Stores as ๐๏ธ Stores
9 participant DB as ๐พ IndexedDB
10 participant API as ๐ llama-server
11
12 Note over User,API: ๐ Initialization (see: server-flow.mmd, models-flow.mmd)
13
14 UI->>Stores: initialize()
15 Stores->>DB: load conversations
16 Stores->>API: GET /props
17 API-->>Stores: {role: "router"}
18 Stores->>API: GET /v1/models
19 API-->>Stores: models[] with status (loaded/available)
20 loop each loaded model
21 Stores->>API: GET /props?model=X
22 API-->>Stores: modalities (vision/audio)
23 end
24
25 Note over User,API: ๐ Model Selection (see: models-flow.mmd)
26
27 User->>UI: select model
28 alt model not loaded
29 Stores->>API: POST /models/load
30 loop poll status
31 Stores->>API: GET /v1/models
32 API-->>Stores: check if loaded
33 end
34 Stores->>API: GET /props?model=X
35 API-->>Stores: cache modalities
36 end
37 Stores->>Stores: validate modalities vs conversation
38 alt valid
39 Stores->>Stores: select model
40 else invalid
41 Stores->>API: POST /models/unload
42 UI->>User: show error toast
43 end
44
45 Note over User,API: ๐ฌ Chat Flow (see: chat-flow.mmd)
46
47 User->>UI: send message
48 UI->>Stores: sendMessage()
49 Stores->>DB: save user message
50 Stores->>API: POST /v1/chat/completions {model: X}
51 Note right of API: router forwards to model
52 loop streaming
53 API-->>Stores: SSE chunks + model info
54 Stores-->>UI: reactive update
55 end
56 API-->>Stores: done + timings
57 Stores->>DB: save assistant message + model used
58
59 Note over User,API: ๐ Regenerate (optional: different model)
60
61 User->>UI: regenerate
62 Stores->>Stores: validate modalities up to this message
63 Stores->>DB: create message branch
64 Note right of Stores: same streaming flow
65
66 Note over User,API: โน๏ธ Stop
67
68 User->>UI: stop
69 Stores->>Stores: abort stream
70 Stores->>DB: save partial response
71
72 Note over User,API: ๐๏ธ LRU Unloading
73
74 Note right of API: Server auto-unloads LRU models<br/>when cache full
75 User->>UI: select unloaded model
76 Note right of Stores: triggers load flow again
77```