@postalsys/email-content 0.1.8 → 0.1.10
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.
- package/README.md +27 -17
- package/dist/.tsbuildinfo +1 -1
- package/dist/analyze.d.ts +3 -0
- package/dist/analyze.d.ts.map +1 -1
- package/dist/analyze.js +10 -4
- package/dist/analyze.js.map +1 -1
- package/dist/annotate/agreement.d.ts +99 -0
- package/dist/annotate/agreement.d.ts.map +1 -0
- package/dist/annotate/agreement.js +126 -0
- package/dist/annotate/agreement.js.map +1 -0
- package/dist/annotate/client.d.ts +7 -19
- package/dist/annotate/client.d.ts.map +1 -1
- package/dist/annotate/client.js +28 -82
- package/dist/annotate/client.js.map +1 -1
- package/dist/annotate/http.d.ts +57 -0
- package/dist/annotate/http.d.ts.map +1 -0
- package/dist/annotate/http.js +99 -0
- package/dist/annotate/http.js.map +1 -0
- package/dist/annotate/llm.d.ts +17 -0
- package/dist/annotate/llm.d.ts.map +1 -1
- package/dist/annotate/llm.js +68 -36
- package/dist/annotate/llm.js.map +1 -1
- package/dist/annotate/probabilities.d.ts +48 -0
- package/dist/annotate/probabilities.d.ts.map +1 -0
- package/dist/annotate/probabilities.js +119 -0
- package/dist/annotate/probabilities.js.map +1 -0
- package/dist/annotate/providers.d.ts +26 -0
- package/dist/annotate/providers.d.ts.map +1 -0
- package/dist/annotate/providers.js +43 -0
- package/dist/annotate/providers.js.map +1 -0
- package/dist/annotate/store.d.ts +3 -0
- package/dist/annotate/store.d.ts.map +1 -1
- package/dist/annotate/store.js +3 -2
- package/dist/annotate/store.js.map +1 -1
- package/dist/annotate/typesafe-client.d.ts +64 -0
- package/dist/annotate/typesafe-client.d.ts.map +1 -0
- package/dist/annotate/typesafe-client.js +76 -0
- package/dist/annotate/typesafe-client.js.map +1 -0
- package/dist/annotate/typesafe-prompt.d.ts +64 -0
- package/dist/annotate/typesafe-prompt.d.ts.map +1 -0
- package/dist/annotate/typesafe-prompt.js +170 -0
- package/dist/annotate/typesafe-prompt.js.map +1 -0
- package/dist/classify/rules.d.ts +7 -0
- package/dist/classify/rules.d.ts.map +1 -1
- package/dist/classify/rules.js +117 -18
- package/dist/classify/rules.js.map +1 -1
- package/dist/cli/agreement.d.ts +27 -0
- package/dist/cli/agreement.d.ts.map +1 -0
- package/dist/cli/agreement.js +153 -0
- package/dist/cli/agreement.js.map +1 -0
- package/dist/cli/annotate.d.ts.map +1 -1
- package/dist/cli/annotate.js +28 -16
- package/dist/cli/annotate.js.map +1 -1
- package/dist/cli/audit.d.ts +12 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +142 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/disagreements.d.ts.map +1 -1
- package/dist/cli/disagreements.js +20 -3
- package/dist/cli/disagreements.js.map +1 -1
- package/dist/cli/evaluate.d.ts.map +1 -1
- package/dist/cli/evaluate.js +31 -72
- package/dist/cli/evaluate.js.map +1 -1
- package/dist/cli/main.js +28 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/corpus/analyze.d.ts.map +1 -1
- package/dist/corpus/analyze.js +4 -5
- package/dist/corpus/analyze.js.map +1 -1
- package/dist/corpus/migrations/index.d.ts.map +1 -1
- package/dist/corpus/migrations/index.js +14 -0
- package/dist/corpus/migrations/index.js.map +1 -1
- package/dist/corpus/stats.d.ts +1 -0
- package/dist/corpus/stats.d.ts.map +1 -1
- package/dist/corpus/stats.js +1 -0
- package/dist/corpus/stats.js.map +1 -1
- package/dist/detect/patterns/forward-headers.json +24 -0
- package/dist/detect/patterns/html-clients.json +27 -0
- package/dist/detect/patterns/quoted-headers.json +7 -0
- package/dist/detect/patterns/reply-headers.json +410 -0
- package/dist/detect/patterns.d.ts +2 -0
- package/dist/detect/patterns.d.ts.map +1 -1
- package/dist/detect/patterns.js +3 -0
- package/dist/detect/patterns.js.map +1 -1
- package/dist/detect/reply-header.d.ts +7 -0
- package/dist/detect/reply-header.d.ts.map +1 -1
- package/dist/detect/reply-header.js +51 -4
- package/dist/detect/reply-header.js.map +1 -1
- package/dist/detect/subject.d.ts +16 -0
- package/dist/detect/subject.d.ts.map +1 -0
- package/dist/detect/subject.js +22 -0
- package/dist/detect/subject.js.map +1 -0
- package/dist/eval/metrics.d.ts +7 -0
- package/dist/eval/metrics.d.ts.map +1 -1
- package/dist/eval/metrics.js +1 -1
- package/dist/eval/metrics.js.map +1 -1
- package/dist/eval/pattern-audit.d.ts +56 -0
- package/dist/eval/pattern-audit.d.ts.map +1 -0
- package/dist/eval/pattern-audit.js +111 -0
- package/dist/eval/pattern-audit.js.map +1 -0
- package/dist/eval/reference.d.ts +51 -0
- package/dist/eval/reference.d.ts.map +1 -0
- package/dist/eval/reference.js +96 -0
- package/dist/eval/reference.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mime/flowed.d.ts +14 -0
- package/dist/mime/flowed.d.ts.map +1 -0
- package/dist/mime/flowed.js +71 -0
- package/dist/mime/flowed.js.map +1 -0
- package/dist/mime/parse.js +2 -5
- package/dist/mime/parse.js.map +1 -1
- package/dist/segment/features.d.ts.map +1 -1
- package/dist/segment/features.js +2 -1
- package/dist/segment/features.js.map +1 -1
- package/dist/segment/html-blocks.d.ts.map +1 -1
- package/dist/segment/html-blocks.js +33 -9
- package/dist/segment/html-blocks.js.map +1 -1
- package/dist/segment/text-blocks.d.ts.map +1 -1
- package/dist/segment/text-blocks.js +18 -3
- package/dist/segment/text-blocks.js.map +1 -1
- package/dist/segment/types.d.ts +7 -0
- package/dist/segment/types.d.ts.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `email-content audit` subcommand.
|
|
4
|
+
*
|
|
5
|
+
* Per pattern and per rule precision against the stored reference labels, so a pattern that fires
|
|
6
|
+
* on authored text can be found and fixed by name. See src/eval/pattern-audit.ts for what the two
|
|
7
|
+
* views measure.
|
|
8
|
+
*
|
|
9
|
+
* Prints pattern ids, reason codes and counts only, never message content.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.auditCommand = auditCommand;
|
|
16
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
17
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
18
|
+
const index_1 = require("../index");
|
|
19
|
+
const store_1 = require("../corpus/store");
|
|
20
|
+
const thread_index_1 = require("../corpus/thread-index");
|
|
21
|
+
const pattern_audit_1 = require("../eval/pattern-audit");
|
|
22
|
+
const reference_1 = require("../eval/reference");
|
|
23
|
+
const parse_1 = require("../mime/parse");
|
|
24
|
+
const types_1 = require("../types");
|
|
25
|
+
const args_1 = require("./args");
|
|
26
|
+
function pct(value, total) {
|
|
27
|
+
return total ? `${((100 * value) / total).toFixed(1)}%` : '-';
|
|
28
|
+
}
|
|
29
|
+
function renderRows(title, rows, minBlocks) {
|
|
30
|
+
const out = [title, ` ${'key'.padEnd(52)} blocks precision authored lost lost chars reference labels`];
|
|
31
|
+
for (const row of rows) {
|
|
32
|
+
if (row.blocks < minBlocks && !row.authoredHidden) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const labels = types_1.LABELS.filter(label => row.byReference[label])
|
|
36
|
+
.map(label => `${label.slice(0, 5)}:${row.byReference[label]}`)
|
|
37
|
+
.join(' ');
|
|
38
|
+
out.push(` ${row.key.slice(0, 52).padEnd(52)} ${String(row.blocks).padStart(6)} ${(row.expected ? pct(row.matching, row.scored) : '-').padStart(10)} ` +
|
|
39
|
+
`${String(row.authored).padStart(9)} ${String(row.authoredHidden).padStart(5)} ${String(row.authoredHiddenChars).padStart(11)} ${labels}`);
|
|
40
|
+
}
|
|
41
|
+
out.push('');
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
async function auditCommand(args) {
|
|
45
|
+
const dbPath = (0, args_1.flagString)(args, 'db', 'data/corpus.sqlite');
|
|
46
|
+
if (!node_fs_1.default.existsSync(dbPath)) {
|
|
47
|
+
process.stderr.write(`no corpus database at ${dbPath}\n`);
|
|
48
|
+
return 2;
|
|
49
|
+
}
|
|
50
|
+
const model = (0, args_1.flagString)(args, 'model', 'gpt-5.6-sol');
|
|
51
|
+
const promptVersion = (0, args_1.flagString)(args, 'prompt-version', '');
|
|
52
|
+
const useHistory = (0, args_1.flagBool)(args, 'history', false);
|
|
53
|
+
const minBlocks = (0, args_1.flagNonNegativeInt)(args, 'min', 5);
|
|
54
|
+
const store = new store_1.CorpusStore(dbPath);
|
|
55
|
+
const root = store.latestCompletedRun()?.root;
|
|
56
|
+
if (!root) {
|
|
57
|
+
process.stderr.write('no completed scan run found\n');
|
|
58
|
+
store.close();
|
|
59
|
+
return 2;
|
|
60
|
+
}
|
|
61
|
+
const byPath = (0, reference_1.loadReference)(store, model, promptVersion);
|
|
62
|
+
if (!byPath.size) {
|
|
63
|
+
process.stderr.write(`no annotations found for model ${model}. Run "annotate" first.\n`);
|
|
64
|
+
store.close();
|
|
65
|
+
return 2;
|
|
66
|
+
}
|
|
67
|
+
const resolver = useHistory ? (0, thread_index_1.corpusThreadResolver)(store, root) : null;
|
|
68
|
+
process.stderr.write(`auditing ${byPath.size} messages against ${model}${useHistory ? ', with thread history' : ''}\n`);
|
|
69
|
+
const blocks = [];
|
|
70
|
+
let failures = 0;
|
|
71
|
+
let unaligned = 0;
|
|
72
|
+
for (const [relPath, references] of byPath) {
|
|
73
|
+
let result;
|
|
74
|
+
try {
|
|
75
|
+
const raw = node_fs_1.default.readFileSync(node_path_1.default.join(root, relPath));
|
|
76
|
+
let historyDocuments;
|
|
77
|
+
if (resolver) {
|
|
78
|
+
try {
|
|
79
|
+
historyDocuments = await resolver.resolve((await (0, parse_1.parseMessage)(raw)).headers);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
historyDocuments = undefined;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
result = await (0, index_1.extract)(raw, { explain: true, ...(historyDocuments?.length ? { historyDocuments } : {}) });
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
failures++;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const diagnostics = result.diagnostics?.blocks ?? [];
|
|
92
|
+
const primary = result.diagnostics?.primaryPart ?? '';
|
|
93
|
+
const byCoordinates = new Map(diagnostics.map(block => [`${block.mimePart}|${block.sourceIndex}`, block]));
|
|
94
|
+
const { lookup, emitted } = (0, reference_1.segmentLookup)(result.segments, result.hiddenSegments);
|
|
95
|
+
for (const reference of references) {
|
|
96
|
+
if (!emitted(reference.mime_part)) {
|
|
97
|
+
unaligned++;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
// Same fallback as the segment lookup: an annotation without a part belongs to the
|
|
101
|
+
// only part a single section message has.
|
|
102
|
+
const block = byCoordinates.get(`${reference.mime_part ?? primary}|${reference.block_index}`);
|
|
103
|
+
if (!block) {
|
|
104
|
+
unaligned++;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
// Nothing left to show or hide; evaluate skips these too.
|
|
108
|
+
if (block.features.isAllBlank === true) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const covering = lookup(reference.mime_part, reference.block_index);
|
|
112
|
+
blocks.push({
|
|
113
|
+
reference: reference.label,
|
|
114
|
+
predicted: covering?.label ?? 'UNKNOWN',
|
|
115
|
+
hidden: covering?.hidden ?? false,
|
|
116
|
+
chars: reference.char_count,
|
|
117
|
+
evidence: block.evidence,
|
|
118
|
+
reasons: block.reasons
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
store.close();
|
|
123
|
+
if (failures) {
|
|
124
|
+
process.stderr.write(`${failures} message(s) could not be audited\n`);
|
|
125
|
+
}
|
|
126
|
+
if (unaligned) {
|
|
127
|
+
// Annotations made before a segmentation change can point at blocks that no longer exist.
|
|
128
|
+
process.stderr.write(`${unaligned} annotated block(s) belong to a part the extractor did not emit, or no longer align with the current segmentation, and were skipped\n`);
|
|
129
|
+
}
|
|
130
|
+
const audit = (0, pattern_audit_1.auditPatterns)(blocks);
|
|
131
|
+
if ((0, args_1.flagBool)(args, 'json', false)) {
|
|
132
|
+
process.stdout.write(`${JSON.stringify(audit, null, 2)}\n`);
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
const out = [`PATTERN AUDIT vs ${model}${useHistory ? ' (with history)' : ' (no history)'}`, ` blocks ${audit.blocks}`, ''];
|
|
136
|
+
out.push(' precision: share of hits whose reference label is one the evidence kind implies', ' authored: hits the reference says the sender wrote (NEW_CONTENT or INLINE_QUOTE)', ' lost: authored hits the extractor hid', '');
|
|
137
|
+
out.push(...renderRows('EVIDENCE (pattern precision, worst first)', audit.evidence, minBlocks));
|
|
138
|
+
out.push(...renderRows('REASONS (rule precision against the label the rule assigned)', audit.reasons, minBlocks));
|
|
139
|
+
process.stdout.write(`${out.join('\n')}\n`);
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disagreements.d.ts","sourceRoot":"","sources":["../../src/cli/disagreements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"disagreements.d.ts","sourceRoot":"","sources":["../../src/cli/disagreements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AA6C1F,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA8H5E"}
|
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.disagreementsCommand = disagreementsCommand;
|
|
18
18
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
19
19
|
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
const probabilities_1 = require("../annotate/probabilities");
|
|
20
21
|
const rules_1 = require("../classify/rules");
|
|
21
22
|
const store_1 = require("../corpus/store");
|
|
22
23
|
const parse_1 = require("../mime/parse");
|
|
@@ -64,6 +65,11 @@ async function disagreementsCommand(args) {
|
|
|
64
65
|
return 2;
|
|
65
66
|
}
|
|
66
67
|
const limit = (0, args_1.flagPositiveInt)(args, 'limit', 20);
|
|
68
|
+
const sort = (0, args_1.flagString)(args, 'sort', 'size');
|
|
69
|
+
if (sort !== 'size' && sort !== 'margin') {
|
|
70
|
+
process.stderr.write(`unknown sort: ${sort}. Use size or margin\n`);
|
|
71
|
+
return 2;
|
|
72
|
+
}
|
|
67
73
|
const context = (0, args_1.flagNonNegativeInt)(args, 'context', 2);
|
|
68
74
|
const store = new store_1.CorpusStore(dbPath);
|
|
69
75
|
// Only a run that finished cleanly. An interrupted or failed run holds partial output that
|
|
@@ -92,10 +98,13 @@ async function disagreementsCommand(args) {
|
|
|
92
98
|
params.push(versionFilter);
|
|
93
99
|
}
|
|
94
100
|
const runJoin = joins.length ? `AND run_id IN (SELECT r.id FROM annotation_runs r WHERE ${joins.join(' AND ')})` : '';
|
|
95
|
-
|
|
101
|
+
// Smallest margin first: the blocks the annotator itself found ambiguous, which is where a human
|
|
102
|
+
// adjudicator adds the most. Rows without a distribution have no margin and sort last, by size.
|
|
103
|
+
const order = sort === 'margin' ? 'margin IS NULL, margin, char_count DESC' : 'char_count DESC';
|
|
104
|
+
const rows = store.query(`SELECT path, block_index, representation, label, confidence, baseline_label, baseline_conf, baseline_reasons, char_count, probabilities, margin
|
|
96
105
|
FROM annotations
|
|
97
106
|
WHERE ${clause} ${runFilter ? 'AND run_id = ' + runFilter : ''} ${runJoin}
|
|
98
|
-
ORDER BY
|
|
107
|
+
ORDER BY ${order}
|
|
99
108
|
LIMIT ?`, ...params, limit);
|
|
100
109
|
if (!rows.length) {
|
|
101
110
|
process.stdout.write(`no ${direction} disagreements recorded\n`);
|
|
@@ -103,7 +112,7 @@ async function disagreementsCommand(args) {
|
|
|
103
112
|
return 0;
|
|
104
113
|
}
|
|
105
114
|
const out = [];
|
|
106
|
-
out.push(`${rows.length} ${direction} disagreement(s), largest first`);
|
|
115
|
+
out.push(`${rows.length} ${direction} disagreement(s), ${sort === 'margin' ? 'most ambiguous' : 'largest'} first`);
|
|
107
116
|
if (direction === 'expensive') {
|
|
108
117
|
out.push('The baseline treated these as reply history. The annotator thought the sender wrote them.');
|
|
109
118
|
out.push('Each one is a candidate content loss bug and should be judged by a human.');
|
|
@@ -126,6 +135,14 @@ async function disagreementsCommand(args) {
|
|
|
126
135
|
out.push(`${row.path} block #${row.block_index} (${row.representation})`);
|
|
127
136
|
out.push(` baseline: ${row.baseline_label} ${row.baseline_conf?.toFixed(2) ?? '?'} annotator: ${row.label} ${row.confidence.toFixed(2)}`);
|
|
128
137
|
out.push(` reasons: ${row.baseline_reasons || 'none'}`);
|
|
138
|
+
const probabilities = (0, probabilities_1.parseStoredProbabilities)(row.probabilities);
|
|
139
|
+
if (probabilities) {
|
|
140
|
+
const ranked = Object.entries(probabilities)
|
|
141
|
+
.filter(([, value]) => value >= 0.01)
|
|
142
|
+
.sort((a, b) => b[1] - a[1])
|
|
143
|
+
.map(([label, value]) => `${label} ${value.toFixed(2)}`);
|
|
144
|
+
out.push(` p: ${ranked.join(' ')} (margin ${(row.margin ?? (0, probabilities_1.probabilityMargin)(probabilities)).toFixed(2)})`);
|
|
145
|
+
}
|
|
129
146
|
if (block) {
|
|
130
147
|
out.push(` depth: quote=${block.features.quoteDepth} blockquote=${block.features.blockquoteDepth} kind=${block.kind}`);
|
|
131
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disagreements.js","sourceRoot":"","sources":["../../src/cli/disagreements.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;
|
|
1
|
+
{"version":3,"file":"disagreements.js","sourceRoot":"","sources":["../../src/cli/disagreements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAsEnF,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmJvE"}
|
package/dist/cli/evaluate.js
CHANGED
|
@@ -25,6 +25,7 @@ const store_1 = require("../corpus/store");
|
|
|
25
25
|
const thread_index_1 = require("../corpus/thread-index");
|
|
26
26
|
const metrics_1 = require("../eval/metrics");
|
|
27
27
|
const parse_1 = require("../mime/parse");
|
|
28
|
+
const reference_1 = require("../eval/reference");
|
|
28
29
|
const types_1 = require("../types");
|
|
29
30
|
const args_1 = require("./args");
|
|
30
31
|
function pct(value) {
|
|
@@ -102,45 +103,21 @@ async function evaluateCommand(args) {
|
|
|
102
103
|
store.close();
|
|
103
104
|
return 2;
|
|
104
105
|
}
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// messages labelled only under an older convention are still included. The annotation guide's
|
|
109
|
-
// rule that runs made under different conventions must never be silently compared is the
|
|
110
|
-
// reason the flag exists; use it whenever more than one prompt version is present.
|
|
111
|
-
const versionClause = promptVersion ? ' AND r.prompt_version = ?' : '';
|
|
112
|
-
const versionClauseInner = promptVersion ? ' AND r2.prompt_version = ?' : '';
|
|
113
|
-
const params = promptVersion ? [model, promptVersion, promptVersion] : [model];
|
|
114
|
-
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
|
|
115
|
-
FROM annotations a
|
|
116
|
-
JOIN annotation_runs r ON r.id = a.run_id
|
|
117
|
-
JOIN messages m ON m.path = a.path
|
|
118
|
-
WHERE r.model = ? AND a.source = 'llm'${versionClause}
|
|
119
|
-
AND a.id = (SELECT MAX(a2.id) FROM annotations a2
|
|
120
|
-
JOIN annotation_runs r2 ON r2.id = a2.run_id
|
|
121
|
-
WHERE a2.path = a.path AND a2.block_index = a.block_index AND r2.model = r.model${versionClauseInner})
|
|
122
|
-
ORDER BY a.path, a.block_index`, ...params);
|
|
123
|
-
if (!reference.length) {
|
|
106
|
+
// See loadReference for why an explicit --prompt-version matters when several are present.
|
|
107
|
+
const byPath = (0, reference_1.loadReference)(store, model, promptVersion);
|
|
108
|
+
if (!byPath.size) {
|
|
124
109
|
process.stderr.write(`no annotations found for model ${model}. Run "annotate" first.\n`);
|
|
125
110
|
store.close();
|
|
126
111
|
return 2;
|
|
127
112
|
}
|
|
128
|
-
const byPath = new Map();
|
|
129
|
-
for (const row of reference) {
|
|
130
|
-
const list = byPath.get(row.path);
|
|
131
|
-
if (list) {
|
|
132
|
-
list.push(row);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
byPath.set(row.path, [row]);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
113
|
const paths = [...byPath.keys()].slice(0, limit || undefined);
|
|
139
114
|
const resolver = useHistory ? (0, thread_index_1.corpusThreadResolver)(store, root) : null;
|
|
140
115
|
process.stderr.write(`evaluating ${paths.length} messages against ${model}${useHistory ? ', with thread history' : ''}\n`);
|
|
141
116
|
const rows = [];
|
|
142
117
|
let failures = 0;
|
|
143
118
|
let withHistory = 0;
|
|
119
|
+
let notEmitted = 0;
|
|
120
|
+
let nowBlank = 0;
|
|
144
121
|
for (const relPath of paths) {
|
|
145
122
|
const references = byPath.get(relPath);
|
|
146
123
|
let raw;
|
|
@@ -166,53 +143,18 @@ async function evaluateCommand(args) {
|
|
|
166
143
|
}
|
|
167
144
|
let result;
|
|
168
145
|
try {
|
|
169
|
-
result = await (0, index_1.extract)(raw, historyDocuments ? { historyDocuments } : {});
|
|
146
|
+
result = await (0, index_1.extract)(raw, { explain: true, ...(historyDocuments ? { historyDocuments } : {}) });
|
|
170
147
|
}
|
|
171
148
|
catch {
|
|
172
149
|
failures++;
|
|
173
150
|
continue;
|
|
174
151
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
//
|
|
178
|
-
//
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
// being recorded; those fall back to a single unnamed bucket, which is exactly the previous
|
|
182
|
-
// behaviour for the single section messages they came from.
|
|
183
|
-
const predictions = new Map();
|
|
184
|
-
const bucketFor = (part) => {
|
|
185
|
-
let bucket = predictions.get(part);
|
|
186
|
-
if (!bucket) {
|
|
187
|
-
bucket = new Map();
|
|
188
|
-
predictions.set(part, bucket);
|
|
189
|
-
}
|
|
190
|
-
return bucket;
|
|
191
|
-
};
|
|
192
|
-
for (const segment of [...result.segments, ...result.hiddenSegments]) {
|
|
193
|
-
const blockIndex = (0, types_1.blockIndexOf)(segment.source);
|
|
194
|
-
if (blockIndex !== null) {
|
|
195
|
-
bucketFor((0, types_1.mimePartOf)(segment.source) ?? '').set(blockIndex, { label: segment.type, hidden: segment.visibility === 'hide' });
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
const ordered = new Map([...predictions].map(([part, bucket]) => [part, [...bucket.keys()].sort((a, b) => a - b)]));
|
|
199
|
-
// Segments start at a block index and run to the next one, so fill forward within the part.
|
|
200
|
-
const lookup = (part, index) => {
|
|
201
|
-
// An annotation with no recorded part matches whichever part the output actually used,
|
|
202
|
-
// which for a single section message is the only one there is.
|
|
203
|
-
const key = part !== null && predictions.has(part) ? part : (predictions.keys().next().value ?? '');
|
|
204
|
-
const starts = ordered.get(key) ?? [];
|
|
205
|
-
let best = null;
|
|
206
|
-
for (const start of starts) {
|
|
207
|
-
if (start <= index) {
|
|
208
|
-
best = start;
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return best === null ? null : (predictions.get(key)?.get(best) ?? null);
|
|
215
|
-
};
|
|
152
|
+
const { lookup, emitted } = (0, reference_1.segmentLookup)(result.segments, result.hiddenSegments);
|
|
153
|
+
const messageHasVisibleText = result.segments.some(segment => segment.text.trim() !== '');
|
|
154
|
+
// Blocks that no longer carry any text, such as a doctype the projection used to leak as
|
|
155
|
+
// body text. There is nothing left to show or hide, so there is nothing to score.
|
|
156
|
+
const primaryPart = result.diagnostics?.primaryPart ?? '';
|
|
157
|
+
const blank = new Set((result.diagnostics?.blocks ?? []).filter(block => block.features.isAllBlank === true).map(block => `${block.mimePart}|${block.sourceIndex}`));
|
|
216
158
|
const first = references[0];
|
|
217
159
|
const group = groupBy === 'history'
|
|
218
160
|
? historyDocuments?.length
|
|
@@ -224,6 +166,16 @@ async function evaluateCommand(args) {
|
|
|
224
166
|
? (first?.reply_style ?? 'unknown')
|
|
225
167
|
: (first?.client ?? 'unknown');
|
|
226
168
|
for (const item of references) {
|
|
169
|
+
// The annotated part is not what the extractor showed, typically the other alternative
|
|
170
|
+
// of a multipart/alternative. There is nothing to compare its blocks against.
|
|
171
|
+
if (!emitted(item.mime_part)) {
|
|
172
|
+
notEmitted++;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (blank.has(`${item.mime_part ?? primaryPart}|${item.block_index}`)) {
|
|
176
|
+
nowBlank++;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
227
179
|
const prediction = lookup(item.mime_part, item.block_index);
|
|
228
180
|
rows.push({
|
|
229
181
|
path: relPath,
|
|
@@ -235,11 +187,18 @@ async function evaluateCommand(args) {
|
|
|
235
187
|
// excluding it from the score.
|
|
236
188
|
predicted: prediction?.label ?? 'UNKNOWN',
|
|
237
189
|
hidden: prediction?.hidden ?? false,
|
|
238
|
-
group
|
|
190
|
+
group,
|
|
191
|
+
messageHasVisibleText
|
|
239
192
|
});
|
|
240
193
|
}
|
|
241
194
|
}
|
|
242
195
|
store.close();
|
|
196
|
+
if (nowBlank) {
|
|
197
|
+
process.stderr.write(`${nowBlank} annotated block(s) no longer carry any text and were skipped\n`);
|
|
198
|
+
}
|
|
199
|
+
if (notEmitted) {
|
|
200
|
+
process.stderr.write(`${notEmitted} annotated block(s) belong to a part the extractor did not emit and were skipped\n`);
|
|
201
|
+
}
|
|
243
202
|
if (failures) {
|
|
244
203
|
process.stderr.write(`${failures} message(s) could not be evaluated\n`);
|
|
245
204
|
}
|
package/dist/cli/evaluate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -74,8 +74,10 @@ Commands:
|
|
|
74
74
|
--traffic <class> human, ticketing, mailing-list, bulk, all (default human)
|
|
75
75
|
--replies false Include non replies
|
|
76
76
|
|
|
77
|
-
annotate Label blocks with an LLM instead of a human (sends content to
|
|
78
|
-
--
|
|
77
|
+
annotate Label blocks with an LLM instead of a human (sends content to the provider)
|
|
78
|
+
--provider <p> openai or typesafe (default openai)
|
|
79
|
+
--model <id> Model id (default gpt-5.6-sol, or jev-1.13.0 for typesafe)
|
|
80
|
+
--paths <file> Annotate exactly these corpus paths instead of sampling
|
|
79
81
|
--sample <n> Messages to annotate (default 25)
|
|
80
82
|
--concurrency <n> Parallel requests (default 4)
|
|
81
83
|
--traffic <class> Traffic class to sample from (default human)
|
|
@@ -87,6 +89,15 @@ Commands:
|
|
|
87
89
|
--direction <d> expensive, cheap, footers, all (default expensive)
|
|
88
90
|
--limit <n> Rows to show (default 20)
|
|
89
91
|
--run <id> Restrict to one annotation run
|
|
92
|
+
--model <id> Restrict to one annotator model
|
|
93
|
+
--prompt-version <v> Restrict to one prompt version
|
|
94
|
+
--sort <s> size, or margin for most ambiguous first (default size)
|
|
95
|
+
|
|
96
|
+
agreement Compare one annotator against others on shared blocks
|
|
97
|
+
--candidate <m@v> Annotator to judge, as model@prompt-version
|
|
98
|
+
--reference <m@v,...> Comma separated reference annotators
|
|
99
|
+
--cost-ratio <n> Re-apply the cost rule to the candidate's stored probabilities
|
|
100
|
+
--json Emit the full report as JSON
|
|
90
101
|
|
|
91
102
|
evaluate Score the extractor against an annotated reference set
|
|
92
103
|
--model <id> Reference annotations from this model (default gpt-5.6-sol)
|
|
@@ -94,6 +105,13 @@ Commands:
|
|
|
94
105
|
--group-by <field> client, lang or reply-style (default client)
|
|
95
106
|
--json Emit the full report as JSON
|
|
96
107
|
|
|
108
|
+
audit Per pattern and per rule precision against an annotated reference set
|
|
109
|
+
--model <id> Reference annotations from this model (default gpt-5.6-sol)
|
|
110
|
+
--prompt-version <v> Restrict to one prompt version
|
|
111
|
+
--history Resolve thread history from the corpus while auditing
|
|
112
|
+
--min <n> Hide rows with fewer blocks unless they lost content (default 5)
|
|
113
|
+
--json Emit the full report as JSON
|
|
114
|
+
|
|
97
115
|
version Print version information
|
|
98
116
|
|
|
99
117
|
Privacy: no command prints message bodies, subjects or addresses.
|
|
@@ -122,10 +140,18 @@ async function main(argv) {
|
|
|
122
140
|
const { disagreementsCommand } = await Promise.resolve().then(() => __importStar(require('./disagreements')));
|
|
123
141
|
return disagreementsCommand({ ...args, positional: args.positional.slice(1) });
|
|
124
142
|
}
|
|
143
|
+
case 'agreement': {
|
|
144
|
+
const { agreementCommand } = await Promise.resolve().then(() => __importStar(require('./agreement')));
|
|
145
|
+
return agreementCommand({ ...args, positional: args.positional.slice(1) });
|
|
146
|
+
}
|
|
125
147
|
case 'evaluate': {
|
|
126
148
|
const { evaluateCommand } = await Promise.resolve().then(() => __importStar(require('./evaluate')));
|
|
127
149
|
return evaluateCommand({ ...args, positional: args.positional.slice(1) });
|
|
128
150
|
}
|
|
151
|
+
case 'audit': {
|
|
152
|
+
const { auditCommand } = await Promise.resolve().then(() => __importStar(require('./audit')));
|
|
153
|
+
return auditCommand({ ...args, positional: args.positional.slice(1) });
|
|
154
|
+
}
|
|
129
155
|
case 'version':
|
|
130
156
|
process.stdout.write(`extractor ${types_1.EXTRACTOR_VERSION}, processing ${types_1.PROCESSING_VERSION}, node ${process.version}\n`);
|
|
131
157
|
return 0;
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oCAAqF;AACrF,iCAAmD;AAEnD,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/corpus/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/corpus/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGnE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAiHD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CA6FlF"}
|
package/dist/corpus/analyze.js
CHANGED
|
@@ -16,8 +16,7 @@ const patterns_1 = require("../detect/patterns");
|
|
|
16
16
|
const traffic_1 = require("../detect/traffic");
|
|
17
17
|
const hash_1 = require("../util/hash");
|
|
18
18
|
const lang_1 = require("../util/lang");
|
|
19
|
-
const
|
|
20
|
-
const FORWARD_SUBJECT = /^\s*(fwd?|tr|wg|vs|vl|doorst|пересылка)\s*:/i;
|
|
19
|
+
const subject_1 = require("../detect/subject");
|
|
21
20
|
function pickParts(message) {
|
|
22
21
|
const plain = [];
|
|
23
22
|
const html = [];
|
|
@@ -155,9 +154,9 @@ function analyzeMessage(message, salt) {
|
|
|
155
154
|
const subject = headers.subject || '';
|
|
156
155
|
const subjectPrefix = !subject
|
|
157
156
|
? 'none'
|
|
158
|
-
: REPLY_SUBJECT.test(subject)
|
|
157
|
+
: subject_1.REPLY_SUBJECT.test(subject)
|
|
159
158
|
? 'reply'
|
|
160
|
-
: FORWARD_SUBJECT.test(subject)
|
|
159
|
+
: subject_1.FORWARD_SUBJECT.test(subject)
|
|
161
160
|
? 'forward'
|
|
162
161
|
: 'plain';
|
|
163
162
|
const rootPart = message.partsById.get(message.rootId);
|
|
@@ -176,7 +175,7 @@ function analyzeMessage(message, salt) {
|
|
|
176
175
|
dateMs: headers.dateMs,
|
|
177
176
|
fromDomain: extractDomain(headers.from),
|
|
178
177
|
fromHash: fromAddress ? (0, hash_1.saltedHash)(salt, fromAddress) : null,
|
|
179
|
-
subjectHash: subject ? (0, hash_1.saltedHash)(salt, subject.trim().toLowerCase().replace(REPLY_SUBJECT, '').replace(FORWARD_SUBJECT, '').trim()) : null,
|
|
178
|
+
subjectHash: subject ? (0, hash_1.saltedHash)(salt, subject.trim().toLowerCase().replace(subject_1.REPLY_SUBJECT, '').replace(subject_1.FORWARD_SUBJECT, '').trim()) : null,
|
|
180
179
|
subjectPrefix,
|
|
181
180
|
subjectLength: subject.length,
|
|
182
181
|
structure: message.structure,
|