mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-10 08:52:12 +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.
41 lines
1.7 KiB
TypeScript
41 lines
1.7 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const opencodeConfig = await import("../../src/shared/services/opencodeConfig.ts");
|
|
|
|
test("buildOpenCodeConfigDocument includes both V1 (provider) and V2 (providers) definitions", () => {
|
|
const doc = opencodeConfig.buildOpenCodeConfigDocument({
|
|
baseUrl: "http://localhost:20128/v1",
|
|
apiKey: "{env:OMNIROUTE_API_KEY}",
|
|
models: ["auto/best-coding"],
|
|
});
|
|
|
|
assert.ok(doc.provider?.omniroute, "V1 provider.omniroute must be present");
|
|
assert.equal(doc.provider.omniroute.npm, "@ai-sdk/openai-compatible");
|
|
assert.equal(doc.provider.omniroute.options.baseURL, "http://localhost:20128/v1");
|
|
|
|
assert.ok(doc.providers?.omniroute, "V2 providers.omniroute must be present");
|
|
assert.equal(doc.providers.omniroute.package, "@opencode-ai/ai/providers/openai-compatible");
|
|
assert.equal(doc.providers.omniroute.settings.baseURL, "http://localhost:20128/v1");
|
|
assert.equal(doc.providers.omniroute.settings.apiKey, "{env:OMNIROUTE_API_KEY}");
|
|
assert.ok(doc.providers.omniroute.models["auto/best-coding"].limit, "V2 model limit must be present");
|
|
});
|
|
|
|
test("mergeOpenCodeConfig preserves existing properties and updates both provider and providers", () => {
|
|
const existing = {
|
|
$schema: "https://opencode.ai/config.json",
|
|
customField: "keep-me",
|
|
};
|
|
|
|
const merged = opencodeConfig.mergeOpenCodeConfig(existing, {
|
|
baseUrl: "http://localhost:20128/v1",
|
|
apiKey: "sk_test_key",
|
|
models: ["auto/best-coding"],
|
|
});
|
|
|
|
assert.equal(merged.customField, "keep-me");
|
|
assert.ok(merged.provider?.omniroute);
|
|
assert.ok(merged.providers?.omniroute);
|
|
assert.equal(merged.providers.omniroute.settings.apiKey, "sk_test_key");
|
|
});
|