mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-07 07:42:13 +03:00
* fix(models): preserve static registry models not covered by synced discovery * feat(models): add functional gateway mirror synthesizer * feat(models): add functional gateway mirror gate predicate * feat(models): add functional gateway mirror DB gate * feat(models): wire functional gateway mirrors into /v1/models * refactor(models): extract synced-coverage helper to pure leaf (file-size gate) * fix(db): re-export functional gateway mirrors gate from localDb (db-rules) * fix(i18n): translate functional gateway mirror flag for Vietnamese (locale completeness) --------- Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
import { test, after } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { applyCatalogPostFilters } from "../../src/app/api/v1/models/catalogResponse.ts";
|
|
import {
|
|
removeFeatureFlagOverride,
|
|
setFeatureFlagOverride,
|
|
} from "../../src/lib/db/featureFlags.ts";
|
|
import { setFunctionalGatewayProviderSetting } from "../../src/lib/db/functionalGatewayMirrors.ts";
|
|
import { resetDbInstance } from "../../src/lib/db/core.ts";
|
|
|
|
const FLAG_KEY = "EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS";
|
|
|
|
after(() => {
|
|
removeFeatureFlagOverride(FLAG_KEY);
|
|
setFunctionalGatewayProviderSetting("agentrouter", null);
|
|
resetDbInstance();
|
|
});
|
|
|
|
// Minimal Request shim for applyCatalogPostFilters.
|
|
function makeRequest(query = ""): Request {
|
|
return new Request(`http://localhost/v1/models${query}`);
|
|
}
|
|
|
|
test("catalog post-filters do not add mirrors when gate off (default)", () => {
|
|
const models = [
|
|
{ id: "deepseek/deepseek-v4-flash", owned_by: "deepseek", root: "deepseek-v4-flash" },
|
|
];
|
|
const out = applyCatalogPostFilters(makeRequest(), models, {
|
|
connections: [],
|
|
prefixMode: "dual",
|
|
aliasToProviderId: {},
|
|
});
|
|
assert.deepEqual(out, models);
|
|
});
|
|
|
|
test("catalog post-filters synthesize a gateway mirror when gate on and gateway has a connection", () => {
|
|
setFeatureFlagOverride(FLAG_KEY, "true");
|
|
setFunctionalGatewayProviderSetting("agentrouter", "on");
|
|
|
|
const models = [
|
|
{ id: "deepseek/deepseek-v4-flash", owned_by: "deepseek", root: "deepseek-v4-flash" },
|
|
];
|
|
const out = applyCatalogPostFilters(makeRequest(), models, {
|
|
connections: [
|
|
{
|
|
id: "conn-1",
|
|
provider: "agentrouter",
|
|
isActive: true,
|
|
providerSpecificData: {},
|
|
},
|
|
],
|
|
prefixMode: "dual",
|
|
aliasToProviderId: {},
|
|
});
|
|
// The mirror pass is wired and synthesizes agentrouter/deepseek/deepseek-v4-flash
|
|
// when the gate is on AND agentrouter (a passthrough gateway) has an active
|
|
// connection covering the model.
|
|
assert.ok(
|
|
out.some((m) => m.id === "agentrouter/deepseek/deepseek-v4-flash"),
|
|
`expected mirror to be synthesized, got: ${out.map((m) => m.id).join(", ")}`
|
|
);
|
|
});
|