mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
When `/login llama.cpp` could not connect to the server URL, pi showed only `Error: Failed to save API key for llama.cpp: fetch failed`. That happens on a refused connection, a wrong port, or `https://` against a plain-HTTP server. Node's `fetch` keeps the real reason in `error.cause`, and pi dropped it, so the user had nothing to go on. `LlamaClient` now sends its requests, including the `/models/sse` watch, through a small `fetchServer` helper. When `fetch` fails at the network level, the helper throws `Could not reach llama.cpp server at <url>: <cause>` and keeps the original error as `cause`. Aborts and timeouts are rethrown unchanged. HTTP error responses are handled as before. The same message also improves `/llama` and the model catalog refresh, because they use the same client. **Testing** - Added a test in `test/llama-extension.test.ts` that calls `LlamaClient.list()` against a closed local port and expects the server URL and `connect ECONNREFUSED ...` in the error. It fails without the change (`got 'fetch failed'`) and passes with it. The whole file passes (16 tests). - `npm run check` passes. - Manual check, `/login llama.cpp` with `http://127.0.0.1:8099` (nothing listening): - Before: `Error: Failed to save API key for llama.cpp: fetch failed` - After: `Error: Failed to save API key for llama.cpp: Could not reach llama.cpp server at http://127.0.0.1:8099: connect ECONNREFUSED 127.0.0.1:8099` Fixes #11745 Requested by @badlogic Co-authored-by: triagent <triagent@localhost> |
||
|---|---|---|
| .. | ||
| agent | ||
| ai | ||
| chord | ||
| codemode | ||
| coding-agent | ||
| durable | ||
| env | ||
| evals | ||
| mcp | ||
| schema | ||
| telemetry | ||
| tui | ||