feat(providers): add Free.ai registry

This commit is contained in:
diegosouzapw
2026-08-02 08:15:12 -03:00
parent 5bc6377eb6
commit 817cfa4e2f
2 changed files with 38 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
import type { RegistryEntry } from "../../shared.ts";
import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts";
export const freeAiProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({
id: "free-ai",
alias: "free-ai",
baseUrl: "https://api.free.ai/v1/chat/",
modelsUrl: "https://api.free.ai/v1/models",
models: [],
passthroughModels: true,
});

View File

@@ -0,0 +1,27 @@
import assert from "node:assert/strict";
import test from "node:test";
import { freeAiProvider } from "../../open-sse/config/providers/registry/free-ai/index.ts";
import {
DefaultExecutor,
getExecutor,
hasSpecializedExecutor,
} from "../../open-sse/executors/index.ts";
test("Free.ai exposes its exact OpenAI-compatible endpoint and live catalog", () => {
assert.equal(freeAiProvider.id, "free-ai");
assert.equal(freeAiProvider.alias, "free-ai");
assert.equal(freeAiProvider.format, "openai");
assert.equal(freeAiProvider.executor, "default");
assert.equal(freeAiProvider.authType, "apikey");
assert.equal(freeAiProvider.authHeader, "bearer");
assert.equal(freeAiProvider.baseUrl, "https://api.free.ai/v1/chat/");
assert.equal(freeAiProvider.modelsUrl, "https://api.free.ai/v1/models");
assert.deepEqual(freeAiProvider.models, []);
assert.equal(freeAiProvider.passthroughModels, true);
});
test("Free.ai uses DefaultExecutor without a specialized executor", () => {
assert.ok(getExecutor("free-ai") instanceof DefaultExecutor);
assert.equal(hasSpecializedExecutor("free-ai"), false);
});