@mailwoman/neural 5.1.0 → 5.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.
- package/out/classifier.d.ts +11 -0
- package/out/classifier.d.ts.map +1 -1
- package/out/classifier.js +159 -18
- package/out/classifier.js.map +1 -1
- package/out/index.d.ts +1 -0
- package/out/index.d.ts.map +1 -1
- package/out/index.js +1 -0
- package/out/index.js.map +1 -1
- package/out/trace.d.ts +105 -0
- package/out/trace.d.ts.map +1 -0
- package/out/trace.js +23 -0
- package/out/trace.js.map +1 -0
- package/package.json +4 -4
package/out/classifier.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { type QueryShapeLike } from "./query-shape-prior.js";
|
|
|
20
20
|
import { type SpanProposalPriorOpts } from "./span-proposal-prior.js";
|
|
21
21
|
import { type StreetMorphologyPriorOpts } from "./street-morphology-prior.js";
|
|
22
22
|
import { MailwomanTokenizer } from "./tokenizer.js";
|
|
23
|
+
import type { NeuralParseTrace } from "./trace.js";
|
|
23
24
|
import type { ResolveWeightsOpts } from "./weights.js";
|
|
24
25
|
/**
|
|
25
26
|
* Structural type the classifier needs from a runner. Lets callers swap the Node-side `ONNXRunner` for a browser-side
|
|
@@ -169,6 +170,16 @@ export declare class NeuralAddressClassifier {
|
|
|
169
170
|
* pre-repair) — they are the model's emissions, not the decode's opinions.
|
|
170
171
|
*/
|
|
171
172
|
parseWithLogits(text: string, opts?: ParseOpts): Promise<ParseWithLogitsResult>;
|
|
173
|
+
/**
|
|
174
|
+
* Like `parse`, but returns the full decode-path trace instead of a tree: pieces, soft-feature channels as fed, raw
|
|
175
|
+
* logits, locale head, prior participation, post-prior emissions, viterbi path, repair diffs, and the final tokens.
|
|
176
|
+
* Shares the ENTIRE decode path with `parse` (one `#decode`, #481) and mirrors `parse`'s case normalization, so
|
|
177
|
+
* `buildAddressTree(trace.text, trace.tokens)` reproduces `parse(text)`'s tree exactly — modulo `opts.calibrate`,
|
|
178
|
+
* which `parse` forwards into the tree build to recalibrate node confidences and which the trace does not carry
|
|
179
|
+
* (tokens/labels/spans still match; re-pass the calibrator to the rebuild if calibrated confidences matter).
|
|
180
|
+
* Serializable by construction — see `./trace.js` for the schema and the spec reference.
|
|
181
|
+
*/
|
|
182
|
+
traceParse(text: string, opts?: ParseOpts): Promise<NeuralParseTrace>;
|
|
172
183
|
parseJSON(text: string, opts?: ParseOpts): Promise<Partial<Record<ComponentTag, string>>>;
|
|
173
184
|
parseJSON(text: string, opts: ParseOpts & SerializeJSONOpts): Promise<Partial<Record<ComponentTag, string>> & {
|
|
174
185
|
unknown?: UnknownSpan[];
|
package/out/classifier.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAIN,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAmC,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAGpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAA0C,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGpG,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAE9F,OAAO,EAAuC,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../classifier.ts"],"names":[],"mappings":"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"}
|
package/out/classifier.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { conventionsForSystem } from "@mailwoman/codex";
|
|
13
13
|
import { buildAddressTree, decodeAsJSON, decodeAsTuples, decodeAsXML, } from "@mailwoman/core/decoder";
|
|
14
14
|
import { proposeSpans } from "@mailwoman/core/pipeline";
|
|
15
|
-
import { detectAddressSystem } from "./address-system.js";
|
|
15
|
+
import { detectAddressSystem, LOCALE_COUNTRIES } from "./address-system.js";
|
|
16
16
|
import { normalizeInputCase } from "./case-normalize.js";
|
|
17
17
|
import { buildFSTEmissionPriors } from "./fst-prior.js";
|
|
18
18
|
import { STAGE2_BIO_LABELS } from "./labels.js";
|
|
@@ -24,6 +24,7 @@ import { buildSpanProposalPriors } from "./span-proposal-prior.js";
|
|
|
24
24
|
import { buildCodexSpanLexicon } from "./span-proposer-lexicon.js";
|
|
25
25
|
import { buildStreetMorphologyEmissionPriors } from "./street-morphology-prior.js";
|
|
26
26
|
import { MailwomanTokenizer } from "./tokenizer.js";
|
|
27
|
+
import { TRACE_PRIOR_KINDS } from "./trace.js";
|
|
27
28
|
import { repairUnitLabels } from "./unit-repair.js";
|
|
28
29
|
import { buildBIOEndMask, buildBIOStartMask, buildBIOTransitionMask, softmax, viterbi } from "./viterbi.js";
|
|
29
30
|
import { enforceWordConsistency } from "./word-consistency.js";
|
|
@@ -156,10 +157,12 @@ export class NeuralAddressClassifier {
|
|
|
156
157
|
if (text.length === 0)
|
|
157
158
|
return { raw: text, roots: [] };
|
|
158
159
|
// #690: title-case all-caps ASCII input so the mixed-case-trained model doesn't go OOD.
|
|
159
|
-
// Detection-gated (mixed-case + non-ASCII untouched)
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
|
|
160
|
+
// Detection-gated (mixed-case + non-ASCII untouched). Default-ON (#895 settled drift D2 — the geocode
|
|
161
|
+
// path had run it since #713 while the pipeline factory + raw classifier defaulted off); `false`
|
|
162
|
+
// restores the raw-case parse. ASCII title-case is char-for-char length-preserving, so token offsets
|
|
163
|
+
// are unaffected; the tree is built from the normalized text (values come out title-cased — the
|
|
164
|
+
// SHOUTING is gone, the resolver name-matches case-insensitively).
|
|
165
|
+
const modelText = opts?.normalizeCase !== false ? normalizeInputCase(text) : text;
|
|
163
166
|
const { tokens } = await this.#decode(modelText, opts);
|
|
164
167
|
return buildAddressTree(modelText, tokens, opts?.calibrate ? { calibrate: opts.calibrate } : undefined);
|
|
165
168
|
}
|
|
@@ -181,12 +184,68 @@ export class NeuralAddressClassifier {
|
|
|
181
184
|
pieces: pieces.map((p) => ({ start: p.start, end: p.end })),
|
|
182
185
|
};
|
|
183
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Like `parse`, but returns the full decode-path trace instead of a tree: pieces, soft-feature channels as fed, raw
|
|
189
|
+
* logits, locale head, prior participation, post-prior emissions, viterbi path, repair diffs, and the final tokens.
|
|
190
|
+
* Shares the ENTIRE decode path with `parse` (one `#decode`, #481) and mirrors `parse`'s case normalization, so
|
|
191
|
+
* `buildAddressTree(trace.text, trace.tokens)` reproduces `parse(text)`'s tree exactly — modulo `opts.calibrate`,
|
|
192
|
+
* which `parse` forwards into the tree build to recalibrate node confidences and which the trace does not carry
|
|
193
|
+
* (tokens/labels/spans still match; re-pass the calibrator to the rebuild if calibrated confidences matter).
|
|
194
|
+
* Serializable by construction — see `./trace.js` for the schema and the spec reference.
|
|
195
|
+
*/
|
|
196
|
+
async traceParse(text, opts) {
|
|
197
|
+
const labels = [...this.labels];
|
|
198
|
+
if (text.length === 0) {
|
|
199
|
+
// Mirror #decode's contract on the degenerate input: systemSource still reflects the
|
|
200
|
+
// RESOLVED conventions mode (opts over config), and every prior kind gets its
|
|
201
|
+
// participation record (applied: false — nothing can fire on zero pieces).
|
|
202
|
+
const conventionsOpt = opts?.addressSystemConventions ?? this.cfg.addressSystemConventions;
|
|
203
|
+
return {
|
|
204
|
+
text,
|
|
205
|
+
caseNormalized: false,
|
|
206
|
+
pieces: [],
|
|
207
|
+
logits: [],
|
|
208
|
+
detectedSystem: null,
|
|
209
|
+
systemSource: conventionsOpt === undefined ? "off" : conventionsOpt === "auto" ? "auto" : "pinned",
|
|
210
|
+
priors: TRACE_PRIOR_KINDS.map((kind) => ({ kind, applied: false })),
|
|
211
|
+
emissions: [],
|
|
212
|
+
labels,
|
|
213
|
+
path: [],
|
|
214
|
+
decode: this.decodeMode,
|
|
215
|
+
repairs: [],
|
|
216
|
+
tokens: [],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const modelText = opts?.normalizeCase !== false ? normalizeInputCase(text) : text;
|
|
220
|
+
const { tokens, logits, pieces, trace } = await this.#decode(modelText, opts, true);
|
|
221
|
+
if (!trace)
|
|
222
|
+
throw new Error("traceParse: #decode returned no trace despite trace=true (invariant)");
|
|
223
|
+
return {
|
|
224
|
+
text: modelText,
|
|
225
|
+
caseNormalized: modelText !== text,
|
|
226
|
+
pieces: pieces.map((p) => ({ piece: p.piece, id: p.id, start: p.start, end: p.end })),
|
|
227
|
+
...(trace.anchor ? { anchor: trace.anchor } : {}),
|
|
228
|
+
...(trace.gazetteer ? { gazetteer: trace.gazetteer } : {}),
|
|
229
|
+
logits,
|
|
230
|
+
// The axis rides with the values (self-describing — consumers must not hardcode the order).
|
|
231
|
+
...(trace.localeLogits ? { localeLogits: trace.localeLogits, localeCountries: [...LOCALE_COUNTRIES] } : {}),
|
|
232
|
+
detectedSystem: trace.detectedSystem,
|
|
233
|
+
systemSource: trace.systemSource,
|
|
234
|
+
priors: trace.priors,
|
|
235
|
+
emissions: trace.emissions,
|
|
236
|
+
labels,
|
|
237
|
+
path: trace.path,
|
|
238
|
+
decode: this.decodeMode,
|
|
239
|
+
repairs: trace.repairs,
|
|
240
|
+
tokens: tokens.map((t) => ({ ...t })),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
184
243
|
/**
|
|
185
244
|
* THE decode path (#481): tokenize → anchor/gazetteer features → infer → priors → CRF/argmax → tokens → repairs. Both
|
|
186
245
|
* `parse` and `parseWithLogits` consume this — never fork it; the 2026-06 audit found three drift surfaces in the
|
|
187
246
|
* previous duplicated copies.
|
|
188
247
|
*/
|
|
189
|
-
async #decode(text, opts) {
|
|
248
|
+
async #decode(text, opts, trace = false) {
|
|
190
249
|
const { pieces, ids } = this.cfg.tokenizer.encode(text);
|
|
191
250
|
// Soft-feature channels (#718): the postcode-anchor (#239/#240) + gazetteer-anchor (#464) clues
|
|
192
251
|
// the model conditions on alongside the ids, plus the near-postcode gazetteer choreography. The
|
|
@@ -200,6 +259,34 @@ export class NeuralAddressClassifier {
|
|
|
200
259
|
});
|
|
201
260
|
const { logits, localeLogits } = await this.cfg.runner.infer(ids, soft.anchor, soft.gazetteer);
|
|
202
261
|
this.assertEmissionWidth(logits);
|
|
262
|
+
// Trace retention (spec 2026-07-03): capture-by-reference of arrays this method already
|
|
263
|
+
// builds. Null when not tracing — the non-trace path allocates nothing new (every recording
|
|
264
|
+
// call below sits behind a `tracePriors?` / `if (traceRepairs)` guard, so even snapshot
|
|
265
|
+
// arguments are never built for a plain parse).
|
|
266
|
+
const tracePriors = trace ? [] : null;
|
|
267
|
+
const traceRepairs = trace ? [] : null;
|
|
268
|
+
const recordRepair = (pass, before, after) => {
|
|
269
|
+
if (!traceRepairs)
|
|
270
|
+
return;
|
|
271
|
+
if (before.length === after.length && before.every((label, i) => label === after[i]))
|
|
272
|
+
return;
|
|
273
|
+
traceRepairs.push({ pass, before, after });
|
|
274
|
+
};
|
|
275
|
+
// TraceRepair before/after are PER-PIECE (index-aligned with `pieces`). Token-count-preserving
|
|
276
|
+
// passes can read labels 1:1, but the span bridge MERGES fragments (dropping later tokens), so
|
|
277
|
+
// labels are projected back onto pieces via char offsets: each piece carries the label of the
|
|
278
|
+
// token covering its start. Keeps the alignment contract true for every pass.
|
|
279
|
+
const labelsPerPiece = (toks) => {
|
|
280
|
+
let t = 0;
|
|
281
|
+
return pieces.map((p) => {
|
|
282
|
+
while (t + 1 < toks.length && toks[t + 1].start <= p.start)
|
|
283
|
+
t++;
|
|
284
|
+
const tok = toks[t];
|
|
285
|
+
return (tok && tok.start <= p.start && p.start < tok.end ? tok.label : "O");
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
// `applied` reports EFFECT (see TracePrior): a composed prior counts only if any cell is nonzero.
|
|
289
|
+
const matrixHasBias = (m) => m.some((row) => row.some((v) => v !== 0));
|
|
203
290
|
// Address-system conventions (#511 Tier A): resolve which system's rules apply — caller-pinned
|
|
204
291
|
// system, or the model's own locale-head detection under a high confidence bar. Null = no
|
|
205
292
|
// constraints; the parse below is byte-identical to the pre-conventions path.
|
|
@@ -213,20 +300,32 @@ export class NeuralAddressClassifier {
|
|
|
213
300
|
? (detectAddressSystem(localeLogits)?.system ?? null)
|
|
214
301
|
: conventionsOpt;
|
|
215
302
|
const conventions = conventionsForSystem(detectedSystem);
|
|
216
|
-
|
|
217
|
-
|
|
303
|
+
const systemSource = conventionsOpt === undefined ? "off" : conventionsOpt === "auto" ? "auto" : "pinned";
|
|
304
|
+
const queryShapePrior = opts?.queryShape
|
|
305
|
+
? buildEmissionPriors(opts.queryShape, pieces, this.labels, {
|
|
218
306
|
biasScale: opts.queryShapeBiasScale ?? 1.0,
|
|
219
307
|
inputText: text,
|
|
220
|
-
})
|
|
221
|
-
:
|
|
222
|
-
|
|
223
|
-
|
|
308
|
+
})
|
|
309
|
+
: undefined;
|
|
310
|
+
let emissions = queryShapePrior ? addEmissionMatrix(logits, queryShapePrior) : logits;
|
|
311
|
+
tracePriors?.push({ kind: "queryShape", applied: queryShapePrior !== undefined && matrixHasBias(queryShapePrior) });
|
|
312
|
+
const fstPrior = opts?.fst
|
|
313
|
+
? buildFSTEmissionPriors(opts.fst, pieces, this.labels, {
|
|
224
314
|
biasScale: opts.fstBiasScale ?? 1.0,
|
|
225
|
-
})
|
|
226
|
-
|
|
227
|
-
if (
|
|
228
|
-
emissions = addEmissionMatrix(emissions,
|
|
229
|
-
}
|
|
315
|
+
})
|
|
316
|
+
: undefined;
|
|
317
|
+
if (fstPrior)
|
|
318
|
+
emissions = addEmissionMatrix(emissions, fstPrior);
|
|
319
|
+
tracePriors?.push({ kind: "fst", applied: fstPrior !== undefined && matrixHasBias(fstPrior) });
|
|
320
|
+
const morphologyPrior = opts?.fstStreetMorphology
|
|
321
|
+
? buildStreetMorphologyEmissionPriors(opts.fstStreetMorphology, pieces, this.labels, opts.fstStreetMorphologyOpts ?? {})
|
|
322
|
+
: undefined;
|
|
323
|
+
if (morphologyPrior)
|
|
324
|
+
emissions = addEmissionMatrix(emissions, morphologyPrior);
|
|
325
|
+
tracePriors?.push({
|
|
326
|
+
kind: "streetMorphology",
|
|
327
|
+
applied: morphologyPrior !== undefined && matrixHasBias(morphologyPrior),
|
|
328
|
+
});
|
|
230
329
|
// Stage 2.7 span proposer (#518, M2+M3): typed span proposals consumed as phrase priors.
|
|
231
330
|
// DEFAULT ON since 2026-06-12 (operator ruling): an omitted config builds the codex lexicon
|
|
232
331
|
// lazily with the frozen measured scales; `spanProposer: false` (config or per-parse) is the
|
|
@@ -237,10 +336,12 @@ export class NeuralAddressClassifier {
|
|
|
237
336
|
if (spanProposals.length > 0) {
|
|
238
337
|
emissions = addEmissionMatrix(emissions, buildSpanProposalPriors(spanProposals, pieces, this.labels, proposerCfg));
|
|
239
338
|
}
|
|
339
|
+
tracePriors?.push({ kind: "spanProposer", applied: spanProposals.length > 0 });
|
|
240
340
|
// (defaultProposer lives below decode helpers — one lazy build per classifier instance.)
|
|
241
341
|
// Conventions emission mask: tags that are ungrammatical in the detected system are removed
|
|
242
342
|
// from the decoder's vocabulary outright (-1e9 ≈ log 0). Copy-on-mask — `emissions` may alias
|
|
243
343
|
// `logits`, which the per-token confidence below reads unmasked.
|
|
344
|
+
let conventionsMaskApplied = false;
|
|
244
345
|
if (conventions?.forbiddenTags?.length) {
|
|
245
346
|
const forbidden = new Set();
|
|
246
347
|
for (const tag of conventions.forbiddenTags) {
|
|
@@ -252,9 +353,11 @@ export class NeuralAddressClassifier {
|
|
|
252
353
|
forbidden.add(i);
|
|
253
354
|
}
|
|
254
355
|
if (forbidden.size > 0) {
|
|
356
|
+
conventionsMaskApplied = true;
|
|
255
357
|
emissions = emissions.map((row) => row.map((v, idx) => (forbidden.has(idx) ? -1e9 : v)));
|
|
256
358
|
}
|
|
257
359
|
}
|
|
360
|
+
tracePriors?.push({ kind: "conventionsMask", applied: conventionsMaskApplied });
|
|
258
361
|
let labelIndices = this.decodeMode === "viterbi"
|
|
259
362
|
? viterbi({
|
|
260
363
|
emissions,
|
|
@@ -263,15 +366,22 @@ export class NeuralAddressClassifier {
|
|
|
263
366
|
endTransitions: this.endTransitions,
|
|
264
367
|
}).path
|
|
265
368
|
: emissions.map((row) => argmaxSoftmax(row).idx);
|
|
369
|
+
// The trace's `path` is the DECODER's output — snapshot before the word-consistency healing
|
|
370
|
+
// below reassigns labelIndices (the healing itself is visible as a `wordConsistency` repair).
|
|
371
|
+
const decodedPath = trace ? [...labelIndices] : null;
|
|
266
372
|
// Per-word BIO consistency repair (#727 + the admin-token fragmentation class). Opt-in — default
|
|
267
373
|
// OFF → byte-identical. Heals words whose pieces disagree (e.g. `VERMONT`→VER[loc]+MONT[region],
|
|
268
374
|
// `Lozère`→Loz[loc]+ère[region]) via a confidence-weighted vote over the post-prior emissions; a
|
|
269
375
|
// word whose pieces already agree is untouched. See word-consistency.ts.
|
|
270
376
|
let healedConfidence = null;
|
|
271
377
|
if (opts?.enforceWordConsistency ?? this.cfg.enforceWordConsistency ?? false) {
|
|
378
|
+
const beforeLabels = traceRepairs ? labelIndices.map((i) => (this.labels[i] ?? "O")) : [];
|
|
272
379
|
const wc = enforceWordConsistency(pieces, emissions, this.labels, labelIndices);
|
|
273
380
|
labelIndices = wc.labelIndices;
|
|
274
381
|
healedConfidence = wc.healedConfidence;
|
|
382
|
+
if (traceRepairs) {
|
|
383
|
+
recordRepair("wordConsistency", beforeLabels, labelIndices.map((i) => (this.labels[i] ?? "O")));
|
|
384
|
+
}
|
|
275
385
|
}
|
|
276
386
|
let tokens = pieces.map((p, i) => {
|
|
277
387
|
const idx = labelIndices[i];
|
|
@@ -290,10 +400,16 @@ export class NeuralAddressClassifier {
|
|
|
290
400
|
// shape (#511 Tier A): a span that is a sub-match of a shape-valid string is exactly the
|
|
291
401
|
// snap-only truncation class the pass exists for ("47110" decoded as "4711" + a digit-split).
|
|
292
402
|
if (opts?.postcodeRepair || conventions?.postcodePattern) {
|
|
403
|
+
const before = traceRepairs ? labelsPerPiece(tokens) : [];
|
|
293
404
|
tokens = repairPostcodeLabels(text, tokens).tokens;
|
|
405
|
+
if (traceRepairs)
|
|
406
|
+
recordRepair("postcodeRepair", before, labelsPerPiece(tokens));
|
|
294
407
|
}
|
|
295
408
|
if (opts?.unitRepair) {
|
|
409
|
+
const before = traceRepairs ? labelsPerPiece(tokens) : [];
|
|
296
410
|
tokens = repairUnitLabels(text, tokens).tokens;
|
|
411
|
+
if (traceRepairs)
|
|
412
|
+
recordRepair("unitRepair", before, labelsPerPiece(tokens));
|
|
297
413
|
}
|
|
298
414
|
// Punctuation-gap span bridging (v4.4.0 corrective — see span-bridge.ts): merge same-tag
|
|
299
415
|
// fragments split at unlabeled punctuation ("P.O. Box" decoding as P + O + Box). Opt-in,
|
|
@@ -301,9 +417,34 @@ export class NeuralAddressClassifier {
|
|
|
301
417
|
// ANNOTATION/QUOTED boundaries become merge-crossing constraints (M2's second half).
|
|
302
418
|
if (opts?.bridgePunctuationGaps ?? this.cfg.bridgePunctuationGaps) {
|
|
303
419
|
const blockedSpans = spanProposals.filter((p) => p.kind === "ANNOTATION_SPAN" || p.kind === "QUOTED_SPAN");
|
|
420
|
+
// The bridge MERGES tokens (later fragments are dropped), so both snapshots go through the
|
|
421
|
+
// per-piece projection — a merged span's label lands on every piece it covers, keeping
|
|
422
|
+
// before/after index-aligned with `pieces` per the TraceRepair contract.
|
|
423
|
+
const before = traceRepairs ? labelsPerPiece(tokens) : [];
|
|
304
424
|
tokens = bridgePunctuationGaps(text, tokens, blockedSpans.length > 0 ? { blockedSpans } : undefined);
|
|
425
|
+
if (traceRepairs)
|
|
426
|
+
recordRepair("spanBridge", before, labelsPerPiece(tokens));
|
|
305
427
|
}
|
|
306
|
-
return {
|
|
428
|
+
return {
|
|
429
|
+
tokens,
|
|
430
|
+
logits,
|
|
431
|
+
pieces,
|
|
432
|
+
...(trace
|
|
433
|
+
? {
|
|
434
|
+
trace: {
|
|
435
|
+
...(soft.anchor ? { anchor: soft.anchor } : {}),
|
|
436
|
+
...(soft.gazetteer ? { gazetteer: soft.gazetteer } : {}),
|
|
437
|
+
...(localeLogits ? { localeLogits } : {}),
|
|
438
|
+
detectedSystem,
|
|
439
|
+
systemSource,
|
|
440
|
+
priors: tracePriors,
|
|
441
|
+
emissions,
|
|
442
|
+
path: decodedPath,
|
|
443
|
+
repairs: traceRepairs,
|
|
444
|
+
},
|
|
445
|
+
}
|
|
446
|
+
: {}),
|
|
447
|
+
};
|
|
307
448
|
}
|
|
308
449
|
async parseJSON(text, opts = {}) {
|
|
309
450
|
return decodeAsJSON(await this.parse(text, opts), opts);
|
package/out/classifier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../classifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../classifier.ts"],"names":[],"mappings":"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"}
|
package/out/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from "./soft-features.js";
|
|
|
18
18
|
export * from "./span-proposal-prior.js";
|
|
19
19
|
export * from "./span-proposer-lexicon.js";
|
|
20
20
|
export * from "./tokenizer.js";
|
|
21
|
+
export * from "./trace.js";
|
|
21
22
|
export { buildBIOEndMask, buildBIOStartMask, buildBIOTransitionMask, perTokenArgmax, softmax, viterbi, } from "./viterbi.js";
|
|
22
23
|
export type { ViterbiInput, ViterbiResult } from "./viterbi.js";
|
|
23
24
|
export * from "./weights.js";
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC5G,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,OAAO,EACP,OAAO,GACP,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC/D,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC5G,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,OAAO,EACP,OAAO,GACP,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC/D,cAAc,cAAc,CAAA"}
|
package/out/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export * from "./soft-features.js";
|
|
|
17
17
|
export * from "./span-proposal-prior.js";
|
|
18
18
|
export * from "./span-proposer-lexicon.js";
|
|
19
19
|
export * from "./tokenizer.js";
|
|
20
|
+
export * from "./trace.js";
|
|
20
21
|
export { buildBIOEndMask, buildBIOStartMask, buildBIOTransitionMask, perTokenArgmax, softmax, viterbi, } from "./viterbi.js";
|
|
21
22
|
export * from "./weights.js";
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE/E,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,OAAO,EACP,OAAO,GACP,MAAM,cAAc,CAAA;AAErB,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE/E,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,OAAO,EACP,OAAO,GACP,MAAM,cAAc,CAAA;AAErB,cAAc,cAAc,CAAA"}
|
package/out/trace.d.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Parse-trace types — the serializable record of one trip through
|
|
7
|
+
* `NeuralAddressClassifier`'s decode path: what the model saw (pieces + soft-feature
|
|
8
|
+
* channels), what it believed (raw logits, locale head), what nudged it (priors), and what
|
|
9
|
+
* overrode it (repair passes). Produced by `traceParse` (classifier.ts); consumed by the docs
|
|
10
|
+
* `<ModelVisualizer>` and, later, `mailwoman parse --trace`. Spec:
|
|
11
|
+
* docs/superpowers/specs/2026-07-03-parse-trace-model-visualizer-design.md.
|
|
12
|
+
*
|
|
13
|
+
* Everything here is plain JSON-serializable data by construction — no Maps, no classes, no
|
|
14
|
+
* typed arrays. The schema-snapshot test (test/trace-parse.test.ts) guards drift.
|
|
15
|
+
*/
|
|
16
|
+
import type { SystemCode } from "@mailwoman/codex";
|
|
17
|
+
import type { DecoderToken } from "@mailwoman/core/decoder";
|
|
18
|
+
import type { SoftFeatureChannel } from "./soft-features.js";
|
|
19
|
+
/**
|
|
20
|
+
* The emission priors the decode path may compose, in application order. The ORDERED constant is the single source for
|
|
21
|
+
* "every kind" — the decode path's push sites and the empty-input return both produce records in exactly this order,
|
|
22
|
+
* and the trace test asserts against it, so adding a prior without its participation record is a test failure, not a
|
|
23
|
+
* silent omission.
|
|
24
|
+
*/
|
|
25
|
+
export declare const TRACE_PRIOR_KINDS: readonly ["queryShape", "fst", "streetMorphology", "spanProposer", "conventionsMask"];
|
|
26
|
+
export type TracePriorKind = (typeof TRACE_PRIOR_KINDS)[number];
|
|
27
|
+
/**
|
|
28
|
+
* One prior's participation record: present for every kind. `applied` reports EFFECT, not configuration — true only
|
|
29
|
+
* when the composed prior actually carried a nonzero bias (or the mask removed at least one label). A configured source
|
|
30
|
+
* that matched nothing reports `false`, so "why didn't my prior move the emissions" is answerable from the trace
|
|
31
|
+
* alone.
|
|
32
|
+
*/
|
|
33
|
+
export interface TracePrior {
|
|
34
|
+
kind: TracePriorKind;
|
|
35
|
+
applied: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** The post-decode repair passes, in application order. */
|
|
38
|
+
export type TraceRepairPass = "wordConsistency" | "postcodeRepair" | "unitRepair" | "spanBridge";
|
|
39
|
+
/**
|
|
40
|
+
* A repair pass that changed something: per-piece BIO label sequences before and after, index-aligned with `pieces`.
|
|
41
|
+
* Passes that ran but changed nothing are omitted.
|
|
42
|
+
*/
|
|
43
|
+
export interface TraceRepair {
|
|
44
|
+
pass: TraceRepairPass;
|
|
45
|
+
before: string[];
|
|
46
|
+
after: string[];
|
|
47
|
+
}
|
|
48
|
+
/** A tokenizer piece as fed to the model — `TokenizedPiece`, kept structural for JSON. */
|
|
49
|
+
export interface TracePiece {
|
|
50
|
+
piece: string;
|
|
51
|
+
id: number;
|
|
52
|
+
start: number;
|
|
53
|
+
end: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The full trace of one `traceParse` call. Field-by-field provenance lives in the spec's trace contract table; the one
|
|
57
|
+
* deviation from that table is that vocab ids ride on `pieces[].id` rather than a parallel `ids` array (same
|
|
58
|
+
* information, one fewer alignment invariant).
|
|
59
|
+
*/
|
|
60
|
+
export interface NeuralParseTrace {
|
|
61
|
+
/** The text the model actually saw (post case-normalize). */
|
|
62
|
+
text: string;
|
|
63
|
+
/** True when case normalization changed the input (`normalizeInputCase`, #690). */
|
|
64
|
+
caseNormalized: boolean;
|
|
65
|
+
pieces: TracePiece[];
|
|
66
|
+
/** Postcode-anchor channel exactly as fed (post-choreography). Absent = channel not fed. */
|
|
67
|
+
anchor?: SoftFeatureChannel;
|
|
68
|
+
/** Gazetteer channel exactly as fed (post-suppression). Absent = channel not fed. */
|
|
69
|
+
gazetteer?: SoftFeatureChannel;
|
|
70
|
+
/** Raw model emissions, pre-prior — `logits[tokenIdx][labelIdx]`. */
|
|
71
|
+
logits: number[][];
|
|
72
|
+
/** Locale-head output, index-aligned with `localeCountries`. Absent on models without the head. */
|
|
73
|
+
localeLogits?: number[];
|
|
74
|
+
/**
|
|
75
|
+
* The locale-head axis: the country code each `localeLogits` index means, serialized from the producing model's own
|
|
76
|
+
* `LOCALE_COUNTRIES` so consumers never hardcode the order (the PLACETYPE_ORDER dual-maintenance class — a retrained
|
|
77
|
+
* head that adds or reorders classes would otherwise silently mislabel every downstream gauge). Present iff
|
|
78
|
+
* `localeLogits` is.
|
|
79
|
+
*/
|
|
80
|
+
localeCountries?: string[];
|
|
81
|
+
/** Address system whose conventions applied, or null when conventions were off / below the bar. */
|
|
82
|
+
detectedSystem: SystemCode | null;
|
|
83
|
+
/** How `detectedSystem` was chosen: conventions off, locale-head auto-detect, or caller-pinned. */
|
|
84
|
+
systemSource: "off" | "auto" | "pinned";
|
|
85
|
+
priors: TracePrior[];
|
|
86
|
+
/** The post-prior, post-mask matrix viterbi actually decoded over. Equals `logits` when nothing fired. */
|
|
87
|
+
emissions: number[][];
|
|
88
|
+
/**
|
|
89
|
+
* The label vocabulary. Index-aligned with the logits/emissions inner dimension, which may be NARROWER than this list
|
|
90
|
+
* (the Stage-prefix rule: a Stage-N model loaded with Stage-N+1 labels emits only the prefix — see labels.ts +
|
|
91
|
+
* `assertEmissionWidth`). Never wider.
|
|
92
|
+
*/
|
|
93
|
+
labels: string[];
|
|
94
|
+
/**
|
|
95
|
+
* The DECODER's label indices per piece — the raw viterbi/argmax output, captured BEFORE the word-consistency healing
|
|
96
|
+
* vote and before every token-repair pass (all of which appear in `repairs`; final labels live on `tokens`). This is
|
|
97
|
+
* what the heatmap's path outline means: the cell the decode chose, not the healed result.
|
|
98
|
+
*/
|
|
99
|
+
path: number[];
|
|
100
|
+
decode: "viterbi" | "argmax";
|
|
101
|
+
repairs: TraceRepair[];
|
|
102
|
+
/** The final tokens — identical to what `parse()` builds its tree from. */
|
|
103
|
+
tokens: DecoderToken[];
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uFAAwF,CAAA;AAEtH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CAChB;AAED,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAA;AAEhG;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,eAAe,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;CACf;AAED,0FAA0F;AAC1F,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,qFAAqF;IACrF,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,qEAAqE;IACrE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;IAClB,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mGAAmG;IACnG,cAAc,EAAE,UAAU,GAAG,IAAI,CAAA;IACjC,mGAAmG;IACnG,YAAY,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;IACvC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,0GAA0G;IAC1G,SAAS,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB;;;;OAIG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,2EAA2E;IAC3E,MAAM,EAAE,YAAY,EAAE,CAAA;CACtB"}
|
package/out/trace.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Parse-trace types — the serializable record of one trip through
|
|
7
|
+
* `NeuralAddressClassifier`'s decode path: what the model saw (pieces + soft-feature
|
|
8
|
+
* channels), what it believed (raw logits, locale head), what nudged it (priors), and what
|
|
9
|
+
* overrode it (repair passes). Produced by `traceParse` (classifier.ts); consumed by the docs
|
|
10
|
+
* `<ModelVisualizer>` and, later, `mailwoman parse --trace`. Spec:
|
|
11
|
+
* docs/superpowers/specs/2026-07-03-parse-trace-model-visualizer-design.md.
|
|
12
|
+
*
|
|
13
|
+
* Everything here is plain JSON-serializable data by construction — no Maps, no classes, no
|
|
14
|
+
* typed arrays. The schema-snapshot test (test/trace-parse.test.ts) guards drift.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The emission priors the decode path may compose, in application order. The ORDERED constant is the single source for
|
|
18
|
+
* "every kind" — the decode path's push sites and the empty-input return both produce records in exactly this order,
|
|
19
|
+
* and the trace test asserts against it, so adding a prior without its participation record is a test failure, not a
|
|
20
|
+
* silent omission.
|
|
21
|
+
*/
|
|
22
|
+
export const TRACE_PRIOR_KINDS = ["queryShape", "fst", "streetMorphology", "spanProposer", "conventionsMask"];
|
|
23
|
+
//# sourceMappingURL=trace.js.map
|
package/out/trace.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,CAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/neural",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "Mailwoman neural classifier runtime: SentencePiece tokenizer + ONNX inference + decoder wiring.",
|
|
5
|
-
"license": "AGPL-3.0-only",
|
|
5
|
+
"license": "AGPL-3.0-only OR LicenseRef-Commercial",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/sister-software/mailwoman.git",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@mailwoman/codex": "5.
|
|
36
|
-
"@mailwoman/core": "5.
|
|
35
|
+
"@mailwoman/codex": "5.3.0",
|
|
36
|
+
"@mailwoman/core": "5.3.0",
|
|
37
37
|
"@sctg/sentencepiece-js": "^1.3.3",
|
|
38
38
|
"onnxruntime-node": "^1.26.0"
|
|
39
39
|
}
|