1```mermaid
2sequenceDiagram
3 participant UI as ๐งฉ +layout.svelte
4 participant serverStore as ๐๏ธ serverStore
5 participant PropsSvc as โ๏ธ PropsService
6 participant API as ๐ llama-server
7
8 Note over serverStore: State:<br/>props: ApiLlamaCppServerProps | null<br/>loading, error<br/>role: ServerRole | null (MODEL | ROUTER)<br/>fetchPromise (deduplication)
9
10 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
11 Note over UI,API: ๐ INITIALIZATION
12 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
13
14 UI->>serverStore: fetch()
15 activate serverStore
16
17 alt fetchPromise exists (already fetching)
18 serverStore-->>UI: return fetchPromise
19 Note right of serverStore: Deduplicate concurrent calls
20 end
21
22 serverStore->>serverStore: loading = true
23 serverStore->>serverStore: fetchPromise = new Promise()
24
25 serverStore->>PropsSvc: fetch()
26 PropsSvc->>API: GET /props
27 API-->>PropsSvc: ApiLlamaCppServerProps
28 Note right of API: {role, model_path, model_alias,<br/>modalities, default_generation_settings, ...}
29
30 PropsSvc-->>serverStore: props
31 serverStore->>serverStore: props = $state(data)
32
33 serverStore->>serverStore: detectRole(props)
34 Note right of serverStore: role = props.role === "router"<br/> ? ServerRole.ROUTER<br/> : ServerRole.MODEL
35
36 serverStore->>serverStore: loading = false
37 serverStore->>serverStore: fetchPromise = null
38 deactivate serverStore
39
40 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
41 Note over UI,API: ๐ COMPUTED GETTERS
42 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
43
44 Note over serverStore: Getters from props:
45
46 rect rgb(240, 255, 240)
47 Note over serverStore: defaultParams<br/>โ props.default_generation_settings.params<br/>(temperature, top_p, top_k, etc.)
48 end
49
50 rect rgb(240, 255, 240)
51 Note over serverStore: contextSize<br/>โ props.default_generation_settings.n_ctx
52 end
53
54 rect rgb(255, 240, 240)
55 Note over serverStore: isRouterMode<br/>โ role === ServerRole.ROUTER
56 end
57
58 rect rgb(255, 240, 240)
59 Note over serverStore: isModelMode<br/>โ role === ServerRole.MODEL
60 end
61
62 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
63 Note over UI,API: ๐ RELATIONSHIPS
64 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
65
66 Note over serverStore: Used by:
67 Note right of serverStore: - modelsStore: role detection, MODEL mode modalities<br/>- settingsStore: syncWithServerDefaults (defaultParams)<br/>- chatStore: contextSize for processing state<br/>- UI components: isRouterMode for conditional rendering
68
69 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
70 Note over UI,API: โ ERROR HANDLING
71 %% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
72
73 Note over serverStore: getErrorMessage(): string | null<br/>Returns formatted error for UI display
74
75 Note over serverStore: clear(): void<br/>Resets all state (props, error, loading, role)
76```