ai-output-assert 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +183 -0
  2. package/dist/__tests__/matchers/content.test.d.ts +2 -0
  3. package/dist/__tests__/matchers/content.test.d.ts.map +1 -0
  4. package/dist/__tests__/matchers/content.test.js +66 -0
  5. package/dist/__tests__/matchers/content.test.js.map +1 -0
  6. package/dist/__tests__/matchers/format.test.d.ts +2 -0
  7. package/dist/__tests__/matchers/format.test.d.ts.map +1 -0
  8. package/dist/__tests__/matchers/format.test.js +100 -0
  9. package/dist/__tests__/matchers/format.test.js.map +1 -0
  10. package/dist/__tests__/matchers/quality.test.d.ts +2 -0
  11. package/dist/__tests__/matchers/quality.test.d.ts.map +1 -0
  12. package/dist/__tests__/matchers/quality.test.js +98 -0
  13. package/dist/__tests__/matchers/quality.test.js.map +1 -0
  14. package/dist/__tests__/matchers/safety.test.d.ts +2 -0
  15. package/dist/__tests__/matchers/safety.test.d.ts.map +1 -0
  16. package/dist/__tests__/matchers/safety.test.js +120 -0
  17. package/dist/__tests__/matchers/safety.test.js.map +1 -0
  18. package/dist/__tests__/setup.test.d.ts +2 -0
  19. package/dist/__tests__/setup.test.d.ts.map +1 -0
  20. package/dist/__tests__/setup.test.js +49 -0
  21. package/dist/__tests__/setup.test.js.map +1 -0
  22. package/dist/__tests__/types.test.d.ts +2 -0
  23. package/dist/__tests__/types.test.d.ts.map +1 -0
  24. package/dist/__tests__/types.test.js +50 -0
  25. package/dist/__tests__/types.test.js.map +1 -0
  26. package/dist/__tests__/utils/cosine-similarity.test.d.ts +2 -0
  27. package/dist/__tests__/utils/cosine-similarity.test.d.ts.map +1 -0
  28. package/dist/__tests__/utils/cosine-similarity.test.js +30 -0
  29. package/dist/__tests__/utils/cosine-similarity.test.js.map +1 -0
  30. package/dist/__tests__/utils/embedding-cache.test.d.ts +2 -0
  31. package/dist/__tests__/utils/embedding-cache.test.d.ts.map +1 -0
  32. package/dist/__tests__/utils/embedding-cache.test.js +41 -0
  33. package/dist/__tests__/utils/embedding-cache.test.js.map +1 -0
  34. package/dist/__tests__/utils/json-extract.test.d.ts +2 -0
  35. package/dist/__tests__/utils/json-extract.test.d.ts.map +1 -0
  36. package/dist/__tests__/utils/json-extract.test.js +32 -0
  37. package/dist/__tests__/utils/json-extract.test.js.map +1 -0
  38. package/dist/__tests__/utils/luhn.test.d.ts +2 -0
  39. package/dist/__tests__/utils/luhn.test.d.ts.map +1 -0
  40. package/dist/__tests__/utils/luhn.test.js +25 -0
  41. package/dist/__tests__/utils/luhn.test.js.map +1 -0
  42. package/dist/__tests__/utils/ngrams.test.d.ts +2 -0
  43. package/dist/__tests__/utils/ngrams.test.d.ts.map +1 -0
  44. package/dist/__tests__/utils/ngrams.test.js +28 -0
  45. package/dist/__tests__/utils/ngrams.test.js.map +1 -0
  46. package/dist/__tests__/utils/regex-escape.test.d.ts +2 -0
  47. package/dist/__tests__/utils/regex-escape.test.d.ts.map +1 -0
  48. package/dist/__tests__/utils/regex-escape.test.js +48 -0
  49. package/dist/__tests__/utils/regex-escape.test.js.map +1 -0
  50. package/dist/__tests__/utils/sentences.test.d.ts +2 -0
  51. package/dist/__tests__/utils/sentences.test.d.ts.map +1 -0
  52. package/dist/__tests__/utils/sentences.test.js +39 -0
  53. package/dist/__tests__/utils/sentences.test.js.map +1 -0
  54. package/dist/__tests__/utils/tokenizer.test.d.ts +2 -0
  55. package/dist/__tests__/utils/tokenizer.test.d.ts.map +1 -0
  56. package/dist/__tests__/utils/tokenizer.test.js +25 -0
  57. package/dist/__tests__/utils/tokenizer.test.js.map +1 -0
  58. package/dist/catalogs/hedging-phrases.d.ts +4 -0
  59. package/dist/catalogs/hedging-phrases.d.ts.map +1 -0
  60. package/dist/catalogs/hedging-phrases.js +49 -0
  61. package/dist/catalogs/hedging-phrases.js.map +1 -0
  62. package/dist/catalogs/pii-patterns.d.ts +3 -0
  63. package/dist/catalogs/pii-patterns.d.ts.map +1 -0
  64. package/dist/catalogs/pii-patterns.js +35 -0
  65. package/dist/catalogs/pii-patterns.js.map +1 -0
  66. package/dist/catalogs/toxic-words.d.ts +3 -0
  67. package/dist/catalogs/toxic-words.d.ts.map +1 -0
  68. package/dist/catalogs/toxic-words.js +32 -0
  69. package/dist/catalogs/toxic-words.js.map +1 -0
  70. package/dist/index.d.ts +21 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +76 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/matchers/content.d.ts +6 -0
  75. package/dist/matchers/content.d.ts.map +1 -0
  76. package/dist/matchers/content.js +54 -0
  77. package/dist/matchers/content.js.map +1 -0
  78. package/dist/matchers/format.d.ts +6 -0
  79. package/dist/matchers/format.d.ts.map +1 -0
  80. package/dist/matchers/format.js +121 -0
  81. package/dist/matchers/format.js.map +1 -0
  82. package/dist/matchers/quality.d.ts +9 -0
  83. package/dist/matchers/quality.d.ts.map +1 -0
  84. package/dist/matchers/quality.js +107 -0
  85. package/dist/matchers/quality.js.map +1 -0
  86. package/dist/matchers/safety.d.ts +6 -0
  87. package/dist/matchers/safety.d.ts.map +1 -0
  88. package/dist/matchers/safety.js +87 -0
  89. package/dist/matchers/safety.js.map +1 -0
  90. package/dist/matchers/semantic.d.ts +12 -0
  91. package/dist/matchers/semantic.d.ts.map +1 -0
  92. package/dist/matchers/semantic.js +79 -0
  93. package/dist/matchers/semantic.js.map +1 -0
  94. package/dist/matchers/structural.d.ts +7 -0
  95. package/dist/matchers/structural.d.ts.map +1 -0
  96. package/dist/matchers/structural.js +154 -0
  97. package/dist/matchers/structural.js.map +1 -0
  98. package/dist/matchers/tone.d.ts +9 -0
  99. package/dist/matchers/tone.d.ts.map +1 -0
  100. package/dist/matchers/tone.js +138 -0
  101. package/dist/matchers/tone.js.map +1 -0
  102. package/dist/setup.d.ts +4 -0
  103. package/dist/setup.d.ts.map +1 -0
  104. package/dist/setup.js +92 -0
  105. package/dist/setup.js.map +1 -0
  106. package/dist/types.d.ts +43 -0
  107. package/dist/types.d.ts.map +1 -0
  108. package/dist/types.js +3 -0
  109. package/dist/types.js.map +1 -0
  110. package/dist/utils/cosine-similarity.d.ts +2 -0
  111. package/dist/utils/cosine-similarity.d.ts.map +1 -0
  112. package/dist/utils/cosine-similarity.js +18 -0
  113. package/dist/utils/cosine-similarity.js.map +1 -0
  114. package/dist/utils/embedding-cache.d.ts +3 -0
  115. package/dist/utils/embedding-cache.d.ts.map +1 -0
  116. package/dist/utils/embedding-cache.js +14 -0
  117. package/dist/utils/embedding-cache.js.map +1 -0
  118. package/dist/utils/json-extract.d.ts +2 -0
  119. package/dist/utils/json-extract.d.ts.map +1 -0
  120. package/dist/utils/json-extract.js +8 -0
  121. package/dist/utils/json-extract.js.map +1 -0
  122. package/dist/utils/luhn.d.ts +2 -0
  123. package/dist/utils/luhn.d.ts.map +1 -0
  124. package/dist/utils/luhn.js +22 -0
  125. package/dist/utils/luhn.js.map +1 -0
  126. package/dist/utils/ngrams.d.ts +2 -0
  127. package/dist/utils/ngrams.d.ts.map +1 -0
  128. package/dist/utils/ngrams.js +13 -0
  129. package/dist/utils/ngrams.js.map +1 -0
  130. package/dist/utils/regex-escape.d.ts +2 -0
  131. package/dist/utils/regex-escape.d.ts.map +1 -0
  132. package/dist/utils/regex-escape.js +7 -0
  133. package/dist/utils/regex-escape.js.map +1 -0
  134. package/dist/utils/sentences.d.ts +2 -0
  135. package/dist/utils/sentences.d.ts.map +1 -0
  136. package/dist/utils/sentences.js +36 -0
  137. package/dist/utils/sentences.js.map +1 -0
  138. package/dist/utils/tokenizer.d.ts +2 -0
  139. package/dist/utils/tokenizer.d.ts.map +1 -0
  140. package/dist/utils/tokenizer.js +7 -0
  141. package/dist/utils/tokenizer.js.map +1 -0
  142. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.test.js","sourceRoot":"","sources":["../../../src/__tests__/matchers/safety.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const setup_1 = require("../setup");
5
+ (0, vitest_1.describe)('setupAIAssertions', () => {
6
+ (0, vitest_1.beforeEach)(() => {
7
+ // Reset global options before each test
8
+ (0, setup_1.setupAIAssertions)({});
9
+ });
10
+ (0, vitest_1.it)('sets global options when called with options', () => {
11
+ const options = {
12
+ semanticThreshold: 0.9,
13
+ hedgingMaxRatio: 0.2,
14
+ };
15
+ (0, setup_1.setupAIAssertions)(options);
16
+ const stored = (0, setup_1.getGlobalOptions)();
17
+ (0, vitest_1.expect)(stored.semanticThreshold).toBe(0.9);
18
+ (0, vitest_1.expect)(stored.hedgingMaxRatio).toBe(0.2);
19
+ });
20
+ (0, vitest_1.it)('merges options rather than replacing', () => {
21
+ (0, setup_1.setupAIAssertions)({ semanticThreshold: 0.8 });
22
+ (0, setup_1.setupAIAssertions)({ hedgingMaxRatio: 0.1 });
23
+ const stored = (0, setup_1.getGlobalOptions)();
24
+ (0, vitest_1.expect)(stored.semanticThreshold).toBe(0.8);
25
+ (0, vitest_1.expect)(stored.hedgingMaxRatio).toBe(0.1);
26
+ });
27
+ (0, vitest_1.it)('can be called with no arguments', () => {
28
+ (0, vitest_1.expect)(() => (0, setup_1.setupAIAssertions)()).not.toThrow();
29
+ });
30
+ (0, vitest_1.it)('can be called with empty options', () => {
31
+ (0, vitest_1.expect)(() => (0, setup_1.setupAIAssertions)({})).not.toThrow();
32
+ });
33
+ (0, vitest_1.it)('stores embedFn reference', () => {
34
+ const mockEmbed = async (text) => {
35
+ void text;
36
+ return [0.1, 0.2, 0.3];
37
+ };
38
+ (0, setup_1.setupAIAssertions)({ embedFn: mockEmbed });
39
+ (0, vitest_1.expect)((0, setup_1.getGlobalOptions)().embedFn).toBe(mockEmbed);
40
+ });
41
+ });
42
+ (0, vitest_1.describe)('getGlobalOptions', () => {
43
+ (0, vitest_1.it)('returns an object', () => {
44
+ const opts = (0, setup_1.getGlobalOptions)();
45
+ (0, vitest_1.expect)(typeof opts).toBe('object');
46
+ (0, vitest_1.expect)(opts).not.toBeNull();
47
+ });
48
+ });
49
+ //# sourceMappingURL=setup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":";;AAAA,mCAA0D;AAC1D,oCAA+D;AAG/D,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,wCAAwC;QACxC,IAAA,yBAAiB,EAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAuB;YAClC,iBAAiB,EAAE,GAAG;YACtB,eAAe,EAAE,GAAG;SACrB,CAAC;QACF,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,wBAAgB,GAAE,CAAC;QAClC,IAAA,eAAM,EAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAiB,EAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAA,yBAAiB,EAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAA,wBAAgB,GAAE,CAAC;QAClC,IAAA,eAAM,EAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAiB,GAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACvC,KAAK,IAAI,CAAC;YACV,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,IAAA,yBAAiB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,IAAA,wBAAgB,GAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAA,wBAAgB,GAAE,CAAC;QAChC,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ (0, vitest_1.describe)('types', () => {
5
+ (0, vitest_1.it)('MatcherResult has pass, message fn, details', () => {
6
+ const result = {
7
+ pass: true,
8
+ message: () => 'ok',
9
+ details: { score: 0.9 },
10
+ };
11
+ (0, vitest_1.expectTypeOf)(result.pass).toBeBoolean();
12
+ (0, vitest_1.expectTypeOf)(result.message).toBeFunction();
13
+ (0, vitest_1.expectTypeOf)(result.details).toMatchTypeOf();
14
+ });
15
+ (0, vitest_1.it)('AIAssertionOptions all fields are optional', () => {
16
+ // Should compile with empty object
17
+ const opts = {};
18
+ (0, vitest_1.expectTypeOf)(opts).toMatchTypeOf();
19
+ });
20
+ (0, vitest_1.it)('PIIMatch position is a tuple [number, number]', () => {
21
+ const match = {
22
+ type: 'email',
23
+ value: 'test@example.com',
24
+ position: [0, 16],
25
+ };
26
+ (0, vitest_1.expectTypeOf)(match.position).toMatchTypeOf();
27
+ });
28
+ (0, vitest_1.it)('ToxicWord severity union is exhaustive', () => {
29
+ const critical = { word: 'slur', severity: 'critical' };
30
+ const warning = { word: 'profanity', severity: 'warning' };
31
+ const info = { word: 'mild', severity: 'info' };
32
+ (0, vitest_1.expectTypeOf)(critical.severity).toMatchTypeOf();
33
+ (0, vitest_1.expectTypeOf)(warning.severity).toMatchTypeOf();
34
+ (0, vitest_1.expectTypeOf)(info.severity).toMatchTypeOf();
35
+ });
36
+ (0, vitest_1.it)('Tone union has 4 values', () => {
37
+ const tones = ['formal', 'casual', 'technical', 'friendly'];
38
+ (0, vitest_1.expectTypeOf)(tones).toMatchTypeOf();
39
+ // All 4 values are valid
40
+ const formal = 'formal';
41
+ const casual = 'casual';
42
+ const technical = 'technical';
43
+ const friendly = 'friendly';
44
+ (0, vitest_1.expectTypeOf)(formal).toMatchTypeOf();
45
+ (0, vitest_1.expectTypeOf)(casual).toMatchTypeOf();
46
+ (0, vitest_1.expectTypeOf)(technical).toMatchTypeOf();
47
+ (0, vitest_1.expectTypeOf)(friendly).toMatchTypeOf();
48
+ });
49
+ });
50
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":";;AAAA,mCAAoD;AASpD,IAAA,iBAAQ,EAAC,OAAO,EAAE,GAAG,EAAE;IACrB,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;YACnB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB,CAAC;QACF,IAAA,qBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,IAAA,qBAAY,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAA,qBAAY,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAA2B,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,mCAAmC;QACnC,MAAM,IAAI,GAAuB,EAAE,CAAC;QACpC,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC,aAAa,EAAsB,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAa;YACtB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SAClB,CAAC;QACF,IAAA,qBAAY,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAoB,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QACnE,MAAM,OAAO,GAAc,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC3D,IAAA,qBAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAmC,CAAC;QACjF,IAAA,qBAAY,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAmC,CAAC;QAChF,IAAA,qBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAmC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,KAAK,GAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACpE,IAAA,qBAAY,EAAC,KAAK,CAAC,CAAC,aAAa,EAAU,CAAC;QAC5C,yBAAyB;QACzB,MAAM,MAAM,GAAS,QAAQ,CAAC;QAC9B,MAAM,MAAM,GAAS,QAAQ,CAAC;QAC9B,MAAM,SAAS,GAAS,WAAW,CAAC;QACpC,MAAM,QAAQ,GAAS,UAAU,CAAC;QAClC,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC,aAAa,EAAQ,CAAC;QAC3C,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC,aAAa,EAAQ,CAAC;QAC3C,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC,aAAa,EAAQ,CAAC;QAC9C,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC,aAAa,EAAQ,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cosine-similarity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosine-similarity.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/cosine-similarity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const cosine_similarity_1 = require("../../utils/cosine-similarity");
5
+ (0, vitest_1.describe)('cosineSimilarity', () => {
6
+ (0, vitest_1.it)('identical vectors return 1.0', () => {
7
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([1, 2, 3], [1, 2, 3])).toBeCloseTo(1.0, 10);
8
+ });
9
+ (0, vitest_1.it)('orthogonal vectors return 0.0', () => {
10
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([1, 0, 0], [0, 1, 0])).toBeCloseTo(0.0, 10);
11
+ });
12
+ (0, vitest_1.it)('opposite vectors return -1.0', () => {
13
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([1, 0, 0], [-1, 0, 0])).toBeCloseTo(-1.0, 10);
14
+ });
15
+ (0, vitest_1.it)('zero vector returns 0.0', () => {
16
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([0, 0, 0], [1, 2, 3])).toBe(0);
17
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([1, 2, 3], [0, 0, 0])).toBe(0);
18
+ (0, vitest_1.expect)((0, cosine_similarity_1.cosineSimilarity)([0, 0, 0], [0, 0, 0])).toBe(0);
19
+ });
20
+ (0, vitest_1.it)('dimension mismatch throws', () => {
21
+ (0, vitest_1.expect)(() => (0, cosine_similarity_1.cosineSimilarity)([1, 2], [1, 2, 3])).toThrow('Dimension mismatch: 2 vs 3');
22
+ });
23
+ (0, vitest_1.it)('typical similarity between [1,2,3] and [1,2,4]', () => {
24
+ const sim = (0, cosine_similarity_1.cosineSimilarity)([1, 2, 3], [1, 2, 4]);
25
+ // Should be high but less than 1
26
+ (0, vitest_1.expect)(sim).toBeGreaterThan(0.99);
27
+ (0, vitest_1.expect)(sim).toBeLessThan(1.0);
28
+ });
29
+ });
30
+ //# sourceMappingURL=cosine-similarity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosine-similarity.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/cosine-similarity.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,qEAAiE;AAEjE,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,IAAA,oCAAgB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,iCAAiC;QACjC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=embedding-cache.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-cache.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/embedding-cache.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const embedding_cache_1 = require("../../utils/embedding-cache");
5
+ (0, vitest_1.describe)('createCachedEmbedFn', () => {
6
+ (0, vitest_1.it)('calls underlying fn once for same input', async () => {
7
+ const mockEmbed = vitest_1.vi.fn().mockResolvedValue([1, 2, 3]);
8
+ const cached = (0, embedding_cache_1.createCachedEmbedFn)(mockEmbed);
9
+ await cached('hello');
10
+ await cached('hello');
11
+ (0, vitest_1.expect)(mockEmbed).toHaveBeenCalledTimes(1);
12
+ });
13
+ (0, vitest_1.it)('returns cached result on second call', async () => {
14
+ const mockEmbed = vitest_1.vi.fn().mockResolvedValue([0.1, 0.2, 0.3]);
15
+ const cached = (0, embedding_cache_1.createCachedEmbedFn)(mockEmbed);
16
+ const first = await cached('test');
17
+ const second = await cached('test');
18
+ (0, vitest_1.expect)(first).toEqual([0.1, 0.2, 0.3]);
19
+ (0, vitest_1.expect)(second).toEqual([0.1, 0.2, 0.3]);
20
+ (0, vitest_1.expect)(second).toBe(first); // same reference from cache
21
+ });
22
+ (0, vitest_1.it)('different inputs are both cached separately', async () => {
23
+ let callCount = 0;
24
+ const mockEmbed = vitest_1.vi.fn().mockImplementation(async (text) => {
25
+ callCount++;
26
+ return text === 'hello' ? [1, 0, 0] : [0, 1, 0];
27
+ });
28
+ const cached = (0, embedding_cache_1.createCachedEmbedFn)(mockEmbed);
29
+ const a1 = await cached('hello');
30
+ const b1 = await cached('world');
31
+ const a2 = await cached('hello');
32
+ const b2 = await cached('world');
33
+ (0, vitest_1.expect)(mockEmbed).toHaveBeenCalledTimes(2);
34
+ (0, vitest_1.expect)(callCount).toBe(2);
35
+ (0, vitest_1.expect)(a1).toEqual([1, 0, 0]);
36
+ (0, vitest_1.expect)(b1).toEqual([0, 1, 0]);
37
+ (0, vitest_1.expect)(a2).toBe(a1);
38
+ (0, vitest_1.expect)(b2).toBe(b1);
39
+ });
40
+ });
41
+ //# sourceMappingURL=embedding-cache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-cache.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/embedding-cache.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=json-extract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-extract.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/json-extract.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const json_extract_1 = require("../../utils/json-extract");
5
+ (0, vitest_1.describe)('extractJSONFromCodeFence', () => {
6
+ (0, vitest_1.it)('extracts JSON from ```json fence', () => {
7
+ const text = '```json\n{"name": "Alice"}\n```';
8
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)(text)).toBe('{"name": "Alice"}');
9
+ });
10
+ (0, vitest_1.it)('extracts content from plain ``` fence', () => {
11
+ const text = '```\n{"name": "Alice"}\n```';
12
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)(text)).toBe('{"name": "Alice"}');
13
+ });
14
+ (0, vitest_1.it)('returns null when no code fence', () => {
15
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)('just some text')).toBeNull();
16
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)('')).toBeNull();
17
+ });
18
+ (0, vitest_1.it)('preserves nested content', () => {
19
+ const json = '{\n "user": {\n "name": "Alice",\n "age": 30\n }\n}';
20
+ const text = '```json\n' + json + '\n```';
21
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)(text)).toBe(json);
22
+ });
23
+ (0, vitest_1.it)('trims whitespace from extracted content', () => {
24
+ const text = '```json\n {"key": "value"} \n```';
25
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)(text)).toBe('{"key": "value"}');
26
+ });
27
+ (0, vitest_1.it)('handles uppercase JSON tag', () => {
28
+ const text = '```JSON\n{"x": 1}\n```';
29
+ (0, vitest_1.expect)((0, json_extract_1.extractJSONFromCodeFence)(text)).toBe('{"x": 1}');
30
+ });
31
+ });
32
+ //# sourceMappingURL=json-extract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-extract.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/json-extract.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2DAAoE;AAEpE,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,iCAAiC,CAAC;QAC/C,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,6BAA6B,CAAC;QAC3C,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9D,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,6DAA6D,CAAC;QAC3E,MAAM,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC;QAC1C,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,oCAAoC,CAAC;QAClD,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG,wBAAwB,CAAC;QACtC,IAAA,eAAM,EAAC,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=luhn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luhn.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/luhn.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const luhn_1 = require("../../utils/luhn");
5
+ (0, vitest_1.describe)('luhnCheck', () => {
6
+ (0, vitest_1.it)('valid Visa card 4532015112830366 returns true', () => {
7
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('4532015112830366')).toBe(true);
8
+ });
9
+ (0, vitest_1.it)('invalid card 1234567890123456 returns false', () => {
10
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('1234567890123456')).toBe(false);
11
+ });
12
+ (0, vitest_1.it)('hyphens are stripped: 4532-0151-1283-0366 returns true', () => {
13
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('4532-0151-1283-0366')).toBe(true);
14
+ });
15
+ (0, vitest_1.it)('empty string returns false', () => {
16
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('')).toBe(false);
17
+ });
18
+ (0, vitest_1.it)('non-digit only string returns false', () => {
19
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('abcd')).toBe(false);
20
+ });
21
+ (0, vitest_1.it)('spaces are stripped correctly', () => {
22
+ (0, vitest_1.expect)((0, luhn_1.luhnCheck)('4532 0151 1283 0366')).toBe(true);
23
+ });
24
+ });
25
+ //# sourceMappingURL=luhn.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luhn.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/luhn.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2CAA6C;AAE7C,IAAA,iBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAM,EAAC,IAAA,gBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ngrams.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngrams.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/ngrams.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const ngrams_1 = require("../../utils/ngrams");
5
+ (0, vitest_1.describe)('extractNgrams', () => {
6
+ (0, vitest_1.it)('n=1 returns individual tokens', () => {
7
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b', 'c'], 1)).toEqual(['a', 'b', 'c']);
8
+ });
9
+ (0, vitest_1.it)('n=2 returns bigrams', () => {
10
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b', 'c'], 2)).toEqual(['a b', 'b c']);
11
+ });
12
+ (0, vitest_1.it)('n=3 returns trigrams', () => {
13
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b', 'c', 'd'], 3)).toEqual(['a b c', 'b c d']);
14
+ });
15
+ (0, vitest_1.it)('n larger than token count returns []', () => {
16
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b'], 5)).toEqual([]);
17
+ });
18
+ (0, vitest_1.it)('n=0 returns []', () => {
19
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b', 'c'], 0)).toEqual([]);
20
+ });
21
+ (0, vitest_1.it)('empty tokens with n=1 returns []', () => {
22
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)([], 1)).toEqual([]);
23
+ });
24
+ (0, vitest_1.it)('exact length match returns one ngram', () => {
25
+ (0, vitest_1.expect)((0, ngrams_1.extractNgrams)(['a', 'b', 'c'], 3)).toEqual(['a b c']);
26
+ });
27
+ });
28
+ //# sourceMappingURL=ngrams.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngrams.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/ngrams.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,+CAAmD;AAEnD,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,eAAM,EAAC,IAAA,sBAAa,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=regex-escape.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-escape.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/regex-escape.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const regex_escape_1 = require("../../utils/regex-escape");
5
+ (0, vitest_1.describe)('escapeRegex', () => {
6
+ (0, vitest_1.it)('escapes dot', () => {
7
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('.')).toBe('\\.');
8
+ });
9
+ (0, vitest_1.it)('escapes asterisk', () => {
10
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('*')).toBe('\\*');
11
+ });
12
+ (0, vitest_1.it)('escapes plus', () => {
13
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('+')).toBe('\\+');
14
+ });
15
+ (0, vitest_1.it)('escapes question mark', () => {
16
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('?')).toBe('\\?');
17
+ });
18
+ (0, vitest_1.it)('escapes caret', () => {
19
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('^')).toBe('\\^');
20
+ });
21
+ (0, vitest_1.it)('escapes dollar', () => {
22
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('$')).toBe('\\$');
23
+ });
24
+ (0, vitest_1.it)('escapes curly braces', () => {
25
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('{}')).toBe('\\{\\}');
26
+ });
27
+ (0, vitest_1.it)('escapes parentheses', () => {
28
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('()')).toBe('\\(\\)');
29
+ });
30
+ (0, vitest_1.it)('escapes pipe', () => {
31
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('|')).toBe('\\|');
32
+ });
33
+ (0, vitest_1.it)('escapes square brackets', () => {
34
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('[]')).toBe('\\[\\]');
35
+ });
36
+ (0, vitest_1.it)('escapes backslash', () => {
37
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('\\')).toBe('\\\\');
38
+ });
39
+ (0, vitest_1.it)('escapes all special chars in a combined string', () => {
40
+ const result = (0, regex_escape_1.escapeRegex)('.*+?^${}()|[]\\');
41
+ (0, vitest_1.expect)(result).toBe('\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\\\');
42
+ });
43
+ (0, vitest_1.it)('regular string is unchanged', () => {
44
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('hello world')).toBe('hello world');
45
+ (0, vitest_1.expect)((0, regex_escape_1.escapeRegex)('abc123')).toBe('abc123');
46
+ });
47
+ });
48
+ //# sourceMappingURL=regex-escape.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-escape.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/regex-escape.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2DAAuD;AAEvD,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE;QACrB,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE;QACtB,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,eAAe,EAAE,GAAG,EAAE;QACvB,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE;QACtB,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAA,0BAAW,EAAC,iBAAiB,CAAC,CAAC;QAC9C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,IAAA,0BAAW,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sentences.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentences.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/sentences.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const sentences_1 = require("../../utils/sentences");
5
+ (0, vitest_1.describe)('splitSentences', () => {
6
+ (0, vitest_1.it)('"Hello world. How are you?" splits into 2 sentences', () => {
7
+ const result = (0, sentences_1.splitSentences)('Hello world. How are you?');
8
+ (0, vitest_1.expect)(result).toHaveLength(2);
9
+ (0, vitest_1.expect)(result[0]).toBe('Hello world.');
10
+ (0, vitest_1.expect)(result[1]).toBe('How are you?');
11
+ });
12
+ (0, vitest_1.it)('"Dr. Smith went home. Good." splits into 2 sentences, not 3', () => {
13
+ const result = (0, sentences_1.splitSentences)('Dr. Smith went home. Good.');
14
+ (0, vitest_1.expect)(result).toHaveLength(2);
15
+ (0, vitest_1.expect)(result[0]).toContain('Dr.');
16
+ (0, vitest_1.expect)(result[0]).toContain('Smith went home.');
17
+ });
18
+ (0, vitest_1.it)('empty string returns []', () => {
19
+ (0, vitest_1.expect)((0, sentences_1.splitSentences)('')).toEqual([]);
20
+ });
21
+ (0, vitest_1.it)('whitespace-only string returns []', () => {
22
+ (0, vitest_1.expect)((0, sentences_1.splitSentences)(' ')).toEqual([]);
23
+ });
24
+ (0, vitest_1.it)('single sentence without period returns 1 sentence', () => {
25
+ const result = (0, sentences_1.splitSentences)('This is a single sentence');
26
+ (0, vitest_1.expect)(result).toHaveLength(1);
27
+ (0, vitest_1.expect)(result[0]).toBe('This is a single sentence');
28
+ });
29
+ (0, vitest_1.it)('single sentence with period returns 1 sentence', () => {
30
+ const result = (0, sentences_1.splitSentences)('This is a single sentence.');
31
+ (0, vitest_1.expect)(result).toHaveLength(1);
32
+ (0, vitest_1.expect)(result[0]).toBe('This is a single sentence.');
33
+ });
34
+ (0, vitest_1.it)('exclamation and question marks split correctly', () => {
35
+ const result = (0, sentences_1.splitSentences)('Hello! How are you? Fine.');
36
+ (0, vitest_1.expect)(result).toHaveLength(3);
37
+ });
38
+ });
39
+ //# sourceMappingURL=sentences.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentences.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/sentences.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,qDAAuD;AAEvD,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC,2BAA2B,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC,4BAA4B,CAAC,CAAC;QAC5D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,0BAAc,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,IAAA,eAAM,EAAC,IAAA,0BAAc,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC,2BAA2B,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC,4BAA4B,CAAC,CAAC;QAC5D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC,2BAA2B,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tokenizer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/tokenizer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const tokenizer_1 = require("../../utils/tokenizer");
5
+ (0, vitest_1.describe)('tokenize', () => {
6
+ (0, vitest_1.it)('empty string returns []', () => {
7
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)('')).toEqual([]);
8
+ });
9
+ (0, vitest_1.it)('single word returns [word]', () => {
10
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)('hello')).toEqual(['hello']);
11
+ });
12
+ (0, vitest_1.it)('multiple spaces are collapsed', () => {
13
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)('hello world')).toEqual(['hello', 'world']);
14
+ });
15
+ (0, vitest_1.it)('newlines are treated as whitespace', () => {
16
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)('hello\nworld\nfoo')).toEqual(['hello', 'world', 'foo']);
17
+ });
18
+ (0, vitest_1.it)('tabs are treated as whitespace', () => {
19
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)('hello\tworld')).toEqual(['hello', 'world']);
20
+ });
21
+ (0, vitest_1.it)('mixed whitespace is handled', () => {
22
+ (0, vitest_1.expect)((0, tokenizer_1.tokenize)(' hello \n world ')).toEqual(['hello', 'world']);
23
+ });
24
+ });
25
+ //# sourceMappingURL=tokenizer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/tokenizer.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,qDAAiD;AAEjD,IAAA,iBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,IAAA,eAAM,EAAC,IAAA,oBAAQ,EAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_HEDGING_PHRASES: string[];
2
+ export declare const DEFAULT_REFUSAL_PHRASES: string[];
3
+ export declare const DEFAULT_SYSTEM_PROMPT_PATTERNS: RegExp[];
4
+ //# sourceMappingURL=hedging-phrases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hedging-phrases.d.ts","sourceRoot":"","sources":["../../src/catalogs/hedging-phrases.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAuB3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAc3C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,EAKlD,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SYSTEM_PROMPT_PATTERNS = exports.DEFAULT_REFUSAL_PHRASES = exports.DEFAULT_HEDGING_PHRASES = void 0;
4
+ exports.DEFAULT_HEDGING_PHRASES = [
5
+ 'I think',
6
+ 'I believe',
7
+ 'I assume',
8
+ 'I suppose',
9
+ 'I guess',
10
+ 'it seems',
11
+ 'it appears',
12
+ 'it looks like',
13
+ 'it might be',
14
+ 'possibly',
15
+ 'probably',
16
+ 'perhaps',
17
+ 'maybe',
18
+ 'likely',
19
+ 'not sure',
20
+ "I'm not certain",
21
+ "I'm not sure",
22
+ 'could be',
23
+ 'might be',
24
+ 'may be',
25
+ 'as far as I know',
26
+ 'to the best of my knowledge',
27
+ ];
28
+ exports.DEFAULT_REFUSAL_PHRASES = [
29
+ "I can't",
30
+ 'I cannot',
31
+ "I'm unable to",
32
+ 'I am unable to',
33
+ "I won't",
34
+ 'I will not',
35
+ "I'm not able to",
36
+ "I'm sorry, but",
37
+ 'I apologize, but',
38
+ "I don't feel comfortable",
39
+ 'That is not something I can',
40
+ 'As an AI',
41
+ 'As a language model',
42
+ ];
43
+ exports.DEFAULT_SYSTEM_PROMPT_PATTERNS = [
44
+ /you are a|your name is|your role is|your job is/i,
45
+ /system prompt|system message|system instruction/i,
46
+ /ignore (all )?(previous|prior) instruction/i,
47
+ /you must|you should always|never (say|tell|reveal)/i,
48
+ ];
49
+ //# sourceMappingURL=hedging-phrases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hedging-phrases.js","sourceRoot":"","sources":["../../src/catalogs/hedging-phrases.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAa;IAC/C,SAAS;IACT,WAAW;IACX,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;IACV,YAAY;IACZ,eAAe;IACf,aAAa;IACb,UAAU;IACV,UAAU;IACV,SAAS;IACT,OAAO;IACP,QAAQ;IACR,UAAU;IACV,iBAAiB;IACjB,cAAc;IACd,UAAU;IACV,UAAU;IACV,QAAQ;IACR,kBAAkB;IAClB,6BAA6B;CAC9B,CAAC;AAEW,QAAA,uBAAuB,GAAa;IAC/C,SAAS;IACT,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,SAAS;IACT,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,0BAA0B;IAC1B,6BAA6B;IAC7B,UAAU;IACV,qBAAqB;CACtB,CAAC;AAEW,QAAA,8BAA8B,GAAa;IACtD,kDAAkD;IAClD,kDAAkD;IAClD,6CAA6C;IAC7C,qDAAqD;CACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PIIPattern } from '../types';
2
+ export declare const DEFAULT_PII_PATTERNS: PIIPattern[];
3
+ //# sourceMappingURL=pii-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-patterns.d.ts","sourceRoot":"","sources":["../../src/catalogs/pii-patterns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,oBAAoB,EAAE,UAAU,EA6B5C,CAAC"}