File size: 6,227 Bytes
cd8bd0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
import { describe, it } from "node:test";
import assert from "node:assert/strict";
import {
  CAVEMAN_RULES,
  getRulesForContext,
  getRuleByName,
} from "../../../open-sse/services/compression/cavemanRules.ts";

describe("cavemanRules", () => {
  it("should have 29+ rules", () => {
    assert.ok(CAVEMAN_RULES.length >= 29, `Expected 29+ rules, got ${CAVEMAN_RULES.length}`);
  });

  it("every rule should have a name, pattern, replacement, and context", () => {
    for (const rule of CAVEMAN_RULES) {
      assert.ok(rule.name, "Rule missing name");
      assert.ok(rule.pattern instanceof RegExp, `Rule ${rule.name} missing pattern`);
      assert.ok(rule.replacement !== undefined, `Rule ${rule.name} missing replacement`);
      assert.ok(
        ["all", "user", "system", "assistant"].includes(rule.context),
        `Rule ${rule.name} has invalid context: ${rule.context}`
      );
    }
  });

  it("all regex patterns should compile", () => {
    for (const rule of CAVEMAN_RULES) {
      assert.doesNotThrow(() => rule.pattern.test("test"), `Rule ${rule.name} pattern fails`);
    }
  });

  it("getRulesForContext filters correctly", () => {
    const userRules = getRulesForContext("user");
    const systemRules = getRulesForContext("system");
    const assistantRules = getRulesForContext("assistant");

    assert.ok(userRules.length >= 20, `Expected 20+ user rules, got ${userRules.length}`);
    assert.ok(systemRules.length >= 15, `Expected 15+ system rules, got ${systemRules.length}`);
    assert.ok(
      assistantRules.length >= 15,
      `Expected 15+ assistant rules, got ${assistantRules.length}`
    );

    for (const rule of userRules) {
      assert.ok(
        rule.context === "all" || rule.context === "user",
        `User rules should include ${rule.name}`
      );
    }
  });

  it("getRuleByName returns correct rule", () => {
    const rule = getRuleByName("polite_framing");
    assert.ok(rule);
    assert.equal(rule.name, "polite_framing");

    const missing = getRuleByName("nonexistent_rule");
    assert.equal(missing, undefined);
  });

  it("polite_framing removes 'please'", () => {
    const rule = getRuleByName("polite_framing");
    assert.ok(rule);
    const result = "Please analyze this code".replace(rule.pattern, rule.replacement);
    assert.ok(
      !result.toLowerCase().includes("please"),
      `Expected 'please' removed, got: ${result}`
    );
  });

  it("hedging removes 'it seems like'", () => {
    const rule = getRuleByName("hedging");
    assert.ok(rule);
    const result = "It seems like this works".replace(rule.pattern, rule.replacement);
    assert.ok(
      !result.toLowerCase().includes("it seems like"),
      `Expected hedging removed, got: ${result}`
    );
  });

  it("verbose_instructions compresses", () => {
    const rule = getRuleByName("verbose_instructions");
    assert.ok(rule);
    const result = "provide a detailed explanation".replace(
      rule.pattern,
      typeof rule.replacement === "function"
        ? (...args: string[]) => rule.replacement(args[0], ...args.slice(1))
        : rule.replacement
    );
    assert.ok(result.includes("provide"), `Expected 'provide', got: ${result}`);
    assert.ok(!result.includes("detailed"), `Expected 'detailed' removed, got: ${result}`);
  });

  it("filler_adverbs removes 'basically'", () => {
    const rule = getRuleByName("filler_adverbs");
    assert.ok(rule);
    const result = "This is basically a test".replace(rule.pattern, rule.replacement);
    assert.ok(
      !result.toLowerCase().includes("basically"),
      `Expected 'basically' removed, got: ${result}`
    );
  });

  it("excessive_gratitude removes 'Thank you so much'", () => {
    const rule = getRuleByName("excessive_gratitude");
    assert.ok(rule);
    const result = "Thank you so much for your help!".replace(rule.pattern, rule.replacement);
    assert.ok(
      !result.toLowerCase().includes("thank you so much"),
      `Expected gratitude removed, got: ${result}`
    );
  });

  it("context_setup converts 'Here is my code' to 'Code:'", () => {
    const rule = getRuleByName("context_setup");
    assert.ok(rule);
    const result = "Here is my code for review:".replace(rule.pattern, rule.replacement);
    assert.ok(result.includes("Code:"), `Expected 'Code:', got: ${result}`);
  });

  it("intent_clarification converts intent to 'Goal:'", () => {
    const rule = getRuleByName("intent_clarification");
    assert.ok(rule);
    const result = "What I'm trying to do is fix the bug".replace(rule.pattern, rule.replacement);
    assert.ok(result.startsWith("Goal:"), `Expected 'Goal:', got: ${result}`);
  });

  it("purpose_phrases converts 'in order to' to 'to'", () => {
    const rule = getRuleByName("purpose_phrases");
    assert.ok(rule);
    const result = "in order to fix this".replace(rule.pattern, rule.replacement);
    assert.ok(result.startsWith("to "), `Expected 'to ', got: ${result}`);
    assert.ok(!result.includes("in order"), `Expected 'in order' removed, got: ${result}`);
  });

  it("passive_voice converts 'is being used' to 'uses'", () => {
    const rule = getRuleByName("passive_voice");
    assert.ok(rule);
    const result = "The function is being used".replace(
      rule.pattern,
      typeof rule.replacement === "function"
        ? (...args: string[]) => rule.replacement(args[0])
        : rule.replacement
    );
    assert.ok(result.includes("uses"), `Expected 'uses', got: ${result}`);
  });

  it("repeated_context converts to 'See above'", () => {
    const rule = getRuleByName("repeated_context");
    assert.ok(rule);
    const result = "As we discussed earlier, this needs fixing".replace(
      rule.pattern,
      rule.replacement
    );
    assert.ok(result.includes("See above"), `Expected 'See above', got: ${result}`);
  });

  it("emphasis_removal removes 'very' before adjectives", () => {
    const rule = getRuleByName("emphasis_removal");
    assert.ok(rule);
    const result = "This is very important".replace(rule.pattern, rule.replacement);
    assert.ok(!result.includes("very"), `Expected 'very' removed, got: ${result}`);
    assert.ok(result.includes("important"), `Expected 'important' kept, got: ${result}`);
  });
});