mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-18 21:02:50 +03:00
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host. Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean. Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import test from "node:test";
|
|
|
|
import { getRadarOffers } from "../../src/lib/radar/index.ts";
|
|
|
|
async function fixturePayload(): Promise<string> {
|
|
return readFile(new URL("../fixtures/radar-offers-canonical.json", import.meta.url), "utf8");
|
|
}
|
|
|
|
test("offers accessor short-circuits before cache when Radar is disabled", () => {
|
|
let reads = 0;
|
|
const result = getRadarOffers({
|
|
getFlag: () => false,
|
|
getCache: () => {
|
|
reads += 1;
|
|
throw new Error("cache must not be read");
|
|
},
|
|
});
|
|
|
|
assert.deepEqual(result, { offers: [], meta: null });
|
|
assert.equal(reads, 0);
|
|
});
|
|
|
|
test("offers accessor fails closed for missing, corrupt, or non-live cache", () => {
|
|
for (const cache of [
|
|
null,
|
|
{ version: "x", tier: "live", payload: "not-json", fetchedAt: "now" },
|
|
{ version: "x", tier: "community", payload: "{}", fetchedAt: "now" },
|
|
]) {
|
|
assert.deepEqual(getRadarOffers({ getFlag: () => true, getCache: () => cache }), {
|
|
offers: [],
|
|
meta: null,
|
|
});
|
|
}
|
|
});
|
|
|
|
test("offers accessor revalidates the cache and removes expired entries", async () => {
|
|
const payload = await fixturePayload();
|
|
const result = getRadarOffers({
|
|
getFlag: () => true,
|
|
getCache: () => ({
|
|
version: "2026.08.09.1",
|
|
tier: "live",
|
|
payload,
|
|
fetchedAt: "2026-08-09T12:05:00.000Z",
|
|
}),
|
|
now: () => new Date("2100-01-01T00:00:00.000Z"),
|
|
});
|
|
|
|
assert.deepEqual(
|
|
result.offers.map(({ id }) => id),
|
|
["example-partner-credit"]
|
|
);
|
|
assert.deepEqual(result.meta, {
|
|
version: "2026.08.09.1",
|
|
tier: "live",
|
|
fetchedAt: "2026-08-09T12:05:00.000Z",
|
|
});
|
|
});
|