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.
33 lines
1.8 KiB
TypeScript
33 lines
1.8 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { readFileSync, readdirSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
import { tmpdir } from "node:os";
|
|
|
|
test("characterize: trayWindows.mjs initWinTray writes a temp .ps1 (old behavior)", async () => {
|
|
const { initWinTray } = await import("../../bin/cli/tray/trayWindows.mjs");
|
|
const ORIG_PLATFORM = Object.getOwnPropertyDescriptor(process, "platform");
|
|
Object.defineProperty(process, "platform", { value: "win32", configurable: true });
|
|
const cleanup = () => {
|
|
if (ORIG_PLATFORM) Object.defineProperty(process, "platform", ORIG_PLATFORM);
|
|
};
|
|
try {
|
|
const proc = initWinTray({ port: 8609, onQuit() {}, onOpenDashboard() {}, onShowLogs() {} });
|
|
if (proc && typeof proc.on === "function") proc.on("error", () => {});
|
|
const scripts = readdirSync(tmpdir()).filter((f) => f.startsWith("omniroute-tray-") && f.endsWith(".ps1"));
|
|
assert.ok(scripts.length > 0, "initWinTray creates a temp .ps1 (expected — that is the Norton trigger)");
|
|
const content = readFileSync(join(tmpdir(), scripts[0]), "utf8");
|
|
assert.ok(content.includes("System.Windows.Forms.NotifyIcon"), "temp .ps1 uses WinForms tray");
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
});
|
|
|
|
test("REGRESSION GUARD: index.mjs no longer imports or calls the PowerShell tray (#8609)", () => {
|
|
const source = readFileSync(join(process.cwd(), "bin/cli/tray/index.mjs"), "utf8");
|
|
assert.ok(!source.includes("trayWindows"), "index.mjs must not import trayWindows.mjs");
|
|
assert.ok(!source.includes("initWinTray"), "index.mjs must not reference initWinTray");
|
|
assert.ok(!source.includes("killWinTray"), "index.mjs must not reference killWinTray");
|
|
assert.ok(source.includes("initSystrayUnix"), "index.mjs must still import initSystrayUnix");
|
|
});
|