mailwoman 9.1.0 → 9.2.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/README.md +20 -6
- package/admin-coherence.ts +322 -0
- package/api-engine.ts +20 -20
- package/autocomplete-core.ts +97 -0
- package/cli-kit/dropin.ts +8 -8
- package/cli-kit/index.ts +3 -0
- package/cli-kit/metadata.ts +21 -0
- package/cli-kit/shared.ts +92 -43
- package/cli-native/command-router.ts +138 -0
- package/cli-native/commands/autocomplete.ts +53 -0
- package/cli-native/commands/doctor.ts +56 -0
- package/cli-native/commands/geocode.ts +450 -0
- package/cli-native/commands/openapi.ts +50 -0
- package/cli-native/commands/reverse.ts +142 -0
- package/cli-native/router.ts +57 -0
- package/cli-native/spec.ts +301 -0
- package/cli.ts +95 -51
- package/commands/clients/generate.tsx +27 -17
- package/commands/corpus/align-shard.tsx +21 -11
- package/commands/corpus/audit.tsx +30 -22
- package/commands/corpus/build.tsx +62 -42
- package/commands/corpus/download.tsx +24 -15
- package/commands/corpus/fetch.tsx +99 -67
- package/commands/corpus/golden/expand.tsx +41 -21
- package/commands/corpus/golden/promote.tsx +34 -19
- package/commands/corpus/golden-relabel.tsx +36 -17
- package/commands/corpus/ingest-csv.tsx +46 -19
- package/commands/corpus/list.tsx +18 -4
- package/commands/corpus/overlay-manifest.tsx +36 -23
- package/commands/corpus/run.tsx +47 -42
- package/commands/corpus/shard/index.tsx +83 -60
- package/commands/corpus/shard/kryptonite.tsx +34 -12
- package/commands/corpus/shard/translit.tsx +42 -16
- package/commands/corpus/stats.tsx +22 -12
- package/commands/corpus/sub-venue-extract.tsx +20 -9
- package/commands/corpus/sub-venue-lexicon.tsx +32 -21
- package/commands/corpus/upload.tsx +161 -89
- package/commands/coverage/build.tsx +101 -54
- package/commands/data/coverage.tsx +203 -0
- package/commands/data/index.tsx +23 -20
- package/commands/data/inventory.tsx +170 -0
- package/commands/data/pull.tsx +86 -40
- package/commands/data/status.tsx +34 -40
- package/commands/dev/download/libpostal-resources.tsx +25 -9
- package/commands/dev/download/ssl-address.tsx +23 -10
- package/commands/dev/generate/country-population.tsx +45 -0
- package/commands/dev/generate/country-reference.tsx +15 -3
- package/commands/dev/generate/language-types.tsx +15 -3
- package/commands/dev/generate/official-languages.tsx +30 -12
- package/commands/dev/generate/trace-fixture.tsx +22 -18
- package/commands/dev/jsonl-to-parquet.tsx +25 -13
- package/commands/dev/lint/corpus-shard.tsx +31 -17
- package/commands/dev/lint/mdx-angles.tsx +18 -18
- package/commands/dev/lint/shard-vocab.tsx +36 -16
- package/commands/eval/capability-manifest.tsx +38 -19
- package/commands/eval/error-analysis.tsx +42 -23
- package/commands/eval/es-postcode-centroids.tsx +29 -15
- package/commands/eval/fragment-board.tsx +30 -17
- package/commands/eval/fragment-dev.tsx +33 -11
- package/commands/eval/gate.tsx +38 -29
- package/commands/eval/gauntlet-build.tsx +20 -16
- package/commands/eval/gauntlet.tsx +70 -47
- package/commands/eval/invariance.tsx +43 -30
- package/commands/eval/ledger-append.tsx +55 -29
- package/commands/eval/mask-regression.tsx +40 -20
- package/commands/eval/oa-resolver.tsx +95 -78
- package/commands/eval/oracle-k.tsx +53 -27
- package/commands/eval/parity.tsx +55 -48
- package/commands/eval/poi-board.tsx +33 -43
- package/commands/eval/preset-compare.tsx +22 -10
- package/commands/eval/score-trends.tsx +22 -10
- package/commands/filer/edgar-ingest.tsx +30 -20
- package/commands/filer/linkage-eval.tsx +23 -12
- package/commands/gazetteer/affix-relabel.tsx +21 -14
- package/commands/gazetteer/anchor-lexicon.tsx +25 -12
- package/commands/gazetteer/build/admin.tsx +29 -23
- package/commands/gazetteer/build/anchor-lookup.tsx +30 -18
- package/commands/gazetteer/build/bdc.tsx +66 -58
- package/commands/gazetteer/build/candidate.tsx +56 -59
- package/commands/gazetteer/build/coincident-roles.tsx +18 -26
- package/commands/gazetteer/build/cz-districts.tsx +48 -0
- package/commands/gazetteer/build/fst.tsx +23 -11
- package/commands/gazetteer/build/fts.tsx +24 -22
- package/commands/gazetteer/build/gnaf-rooftop.tsx +80 -0
- package/commands/gazetteer/build/index.tsx +25 -23
- package/commands/gazetteer/build/locality-surface-lexicon.tsx +29 -17
- package/commands/gazetteer/build/nl-pc6.tsx +19 -9
- package/commands/gazetteer/build/nz-localities.tsx +51 -0
- package/commands/gazetteer/build/poi-brands.tsx +31 -29
- package/commands/gazetteer/build/poi.tsx +43 -50
- package/commands/gazetteer/build/postcode-codepoint.tsx +25 -14
- package/commands/gazetteer/build/postcode-geonames.tsx +30 -21
- package/commands/gazetteer/build/postcode-locality.tsx +54 -33
- package/commands/gazetteer/build/postcode-ni-osm.tsx +23 -19
- package/commands/gazetteer/build/postcode-prefix.tsx +76 -48
- package/commands/gazetteer/build/postcode-shard.tsx +32 -13
- package/commands/gazetteer/build/street-morphology.tsx +33 -19
- package/commands/gazetteer/build/street-type-lexicon.tsx +17 -8
- package/commands/gazetteer/build/uprn.tsx +90 -0
- package/commands/gazetteer/capitals.tsx +74 -0
- package/commands/gazetteer/census.tsx +29 -27
- package/commands/gazetteer/conventions.tsx +33 -33
- package/commands/gazetteer/country-plan.tsx +292 -0
- package/commands/gazetteer/granularity.tsx +33 -25
- package/commands/gazetteer/importance.tsx +49 -37
- package/commands/gazetteer/inspect/fst.tsx +25 -17
- package/commands/gazetteer/inspect/graph.tsx +30 -35
- package/commands/gazetteer/inspect/mermaid.tsx +48 -48
- package/commands/gazetteer/inspect/placetype-stats.tsx +44 -28
- package/commands/gazetteer/inspect/sync-plan.ts +190 -0
- package/commands/gazetteer/inspect/sync.tsx +282 -86
- package/commands/gazetteer/inspect/tree.tsx +30 -35
- package/commands/gazetteer/overture-ingest.tsx +34 -16
- package/commands/gazetteer/pair-index.tsx +59 -83
- package/commands/gazetteer/polygons.tsx +52 -51
- package/commands/gazetteer/postal-alias.tsx +31 -22
- package/commands/gazetteer/postal-city.tsx +36 -30
- package/commands/gazetteer/postcode-binary.tsx +46 -43
- package/commands/gazetteer/postcode-intl.tsx +81 -45
- package/commands/gazetteer/promote.tsx +20 -15
- package/commands/gazetteer/publish.tsx +39 -28
- package/commands/gazetteer/release.tsx +57 -40
- package/commands/gazetteer/repos-sync.tsx +239 -0
- package/commands/gazetteer/triage.tsx +122 -0
- package/commands/gazetteer/verify-codepoint.tsx +26 -15
- package/commands/gazetteer/verify.tsx +25 -19
- package/commands/gnaf/assemble.tsx +30 -22
- package/commands/parse.tsx +158 -294
- package/commands/placer/build-dataset.tsx +37 -35
- package/commands/placer/eval.tsx +38 -36
- package/commands/placer/probe-frontier.tsx +29 -15
- package/commands/placer/quantize.tsx +24 -11
- package/commands/placer/train.tsx +29 -15
- package/commands/poi.tsx +57 -77
- package/commands/registry/convert/tx-hhsc.tsx +30 -18
- package/commands/registry/dedup-ceiling.tsx +35 -21
- package/commands/registry/gold-set-sample.tsx +37 -22
- package/commands/registry/matcher-scale.tsx +31 -14
- package/commands/registry/run.tsx +119 -165
- package/commands/registry/scorer-eval.tsx +104 -101
- package/commands/registry/train-scorer.tsx +47 -46
- package/commands/registry/viz.tsx +41 -40
- package/commands/release/hf.tsx +58 -69
- package/commands/serve.tsx +30 -23
- package/commands/situs/address-points.tsx +70 -56
- package/commands/situs/attribution-manifest.tsx +23 -12
- package/commands/situs/build.tsx +36 -37
- package/commands/situs/interpolation-shard.tsx +59 -26
- package/commands/situs/interpolation.tsx +45 -34
- package/commands/skill/install.tsx +24 -11
- package/commands/tiger/fetch.tsx +39 -25
- package/commands/tiger/race-dots-map.tsx +39 -23
- package/commands/tiger/race-dots.tsx +30 -16
- package/commands/tiger/redistricting.tsx +29 -18
- package/commands/tiles/publish.tsx +33 -19
- package/commands/wof/graph.tsx +7 -1
- package/commands/wof/mermaid.tsx +7 -1
- package/commands/wof/prepare.tsx +7 -1
- package/commands/wof/sync.tsx +7 -1
- package/commands/wof/tree.tsx +7 -1
- package/country-scope.ts +42 -0
- package/coverage-census.ts +543 -0
- package/data-bundles.ts +8 -3
- package/data-inventory.ts +304 -0
- package/debug-view/DebugFrame.tsx +584 -0
- package/debug-view/DebugSessionApp.tsx +584 -0
- package/debug-view/QueryInput.ts +249 -0
- package/debug-view/command.tsx +230 -0
- package/debug-view/output-lines.ts +268 -0
- package/debug-view/static-render.ts +52 -0
- package/debug-view/tag-colors.ts +59 -0
- package/debug-view/test/input-probe.ts +56 -0
- package/debug-view/tiles.ts +26 -0
- package/debug-view/trace-rows.ts +194 -0
- package/debug-view/view-policy.ts +107 -0
- package/default-reverse-geocoder.ts +1 -1
- package/dev-tools/build-gb-anchor-bin.run.ts +1 -1
- package/dev-tools/build-hard-slice-board.run.ts +7 -24
- package/dev-tools/capture-v1-parse.run.ts +5 -5
- package/dev-tools/convert-parity-fixtures.run.ts +3 -3
- package/dev-tools/diff-territory-spans.run.ts +3 -2
- package/dev-tools/extract-parity-corpus.run.ts +3 -3
- package/dev-tools/failure-census.run.ts +0 -0
- package/dev-tools/failure-report.run.ts +20 -24
- package/dev-tools/gb-fragment-board.run.ts +7 -5
- package/dev-tools/grammar-c4-census.run.ts +134 -0
- package/dev-tools/grammar-census.run.ts +175 -0
- package/dev-tools/postcode-coherence-coverage.run.ts +10 -5
- package/dev-tools/postcode-coherence-scale.run.ts +10 -5
- package/dev-tools/probe-comma-free-locality.run.ts +4 -3
- package/dev-tools/probe-fst-bias.run.ts +3 -16
- package/dev-tools/probe-query-intent.run.ts +2 -2
- package/dev-tools/probe-referential-delta.run.ts +21 -20
- package/dev-tools/retrieval-rescue-census.run.ts +116 -0
- package/dev-tools/router-kind-probe.run.ts +4 -2
- package/dev-tools/score-anchor-v2-boards.run.ts +5 -4
- package/dev-tools/score-hard-slice-board.run.ts +17 -27
- package/dev-tools/score-interesting-addresses.run.ts +5 -3
- package/dev-tools/score-street-name-boundaries.run.ts +5 -10
- package/dev-tools/score-world-structures.run.ts +3 -2
- package/dev-tools/us-recall-flip-census.run.ts +15 -4
- package/doctor/checks.ts +6 -28
- package/doctor/format.ts +69 -0
- package/doctor/index.ts +9 -0
- package/doctor/runner.ts +15 -29
- package/eval-harness/capability-manifest.ts +14 -105
- package/eval-harness/de-order-eval.ts +2 -2
- package/eval-harness/demo-cascade-rows.ts +13 -1
- package/eval-harness/demo-cascade-smoke.ts +29 -71
- package/eval-harness/digit-board.ts +3 -20
- package/eval-harness/error-analysis.ts +2 -2
- package/eval-harness/es-postcode-centroids.ts +9 -3
- package/eval-harness/external-arenas.ts +2 -1
- package/eval-harness/flatten-nodes.ts +42 -0
- package/eval-harness/fr-parse-recall.ts +58 -14
- package/eval-harness/fragment-board.ts +7 -22
- package/eval-harness/gauntlet/ablation-expectation.ts +17 -114
- package/eval-harness/gauntlet/ablation-gazetteer.ts +20 -23
- package/eval-harness/gauntlet/ablation.ts +4 -1
- package/eval-harness/gauntlet/build-fdic-holdout.ts +12 -13
- package/eval-harness/gauntlet/build-regression-db.ts +3 -1
- package/eval-harness/gauntlet/cases/ad/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/ae/street-name-boundaries.jsonl +5 -5
- package/eval-harness/gauntlet/cases/af/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/al/gloss-keys.jsonl +1 -0
- package/eval-harness/gauntlet/cases/al/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/ar/street-name-boundaries.jsonl +5 -5
- package/eval-harness/gauntlet/cases/at/street-name-boundaries.jsonl +2 -2
- package/eval-harness/gauntlet/cases/au/bare-country.jsonl +1 -0
- package/eval-harness/gauntlet/cases/au/gnaf-rooftop.jsonl +3 -0
- package/eval-harness/gauntlet/cases/au/street-name-boundaries.jsonl +13 -13
- package/eval-harness/gauntlet/cases/aw/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/ba/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/bb/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/be/bare-capital.jsonl +1 -0
- package/eval-harness/gauntlet/cases/bf/gloss-keys.jsonl +2 -0
- package/eval-harness/gauntlet/cases/bf/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/bi/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/bj/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/bn/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/bq/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/br/brasilia-hierarchy.jsonl +1 -1
- package/eval-harness/gauntlet/cases/br/street-name-boundaries.jsonl +5 -5
- package/eval-harness/gauntlet/cases/bs/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/bt/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/bw/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/by/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/bz/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/ca/regression.jsonl +6 -4
- package/eval-harness/gauntlet/cases/ca/street-name-boundaries.jsonl +15 -15
- package/eval-harness/gauntlet/cases/cd/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/cf/gloss-keys.jsonl +1 -0
- package/eval-harness/gauntlet/cases/cf/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/cg/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/ch/gloss-keys.jsonl +1 -0
- package/eval-harness/gauntlet/cases/ck/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/cn/bare-country.jsonl +1 -0
- package/eval-harness/gauntlet/cases/cn/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/co/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/cv/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/cw/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/cy/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/cz/bare-postcode.jsonl +3 -0
- package/eval-harness/gauntlet/cases/de/bare-country.jsonl +2 -0
- package/eval-harness/gauntlet/cases/de/regression.jsonl +5 -3
- package/eval-harness/gauntlet/cases/de/situs-wrong-village.jsonl +1 -0
- package/eval-harness/gauntlet/cases/de/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/dj/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/eg/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/er/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/es/regression.jsonl +9 -8
- package/eval-harness/gauntlet/cases/es/street-name-boundaries.jsonl +16 -16
- package/eval-harness/gauntlet/cases/fr/bare-country.jsonl +1 -0
- package/eval-harness/gauntlet/cases/fr/fork-entity.jsonl +1 -0
- package/eval-harness/gauntlet/cases/fr/fuzzy-scope.jsonl +1 -0
- package/eval-harness/gauntlet/cases/fr/gloss-keys.jsonl +3 -0
- package/eval-harness/gauntlet/cases/fr/regression.jsonl +42 -36
- package/eval-harness/gauntlet/cases/fr/street-name-boundaries.jsonl +15 -15
- package/eval-harness/gauntlet/cases/gb/bare-postcode.jsonl +2 -0
- package/eval-harness/gauntlet/cases/gb/category-query.jsonl +1 -0
- package/eval-harness/gauntlet/cases/gb/fork-entity.jsonl +1 -0
- package/eval-harness/gauntlet/cases/gb/lexical-boundary-adversarial.jsonl +11 -0
- package/eval-harness/gauntlet/cases/gb/regression.jsonl +93 -65
- package/eval-harness/gauntlet/cases/gb/street-name-boundaries.jsonl +24 -24
- package/eval-harness/gauntlet/cases/gh/world-structures.jsonl +1 -1
- package/eval-harness/gauntlet/cases/gm/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/hk/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/hu/street-name-boundaries.jsonl +2 -2
- package/eval-harness/gauntlet/cases/id/street-name-boundaries.jsonl +1 -1
- package/eval-harness/gauntlet/cases/ie/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/il/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/it/gloss-keys.jsonl +2 -0
- package/eval-harness/gauntlet/cases/it/regression.jsonl +3 -2
- package/eval-harness/gauntlet/cases/it/street-name-boundaries.jsonl +7 -7
- package/eval-harness/gauntlet/cases/jo/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/jp/bare-country.jsonl +2 -0
- package/eval-harness/gauntlet/cases/jp/street-name-boundaries.jsonl +3 -3
- package/eval-harness/gauntlet/cases/kh/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/load.ts +2 -2
- package/eval-harness/gauntlet/cases/ma/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/ml/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/mn/world-structures.jsonl +1 -1
- package/eval-harness/gauntlet/cases/mw/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/my/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/na/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/ng/bare-country.jsonl +1 -0
- package/eval-harness/gauntlet/cases/ni/world-structures.jsonl +1 -1
- package/eval-harness/gauntlet/cases/nl/bare-postcode.jsonl +1 -0
- package/eval-harness/gauntlet/cases/nl/regression.jsonl +1 -0
- package/eval-harness/gauntlet/cases/nz/bare-capital.jsonl +1 -0
- package/eval-harness/gauntlet/cases/nz/fuzzy-scope.jsonl +3 -0
- package/eval-harness/gauntlet/cases/om/street-name-boundaries.jsonl +1 -1
- package/eval-harness/gauntlet/cases/pg/regression.jsonl +1 -0
- package/eval-harness/gauntlet/cases/pk/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/pl/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/pr/regression.jsonl +3 -3
- package/eval-harness/gauntlet/cases/pt/gloss-keys.jsonl +1 -0
- package/eval-harness/gauntlet/cases/pt/regression.jsonl +1 -0
- package/eval-harness/gauntlet/cases/pt/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/ru/fuzzy-scope.jsonl +2 -0
- package/eval-harness/gauntlet/cases/ru/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/ru/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/rw/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/sa/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/sa/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/se/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/seed-case.ts +27 -4
- package/eval-harness/gauntlet/cases/sg/street-name-boundaries.jsonl +2 -2
- package/eval-harness/gauntlet/cases/si/regression.jsonl +5 -5
- package/eval-harness/gauntlet/cases/sk/bare-postcode.jsonl +1 -0
- package/eval-harness/gauntlet/cases/sk/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/sm/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/so/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/sx/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/th/street-name-boundaries.jsonl +4 -4
- package/eval-harness/gauntlet/cases/tm/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/tr/street-name-boundaries.jsonl +1 -1
- package/eval-harness/gauntlet/cases/tt/regression.jsonl +2 -2
- package/eval-harness/gauntlet/cases/ua/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/us/bare-country.jsonl +3 -0
- package/eval-harness/gauntlet/cases/us/bare-postcode.jsonl +2 -0
- package/eval-harness/gauntlet/cases/us/category-query.jsonl +6 -0
- package/eval-harness/gauntlet/cases/us/fuzzy-scope.jsonl +1 -0
- package/eval-harness/gauntlet/cases/us/regression.jsonl +50 -31
- package/eval-harness/gauntlet/cases/us/street-name-boundaries.jsonl +26 -26
- package/eval-harness/gauntlet/cases/us/street-tier-retrieval.jsonl +2 -0
- package/eval-harness/gauntlet/cases/ve/regression.jsonl +8 -1
- package/eval-harness/gauntlet/cases/vn/regression.jsonl +1 -1
- package/eval-harness/gauntlet/cases/za/regression.jsonl +3 -1
- package/eval-harness/gauntlet/check-case.ts +14 -1
- package/eval-harness/gauntlet/harness.ts +270 -33
- package/eval-harness/gauntlet/holdout.ts +21 -9
- package/eval-harness/gauntlet/metamorphic.ts +10 -15
- package/eval-harness/gauntlet/regression.ts +10 -1
- package/eval-harness/gauntlet/routing.ts +36 -0
- package/eval-harness/gauntlet/run.ts +25 -3
- package/eval-harness/gauntlet/schema.ts +21 -1
- package/eval-harness/gb-codepoint-eval.ts +236 -0
- package/eval-harness/grammar-census-c4.ts +262 -0
- package/eval-harness/grammar-census.ts +267 -0
- package/eval-harness/hard-slice-board.ts +5 -3
- package/eval-harness/invariance/runner.ts +3 -2
- package/eval-harness/ledger-append.ts +4 -4
- package/eval-harness/mask-regression.ts +13 -103
- package/eval-harness/oa-resolver/admin-match.ts +221 -0
- package/eval-harness/oa-resolver/aggregate.ts +120 -0
- package/eval-harness/oa-resolver/assembled-arm.ts +85 -0
- package/eval-harness/oa-resolver/coordinate-tiers.ts +196 -0
- package/eval-harness/oa-resolver/options.ts +170 -0
- package/eval-harness/oa-resolver/parse-rig.ts +155 -0
- package/eval-harness/oa-resolver/row-score.ts +59 -0
- package/eval-harness/oa-resolver/rows.ts +31 -0
- package/eval-harness/oa-resolver/tree-hits.ts +210 -0
- package/eval-harness/oa-resolver-eval.ts +58 -1093
- package/eval-harness/oa-resolver-report.ts +0 -1
- package/eval-harness/parity-corpus.ts +35 -2
- package/eval-harness/per-locale-f1.ts +2 -2
- package/eval-harness/per-tag-f1.ts +102 -0
- package/eval-harness/poi-board.ts +10 -9
- package/eval-harness/promotion-gate-verdict.ts +22 -2
- package/eval-harness/promotion-gate.ts +119 -36
- package/eval-harness/retrieval-rescue-census.ts +204 -0
- package/eval-harness/score-affix.ts +3 -1
- package/eval-harness/score-country-homograph.ts +3 -1
- package/eval-harness/v0-tree-adapter.ts +2 -1
- package/eval-harness/wof-hot-db.ts +35 -0
- package/fork-entity.ts +413 -0
- package/gazetteer-pipeline/admin/fold-overture.ts +30 -2
- package/gazetteer-pipeline/admin/freeze.ts +4 -6
- package/gazetteer-pipeline/admin/index.ts +30 -0
- package/gazetteer-pipeline/admin/ingest-wof.ts +14 -2
- package/gazetteer-pipeline/admin/manifest.ts +110 -0
- package/gazetteer-pipeline/admin-locator.ts +184 -0
- package/gazetteer-pipeline/anchor-lookup.ts +1 -1
- package/gazetteer-pipeline/candidate-manifest.ts +109 -0
- package/gazetteer-pipeline/capitals.ts +272 -0
- package/gazetteer-pipeline/country-plan.ts +229 -0
- package/gazetteer-pipeline/country-sources.ts +163 -0
- package/gazetteer-pipeline/cz-districts.ts +127 -0
- package/gazetteer-pipeline/defaults.ts +55 -1
- package/gazetteer-pipeline/evidence-lexicons.ts +4 -4
- package/gazetteer-pipeline/fst.ts +18 -6
- package/gazetteer-pipeline/gnaf-rooftop.ts +383 -0
- package/gazetteer-pipeline/granularity.ts +3 -9
- package/gazetteer-pipeline/index.ts +116 -45
- package/gazetteer-pipeline/nz-localities.ts +0 -0
- package/gazetteer-pipeline/overture-release.ts +108 -0
- package/gazetteer-pipeline/pair-index-hierarchy-probe.ts +20 -13
- package/gazetteer-pipeline/pair-index-hierarchy-verify.ts +14 -7
- package/gazetteer-pipeline/poi/build-brands.ts +7 -16
- package/gazetteer-pipeline/poi/build-poi.ts +30 -34
- package/gazetteer-pipeline/poi/defaults.ts +40 -0
- package/gazetteer-pipeline/postcode/centroid-fills.ts +21 -5
- package/gazetteer-pipeline/postcode/codepoint/fetch.ts +1 -0
- package/gazetteer-pipeline/postcode/codepoint-shard.ts +0 -1
- package/gazetteer-pipeline/postcode/geonames-tail.ts +3 -9
- package/gazetteer-pipeline/postcode/index.ts +8 -3
- package/gazetteer-pipeline/postcode/ni-osm/fetch.ts +1 -1
- package/gazetteer-pipeline/postcode-locality/base.ts +24 -43
- package/gazetteer-pipeline/postcode-locality/jp.ts +20 -35
- package/gazetteer-pipeline/postcode-locality/kr.ts +22 -37
- package/gazetteer-pipeline/postcode-locality/schema.ts +164 -0
- package/gazetteer-pipeline/postcode-locality/tw.ts +29 -43
- package/gazetteer-pipeline/postcode-prefix.ts +296 -2
- package/gazetteer-pipeline/recipe-edit.ts +165 -0
- package/gazetteer-pipeline/repos-audit.ts +247 -0
- package/gazetteer-pipeline/repos-sync.ts +281 -0
- package/gazetteer-pipeline/stamp-manifest.ts +68 -0
- package/gazetteer-pipeline/uprn-layer.ts +848 -0
- package/gazetteer-pipeline/wof-repo-origin.ts +115 -0
- package/gazetteer-pipeline/wof-triage.ts +467 -0
- package/geocode-command-options.ts +78 -0
- package/geocode-core.ts +571 -251
- package/geocode-diff.ts +278 -0
- package/geocode-session.ts +790 -0
- package/geocode-worker.ts +4 -1
- package/hierarchy-lineage.ts +163 -0
- package/inferred-scope.ts +55 -0
- package/intent-refusal.ts +63 -0
- package/kbest-street-rerank.ts +1 -3
- package/man/mailwoman.1 +233 -0
- package/out/admin-coherence.d.ts +142 -0
- package/out/admin-coherence.d.ts.map +1 -0
- package/out/admin-coherence.js +214 -0
- package/out/admin-coherence.js.map +1 -0
- package/out/api-engine.d.ts.map +1 -1
- package/out/api-engine.js +9 -9
- package/out/api-engine.js.map +1 -1
- package/out/autocomplete-core.d.ts +38 -0
- package/out/autocomplete-core.d.ts.map +1 -0
- package/out/autocomplete-core.js +71 -0
- package/out/autocomplete-core.js.map +1 -0
- package/out/cli-kit/dropin.d.ts +3 -3
- package/out/cli-kit/dropin.js +7 -7
- package/out/cli-kit/index.d.ts +3 -0
- package/out/cli-kit/index.d.ts.map +1 -1
- package/out/cli-kit/index.js +3 -0
- package/out/cli-kit/index.js.map +1 -1
- package/out/cli-kit/metadata.d.ts +18 -0
- package/out/cli-kit/metadata.d.ts.map +1 -0
- package/out/cli-kit/metadata.js +15 -0
- package/out/cli-kit/metadata.js.map +1 -0
- package/out/cli-kit/shared.d.ts +32 -25
- package/out/cli-kit/shared.d.ts.map +1 -1
- package/out/cli-kit/shared.js +64 -18
- package/out/cli-kit/shared.js.map +1 -1
- package/out/cli-native/command-router.d.ts +6 -0
- package/out/cli-native/command-router.d.ts.map +1 -0
- package/out/cli-native/command-router.js +95 -0
- package/out/cli-native/command-router.js.map +1 -0
- package/out/cli-native/commands/autocomplete.d.ts +41 -0
- package/out/cli-native/commands/autocomplete.d.ts.map +1 -0
- package/out/cli-native/commands/autocomplete.js +45 -0
- package/out/cli-native/commands/autocomplete.js.map +1 -0
- package/out/cli-native/commands/doctor.d.ts +29 -0
- package/out/cli-native/commands/doctor.d.ts.map +1 -0
- package/out/cli-native/commands/doctor.js +43 -0
- package/out/cli-native/commands/doctor.js.map +1 -0
- package/out/cli-native/commands/geocode.d.ts +182 -0
- package/out/cli-native/commands/geocode.d.ts.map +1 -0
- package/out/cli-native/commands/geocode.js +372 -0
- package/out/cli-native/commands/geocode.js.map +1 -0
- package/out/cli-native/commands/openapi.d.ts +30 -0
- package/out/cli-native/commands/openapi.d.ts.map +1 -0
- package/out/cli-native/commands/openapi.js +42 -0
- package/out/cli-native/commands/openapi.js.map +1 -0
- package/out/cli-native/commands/reverse.d.ts +44 -0
- package/out/cli-native/commands/reverse.d.ts.map +1 -0
- package/out/cli-native/commands/reverse.js +112 -0
- package/out/cli-native/commands/reverse.js.map +1 -0
- package/out/cli-native/router.d.ts +25 -0
- package/out/cli-native/router.d.ts.map +1 -0
- package/out/cli-native/router.js +44 -0
- package/out/cli-native/router.js.map +1 -0
- package/out/cli-native/spec.d.ts +77 -0
- package/out/cli-native/spec.d.ts.map +1 -0
- package/out/cli-native/spec.js +189 -0
- package/out/cli-native/spec.js.map +1 -0
- package/out/cli.d.ts +9 -0
- package/out/cli.d.ts.map +1 -1
- package/out/cli.js +76 -48
- package/out/cli.js.map +1 -1
- package/out/commands/clients/generate.d.ts +24 -8
- package/out/commands/clients/generate.d.ts.map +1 -1
- package/out/commands/clients/generate.js +24 -16
- package/out/commands/clients/generate.js.map +1 -1
- package/out/commands/corpus/align-shard.d.ts +32 -11
- package/out/commands/corpus/align-shard.d.ts.map +1 -1
- package/out/commands/corpus/align-shard.js +14 -10
- package/out/commands/corpus/align-shard.js.map +1 -1
- package/out/commands/corpus/audit.d.ts +29 -9
- package/out/commands/corpus/audit.d.ts.map +1 -1
- package/out/commands/corpus/audit.js +20 -15
- package/out/commands/corpus/audit.js.map +1 -1
- package/out/commands/corpus/build.d.ts +51 -11
- package/out/commands/corpus/build.d.ts.map +1 -1
- package/out/commands/corpus/build.js +43 -47
- package/out/commands/corpus/build.js.map +1 -1
- package/out/commands/corpus/download.d.ts +31 -9
- package/out/commands/corpus/download.d.ts.map +1 -1
- package/out/commands/corpus/download.js +15 -13
- package/out/commands/corpus/download.js.map +1 -1
- package/out/commands/corpus/fetch.d.ts +93 -35
- package/out/commands/corpus/fetch.d.ts.map +1 -1
- package/out/commands/corpus/fetch.js +61 -50
- package/out/commands/corpus/fetch.js.map +1 -1
- package/out/commands/corpus/golden/expand.d.ts +58 -17
- package/out/commands/corpus/golden/expand.d.ts.map +1 -1
- package/out/commands/corpus/golden/expand.js +37 -27
- package/out/commands/corpus/golden/expand.js.map +1 -1
- package/out/commands/corpus/golden/promote.d.ts +49 -12
- package/out/commands/corpus/golden/promote.d.ts.map +1 -1
- package/out/commands/corpus/golden/promote.js +27 -20
- package/out/commands/corpus/golden/promote.js.map +1 -1
- package/out/commands/corpus/golden-relabel.d.ts +41 -11
- package/out/commands/corpus/golden-relabel.d.ts.map +1 -1
- package/out/commands/corpus/golden-relabel.js +23 -13
- package/out/commands/corpus/golden-relabel.js.map +1 -1
- package/out/commands/corpus/ingest-csv.d.ts +59 -14
- package/out/commands/corpus/ingest-csv.d.ts.map +1 -1
- package/out/commands/corpus/ingest-csv.js +30 -15
- package/out/commands/corpus/ingest-csv.js.map +1 -1
- package/out/commands/corpus/list.d.ts +8 -1
- package/out/commands/corpus/list.d.ts.map +1 -1
- package/out/commands/corpus/list.js +16 -5
- package/out/commands/corpus/list.js.map +1 -1
- package/out/commands/corpus/overlay-manifest.d.ts +56 -15
- package/out/commands/corpus/overlay-manifest.d.ts.map +1 -1
- package/out/commands/corpus/overlay-manifest.js +22 -19
- package/out/commands/corpus/overlay-manifest.js.map +1 -1
- package/out/commands/corpus/run.d.ts +59 -13
- package/out/commands/corpus/run.d.ts.map +1 -1
- package/out/commands/corpus/run.js +30 -35
- package/out/commands/corpus/run.js.map +1 -1
- package/out/commands/corpus/shard/index.d.ts +160 -35
- package/out/commands/corpus/shard/index.d.ts.map +1 -1
- package/out/commands/corpus/shard/index.js +46 -55
- package/out/commands/corpus/shard/index.js.map +1 -1
- package/out/commands/corpus/shard/kryptonite.d.ts +43 -11
- package/out/commands/corpus/shard/kryptonite.d.ts.map +1 -1
- package/out/commands/corpus/shard/kryptonite.js +24 -11
- package/out/commands/corpus/shard/kryptonite.js.map +1 -1
- package/out/commands/corpus/shard/translit.d.ts +48 -12
- package/out/commands/corpus/shard/translit.d.ts.map +1 -1
- package/out/commands/corpus/shard/translit.js +32 -15
- package/out/commands/corpus/shard/translit.js.map +1 -1
- package/out/commands/corpus/stats.d.ts +31 -11
- package/out/commands/corpus/stats.d.ts.map +1 -1
- package/out/commands/corpus/stats.js +15 -11
- package/out/commands/corpus/stats.js.map +1 -1
- package/out/commands/corpus/sub-venue-extract.d.ts +30 -9
- package/out/commands/corpus/sub-venue-extract.d.ts.map +1 -1
- package/out/commands/corpus/sub-venue-extract.js +13 -8
- package/out/commands/corpus/sub-venue-extract.js.map +1 -1
- package/out/commands/corpus/sub-venue-lexicon.d.ts +34 -10
- package/out/commands/corpus/sub-venue-lexicon.d.ts.map +1 -1
- package/out/commands/corpus/sub-venue-lexicon.js +22 -20
- package/out/commands/corpus/sub-venue-lexicon.js.map +1 -1
- package/out/commands/corpus/upload.d.ts +61 -14
- package/out/commands/corpus/upload.d.ts.map +1 -1
- package/out/commands/corpus/upload.js +120 -76
- package/out/commands/corpus/upload.js.map +1 -1
- package/out/commands/coverage/build.d.ts +153 -28
- package/out/commands/coverage/build.d.ts.map +1 -1
- package/out/commands/coverage/build.js +70 -51
- package/out/commands/coverage/build.js.map +1 -1
- package/out/commands/data/coverage.d.ts +58 -0
- package/out/commands/data/coverage.d.ts.map +1 -0
- package/out/commands/data/coverage.js +151 -0
- package/out/commands/data/coverage.js.map +1 -0
- package/out/commands/data/index.d.ts +21 -12
- package/out/commands/data/index.d.ts.map +1 -1
- package/out/commands/data/index.js +16 -18
- package/out/commands/data/index.js.map +1 -1
- package/out/commands/data/inventory.d.ts +53 -0
- package/out/commands/data/inventory.d.ts.map +1 -0
- package/out/commands/data/inventory.js +120 -0
- package/out/commands/data/inventory.js.map +1 -0
- package/out/commands/data/pull.d.ts +47 -11
- package/out/commands/data/pull.d.ts.map +1 -1
- package/out/commands/data/pull.js +59 -35
- package/out/commands/data/pull.js.map +1 -1
- package/out/commands/data/status.d.ts +29 -9
- package/out/commands/data/status.d.ts.map +1 -1
- package/out/commands/data/status.js +25 -35
- package/out/commands/data/status.js.map +1 -1
- package/out/commands/dev/download/libpostal-resources.d.ts +19 -7
- package/out/commands/dev/download/libpostal-resources.d.ts.map +1 -1
- package/out/commands/dev/download/libpostal-resources.js +19 -8
- package/out/commands/dev/download/libpostal-resources.js.map +1 -1
- package/out/commands/dev/download/ssl-address.d.ts +24 -8
- package/out/commands/dev/download/ssl-address.d.ts.map +1 -1
- package/out/commands/dev/download/ssl-address.js +16 -9
- package/out/commands/dev/download/ssl-address.js.map +1 -1
- package/out/commands/dev/generate/country-population.d.ts +19 -0
- package/out/commands/dev/generate/country-population.d.ts.map +1 -0
- package/out/commands/dev/generate/country-population.js +34 -0
- package/out/commands/dev/generate/country-population.js.map +1 -0
- package/out/commands/dev/generate/country-reference.d.ts +7 -0
- package/out/commands/dev/generate/country-reference.d.ts.map +1 -1
- package/out/commands/dev/generate/country-reference.js +12 -3
- package/out/commands/dev/generate/country-reference.js.map +1 -1
- package/out/commands/dev/generate/language-types.d.ts +7 -0
- package/out/commands/dev/generate/language-types.d.ts.map +1 -1
- package/out/commands/dev/generate/language-types.js +12 -3
- package/out/commands/dev/generate/language-types.js.map +1 -1
- package/out/commands/dev/generate/official-languages.d.ts +24 -8
- package/out/commands/dev/generate/official-languages.d.ts.map +1 -1
- package/out/commands/dev/generate/official-languages.js +23 -9
- package/out/commands/dev/generate/official-languages.js.map +1 -1
- package/out/commands/dev/generate/trace-fixture.d.ts +14 -5
- package/out/commands/dev/generate/trace-fixture.d.ts.map +1 -1
- package/out/commands/dev/generate/trace-fixture.js +19 -12
- package/out/commands/dev/generate/trace-fixture.js.map +1 -1
- package/out/commands/dev/jsonl-to-parquet.d.ts +31 -9
- package/out/commands/dev/jsonl-to-parquet.d.ts.map +1 -1
- package/out/commands/dev/jsonl-to-parquet.js +17 -10
- package/out/commands/dev/jsonl-to-parquet.js.map +1 -1
- package/out/commands/dev/lint/corpus-shard.d.ts +40 -11
- package/out/commands/dev/lint/corpus-shard.d.ts.map +1 -1
- package/out/commands/dev/lint/corpus-shard.js +26 -20
- package/out/commands/dev/lint/corpus-shard.js.map +1 -1
- package/out/commands/dev/lint/mdx-angles.d.ts +14 -5
- package/out/commands/dev/lint/mdx-angles.d.ts.map +1 -1
- package/out/commands/dev/lint/mdx-angles.js +15 -12
- package/out/commands/dev/lint/mdx-angles.js.map +1 -1
- package/out/commands/dev/lint/shard-vocab.d.ts +48 -12
- package/out/commands/dev/lint/shard-vocab.d.ts.map +1 -1
- package/out/commands/dev/lint/shard-vocab.js +31 -20
- package/out/commands/dev/lint/shard-vocab.js.map +1 -1
- package/out/commands/eval/capability-manifest.d.ts +44 -12
- package/out/commands/eval/capability-manifest.d.ts.map +1 -1
- package/out/commands/eval/capability-manifest.js +26 -16
- package/out/commands/eval/capability-manifest.js.map +1 -1
- package/out/commands/eval/error-analysis.d.ts +51 -13
- package/out/commands/eval/error-analysis.d.ts.map +1 -1
- package/out/commands/eval/error-analysis.js +29 -20
- package/out/commands/eval/error-analysis.js.map +1 -1
- package/out/commands/eval/es-postcode-centroids.d.ts +34 -10
- package/out/commands/eval/es-postcode-centroids.d.ts.map +1 -1
- package/out/commands/eval/es-postcode-centroids.js +21 -14
- package/out/commands/eval/es-postcode-centroids.js.map +1 -1
- package/out/commands/eval/fragment-board.d.ts +34 -10
- package/out/commands/eval/fragment-board.d.ts.map +1 -1
- package/out/commands/eval/fragment-board.js +26 -19
- package/out/commands/eval/fragment-board.js.map +1 -1
- package/out/commands/eval/fragment-dev.d.ts +38 -10
- package/out/commands/eval/fragment-dev.d.ts.map +1 -1
- package/out/commands/eval/fragment-dev.js +25 -10
- package/out/commands/eval/fragment-dev.js.map +1 -1
- package/out/commands/eval/gate.d.ts +58 -14
- package/out/commands/eval/gate.d.ts.map +1 -1
- package/out/commands/eval/gate.js +23 -24
- package/out/commands/eval/gate.js.map +1 -1
- package/out/commands/eval/gauntlet-build.d.ts +15 -9
- package/out/commands/eval/gauntlet-build.d.ts.map +1 -1
- package/out/commands/eval/gauntlet-build.js +19 -14
- package/out/commands/eval/gauntlet-build.js.map +1 -1
- package/out/commands/eval/gauntlet.d.ts +102 -23
- package/out/commands/eval/gauntlet.d.ts.map +1 -1
- package/out/commands/eval/gauntlet.js +70 -63
- package/out/commands/eval/gauntlet.js.map +1 -1
- package/out/commands/eval/invariance.d.ts +68 -17
- package/out/commands/eval/invariance.d.ts.map +1 -1
- package/out/commands/eval/invariance.js +28 -27
- package/out/commands/eval/invariance.js.map +1 -1
- package/out/commands/eval/ledger-append.d.ts +68 -16
- package/out/commands/eval/ledger-append.d.ts.map +1 -1
- package/out/commands/eval/ledger-append.js +39 -26
- package/out/commands/eval/ledger-append.js.map +1 -1
- package/out/commands/eval/mask-regression.d.ts +48 -13
- package/out/commands/eval/mask-regression.d.ts.map +1 -1
- package/out/commands/eval/mask-regression.js +27 -17
- package/out/commands/eval/mask-regression.js.map +1 -1
- package/out/commands/eval/oa-resolver.d.ts +214 -43
- package/out/commands/eval/oa-resolver.d.ts.map +1 -1
- package/out/commands/eval/oa-resolver.js +59 -81
- package/out/commands/eval/oa-resolver.js.map +1 -1
- package/out/commands/eval/oracle-k.d.ts +47 -12
- package/out/commands/eval/oracle-k.d.ts.map +1 -1
- package/out/commands/eval/oracle-k.js +46 -29
- package/out/commands/eval/oracle-k.js.map +1 -1
- package/out/commands/eval/parity.d.ts +70 -15
- package/out/commands/eval/parity.d.ts.map +1 -1
- package/out/commands/eval/parity.js +49 -49
- package/out/commands/eval/parity.js.map +1 -1
- package/out/commands/eval/poi-board.d.ts +56 -14
- package/out/commands/eval/poi-board.d.ts.map +1 -1
- package/out/commands/eval/poi-board.js +21 -40
- package/out/commands/eval/poi-board.js.map +1 -1
- package/out/commands/eval/preset-compare.d.ts +23 -8
- package/out/commands/eval/preset-compare.d.ts.map +1 -1
- package/out/commands/eval/preset-compare.js +16 -9
- package/out/commands/eval/preset-compare.js.map +1 -1
- package/out/commands/eval/score-trends.d.ts +23 -8
- package/out/commands/eval/score-trends.d.ts.map +1 -1
- package/out/commands/eval/score-trends.js +16 -9
- package/out/commands/eval/score-trends.js.map +1 -1
- package/out/commands/filer/edgar-ingest.d.ts +36 -10
- package/out/commands/filer/edgar-ingest.d.ts.map +1 -1
- package/out/commands/filer/edgar-ingest.js +21 -19
- package/out/commands/filer/edgar-ingest.js.map +1 -1
- package/out/commands/filer/linkage-eval.d.ts +23 -8
- package/out/commands/filer/linkage-eval.d.ts.map +1 -1
- package/out/commands/filer/linkage-eval.js +16 -9
- package/out/commands/filer/linkage-eval.js.map +1 -1
- package/out/commands/gazetteer/affix-relabel.d.ts +18 -7
- package/out/commands/gazetteer/affix-relabel.d.ts.map +1 -1
- package/out/commands/gazetteer/affix-relabel.js +13 -8
- package/out/commands/gazetteer/affix-relabel.js.map +1 -1
- package/out/commands/gazetteer/anchor-lexicon.d.ts +18 -7
- package/out/commands/gazetteer/anchor-lexicon.d.ts.map +1 -1
- package/out/commands/gazetteer/anchor-lexicon.js +15 -10
- package/out/commands/gazetteer/anchor-lexicon.js.map +1 -1
- package/out/commands/gazetteer/build/admin.d.ts +44 -12
- package/out/commands/gazetteer/build/admin.d.ts.map +1 -1
- package/out/commands/gazetteer/build/admin.js +18 -22
- package/out/commands/gazetteer/build/admin.js.map +1 -1
- package/out/commands/gazetteer/build/anchor-lookup.d.ts +35 -10
- package/out/commands/gazetteer/build/anchor-lookup.d.ts.map +1 -1
- package/out/commands/gazetteer/build/anchor-lookup.js +19 -14
- package/out/commands/gazetteer/build/anchor-lookup.js.map +1 -1
- package/out/commands/gazetteer/build/bdc.d.ts +47 -13
- package/out/commands/gazetteer/build/bdc.d.ts.map +1 -1
- package/out/commands/gazetteer/build/bdc.js +36 -37
- package/out/commands/gazetteer/build/bdc.js.map +1 -1
- package/out/commands/gazetteer/build/candidate.d.ts +50 -13
- package/out/commands/gazetteer/build/candidate.d.ts.map +1 -1
- package/out/commands/gazetteer/build/candidate.js +33 -45
- package/out/commands/gazetteer/build/candidate.js.map +1 -1
- package/out/commands/gazetteer/build/coincident-roles.d.ts +26 -9
- package/out/commands/gazetteer/build/coincident-roles.d.ts.map +1 -1
- package/out/commands/gazetteer/build/coincident-roles.js +13 -19
- package/out/commands/gazetteer/build/coincident-roles.js.map +1 -1
- package/out/commands/gazetteer/build/cz-districts.d.ts +35 -0
- package/out/commands/gazetteer/build/cz-districts.d.ts.map +1 -0
- package/out/commands/gazetteer/build/cz-districts.js +38 -0
- package/out/commands/gazetteer/build/cz-districts.js.map +1 -0
- package/out/commands/gazetteer/build/fst.d.ts +34 -10
- package/out/commands/gazetteer/build/fst.d.ts.map +1 -1
- package/out/commands/gazetteer/build/fst.js +15 -10
- package/out/commands/gazetteer/build/fst.js.map +1 -1
- package/out/commands/gazetteer/build/fts.d.ts +27 -10
- package/out/commands/gazetteer/build/fts.d.ts.map +1 -1
- package/out/commands/gazetteer/build/fts.js +20 -19
- package/out/commands/gazetteer/build/fts.js.map +1 -1
- package/out/commands/gazetteer/build/gnaf-rooftop.d.ts +58 -0
- package/out/commands/gazetteer/build/gnaf-rooftop.d.ts.map +1 -0
- package/out/commands/gazetteer/build/gnaf-rooftop.js +63 -0
- package/out/commands/gazetteer/build/gnaf-rooftop.js.map +1 -0
- package/out/commands/gazetteer/build/index.d.ts +24 -8
- package/out/commands/gazetteer/build/index.d.ts.map +1 -1
- package/out/commands/gazetteer/build/index.js +14 -12
- package/out/commands/gazetteer/build/index.js.map +1 -1
- package/out/commands/gazetteer/build/locality-surface-lexicon.d.ts +33 -10
- package/out/commands/gazetteer/build/locality-surface-lexicon.d.ts.map +1 -1
- package/out/commands/gazetteer/build/locality-surface-lexicon.js +18 -13
- package/out/commands/gazetteer/build/locality-surface-lexicon.js.map +1 -1
- package/out/commands/gazetteer/build/nl-pc6.d.ts +23 -8
- package/out/commands/gazetteer/build/nl-pc6.d.ts.map +1 -1
- package/out/commands/gazetteer/build/nl-pc6.js +13 -8
- package/out/commands/gazetteer/build/nl-pc6.js.map +1 -1
- package/out/commands/gazetteer/build/nz-localities.d.ts +35 -0
- package/out/commands/gazetteer/build/nz-localities.d.ts.map +1 -0
- package/out/commands/gazetteer/build/nz-localities.js +41 -0
- package/out/commands/gazetteer/build/nz-localities.js.map +1 -0
- package/out/commands/gazetteer/build/poi-brands.d.ts +33 -10
- package/out/commands/gazetteer/build/poi-brands.d.ts.map +1 -1
- package/out/commands/gazetteer/build/poi-brands.js +18 -16
- package/out/commands/gazetteer/build/poi-brands.js.map +1 -1
- package/out/commands/gazetteer/build/poi.d.ts +62 -19
- package/out/commands/gazetteer/build/poi.d.ts.map +1 -1
- package/out/commands/gazetteer/build/poi.js +26 -41
- package/out/commands/gazetteer/build/poi.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-codepoint.d.ts +28 -9
- package/out/commands/gazetteer/build/postcode-codepoint.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-codepoint.js +18 -13
- package/out/commands/gazetteer/build/postcode-codepoint.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-geonames.d.ts +28 -9
- package/out/commands/gazetteer/build/postcode-geonames.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-geonames.js +22 -16
- package/out/commands/gazetteer/build/postcode-geonames.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-locality.d.ts +82 -24
- package/out/commands/gazetteer/build/postcode-locality.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-locality.js +34 -29
- package/out/commands/gazetteer/build/postcode-locality.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-ni-osm.d.ts +28 -9
- package/out/commands/gazetteer/build/postcode-ni-osm.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-ni-osm.js +15 -16
- package/out/commands/gazetteer/build/postcode-ni-osm.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-prefix.d.ts +69 -14
- package/out/commands/gazetteer/build/postcode-prefix.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-prefix.js +52 -33
- package/out/commands/gazetteer/build/postcode-prefix.js.map +1 -1
- package/out/commands/gazetteer/build/postcode-shard.d.ts +44 -12
- package/out/commands/gazetteer/build/postcode-shard.d.ts.map +1 -1
- package/out/commands/gazetteer/build/postcode-shard.js +21 -12
- package/out/commands/gazetteer/build/postcode-shard.js.map +1 -1
- package/out/commands/gazetteer/build/street-morphology.d.ts +28 -9
- package/out/commands/gazetteer/build/street-morphology.d.ts.map +1 -1
- package/out/commands/gazetteer/build/street-morphology.js +23 -15
- package/out/commands/gazetteer/build/street-morphology.js.map +1 -1
- package/out/commands/gazetteer/build/street-type-lexicon.d.ts +18 -7
- package/out/commands/gazetteer/build/street-type-lexicon.d.ts.map +1 -1
- package/out/commands/gazetteer/build/street-type-lexicon.js +12 -7
- package/out/commands/gazetteer/build/street-type-lexicon.js.map +1 -1
- package/out/commands/gazetteer/build/uprn.d.ts +49 -0
- package/out/commands/gazetteer/build/uprn.d.ts.map +1 -0
- package/out/commands/gazetteer/build/uprn.js +68 -0
- package/out/commands/gazetteer/build/uprn.js.map +1 -0
- package/out/commands/gazetteer/capitals.d.ts +36 -0
- package/out/commands/gazetteer/capitals.d.ts.map +1 -0
- package/out/commands/gazetteer/capitals.js +52 -0
- package/out/commands/gazetteer/capitals.js.map +1 -0
- package/out/commands/gazetteer/census.d.ts +35 -10
- package/out/commands/gazetteer/census.d.ts.map +1 -1
- package/out/commands/gazetteer/census.js +18 -17
- package/out/commands/gazetteer/census.js.map +1 -1
- package/out/commands/gazetteer/conventions.d.ts +24 -8
- package/out/commands/gazetteer/conventions.d.ts.map +1 -1
- package/out/commands/gazetteer/conventions.js +21 -31
- package/out/commands/gazetteer/conventions.js.map +1 -1
- package/out/commands/gazetteer/country-plan.d.ts +54 -0
- package/out/commands/gazetteer/country-plan.d.ts.map +1 -0
- package/out/commands/gazetteer/country-plan.js +194 -0
- package/out/commands/gazetteer/country-plan.js.map +1 -0
- package/out/commands/gazetteer/granularity.d.ts +30 -9
- package/out/commands/gazetteer/granularity.d.ts.map +1 -1
- package/out/commands/gazetteer/granularity.js +21 -18
- package/out/commands/gazetteer/granularity.js.map +1 -1
- package/out/commands/gazetteer/importance.d.ts +26 -10
- package/out/commands/gazetteer/importance.d.ts.map +1 -1
- package/out/commands/gazetteer/importance.js +32 -25
- package/out/commands/gazetteer/importance.js.map +1 -1
- package/out/commands/gazetteer/inspect/fst.d.ts +37 -13
- package/out/commands/gazetteer/inspect/fst.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/fst.js +17 -16
- package/out/commands/gazetteer/inspect/fst.js.map +1 -1
- package/out/commands/gazetteer/inspect/graph.d.ts +38 -10
- package/out/commands/gazetteer/inspect/graph.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/graph.js +20 -26
- package/out/commands/gazetteer/inspect/graph.js.map +1 -1
- package/out/commands/gazetteer/inspect/mermaid.d.ts +37 -10
- package/out/commands/gazetteer/inspect/mermaid.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/mermaid.js +33 -30
- package/out/commands/gazetteer/inspect/mermaid.js.map +1 -1
- package/out/commands/gazetteer/inspect/placetype-stats.d.ts +29 -9
- package/out/commands/gazetteer/inspect/placetype-stats.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/placetype-stats.js +26 -26
- package/out/commands/gazetteer/inspect/placetype-stats.js.map +1 -1
- package/out/commands/gazetteer/inspect/sync-plan.d.ts +64 -0
- package/out/commands/gazetteer/inspect/sync-plan.d.ts.map +1 -0
- package/out/commands/gazetteer/inspect/sync-plan.js +125 -0
- package/out/commands/gazetteer/inspect/sync-plan.js.map +1 -0
- package/out/commands/gazetteer/inspect/sync.d.ts +50 -14
- package/out/commands/gazetteer/inspect/sync.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/sync.js +201 -60
- package/out/commands/gazetteer/inspect/sync.js.map +1 -1
- package/out/commands/gazetteer/inspect/tree.d.ts +38 -10
- package/out/commands/gazetteer/inspect/tree.d.ts.map +1 -1
- package/out/commands/gazetteer/inspect/tree.js +20 -26
- package/out/commands/gazetteer/inspect/tree.js.map +1 -1
- package/out/commands/gazetteer/overture-ingest.d.ts +46 -12
- package/out/commands/gazetteer/overture-ingest.d.ts.map +1 -1
- package/out/commands/gazetteer/overture-ingest.js +22 -14
- package/out/commands/gazetteer/overture-ingest.js.map +1 -1
- package/out/commands/gazetteer/pair-index.d.ts +74 -17
- package/out/commands/gazetteer/pair-index.d.ts.map +1 -1
- package/out/commands/gazetteer/pair-index.js +41 -68
- package/out/commands/gazetteer/pair-index.js.map +1 -1
- package/out/commands/gazetteer/polygons.d.ts +46 -12
- package/out/commands/gazetteer/polygons.d.ts.map +1 -1
- package/out/commands/gazetteer/polygons.js +36 -46
- package/out/commands/gazetteer/polygons.js.map +1 -1
- package/out/commands/gazetteer/postal-alias.d.ts +31 -9
- package/out/commands/gazetteer/postal-alias.d.ts.map +1 -1
- package/out/commands/gazetteer/postal-alias.js +20 -18
- package/out/commands/gazetteer/postal-alias.js.map +1 -1
- package/out/commands/gazetteer/postal-city.d.ts +29 -9
- package/out/commands/gazetteer/postal-city.d.ts.map +1 -1
- package/out/commands/gazetteer/postal-city.js +23 -29
- package/out/commands/gazetteer/postal-city.js.map +1 -1
- package/out/commands/gazetteer/postcode-binary.d.ts +33 -12
- package/out/commands/gazetteer/postcode-binary.d.ts.map +1 -1
- package/out/commands/gazetteer/postcode-binary.js +30 -31
- package/out/commands/gazetteer/postcode-binary.js.map +1 -1
- package/out/commands/gazetteer/postcode-intl.d.ts +38 -11
- package/out/commands/gazetteer/postcode-intl.d.ts.map +1 -1
- package/out/commands/gazetteer/postcode-intl.js +59 -40
- package/out/commands/gazetteer/postcode-intl.js.map +1 -1
- package/out/commands/gazetteer/promote.d.ts +13 -6
- package/out/commands/gazetteer/promote.d.ts.map +1 -1
- package/out/commands/gazetteer/promote.js +17 -10
- package/out/commands/gazetteer/promote.js.map +1 -1
- package/out/commands/gazetteer/publish.d.ts +45 -12
- package/out/commands/gazetteer/publish.d.ts.map +1 -1
- package/out/commands/gazetteer/publish.js +26 -21
- package/out/commands/gazetteer/publish.js.map +1 -1
- package/out/commands/gazetteer/release.d.ts +57 -14
- package/out/commands/gazetteer/release.d.ts.map +1 -1
- package/out/commands/gazetteer/release.js +30 -25
- package/out/commands/gazetteer/release.js.map +1 -1
- package/out/commands/gazetteer/repos-sync.d.ts +63 -0
- package/out/commands/gazetteer/repos-sync.d.ts.map +1 -0
- package/out/commands/gazetteer/repos-sync.js +179 -0
- package/out/commands/gazetteer/repos-sync.js.map +1 -0
- package/out/commands/gazetteer/triage.d.ts +56 -0
- package/out/commands/gazetteer/triage.d.ts.map +1 -0
- package/out/commands/gazetteer/triage.js +76 -0
- package/out/commands/gazetteer/triage.js.map +1 -0
- package/out/commands/gazetteer/verify-codepoint.d.ts +28 -9
- package/out/commands/gazetteer/verify-codepoint.d.ts.map +1 -1
- package/out/commands/gazetteer/verify-codepoint.js +19 -14
- package/out/commands/gazetteer/verify-codepoint.js.map +1 -1
- package/out/commands/gazetteer/verify.d.ts +30 -9
- package/out/commands/gazetteer/verify.d.ts.map +1 -1
- package/out/commands/gazetteer/verify.js +14 -15
- package/out/commands/gazetteer/verify.js.map +1 -1
- package/out/commands/gnaf/assemble.d.ts +38 -10
- package/out/commands/gnaf/assemble.d.ts.map +1 -1
- package/out/commands/gnaf/assemble.js +21 -19
- package/out/commands/gnaf/assemble.js.map +1 -1
- package/out/commands/parse.d.ts +151 -74
- package/out/commands/parse.d.ts.map +1 -1
- package/out/commands/parse.js +97 -222
- package/out/commands/parse.js.map +1 -1
- package/out/commands/placer/build-dataset.d.ts +49 -17
- package/out/commands/placer/build-dataset.d.ts.map +1 -1
- package/out/commands/placer/build-dataset.js +23 -26
- package/out/commands/placer/build-dataset.js.map +1 -1
- package/out/commands/placer/eval.d.ts +56 -19
- package/out/commands/placer/eval.d.ts.map +1 -1
- package/out/commands/placer/eval.js +21 -27
- package/out/commands/placer/eval.js.map +1 -1
- package/out/commands/placer/probe-frontier.d.ts +29 -9
- package/out/commands/placer/probe-frontier.d.ts.map +1 -1
- package/out/commands/placer/probe-frontier.js +20 -13
- package/out/commands/placer/probe-frontier.js.map +1 -1
- package/out/commands/placer/quantize.d.ts +23 -8
- package/out/commands/placer/quantize.d.ts.map +1 -1
- package/out/commands/placer/quantize.js +16 -9
- package/out/commands/placer/quantize.js.map +1 -1
- package/out/commands/placer/train.d.ts +41 -11
- package/out/commands/placer/train.d.ts.map +1 -1
- package/out/commands/placer/train.js +19 -12
- package/out/commands/placer/train.js.map +1 -1
- package/out/commands/poi.d.ts +53 -13
- package/out/commands/poi.d.ts.map +1 -1
- package/out/commands/poi.js +38 -60
- package/out/commands/poi.js.map +1 -1
- package/out/commands/registry/convert/tx-hhsc.d.ts +24 -8
- package/out/commands/registry/convert/tx-hhsc.d.ts.map +1 -1
- package/out/commands/registry/convert/tx-hhsc.js +20 -12
- package/out/commands/registry/convert/tx-hhsc.js.map +1 -1
- package/out/commands/registry/dedup-ceiling.d.ts +41 -11
- package/out/commands/registry/dedup-ceiling.d.ts.map +1 -1
- package/out/commands/registry/dedup-ceiling.js +22 -15
- package/out/commands/registry/dedup-ceiling.js.map +1 -1
- package/out/commands/registry/gold-set-sample.d.ts +47 -12
- package/out/commands/registry/gold-set-sample.d.ts.map +1 -1
- package/out/commands/registry/gold-set-sample.js +30 -23
- package/out/commands/registry/gold-set-sample.js.map +1 -1
- package/out/commands/registry/matcher-scale.d.ts +36 -10
- package/out/commands/registry/matcher-scale.d.ts.map +1 -1
- package/out/commands/registry/matcher-scale.js +30 -19
- package/out/commands/registry/matcher-scale.js.map +1 -1
- package/out/commands/registry/run.d.ts +103 -24
- package/out/commands/registry/run.d.ts.map +1 -1
- package/out/commands/registry/run.js +75 -124
- package/out/commands/registry/run.js.map +1 -1
- package/out/commands/registry/scorer-eval.d.ts +160 -45
- package/out/commands/registry/scorer-eval.d.ts.map +1 -1
- package/out/commands/registry/scorer-eval.js +58 -95
- package/out/commands/registry/scorer-eval.js.map +1 -1
- package/out/commands/registry/train-scorer.d.ts +77 -22
- package/out/commands/registry/train-scorer.d.ts.map +1 -1
- package/out/commands/registry/train-scorer.js +26 -35
- package/out/commands/registry/train-scorer.js.map +1 -1
- package/out/commands/registry/viz.d.ts +72 -22
- package/out/commands/registry/viz.d.ts.map +1 -1
- package/out/commands/registry/viz.js +25 -35
- package/out/commands/registry/viz.js.map +1 -1
- package/out/commands/release/hf.d.ts +119 -32
- package/out/commands/release/hf.d.ts.map +1 -1
- package/out/commands/release/hf.js +35 -58
- package/out/commands/release/hf.js.map +1 -1
- package/out/commands/serve.d.ts +30 -12
- package/out/commands/serve.d.ts.map +1 -1
- package/out/commands/serve.js +19 -17
- package/out/commands/serve.js.map +1 -1
- package/out/commands/situs/address-points.d.ts +56 -14
- package/out/commands/situs/address-points.d.ts.map +1 -1
- package/out/commands/situs/address-points.js +49 -50
- package/out/commands/situs/address-points.js.map +1 -1
- package/out/commands/situs/attribution-manifest.d.ts +24 -8
- package/out/commands/situs/attribution-manifest.d.ts.map +1 -1
- package/out/commands/situs/attribution-manifest.js +16 -11
- package/out/commands/situs/attribution-manifest.js.map +1 -1
- package/out/commands/situs/build.d.ts +53 -13
- package/out/commands/situs/build.d.ts.map +1 -1
- package/out/commands/situs/build.js +21 -34
- package/out/commands/situs/build.js.map +1 -1
- package/out/commands/situs/interpolation-shard.d.ts +37 -10
- package/out/commands/situs/interpolation-shard.d.ts.map +1 -1
- package/out/commands/situs/interpolation-shard.js +48 -24
- package/out/commands/situs/interpolation-shard.js.map +1 -1
- package/out/commands/situs/interpolation.d.ts +66 -15
- package/out/commands/situs/interpolation.d.ts.map +1 -1
- package/out/commands/situs/interpolation.js +28 -32
- package/out/commands/situs/interpolation.js.map +1 -1
- package/out/commands/skill/install.d.ts +18 -7
- package/out/commands/skill/install.d.ts.map +1 -1
- package/out/commands/skill/install.js +12 -10
- package/out/commands/skill/install.js.map +1 -1
- package/out/commands/tiger/fetch.d.ts +43 -15
- package/out/commands/tiger/fetch.d.ts.map +1 -1
- package/out/commands/tiger/fetch.js +27 -20
- package/out/commands/tiger/fetch.js.map +1 -1
- package/out/commands/tiger/race-dots-map.d.ts +66 -15
- package/out/commands/tiger/race-dots-map.d.ts.map +1 -1
- package/out/commands/tiger/race-dots-map.js +24 -20
- package/out/commands/tiger/race-dots-map.js.map +1 -1
- package/out/commands/tiger/race-dots.d.ts +36 -10
- package/out/commands/tiger/race-dots.d.ts.map +1 -1
- package/out/commands/tiger/race-dots.js +22 -15
- package/out/commands/tiger/race-dots.js.map +1 -1
- package/out/commands/tiger/redistricting.d.ts +37 -10
- package/out/commands/tiger/redistricting.d.ts.map +1 -1
- package/out/commands/tiger/redistricting.js +21 -16
- package/out/commands/tiger/redistricting.js.map +1 -1
- package/out/commands/tiles/publish.d.ts +43 -11
- package/out/commands/tiles/publish.d.ts.map +1 -1
- package/out/commands/tiles/publish.js +22 -17
- package/out/commands/tiles/publish.js.map +1 -1
- package/out/commands/wof/graph.d.ts +7 -0
- package/out/commands/wof/graph.d.ts.map +1 -1
- package/out/commands/wof/graph.js +5 -1
- package/out/commands/wof/graph.js.map +1 -1
- package/out/commands/wof/mermaid.d.ts +7 -0
- package/out/commands/wof/mermaid.d.ts.map +1 -1
- package/out/commands/wof/mermaid.js +5 -1
- package/out/commands/wof/mermaid.js.map +1 -1
- package/out/commands/wof/prepare.d.ts +7 -0
- package/out/commands/wof/prepare.d.ts.map +1 -1
- package/out/commands/wof/prepare.js +5 -1
- package/out/commands/wof/prepare.js.map +1 -1
- package/out/commands/wof/sync.d.ts +7 -0
- package/out/commands/wof/sync.d.ts.map +1 -1
- package/out/commands/wof/sync.js +5 -1
- package/out/commands/wof/sync.js.map +1 -1
- package/out/commands/wof/tree.d.ts +7 -0
- package/out/commands/wof/tree.d.ts.map +1 -1
- package/out/commands/wof/tree.js +5 -1
- package/out/commands/wof/tree.js.map +1 -1
- package/out/country-scope.d.ts +24 -0
- package/out/country-scope.d.ts.map +1 -0
- package/out/country-scope.js +28 -0
- package/out/country-scope.js.map +1 -0
- package/out/coverage-census.d.ts +216 -0
- package/out/coverage-census.d.ts.map +1 -0
- package/out/coverage-census.js +356 -0
- package/out/coverage-census.js.map +1 -0
- package/out/data-bundles.d.ts +5 -2
- package/out/data-bundles.d.ts.map +1 -1
- package/out/data-bundles.js +7 -3
- package/out/data-bundles.js.map +1 -1
- package/out/data-inventory.d.ts +151 -0
- package/out/data-inventory.d.ts.map +1 -0
- package/out/data-inventory.js +219 -0
- package/out/data-inventory.js.map +1 -0
- package/out/debug-view/DebugFrame.d.ts +135 -0
- package/out/debug-view/DebugFrame.d.ts.map +1 -0
- package/out/debug-view/DebugFrame.js +274 -0
- package/out/debug-view/DebugFrame.js.map +1 -0
- package/out/debug-view/DebugSessionApp.d.ts +36 -0
- package/out/debug-view/DebugSessionApp.d.ts.map +1 -0
- package/out/debug-view/DebugSessionApp.js +415 -0
- package/out/debug-view/DebugSessionApp.js.map +1 -0
- package/out/debug-view/QueryInput.d.ts +67 -0
- package/out/debug-view/QueryInput.d.ts.map +1 -0
- package/out/debug-view/QueryInput.js +181 -0
- package/out/debug-view/QueryInput.js.map +1 -0
- package/out/debug-view/command.d.ts +43 -0
- package/out/debug-view/command.d.ts.map +1 -0
- package/out/debug-view/command.js +177 -0
- package/out/debug-view/command.js.map +1 -0
- package/out/debug-view/output-lines.d.ts +77 -0
- package/out/debug-view/output-lines.d.ts.map +1 -0
- package/out/debug-view/output-lines.js +172 -0
- package/out/debug-view/output-lines.js.map +1 -0
- package/out/debug-view/static-render.d.ts +19 -0
- package/out/debug-view/static-render.d.ts.map +1 -0
- package/out/debug-view/static-render.js +42 -0
- package/out/debug-view/static-render.js.map +1 -0
- package/out/debug-view/tag-colors.d.ts +16 -0
- package/out/debug-view/tag-colors.d.ts.map +1 -0
- package/out/debug-view/tag-colors.js +55 -0
- package/out/debug-view/tag-colors.js.map +1 -0
- package/out/debug-view/test/input-probe.d.ts +15 -0
- package/out/debug-view/test/input-probe.d.ts.map +1 -0
- package/out/debug-view/test/input-probe.js +38 -0
- package/out/debug-view/test/input-probe.js.map +1 -0
- package/out/debug-view/tiles.d.ts +13 -0
- package/out/debug-view/tiles.d.ts.map +1 -0
- package/out/debug-view/tiles.js +23 -0
- package/out/debug-view/tiles.js.map +1 -0
- package/out/debug-view/trace-rows.d.ts +62 -0
- package/out/debug-view/trace-rows.d.ts.map +1 -0
- package/out/debug-view/trace-rows.js +162 -0
- package/out/debug-view/trace-rows.js.map +1 -0
- package/out/debug-view/view-policy.d.ts +44 -0
- package/out/debug-view/view-policy.d.ts.map +1 -0
- package/out/debug-view/view-policy.js +90 -0
- package/out/debug-view/view-policy.js.map +1 -0
- package/out/default-reverse-geocoder.d.ts +1 -1
- package/out/default-reverse-geocoder.js +1 -1
- package/out/dev-tools/build-gb-anchor-bin.run.d.ts +1 -1
- package/out/dev-tools/build-gb-anchor-bin.run.js +1 -1
- package/out/dev-tools/build-hard-slice-board.run.d.ts +1 -1
- package/out/dev-tools/build-hard-slice-board.run.js +7 -21
- package/out/dev-tools/build-hard-slice-board.run.js.map +1 -1
- package/out/dev-tools/capture-v1-parse.run.d.ts +1 -1
- package/out/dev-tools/capture-v1-parse.run.js +5 -5
- package/out/dev-tools/capture-v1-parse.run.js.map +1 -1
- package/out/dev-tools/convert-parity-fixtures.run.d.ts +1 -1
- package/out/dev-tools/convert-parity-fixtures.run.js +3 -3
- package/out/dev-tools/convert-parity-fixtures.run.js.map +1 -1
- package/out/dev-tools/diff-territory-spans.run.d.ts +1 -1
- package/out/dev-tools/diff-territory-spans.run.js +2 -2
- package/out/dev-tools/diff-territory-spans.run.js.map +1 -1
- package/out/dev-tools/extract-parity-corpus.run.d.ts +1 -1
- package/out/dev-tools/extract-parity-corpus.run.js +3 -3
- package/out/dev-tools/extract-parity-corpus.run.js.map +1 -1
- package/out/dev-tools/failure-census.run.js +0 -0
- package/out/dev-tools/failure-census.run.js.map +1 -1
- package/out/dev-tools/failure-report.run.d.ts +2 -2
- package/out/dev-tools/failure-report.run.js +15 -17
- package/out/dev-tools/failure-report.run.js.map +1 -1
- package/out/dev-tools/gb-fragment-board.run.d.ts +1 -1
- package/out/dev-tools/gb-fragment-board.run.js +5 -5
- package/out/dev-tools/gb-fragment-board.run.js.map +1 -1
- package/out/dev-tools/grammar-c4-census.run.d.ts +6 -0
- package/out/dev-tools/grammar-c4-census.run.d.ts.map +1 -0
- package/out/dev-tools/grammar-c4-census.run.js +94 -0
- package/out/dev-tools/grammar-c4-census.run.js.map +1 -0
- package/out/dev-tools/grammar-census.run.d.ts +5 -0
- package/out/dev-tools/grammar-census.run.d.ts.map +1 -0
- package/out/dev-tools/grammar-census.run.js +125 -0
- package/out/dev-tools/grammar-census.run.js.map +1 -0
- package/out/dev-tools/postcode-coherence-coverage.run.d.ts +1 -1
- package/out/dev-tools/postcode-coherence-coverage.run.js +9 -5
- package/out/dev-tools/postcode-coherence-coverage.run.js.map +1 -1
- package/out/dev-tools/postcode-coherence-scale.run.d.ts +1 -1
- package/out/dev-tools/postcode-coherence-scale.run.js +8 -5
- package/out/dev-tools/postcode-coherence-scale.run.js.map +1 -1
- package/out/dev-tools/probe-comma-free-locality.run.d.ts +1 -1
- package/out/dev-tools/probe-comma-free-locality.run.js +3 -3
- package/out/dev-tools/probe-comma-free-locality.run.js.map +1 -1
- package/out/dev-tools/probe-fst-bias.run.d.ts +1 -1
- package/out/dev-tools/probe-fst-bias.run.js +3 -14
- package/out/dev-tools/probe-fst-bias.run.js.map +1 -1
- package/out/dev-tools/probe-query-intent.run.d.ts +2 -2
- package/out/dev-tools/probe-query-intent.run.js +2 -2
- package/out/dev-tools/probe-referential-delta.run.d.ts +1 -1
- package/out/dev-tools/probe-referential-delta.run.js +11 -15
- package/out/dev-tools/probe-referential-delta.run.js.map +1 -1
- package/out/dev-tools/retrieval-rescue-census.run.d.ts +9 -0
- package/out/dev-tools/retrieval-rescue-census.run.d.ts.map +1 -0
- package/out/dev-tools/retrieval-rescue-census.run.js +90 -0
- package/out/dev-tools/retrieval-rescue-census.run.js.map +1 -0
- package/out/dev-tools/router-kind-probe.run.js +2 -2
- package/out/dev-tools/router-kind-probe.run.js.map +1 -1
- package/out/dev-tools/score-anchor-v2-boards.run.d.ts +1 -1
- package/out/dev-tools/score-anchor-v2-boards.run.js +4 -4
- package/out/dev-tools/score-anchor-v2-boards.run.js.map +1 -1
- package/out/dev-tools/score-hard-slice-board.run.d.ts +1 -1
- package/out/dev-tools/score-hard-slice-board.run.js +12 -23
- package/out/dev-tools/score-hard-slice-board.run.js.map +1 -1
- package/out/dev-tools/score-interesting-addresses.run.d.ts +3 -2
- package/out/dev-tools/score-interesting-addresses.run.d.ts.map +1 -1
- package/out/dev-tools/score-interesting-addresses.run.js +4 -3
- package/out/dev-tools/score-interesting-addresses.run.js.map +1 -1
- package/out/dev-tools/score-street-name-boundaries.run.d.ts +1 -1
- package/out/dev-tools/score-street-name-boundaries.run.js +4 -9
- package/out/dev-tools/score-street-name-boundaries.run.js.map +1 -1
- package/out/dev-tools/score-world-structures.run.d.ts +1 -1
- package/out/dev-tools/score-world-structures.run.js +2 -2
- package/out/dev-tools/score-world-structures.run.js.map +1 -1
- package/out/dev-tools/us-recall-flip-census.run.d.ts +1 -1
- package/out/dev-tools/us-recall-flip-census.run.js +11 -5
- package/out/dev-tools/us-recall-flip-census.run.js.map +1 -1
- package/out/doctor/checks.d.ts +1 -5
- package/out/doctor/checks.d.ts.map +1 -1
- package/out/doctor/checks.js +6 -26
- package/out/doctor/checks.js.map +1 -1
- package/out/doctor/format.d.ts +12 -0
- package/out/doctor/format.d.ts.map +1 -0
- package/out/doctor/format.js +54 -0
- package/out/doctor/format.js.map +1 -0
- package/out/doctor/index.d.ts +9 -0
- package/out/doctor/index.d.ts.map +1 -0
- package/out/doctor/index.js +9 -0
- package/out/doctor/index.js.map +1 -0
- package/out/doctor/runner.d.ts.map +1 -1
- package/out/doctor/runner.js +14 -26
- package/out/doctor/runner.js.map +1 -1
- package/out/eval-harness/capability-manifest.d.ts.map +1 -1
- package/out/eval-harness/capability-manifest.js +13 -83
- package/out/eval-harness/capability-manifest.js.map +1 -1
- package/out/eval-harness/de-order-eval.js +2 -2
- package/out/eval-harness/de-order-eval.js.map +1 -1
- package/out/eval-harness/demo-cascade-rows.d.ts.map +1 -1
- package/out/eval-harness/demo-cascade-rows.js +13 -1
- package/out/eval-harness/demo-cascade-rows.js.map +1 -1
- package/out/eval-harness/demo-cascade-smoke.d.ts +6 -6
- package/out/eval-harness/demo-cascade-smoke.d.ts.map +1 -1
- package/out/eval-harness/demo-cascade-smoke.js +25 -46
- package/out/eval-harness/demo-cascade-smoke.js.map +1 -1
- package/out/eval-harness/digit-board.d.ts +1 -1
- package/out/eval-harness/digit-board.d.ts.map +1 -1
- package/out/eval-harness/digit-board.js +3 -12
- package/out/eval-harness/digit-board.js.map +1 -1
- package/out/eval-harness/error-analysis.d.ts +2 -2
- package/out/eval-harness/error-analysis.js +2 -2
- package/out/eval-harness/es-postcode-centroids.d.ts +7 -1
- package/out/eval-harness/es-postcode-centroids.d.ts.map +1 -1
- package/out/eval-harness/es-postcode-centroids.js +2 -2
- package/out/eval-harness/es-postcode-centroids.js.map +1 -1
- package/out/eval-harness/external-arenas.d.ts.map +1 -1
- package/out/eval-harness/external-arenas.js +2 -1
- package/out/eval-harness/external-arenas.js.map +1 -1
- package/out/eval-harness/flatten-nodes.d.ts +25 -0
- package/out/eval-harness/flatten-nodes.d.ts.map +1 -0
- package/out/eval-harness/flatten-nodes.js +23 -0
- package/out/eval-harness/flatten-nodes.js.map +1 -0
- package/out/eval-harness/fr-parse-recall.d.ts +6 -1
- package/out/eval-harness/fr-parse-recall.d.ts.map +1 -1
- package/out/eval-harness/fr-parse-recall.js +41 -12
- package/out/eval-harness/fr-parse-recall.js.map +1 -1
- package/out/eval-harness/fragment-board.d.ts +1 -1
- package/out/eval-harness/fragment-board.d.ts.map +1 -1
- package/out/eval-harness/fragment-board.js +3 -12
- package/out/eval-harness/fragment-board.js.map +1 -1
- package/out/eval-harness/gauntlet/ablation-expectation.d.ts +6 -103
- package/out/eval-harness/gauntlet/ablation-expectation.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/ablation-expectation.js +15 -112
- package/out/eval-harness/gauntlet/ablation-expectation.js.map +1 -1
- package/out/eval-harness/gauntlet/ablation-gazetteer.d.ts +5 -6
- package/out/eval-harness/gauntlet/ablation-gazetteer.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/ablation-gazetteer.js +9 -10
- package/out/eval-harness/gauntlet/ablation-gazetteer.js.map +1 -1
- package/out/eval-harness/gauntlet/ablation.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/ablation.js +4 -0
- package/out/eval-harness/gauntlet/ablation.js.map +1 -1
- package/out/eval-harness/gauntlet/build-fdic-holdout.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/build-fdic-holdout.js +11 -12
- package/out/eval-harness/gauntlet/build-fdic-holdout.js.map +1 -1
- package/out/eval-harness/gauntlet/build-regression-db.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/build-regression-db.js +1 -1
- package/out/eval-harness/gauntlet/build-regression-db.js.map +1 -1
- package/out/eval-harness/gauntlet/cases/load.d.ts +1 -1
- package/out/eval-harness/gauntlet/cases/load.js +2 -2
- package/out/eval-harness/gauntlet/cases/seed-case.d.ts +20 -2
- package/out/eval-harness/gauntlet/cases/seed-case.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/cases/seed-case.js +11 -2
- package/out/eval-harness/gauntlet/cases/seed-case.js.map +1 -1
- package/out/eval-harness/gauntlet/check-case.d.ts +13 -0
- package/out/eval-harness/gauntlet/check-case.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/check-case.js +12 -1
- package/out/eval-harness/gauntlet/check-case.js.map +1 -1
- package/out/eval-harness/gauntlet/harness.d.ts +67 -0
- package/out/eval-harness/gauntlet/harness.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/harness.js +168 -30
- package/out/eval-harness/gauntlet/harness.js.map +1 -1
- package/out/eval-harness/gauntlet/holdout.d.ts +34 -2
- package/out/eval-harness/gauntlet/holdout.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/holdout.js +12 -7
- package/out/eval-harness/gauntlet/holdout.js.map +1 -1
- package/out/eval-harness/gauntlet/metamorphic.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/metamorphic.js +9 -15
- package/out/eval-harness/gauntlet/metamorphic.js.map +1 -1
- package/out/eval-harness/gauntlet/regression.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/regression.js +9 -1
- package/out/eval-harness/gauntlet/regression.js.map +1 -1
- package/out/eval-harness/gauntlet/routing.d.ts +20 -0
- package/out/eval-harness/gauntlet/routing.d.ts.map +1 -0
- package/out/eval-harness/gauntlet/routing.js +28 -0
- package/out/eval-harness/gauntlet/routing.js.map +1 -0
- package/out/eval-harness/gauntlet/run.d.ts +14 -0
- package/out/eval-harness/gauntlet/run.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/run.js +10 -3
- package/out/eval-harness/gauntlet/run.js.map +1 -1
- package/out/eval-harness/gauntlet/schema.d.ts +17 -2
- package/out/eval-harness/gauntlet/schema.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/schema.js +5 -0
- package/out/eval-harness/gauntlet/schema.js.map +1 -1
- package/out/eval-harness/gb-codepoint-eval.d.ts +32 -0
- package/out/eval-harness/gb-codepoint-eval.d.ts.map +1 -0
- package/out/eval-harness/gb-codepoint-eval.js +178 -0
- package/out/eval-harness/gb-codepoint-eval.js.map +1 -0
- package/out/eval-harness/grammar-census-c4.d.ts +89 -0
- package/out/eval-harness/grammar-census-c4.d.ts.map +1 -0
- package/out/eval-harness/grammar-census-c4.js +150 -0
- package/out/eval-harness/grammar-census-c4.js.map +1 -0
- package/out/eval-harness/grammar-census.d.ts +118 -0
- package/out/eval-harness/grammar-census.d.ts.map +1 -0
- package/out/eval-harness/grammar-census.js +162 -0
- package/out/eval-harness/grammar-census.js.map +1 -0
- package/out/eval-harness/hard-slice-board.d.ts +1 -1
- package/out/eval-harness/hard-slice-board.d.ts.map +1 -1
- package/out/eval-harness/hard-slice-board.js +3 -1
- package/out/eval-harness/hard-slice-board.js.map +1 -1
- package/out/eval-harness/invariance/runner.d.ts +1 -1
- package/out/eval-harness/invariance/runner.d.ts.map +1 -1
- package/out/eval-harness/invariance/runner.js +2 -2
- package/out/eval-harness/invariance/runner.js.map +1 -1
- package/out/eval-harness/ledger-append.d.ts +2 -2
- package/out/eval-harness/ledger-append.js +3 -3
- package/out/eval-harness/ledger-append.js.map +1 -1
- package/out/eval-harness/mask-regression.d.ts.map +1 -1
- package/out/eval-harness/mask-regression.js +10 -81
- package/out/eval-harness/mask-regression.js.map +1 -1
- package/out/eval-harness/oa-resolver/admin-match.d.ts +47 -0
- package/out/eval-harness/oa-resolver/admin-match.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/admin-match.js +181 -0
- package/out/eval-harness/oa-resolver/admin-match.js.map +1 -0
- package/out/eval-harness/oa-resolver/aggregate.d.ts +67 -0
- package/out/eval-harness/oa-resolver/aggregate.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/aggregate.js +75 -0
- package/out/eval-harness/oa-resolver/aggregate.js.map +1 -0
- package/out/eval-harness/oa-resolver/assembled-arm.d.ts +24 -0
- package/out/eval-harness/oa-resolver/assembled-arm.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/assembled-arm.js +66 -0
- package/out/eval-harness/oa-resolver/assembled-arm.js.map +1 -0
- package/out/eval-harness/oa-resolver/coordinate-tiers.d.ts +73 -0
- package/out/eval-harness/oa-resolver/coordinate-tiers.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/coordinate-tiers.js +144 -0
- package/out/eval-harness/oa-resolver/coordinate-tiers.js.map +1 -0
- package/out/eval-harness/oa-resolver/options.d.ts +170 -0
- package/out/eval-harness/oa-resolver/options.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/options.js +8 -0
- package/out/eval-harness/oa-resolver/options.js.map +1 -0
- package/out/eval-harness/oa-resolver/parse-rig.d.ts +32 -0
- package/out/eval-harness/oa-resolver/parse-rig.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/parse-rig.js +122 -0
- package/out/eval-harness/oa-resolver/parse-rig.js.map +1 -0
- package/out/eval-harness/oa-resolver/row-score.d.ts +33 -0
- package/out/eval-harness/oa-resolver/row-score.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/row-score.js +39 -0
- package/out/eval-harness/oa-resolver/row-score.js.map +1 -0
- package/out/eval-harness/oa-resolver/rows.d.ts +27 -0
- package/out/eval-harness/oa-resolver/rows.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/rows.js +14 -0
- package/out/eval-harness/oa-resolver/rows.js.map +1 -0
- package/out/eval-harness/oa-resolver/tree-hits.d.ts +68 -0
- package/out/eval-harness/oa-resolver/tree-hits.d.ts.map +1 -0
- package/out/eval-harness/oa-resolver/tree-hits.js +150 -0
- package/out/eval-harness/oa-resolver/tree-hits.js.map +1 -0
- package/out/eval-harness/oa-resolver-eval.d.ts +4 -176
- package/out/eval-harness/oa-resolver-eval.d.ts.map +1 -1
- package/out/eval-harness/oa-resolver-eval.js +39 -738
- package/out/eval-harness/oa-resolver-eval.js.map +1 -1
- package/out/eval-harness/oa-resolver-report.d.ts.map +1 -1
- package/out/eval-harness/oa-resolver-report.js +1 -1
- package/out/eval-harness/oa-resolver-report.js.map +1 -1
- package/out/eval-harness/parity-corpus.d.ts +10 -2
- package/out/eval-harness/parity-corpus.d.ts.map +1 -1
- package/out/eval-harness/parity-corpus.js +21 -2
- package/out/eval-harness/parity-corpus.js.map +1 -1
- package/out/eval-harness/per-locale-f1.js +2 -2
- package/out/eval-harness/per-locale-f1.js.map +1 -1
- package/out/eval-harness/per-tag-f1.d.ts +22 -0
- package/out/eval-harness/per-tag-f1.d.ts.map +1 -0
- package/out/eval-harness/per-tag-f1.js +78 -0
- package/out/eval-harness/per-tag-f1.js.map +1 -0
- package/out/eval-harness/poi-board.d.ts +3 -3
- package/out/eval-harness/poi-board.d.ts.map +1 -1
- package/out/eval-harness/poi-board.js +7 -7
- package/out/eval-harness/poi-board.js.map +1 -1
- package/out/eval-harness/promotion-gate-verdict.d.ts.map +1 -1
- package/out/eval-harness/promotion-gate-verdict.js +16 -2
- package/out/eval-harness/promotion-gate-verdict.js.map +1 -1
- package/out/eval-harness/promotion-gate.d.ts +19 -4
- package/out/eval-harness/promotion-gate.d.ts.map +1 -1
- package/out/eval-harness/promotion-gate.js +93 -33
- package/out/eval-harness/promotion-gate.js.map +1 -1
- package/out/eval-harness/retrieval-rescue-census.d.ts +103 -0
- package/out/eval-harness/retrieval-rescue-census.d.ts.map +1 -0
- package/out/eval-harness/retrieval-rescue-census.js +91 -0
- package/out/eval-harness/retrieval-rescue-census.js.map +1 -0
- package/out/eval-harness/score-affix.d.ts.map +1 -1
- package/out/eval-harness/score-affix.js +1 -1
- package/out/eval-harness/score-affix.js.map +1 -1
- package/out/eval-harness/score-country-homograph.d.ts.map +1 -1
- package/out/eval-harness/score-country-homograph.js +1 -1
- package/out/eval-harness/score-country-homograph.js.map +1 -1
- package/out/eval-harness/v0-tree-adapter.d.ts +1 -1
- package/out/eval-harness/v0-tree-adapter.d.ts.map +1 -1
- package/out/eval-harness/v0-tree-adapter.js.map +1 -1
- package/out/eval-harness/wof-hot-db.d.ts +25 -0
- package/out/eval-harness/wof-hot-db.d.ts.map +1 -0
- package/out/eval-harness/wof-hot-db.js +32 -0
- package/out/eval-harness/wof-hot-db.js.map +1 -0
- package/out/fork-entity.d.ts +124 -0
- package/out/fork-entity.d.ts.map +1 -0
- package/out/fork-entity.js +281 -0
- package/out/fork-entity.js.map +1 -0
- package/out/gazetteer-pipeline/admin/fold-overture.d.ts +1 -0
- package/out/gazetteer-pipeline/admin/fold-overture.d.ts.map +1 -1
- package/out/gazetteer-pipeline/admin/fold-overture.js +16 -2
- package/out/gazetteer-pipeline/admin/fold-overture.js.map +1 -1
- package/out/gazetteer-pipeline/admin/freeze.d.ts.map +1 -1
- package/out/gazetteer-pipeline/admin/freeze.js +3 -5
- package/out/gazetteer-pipeline/admin/freeze.js.map +1 -1
- package/out/gazetteer-pipeline/admin/index.d.ts.map +1 -1
- package/out/gazetteer-pipeline/admin/index.js +22 -0
- package/out/gazetteer-pipeline/admin/index.js.map +1 -1
- package/out/gazetteer-pipeline/admin/ingest-wof.d.ts.map +1 -1
- package/out/gazetteer-pipeline/admin/ingest-wof.js +12 -2
- package/out/gazetteer-pipeline/admin/ingest-wof.js.map +1 -1
- package/out/gazetteer-pipeline/admin/manifest.d.ts +55 -0
- package/out/gazetteer-pipeline/admin/manifest.d.ts.map +1 -0
- package/out/gazetteer-pipeline/admin/manifest.js +77 -0
- package/out/gazetteer-pipeline/admin/manifest.js.map +1 -0
- package/out/gazetteer-pipeline/admin-locator.d.ts +62 -0
- package/out/gazetteer-pipeline/admin-locator.d.ts.map +1 -0
- package/out/gazetteer-pipeline/admin-locator.js +127 -0
- package/out/gazetteer-pipeline/admin-locator.js.map +1 -0
- package/out/gazetteer-pipeline/anchor-lookup.d.ts +1 -1
- package/out/gazetteer-pipeline/anchor-lookup.js +1 -1
- package/out/gazetteer-pipeline/candidate-manifest.d.ts +57 -0
- package/out/gazetteer-pipeline/candidate-manifest.d.ts.map +1 -0
- package/out/gazetteer-pipeline/candidate-manifest.js +80 -0
- package/out/gazetteer-pipeline/candidate-manifest.js.map +1 -0
- package/out/gazetteer-pipeline/capitals.d.ts +100 -0
- package/out/gazetteer-pipeline/capitals.d.ts.map +1 -0
- package/out/gazetteer-pipeline/capitals.js +160 -0
- package/out/gazetteer-pipeline/capitals.js.map +1 -0
- package/out/gazetteer-pipeline/country-plan.d.ts +101 -0
- package/out/gazetteer-pipeline/country-plan.d.ts.map +1 -0
- package/out/gazetteer-pipeline/country-plan.js +150 -0
- package/out/gazetteer-pipeline/country-plan.js.map +1 -0
- package/out/gazetteer-pipeline/country-sources.d.ts +101 -0
- package/out/gazetteer-pipeline/country-sources.d.ts.map +1 -0
- package/out/gazetteer-pipeline/country-sources.js +132 -0
- package/out/gazetteer-pipeline/country-sources.js.map +1 -0
- package/out/gazetteer-pipeline/cz-districts.d.ts +42 -0
- package/out/gazetteer-pipeline/cz-districts.d.ts.map +1 -0
- package/out/gazetteer-pipeline/cz-districts.js +93 -0
- package/out/gazetteer-pipeline/cz-districts.js.map +1 -0
- package/out/gazetteer-pipeline/defaults.d.ts +51 -1
- package/out/gazetteer-pipeline/defaults.d.ts.map +1 -1
- package/out/gazetteer-pipeline/defaults.js +51 -1
- package/out/gazetteer-pipeline/defaults.js.map +1 -1
- package/out/gazetteer-pipeline/evidence-lexicons.js +4 -4
- package/out/gazetteer-pipeline/evidence-lexicons.js.map +1 -1
- package/out/gazetteer-pipeline/fst.d.ts +11 -2
- package/out/gazetteer-pipeline/fst.d.ts.map +1 -1
- package/out/gazetteer-pipeline/fst.js +18 -6
- package/out/gazetteer-pipeline/fst.js.map +1 -1
- package/out/gazetteer-pipeline/gnaf-rooftop.d.ts +65 -0
- package/out/gazetteer-pipeline/gnaf-rooftop.d.ts.map +1 -0
- package/out/gazetteer-pipeline/gnaf-rooftop.js +239 -0
- package/out/gazetteer-pipeline/gnaf-rooftop.js.map +1 -0
- package/out/gazetteer-pipeline/granularity.d.ts +1 -8
- package/out/gazetteer-pipeline/granularity.d.ts.map +1 -1
- package/out/gazetteer-pipeline/granularity.js +2 -8
- package/out/gazetteer-pipeline/granularity.js.map +1 -1
- package/out/gazetteer-pipeline/index.d.ts +38 -31
- package/out/gazetteer-pipeline/index.d.ts.map +1 -1
- package/out/gazetteer-pipeline/index.js +80 -41
- package/out/gazetteer-pipeline/index.js.map +1 -1
- package/out/gazetteer-pipeline/nz-localities.d.ts +52 -0
- package/out/gazetteer-pipeline/nz-localities.d.ts.map +1 -0
- package/out/gazetteer-pipeline/nz-localities.js +0 -0
- package/out/gazetteer-pipeline/nz-localities.js.map +1 -0
- package/out/gazetteer-pipeline/overture-release.d.ts +45 -0
- package/out/gazetteer-pipeline/overture-release.d.ts.map +1 -0
- package/out/gazetteer-pipeline/overture-release.js +87 -0
- package/out/gazetteer-pipeline/overture-release.js.map +1 -0
- package/out/gazetteer-pipeline/pair-index-hierarchy-probe.js +7 -13
- package/out/gazetteer-pipeline/pair-index-hierarchy-probe.js.map +1 -1
- package/out/gazetteer-pipeline/pair-index-hierarchy-verify.js +4 -6
- package/out/gazetteer-pipeline/pair-index-hierarchy-verify.js.map +1 -1
- package/out/gazetteer-pipeline/poi/build-brands.d.ts +1 -12
- package/out/gazetteer-pipeline/poi/build-brands.d.ts.map +1 -1
- package/out/gazetteer-pipeline/poi/build-brands.js +6 -17
- package/out/gazetteer-pipeline/poi/build-brands.js.map +1 -1
- package/out/gazetteer-pipeline/poi/build-poi.d.ts +1 -10
- package/out/gazetteer-pipeline/poi/build-poi.d.ts.map +1 -1
- package/out/gazetteer-pipeline/poi/build-poi.js +25 -31
- package/out/gazetteer-pipeline/poi/build-poi.js.map +1 -1
- package/out/gazetteer-pipeline/poi/defaults.d.ts +38 -0
- package/out/gazetteer-pipeline/poi/defaults.d.ts.map +1 -0
- package/out/gazetteer-pipeline/poi/defaults.js +38 -0
- package/out/gazetteer-pipeline/poi/defaults.js.map +1 -0
- package/out/gazetteer-pipeline/postcode/centroid-fills.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode/centroid-fills.js +16 -4
- package/out/gazetteer-pipeline/postcode/centroid-fills.js.map +1 -1
- package/out/gazetteer-pipeline/postcode/codepoint/fetch.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode/codepoint/fetch.js +1 -0
- package/out/gazetteer-pipeline/postcode/codepoint/fetch.js.map +1 -1
- package/out/gazetteer-pipeline/postcode/codepoint-shard.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode/codepoint-shard.js +0 -1
- package/out/gazetteer-pipeline/postcode/codepoint-shard.js.map +1 -1
- package/out/gazetteer-pipeline/postcode/geonames-tail.d.ts +1 -8
- package/out/gazetteer-pipeline/postcode/geonames-tail.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode/geonames-tail.js +3 -9
- package/out/gazetteer-pipeline/postcode/geonames-tail.js.map +1 -1
- package/out/gazetteer-pipeline/postcode/index.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode/index.js +6 -3
- package/out/gazetteer-pipeline/postcode/index.js.map +1 -1
- package/out/gazetteer-pipeline/postcode/ni-osm/fetch.js +1 -1
- package/out/gazetteer-pipeline/postcode/ni-osm/fetch.js.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/base.d.ts +4 -4
- package/out/gazetteer-pipeline/postcode-locality/base.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/base.js +13 -37
- package/out/gazetteer-pipeline/postcode-locality/base.js.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/jp.d.ts +1 -1
- package/out/gazetteer-pipeline/postcode-locality/jp.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/jp.js +8 -29
- package/out/gazetteer-pipeline/postcode-locality/jp.js.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/kr.d.ts +1 -1
- package/out/gazetteer-pipeline/postcode-locality/kr.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/kr.js +10 -31
- package/out/gazetteer-pipeline/postcode-locality/kr.js.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/schema.d.ts +99 -0
- package/out/gazetteer-pipeline/postcode-locality/schema.d.ts.map +1 -0
- package/out/gazetteer-pipeline/postcode-locality/schema.js +78 -0
- package/out/gazetteer-pipeline/postcode-locality/schema.js.map +1 -0
- package/out/gazetteer-pipeline/postcode-locality/tw.d.ts +3 -3
- package/out/gazetteer-pipeline/postcode-locality/tw.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode-locality/tw.js +14 -34
- package/out/gazetteer-pipeline/postcode-locality/tw.js.map +1 -1
- package/out/gazetteer-pipeline/postcode-prefix.d.ts +53 -0
- package/out/gazetteer-pipeline/postcode-prefix.d.ts.map +1 -1
- package/out/gazetteer-pipeline/postcode-prefix.js +211 -2
- package/out/gazetteer-pipeline/postcode-prefix.js.map +1 -1
- package/out/gazetteer-pipeline/recipe-edit.d.ts +47 -0
- package/out/gazetteer-pipeline/recipe-edit.d.ts.map +1 -0
- package/out/gazetteer-pipeline/recipe-edit.js +131 -0
- package/out/gazetteer-pipeline/recipe-edit.js.map +1 -0
- package/out/gazetteer-pipeline/repos-audit.d.ts +105 -0
- package/out/gazetteer-pipeline/repos-audit.d.ts.map +1 -0
- package/out/gazetteer-pipeline/repos-audit.js +178 -0
- package/out/gazetteer-pipeline/repos-audit.js.map +1 -0
- package/out/gazetteer-pipeline/repos-sync.d.ts +139 -0
- package/out/gazetteer-pipeline/repos-sync.d.ts.map +1 -0
- package/out/gazetteer-pipeline/repos-sync.js +206 -0
- package/out/gazetteer-pipeline/repos-sync.js.map +1 -0
- package/out/gazetteer-pipeline/stamp-manifest.d.ts +37 -0
- package/out/gazetteer-pipeline/stamp-manifest.d.ts.map +1 -0
- package/out/gazetteer-pipeline/stamp-manifest.js +61 -0
- package/out/gazetteer-pipeline/stamp-manifest.js.map +1 -0
- package/out/gazetteer-pipeline/uprn-layer.d.ts +275 -0
- package/out/gazetteer-pipeline/uprn-layer.d.ts.map +1 -0
- package/out/gazetteer-pipeline/uprn-layer.js +523 -0
- package/out/gazetteer-pipeline/uprn-layer.js.map +1 -0
- package/out/gazetteer-pipeline/wof-repo-origin.d.ts +78 -0
- package/out/gazetteer-pipeline/wof-repo-origin.d.ts.map +1 -0
- package/out/gazetteer-pipeline/wof-repo-origin.js +80 -0
- package/out/gazetteer-pipeline/wof-repo-origin.js.map +1 -0
- package/out/gazetteer-pipeline/wof-triage.d.ts +150 -0
- package/out/gazetteer-pipeline/wof-triage.d.ts.map +1 -0
- package/out/gazetteer-pipeline/wof-triage.js +305 -0
- package/out/gazetteer-pipeline/wof-triage.js.map +1 -0
- package/out/geocode-command-options.d.ts +51 -0
- package/out/geocode-command-options.d.ts.map +1 -0
- package/out/geocode-command-options.js +32 -0
- package/out/geocode-command-options.js.map +1 -0
- package/out/geocode-core.d.ts +191 -42
- package/out/geocode-core.d.ts.map +1 -1
- package/out/geocode-core.js +351 -211
- package/out/geocode-core.js.map +1 -1
- package/out/geocode-diff.d.ts +118 -0
- package/out/geocode-diff.d.ts.map +1 -0
- package/out/geocode-diff.js +168 -0
- package/out/geocode-diff.js.map +1 -0
- package/out/geocode-session.d.ts +249 -0
- package/out/geocode-session.d.ts.map +1 -0
- package/out/geocode-session.js +468 -0
- package/out/geocode-session.js.map +1 -0
- package/out/geocode-worker.d.ts.map +1 -1
- package/out/geocode-worker.js +4 -1
- package/out/geocode-worker.js.map +1 -1
- package/out/hierarchy-lineage.d.ts +90 -0
- package/out/hierarchy-lineage.d.ts.map +1 -0
- package/out/hierarchy-lineage.js +99 -0
- package/out/hierarchy-lineage.js.map +1 -0
- package/out/inferred-scope.d.ts +41 -0
- package/out/inferred-scope.d.ts.map +1 -0
- package/out/inferred-scope.js +48 -0
- package/out/inferred-scope.js.map +1 -0
- package/out/intent-refusal.d.ts +33 -0
- package/out/intent-refusal.d.ts.map +1 -0
- package/out/intent-refusal.js +50 -0
- package/out/intent-refusal.js.map +1 -0
- package/out/kbest-street-rerank.d.ts +0 -1
- package/out/kbest-street-rerank.d.ts.map +1 -1
- package/out/kbest-street-rerank.js +1 -2
- package/out/kbest-street-rerank.js.map +1 -1
- package/out/plus-code-override.d.ts +22 -0
- package/out/plus-code-override.d.ts.map +1 -0
- package/out/plus-code-override.js +64 -0
- package/out/plus-code-override.js.map +1 -0
- package/out/poi-intent.d.ts +15 -0
- package/out/poi-intent.d.ts.map +1 -1
- package/out/poi-intent.js +80 -14
- package/out/poi-intent.js.map +1 -1
- package/out/postcode-repair.d.ts +30 -0
- package/out/postcode-repair.d.ts.map +1 -0
- package/out/postcode-repair.js +115 -0
- package/out/postcode-repair.js.map +1 -0
- package/out/release-tools/publish-hf.d.ts.map +1 -1
- package/out/release-tools/publish-hf.js +22 -18
- package/out/release-tools/publish-hf.js.map +1 -1
- package/out/resolver-backend.d.ts +48 -7
- package/out/resolver-backend.d.ts.map +1 -1
- package/out/resolver-backend.js +95 -15
- package/out/resolver-backend.js.map +1 -1
- package/out/runtime-pipeline.d.ts +12 -2
- package/out/runtime-pipeline.d.ts.map +1 -1
- package/out/runtime-pipeline.js +35 -6
- package/out/runtime-pipeline.js.map +1 -1
- package/out/stranded-affix-repair.d.ts +31 -0
- package/out/stranded-affix-repair.d.ts.map +1 -0
- package/out/stranded-affix-repair.js +98 -0
- package/out/stranded-affix-repair.js.map +1 -0
- package/out/street-miss-fallback.d.ts +39 -0
- package/out/street-miss-fallback.d.ts.map +1 -0
- package/out/street-miss-fallback.js +53 -0
- package/out/street-miss-fallback.js.map +1 -0
- package/out/street-name-assembly.d.ts +16 -0
- package/out/street-name-assembly.d.ts.map +1 -0
- package/out/street-name-assembly.js +33 -0
- package/out/street-name-assembly.js.map +1 -0
- package/out/test-kit/cli-spawn-lock.js +2 -2
- package/out/test-kit/cli-spawn-lock.js.map +1 -1
- package/out/tools/generate-clients.d.ts +5 -4
- package/out/tools/generate-clients.d.ts.map +1 -1
- package/out/tools/generate-clients.js +7 -7
- package/out/tools/generate-clients.js.map +1 -1
- package/package.json +433 -32
- package/plus-code-override.ts +77 -0
- package/poi-intent.ts +107 -23
- package/postcode-repair.ts +139 -0
- package/release-tools/publish-hf.ts +23 -18
- package/resolver-backend.ts +132 -18
- package/runtime-pipeline.ts +56 -6
- package/stranded-affix-repair.ts +114 -0
- package/street-miss-fallback.ts +80 -0
- package/street-name-assembly.ts +41 -0
- package/test-kit/cli-spawn-lock.ts +2 -2
- package/tools/generate-clients.ts +12 -13
- package/types/node.d.ts +3 -1
- package/commands/autocomplete.tsx +0 -180
- package/commands/doctor.tsx +0 -183
- package/commands/geocode.tsx +0 -567
- package/commands/openapi.tsx +0 -43
- package/commands/reverse.tsx +0 -187
- package/out/commands/autocomplete.d.ts +0 -58
- package/out/commands/autocomplete.d.ts.map +0 -1
- package/out/commands/autocomplete.js +0 -132
- package/out/commands/autocomplete.js.map +0 -1
- package/out/commands/doctor.d.ts +0 -48
- package/out/commands/doctor.d.ts.map +0 -1
- package/out/commands/doctor.js +0 -145
- package/out/commands/doctor.js.map +0 -1
- package/out/commands/geocode.d.ts +0 -100
- package/out/commands/geocode.d.ts.map +0 -1
- package/out/commands/geocode.js +0 -445
- package/out/commands/geocode.js.map +0 -1
- package/out/commands/openapi.d.ts +0 -27
- package/out/commands/openapi.d.ts.map +0 -1
- package/out/commands/openapi.js +0 -37
- package/out/commands/openapi.js.map +0 -1
- package/out/commands/reverse.d.ts +0 -32
- package/out/commands/reverse.d.ts.map +0 -1
- package/out/commands/reverse.js +0 -146
- package/out/commands/reverse.js.map +0 -1
package/README.md
CHANGED
|
@@ -147,8 +147,6 @@ const parse = createRuntimePipeline({
|
|
|
147
147
|
await parse("350 5TH AVE, NEW YORK, NY 10118", {
|
|
148
148
|
locale: "en-US", // assert a locale instead of detecting it
|
|
149
149
|
hardPlaceCountry: true, // confine resolution to a confidently-detected country (default: on)
|
|
150
|
-
jointReconcile: false, // beam-search decode instead of argmax (default: off)
|
|
151
|
-
arbitrate: false, // union the neural parse with the legacy rule parse (default: off)
|
|
152
150
|
})
|
|
153
151
|
```
|
|
154
152
|
|
|
@@ -166,13 +164,29 @@ mailwoman parse "350 5th Ave, New York, NY 10118" --resolve --resolve-db ./wof.s
|
|
|
166
164
|
mailwoman geocode "1600 Amphitheatre Pkwy, Mountain View, CA 94043"
|
|
167
165
|
```
|
|
168
166
|
|
|
169
|
-
Programmatically, build a `
|
|
167
|
+
Programmatically, build a `WOFSQLitePlaceLookup` backend (from
|
|
170
168
|
`@mailwoman/resolver-wof-sqlite`), pass it to `createWOFResolver` (from `@mailwoman/resolver`),
|
|
171
169
|
and hand the resolver to `createRuntimePipeline({ classifier, resolver })`. The resolved
|
|
172
170
|
`result.tree` roots then carry a `wof:id` and coordinate. See
|
|
173
|
-
[Getting started → Adding resolution](https://mailwoman.
|
|
171
|
+
[Getting started → Adding resolution](https://mailwoman.ai/docs/developers/get-started/install-and-first-parse)
|
|
174
172
|
for the worked example.
|
|
175
173
|
|
|
174
|
+
### Which place the coordinate comes from
|
|
175
|
+
|
|
176
|
+
When nothing finer than an administrative centroid resolved, result assembly walks a ladder and takes the first rung that has a coordinate. That ladder is **not fixed** — it leads with the postcode when the postcode is the finer thing, and with the locality otherwise:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
GB unit / NL PC6 / CA urban LDU → postcode, locality, dependent_locality, region, country
|
|
180
|
+
Germany → postcode, locality, dependent_locality, region, country
|
|
181
|
+
everything else → locality, dependent_locality, postcode, region, country
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Both routes to the first arm live in `@mailwoman/codex` and are read by `@mailwoman/resolver`'s `adminLadderForNodes`. The second arm is the #945 convention, adopted for France where one _code postal_ often spans several communes.
|
|
185
|
+
|
|
186
|
+
The distinction is a fact about a country's **administrative** geography rather than its postal system, and code length does not predict it — France and Germany are both five digits and disagree. Germany's Gemeinden are large enough that Berlin is a single locality, so its PLZ is finer by a wide margin: on 2,997 OpenAddresses rows the coordinate p50 goes 5.84 km → 1.24 km, better on every percentile including p99, and the within-5-km population doubles.
|
|
187
|
+
|
|
188
|
+
Membership is earned by a full-panel measurement, never by a shape that looks tight. See [`@mailwoman/codex`](../codex) for the tier table and what each member measured.
|
|
189
|
+
|
|
176
190
|
## Architecture
|
|
177
191
|
|
|
178
192
|
Mailwoman's runtime pipeline is a staged coordinator:
|
|
@@ -209,8 +223,8 @@ package is the umbrella that wires them together as a single `npm install`.
|
|
|
209
223
|
|
|
210
224
|
## Related
|
|
211
225
|
|
|
212
|
-
- [Documentation & blog](https://mailwoman.
|
|
213
|
-
- [What Mailwoman Is](https://mailwoman.
|
|
226
|
+
- [Documentation & blog](https://mailwoman.ai)
|
|
227
|
+
- [What Mailwoman Is](https://mailwoman.ai/docs/developers/get-started/what-mailwoman-is)
|
|
214
228
|
- [GitHub](https://github.com/sister-software/mailwoman)
|
|
215
229
|
|
|
216
230
|
## License
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Admin-coherence verdicts (#1717 stage 1) — after a geocode resolves, compare the PARSED admin
|
|
7
|
+
* qualifiers (`region`, `country`) against what the winning candidate's resolved ancestry actually
|
|
8
|
+
* says, and report a per-component verdict. FLAG-ONLY: nothing reads these verdicts to rank,
|
|
9
|
+
* re-pick, or gate — they exist so a board run can count how often the resolver's answer ignores a
|
|
10
|
+
* qualifier the parse got right (`Weimar, Thüringen` → Weimar TX), and how often the winner
|
|
11
|
+
* carries no ancestry to check at all (the `unverifiable` count).
|
|
12
|
+
*
|
|
13
|
+
* Per-component verdicts, never one scalar (the Google-confirmation-levels / USPS-DPV pattern):
|
|
14
|
+
*
|
|
15
|
+
* - `confirmed` — the qualifier matches a winner-ancestry node of its class under the shared
|
|
16
|
+
* name fold ({@link normalizeLocalityForKey}, the same fold candidate.db's `name_key` is built
|
|
17
|
+
* with — build side and check side agree by construction), or the winner IS that qualifier's
|
|
18
|
+
* own resolution (a region-tagged winner confirms the region qualifier by identity —
|
|
19
|
+
* containment degenerates to self).
|
|
20
|
+
* - `contradicted` — the winner's ancestry HAS a node of that class and none of them fold-match
|
|
21
|
+
* the parsed value.
|
|
22
|
+
* - `unstated` — the parse produced no such qualifier. The common case, and not a problem: most
|
|
23
|
+
* queries simply don't name a region or country.
|
|
24
|
+
* - `unverifiable` — the parse produced the qualifier but the winner carries NO ancestry of that
|
|
25
|
+
* class to check against. Report it faithfully; folding it into either decided verdict would
|
|
26
|
+
* hide exactly the gap #1717 wants measured.
|
|
27
|
+
*
|
|
28
|
+
* STATED BOUNDS (v1 is fold-equality only — do not read more into a verdict than this):
|
|
29
|
+
*
|
|
30
|
+
* - Cross-language variant forms are NOT bridged: `Thüringen` folds to `thuringen`, the stored
|
|
31
|
+
* exonym `Thuringia` to `thuringia`, so a variant-form match the gazetteer could vouch for
|
|
32
|
+
* still reads `contradicted`. Bridging it needs a candidate.db alias probe, which would pull
|
|
33
|
+
* the SQLite lookup machinery into this pure module — deliberately skipped.
|
|
34
|
+
* - The only normalizers consulted beyond the fold are the codex tables, because they are pure
|
|
35
|
+
* and already in-house: {@link matchCountry} (surface form / alpha-2 / alpha-3 → country) and
|
|
36
|
+
* {@link matchSubdivision} (US state + CA province code ↔ name). So `IL` confirms against
|
|
37
|
+
* `Illinois` and `Deutschland` against a DE winner, but an uncurated endonym (`Alemania`)
|
|
38
|
+
* against a DE winner reads `contradicted` — the module never silently over-claims a match it
|
|
39
|
+
* cannot derive.
|
|
40
|
+
* - The region verdict additionally carries the MISLABEL BRIDGE: a region slot holding a COUNTRY
|
|
41
|
+
* name ("Batumi, Georgia" parses region="Georgia") confirms against the winner's country-class
|
|
42
|
+
* evidence, because containment holds and `contradicted` would misdescribe the geography. It
|
|
43
|
+
* runs after the region band, is monotone (`contradicted`/`unverifiable` → `confirmed` is the
|
|
44
|
+
* only movement it can cause), and inherits the pure-codex bound above — parsed "Russia"
|
|
45
|
+
* against an RU winner still reads `contradicted`, because codex holds only "Russian
|
|
46
|
+
* Federation" for RU and the module never over-claims.
|
|
47
|
+
*
|
|
48
|
+
* The winner's checkable ancestry arrives as the resolver's `metadata.ancestors` stamp (#404 —
|
|
49
|
+
* the geocode path opts in by default, and both backends serve it when their artifact carries an
|
|
50
|
+
* ancestors table: the FTS shard's `ancestors`, candidate.db's `candidate_ancestor` sidecar),
|
|
51
|
+
* while country-class ancestry is nearly always available via the `resolver_country` stamp.
|
|
52
|
+
* `unverifiable` remains the faithful verdict wherever the stamp is absent — an artifact
|
|
53
|
+
* predating the sidecar, a shard-fed winner with no recorded ancestry, or a caller that opted
|
|
54
|
+
* out.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
import { countrySurfaceForms, ISO2_TO_NAME, matchCountry } from "@mailwoman/codex/country"
|
|
58
|
+
import { REGION_CLASS_PLACETYPES, regionKeys } from "@mailwoman/resolver-wof-sqlite/region-keys"
|
|
59
|
+
import { normalizeLocalityForKey } from "@mailwoman/resolver-wof-sqlite/street-normalize"
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* One admin-coherence verdict. See the module docstring for the exact meaning of each — in particular, `unverifiable`
|
|
63
|
+
* is an absence-of-evidence claim about the WINNER, never about the parse.
|
|
64
|
+
*/
|
|
65
|
+
type AdminCoherenceVerdict = "confirmed" | "contradicted" | "unstated" | "unverifiable"
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The per-component verdicts. Both members are always present when the report exists (the `intent_markers` discipline:
|
|
69
|
+
* state the empty case — `unstated` IS the explicit "no qualifier" claim, so an optional member would be a second way
|
|
70
|
+
* to say the same thing). The report as a whole is what's optional: absent means the geocode resolved no winner to
|
|
71
|
+
* check against.
|
|
72
|
+
*/
|
|
73
|
+
export interface AdminCoherenceReport {
|
|
74
|
+
region: AdminCoherenceVerdict
|
|
75
|
+
country: AdminCoherenceVerdict
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The parsed admin qualifiers — the raw spans off the address tree's `region` / `country` nodes (the parse view, not
|
|
80
|
+
* the resolved view). Empty / whitespace-only reads as absent.
|
|
81
|
+
*/
|
|
82
|
+
export interface ParsedAdminQualifiers {
|
|
83
|
+
region?: string | undefined
|
|
84
|
+
country?: string | undefined
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* One link of the winner's containment lineage, as the resolver stamped it (`metadata.ancestors`, the #404 opt-in) — a
|
|
89
|
+
* structural slice of `@mailwoman/core`'s `Ancestor`.
|
|
90
|
+
*/
|
|
91
|
+
interface AdminAncestor {
|
|
92
|
+
placetype: string
|
|
93
|
+
name: string
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The winning candidate, reduced to what the check reads: its own component tag (for the self-confirmation case), the
|
|
98
|
+
* resolver-stamped ISO 3166-1 alpha-2 (`resolver_country` — the one piece of country-class ancestry the candidate
|
|
99
|
+
* backend always carries), and the stamped ancestor chain when a backend supplied one.
|
|
100
|
+
*/
|
|
101
|
+
export interface AdminCoherenceWinner {
|
|
102
|
+
tag: string
|
|
103
|
+
countryCode?: string | undefined
|
|
104
|
+
ancestry?: readonly AdminAncestor[] | undefined
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Fold both sides of every name comparison through the shared candidate.db `name_key` normalizer — one function, both
|
|
109
|
+
* sides, so the check can never disagree with the index it's checking against.
|
|
110
|
+
*
|
|
111
|
+
* The region-side expansion ({@link regionKeys}) and the region band ({@link REGION_CLASS_PLACETYPES}) moved DOWN to
|
|
112
|
+
* `@mailwoman/resolver-wof-sqlite/region-keys` when the #1717 stage-2 containment re-rank became their second consumer
|
|
113
|
+
* — the dependency points that way, and the #861 rule wants one function, not a mirrored copy.
|
|
114
|
+
*/
|
|
115
|
+
function foldKey(name: string): string {
|
|
116
|
+
return normalizeLocalityForKey(name)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The comparable keys a country-class value expands to: its own fold, plus — when {@link matchCountry} recognizes it —
|
|
121
|
+
* an `iso2:` channel key and the folds of the canonical name and curated surface forms, so `Deutschland`, `DEU`, `DE`
|
|
122
|
+
* and `Germany` all meet in one key set regardless of which side spelled which.
|
|
123
|
+
*/
|
|
124
|
+
function countryKeys(value: string): Set<string> {
|
|
125
|
+
const keys = new Set([foldKey(value)])
|
|
126
|
+
const match = matchCountry(value)
|
|
127
|
+
|
|
128
|
+
if (match) {
|
|
129
|
+
keys.add(`iso2:${match.iso2}`)
|
|
130
|
+
|
|
131
|
+
if (match.canonical) {
|
|
132
|
+
keys.add(foldKey(match.canonical))
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
for (const form of countrySurfaceForms(match.iso2)) {
|
|
136
|
+
keys.add(foldKey(form))
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return keys
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function intersects(a: ReadonlySet<string>, b: ReadonlySet<string>): boolean {
|
|
144
|
+
for (const key of a) {
|
|
145
|
+
if (b.has(key)) return true
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return false
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The winner's COUNTRY-class evidence keys: the resolver-stamped alpha-2 expanded through the codex tables into every
|
|
153
|
+
* spelling the check can vouch for, plus any country-placetype ancestors. One assembly, two consumers — the country
|
|
154
|
+
* verdict compares against it, and the region verdict's mislabel bridge (below) does too, so the two verdicts can never
|
|
155
|
+
* disagree about what counts as country-class evidence.
|
|
156
|
+
*/
|
|
157
|
+
function winnerCountryKeys(winner: AdminCoherenceWinner): Set<string> {
|
|
158
|
+
const winnerKeys = new Set<string>()
|
|
159
|
+
const iso = winner.countryCode?.trim().toUpperCase() || undefined
|
|
160
|
+
|
|
161
|
+
if (iso) {
|
|
162
|
+
winnerKeys.add(`iso2:${iso}`)
|
|
163
|
+
winnerKeys.add(foldKey(iso))
|
|
164
|
+
const canonical = ISO2_TO_NAME.get(iso)
|
|
165
|
+
|
|
166
|
+
if (canonical) {
|
|
167
|
+
winnerKeys.add(foldKey(canonical))
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
for (const form of countrySurfaceForms(iso)) {
|
|
171
|
+
winnerKeys.add(foldKey(form))
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
for (const ancestor of winner.ancestry ?? []) {
|
|
176
|
+
if (ancestor.placetype !== "country") continue
|
|
177
|
+
|
|
178
|
+
for (const key of countryKeys(ancestor.name)) {
|
|
179
|
+
winnerKeys.add(key)
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return winnerKeys
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function regionVerdict(parsedRegion: string | undefined, winner: AdminCoherenceWinner): AdminCoherenceVerdict {
|
|
187
|
+
const parsed = parsedRegion?.trim()
|
|
188
|
+
|
|
189
|
+
if (!parsed) return "unstated"
|
|
190
|
+
|
|
191
|
+
// The winner IS a region resolution — the qualifier is the thing that resolved, so containment
|
|
192
|
+
// degenerates to identity. The resolver's own binding (alias-aware, unlike the fold) is the
|
|
193
|
+
// match evidence here; re-checking it under fold-equality would misread every alias hit as a
|
|
194
|
+
// contradiction.
|
|
195
|
+
if (winner.tag === "region") return "confirmed"
|
|
196
|
+
|
|
197
|
+
const regionAncestors = (winner.ancestry ?? []).filter((a) => REGION_CLASS_PLACETYPES.has(a.placetype))
|
|
198
|
+
const iso = winner.countryCode?.trim().toUpperCase() || undefined
|
|
199
|
+
const parsedKeys = regionKeys(parsed, iso)
|
|
200
|
+
|
|
201
|
+
for (const ancestor of regionAncestors) {
|
|
202
|
+
if (intersects(parsedKeys, regionKeys(ancestor.name, iso))) return "confirmed"
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// The mislabel bridge: the region SLOT sometimes holds a COUNTRY name — "Moscow, Russia" parses
|
|
206
|
+
// region="Russia", "Batumi, Georgia" parses region="Georgia" (the shape the flag's own first
|
|
207
|
+
// triage counted at ~4 of 16 contradictions). Containment still holds when the winner's
|
|
208
|
+
// country-class evidence matches the qualifier, so `contradicted` would be the wrong claim about
|
|
209
|
+
// the geography. Checked AFTER the region band (a genuine region match never depends on it) and
|
|
210
|
+
// monotone by construction: it can only move `contradicted`/`unverifiable` → `confirmed`.
|
|
211
|
+
if (intersects(countryKeys(parsed), winnerCountryKeys(winner))) return "confirmed"
|
|
212
|
+
|
|
213
|
+
return regionAncestors.length ? "contradicted" : "unverifiable"
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function countryVerdict(parsedCountry: string | undefined, winner: AdminCoherenceWinner): AdminCoherenceVerdict {
|
|
217
|
+
const parsed = parsedCountry?.trim()
|
|
218
|
+
|
|
219
|
+
if (!parsed) return "unstated"
|
|
220
|
+
|
|
221
|
+
if (winner.tag === "country") return "confirmed"
|
|
222
|
+
|
|
223
|
+
const winnerKeys = winnerCountryKeys(winner)
|
|
224
|
+
|
|
225
|
+
if (!winnerKeys.size) return "unverifiable"
|
|
226
|
+
|
|
227
|
+
return intersects(countryKeys(parsed), winnerKeys) ? "confirmed" : "contradicted"
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Assess the parsed admin qualifiers against the winning candidate. Pure — no I/O, no lookup, no side effects; call it
|
|
232
|
+
* once at result assembly, only when a winner exists (no winner → no report, absence meaning "nothing resolved to check
|
|
233
|
+
* against").
|
|
234
|
+
*/
|
|
235
|
+
export function assessAdminCoherence(
|
|
236
|
+
parsed: ParsedAdminQualifiers,
|
|
237
|
+
winner: AdminCoherenceWinner
|
|
238
|
+
): AdminCoherenceReport {
|
|
239
|
+
return {
|
|
240
|
+
region: regionVerdict(parsed.region, winner),
|
|
241
|
+
country: countryVerdict(parsed.country, winner),
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* A resolved-tree node slice the assembly adapter reads — structurally satisfied by `@mailwoman/core`'s `AddressNode`,
|
|
247
|
+
* declared locally so the pure module carries no decoder import.
|
|
248
|
+
*/
|
|
249
|
+
export interface AdminCoherenceSourceNode {
|
|
250
|
+
tag: string
|
|
251
|
+
value: string
|
|
252
|
+
metadata?: Record<string, unknown> | undefined
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* The assembly-point adapter: derive the parsed qualifiers (the `region` / `country` node spans — the parse view) and
|
|
257
|
+
* the winner's checkable ancestry (the `resolver_country` stamp + any `metadata.ancestors` chain) off the resolved
|
|
258
|
+
* tree's nodes, and return a spreadable result fragment. `winner` is the admin-ladder pick; `fallbackWinner` is the
|
|
259
|
+
* primary resolved node the street-backed tiers report instead (the resolution context the coordinate was scoped by).
|
|
260
|
+
* No winner at all → an empty fragment: the `admin_coherence` field stays ABSENT, which is a different claim from
|
|
261
|
+
* `unverifiable` (nothing resolved, so there was no candidate to check).
|
|
262
|
+
*/
|
|
263
|
+
export function adminCoherenceField(
|
|
264
|
+
nodes: readonly AdminCoherenceSourceNode[],
|
|
265
|
+
winner: AdminCoherenceSourceNode | undefined,
|
|
266
|
+
fallbackWinner: AdminCoherenceSourceNode | undefined
|
|
267
|
+
): { admin_coherence?: AdminCoherenceReport } {
|
|
268
|
+
const picked = winner ?? fallbackWinner
|
|
269
|
+
|
|
270
|
+
if (!picked) return {}
|
|
271
|
+
|
|
272
|
+
const report = assessAdminCoherence(
|
|
273
|
+
{
|
|
274
|
+
region: nodes.find((n) => n.tag === "region")?.value?.trim() || undefined,
|
|
275
|
+
country: nodes.find((n) => n.tag === "country")?.value?.trim() || undefined,
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
tag: picked.tag,
|
|
279
|
+
countryCode: (picked.metadata?.["resolver_country"] as string | undefined)?.trim() || undefined,
|
|
280
|
+
// The resolver's #404 stamp — present when the geocode path opted in AND the backend's
|
|
281
|
+
// artifact carries an ancestors table; its absence is what the verdicts report as
|
|
282
|
+
// `unverifiable`.
|
|
283
|
+
ancestry: picked.metadata?.["ancestors"] as readonly AdminAncestor[] | undefined,
|
|
284
|
+
}
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
return { admin_coherence: report }
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* A node tree shaped like the decoder's `AddressNode` — structural rather than imported, so this module stays free of
|
|
292
|
+
* the decoder dependency.
|
|
293
|
+
*/
|
|
294
|
+
export interface AdminCoherenceTreeNode extends AdminCoherenceSourceNode {
|
|
295
|
+
children: readonly AdminCoherenceTreeNode[]
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Coherence for a fork-to-entity answer (#1724): a forked answer carries a verdict like any other resolved answer --
|
|
300
|
+
* absence means "nothing resolved to check", and something did. The entity offers a country and no ancestor chain, so a
|
|
301
|
+
* stated region grades `unverifiable` rather than going silently unchecked.
|
|
302
|
+
*/
|
|
303
|
+
export function forkedEntityCoherenceField(
|
|
304
|
+
roots: readonly AdminCoherenceTreeNode[],
|
|
305
|
+
entity: { name: string; country: string }
|
|
306
|
+
): { admin_coherence?: AdminCoherenceReport } {
|
|
307
|
+
const nodes: AdminCoherenceSourceNode[] = []
|
|
308
|
+
const stack: AdminCoherenceTreeNode[] = [...roots]
|
|
309
|
+
|
|
310
|
+
while (stack.length) {
|
|
311
|
+
const n = stack.pop()!
|
|
312
|
+
|
|
313
|
+
nodes.push({ tag: n.tag, value: n.value, metadata: n.metadata })
|
|
314
|
+
stack.push(...n.children)
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
return adminCoherenceField(
|
|
318
|
+
nodes,
|
|
319
|
+
{ tag: "venue", value: entity.name, metadata: { resolver_country: entity.country } },
|
|
320
|
+
undefined
|
|
321
|
+
)
|
|
322
|
+
}
|
package/api-engine.ts
CHANGED
|
@@ -28,25 +28,26 @@
|
|
|
28
28
|
import { existsSync, readdirSync, readFileSync } from "node:fs"
|
|
29
29
|
import { fileURLToPath } from "node:url"
|
|
30
30
|
|
|
31
|
-
import type {
|
|
31
|
+
import type {
|
|
32
|
+
BatchResultEntry,
|
|
33
|
+
GeocodeCallback,
|
|
34
|
+
GeocodeOutcome,
|
|
35
|
+
HealthData,
|
|
36
|
+
MailwomanAPIEngine,
|
|
37
|
+
ResolveTreeOutcome,
|
|
38
|
+
} from "@mailwoman/api"
|
|
32
39
|
import { recordTimed } from "@mailwoman/api-kit"
|
|
33
40
|
import { decodeAsTuples, decodeAsXML } from "@mailwoman/core"
|
|
34
41
|
import type { AddressTree } from "@mailwoman/core/decoder"
|
|
35
42
|
import { $public } from "@mailwoman/core/env"
|
|
36
|
-
import { tryParsingJSON } from "@mailwoman/core/objects"
|
|
43
|
+
import { isPresent, tryParsingJSON } from "@mailwoman/core/objects"
|
|
37
44
|
import { deriveInputMode } from "@mailwoman/core/pipeline"
|
|
38
45
|
import { classifyKindSync } from "@mailwoman/kind-classifier"
|
|
39
46
|
import { computeQueryShape } from "@mailwoman/query-shape"
|
|
40
47
|
import { createWOFResolver, type Resolver, type ResolveOpts } from "@mailwoman/resolver"
|
|
41
48
|
|
|
42
49
|
import { readReleaseManifest } from "./data-release.ts"
|
|
43
|
-
import {
|
|
44
|
-
geocodeAddress,
|
|
45
|
-
type GeocodeClassifier,
|
|
46
|
-
type GeocodeResult,
|
|
47
|
-
regionSlugFromTree,
|
|
48
|
-
ShardProvider,
|
|
49
|
-
} from "./geocode-core.ts"
|
|
50
|
+
import { geocodeAddress, type GeocodeClassifier, regionSlugFromTree, ShardProvider } from "./geocode-core.ts"
|
|
50
51
|
import { INTERP_RADIUS_CALIBRATION, interpCalibrationForRegion } from "./interp-calibration.ts"
|
|
51
52
|
import {
|
|
52
53
|
buildNoGazetteerMessage,
|
|
@@ -81,7 +82,7 @@ function wofPaths(): string[] {
|
|
|
81
82
|
return env
|
|
82
83
|
.split(",")
|
|
83
84
|
.map((p) => p.trim())
|
|
84
|
-
.filter(
|
|
85
|
+
.filter(isPresent)
|
|
85
86
|
|
|
86
87
|
return wofShardPaths().filter((p) => existsSync(p))
|
|
87
88
|
}
|
|
@@ -120,7 +121,7 @@ function readModelCard(): Record<string, unknown> | null {
|
|
|
120
121
|
/* package not resolvable from here — fall through */
|
|
121
122
|
}
|
|
122
123
|
|
|
123
|
-
candidates.push("neural-weights-en-us/model-card.json")
|
|
124
|
+
candidates.push("packages/neural-weights-en-us/model-card.json")
|
|
124
125
|
|
|
125
126
|
for (const p of candidates) {
|
|
126
127
|
try {
|
|
@@ -188,7 +189,7 @@ function oneGeocode(
|
|
|
188
189
|
deps: GeocodeDepsBundle,
|
|
189
190
|
address: string,
|
|
190
191
|
inputMode?: "fragmented" | "formatted"
|
|
191
|
-
): Promise<
|
|
192
|
+
): Promise<GeocodeOutcome> {
|
|
192
193
|
return geocodeAddress(address, {
|
|
193
194
|
classifier: deps.classifier,
|
|
194
195
|
resolver: deps.resolver,
|
|
@@ -295,11 +296,11 @@ export async function createServeEngine(): Promise<ServeEngine> {
|
|
|
295
296
|
// Candidate backend → country-agnostic default (demo's global, population-first behavior); a per-request `country`
|
|
296
297
|
// still scopes. FTS backend keeps the US default. (#170) A candidate DB alone (no WOF admin shard) is a valid boot
|
|
297
298
|
// configuration — `createResolverBackend` prefers it over `wofPaths` — so the preflight gate below checks BOTH,
|
|
298
|
-
// mirroring the drop-ins' `!
|
|
299
|
+
// mirroring the drop-ins' `!candidateDB && wofPaths.length === 0` gate rather than `GeocodeRouter`'s WOF-only check.
|
|
299
300
|
// This gate governs geocode/batch/resolveTree/reload ONLY — `parse` is already wired above and unaffected.
|
|
300
|
-
const
|
|
301
|
+
const candidateDB = resolveCandidateDBPath()
|
|
301
302
|
|
|
302
|
-
if (!paths.length && !
|
|
303
|
+
if (!paths.length && !candidateDB) {
|
|
303
304
|
console.error("createServeEngine: no WOF DBs found — set MAILWOMAN_WOF_DB or MAILWOMAN_CANDIDATE_DB")
|
|
304
305
|
|
|
305
306
|
return { engine: { parse, health }, preflight: { ok: false, message: buildPreflightMessage() } }
|
|
@@ -308,13 +309,12 @@ export async function createServeEngine(): Promise<ServeEngine> {
|
|
|
308
309
|
const backend = createResolverBackend(resolverMod, { wofPaths: paths })
|
|
309
310
|
const resolver = createWOFResolver(backend)
|
|
310
311
|
const shards = new ShardProvider(resolverMod, DATA_ROOT)
|
|
311
|
-
const deps: GeocodeDepsBundle = { classifier, resolver, shards, defaultCountry:
|
|
312
|
+
const deps: GeocodeDepsBundle = { classifier, resolver, shards, defaultCountry: candidateDB ? undefined : "US" }
|
|
312
313
|
|
|
313
314
|
// Route records the whole-call metric already (`@mailwoman/api`'s `routes.ts`) — the engine records nothing extra
|
|
314
315
|
// here. Ported from `GeocodeRouter`'s `singleHandler`. The cast mirrors `@mailwoman/api/routes.ts`'s established
|
|
315
316
|
// "documented wire shape looser than the domain type" idiom — `GeocodeOutcome` is a deliberately loose passthrough.
|
|
316
|
-
const geocode:
|
|
317
|
-
(await oneGeocode(deps, address, opts?.inputMode)) as unknown as GeocodeOutcome
|
|
317
|
+
const geocode: GeocodeCallback = async (address, opts) => oneGeocode(deps, address, opts?.inputMode)
|
|
318
318
|
|
|
319
319
|
// Sequential loop — results land in input order; a thrown row is isolated to its own
|
|
320
320
|
// `{ input, error }` slot. Rows are trimmed here (the route passes the raw validated array through).
|
|
@@ -329,7 +329,7 @@ export async function createServeEngine(): Promise<ServeEngine> {
|
|
|
329
329
|
// Decision A endpoint default: batch rows are the record register.
|
|
330
330
|
const inputMode = opts?.inputMode ?? "formatted"
|
|
331
331
|
const inputs = addresses.map((a) => a.trim())
|
|
332
|
-
const results:
|
|
332
|
+
const results: BatchResultEntry[] = new Array<BatchResultEntry>(inputs.length)
|
|
333
333
|
|
|
334
334
|
for (let i = 0; i < inputs.length; i++) {
|
|
335
335
|
const input = inputs[i]!
|
|
@@ -338,7 +338,7 @@ export async function createServeEngine(): Promise<ServeEngine> {
|
|
|
338
338
|
try {
|
|
339
339
|
const result = await oneGeocode(deps, input, inputMode)
|
|
340
340
|
recordTimed(performance.now() - t0, result.resolution_tier)
|
|
341
|
-
results[i] = result
|
|
341
|
+
results[i] = result
|
|
342
342
|
} catch (error) {
|
|
343
343
|
recordTimed(performance.now() - t0, "error")
|
|
344
344
|
results[i] = { input, error: error instanceof Error ? error.message : String(error) }
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Framework-free FST autocomplete shared by CLI and library-facing adapters.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { existsSync, readFileSync } from "node:fs"
|
|
10
|
+
|
|
11
|
+
import { $public } from "@mailwoman/core/env"
|
|
12
|
+
import { CommandError } from "@mailwoman/core/scripting/command"
|
|
13
|
+
import { dataRootPath } from "@mailwoman/core/utils"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the FST artifact from an explicit flag, environment, or the application data directory.
|
|
17
|
+
*
|
|
18
|
+
* The filename is LOWERCASE on both halves of the locale tag, because that is what the builder writes
|
|
19
|
+
* (`gazetteer-pipeline/fst.ts`'s artifact list). A `fst-en-US.bin` default resolves to nothing on every machine, and
|
|
20
|
+
* the command reports it as a missing artifact rather than as a name it got wrong.
|
|
21
|
+
*/
|
|
22
|
+
export function resolveFSTPath(explicitPath?: string): string {
|
|
23
|
+
return explicitPath ?? $public.MAILWOMAN_FST_BIN ?? dataRootPath("wof", "fst-per-locale", "fst-en-us.bin")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* One ranked FST completion.
|
|
28
|
+
*/
|
|
29
|
+
export interface AutocompleteEntry {
|
|
30
|
+
name: string
|
|
31
|
+
placetype: string
|
|
32
|
+
wofID: number
|
|
33
|
+
referential: number
|
|
34
|
+
encyclopedic?: number
|
|
35
|
+
completionTokens: string[]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Load an FST artifact and return ranked prefix completions.
|
|
40
|
+
*/
|
|
41
|
+
export async function runAutocomplete(
|
|
42
|
+
prefix: string,
|
|
43
|
+
opts: { fstPath: string; limit?: number }
|
|
44
|
+
): Promise<AutocompleteEntry[]> {
|
|
45
|
+
if (!existsSync(opts.fstPath)) {
|
|
46
|
+
throw new CommandError(
|
|
47
|
+
`FST binary not found at ${opts.fstPath}.\n` +
|
|
48
|
+
"Pass --fst <path>, set $MAILWOMAN_FST_BIN, or build it with `mailwoman gazetteer build fst`."
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let buffer: Buffer
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
buffer = readFileSync(opts.fstPath)
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw new CommandError(`Failed to read FST binary at ${opts.fstPath}`, { cause: error })
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const [{ deserializeFST }, { autocomplete }] = await Promise.all([
|
|
61
|
+
import("@mailwoman/resolver-wof-sqlite/fst-serialize"),
|
|
62
|
+
import("@mailwoman/resolver-wof-sqlite/fst-autocomplete"),
|
|
63
|
+
])
|
|
64
|
+
|
|
65
|
+
let matcher
|
|
66
|
+
|
|
67
|
+
try {
|
|
68
|
+
matcher = deserializeFST(buffer)
|
|
69
|
+
} catch (error) {
|
|
70
|
+
throw new CommandError(`Malformed FST binary at ${opts.fstPath}`, { cause: error })
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return autocomplete(matcher, prefix, { maxSuggestions: opts.limit ?? 10 }).suggestions.map((suggestion) => ({
|
|
74
|
+
name: suggestion.name,
|
|
75
|
+
placetype: suggestion.placetype,
|
|
76
|
+
wofID: suggestion.wofID,
|
|
77
|
+
referential: suggestion.referential,
|
|
78
|
+
...(suggestion.encyclopedic === undefined ? {} : { encyclopedic: suggestion.encyclopedic }),
|
|
79
|
+
completionTokens: suggestion.completionTokens,
|
|
80
|
+
}))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Render ranked completions for a terminal.
|
|
85
|
+
*/
|
|
86
|
+
export function formatAutocomplete(entries: readonly AutocompleteEntry[]): string {
|
|
87
|
+
if (!entries.length) return "(no completions)"
|
|
88
|
+
|
|
89
|
+
return entries
|
|
90
|
+
.map((entry, index) => {
|
|
91
|
+
const completion = entry.completionTokens.length ? ` [+${entry.completionTokens.join(" ")}]` : ""
|
|
92
|
+
const encyclopedic = entry.encyclopedic === undefined ? "" : `, enc:${entry.encyclopedic.toFixed(4)}`
|
|
93
|
+
|
|
94
|
+
return `${String(index + 1).padStart(2)}. ${entry.name}${completion} (${entry.placetype}, wof:${entry.wofID}, ref:${entry.referential.toFixed(4)}${encyclopedic})`
|
|
95
|
+
})
|
|
96
|
+
.join("\n")
|
|
97
|
+
}
|
package/cli-kit/dropin.ts
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* three drop-ins already declare `mailwoman` as a dependency, so landing the whole thing here adds
|
|
19
19
|
* no dependency to anyone.
|
|
20
20
|
*
|
|
21
|
-
* WHY IT IS NOT IN `cli-kit/index.ts`: that barrel is the
|
|
21
|
+
* WHY IT IS NOT IN `cli-kit/index.ts`: that barrel is the Ink toolkit for
|
|
22
22
|
* `mailwoman/commands/*` and imports `ink` + `react`. The drop-ins are plain `parseArgs` scripts
|
|
23
23
|
* that render no UI, and `npx @mailwoman/libpostal serve` should not pay for a TUI runtime to
|
|
24
24
|
* start an HTTP server. Hence a standalone module with its own `mailwoman/cli-kit/dropin`
|
|
@@ -99,7 +99,7 @@ export interface GazetteerPaths {
|
|
|
99
99
|
/**
|
|
100
100
|
* The candidate gazetteer (worldwide resolution), when one was found.
|
|
101
101
|
*/
|
|
102
|
-
|
|
102
|
+
candidateDB: string | undefined
|
|
103
103
|
/**
|
|
104
104
|
* The WOF admin FTS shards that exist on disk.
|
|
105
105
|
*/
|
|
@@ -127,13 +127,13 @@ export function resolveGazetteerOrExit(candidateDBFlag: string | undefined): Gaz
|
|
|
127
127
|
// Candidate gazetteer = worldwide resolution (population-first ranking + global coverage + the FTS5-trigram typo
|
|
128
128
|
// fallback). --candidate-db, else $MAILWOMAN_CANDIDATE_DB, else the `<data-root>/wof/candidate.db` convention
|
|
129
129
|
// path. Absent → the admin FTS shards.
|
|
130
|
-
const
|
|
130
|
+
const candidateDB = resolveCandidateDBPath(candidateDBFlag)
|
|
131
131
|
|
|
132
|
-
if (!
|
|
132
|
+
if (!candidateDB && !wofPaths.length) {
|
|
133
133
|
fail(buildNoGazetteerMessage({ dataRoot: mailwomanDataRoot(), docsPath: GAZETTEER_DOCS_PATH }))
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
return { adminDBPath: wofPaths[0],
|
|
136
|
+
return { adminDBPath: wofPaths[0], candidateDB, wofPaths }
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
/**
|
|
@@ -147,11 +147,11 @@ export function corsBannerLine(cors: boolean): string {
|
|
|
147
147
|
* The `wof:` + `resolver:` lines of a geocoding drop-in's startup banner — which gazetteer the process actually opened,
|
|
148
148
|
* and (when it fell back to admin-only) the flag that widens it.
|
|
149
149
|
*/
|
|
150
|
-
export function gazetteerBannerLines({ adminDBPath,
|
|
150
|
+
export function gazetteerBannerLines({ adminDBPath, candidateDB }: GazetteerPaths): string[] {
|
|
151
151
|
return [
|
|
152
152
|
` wof: ${adminDBPath ?? "(none found — set MAILWOMAN_WOF_DB)"}`,
|
|
153
|
-
|
|
154
|
-
? ` resolver: candidate gazetteer (worldwide) — ${
|
|
153
|
+
candidateDB
|
|
154
|
+
? ` resolver: candidate gazetteer (worldwide) — ${candidateDB}`
|
|
155
155
|
: ` resolver: admin-only (US-optimized) — point --candidate-db / $MAILWOMAN_CANDIDATE_DB at a candidate gazetteer for worldwide`,
|
|
156
156
|
]
|
|
157
157
|
}
|
package/cli-kit/index.ts
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface CommandArgumentMetadata {
|
|
8
|
+
name: string
|
|
9
|
+
description?: string
|
|
10
|
+
default?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Attach CLI presentation metadata to a positional-argument schema.
|
|
15
|
+
*
|
|
16
|
+
* The encoded description remains readable by the transitional schema adapter. Native commands express positionals
|
|
17
|
+
* directly in `CommandSpec` and do not need this helper.
|
|
18
|
+
*/
|
|
19
|
+
export function argument(config: CommandArgumentMetadata): string {
|
|
20
|
+
return `__mailwoman_argument_config__${JSON.stringify(config)}`
|
|
21
|
+
}
|