veriquote 0.2.1 → 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 (43) hide show
  1. package/CITATION.cff +2 -2
  2. package/README.md +102 -51
  3. package/dist/cli/main.d.ts.map +1 -1
  4. package/dist/cli/main.js +42 -5
  5. package/dist/cli/main.js.map +1 -1
  6. package/dist/gate.d.ts +13 -3
  7. package/dist/gate.d.ts.map +1 -1
  8. package/dist/gate.js +20 -2
  9. package/dist/gate.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/match/fuzzy.d.ts +10 -2
  15. package/dist/match/fuzzy.d.ts.map +1 -1
  16. package/dist/match/fuzzy.js +87 -11
  17. package/dist/match/fuzzy.js.map +1 -1
  18. package/dist/protocol/evi1.d.ts +21 -1
  19. package/dist/protocol/evi1.d.ts.map +1 -1
  20. package/dist/protocol/evi1.js +169 -28
  21. package/dist/protocol/evi1.js.map +1 -1
  22. package/dist/protocol/prompt.d.ts +6 -0
  23. package/dist/protocol/prompt.d.ts.map +1 -1
  24. package/dist/protocol/prompt.js +35 -10
  25. package/dist/protocol/prompt.js.map +1 -1
  26. package/dist/report.d.ts.map +1 -1
  27. package/dist/report.js +52 -15
  28. package/dist/report.js.map +1 -1
  29. package/dist/source/html.d.ts.map +1 -1
  30. package/dist/source/html.js +3 -0
  31. package/dist/source/html.js.map +1 -1
  32. package/dist/types.d.ts +23 -2
  33. package/dist/types.d.ts.map +1 -1
  34. package/package.json +3 -3
  35. package/src/cli/main.ts +41 -6
  36. package/src/gate.ts +30 -5
  37. package/src/index.ts +1 -0
  38. package/src/match/fuzzy.ts +98 -11
  39. package/src/protocol/evi1.ts +174 -29
  40. package/src/protocol/prompt.ts +42 -9
  41. package/src/report.ts +53 -21
  42. package/src/source/html.ts +3 -0
  43. package/src/types.ts +20 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,YAAY,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAA8B,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAuB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAsB,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,UAAU,EAA4E,MAAM,WAAW,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAA2B,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,YAAY,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAA8B,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAuB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAsB,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,UAAU,EAA4E,MAAM,WAAW,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAA2B,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -3,8 +3,11 @@
3
3
  *
4
4
  * Strategy, in order of preference:
5
5
  * 1. exact raw substring,
6
- * 2. exact substring after normalization (quotes, dashes, case, whitespace),
7
- * 3. best sliding window by character-trigram Dice similarity, with a
6
+ * 2. exact substring after normalization (quotes, dashes, case, whitespace,
7
+ * an ellipsis at either end),
8
+ * 3. elided: the fragments around inner ellipses occur literally, in order,
9
+ * with at most `maxElisionGap` characters left out between them,
10
+ * 4. best sliding window by character-trigram Dice similarity, with a
8
11
  * coarse scan followed by a fine refinement around the best offset.
9
12
  *
10
13
  * Everything here is pure and deterministic: same inputs, same result.
@@ -22,6 +25,11 @@ export interface MatchOptions {
22
25
  fuzzyThreshold?: number;
23
26
  /** Window sizes to try, as multiples of the quote length. Default [0.85, 1, 1.15]. */
24
27
  windowScales?: number[];
28
+ /**
29
+ * Most (normalized) characters one ellipsis may stand for. Fragments further
30
+ * apart are separate passages, not one elided quote. Default 300.
31
+ */
32
+ maxElisionGap?: number;
25
33
  }
26
34
  /** Multiset of character trigrams of `s` as gram -> count. */
27
35
  export declare function trigramCounts(s: string): Map<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/match/fuzzy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AASD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5D;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAarF;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAsED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CA4BxF;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CA8CZ;AAUD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CAeZ"}
1
+ {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/match/fuzzy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4CD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5D;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAarF;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAsED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CA4BxF;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CA8DZ;AAsCD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CAeZ"}
@@ -3,8 +3,11 @@
3
3
  *
4
4
  * Strategy, in order of preference:
5
5
  * 1. exact raw substring,
6
- * 2. exact substring after normalization (quotes, dashes, case, whitespace),
7
- * 3. best sliding window by character-trigram Dice similarity, with a
6
+ * 2. exact substring after normalization (quotes, dashes, case, whitespace,
7
+ * an ellipsis at either end),
8
+ * 3. elided: the fragments around inner ellipses occur literally, in order,
9
+ * with at most `maxElisionGap` characters left out between them,
10
+ * 4. best sliding window by character-trigram Dice similarity, with a
8
11
  * coarse scan followed by a fine refinement around the best offset.
9
12
  *
10
13
  * Everything here is pure and deterministic: same inputs, same result.
@@ -15,7 +18,40 @@ const DEFAULTS = {
15
18
  shortQuoteLength: 90,
16
19
  fuzzyThreshold: 0.4,
17
20
  windowScales: [0.85, 1, 1.15],
21
+ maxElisionGap: 300,
18
22
  };
23
+ /** "...", "…" (NFKC turns it into "..."), "[...]", "(...)", ". . ." — in normalized text. */
24
+ const ELLIPSIS = /\s*(?:\[\s*\.(?:\s?\.){2,}\s*\]|\(\s*\.(?:\s?\.){2,}\s*\)|\.(?:\s?\.){2,})\s*/g;
25
+ /** An elided quote needs one fragment at least this long to anchor it. */
26
+ const MIN_ELISION_ANCHOR = 20;
27
+ /** Elided matches rank just below literal ones. */
28
+ const ELIDED_SCORE = 0.99;
29
+ /**
30
+ * Words that reverse, limit or qualify a statement, in English and German.
31
+ * Found in the text an ellipsis leaves out, they make the elision worth a
32
+ * second look: "the landlord is … permitted to terminate" may have dropped
33
+ * a "not".
34
+ */
35
+ const CUE_WORDS = [
36
+ // negation
37
+ 'not', 'no', 'never', 'none', 'neither', 'nor', 'without', 'cannot', 'nothing', 'nobody',
38
+ 'nicht', 'kein', 'keine', 'keinen', 'keinem', 'keiner', 'keines', 'nie', 'niemals', 'weder', 'ohne',
39
+ // exception, condition, limitation
40
+ 'except', 'unless', 'excluding', 'only', 'außer', 'ausser', 'ausgenommen', 'sofern', 'nur',
41
+ // contrast
42
+ 'but', 'however', 'although', 'though', 'whereas', 'despite',
43
+ 'aber', 'jedoch', 'obwohl', 'allerdings', 'trotz',
44
+ ];
45
+ const CUE = new RegExp(`(?<![\\p{L}\\p{N}])(?:${CUE_WORDS.join('|')})(?![\\p{L}\\p{N}])|(?<=\\p{L})n't(?!\\p{L})`, 'gu');
46
+ /** Cue words in the given ranges of normalized text, deduplicated, in order of appearance. */
47
+ function cuesIn(text, ranges) {
48
+ const found = new Set();
49
+ for (const [from, to] of ranges) {
50
+ for (const m of text.slice(from, to).matchAll(CUE))
51
+ found.add(m[0]);
52
+ }
53
+ return [...found];
54
+ }
19
55
  /** Multiset of character trigrams of `s` as gram -> count. */
20
56
  export function trigramCounts(s) {
21
57
  const out = new Map();
@@ -153,15 +189,32 @@ export function matchQuoteAgainstText(quote, text, options) {
153
189
  const t = normalizeForMatch(text);
154
190
  if (!q.text || !t.text)
155
191
  return empty;
156
- const normIndex = t.text.indexOf(q.text);
157
- if (normIndex !== -1) {
158
- return {
159
- method: 'normalized',
160
- score: 1,
161
- start: t.map[normIndex],
162
- end: mapEndOffset(t.map, normIndex + q.text.length - 1, text),
163
- field: 'text',
164
- };
192
+ const fragments = q.text.split(ELLIPSIS).filter(Boolean);
193
+ if (fragments.length === 1) {
194
+ const normIndex = t.text.indexOf(fragments[0]);
195
+ if (normIndex !== -1) {
196
+ return {
197
+ method: 'normalized',
198
+ score: 1,
199
+ start: t.map[normIndex],
200
+ end: mapEndOffset(t.map, normIndex + fragments[0].length - 1, text),
201
+ field: 'text',
202
+ };
203
+ }
204
+ }
205
+ else if (fragments.some((f) => f.length >= MIN_ELISION_ANCHOR)) {
206
+ const span = findElided(fragments, t.text, opts.maxElisionGap);
207
+ if (span) {
208
+ const cues = cuesIn(t.text, span.gaps);
209
+ return {
210
+ method: 'elided',
211
+ score: ELIDED_SCORE,
212
+ start: t.map[span.start],
213
+ end: mapEndOffset(t.map, span.end - 1, text),
214
+ field: 'text',
215
+ ...(cues.length ? { omittedCues: cues } : {}),
216
+ };
217
+ }
165
218
  }
166
219
  const hit = bestFuzzyWindow(q.text, t.text, opts.windowScales);
167
220
  const lengthPenalty = Math.min(1, q.text.length / opts.shortQuoteLength);
@@ -178,6 +231,29 @@ export function matchQuoteAgainstText(quote, text, options) {
178
231
  field: 'text',
179
232
  };
180
233
  }
234
+ /**
235
+ * First span of `text` holding every fragment literally, in order, with gaps of
236
+ * at most `maxGap`; offsets refer to `text`. Null if there is none.
237
+ */
238
+ function findElided(fragments, text, maxGap) {
239
+ for (let first = text.indexOf(fragments[0]); first !== -1; first = text.indexOf(fragments[0], first + 1)) {
240
+ let end = first + fragments[0].length;
241
+ const gaps = [];
242
+ for (const fragment of fragments.slice(1)) {
243
+ // The earliest occurrence leaves the most room for the fragments after it.
244
+ const at = text.indexOf(fragment, end);
245
+ if (at === -1)
246
+ return null;
247
+ if (at - end > maxGap)
248
+ break;
249
+ gaps.push([end, at]);
250
+ end = at + fragment.length;
251
+ }
252
+ if (gaps.length === fragments.length - 1)
253
+ return { start: first, end, gaps };
254
+ }
255
+ return null;
256
+ }
181
257
  /** Exclusive end offset in the original text for the normalized char at `lastIndex`. */
182
258
  function mapEndOffset(map, lastIndex, original) {
183
259
  const srcIndex = map[Math.max(0, Math.min(lastIndex, map.length - 1))];
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/match/fuzzy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/match/fuzzy.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,14 @@
11
11
  * c1|5|"verbatim quote from source 5"
12
12
  * END_EVI1
13
13
  *
14
+ * A (claim, source) pair may have several lines when one passage does not
15
+ * cover the whole claim. With `evidenceFirst` prompting the block comes
16
+ * before the answer instead; the parser accepts either position.
17
+ *
14
18
  * Quotes are single-line, with `\n`, `\"` and `\\` escapes.
19
+ *
20
+ * The parser is lenient about how the appendix is framed (see
21
+ * `parseEvi1Appendix`), strict about the evidence lines themselves.
15
22
  */
16
23
  import type { Claim, EvidenceItem, ParsedAnswer } from '../types.js';
17
24
  export declare const EVI1_START = "EVI1";
@@ -19,7 +26,12 @@ export declare const EVI1_END = "END_EVI1";
19
26
  /**
20
27
  * Parse the EVI1 appendix of a raw model answer.
21
28
  * Returns the evidence items plus warnings for malformed lines;
22
- * `null` when no complete appendix is present.
29
+ * `null` when no appendix is present.
30
+ *
31
+ * Tolerant of common deviations: a decorated start line (`**EVI1**`,
32
+ * `EVI1:`, `EVI1 c1|…`), a code fence around the appendix, a missing or
33
+ * garbled `END_EVI1`, and a missing `EVI1` line when the answer ends in
34
+ * evidence lines.
23
35
  */
24
36
  export declare function parseEvi1Appendix(answer: string): {
25
37
  items: EvidenceItem[];
@@ -27,6 +39,14 @@ export declare function parseEvi1Appendix(answer: string): {
27
39
  } | null;
28
40
  /** Remove the EVI1 appendix from a raw answer; returns the answer body. */
29
41
  export declare function stripEvi1Appendix(answer: string): string;
42
+ /**
43
+ * The answer as a reader should see it, also while it is still streaming:
44
+ * the appendix (complete or not) is cut, as is a last line that may be the
45
+ * beginning of one (`E`, `EV`, `EVI`, `EVI1`, `c1|…`), and all `{cX}`
46
+ * markers are removed, including a half-streamed `{c…` at the end.
47
+ * `[n]` citation markers are kept.
48
+ */
49
+ export declare function stripForDisplay(text: string): string;
30
50
  /** Serialize evidence items into an EVI1 appendix block. */
31
51
  export declare function serializeEvi1Appendix(items: EvidenceItem[]): string;
32
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"evi1.d.ts","sourceRoot":"","sources":["../../src/protocol/evi1.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrE,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAmCnC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAuBtD;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAKnE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCnF;AAOD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAmCxD"}
1
+ {"version":3,"file":"evi1.d.ts","sourceRoot":"","sources":["../../src/protocol/evi1.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrE,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAmHnC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAsBtD;AAaD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIxD;AASD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAKnE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCnF;AAOD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAsDxD"}
@@ -11,14 +11,34 @@
11
11
  * c1|5|"verbatim quote from source 5"
12
12
  * END_EVI1
13
13
  *
14
+ * A (claim, source) pair may have several lines when one passage does not
15
+ * cover the whole claim. With `evidenceFirst` prompting the block comes
16
+ * before the answer instead; the parser accepts either position.
17
+ *
14
18
  * Quotes are single-line, with `\n`, `\"` and `\\` escapes.
19
+ *
20
+ * The parser is lenient about how the appendix is framed (see
21
+ * `parseEvi1Appendix`), strict about the evidence lines themselves.
15
22
  */
16
23
  import { collapseWhitespace } from '../match/normalize.js';
17
24
  export const EVI1_START = 'EVI1';
18
25
  export const EVI1_END = 'END_EVI1';
19
- const EVIDENCE_LINE = /^(c\d+)\|(\d+)\|"([\s\S]*)"$/;
26
+ const EVIDENCE_LINE = /^(c\d+)\s*\|\s*(\d+)\s*\|\s*"([\s\S]*)"$/;
20
27
  const CLAIM_MARKER = /\{c(\d+)\}/g;
21
28
  const CITATION_GROUP_BEFORE_CLAIM = /((?:\[\d+\])+)$/;
29
+ // Models and gateways garble the appendix slightly: "**EVI1**", "EVI1:",
30
+ // "EVI1 c1|2|...", a code fence around it, END_EVI11 or no END_EVI1 at all.
31
+ // The lookahead keeps a sentence about the EVI1 gene from opening an appendix.
32
+ const START_LINE = /^[\s*_`>#]*EVI1[\s*_`:]*(?=$|c\d+\s*\|)/;
33
+ const END_LINE = /^[\s*_`]*END_EVI1/;
34
+ const EVIDENCE_PREFIX = /^\s*c\d+\s*\|\s*\d+\s*\|/;
35
+ // Without END_EVI1, the appendix runs as long as lines look like evidence,
36
+ // malformed ones included (they get a warning, not the answer body).
37
+ const EVIDENCE_LIKE = /^\s*c\d+\s*\|/;
38
+ const FENCE_LINE = /^\s*```\s*\w*\s*$/;
39
+ // While streaming, the last line may be the beginning of an EVI1, evidence or END_EVI1 line.
40
+ const PARTIAL_START = /^[\s*_`>#]*(?:E(?:V(?:I(?:1[\s*_`:]*(?:c\d*)?)?)?)?)?$|^[\s*_`]*EN(?:D(?:_(?:E(?:V(?:I1?)?)?)?)?)?$|^\s*c\d*(?:\s*\|\s*\d*)?\s*$/;
41
+ const PARTIAL_MARKER = /\{(?:c\d*)?$/;
22
42
  /** Unescape an EVI1 quote payload (`\\`, `\n`, `\"`) in a single pass. */
23
43
  function unescapeQuote(s) {
24
44
  return s.replace(/\\(.)/g, (_, c) => (c === 'n' ? '\n' : c));
@@ -27,34 +47,103 @@ function unescapeQuote(s) {
27
47
  function escapeQuote(s) {
28
48
  return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\r?\n/g, '\\n');
29
49
  }
30
- function locateAppendix(lines) {
50
+ const isBlank = (line) => !line.trim();
51
+ /**
52
+ * Whether the EVI1 line at `start` really opens the appendix: the next
53
+ * non-blank line is evidence, or END_EVI1 follows somewhere.
54
+ * A heading "## EVI1" followed by prose does not.
55
+ */
56
+ function opensAppendix(lines, start) {
57
+ if (lines[start].replace(START_LINE, '').trim())
58
+ return true; // "EVI1 c1|…"
59
+ let i = start + 1;
60
+ while (i < lines.length && (isBlank(lines[i]) || FENCE_LINE.test(lines[i])))
61
+ i++;
62
+ if (EVIDENCE_PREFIX.test(lines[i] ?? ''))
63
+ return true;
64
+ return lines.slice(i).some((l) => END_LINE.test(l));
65
+ }
66
+ /**
67
+ * Start of the appendix: the last EVI1 line, or else a run of evidence lines
68
+ * that ends the text. -1 if there is none.
69
+ */
70
+ function findAppendixStart(lines) {
31
71
  // Scan from the end so answer text that merely mentions "EVI1" is ignored.
32
- for (let end = lines.length - 1; end >= 0; end--) {
33
- if (lines[end].trim() !== EVI1_END)
34
- continue;
35
- for (let start = end - 1; start >= 0; start--) {
36
- if (lines[start].trim() === EVI1_START)
37
- return { startLine: start, endLine: end };
38
- }
72
+ for (let i = lines.length - 1; i >= 0; i--) {
73
+ if (START_LINE.test(lines[i]) && opensAppendix(lines, i))
74
+ return i;
75
+ }
76
+ let i = lines.length - 1;
77
+ while (i >= 0 && (isBlank(lines[i]) || END_LINE.test(lines[i]) || FENCE_LINE.test(lines[i])))
78
+ i--;
79
+ const last = i;
80
+ while (i >= 0 && EVIDENCE_PREFIX.test(lines[i]))
81
+ i--;
82
+ return i < last ? i + 1 : -1;
83
+ }
84
+ function locateAppendix(lines) {
85
+ const start = findAppendixStart(lines);
86
+ if (start < 0)
39
87
  return null;
88
+ const headerRest = lines[start].replace(START_LINE, '');
89
+ let endLine = END_LINE.test(headerRest) ? start : -1;
90
+ for (let i = start + 1; endLine < 0 && i < lines.length; i++) {
91
+ if (END_LINE.test(lines[i]))
92
+ endLine = i;
93
+ }
94
+ let stop = endLine >= 0 ? endLine : start + 1;
95
+ if (endLine < 0) {
96
+ while (stop < lines.length && (isBlank(lines[stop]) || FENCE_LINE.test(lines[stop]) || EVIDENCE_LIKE.test(lines[stop])))
97
+ stop++;
98
+ // Blank lines before the answer that follows belong to the answer.
99
+ if (stop < lines.length)
100
+ while (stop > start + 1 && isBlank(lines[stop - 1]))
101
+ stop--;
102
+ }
103
+ const body = endLine === start ? [] : [headerRest, ...lines.slice(start + 1, stop)];
104
+ // A fence the model opened around the appendix goes with it, but not one
105
+ // that closes an earlier code block.
106
+ let cutStart = start;
107
+ let openedFence = /^\s*```/.test(lines[start]);
108
+ let before = start - 1;
109
+ while (before >= 0 && isBlank(lines[before]))
110
+ before--;
111
+ if (!openedFence && before >= 0 && FENCE_LINE.test(lines[before])) {
112
+ const fences = lines.slice(0, before + 1).filter((l) => FENCE_LINE.test(l)).length;
113
+ if (fences % 2 === 1) {
114
+ cutStart = before;
115
+ openedFence = true;
116
+ }
117
+ }
118
+ let cutEnd = endLine < 0 ? stop : endLine + 1;
119
+ if (openedFence && endLine >= 0 && !/```/.test(lines[endLine])) {
120
+ let after = cutEnd;
121
+ while (after < lines.length && isBlank(lines[after]))
122
+ after++;
123
+ if (after < lines.length && FENCE_LINE.test(lines[after]))
124
+ cutEnd = after + 1;
40
125
  }
41
- return null;
126
+ return { cutStart, cutEnd, body };
42
127
  }
43
128
  /**
44
129
  * Parse the EVI1 appendix of a raw model answer.
45
130
  * Returns the evidence items plus warnings for malformed lines;
46
- * `null` when no complete appendix is present.
131
+ * `null` when no appendix is present.
132
+ *
133
+ * Tolerant of common deviations: a decorated start line (`**EVI1**`,
134
+ * `EVI1:`, `EVI1 c1|…`), a code fence around the appendix, a missing or
135
+ * garbled `END_EVI1`, and a missing `EVI1` line when the answer ends in
136
+ * evidence lines.
47
137
  */
48
138
  export function parseEvi1Appendix(answer) {
49
- const lines = String(answer).split('\n');
50
- const loc = locateAppendix(lines);
139
+ const loc = locateAppendix(String(answer).split('\n'));
51
140
  if (!loc)
52
141
  return null;
53
142
  const items = [];
54
143
  const warnings = [];
55
- for (let i = loc.startLine + 1; i < loc.endLine; i++) {
56
- const line = lines[i].trim();
57
- if (!line)
144
+ for (const raw of loc.body) {
145
+ const line = raw.trim();
146
+ if (!line || FENCE_LINE.test(line))
58
147
  continue;
59
148
  const m = line.match(EVIDENCE_LINE);
60
149
  if (!m) {
@@ -70,17 +159,52 @@ export function parseEvi1Appendix(answer) {
70
159
  }
71
160
  return { items, warnings };
72
161
  }
162
+ function cutAppendix(lines, loc) {
163
+ const head = lines.slice(0, loc.cutStart);
164
+ const tail = lines.slice(loc.cutEnd);
165
+ // An evidence-first block leaves blank lines before the answer.
166
+ if (head.every(isBlank)) {
167
+ head.length = 0;
168
+ while (tail.length && isBlank(tail[0]))
169
+ tail.shift();
170
+ }
171
+ return head.concat(tail).join('\n').trimEnd();
172
+ }
73
173
  /** Remove the EVI1 appendix from a raw answer; returns the answer body. */
74
174
  export function stripEvi1Appendix(answer) {
75
175
  const lines = String(answer).split('\n');
76
176
  const loc = locateAppendix(lines);
77
- if (!loc)
78
- return answer;
79
- return lines
80
- .slice(0, loc.startLine)
81
- .concat(lines.slice(loc.endLine + 1))
82
- .join('\n')
83
- .trimEnd();
177
+ return loc ? cutAppendix(lines, loc) : answer;
178
+ }
179
+ /** Whether the last line may be the beginning of an appendix (but not a fence closing a code block). */
180
+ function isPartialStart(lines) {
181
+ const last = lines[lines.length - 1];
182
+ if (isBlank(last) || !PARTIAL_START.test(last))
183
+ return false;
184
+ return !/```/.test(last) || lines.filter((l) => /^\s*```/.test(l)).length % 2 === 1;
185
+ }
186
+ /**
187
+ * The answer as a reader should see it, also while it is still streaming:
188
+ * the appendix (complete or not) is cut, as is a last line that may be the
189
+ * beginning of one (`E`, `EV`, `EVI`, `EVI1`, `c1|…`), and all `{cX}`
190
+ * markers are removed, including a half-streamed `{c…` at the end.
191
+ * `[n]` citation markers are kept.
192
+ */
193
+ export function stripForDisplay(text) {
194
+ let lines = String(text).split('\n');
195
+ const popBlank = () => {
196
+ while (lines.length && isBlank(lines[lines.length - 1]))
197
+ lines.pop();
198
+ };
199
+ popBlank();
200
+ while (lines.length && isPartialStart(lines)) {
201
+ lines.pop();
202
+ popBlank();
203
+ }
204
+ const loc = locateAppendix(lines);
205
+ if (loc)
206
+ lines = cutAppendix(lines, loc).split('\n');
207
+ return stripClaimMarkers(lines.join('\n').replace(PARTIAL_MARKER, '')).trimEnd();
84
208
  }
85
209
  /** Serialize evidence items into an EVI1 appendix block. */
86
210
  export function serializeEvi1Appendix(items) {
@@ -150,21 +274,38 @@ export function parseAnswer(answer) {
150
274
  warnings.push(...appendix.warnings);
151
275
  const body = stripEvi1Appendix(answer);
152
276
  const { claims, warnings: claimWarnings } = extractClaims(body);
153
- warnings.push(...claimWarnings);
277
+ // A claim marker without its [n] group still names its sources in the
278
+ // appendix; take them from there instead of losing the claim's evidence.
279
+ const noGroup = new Set();
280
+ for (const c of claims) {
281
+ if (c.sourceIndexes.length)
282
+ continue;
283
+ const fromAppendix = [...new Set(evidence.filter((e) => e.claimId === c.id).map((e) => e.sourceIndex))];
284
+ if (!fromAppendix.length)
285
+ continue;
286
+ c.sourceIndexes = fromAppendix;
287
+ noGroup.add(`Claim ${c.id}: no citation group directly before marker.`);
288
+ }
289
+ warnings.push(...claimWarnings.map((w) => noGroup.has(w) ? w.replace(/\.$/, '; sources taken from the EVI1 appendix.') : w));
154
290
  const cited = new Set(claims.flatMap((c) => c.sourceIndexes.map((n) => `${c.id}|${n}`)));
291
+ // Several lines for one (claim, source) pair are allowed: a claim may need
292
+ // two passages of the same source. Only repeated quotes are dropped.
155
293
  const evidenced = new Set();
294
+ const seenLines = new Set();
156
295
  const dedupedEvidence = [];
157
296
  for (const it of evidence) {
158
297
  const key = `${it.claimId}|${it.sourceIndex}`;
159
- if (evidenced.has(key)) {
160
- warnings.push(`EVI1: duplicate evidence for ${key}; keeping first occurrence.`);
298
+ const line = `${key}|${collapseWhitespace(it.quote)}`;
299
+ if (seenLines.has(line)) {
300
+ warnings.push(`EVI1: repeated quote for ${key}; keeping first occurrence.`);
161
301
  continue;
162
302
  }
163
- evidenced.add(key);
303
+ seenLines.add(line);
164
304
  dedupedEvidence.push(it);
165
- if (!cited.has(key)) {
305
+ if (!evidenced.has(key) && !cited.has(key)) {
166
306
  warnings.push(`EVI1: evidence for ${key} has no matching citation in the answer.`);
167
307
  }
308
+ evidenced.add(key);
168
309
  }
169
310
  for (const key of cited) {
170
311
  if (!evidenced.has(key)) {
@@ -1 +1 @@
1
- {"version":3,"file":"evi1.js","sourceRoot":"","sources":["../../src/protocol/evi1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evi1.js","sourceRoot":"","sources":["../../src/protocol/evi1.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@ export interface CitationPromptOptions {
12
12
  quoteLengthRange?: [number, number];
13
13
  /** Minimum quote length in characters (with stated exceptions). Default 60. */
14
14
  minQuoteLength?: number;
15
+ /**
16
+ * Put the EVI1 block before the answer: the model selects its passages
17
+ * first, then writes only what they support. The parser accepts either
18
+ * position; a streaming client shows nothing until END_EVI1. Default false.
19
+ */
20
+ evidenceFirst?: boolean;
15
21
  }
16
22
  /** Build the EVI1 citation instruction block for the answering model. */
17
23
  export declare function buildCitationInstructions(options?: CitationPromptOptions): string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/protocol/prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAgFrF"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/protocol/prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CA2GrF"}