147 lines
4.3 KiB
TypeScript
147 lines
4.3 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import { getMcpModelsCatalog } from "../../open-sse/mcp-server/server.ts";
|
|
|
|
test("getMcpModelsCatalog aggregates only active connection model endpoints", async () => {
|
|
const calls: string[] = [];
|
|
|
|
const result = await getMcpModelsCatalog(
|
|
{},
|
|
{
|
|
listProviderConnections: async () => [
|
|
{ id: "conn-github", provider: "github", isActive: true },
|
|
{ id: "conn-codex", provider: "codex", isActive: false },
|
|
],
|
|
fetchJson: async (path: string) => {
|
|
calls.push(path);
|
|
if (path === "/api/providers/conn-github/models?excludeHidden=true") {
|
|
return {
|
|
source: "api",
|
|
models: [
|
|
{ id: "gpt-4.1", owned_by: "github", supportedEndpoints: ["chat"] },
|
|
{
|
|
id: "text-embedding-3-small",
|
|
owned_by: "github",
|
|
supportedEndpoints: ["embeddings"],
|
|
},
|
|
],
|
|
};
|
|
}
|
|
|
|
throw new Error(`Unexpected path: ${path}`);
|
|
},
|
|
}
|
|
);
|
|
|
|
assert.deepEqual(calls, ["/api/providers/conn-github/models?excludeHidden=true"]);
|
|
assert.deepEqual(result, {
|
|
models: [
|
|
{
|
|
id: "gpt-4.1",
|
|
provider: "github",
|
|
capabilities: ["chat"],
|
|
status: "available",
|
|
pricing: undefined,
|
|
},
|
|
{
|
|
id: "text-embedding-3-small",
|
|
provider: "github",
|
|
capabilities: ["embedding"],
|
|
status: "available",
|
|
pricing: undefined,
|
|
},
|
|
],
|
|
source: "api",
|
|
});
|
|
});
|
|
|
|
test("getMcpModelsCatalog exposes codex default thinking effort when no override is stored", async () => {
|
|
const result = await getMcpModelsCatalog(
|
|
{ provider: "codex" },
|
|
{
|
|
listProviderConnections: async () => [
|
|
{
|
|
id: "conn-codex",
|
|
provider: "codex",
|
|
isActive: true,
|
|
providerSpecificData: {},
|
|
},
|
|
],
|
|
fetchJson: async () => ({
|
|
source: "api",
|
|
models: [{ id: "gpt-5.5", owned_by: "codex", supportedEndpoints: ["chat"] }],
|
|
}),
|
|
}
|
|
);
|
|
|
|
assert.equal(result.models.length, 1);
|
|
assert.equal(result.models[0]?.thinkingEffort, "medium");
|
|
});
|
|
|
|
test("getMcpModelsCatalog exposes stored thinking effort overrides", async () => {
|
|
const result = await getMcpModelsCatalog(
|
|
{ provider: "chatgpt-web" },
|
|
{
|
|
listProviderConnections: async () => [
|
|
{
|
|
id: "conn-chatgpt",
|
|
provider: "chatgpt-web",
|
|
isActive: true,
|
|
providerSpecificData: { thinkingEffort: "extended" },
|
|
},
|
|
],
|
|
fetchJson: async () => ({
|
|
source: "api",
|
|
models: [{ id: "gpt-5", owned_by: "chatgpt-web", supportedEndpoints: ["chat"] }],
|
|
}),
|
|
}
|
|
);
|
|
|
|
assert.equal(result.models.length, 1);
|
|
assert.equal(result.models[0]?.thinkingEffort, "extended");
|
|
});
|
|
|
|
test("getMcpModelsCatalog resolves provider aliases to active connection ids", async () => {
|
|
const calls: string[] = [];
|
|
|
|
const result = await getMcpModelsCatalog(
|
|
{ provider: "gh", capability: "chat" },
|
|
{
|
|
listProviderConnections: async () => [
|
|
{ id: "conn-github", provider: "github", isActive: true },
|
|
{ id: "conn-codex", provider: "codex", isActive: true },
|
|
],
|
|
fetchJson: async (path: string) => {
|
|
calls.push(path);
|
|
return {
|
|
source: "api",
|
|
models: [{ id: "gpt-4.1", owned_by: "github", supportedEndpoints: ["chat"] }],
|
|
};
|
|
},
|
|
}
|
|
);
|
|
|
|
assert.deepEqual(calls, ["/api/providers/conn-github/models?excludeHidden=true"]);
|
|
assert.equal(result.models.length, 1);
|
|
assert.equal(result.models[0]?.provider, "github");
|
|
assert.deepEqual(result.models[0]?.capabilities, ["chat"]);
|
|
});
|
|
|
|
test("getMcpModelsCatalog returns empty result when requested provider has no active connection", async () => {
|
|
const result = await getMcpModelsCatalog(
|
|
{ provider: "github" },
|
|
{
|
|
listProviderConnections: async () => [{ id: "conn-codex", provider: "codex", isActive: true }],
|
|
fetchJson: async () => {
|
|
throw new Error("fetchJson should not be called without a matching active provider");
|
|
},
|
|
}
|
|
);
|
|
|
|
assert.deepEqual(result, {
|
|
models: [],
|
|
source: "provider_connections",
|
|
warning: "No active connections found for provider 'github'.",
|
|
});
|
|
}); |