mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-16 11:52:26 +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.
69 lines
2.6 KiB
TypeScript
69 lines
2.6 KiB
TypeScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { cavemanCompress } from "../../../open-sse/services/compression/caveman.ts";
|
|
|
|
// Regression guard for #9144: Caveman's recapitalizeSentences()/cleanupArtifacts()
|
|
// treated every line-start as a sentence-start, so an unfenced raw code file
|
|
// reference (e.g. a Copilot `#file` attachment) had its keywords/identifiers
|
|
// recapitalized (`function`→`Function`, `input.variables`→`Input.variables`) and
|
|
// its indentation collapsed. Fenced code was already protected via preservation;
|
|
// this only covers the unfenced/raw case.
|
|
|
|
const FILE_REFERENCE = [
|
|
"Please review this function:",
|
|
"",
|
|
"function decodeUplink(input) {",
|
|
" input.variables = input.metadata;",
|
|
" var decoded = decode(input.bytes);",
|
|
" return { data: decoded };",
|
|
"}",
|
|
].join("\n");
|
|
|
|
describe("Caveman — #9144 raw code preservation", () => {
|
|
it("preserves an unfenced file-reference's JavaScript casing and keywords", () => {
|
|
const result = cavemanCompress({
|
|
messages: [{ role: "user", content: FILE_REFERENCE }],
|
|
} as never, { enabled: true });
|
|
const compressedText =
|
|
typeof result.body.messages === "object" &&
|
|
Array.isArray((result.body as { messages: unknown[] }).messages)
|
|
? String(
|
|
(
|
|
(result.body as { messages: Array<{ content: unknown }> }).messages[0] as {
|
|
content: unknown;
|
|
}
|
|
).content
|
|
)
|
|
: "";
|
|
|
|
assert.match(compressedText, /function decodeUplink/, "must not capitalize 'function'");
|
|
assert.match(compressedText, /input\.variables/, "must not capitalize 'input.variables'");
|
|
assert.match(compressedText, /\bvar decoded\b/, "must not capitalize 'var'");
|
|
assert.match(compressedText, /\breturn \{/, "must not capitalize 'return'");
|
|
});
|
|
|
|
it("still recapitalizes plain prose (control)", () => {
|
|
const result = cavemanCompress({
|
|
messages: [
|
|
{
|
|
role: "user",
|
|
content:
|
|
"hello there. this is a plain prose message with no code at all in it whatsoever. thanks!",
|
|
},
|
|
],
|
|
} as never, { enabled: true });
|
|
const compressedText =
|
|
typeof result.body.messages === "object" &&
|
|
Array.isArray((result.body as { messages: unknown[] }).messages)
|
|
? String(
|
|
(
|
|
(result.body as { messages: Array<{ content: unknown }> }).messages[0] as {
|
|
content: unknown;
|
|
}
|
|
).content
|
|
)
|
|
: "";
|
|
assert.match(compressedText, /\. This is a plain/, "prose recapitalization must still work");
|
|
});
|
|
});
|