feat: add clear error message when llama-server not running

This commit is contained in:
William Valentin
2026-02-05 13:17:56 -08:00
parent e8079347c7
commit 8e7fa24fd6
2 changed files with 28 additions and 8 deletions
+12
View File
@@ -81,4 +81,16 @@ describe('LlamaCppClient', () => {
usage: { inputTokens: 5, outputTokens: 2 },
});
});
it('throws clear error when server not running', async () => {
mockFetch.mockRejectedValue(new TypeError('fetch failed'));
const client = new LlamaCppClient({
endpoint: 'http://localhost:8080',
});
await expect(client.chat({
messages: [{ role: 'user', content: 'Hello' }],
})).rejects.toThrow('llama-server not running at http://localhost:8080');
});
});
+16 -8
View File
@@ -48,14 +48,22 @@ export class LlamaCppClient implements ModelClient {
headers['Authorization'] = `Bearer ${this.authToken}`;
}
const response = await fetch(`${this.endpoint}/v1/chat/completions`, {
method: 'POST',
headers,
body: JSON.stringify({
messages,
max_tokens: request.maxTokens ?? 2048,
}),
});
let response: Response;
try {
response = await fetch(`${this.endpoint}/v1/chat/completions`, {
method: 'POST',
headers,
body: JSON.stringify({
messages,
max_tokens: request.maxTokens ?? 2048,
}),
});
} catch (error) {
if (error instanceof TypeError && error.message.includes('fetch failed')) {
throw new Error(`llama-server not running at ${this.endpoint}`);
}
throw error;
}
if (!response.ok) {
const text = await response.text();