28 lines
825 B
TypeScript
28 lines
825 B
TypeScript
import type { FastifyInstance } from 'fastify';
|
|
import type { Config } from '../config.js';
|
|
import type { ModelInfo } from '../types/api.js';
|
|
|
|
interface LlamaSwapModelsResponse {
|
|
data?: ModelInfo[];
|
|
}
|
|
|
|
export function registerModelRoutes(app: FastifyInstance, config: Config): void {
|
|
app.get('/api/models', async (_req, reply) => {
|
|
try {
|
|
const res = await fetch(`${config.LLAMA_SWAP_URL}/v1/models`);
|
|
if (!res.ok) {
|
|
reply.code(502);
|
|
return { error: `llama-swap returned ${res.status}` };
|
|
}
|
|
const parsed = (await res.json()) as LlamaSwapModelsResponse;
|
|
return parsed.data ?? [];
|
|
} catch (err) {
|
|
reply.code(502);
|
|
return {
|
|
error: 'failed to reach llama-swap',
|
|
details: err instanceof Error ? err.message : String(err),
|
|
};
|
|
}
|
|
});
|
|
}
|