Commit e9e7ba5
committed
fix(providers): decode shared local probes per provider
Address the latest Copilot review comments on PR #30.
Local provider discovery still dedupes network requests by probe URL, but the shared work now stops at fetching the raw HTTP response. Each preset decodes that raw response separately with its own provider identity, so shared endpoints such as llama.cpp and LocalAI cannot inherit whichever provider happened to start the probe first. This preserves the one-request-per-endpoint behavior while keeping schema errors and model decoding provider-specific.
The local discovery UI type now models status as an actual closed union with an explicit unknown fallback instead of unioning the literals with string, which collapsed the type to plain string and removed useful compile-time checking.
Regression coverage asserts that shared invalid endpoint responses are requested once but produce provider-specific decode errors for every preset using that endpoint.
Verified with:
- cd ui && bun run typecheck
- cd ui && bun run test -- api provider-utils ProvidersView
- cd ui && bun run test
- GOCACHE=/Users/chicoxyzzy/dev/hecate/.gocache go test ./internal/api -run 'TestDiscoverLocalProviders|TestLocalProviderProbeURL'
- GOCACHE=/Users/chicoxyzzy/dev/hecate/.gocache go test ./internal/api1 parent f324478 commit e9e7ba5
3 files changed
Lines changed: 65 additions & 15 deletions
File tree
- internal/api
- ui/src/types
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
32 | 40 | | |
33 | 41 | | |
34 | 42 | | |
| |||
42 | 50 | | |
43 | 51 | | |
44 | 52 | | |
45 | | - | |
| 53 | + | |
46 | 54 | | |
47 | 55 | | |
48 | 56 | | |
| |||
111 | 119 | | |
112 | 120 | | |
113 | 121 | | |
114 | | - | |
| 122 | + | |
115 | 123 | | |
116 | 124 | | |
117 | 125 | | |
| |||
122 | 130 | | |
123 | 131 | | |
124 | 132 | | |
125 | | - | |
| 133 | + | |
126 | 134 | | |
127 | 135 | | |
128 | 136 | | |
| |||
133 | 141 | | |
134 | 142 | | |
135 | 143 | | |
136 | | - | |
| 144 | + | |
137 | 145 | | |
138 | 146 | | |
139 | 147 | | |
140 | | - | |
| 148 | + | |
141 | 149 | | |
142 | 150 | | |
143 | 151 | | |
| |||
194 | 202 | | |
195 | 203 | | |
196 | 204 | | |
197 | | - | |
| 205 | + | |
198 | 206 | | |
199 | 207 | | |
200 | | - | |
| 208 | + | |
201 | 209 | | |
202 | 210 | | |
203 | 211 | | |
204 | | - | |
| 212 | + | |
205 | 213 | | |
206 | 214 | | |
207 | 215 | | |
208 | | - | |
209 | | - | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
210 | 229 | | |
211 | 230 | | |
212 | | - | |
| 231 | + | |
213 | 232 | | |
214 | 233 | | |
215 | 234 | | |
216 | 235 | | |
217 | 236 | | |
218 | 237 | | |
219 | | - | |
| 238 | + | |
220 | 239 | | |
221 | 240 | | |
222 | 241 | | |
223 | 242 | | |
224 | 243 | | |
225 | 244 | | |
226 | | - | |
| 245 | + | |
227 | 246 | | |
228 | 247 | | |
229 | 248 | | |
| |||
240 | 259 | | |
241 | 260 | | |
242 | 261 | | |
243 | | - | |
| 262 | + | |
244 | 263 | | |
245 | 264 | | |
246 | 265 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
296 | 327 | | |
297 | 328 | | |
298 | 329 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| |||
0 commit comments