mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
enrichOllamaModelsWithContext,
|
|
resolveOllamaApiBase,
|
|
type OllamaTagModel,
|
|
} from "./ollama-models.js";
|
|
|
|
function jsonResponse(body: unknown, status = 200): Response {
|
|
return new Response(JSON.stringify(body), {
|
|
status,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
}
|
|
|
|
function requestUrl(input: string | URL | Request): string {
|
|
if (typeof input === "string") {
|
|
return input;
|
|
}
|
|
if (input instanceof URL) {
|
|
return input.toString();
|
|
}
|
|
return input.url;
|
|
}
|
|
|
|
function requestBody(body: BodyInit | null | undefined): string {
|
|
return typeof body === "string" ? body : "{}";
|
|
}
|
|
|
|
describe("ollama-models", () => {
|
|
afterEach(() => {
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
it("strips /v1 when resolving the Ollama API base", () => {
|
|
expect(resolveOllamaApiBase("http://127.0.0.1:11434/v1")).toBe("http://127.0.0.1:11434");
|
|
expect(resolveOllamaApiBase("http://127.0.0.1:11434///")).toBe("http://127.0.0.1:11434");
|
|
});
|
|
|
|
it("enriches discovered models with context windows from /api/show", async () => {
|
|
const models: OllamaTagModel[] = [{ name: "llama3:8b" }, { name: "deepseek-r1:14b" }];
|
|
const fetchMock = vi.fn(async (input: string | URL | Request, init?: RequestInit) => {
|
|
const url = requestUrl(input);
|
|
if (!url.endsWith("/api/show")) {
|
|
throw new Error(`Unexpected fetch: ${url}`);
|
|
}
|
|
const body = JSON.parse(requestBody(init?.body)) as { name?: string };
|
|
if (body.name === "llama3:8b") {
|
|
return jsonResponse({ model_info: { "llama.context_length": 65536 } });
|
|
}
|
|
return jsonResponse({});
|
|
});
|
|
vi.stubGlobal("fetch", fetchMock);
|
|
|
|
const enriched = await enrichOllamaModelsWithContext("http://127.0.0.1:11434", models);
|
|
|
|
expect(enriched).toEqual([
|
|
{ name: "llama3:8b", contextWindow: 65536 },
|
|
{ name: "deepseek-r1:14b", contextWindow: undefined },
|
|
]);
|
|
});
|
|
});
|