mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-14 10:52:17 +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.
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
// Verificacao de cobertura do plano da mesh.
|
|
// Envs: BOT_URL, BOT_TOKEN. Uso: node verify-coverage.mjs <plano.json>
|
|
import { readFileSync } from "node:fs";
|
|
import { env } from "node:process";
|
|
|
|
const BOT_URL = env.BOT_URL;
|
|
const BOT_TOKEN = env.BOT_TOKEN;
|
|
const FILTER = "platform=discord&language=en&direct=only";
|
|
|
|
const plan = JSON.parse(readFileSync(process.argv[2], "utf8"));
|
|
|
|
const res = await fetch(BOT_URL + "/internal/bridge/questions?" + FILTER, {
|
|
headers: { Authorization: "Bearer " + BOT_TOKEN },
|
|
});
|
|
const json = await res.json();
|
|
const pending = json.data || [];
|
|
|
|
const gaps = [];
|
|
const amb = [];
|
|
|
|
for (const m of pending) {
|
|
const t = (m.text || "").toLowerCase();
|
|
const hits = plan.filter((e) => t.includes(e.match.toLowerCase()));
|
|
if (hits.length === 0) {
|
|
gaps.push(m.id + " :: " + t.slice(0, 80));
|
|
} else if (hits.length > 1) {
|
|
const names = hits.map((h) => h.bucket + ":" + h.match).join(" | ");
|
|
amb.push(m.id + " :: " + names + " :: " + t.slice(0, 50));
|
|
}
|
|
}
|
|
|
|
console.log("pendentes:", pending.length, "| plano:", plan.length);
|
|
console.log("\n[GAPS] sem match (" + gaps.length + "):");
|
|
for (const g of gaps) console.log(" -", g);
|
|
console.log("\n[AMB] >1 match (" + amb.length + "):");
|
|
for (const a of amb) console.log(" -", a);
|