| import { describe, it } from "node:test"; | |
| import assert from "node:assert/strict"; | |
| import { | |
| getAvailableLanguagePacks, | |
| loadAllRulesForLanguage, | |
| loadRulePack, | |
| validateRulePack, | |
| } from "../../../open-sse/services/compression/index.ts"; | |
| import { getRulesForContext } from "../../../open-sse/services/compression/cavemanRules.ts"; | |
| import { applyRulesToText } from "../../../open-sse/services/compression/caveman.ts"; | |
| describe("Caveman file-based rule loader", () => { | |
| it("loads English rule packs by category", () => { | |
| assert.equal(loadRulePack("en", "filler", { refresh: true }).length, 14); | |
| assert.ok(loadRulePack("en", "context", { refresh: true }).length >= 8); | |
| assert.ok(loadRulePack("en", "structural", { refresh: true }).length >= 7); | |
| assert.ok(loadRulePack("en", "dedup", { refresh: true }).length >= 4); | |
| assert.ok(loadRulePack("en", "ultra", { refresh: true }).length >= 1); | |
| }); | |
| it("loads all English rules and lists metadata", () => { | |
| const rules = loadAllRulesForLanguage("en", { refresh: true }); | |
| const packs = getAvailableLanguagePacks(); | |
| assert.ok(rules.length >= 31, `Expected 31+ rules, got ${rules.length}`); | |
| assert.ok(packs.some((pack) => pack.language === "en" && pack.ruleCount >= 31)); | |
| }); | |
| it("validates rule pack structure", () => { | |
| assert.equal( | |
| validateRulePack({ | |
| language: "xx", | |
| category: "filler", | |
| rules: [{ name: "x", pattern: "\\\\btest\\\\b", replacement: "" }], | |
| }).valid, | |
| true | |
| ); | |
| assert.equal( | |
| validateRulePack({ language: "xx", category: "filler", rules: [{}] }).valid, | |
| false | |
| ); | |
| }); | |
| it("validates flags and replacement maps", () => { | |
| assert.equal( | |
| validateRulePack({ | |
| language: "xx", | |
| category: "context", | |
| rules: [ | |
| { | |
| name: "mapped", | |
| pattern: "\\b(?:one|two)\\b", | |
| flags: "g", | |
| replacementMap: { one: "1", two: "2" }, | |
| }, | |
| ], | |
| }).valid, | |
| true | |
| ); | |
| assert.equal( | |
| validateRulePack({ | |
| language: "xx", | |
| category: "context", | |
| rules: [ | |
| { | |
| name: "bad_map", | |
| pattern: "\\b(?:one|two)\\b", | |
| replacementMap: { one: 1 }, | |
| }, | |
| ], | |
| }).valid, | |
| false | |
| ); | |
| }); | |
| it("falls back to hardcoded rules when language pack is missing", () => { | |
| const rules = getRulesForContext("user", "full", "missing-language"); | |
| assert.ok(rules.some((rule) => rule.name === "polite_framing")); | |
| }); | |
| it("applies file-based English rules without losing core behavior", () => { | |
| const rules = getRulesForContext("user", "full", "en"); | |
| const { text } = applyRulesToText("Please provide a detailed explanation of this code", rules); | |
| assert.ok(!text.toLowerCase().includes("please")); | |
| assert.ok(!text.toLowerCase().includes("detailed")); | |
| assert.ok(text.includes("provide") || text.includes("explain")); | |
| }); | |
| it("applies mapped replacements without semantic regressions", () => { | |
| const fullRules = getRulesForContext("user", "full", "en"); | |
| const ultraRules = getRulesForContext("user", "ultra", "en"); | |
| assert.equal( | |
| applyRulesToText("Could you show me how to configure auth?", fullRules).text, | |
| "Show how to configure auth?" | |
| ); | |
| assert.equal( | |
| applyRulesToText("The code seems to parse JSON.", fullRules).text, | |
| "Code: parse JSON." | |
| ); | |
| assert.equal( | |
| applyRulesToText("The value was generated by the server.", fullRules).text, | |
| "value generated by server." | |
| ); | |
| assert.equal( | |
| applyRulesToText("The dependencies are outdated.", ultraRules).text, | |
| "deps are outdated." | |
| ); | |
| }); | |
| }); | |