@postalsys/email-content 0.1.8 → 0.1.9

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 (112) hide show
  1. package/README.md +17 -8
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/analyze.d.ts +3 -0
  4. package/dist/analyze.d.ts.map +1 -1
  5. package/dist/analyze.js +10 -4
  6. package/dist/analyze.js.map +1 -1
  7. package/dist/annotate/agreement.d.ts +99 -0
  8. package/dist/annotate/agreement.d.ts.map +1 -0
  9. package/dist/annotate/agreement.js +126 -0
  10. package/dist/annotate/agreement.js.map +1 -0
  11. package/dist/annotate/client.d.ts +7 -19
  12. package/dist/annotate/client.d.ts.map +1 -1
  13. package/dist/annotate/client.js +28 -82
  14. package/dist/annotate/client.js.map +1 -1
  15. package/dist/annotate/http.d.ts +57 -0
  16. package/dist/annotate/http.d.ts.map +1 -0
  17. package/dist/annotate/http.js +99 -0
  18. package/dist/annotate/http.js.map +1 -0
  19. package/dist/annotate/llm.d.ts +17 -0
  20. package/dist/annotate/llm.d.ts.map +1 -1
  21. package/dist/annotate/llm.js +68 -36
  22. package/dist/annotate/llm.js.map +1 -1
  23. package/dist/annotate/probabilities.d.ts +48 -0
  24. package/dist/annotate/probabilities.d.ts.map +1 -0
  25. package/dist/annotate/probabilities.js +119 -0
  26. package/dist/annotate/probabilities.js.map +1 -0
  27. package/dist/annotate/providers.d.ts +26 -0
  28. package/dist/annotate/providers.d.ts.map +1 -0
  29. package/dist/annotate/providers.js +43 -0
  30. package/dist/annotate/providers.js.map +1 -0
  31. package/dist/annotate/store.d.ts +3 -0
  32. package/dist/annotate/store.d.ts.map +1 -1
  33. package/dist/annotate/store.js +3 -2
  34. package/dist/annotate/store.js.map +1 -1
  35. package/dist/annotate/typesafe-client.d.ts +64 -0
  36. package/dist/annotate/typesafe-client.d.ts.map +1 -0
  37. package/dist/annotate/typesafe-client.js +76 -0
  38. package/dist/annotate/typesafe-client.js.map +1 -0
  39. package/dist/annotate/typesafe-prompt.d.ts +64 -0
  40. package/dist/annotate/typesafe-prompt.d.ts.map +1 -0
  41. package/dist/annotate/typesafe-prompt.js +170 -0
  42. package/dist/annotate/typesafe-prompt.js.map +1 -0
  43. package/dist/classify/rules.d.ts +7 -0
  44. package/dist/classify/rules.d.ts.map +1 -1
  45. package/dist/classify/rules.js +67 -14
  46. package/dist/classify/rules.js.map +1 -1
  47. package/dist/cli/agreement.d.ts +27 -0
  48. package/dist/cli/agreement.d.ts.map +1 -0
  49. package/dist/cli/agreement.js +153 -0
  50. package/dist/cli/agreement.js.map +1 -0
  51. package/dist/cli/annotate.d.ts.map +1 -1
  52. package/dist/cli/annotate.js +28 -16
  53. package/dist/cli/annotate.js.map +1 -1
  54. package/dist/cli/audit.d.ts +12 -0
  55. package/dist/cli/audit.d.ts.map +1 -0
  56. package/dist/cli/audit.js +134 -0
  57. package/dist/cli/audit.js.map +1 -0
  58. package/dist/cli/disagreements.d.ts.map +1 -1
  59. package/dist/cli/disagreements.js +20 -3
  60. package/dist/cli/disagreements.js.map +1 -1
  61. package/dist/cli/evaluate.d.ts.map +1 -1
  62. package/dist/cli/evaluate.js +5 -70
  63. package/dist/cli/evaluate.js.map +1 -1
  64. package/dist/cli/main.js +28 -2
  65. package/dist/cli/main.js.map +1 -1
  66. package/dist/corpus/analyze.d.ts.map +1 -1
  67. package/dist/corpus/analyze.js +4 -5
  68. package/dist/corpus/analyze.js.map +1 -1
  69. package/dist/corpus/migrations/index.d.ts.map +1 -1
  70. package/dist/corpus/migrations/index.js +14 -0
  71. package/dist/corpus/migrations/index.js.map +1 -1
  72. package/dist/corpus/stats.d.ts +1 -0
  73. package/dist/corpus/stats.d.ts.map +1 -1
  74. package/dist/corpus/stats.js +1 -0
  75. package/dist/corpus/stats.js.map +1 -1
  76. package/dist/detect/patterns/forward-headers.json +24 -0
  77. package/dist/detect/patterns/html-clients.json +27 -0
  78. package/dist/detect/patterns/reply-headers.json +368 -0
  79. package/dist/detect/reply-header.d.ts.map +1 -1
  80. package/dist/detect/reply-header.js +12 -1
  81. package/dist/detect/reply-header.js.map +1 -1
  82. package/dist/detect/subject.d.ts +16 -0
  83. package/dist/detect/subject.d.ts.map +1 -0
  84. package/dist/detect/subject.js +22 -0
  85. package/dist/detect/subject.js.map +1 -0
  86. package/dist/eval/pattern-audit.d.ts +56 -0
  87. package/dist/eval/pattern-audit.d.ts.map +1 -0
  88. package/dist/eval/pattern-audit.js +111 -0
  89. package/dist/eval/pattern-audit.js.map +1 -0
  90. package/dist/eval/reference.d.ts +44 -0
  91. package/dist/eval/reference.d.ts.map +1 -0
  92. package/dist/eval/reference.js +87 -0
  93. package/dist/eval/reference.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/mime/flowed.d.ts +14 -0
  98. package/dist/mime/flowed.d.ts.map +1 -0
  99. package/dist/mime/flowed.js +71 -0
  100. package/dist/mime/flowed.js.map +1 -0
  101. package/dist/mime/parse.js +2 -5
  102. package/dist/mime/parse.js.map +1 -1
  103. package/dist/segment/html-blocks.d.ts.map +1 -1
  104. package/dist/segment/html-blocks.js +11 -7
  105. package/dist/segment/html-blocks.js.map +1 -1
  106. package/dist/segment/text-blocks.d.ts.map +1 -1
  107. package/dist/segment/text-blocks.js +14 -3
  108. package/dist/segment/text-blocks.js.map +1 -1
  109. package/dist/types.d.ts +3 -3
  110. package/dist/types.d.ts.map +1 -1
  111. package/dist/types.js +2 -2
  112. package/package.json +2 -2
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * Pattern precision audit.
4
+ *
5
+ * Aggregate agreement says how the extractor does overall; it cannot say which pattern to fix.
6
+ * This groups reference-labelled blocks by the detector evidence they carry and by the reasons
7
+ * behind their final decision, so a single pattern that fires on authored text stands out even
8
+ * when the headline numbers look fine.
9
+ *
10
+ * Two views, because they answer different questions:
11
+ *
12
+ * - Evidence: every block a pattern fired on, whatever the rules then did with it. This is the
13
+ * pattern's own precision, the thing a pattern file edit changes.
14
+ * - Reasons: every block whose final decision names a reason. This is the rule's precision, and
15
+ * for hiding reasons the rows that matter most, since a wrong hide is content loss.
16
+ *
17
+ * Evidence sits on the block that matched, usually the attribution line or separator itself, so
18
+ * the evidence view measures whether the boundary was real, not how far the region after it ran.
19
+ * The reason view covers the region.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.auditPatterns = auditPatterns;
23
+ /**
24
+ * The labels a hit of each evidence kind should land on, following docs/annotation-guide.md:
25
+ * a boundary line belongs to the region it introduces, and a forward nested inside quoted history
26
+ * is REPLY_HISTORY. A quote container legitimately holds inline quotes too. Kinds that only hint
27
+ * are reported without a precision.
28
+ */
29
+ const EXPECTED = {
30
+ 'reply-anchor': ['REPLY_HISTORY'],
31
+ attribution: ['REPLY_HISTORY'],
32
+ 'forward-anchor': ['FORWARDED_CONTENT', 'REPLY_HISTORY'],
33
+ 'quote-container': ['REPLY_HISTORY', 'INLINE_QUOTE', 'FORWARDED_CONTENT'],
34
+ signature: ['SIGNATURE'],
35
+ disclaimer: ['DISCLAIMER']
36
+ };
37
+ /**
38
+ * Reference labels that neither confirm nor refute a hit. A signature or disclaimer inside quoted
39
+ * history belongs to the history (the guide labels it by the message that attached it), so the
40
+ * pattern matching there is right about the shape and says nothing about the label. Without this,
41
+ * every sign-off pattern reads as mostly wrong simply because most sign-offs are quoted.
42
+ */
43
+ const NEUTRAL = {
44
+ signature: ['REPLY_HISTORY', 'FORWARDED_CONTENT'],
45
+ disclaimer: ['REPLY_HISTORY', 'FORWARDED_CONTENT']
46
+ };
47
+ function isAuthored(label) {
48
+ return label === 'NEW_CONTENT' || label === 'INLINE_QUOTE';
49
+ }
50
+ function emptyTally(key, expected, neutral = []) {
51
+ return {
52
+ row: { key, expected, blocks: 0, chars: 0, matching: 0, scored: 0, authored: 0, authoredHidden: 0, authoredHiddenChars: 0, byReference: {} },
53
+ neutral
54
+ };
55
+ }
56
+ function count({ row, neutral }, block) {
57
+ row.blocks++;
58
+ row.chars += block.chars;
59
+ row.byReference[block.reference] = (row.byReference[block.reference] ?? 0) + 1;
60
+ if (!neutral.includes(block.reference)) {
61
+ row.scored++;
62
+ if (row.expected?.includes(block.reference)) {
63
+ row.matching++;
64
+ }
65
+ }
66
+ if (isAuthored(block.reference)) {
67
+ row.authored++;
68
+ if (block.hidden) {
69
+ row.authoredHidden++;
70
+ row.authoredHiddenChars += block.chars;
71
+ }
72
+ }
73
+ }
74
+ /** Worst first: lost content, then the most authored hits, then volume. */
75
+ function byHarm(a, b) {
76
+ return b.authoredHiddenChars - a.authoredHiddenChars || b.authored - a.authored || b.blocks - a.blocks || a.key.localeCompare(b.key);
77
+ }
78
+ function auditPatterns(blocks) {
79
+ const evidence = new Map();
80
+ const reasons = new Map();
81
+ for (const block of blocks) {
82
+ // A pattern that matched two lines of the same block still judged one block.
83
+ const seen = new Set();
84
+ for (const item of block.evidence) {
85
+ if (seen.has(item.id)) {
86
+ continue;
87
+ }
88
+ seen.add(item.id);
89
+ let row = evidence.get(item.id);
90
+ if (!row) {
91
+ row = emptyTally(item.id, EXPECTED[item.kind] ?? null, NEUTRAL[item.kind]);
92
+ evidence.set(item.id, row);
93
+ }
94
+ count(row, block);
95
+ }
96
+ for (const reason of new Set(block.reasons)) {
97
+ // A reason is scored against the label the rules gave it: the question is whether the
98
+ // decision it justified was right.
99
+ const key = `${reason} -> ${block.predicted}`;
100
+ let row = reasons.get(key);
101
+ if (!row) {
102
+ row = emptyTally(key, [block.predicted]);
103
+ reasons.set(key, row);
104
+ }
105
+ count(row, block);
106
+ }
107
+ }
108
+ const rows = (tallies) => [...tallies.values()].map(tally => tally.row).sort(byHarm);
109
+ return { blocks: blocks.length, evidence: rows(evidence), reasons: rows(reasons) };
110
+ }
111
+ //# sourceMappingURL=pattern-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-audit.js","sourceRoot":"","sources":["../../src/eval/pattern-audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Loading the stored LLM reference labels, shared by `evaluate` and `audit`.
3
+ *
4
+ * Both commands must read the same reference, or a pattern that looks precise in one report and
5
+ * harmful in the other is only a difference in which annotations were counted.
6
+ */
7
+ import { type CorpusStore } from '../corpus/store';
8
+ import { type Label, type Segment } from '../types';
9
+ export interface ReferenceRow {
10
+ path: string;
11
+ block_index: number;
12
+ /** MIME part the block came from. Null on annotations made before it was recorded. */
13
+ mime_part: string | null;
14
+ label: Label;
15
+ char_count: number;
16
+ client: string | null;
17
+ lang: string | null;
18
+ reply_style: string | null;
19
+ }
20
+ /**
21
+ * Latest annotation per (path, block) for the chosen model, grouped by message, so re-annotated
22
+ * messages do not count twice. An explicit prompt version pins the reference to labels made under
23
+ * one convention; without it, the newest label per block wins, whatever prompt produced it, and
24
+ * messages labelled only under an older convention are still included. The annotation guide's rule
25
+ * that runs made under different conventions must never be silently compared is the reason the
26
+ * option exists; use it whenever more than one prompt version is present.
27
+ */
28
+ export declare function loadReference(store: CorpusStore, model: string, promptVersion?: string): Map<string, ReferenceRow[]>;
29
+ export interface CoveringPrediction {
30
+ label: Label;
31
+ hidden: boolean;
32
+ }
33
+ /**
34
+ * Map a stored (part, block index) to the output segment covering it. Segments merge adjacent
35
+ * blocks, so a block is matched by its index falling inside a segment's block range.
36
+ *
37
+ * Keyed per MIME part, not by block index alone. Block indices are section-local, so in a multipart
38
+ * message with several body sections two segments legitimately start at index 0, and a flat map
39
+ * silently kept only the last of them. Older annotations predate the part being recorded; those
40
+ * fall back to the first part the output used, which is exactly the previous behaviour for the
41
+ * single section messages they came from.
42
+ */
43
+ export declare function segmentLookup(...segmentLists: readonly (readonly Segment[])[]): (part: string | null, index: number) => CoveringPrediction | null;
44
+ //# sourceMappingURL=reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/eval/reference.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAA4B,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CA2BhH;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,YAAY,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CA+BjJ"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Loading the stored LLM reference labels, shared by `evaluate` and `audit`.
4
+ *
5
+ * Both commands must read the same reference, or a pattern that looks precise in one report and
6
+ * harmful in the other is only a difference in which annotations were counted.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.loadReference = loadReference;
10
+ exports.segmentLookup = segmentLookup;
11
+ const types_1 = require("../types");
12
+ /**
13
+ * Latest annotation per (path, block) for the chosen model, grouped by message, so re-annotated
14
+ * messages do not count twice. An explicit prompt version pins the reference to labels made under
15
+ * one convention; without it, the newest label per block wins, whatever prompt produced it, and
16
+ * messages labelled only under an older convention are still included. The annotation guide's rule
17
+ * that runs made under different conventions must never be silently compared is the reason the
18
+ * option exists; use it whenever more than one prompt version is present.
19
+ */
20
+ function loadReference(store, model, promptVersion = '') {
21
+ const versionClause = promptVersion ? ' AND r.prompt_version = ?' : '';
22
+ const versionClauseInner = promptVersion ? ' AND r2.prompt_version = ?' : '';
23
+ const params = promptVersion ? [model, promptVersion, promptVersion] : [model];
24
+ const reference = store.query(`SELECT a.path, a.block_index, a.mime_part, a.label, a.char_count, m.client, m.lang, m.reply_style
25
+ FROM annotations a
26
+ JOIN annotation_runs r ON r.id = a.run_id
27
+ JOIN messages m ON m.path = a.path
28
+ WHERE r.model = ? AND a.source = 'llm'${versionClause}
29
+ AND a.id = (SELECT MAX(a2.id) FROM annotations a2
30
+ JOIN annotation_runs r2 ON r2.id = a2.run_id
31
+ WHERE a2.path = a.path AND a2.block_index = a.block_index AND r2.model = r.model${versionClauseInner})
32
+ ORDER BY a.path, a.block_index`, ...params);
33
+ const byPath = new Map();
34
+ for (const row of reference) {
35
+ const list = byPath.get(row.path);
36
+ if (list) {
37
+ list.push(row);
38
+ }
39
+ else {
40
+ byPath.set(row.path, [row]);
41
+ }
42
+ }
43
+ return byPath;
44
+ }
45
+ /**
46
+ * Map a stored (part, block index) to the output segment covering it. Segments merge adjacent
47
+ * blocks, so a block is matched by its index falling inside a segment's block range.
48
+ *
49
+ * Keyed per MIME part, not by block index alone. Block indices are section-local, so in a multipart
50
+ * message with several body sections two segments legitimately start at index 0, and a flat map
51
+ * silently kept only the last of them. Older annotations predate the part being recorded; those
52
+ * fall back to the first part the output used, which is exactly the previous behaviour for the
53
+ * single section messages they came from.
54
+ */
55
+ function segmentLookup(...segmentLists) {
56
+ const predictions = new Map();
57
+ for (const segment of segmentLists.flat()) {
58
+ const blockIndex = (0, types_1.blockIndexOf)(segment.source);
59
+ if (blockIndex === null) {
60
+ continue;
61
+ }
62
+ const part = (0, types_1.mimePartOf)(segment.source) ?? '';
63
+ let bucket = predictions.get(part);
64
+ if (!bucket) {
65
+ bucket = new Map();
66
+ predictions.set(part, bucket);
67
+ }
68
+ bucket.set(blockIndex, { label: segment.type, hidden: segment.visibility === 'hide' });
69
+ }
70
+ const ordered = new Map([...predictions].map(([part, bucket]) => [part, [...bucket.keys()].sort((a, b) => a - b)]));
71
+ // Segments start at a block index and run to the next one, so fill forward within the part.
72
+ return (part, index) => {
73
+ const key = part !== null && predictions.has(part) ? part : (predictions.keys().next().value ?? '');
74
+ const starts = ordered.get(key) ?? [];
75
+ let best = null;
76
+ for (const start of starts) {
77
+ if (start <= index) {
78
+ best = start;
79
+ }
80
+ else {
81
+ break;
82
+ }
83
+ }
84
+ return best === null ? null : (predictions.get(key)?.get(best) ?? null);
85
+ };
86
+ }
87
+ //# sourceMappingURL=reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/eval/reference.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -40,6 +40,9 @@ export interface ExplainedResult extends ExtractionResult {
40
40
  primaryPart: string | null;
41
41
  blocks: {
42
42
  index: number;
43
+ /** MIME part and section-local index, the coordinates stored annotations use. */
44
+ mimePart: string;
45
+ sourceIndex: number;
43
46
  kind: string;
44
47
  label: string;
45
48
  confidence: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,YAAY,EAA4C,MAAM,cAAc,CAAC;AAG3F,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAgB,MAAM,SAAS,CAAC;AAE9F,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACtJ,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAWzD,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,qCAAqC;IACrC,WAAW,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,QAAQ,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC;SACnB,EAAE,CAAC;KACP,CAAC;CACL;AA4CD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4G1G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,YAAY,EAA4C,MAAM,cAAc,CAAC;AAG3F,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAgB,MAAM,SAAS,CAAC;AAE9F,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACtJ,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAWzD,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,qCAAqC;IACrC,WAAW,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC;YACd,iFAAiF;YACjF,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,QAAQ,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC;SACnB,EAAE,CAAC;KACP,CAAC;CACL;AA4CD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4G1G"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * format=flowed decoding that respects quote depth (RFC 3676).
3
+ *
4
+ * libmime's decoder joins any line ending in a space with the next raw line. That is right for
5
+ * unquoted text and wrong for quoted text, where RFC 3676 section 4.5 says a soft break only joins
6
+ * lines of the same quote depth, and the continuation's own quote markers are not part of the
7
+ * content. Roundcube writes an empty quoted line as "> " (quote marker plus stuffing), and the old
8
+ * decode glued the next quoted line onto it raw, turning "> Also, ..." into "> > Also, ...": depth
9
+ * 2 history that could never be read as an inline answer. Measured on test/fixtures/clients.
10
+ *
11
+ * Linear: every line is visited once and each paragraph is joined once.
12
+ */
13
+ export declare function decodeFlowed(text: string, delSp?: boolean): string;
14
+ //# sourceMappingURL=flowed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowed.d.ts","sourceRoot":"","sources":["../../src/mime/flowed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAmCH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,MAAM,CA+BhE"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * format=flowed decoding that respects quote depth (RFC 3676).
4
+ *
5
+ * libmime's decoder joins any line ending in a space with the next raw line. That is right for
6
+ * unquoted text and wrong for quoted text, where RFC 3676 section 4.5 says a soft break only joins
7
+ * lines of the same quote depth, and the continuation's own quote markers are not part of the
8
+ * content. Roundcube writes an empty quoted line as "> " (quote marker plus stuffing), and the old
9
+ * decode glued the next quoted line onto it raw, turning "> Also, ..." into "> > Also, ...": depth
10
+ * 2 history that could never be read as an inline answer. Measured on test/fixtures/clients.
11
+ *
12
+ * Linear: every line is visited once and each paragraph is joined once.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.decodeFlowed = decodeFlowed;
16
+ function parseLine(raw, delSp) {
17
+ let depth = 0;
18
+ while (depth < raw.length && raw.charCodeAt(depth) === 62 /* > */) {
19
+ depth++;
20
+ }
21
+ let content = raw.slice(depth);
22
+ // Space stuffing: one space right after the quote markers, or at the start of an unquoted
23
+ // line, belongs to the encoding, not the text (RFC 3676 section 4.4).
24
+ if (content.startsWith(' ')) {
25
+ content = content.slice(1);
26
+ }
27
+ // A signature separator is never flowed, whatever its trailing space suggests.
28
+ const flowed = content.endsWith(' ') && content !== '-- ';
29
+ if (flowed && delSp) {
30
+ content = content.slice(0, -1);
31
+ }
32
+ return { depth, content, flowed };
33
+ }
34
+ function render(depth, content) {
35
+ if (!depth) {
36
+ return content;
37
+ }
38
+ const marker = '>'.repeat(depth);
39
+ return content ? `${marker} ${content}` : marker;
40
+ }
41
+ function decodeFlowed(text, delSp = false) {
42
+ const out = [];
43
+ let depth = -1;
44
+ let pieces = [];
45
+ let open = false;
46
+ const close = () => {
47
+ if (depth !== -1) {
48
+ out.push(render(depth, pieces.join('')));
49
+ }
50
+ pieces = [];
51
+ depth = -1;
52
+ open = false;
53
+ };
54
+ for (const raw of text.split(/\r?\n/)) {
55
+ const line = parseLine(raw, delSp);
56
+ // Join only a soft break followed by a line at the same depth; anything else ends the
57
+ // paragraph, and a flowed line at a depth change is treated as fixed.
58
+ if (!(open && line.depth === depth)) {
59
+ close();
60
+ depth = line.depth;
61
+ }
62
+ pieces.push(line.content);
63
+ open = line.flowed;
64
+ if (!open) {
65
+ close();
66
+ }
67
+ }
68
+ close();
69
+ return out.join('\n');
70
+ }
71
+ //# sourceMappingURL=flowed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowed.js","sourceRoot":"","sources":["../../src/mime/flowed.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAmCH,oCA+BC;AA1DD,SAAS,SAAS,CAAC,GAAW,EAAE,KAAc;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;QAChE,KAAK,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,0FAA0F;IAC1F,sEAAsE;IACtE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,+EAA+E;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC;IAC1D,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAClB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAe;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;IACpD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,EAAE,CAAC;QACZ,KAAK,GAAG,CAAC,CAAC,CAAC;QACX,IAAI,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,sFAAsF;QACtF,sEAAsE;QACtE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -15,14 +15,11 @@
15
15
  * Nothing in here throws for malformed input. Problems are recorded as warnings and the walk
16
16
  * continues, because a corpus run must never stop on one bad message.
17
17
  */
18
- var __importDefault = (this && this.__importDefault) || function (mod) {
19
- return (mod && mod.__esModule) ? mod : { "default": mod };
20
- };
21
18
  Object.defineProperty(exports, "__esModule", { value: true });
22
19
  exports.structureSignature = structureSignature;
23
20
  exports.parseMessage = parseMessage;
24
21
  const mailsplit_1 = require("@zone-eu/mailsplit");
25
- const libmime_1 = __importDefault(require("libmime"));
22
+ const flowed_1 = require("./flowed");
26
23
  const charset_1 = require("./charset");
27
24
  const headers_1 = require("./headers");
28
25
  const model_1 = require("./model");
@@ -87,7 +84,7 @@ async function decodeTextPart(pending, maxBytes, warnings) {
87
84
  let text = decoded.text;
88
85
  if (part.flowed && part.contentType === 'text/plain') {
89
86
  try {
90
- text = libmime_1.default.decodeFlowed(text, part.delSp);
87
+ text = (0, flowed_1.decodeFlowed)(text, part.delSp);
91
88
  }
92
89
  catch {
93
90
  // Keep the unfolded text. A failed flowed decode is cosmetic, never a reason to lose content.
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/mime/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/mime/parse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-blocks.d.ts","sourceRoot":"","sources":["../../src/segment/html-blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,EAAE,KAAK,KAAK,EAAiC,MAAM,SAAS,CAAC;AAqWpE,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACrB;AA4ED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA4XlF"}
1
+ {"version":3,"file":"html-blocks.d.ts","sourceRoot":"","sources":["../../src/segment/html-blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,EAAE,KAAK,KAAK,EAAiC,MAAM,SAAS,CAAC;AAqWpE,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACrB;AA4ED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAgYlF"}
@@ -329,7 +329,7 @@ function kindFor(nodes, ancestors, text, evidence) {
329
329
  return 'reply_header';
330
330
  }
331
331
  // Clients that use no marker class still emit the attribution as its own short element.
332
- if (text.length <= 300 && !text.includes('\n') && (0, reply_header_1.detectAttributionLine)(text)) {
332
+ if (!text.includes('\n') && (0, reply_header_1.detectAttributionLine)(text)) {
333
333
  return 'reply_header';
334
334
  }
335
335
  if (ancestors.some(ancestor => ancestor.element.rawTagName?.toLowerCase() === 'blockquote')) {
@@ -654,6 +654,12 @@ function segmentHtmlBlocks(html, mimePart) {
654
654
  const lineTexts = [];
655
655
  const lineOwners = [];
656
656
  for (const block of blocks) {
657
+ // Whitespace-only blocks add no line of their own. GMX puts each header field in its own
658
+ // element with whitespace blocks between them, and a boundary for every one of those left
659
+ // gaps wider than the detector's rule allows, so its header block was never found.
660
+ if (block.features.isAllBlank) {
661
+ continue;
662
+ }
657
663
  for (const line of block.content.split('\n')) {
658
664
  lineTexts.push(line.trim());
659
665
  lineOwners.push(block.index);
@@ -722,12 +728,10 @@ function segmentHtmlBlocks(html, mimePart) {
722
728
  if (nonBlankLines.length > 1 &&
723
729
  RE_KINDABLE.has(block.kind) &&
724
730
  !block.evidence.some(item => item.kind === 'reply-anchor' || item.kind === 'attribution')) {
725
- const first = nonBlankLines[0];
726
- if (first.length <= 300) {
727
- const attribution = (0, reply_header_1.detectAttributionLine)(first);
728
- if (attribution) {
729
- block.evidence.push(attribution);
730
- }
731
+ // The detector owns the length limit, after dropping mailto URLs.
732
+ const attribution = (0, reply_header_1.detectAttributionLine)(nonBlankLines[0]);
733
+ if (attribution) {
734
+ block.evidence.push(attribution);
731
735
  }
732
736
  }
733
737
  // A separator line drawn as text. The plain text path detects these; in HTML the same