mailwoman 8.6.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1430) hide show
  1. package/README.md +2 -2
  2. package/api-engine.ts +29 -30
  3. package/cli-kit/dropin.ts +195 -0
  4. package/cli-kit/index.ts +1 -125
  5. package/cli-kit/shared.ts +176 -0
  6. package/cli.ts +52 -7
  7. package/commands/autocomplete.tsx +26 -7
  8. package/commands/clients/generate.tsx +3 -3
  9. package/commands/corpus/align-shard.tsx +1 -2
  10. package/commands/corpus/audit.tsx +1 -2
  11. package/commands/corpus/build.tsx +3 -3
  12. package/commands/corpus/download.tsx +1 -2
  13. package/commands/corpus/fetch.tsx +11 -3
  14. package/commands/corpus/golden/expand.tsx +1 -2
  15. package/commands/corpus/golden/promote.tsx +1 -2
  16. package/commands/corpus/golden-relabel.tsx +52 -0
  17. package/commands/corpus/ingest-csv.tsx +1 -2
  18. package/commands/corpus/overlay-manifest.tsx +8 -4
  19. package/commands/corpus/run.tsx +1 -2
  20. package/commands/corpus/shard/index.tsx +15 -3
  21. package/commands/corpus/shard/kryptonite.tsx +2 -3
  22. package/commands/corpus/shard/translit.tsx +5 -5
  23. package/commands/corpus/stats.tsx +1 -2
  24. package/commands/corpus/sub-venue-extract.tsx +65 -0
  25. package/commands/corpus/sub-venue-lexicon.tsx +93 -0
  26. package/commands/corpus/upload.tsx +1 -2
  27. package/commands/coverage/build.tsx +1 -1
  28. package/commands/data/index.tsx +121 -0
  29. package/commands/data/pull.tsx +343 -0
  30. package/commands/data/status.tsx +183 -0
  31. package/commands/dev/download/libpostal-resources.tsx +1 -2
  32. package/commands/dev/download/ssl-address.tsx +1 -2
  33. package/commands/dev/generate/country-reference.tsx +1 -2
  34. package/commands/dev/generate/language-types.tsx +1 -2
  35. package/commands/dev/generate/official-languages.tsx +1 -2
  36. package/commands/dev/generate/trace-fixture.tsx +2 -3
  37. package/commands/dev/jsonl-to-parquet.tsx +1 -2
  38. package/commands/dev/lint/corpus-shard.tsx +3 -4
  39. package/commands/dev/lint/mdx-angles.tsx +2 -3
  40. package/commands/dev/lint/shard-vocab.tsx +1 -2
  41. package/commands/doctor.tsx +114 -57
  42. package/commands/eval/capability-manifest.tsx +1 -1
  43. package/commands/eval/error-analysis.tsx +1 -1
  44. package/commands/eval/es-postcode-centroids.tsx +1 -1
  45. package/commands/eval/fragment-board.tsx +1 -1
  46. package/commands/eval/fragment-dev.tsx +1 -1
  47. package/commands/eval/gate.tsx +1 -1
  48. package/commands/eval/gauntlet-build.tsx +2 -2
  49. package/commands/eval/gauntlet.tsx +60 -4
  50. package/commands/eval/invariance.tsx +9 -5
  51. package/commands/eval/ledger-append.tsx +1 -1
  52. package/commands/eval/mask-regression.tsx +1 -1
  53. package/commands/eval/oa-resolver.tsx +33 -5
  54. package/commands/eval/oracle-k.tsx +1 -1
  55. package/commands/eval/parity.tsx +1 -1
  56. package/commands/eval/poi-board.tsx +3 -3
  57. package/commands/eval/preset-compare.tsx +1 -1
  58. package/commands/eval/score-trends.tsx +41 -0
  59. package/commands/filer/edgar-ingest.tsx +83 -0
  60. package/commands/filer/linkage-eval.tsx +2 -3
  61. package/commands/gazetteer/affix-relabel.tsx +23 -9
  62. package/commands/gazetteer/anchor-lexicon.tsx +5 -14
  63. package/commands/gazetteer/build/admin.tsx +2 -3
  64. package/commands/gazetteer/build/anchor-lookup.tsx +24 -4
  65. package/commands/gazetteer/build/bdc.tsx +13 -14
  66. package/commands/gazetteer/build/candidate.tsx +41 -8
  67. package/commands/gazetteer/build/coincident-roles.tsx +1 -2
  68. package/commands/gazetteer/build/fst.tsx +1 -2
  69. package/commands/gazetteer/build/fts.tsx +1 -2
  70. package/commands/gazetteer/build/index.tsx +3 -4
  71. package/commands/gazetteer/build/locality-surface-lexicon.tsx +1 -2
  72. package/commands/gazetteer/build/nl-pc6.tsx +1 -2
  73. package/commands/gazetteer/build/poi-brands.tsx +3 -4
  74. package/commands/gazetteer/build/poi.tsx +11 -13
  75. package/commands/gazetteer/build/postcode-codepoint.tsx +83 -0
  76. package/commands/gazetteer/build/postcode-geonames.tsx +87 -0
  77. package/commands/gazetteer/build/postcode-locality.tsx +3 -4
  78. package/commands/gazetteer/build/postcode-ni-osm.tsx +104 -0
  79. package/commands/gazetteer/build/postcode-prefix.tsx +271 -0
  80. package/commands/gazetteer/build/postcode-shard.tsx +2 -3
  81. package/commands/gazetteer/build/street-morphology.tsx +1 -2
  82. package/commands/gazetteer/build/street-type-lexicon.tsx +1 -2
  83. package/commands/gazetteer/census.tsx +1 -1
  84. package/commands/gazetteer/conventions.tsx +3 -3
  85. package/commands/gazetteer/granularity.tsx +2 -2
  86. package/commands/gazetteer/importance.tsx +144 -57
  87. package/commands/gazetteer/inspect/fst.tsx +8 -7
  88. package/commands/gazetteer/inspect/graph.tsx +1 -21
  89. package/commands/gazetteer/inspect/mermaid.tsx +1 -21
  90. package/commands/gazetteer/inspect/placetype-stats.tsx +1 -2
  91. package/commands/gazetteer/inspect/sync.tsx +4 -6
  92. package/commands/gazetteer/inspect/tree.tsx +1 -21
  93. package/commands/gazetteer/overture-ingest.tsx +1 -2
  94. package/commands/gazetteer/pair-index.tsx +88 -37
  95. package/commands/gazetteer/polygons.tsx +8 -18
  96. package/commands/gazetteer/postal-alias.tsx +1 -2
  97. package/commands/gazetteer/postal-city.tsx +1 -2
  98. package/commands/gazetteer/postcode-binary.tsx +77 -74
  99. package/commands/gazetteer/postcode-intl.tsx +1 -2
  100. package/commands/gazetteer/promote.tsx +2 -3
  101. package/commands/gazetteer/publish.tsx +2 -8
  102. package/commands/gazetteer/release.tsx +6 -6
  103. package/commands/gazetteer/verify-codepoint.tsx +68 -0
  104. package/commands/gazetteer/verify.tsx +40 -3
  105. package/commands/geocode.tsx +155 -8
  106. package/commands/gnaf/assemble.tsx +1 -2
  107. package/commands/openapi.tsx +1 -2
  108. package/commands/parse.tsx +199 -40
  109. package/commands/placer/build-dataset.tsx +1 -2
  110. package/commands/placer/eval.tsx +1 -2
  111. package/commands/placer/probe-frontier.tsx +1 -2
  112. package/commands/placer/quantize.tsx +1 -2
  113. package/commands/placer/train.tsx +1 -2
  114. package/commands/poi.tsx +12 -2
  115. package/commands/registry/convert/tx-hhsc.tsx +1 -2
  116. package/commands/registry/dedup-ceiling.tsx +1 -2
  117. package/commands/registry/gold-set-sample.tsx +3 -4
  118. package/commands/registry/matcher-scale.tsx +1 -2
  119. package/commands/registry/run.tsx +19 -12
  120. package/commands/registry/scorer-eval.tsx +1 -1
  121. package/commands/registry/train-scorer.tsx +1 -1
  122. package/commands/registry/viz.tsx +10 -11
  123. package/commands/release/hf.tsx +2 -2
  124. package/commands/reverse.tsx +15 -6
  125. package/commands/serve.tsx +6 -2
  126. package/commands/situs/address-points.tsx +17 -31
  127. package/commands/situs/attribution-manifest.tsx +1 -2
  128. package/commands/situs/build.tsx +6 -7
  129. package/commands/situs/interpolation-shard.tsx +6 -30
  130. package/commands/situs/interpolation.tsx +23 -21
  131. package/commands/skill/install.tsx +120 -0
  132. package/commands/tiger/fetch.tsx +1 -2
  133. package/commands/tiger/race-dots-map.tsx +1 -2
  134. package/commands/tiger/race-dots.tsx +1 -2
  135. package/commands/tiger/redistricting.tsx +1 -2
  136. package/commands/tiles/publish.tsx +1 -2
  137. package/commands/wof/graph.tsx +1 -2
  138. package/commands/wof/mermaid.tsx +1 -2
  139. package/commands/wof/prepare.tsx +1 -2
  140. package/commands/wof/sync.tsx +1 -2
  141. package/commands/wof/tree.tsx +1 -2
  142. package/data-bundles.ts +357 -0
  143. package/data-release.ts +6 -3
  144. package/dev-tools/build-gb-anchor-bin.run.ts +122 -0
  145. package/dev-tools/build-hard-slice-board.run.ts +230 -0
  146. package/dev-tools/capture-v1-parse.run.ts +11 -10
  147. package/dev-tools/convert-parity-fixtures.run.ts +13 -4
  148. package/dev-tools/diff-territory-spans.run.ts +101 -0
  149. package/dev-tools/extract-parity-corpus.run.ts +11 -3
  150. package/dev-tools/failure-census.run.ts +0 -0
  151. package/dev-tools/failure-report.run.ts +0 -0
  152. package/dev-tools/gb-fragment-board.run.ts +176 -0
  153. package/dev-tools/hard-slice-rows-toponym.ts +487 -0
  154. package/dev-tools/hard-slice-rows.ts +393 -0
  155. package/dev-tools/hard-slice-sweep-rows.ts +175 -0
  156. package/dev-tools/lint-mdx-angles.ts +4 -4
  157. package/dev-tools/postcode-coherence-coverage.run.ts +152 -0
  158. package/dev-tools/postcode-coherence-scale.run.ts +216 -0
  159. package/dev-tools/probe-comma-free-locality.run.ts +110 -0
  160. package/dev-tools/probe-fst-bias.run.ts +118 -0
  161. package/dev-tools/probe-query-intent.run.ts +154 -0
  162. package/dev-tools/probe-referential-delta.run.ts +169 -0
  163. package/dev-tools/router-kind-probe.run.ts +4 -7
  164. package/dev-tools/score-anchor-v2-boards.run.ts +292 -0
  165. package/dev-tools/score-hard-slice-board.run.ts +465 -0
  166. package/dev-tools/score-interesting-addresses.run.ts +102 -0
  167. package/dev-tools/score-street-name-boundaries.run.ts +84 -0
  168. package/dev-tools/score-world-structures.run.ts +108 -0
  169. package/dev-tools/us-recall-flip-census.run.ts +4 -7
  170. package/doctor/checks.ts +73 -32
  171. package/doctor/runner.ts +108 -24
  172. package/eval-harness/baseline-assert.ts +3 -1
  173. package/eval-harness/capability-manifest.ts +10 -6
  174. package/eval-harness/de-order-eval.ts +189 -0
  175. package/eval-harness/demo-cascade-rows.ts +181 -0
  176. package/eval-harness/demo-cascade-smoke.ts +413 -0
  177. package/eval-harness/digit-board.ts +4 -7
  178. package/eval-harness/error-analysis.ts +5 -8
  179. package/eval-harness/external-arenas.ts +175 -0
  180. package/eval-harness/fr-parse-recall.ts +286 -0
  181. package/eval-harness/fragment-board.ts +4 -7
  182. package/eval-harness/fragment-dev.ts +2 -6
  183. package/eval-harness/gates/v2.3.0-nl-postcode.json +1 -1
  184. package/eval-harness/gates/v5.3.0-family.json +1 -1
  185. package/eval-harness/gates/v9.0.0-base.json +84 -0
  186. package/eval-harness/gauntlet/ablation-expectation.ts +1094 -0
  187. package/eval-harness/gauntlet/ablation-gazetteer.ts +354 -0
  188. package/eval-harness/gauntlet/ablation-report.ts +216 -0
  189. package/eval-harness/gauntlet/ablation-types.ts +252 -0
  190. package/eval-harness/gauntlet/ablation.ts +876 -0
  191. package/eval-harness/gauntlet/build-fdic-holdout.ts +2 -2
  192. package/eval-harness/gauntlet/build-regression-db.ts +43 -20
  193. package/eval-harness/gauntlet/cases/ad/regression.jsonl +2 -0
  194. package/eval-harness/gauntlet/cases/ae/street-name-boundaries.jsonl +5 -0
  195. package/eval-harness/gauntlet/cases/af/regression.jsonl +2 -0
  196. package/eval-harness/gauntlet/cases/ag/regression.jsonl +1 -0
  197. package/eval-harness/gauntlet/cases/ai/regression.jsonl +1 -0
  198. package/eval-harness/gauntlet/cases/al/regression.jsonl +2 -0
  199. package/eval-harness/gauntlet/cases/ao/regression.jsonl +1 -0
  200. package/eval-harness/gauntlet/cases/ar/street-name-boundaries.jsonl +5 -0
  201. package/eval-harness/gauntlet/cases/as/regression.jsonl +1 -0
  202. package/eval-harness/gauntlet/cases/at/regression.jsonl +1 -0
  203. package/eval-harness/gauntlet/cases/at/street-name-boundaries.jsonl +2 -0
  204. package/eval-harness/gauntlet/cases/au/regression.jsonl +2 -0
  205. package/eval-harness/gauntlet/cases/au/street-name-boundaries.jsonl +13 -0
  206. package/eval-harness/gauntlet/cases/aw/regression.jsonl +1 -0
  207. package/eval-harness/gauntlet/cases/ba/regression.jsonl +2 -0
  208. package/eval-harness/gauntlet/cases/bb/regression.jsonl +1 -0
  209. package/eval-harness/gauntlet/cases/bd/regression.jsonl +2 -0
  210. package/eval-harness/gauntlet/cases/be/regression.jsonl +1 -0
  211. package/eval-harness/gauntlet/cases/bf/regression.jsonl +1 -0
  212. package/eval-harness/gauntlet/cases/bi/regression.jsonl +1 -0
  213. package/eval-harness/gauntlet/cases/bj/regression.jsonl +2 -0
  214. package/eval-harness/gauntlet/cases/bm/regression.jsonl +3 -0
  215. package/eval-harness/gauntlet/cases/bn/regression.jsonl +2 -0
  216. package/eval-harness/gauntlet/cases/bq/regression.jsonl +1 -0
  217. package/eval-harness/gauntlet/cases/br/brasilia-hierarchy.jsonl +4 -0
  218. package/eval-harness/gauntlet/cases/br/regression.jsonl +1 -0
  219. package/eval-harness/gauntlet/cases/br/street-name-boundaries.jsonl +5 -0
  220. package/eval-harness/gauntlet/cases/br/world-structures.jsonl +5 -0
  221. package/eval-harness/gauntlet/cases/bs/regression.jsonl +2 -0
  222. package/eval-harness/gauntlet/cases/bt/regression.jsonl +2 -0
  223. package/eval-harness/gauntlet/cases/bw/regression.jsonl +2 -0
  224. package/eval-harness/gauntlet/cases/by/regression.jsonl +1 -0
  225. package/eval-harness/gauntlet/cases/bz/regression.jsonl +2 -0
  226. package/eval-harness/gauntlet/cases/ca/regression.jsonl +4 -0
  227. package/eval-harness/gauntlet/cases/ca/street-name-boundaries.jsonl +15 -0
  228. package/eval-harness/gauntlet/cases/cd/regression.jsonl +2 -0
  229. package/eval-harness/gauntlet/cases/cf/regression.jsonl +1 -0
  230. package/eval-harness/gauntlet/cases/cg/regression.jsonl +2 -0
  231. package/eval-harness/gauntlet/cases/ch/regression.jsonl +1 -0
  232. package/eval-harness/gauntlet/cases/ck/regression.jsonl +2 -0
  233. package/eval-harness/gauntlet/cases/cn/regression.jsonl +1 -0
  234. package/eval-harness/gauntlet/cases/co/regression.jsonl +2 -0
  235. package/eval-harness/gauntlet/cases/co/world-structures.jsonl +1 -0
  236. package/eval-harness/gauntlet/cases/cr/regression.jsonl +3 -0
  237. package/eval-harness/gauntlet/cases/cv/regression.jsonl +2 -0
  238. package/eval-harness/gauntlet/cases/cv/world-structures.jsonl +1 -0
  239. package/eval-harness/gauntlet/cases/cw/regression.jsonl +1 -0
  240. package/eval-harness/gauntlet/cases/cy/regression.jsonl +2 -0
  241. package/eval-harness/gauntlet/cases/de/regression.jsonl +3 -0
  242. package/eval-harness/gauntlet/cases/de/street-name-boundaries.jsonl +4 -0
  243. package/eval-harness/gauntlet/cases/dj/regression.jsonl +1 -0
  244. package/eval-harness/gauntlet/cases/dm/regression.jsonl +1 -0
  245. package/eval-harness/gauntlet/cases/do/regression.jsonl +1 -0
  246. package/eval-harness/gauntlet/cases/eg/regression.jsonl +1 -0
  247. package/eval-harness/gauntlet/cases/er/regression.jsonl +1 -0
  248. package/eval-harness/gauntlet/cases/es/regression.jsonl +8 -0
  249. package/eval-harness/gauntlet/cases/es/street-name-boundaries.jsonl +16 -0
  250. package/eval-harness/gauntlet/cases/fi/regression.jsonl +1 -0
  251. package/eval-harness/gauntlet/cases/fk/regression.jsonl +1 -0
  252. package/eval-harness/gauntlet/cases/fm/regression.jsonl +1 -0
  253. package/eval-harness/gauntlet/cases/fo/regression.jsonl +1 -0
  254. package/eval-harness/gauntlet/cases/fr/regression.jsonl +36 -0
  255. package/eval-harness/gauntlet/cases/fr/street-name-boundaries.jsonl +15 -0
  256. package/eval-harness/gauntlet/cases/gb/regression.jsonl +67 -0
  257. package/eval-harness/gauntlet/cases/gb/street-name-boundaries.jsonl +24 -0
  258. package/eval-harness/gauntlet/cases/gd/regression.jsonl +1 -0
  259. package/eval-harness/gauntlet/cases/ge/regression.jsonl +2 -0
  260. package/eval-harness/gauntlet/cases/generalization/country-sweep-2026-08-05-passes.jsonl +279 -0
  261. package/eval-harness/gauntlet/cases/gh/world-structures.jsonl +2 -0
  262. package/eval-harness/gauntlet/cases/gm/regression.jsonl +1 -0
  263. package/eval-harness/gauntlet/cases/gt/regression.jsonl +1 -0
  264. package/eval-harness/gauntlet/cases/gw/regression.jsonl +1 -0
  265. package/eval-harness/gauntlet/cases/hk/regression.jsonl +1 -0
  266. package/eval-harness/gauntlet/cases/hk/street-name-boundaries.jsonl +4 -0
  267. package/eval-harness/gauntlet/cases/hu/street-name-boundaries.jsonl +2 -0
  268. package/eval-harness/gauntlet/cases/id/regression.jsonl +1 -0
  269. package/eval-harness/gauntlet/cases/id/street-name-boundaries.jsonl +1 -0
  270. package/eval-harness/gauntlet/cases/ie/regression.jsonl +11 -0
  271. package/eval-harness/gauntlet/cases/ie/world-structures.jsonl +1 -0
  272. package/eval-harness/gauntlet/cases/il/regression.jsonl +2 -0
  273. package/eval-harness/gauntlet/cases/im/regression.jsonl +3 -0
  274. package/eval-harness/gauntlet/cases/in/regression.jsonl +3 -0
  275. package/eval-harness/gauntlet/cases/io/regression.jsonl +1 -0
  276. package/eval-harness/gauntlet/cases/is/regression.jsonl +1 -0
  277. package/eval-harness/gauntlet/cases/it/regression.jsonl +2 -0
  278. package/eval-harness/gauntlet/cases/it/street-name-boundaries.jsonl +7 -0
  279. package/eval-harness/gauntlet/cases/jo/regression.jsonl +1 -0
  280. package/eval-harness/gauntlet/cases/jp/regression.jsonl +3 -0
  281. package/eval-harness/gauntlet/cases/jp/street-name-boundaries.jsonl +3 -0
  282. package/eval-harness/gauntlet/cases/jp/world-structures.jsonl +2 -0
  283. package/eval-harness/gauntlet/cases/kh/regression.jsonl +1 -0
  284. package/eval-harness/gauntlet/cases/kw/regression.jsonl +1 -0
  285. package/eval-harness/gauntlet/cases/kw/street-name-boundaries.jsonl +1 -0
  286. package/eval-harness/gauntlet/cases/ky/regression.jsonl +1 -0
  287. package/eval-harness/gauntlet/cases/lb/regression.jsonl +1 -0
  288. package/eval-harness/gauntlet/cases/load.ts +185 -0
  289. package/eval-harness/gauntlet/cases/ma/regression.jsonl +1 -0
  290. package/eval-harness/gauntlet/cases/ml/regression.jsonl +1 -0
  291. package/eval-harness/gauntlet/cases/mn/world-structures.jsonl +3 -0
  292. package/eval-harness/gauntlet/cases/mp/regression.jsonl +1 -0
  293. package/eval-harness/gauntlet/cases/ms/regression.jsonl +1 -0
  294. package/eval-harness/gauntlet/cases/mu/regression.jsonl +1 -0
  295. package/eval-harness/gauntlet/cases/mw/regression.jsonl +1 -0
  296. package/eval-harness/gauntlet/cases/mx/regression.jsonl +5 -0
  297. package/eval-harness/gauntlet/cases/mx/street-name-boundaries.jsonl +2 -0
  298. package/eval-harness/gauntlet/cases/my/regression.jsonl +2 -0
  299. package/eval-harness/gauntlet/cases/na/regression.jsonl +1 -0
  300. package/eval-harness/gauntlet/cases/ne/world-structures.jsonl +1 -0
  301. package/eval-harness/gauntlet/cases/ng/world-structures.jsonl +2 -0
  302. package/eval-harness/gauntlet/cases/ni/regression.jsonl +2 -0
  303. package/eval-harness/gauntlet/cases/ni/world-structures.jsonl +2 -0
  304. package/eval-harness/gauntlet/cases/om/street-name-boundaries.jsonl +1 -0
  305. package/eval-harness/gauntlet/cases/ph/regression.jsonl +1 -0
  306. package/eval-harness/gauntlet/cases/pk/regression.jsonl +1 -0
  307. package/eval-harness/gauntlet/cases/pl/regression.jsonl +2 -0
  308. package/eval-harness/gauntlet/cases/pm/regression.jsonl +1 -0
  309. package/eval-harness/gauntlet/cases/pr/regression.jsonl +4 -0
  310. package/eval-harness/gauntlet/cases/pt/street-name-boundaries.jsonl +4 -0
  311. package/eval-harness/gauntlet/cases/ru/regression.jsonl +1 -0
  312. package/eval-harness/gauntlet/cases/ru/street-name-boundaries.jsonl +4 -0
  313. package/eval-harness/gauntlet/cases/rw/regression.jsonl +1 -0
  314. package/eval-harness/gauntlet/cases/sa/regression.jsonl +1 -0
  315. package/eval-harness/gauntlet/cases/sa/street-name-boundaries.jsonl +4 -0
  316. package/eval-harness/gauntlet/cases/sb/regression.jsonl +1 -0
  317. package/eval-harness/gauntlet/cases/sc/regression.jsonl +1 -0
  318. package/eval-harness/gauntlet/cases/se/regression.jsonl +1 -0
  319. package/eval-harness/gauntlet/cases/seed-case.ts +187 -0
  320. package/eval-harness/gauntlet/cases/sg/regression.jsonl +1 -0
  321. package/eval-harness/gauntlet/cases/sg/street-name-boundaries.jsonl +2 -0
  322. package/eval-harness/gauntlet/cases/sh/regression.jsonl +1 -0
  323. package/eval-harness/gauntlet/cases/si/regression.jsonl +5 -0
  324. package/eval-harness/gauntlet/cases/sk/regression.jsonl +1 -0
  325. package/eval-harness/gauntlet/cases/sm/regression.jsonl +1 -0
  326. package/eval-harness/gauntlet/cases/so/regression.jsonl +2 -0
  327. package/eval-harness/gauntlet/cases/sr/regression.jsonl +1 -0
  328. package/eval-harness/gauntlet/cases/st/regression.jsonl +1 -0
  329. package/eval-harness/gauntlet/cases/sv/regression.jsonl +1 -0
  330. package/eval-harness/gauntlet/cases/sx/regression.jsonl +2 -0
  331. package/eval-harness/gauntlet/cases/th/regression.jsonl +1 -0
  332. package/eval-harness/gauntlet/cases/th/street-name-boundaries.jsonl +4 -0
  333. package/eval-harness/gauntlet/cases/tk/regression.jsonl +1 -0
  334. package/eval-harness/gauntlet/cases/tm/regression.jsonl +1 -0
  335. package/eval-harness/gauntlet/cases/to/regression.jsonl +1 -0
  336. package/eval-harness/gauntlet/cases/tr/street-name-boundaries.jsonl +1 -0
  337. package/eval-harness/gauntlet/cases/tt/regression.jsonl +2 -0
  338. package/eval-harness/gauntlet/cases/ua/regression.jsonl +1 -0
  339. package/eval-harness/gauntlet/cases/us/regression.jsonl +33 -0
  340. package/eval-harness/gauntlet/cases/us/street-name-boundaries.jsonl +26 -0
  341. package/eval-harness/gauntlet/cases/ve/regression.jsonl +1 -0
  342. package/eval-harness/gauntlet/cases/vg/regression.jsonl +1 -0
  343. package/eval-harness/gauntlet/cases/vi/regression.jsonl +3 -0
  344. package/eval-harness/gauntlet/cases/vn/regression.jsonl +1 -0
  345. package/eval-harness/gauntlet/cases/vu/regression.jsonl +1 -0
  346. package/eval-harness/gauntlet/cases/za/regression.jsonl +1 -0
  347. package/eval-harness/gauntlet/check-case.ts +308 -0
  348. package/eval-harness/gauntlet/corpus-stamp.ts +131 -0
  349. package/eval-harness/gauntlet/harness.ts +194 -9
  350. package/eval-harness/gauntlet/holdout.ts +21 -9
  351. package/eval-harness/gauntlet/metamorphic.ts +2 -12
  352. package/eval-harness/gauntlet/regression.ts +59 -86
  353. package/eval-harness/gauntlet/run.ts +89 -5
  354. package/eval-harness/gauntlet/schema.ts +85 -1
  355. package/eval-harness/hard-slice-board.ts +321 -0
  356. package/eval-harness/invariance/compare.ts +3 -3
  357. package/eval-harness/invariance/runner.ts +203 -68
  358. package/eval-harness/invariance/transforms.ts +2 -2
  359. package/eval-harness/ledger-append.ts +6 -4
  360. package/eval-harness/mask-regression.ts +6 -6
  361. package/eval-harness/oa-resolver-eval.ts +73 -27
  362. package/eval-harness/oracle-k.ts +11 -15
  363. package/eval-harness/parity-corpus.ts +4 -8
  364. package/eval-harness/per-locale-f1.ts +598 -0
  365. package/eval-harness/poi-board.ts +31 -25
  366. package/eval-harness/promotion-gate-verdict.ts +7 -4
  367. package/eval-harness/promotion-gate.ts +360 -123
  368. package/eval-harness/score-affix.ts +203 -0
  369. package/eval-harness/score-country-homograph.ts +234 -0
  370. package/eval-harness/score-trends.ts +257 -0
  371. package/eval-harness/v0-tree-adapter.ts +0 -5
  372. package/gazetteer-pipeline/admin/enrich.ts +22 -13
  373. package/gazetteer-pipeline/admin/fold-geonames.ts +16 -25
  374. package/gazetteer-pipeline/admin/fold-overture.ts +157 -19
  375. package/gazetteer-pipeline/admin/freeze.ts +2 -2
  376. package/gazetteer-pipeline/admin/index.ts +4 -3
  377. package/gazetteer-pipeline/admin/ingest-wof.ts +19 -3
  378. package/gazetteer-pipeline/anchor-lookup.ts +293 -123
  379. package/gazetteer-pipeline/borough-pairs.ts +40 -5
  380. package/gazetteer-pipeline/evidence-lexicons.ts +39 -10
  381. package/gazetteer-pipeline/fst.ts +150 -2
  382. package/gazetteer-pipeline/granularity-report.ts +1 -1
  383. package/gazetteer-pipeline/importance-fanout.ts +167 -0
  384. package/gazetteer-pipeline/index.ts +163 -40
  385. package/gazetteer-pipeline/lieudit-pairs.ts +0 -0
  386. package/gazetteer-pipeline/pair-index-hierarchy-probe.ts +13 -8
  387. package/gazetteer-pipeline/pair-index-hierarchy-verify.ts +27 -12
  388. package/gazetteer-pipeline/pair-index.ts +28 -14
  389. package/gazetteer-pipeline/poi/build-poi.ts +10 -12
  390. package/gazetteer-pipeline/postcode/binary.ts +243 -0
  391. package/gazetteer-pipeline/postcode/centroid-fills.ts +208 -45
  392. package/gazetteer-pipeline/postcode/codepoint/extract.ts +216 -0
  393. package/gazetteer-pipeline/postcode/codepoint/fetch.ts +385 -0
  394. package/gazetteer-pipeline/postcode/codepoint/index.ts +13 -0
  395. package/gazetteer-pipeline/postcode/codepoint/parse.ts +285 -0
  396. package/gazetteer-pipeline/postcode/codepoint-gate.ts +434 -0
  397. package/gazetteer-pipeline/postcode/codepoint-shard.ts +474 -0
  398. package/gazetteer-pipeline/postcode/geonames-tail.ts +359 -0
  399. package/gazetteer-pipeline/postcode/index.ts +7 -5
  400. package/gazetteer-pipeline/postcode/ni-osm/fetch.ts +391 -0
  401. package/gazetteer-pipeline/postcode/ni-osm/index.ts +11 -0
  402. package/gazetteer-pipeline/postcode/ni-osm/parse.ts +219 -0
  403. package/gazetteer-pipeline/postcode/ni-osm-shard.ts +558 -0
  404. package/gazetteer-pipeline/postcode/nl-pc6.ts +18 -14
  405. package/gazetteer-pipeline/postcode/zcta-centroids.ts +6 -6
  406. package/gazetteer-pipeline/postcode-locality/base.ts +8 -93
  407. package/gazetteer-pipeline/postcode-locality/jp.ts +12 -108
  408. package/gazetteer-pipeline/postcode-locality/kr.ts +6 -109
  409. package/gazetteer-pipeline/postcode-locality/tw.ts +18 -20
  410. package/gazetteer-pipeline/postcode-prefix.ts +329 -0
  411. package/gazetteer-pipeline/verify.ts +20 -15
  412. package/geocode-core.ts +384 -62
  413. package/geocode-stream.ts +10 -3
  414. package/out/api-engine.d.ts +1 -1
  415. package/out/api-engine.d.ts.map +1 -1
  416. package/out/api-engine.js +23 -30
  417. package/out/api-engine.js.map +1 -1
  418. package/out/cli-kit/dropin.d.ts +104 -0
  419. package/out/cli-kit/dropin.d.ts.map +1 -0
  420. package/out/cli-kit/dropin.js +139 -0
  421. package/out/cli-kit/dropin.js.map +1 -0
  422. package/out/cli-kit/index.d.ts +1 -69
  423. package/out/cli-kit/index.d.ts.map +1 -1
  424. package/out/cli-kit/index.js +1 -51
  425. package/out/cli-kit/index.js.map +1 -1
  426. package/out/cli-kit/shared.d.ts +97 -0
  427. package/out/cli-kit/shared.d.ts.map +1 -0
  428. package/out/cli-kit/shared.js +96 -0
  429. package/out/cli-kit/shared.js.map +1 -0
  430. package/out/cli.js +45 -6
  431. package/out/cli.js.map +1 -1
  432. package/out/commands/autocomplete.d.ts +10 -2
  433. package/out/commands/autocomplete.d.ts.map +1 -1
  434. package/out/commands/autocomplete.js +16 -5
  435. package/out/commands/autocomplete.js.map +1 -1
  436. package/out/commands/clients/generate.d.ts +3 -3
  437. package/out/commands/clients/generate.d.ts.map +1 -1
  438. package/out/commands/clients/generate.js +3 -3
  439. package/out/commands/clients/generate.js.map +1 -1
  440. package/out/commands/corpus/align-shard.d.ts +1 -1
  441. package/out/commands/corpus/align-shard.d.ts.map +1 -1
  442. package/out/commands/corpus/align-shard.js +1 -1
  443. package/out/commands/corpus/align-shard.js.map +1 -1
  444. package/out/commands/corpus/audit.d.ts +1 -1
  445. package/out/commands/corpus/audit.d.ts.map +1 -1
  446. package/out/commands/corpus/audit.js +1 -1
  447. package/out/commands/corpus/audit.js.map +1 -1
  448. package/out/commands/corpus/build.d.ts +1 -1
  449. package/out/commands/corpus/build.d.ts.map +1 -1
  450. package/out/commands/corpus/build.js +3 -2
  451. package/out/commands/corpus/build.js.map +1 -1
  452. package/out/commands/corpus/download.d.ts +1 -1
  453. package/out/commands/corpus/download.d.ts.map +1 -1
  454. package/out/commands/corpus/download.js +1 -1
  455. package/out/commands/corpus/download.js.map +1 -1
  456. package/out/commands/corpus/fetch.d.ts +3 -1
  457. package/out/commands/corpus/fetch.d.ts.map +1 -1
  458. package/out/commands/corpus/fetch.js +9 -3
  459. package/out/commands/corpus/fetch.js.map +1 -1
  460. package/out/commands/corpus/golden/expand.d.ts +1 -1
  461. package/out/commands/corpus/golden/expand.d.ts.map +1 -1
  462. package/out/commands/corpus/golden/expand.js +1 -1
  463. package/out/commands/corpus/golden/expand.js.map +1 -1
  464. package/out/commands/corpus/golden/promote.d.ts +1 -1
  465. package/out/commands/corpus/golden/promote.d.ts.map +1 -1
  466. package/out/commands/corpus/golden/promote.js +1 -1
  467. package/out/commands/corpus/golden/promote.js.map +1 -1
  468. package/out/commands/corpus/golden-relabel.d.ts +24 -0
  469. package/out/commands/corpus/golden-relabel.d.ts.map +1 -0
  470. package/out/commands/corpus/golden-relabel.js +46 -0
  471. package/out/commands/corpus/golden-relabel.js.map +1 -0
  472. package/out/commands/corpus/ingest-csv.d.ts +1 -1
  473. package/out/commands/corpus/ingest-csv.d.ts.map +1 -1
  474. package/out/commands/corpus/ingest-csv.js +1 -1
  475. package/out/commands/corpus/ingest-csv.js.map +1 -1
  476. package/out/commands/corpus/overlay-manifest.d.ts +2 -2
  477. package/out/commands/corpus/overlay-manifest.d.ts.map +1 -1
  478. package/out/commands/corpus/overlay-manifest.js +8 -3
  479. package/out/commands/corpus/overlay-manifest.js.map +1 -1
  480. package/out/commands/corpus/run.d.ts +1 -1
  481. package/out/commands/corpus/run.d.ts.map +1 -1
  482. package/out/commands/corpus/run.js +1 -1
  483. package/out/commands/corpus/run.js.map +1 -1
  484. package/out/commands/corpus/shard/index.d.ts +6 -1
  485. package/out/commands/corpus/shard/index.d.ts.map +1 -1
  486. package/out/commands/corpus/shard/index.js +15 -2
  487. package/out/commands/corpus/shard/index.js.map +1 -1
  488. package/out/commands/corpus/shard/kryptonite.d.ts +2 -2
  489. package/out/commands/corpus/shard/kryptonite.d.ts.map +1 -1
  490. package/out/commands/corpus/shard/kryptonite.js +2 -2
  491. package/out/commands/corpus/shard/kryptonite.js.map +1 -1
  492. package/out/commands/corpus/shard/translit.d.ts +3 -3
  493. package/out/commands/corpus/shard/translit.d.ts.map +1 -1
  494. package/out/commands/corpus/shard/translit.js +4 -4
  495. package/out/commands/corpus/shard/translit.js.map +1 -1
  496. package/out/commands/corpus/stats.d.ts +1 -1
  497. package/out/commands/corpus/stats.d.ts.map +1 -1
  498. package/out/commands/corpus/stats.js +1 -1
  499. package/out/commands/corpus/stats.js.map +1 -1
  500. package/out/commands/corpus/sub-venue-extract.d.ts +34 -0
  501. package/out/commands/corpus/sub-venue-extract.d.ts.map +1 -0
  502. package/out/commands/corpus/sub-venue-extract.js +53 -0
  503. package/out/commands/corpus/sub-venue-extract.js.map +1 -0
  504. package/out/commands/corpus/sub-venue-lexicon.d.ts +35 -0
  505. package/out/commands/corpus/sub-venue-lexicon.d.ts.map +1 -0
  506. package/out/commands/corpus/sub-venue-lexicon.js +78 -0
  507. package/out/commands/corpus/sub-venue-lexicon.js.map +1 -0
  508. package/out/commands/corpus/upload.d.ts +1 -1
  509. package/out/commands/corpus/upload.d.ts.map +1 -1
  510. package/out/commands/corpus/upload.js +1 -1
  511. package/out/commands/corpus/upload.js.map +1 -1
  512. package/out/commands/coverage/build.d.ts +1 -1
  513. package/out/commands/coverage/build.d.ts.map +1 -1
  514. package/out/commands/coverage/build.js +1 -1
  515. package/out/commands/coverage/build.js.map +1 -1
  516. package/out/commands/data/index.d.ts +32 -0
  517. package/out/commands/data/index.d.ts.map +1 -0
  518. package/out/commands/data/index.js +94 -0
  519. package/out/commands/data/index.js.map +1 -0
  520. package/out/commands/data/pull.d.ts +49 -0
  521. package/out/commands/data/pull.d.ts.map +1 -0
  522. package/out/commands/data/pull.js +267 -0
  523. package/out/commands/data/pull.js.map +1 -0
  524. package/out/commands/data/status.d.ts +28 -0
  525. package/out/commands/data/status.d.ts.map +1 -0
  526. package/out/commands/data/status.js +140 -0
  527. package/out/commands/data/status.js.map +1 -0
  528. package/out/commands/dev/download/libpostal-resources.d.ts +1 -1
  529. package/out/commands/dev/download/libpostal-resources.d.ts.map +1 -1
  530. package/out/commands/dev/download/libpostal-resources.js +1 -1
  531. package/out/commands/dev/download/libpostal-resources.js.map +1 -1
  532. package/out/commands/dev/download/ssl-address.d.ts +1 -1
  533. package/out/commands/dev/download/ssl-address.d.ts.map +1 -1
  534. package/out/commands/dev/download/ssl-address.js +1 -1
  535. package/out/commands/dev/download/ssl-address.js.map +1 -1
  536. package/out/commands/dev/generate/country-reference.d.ts.map +1 -1
  537. package/out/commands/dev/generate/country-reference.js +1 -1
  538. package/out/commands/dev/generate/country-reference.js.map +1 -1
  539. package/out/commands/dev/generate/language-types.d.ts.map +1 -1
  540. package/out/commands/dev/generate/language-types.js +1 -1
  541. package/out/commands/dev/generate/language-types.js.map +1 -1
  542. package/out/commands/dev/generate/official-languages.d.ts +1 -1
  543. package/out/commands/dev/generate/official-languages.d.ts.map +1 -1
  544. package/out/commands/dev/generate/official-languages.js +1 -1
  545. package/out/commands/dev/generate/official-languages.js.map +1 -1
  546. package/out/commands/dev/generate/trace-fixture.d.ts +1 -1
  547. package/out/commands/dev/generate/trace-fixture.d.ts.map +1 -1
  548. package/out/commands/dev/generate/trace-fixture.js +2 -2
  549. package/out/commands/dev/generate/trace-fixture.js.map +1 -1
  550. package/out/commands/dev/jsonl-to-parquet.d.ts +1 -1
  551. package/out/commands/dev/jsonl-to-parquet.d.ts.map +1 -1
  552. package/out/commands/dev/jsonl-to-parquet.js +1 -1
  553. package/out/commands/dev/jsonl-to-parquet.js.map +1 -1
  554. package/out/commands/dev/lint/corpus-shard.d.ts +2 -2
  555. package/out/commands/dev/lint/corpus-shard.d.ts.map +1 -1
  556. package/out/commands/dev/lint/corpus-shard.js +3 -3
  557. package/out/commands/dev/lint/corpus-shard.js.map +1 -1
  558. package/out/commands/dev/lint/mdx-angles.d.ts +1 -1
  559. package/out/commands/dev/lint/mdx-angles.d.ts.map +1 -1
  560. package/out/commands/dev/lint/mdx-angles.js +2 -2
  561. package/out/commands/dev/lint/mdx-angles.js.map +1 -1
  562. package/out/commands/dev/lint/shard-vocab.d.ts +1 -1
  563. package/out/commands/dev/lint/shard-vocab.d.ts.map +1 -1
  564. package/out/commands/dev/lint/shard-vocab.js +1 -1
  565. package/out/commands/dev/lint/shard-vocab.js.map +1 -1
  566. package/out/commands/doctor.d.ts +28 -8
  567. package/out/commands/doctor.d.ts.map +1 -1
  568. package/out/commands/doctor.js +94 -35
  569. package/out/commands/doctor.js.map +1 -1
  570. package/out/commands/eval/capability-manifest.d.ts +1 -1
  571. package/out/commands/eval/capability-manifest.d.ts.map +1 -1
  572. package/out/commands/eval/capability-manifest.js +1 -1
  573. package/out/commands/eval/capability-manifest.js.map +1 -1
  574. package/out/commands/eval/error-analysis.d.ts +1 -1
  575. package/out/commands/eval/error-analysis.d.ts.map +1 -1
  576. package/out/commands/eval/error-analysis.js +1 -1
  577. package/out/commands/eval/error-analysis.js.map +1 -1
  578. package/out/commands/eval/es-postcode-centroids.d.ts +1 -1
  579. package/out/commands/eval/es-postcode-centroids.d.ts.map +1 -1
  580. package/out/commands/eval/es-postcode-centroids.js +1 -1
  581. package/out/commands/eval/es-postcode-centroids.js.map +1 -1
  582. package/out/commands/eval/fragment-board.d.ts +1 -1
  583. package/out/commands/eval/fragment-board.d.ts.map +1 -1
  584. package/out/commands/eval/fragment-board.js +1 -1
  585. package/out/commands/eval/fragment-board.js.map +1 -1
  586. package/out/commands/eval/fragment-dev.d.ts +1 -1
  587. package/out/commands/eval/fragment-dev.d.ts.map +1 -1
  588. package/out/commands/eval/fragment-dev.js +1 -1
  589. package/out/commands/eval/fragment-dev.js.map +1 -1
  590. package/out/commands/eval/gate.d.ts +1 -1
  591. package/out/commands/eval/gate.d.ts.map +1 -1
  592. package/out/commands/eval/gate.js +1 -1
  593. package/out/commands/eval/gate.js.map +1 -1
  594. package/out/commands/eval/gauntlet-build.d.ts +2 -2
  595. package/out/commands/eval/gauntlet-build.d.ts.map +1 -1
  596. package/out/commands/eval/gauntlet-build.js +2 -2
  597. package/out/commands/eval/gauntlet-build.js.map +1 -1
  598. package/out/commands/eval/gauntlet.d.ts +16 -1
  599. package/out/commands/eval/gauntlet.d.ts.map +1 -1
  600. package/out/commands/eval/gauntlet.js +56 -4
  601. package/out/commands/eval/gauntlet.js.map +1 -1
  602. package/out/commands/eval/invariance.d.ts +9 -5
  603. package/out/commands/eval/invariance.d.ts.map +1 -1
  604. package/out/commands/eval/invariance.js +9 -5
  605. package/out/commands/eval/invariance.js.map +1 -1
  606. package/out/commands/eval/ledger-append.d.ts +1 -1
  607. package/out/commands/eval/ledger-append.d.ts.map +1 -1
  608. package/out/commands/eval/ledger-append.js +1 -1
  609. package/out/commands/eval/ledger-append.js.map +1 -1
  610. package/out/commands/eval/mask-regression.d.ts +1 -1
  611. package/out/commands/eval/mask-regression.d.ts.map +1 -1
  612. package/out/commands/eval/mask-regression.js +1 -1
  613. package/out/commands/eval/mask-regression.js.map +1 -1
  614. package/out/commands/eval/oa-resolver.d.ts +6 -3
  615. package/out/commands/eval/oa-resolver.d.ts.map +1 -1
  616. package/out/commands/eval/oa-resolver.js +30 -5
  617. package/out/commands/eval/oa-resolver.js.map +1 -1
  618. package/out/commands/eval/oracle-k.d.ts +1 -1
  619. package/out/commands/eval/oracle-k.d.ts.map +1 -1
  620. package/out/commands/eval/oracle-k.js +1 -1
  621. package/out/commands/eval/oracle-k.js.map +1 -1
  622. package/out/commands/eval/parity.d.ts +1 -1
  623. package/out/commands/eval/parity.d.ts.map +1 -1
  624. package/out/commands/eval/parity.js +1 -1
  625. package/out/commands/eval/parity.js.map +1 -1
  626. package/out/commands/eval/poi-board.d.ts +1 -1
  627. package/out/commands/eval/poi-board.d.ts.map +1 -1
  628. package/out/commands/eval/poi-board.js +3 -3
  629. package/out/commands/eval/poi-board.js.map +1 -1
  630. package/out/commands/eval/preset-compare.d.ts +1 -1
  631. package/out/commands/eval/preset-compare.d.ts.map +1 -1
  632. package/out/commands/eval/preset-compare.js +1 -1
  633. package/out/commands/eval/preset-compare.js.map +1 -1
  634. package/out/commands/eval/score-trends.d.ts +20 -0
  635. package/out/commands/eval/score-trends.d.ts.map +1 -0
  636. package/out/commands/eval/score-trends.js +30 -0
  637. package/out/commands/eval/score-trends.js.map +1 -0
  638. package/out/commands/filer/edgar-ingest.d.ts +21 -0
  639. package/out/commands/filer/edgar-ingest.d.ts.map +1 -0
  640. package/out/commands/filer/edgar-ingest.js +58 -0
  641. package/out/commands/filer/edgar-ingest.js.map +1 -0
  642. package/out/commands/filer/linkage-eval.d.ts +2 -2
  643. package/out/commands/filer/linkage-eval.d.ts.map +1 -1
  644. package/out/commands/filer/linkage-eval.js +2 -2
  645. package/out/commands/filer/linkage-eval.js.map +1 -1
  646. package/out/commands/gazetteer/affix-relabel.d.ts +6 -2
  647. package/out/commands/gazetteer/affix-relabel.d.ts.map +1 -1
  648. package/out/commands/gazetteer/affix-relabel.js +18 -8
  649. package/out/commands/gazetteer/affix-relabel.js.map +1 -1
  650. package/out/commands/gazetteer/anchor-lexicon.d.ts +2 -2
  651. package/out/commands/gazetteer/anchor-lexicon.d.ts.map +1 -1
  652. package/out/commands/gazetteer/anchor-lexicon.js +5 -10
  653. package/out/commands/gazetteer/anchor-lexicon.js.map +1 -1
  654. package/out/commands/gazetteer/build/admin.d.ts +1 -1
  655. package/out/commands/gazetteer/build/admin.d.ts.map +1 -1
  656. package/out/commands/gazetteer/build/admin.js +2 -2
  657. package/out/commands/gazetteer/build/admin.js.map +1 -1
  658. package/out/commands/gazetteer/build/anchor-lookup.d.ts +10 -1
  659. package/out/commands/gazetteer/build/anchor-lookup.d.ts.map +1 -1
  660. package/out/commands/gazetteer/build/anchor-lookup.js +23 -3
  661. package/out/commands/gazetteer/build/anchor-lookup.js.map +1 -1
  662. package/out/commands/gazetteer/build/bdc.d.ts +7 -7
  663. package/out/commands/gazetteer/build/bdc.d.ts.map +1 -1
  664. package/out/commands/gazetteer/build/bdc.js +13 -13
  665. package/out/commands/gazetteer/build/bdc.js.map +1 -1
  666. package/out/commands/gazetteer/build/candidate.d.ts +3 -1
  667. package/out/commands/gazetteer/build/candidate.d.ts.map +1 -1
  668. package/out/commands/gazetteer/build/candidate.js +36 -6
  669. package/out/commands/gazetteer/build/candidate.js.map +1 -1
  670. package/out/commands/gazetteer/build/coincident-roles.d.ts +1 -1
  671. package/out/commands/gazetteer/build/coincident-roles.d.ts.map +1 -1
  672. package/out/commands/gazetteer/build/coincident-roles.js +1 -1
  673. package/out/commands/gazetteer/build/coincident-roles.js.map +1 -1
  674. package/out/commands/gazetteer/build/fst.d.ts +1 -1
  675. package/out/commands/gazetteer/build/fst.d.ts.map +1 -1
  676. package/out/commands/gazetteer/build/fst.js +1 -1
  677. package/out/commands/gazetteer/build/fst.js.map +1 -1
  678. package/out/commands/gazetteer/build/fts.d.ts +1 -1
  679. package/out/commands/gazetteer/build/fts.d.ts.map +1 -1
  680. package/out/commands/gazetteer/build/fts.js +1 -1
  681. package/out/commands/gazetteer/build/fts.js.map +1 -1
  682. package/out/commands/gazetteer/build/index.d.ts +1 -1
  683. package/out/commands/gazetteer/build/index.d.ts.map +1 -1
  684. package/out/commands/gazetteer/build/index.js +2 -2
  685. package/out/commands/gazetteer/build/index.js.map +1 -1
  686. package/out/commands/gazetteer/build/locality-surface-lexicon.d.ts +1 -1
  687. package/out/commands/gazetteer/build/locality-surface-lexicon.d.ts.map +1 -1
  688. package/out/commands/gazetteer/build/locality-surface-lexicon.js +1 -1
  689. package/out/commands/gazetteer/build/locality-surface-lexicon.js.map +1 -1
  690. package/out/commands/gazetteer/build/nl-pc6.d.ts +1 -1
  691. package/out/commands/gazetteer/build/nl-pc6.d.ts.map +1 -1
  692. package/out/commands/gazetteer/build/nl-pc6.js +1 -1
  693. package/out/commands/gazetteer/build/nl-pc6.js.map +1 -1
  694. package/out/commands/gazetteer/build/poi-brands.d.ts +1 -1
  695. package/out/commands/gazetteer/build/poi-brands.d.ts.map +1 -1
  696. package/out/commands/gazetteer/build/poi-brands.js +2 -2
  697. package/out/commands/gazetteer/build/poi-brands.js.map +1 -1
  698. package/out/commands/gazetteer/build/poi.d.ts +4 -4
  699. package/out/commands/gazetteer/build/poi.d.ts.map +1 -1
  700. package/out/commands/gazetteer/build/poi.js +10 -11
  701. package/out/commands/gazetteer/build/poi.js.map +1 -1
  702. package/out/commands/gazetteer/build/postcode-codepoint.d.ts +27 -0
  703. package/out/commands/gazetteer/build/postcode-codepoint.d.ts.map +1 -0
  704. package/out/commands/gazetteer/build/postcode-codepoint.js +64 -0
  705. package/out/commands/gazetteer/build/postcode-codepoint.js.map +1 -0
  706. package/out/commands/gazetteer/build/postcode-geonames.d.ts +26 -0
  707. package/out/commands/gazetteer/build/postcode-geonames.d.ts.map +1 -0
  708. package/out/commands/gazetteer/build/postcode-geonames.js +66 -0
  709. package/out/commands/gazetteer/build/postcode-geonames.js.map +1 -0
  710. package/out/commands/gazetteer/build/postcode-locality.d.ts +2 -2
  711. package/out/commands/gazetteer/build/postcode-locality.d.ts.map +1 -1
  712. package/out/commands/gazetteer/build/postcode-locality.js +3 -3
  713. package/out/commands/gazetteer/build/postcode-locality.js.map +1 -1
  714. package/out/commands/gazetteer/build/postcode-ni-osm.d.ts +31 -0
  715. package/out/commands/gazetteer/build/postcode-ni-osm.d.ts.map +1 -0
  716. package/out/commands/gazetteer/build/postcode-ni-osm.js +79 -0
  717. package/out/commands/gazetteer/build/postcode-ni-osm.js.map +1 -0
  718. package/out/commands/gazetteer/build/postcode-prefix.d.ts +46 -0
  719. package/out/commands/gazetteer/build/postcode-prefix.d.ts.map +1 -0
  720. package/out/commands/gazetteer/build/postcode-prefix.js +196 -0
  721. package/out/commands/gazetteer/build/postcode-prefix.js.map +1 -0
  722. package/out/commands/gazetteer/build/postcode-shard.d.ts +1 -1
  723. package/out/commands/gazetteer/build/postcode-shard.d.ts.map +1 -1
  724. package/out/commands/gazetteer/build/postcode-shard.js +2 -2
  725. package/out/commands/gazetteer/build/postcode-shard.js.map +1 -1
  726. package/out/commands/gazetteer/build/street-morphology.d.ts +1 -1
  727. package/out/commands/gazetteer/build/street-morphology.d.ts.map +1 -1
  728. package/out/commands/gazetteer/build/street-morphology.js +1 -1
  729. package/out/commands/gazetteer/build/street-morphology.js.map +1 -1
  730. package/out/commands/gazetteer/build/street-type-lexicon.d.ts +1 -1
  731. package/out/commands/gazetteer/build/street-type-lexicon.d.ts.map +1 -1
  732. package/out/commands/gazetteer/build/street-type-lexicon.js +1 -1
  733. package/out/commands/gazetteer/build/street-type-lexicon.js.map +1 -1
  734. package/out/commands/gazetteer/census.d.ts +1 -1
  735. package/out/commands/gazetteer/census.d.ts.map +1 -1
  736. package/out/commands/gazetteer/census.js +1 -1
  737. package/out/commands/gazetteer/census.js.map +1 -1
  738. package/out/commands/gazetteer/conventions.d.ts +1 -1
  739. package/out/commands/gazetteer/conventions.d.ts.map +1 -1
  740. package/out/commands/gazetteer/conventions.js +3 -2
  741. package/out/commands/gazetteer/conventions.js.map +1 -1
  742. package/out/commands/gazetteer/granularity.d.ts +1 -1
  743. package/out/commands/gazetteer/granularity.d.ts.map +1 -1
  744. package/out/commands/gazetteer/granularity.js +2 -2
  745. package/out/commands/gazetteer/granularity.js.map +1 -1
  746. package/out/commands/gazetteer/importance.d.ts +23 -6
  747. package/out/commands/gazetteer/importance.d.ts.map +1 -1
  748. package/out/commands/gazetteer/importance.js +113 -49
  749. package/out/commands/gazetteer/importance.js.map +1 -1
  750. package/out/commands/gazetteer/inspect/fst.d.ts +1 -1
  751. package/out/commands/gazetteer/inspect/fst.d.ts.map +1 -1
  752. package/out/commands/gazetteer/inspect/fst.js +8 -6
  753. package/out/commands/gazetteer/inspect/fst.js.map +1 -1
  754. package/out/commands/gazetteer/inspect/graph.d.ts +1 -1
  755. package/out/commands/gazetteer/inspect/graph.d.ts.map +1 -1
  756. package/out/commands/gazetteer/inspect/graph.js +1 -16
  757. package/out/commands/gazetteer/inspect/graph.js.map +1 -1
  758. package/out/commands/gazetteer/inspect/mermaid.d.ts +1 -1
  759. package/out/commands/gazetteer/inspect/mermaid.d.ts.map +1 -1
  760. package/out/commands/gazetteer/inspect/mermaid.js +1 -16
  761. package/out/commands/gazetteer/inspect/mermaid.js.map +1 -1
  762. package/out/commands/gazetteer/inspect/placetype-stats.d.ts +1 -1
  763. package/out/commands/gazetteer/inspect/placetype-stats.d.ts.map +1 -1
  764. package/out/commands/gazetteer/inspect/placetype-stats.js +1 -1
  765. package/out/commands/gazetteer/inspect/placetype-stats.js.map +1 -1
  766. package/out/commands/gazetteer/inspect/sync.d.ts +1 -1
  767. package/out/commands/gazetteer/inspect/sync.d.ts.map +1 -1
  768. package/out/commands/gazetteer/inspect/sync.js +5 -4
  769. package/out/commands/gazetteer/inspect/sync.js.map +1 -1
  770. package/out/commands/gazetteer/inspect/tree.d.ts +1 -1
  771. package/out/commands/gazetteer/inspect/tree.d.ts.map +1 -1
  772. package/out/commands/gazetteer/inspect/tree.js +1 -16
  773. package/out/commands/gazetteer/inspect/tree.js.map +1 -1
  774. package/out/commands/gazetteer/overture-ingest.d.ts +1 -1
  775. package/out/commands/gazetteer/overture-ingest.d.ts.map +1 -1
  776. package/out/commands/gazetteer/overture-ingest.js +1 -1
  777. package/out/commands/gazetteer/overture-ingest.js.map +1 -1
  778. package/out/commands/gazetteer/pair-index.d.ts +12 -4
  779. package/out/commands/gazetteer/pair-index.d.ts.map +1 -1
  780. package/out/commands/gazetteer/pair-index.js +77 -34
  781. package/out/commands/gazetteer/pair-index.js.map +1 -1
  782. package/out/commands/gazetteer/polygons.d.ts +1 -1
  783. package/out/commands/gazetteer/polygons.d.ts.map +1 -1
  784. package/out/commands/gazetteer/polygons.js +8 -14
  785. package/out/commands/gazetteer/polygons.js.map +1 -1
  786. package/out/commands/gazetteer/postal-alias.d.ts +1 -1
  787. package/out/commands/gazetteer/postal-alias.d.ts.map +1 -1
  788. package/out/commands/gazetteer/postal-alias.js +1 -1
  789. package/out/commands/gazetteer/postal-alias.js.map +1 -1
  790. package/out/commands/gazetteer/postal-city.d.ts +1 -1
  791. package/out/commands/gazetteer/postal-city.d.ts.map +1 -1
  792. package/out/commands/gazetteer/postal-city.js +1 -1
  793. package/out/commands/gazetteer/postal-city.js.map +1 -1
  794. package/out/commands/gazetteer/postcode-binary.d.ts +24 -9
  795. package/out/commands/gazetteer/postcode-binary.d.ts.map +1 -1
  796. package/out/commands/gazetteer/postcode-binary.js +60 -60
  797. package/out/commands/gazetteer/postcode-binary.js.map +1 -1
  798. package/out/commands/gazetteer/postcode-intl.d.ts +1 -1
  799. package/out/commands/gazetteer/postcode-intl.d.ts.map +1 -1
  800. package/out/commands/gazetteer/postcode-intl.js +1 -1
  801. package/out/commands/gazetteer/postcode-intl.js.map +1 -1
  802. package/out/commands/gazetteer/promote.d.ts +1 -1
  803. package/out/commands/gazetteer/promote.d.ts.map +1 -1
  804. package/out/commands/gazetteer/promote.js +2 -2
  805. package/out/commands/gazetteer/promote.js.map +1 -1
  806. package/out/commands/gazetteer/publish.d.ts +1 -1
  807. package/out/commands/gazetteer/publish.d.ts.map +1 -1
  808. package/out/commands/gazetteer/publish.js +2 -2
  809. package/out/commands/gazetteer/publish.js.map +1 -1
  810. package/out/commands/gazetteer/release.d.ts +1 -1
  811. package/out/commands/gazetteer/release.d.ts.map +1 -1
  812. package/out/commands/gazetteer/release.js +5 -4
  813. package/out/commands/gazetteer/release.js.map +1 -1
  814. package/out/commands/gazetteer/verify-codepoint.d.ts +22 -0
  815. package/out/commands/gazetteer/verify-codepoint.d.ts.map +1 -0
  816. package/out/commands/gazetteer/verify-codepoint.js +48 -0
  817. package/out/commands/gazetteer/verify-codepoint.js.map +1 -0
  818. package/out/commands/gazetteer/verify.d.ts +10 -1
  819. package/out/commands/gazetteer/verify.d.ts.map +1 -1
  820. package/out/commands/gazetteer/verify.js +36 -2
  821. package/out/commands/gazetteer/verify.js.map +1 -1
  822. package/out/commands/geocode.d.ts +49 -1
  823. package/out/commands/geocode.d.ts.map +1 -1
  824. package/out/commands/geocode.js +127 -8
  825. package/out/commands/geocode.js.map +1 -1
  826. package/out/commands/gnaf/assemble.d.ts +1 -1
  827. package/out/commands/gnaf/assemble.d.ts.map +1 -1
  828. package/out/commands/gnaf/assemble.js +1 -1
  829. package/out/commands/gnaf/assemble.js.map +1 -1
  830. package/out/commands/openapi.d.ts +1 -1
  831. package/out/commands/openapi.d.ts.map +1 -1
  832. package/out/commands/openapi.js +1 -1
  833. package/out/commands/openapi.js.map +1 -1
  834. package/out/commands/parse.d.ts +40 -11
  835. package/out/commands/parse.d.ts.map +1 -1
  836. package/out/commands/parse.js +143 -35
  837. package/out/commands/parse.js.map +1 -1
  838. package/out/commands/placer/build-dataset.d.ts +2 -2
  839. package/out/commands/placer/build-dataset.d.ts.map +1 -1
  840. package/out/commands/placer/build-dataset.js +1 -1
  841. package/out/commands/placer/build-dataset.js.map +1 -1
  842. package/out/commands/placer/eval.d.ts +1 -1
  843. package/out/commands/placer/eval.d.ts.map +1 -1
  844. package/out/commands/placer/eval.js +1 -1
  845. package/out/commands/placer/eval.js.map +1 -1
  846. package/out/commands/placer/probe-frontier.d.ts +1 -1
  847. package/out/commands/placer/probe-frontier.d.ts.map +1 -1
  848. package/out/commands/placer/probe-frontier.js +1 -1
  849. package/out/commands/placer/probe-frontier.js.map +1 -1
  850. package/out/commands/placer/quantize.d.ts +1 -1
  851. package/out/commands/placer/quantize.d.ts.map +1 -1
  852. package/out/commands/placer/quantize.js +1 -1
  853. package/out/commands/placer/quantize.js.map +1 -1
  854. package/out/commands/placer/train.d.ts +1 -1
  855. package/out/commands/placer/train.d.ts.map +1 -1
  856. package/out/commands/placer/train.js +1 -1
  857. package/out/commands/placer/train.js.map +1 -1
  858. package/out/commands/poi.d.ts +1 -1
  859. package/out/commands/poi.d.ts.map +1 -1
  860. package/out/commands/poi.js +10 -2
  861. package/out/commands/poi.js.map +1 -1
  862. package/out/commands/registry/convert/tx-hhsc.d.ts +1 -1
  863. package/out/commands/registry/convert/tx-hhsc.d.ts.map +1 -1
  864. package/out/commands/registry/convert/tx-hhsc.js +1 -1
  865. package/out/commands/registry/convert/tx-hhsc.js.map +1 -1
  866. package/out/commands/registry/dedup-ceiling.d.ts +1 -1
  867. package/out/commands/registry/dedup-ceiling.d.ts.map +1 -1
  868. package/out/commands/registry/dedup-ceiling.js +1 -1
  869. package/out/commands/registry/dedup-ceiling.js.map +1 -1
  870. package/out/commands/registry/gold-set-sample.d.ts +2 -2
  871. package/out/commands/registry/gold-set-sample.d.ts.map +1 -1
  872. package/out/commands/registry/gold-set-sample.js +3 -3
  873. package/out/commands/registry/gold-set-sample.js.map +1 -1
  874. package/out/commands/registry/matcher-scale.d.ts +1 -1
  875. package/out/commands/registry/matcher-scale.d.ts.map +1 -1
  876. package/out/commands/registry/matcher-scale.js +1 -1
  877. package/out/commands/registry/matcher-scale.js.map +1 -1
  878. package/out/commands/registry/run.d.ts +1 -1
  879. package/out/commands/registry/run.d.ts.map +1 -1
  880. package/out/commands/registry/run.js +15 -14
  881. package/out/commands/registry/run.js.map +1 -1
  882. package/out/commands/registry/scorer-eval.d.ts +1 -1
  883. package/out/commands/registry/scorer-eval.d.ts.map +1 -1
  884. package/out/commands/registry/scorer-eval.js +1 -1
  885. package/out/commands/registry/scorer-eval.js.map +1 -1
  886. package/out/commands/registry/train-scorer.d.ts +1 -1
  887. package/out/commands/registry/train-scorer.d.ts.map +1 -1
  888. package/out/commands/registry/train-scorer.js +1 -1
  889. package/out/commands/registry/train-scorer.js.map +1 -1
  890. package/out/commands/registry/viz.d.ts +3 -3
  891. package/out/commands/registry/viz.d.ts.map +1 -1
  892. package/out/commands/registry/viz.js +9 -9
  893. package/out/commands/registry/viz.js.map +1 -1
  894. package/out/commands/release/hf.d.ts +1 -1
  895. package/out/commands/release/hf.d.ts.map +1 -1
  896. package/out/commands/release/hf.js +2 -2
  897. package/out/commands/release/hf.js.map +1 -1
  898. package/out/commands/reverse.d.ts +1 -1
  899. package/out/commands/reverse.d.ts.map +1 -1
  900. package/out/commands/reverse.js +12 -5
  901. package/out/commands/reverse.js.map +1 -1
  902. package/out/commands/serve.d.ts +1 -1
  903. package/out/commands/serve.d.ts.map +1 -1
  904. package/out/commands/serve.js +5 -1
  905. package/out/commands/serve.js.map +1 -1
  906. package/out/commands/situs/address-points.d.ts +2 -2
  907. package/out/commands/situs/address-points.d.ts.map +1 -1
  908. package/out/commands/situs/address-points.js +12 -24
  909. package/out/commands/situs/address-points.js.map +1 -1
  910. package/out/commands/situs/attribution-manifest.d.ts +1 -1
  911. package/out/commands/situs/attribution-manifest.d.ts.map +1 -1
  912. package/out/commands/situs/attribution-manifest.js +1 -1
  913. package/out/commands/situs/attribution-manifest.js.map +1 -1
  914. package/out/commands/situs/build.d.ts +2 -2
  915. package/out/commands/situs/build.d.ts.map +1 -1
  916. package/out/commands/situs/build.js +6 -6
  917. package/out/commands/situs/build.js.map +1 -1
  918. package/out/commands/situs/interpolation-shard.d.ts +1 -1
  919. package/out/commands/situs/interpolation-shard.d.ts.map +1 -1
  920. package/out/commands/situs/interpolation-shard.js +6 -24
  921. package/out/commands/situs/interpolation-shard.js.map +1 -1
  922. package/out/commands/situs/interpolation.d.ts +1 -1
  923. package/out/commands/situs/interpolation.d.ts.map +1 -1
  924. package/out/commands/situs/interpolation.js +23 -20
  925. package/out/commands/situs/interpolation.js.map +1 -1
  926. package/out/commands/skill/install.d.ts +46 -0
  927. package/out/commands/skill/install.d.ts.map +1 -0
  928. package/out/commands/skill/install.js +96 -0
  929. package/out/commands/skill/install.js.map +1 -0
  930. package/out/commands/tiger/fetch.d.ts +1 -1
  931. package/out/commands/tiger/fetch.d.ts.map +1 -1
  932. package/out/commands/tiger/fetch.js +1 -1
  933. package/out/commands/tiger/fetch.js.map +1 -1
  934. package/out/commands/tiger/race-dots-map.d.ts +1 -1
  935. package/out/commands/tiger/race-dots-map.d.ts.map +1 -1
  936. package/out/commands/tiger/race-dots-map.js +1 -1
  937. package/out/commands/tiger/race-dots-map.js.map +1 -1
  938. package/out/commands/tiger/race-dots.d.ts +1 -1
  939. package/out/commands/tiger/race-dots.d.ts.map +1 -1
  940. package/out/commands/tiger/race-dots.js +1 -1
  941. package/out/commands/tiger/race-dots.js.map +1 -1
  942. package/out/commands/tiger/redistricting.d.ts +1 -1
  943. package/out/commands/tiger/redistricting.d.ts.map +1 -1
  944. package/out/commands/tiger/redistricting.js +1 -1
  945. package/out/commands/tiger/redistricting.js.map +1 -1
  946. package/out/commands/tiles/publish.d.ts +1 -1
  947. package/out/commands/tiles/publish.d.ts.map +1 -1
  948. package/out/commands/tiles/publish.js +1 -1
  949. package/out/commands/tiles/publish.js.map +1 -1
  950. package/out/commands/wof/graph.d.ts.map +1 -1
  951. package/out/commands/wof/graph.js +1 -1
  952. package/out/commands/wof/graph.js.map +1 -1
  953. package/out/commands/wof/mermaid.d.ts.map +1 -1
  954. package/out/commands/wof/mermaid.js +1 -1
  955. package/out/commands/wof/mermaid.js.map +1 -1
  956. package/out/commands/wof/prepare.d.ts.map +1 -1
  957. package/out/commands/wof/prepare.js +1 -1
  958. package/out/commands/wof/prepare.js.map +1 -1
  959. package/out/commands/wof/sync.d.ts.map +1 -1
  960. package/out/commands/wof/sync.js +1 -1
  961. package/out/commands/wof/sync.js.map +1 -1
  962. package/out/commands/wof/tree.d.ts.map +1 -1
  963. package/out/commands/wof/tree.js +1 -1
  964. package/out/commands/wof/tree.js.map +1 -1
  965. package/out/data-bundles.d.ts +171 -0
  966. package/out/data-bundles.d.ts.map +1 -0
  967. package/out/data-bundles.js +270 -0
  968. package/out/data-bundles.js.map +1 -0
  969. package/out/data-release.d.ts.map +1 -1
  970. package/out/data-release.js +5 -3
  971. package/out/data-release.js.map +1 -1
  972. package/out/dev-tools/build-gb-anchor-bin.run.d.ts +38 -0
  973. package/out/dev-tools/build-gb-anchor-bin.run.d.ts.map +1 -0
  974. package/out/dev-tools/build-gb-anchor-bin.run.js +103 -0
  975. package/out/dev-tools/build-gb-anchor-bin.run.js.map +1 -0
  976. package/out/dev-tools/build-hard-slice-board.run.d.ts +25 -0
  977. package/out/dev-tools/build-hard-slice-board.run.d.ts.map +1 -0
  978. package/out/dev-tools/build-hard-slice-board.run.js +183 -0
  979. package/out/dev-tools/build-hard-slice-board.run.js.map +1 -0
  980. package/out/dev-tools/capture-v1-parse.run.js +10 -9
  981. package/out/dev-tools/capture-v1-parse.run.js.map +1 -1
  982. package/out/dev-tools/convert-parity-fixtures.run.js +10 -4
  983. package/out/dev-tools/convert-parity-fixtures.run.js.map +1 -1
  984. package/out/dev-tools/diff-territory-spans.run.d.ts +20 -0
  985. package/out/dev-tools/diff-territory-spans.run.d.ts.map +1 -0
  986. package/out/dev-tools/diff-territory-spans.run.js +86 -0
  987. package/out/dev-tools/diff-territory-spans.run.js.map +1 -0
  988. package/out/dev-tools/extract-parity-corpus.run.js +9 -3
  989. package/out/dev-tools/extract-parity-corpus.run.js.map +1 -1
  990. package/out/dev-tools/failure-census.run.js +0 -0
  991. package/out/dev-tools/failure-census.run.js.map +1 -1
  992. package/out/dev-tools/failure-report.run.js +0 -0
  993. package/out/dev-tools/failure-report.run.js.map +1 -1
  994. package/out/dev-tools/gb-fragment-board.run.d.ts +31 -0
  995. package/out/dev-tools/gb-fragment-board.run.d.ts.map +1 -0
  996. package/out/dev-tools/gb-fragment-board.run.js +134 -0
  997. package/out/dev-tools/gb-fragment-board.run.js.map +1 -0
  998. package/out/dev-tools/hard-slice-rows-toponym.d.ts +24 -0
  999. package/out/dev-tools/hard-slice-rows-toponym.d.ts.map +1 -0
  1000. package/out/dev-tools/hard-slice-rows-toponym.js +483 -0
  1001. package/out/dev-tools/hard-slice-rows-toponym.js.map +1 -0
  1002. package/out/dev-tools/hard-slice-rows.d.ts +53 -0
  1003. package/out/dev-tools/hard-slice-rows.d.ts.map +1 -0
  1004. package/out/dev-tools/hard-slice-rows.js +371 -0
  1005. package/out/dev-tools/hard-slice-rows.js.map +1 -0
  1006. package/out/dev-tools/hard-slice-sweep-rows.d.ts +34 -0
  1007. package/out/dev-tools/hard-slice-sweep-rows.d.ts.map +1 -0
  1008. package/out/dev-tools/hard-slice-sweep-rows.js +166 -0
  1009. package/out/dev-tools/hard-slice-sweep-rows.js.map +1 -0
  1010. package/out/dev-tools/lint-mdx-angles.d.ts.map +1 -1
  1011. package/out/dev-tools/lint-mdx-angles.js +3 -4
  1012. package/out/dev-tools/lint-mdx-angles.js.map +1 -1
  1013. package/out/dev-tools/postcode-coherence-coverage.run.d.ts +25 -0
  1014. package/out/dev-tools/postcode-coherence-coverage.run.d.ts.map +1 -0
  1015. package/out/dev-tools/postcode-coherence-coverage.run.js +115 -0
  1016. package/out/dev-tools/postcode-coherence-coverage.run.js.map +1 -0
  1017. package/out/dev-tools/postcode-coherence-scale.run.d.ts +42 -0
  1018. package/out/dev-tools/postcode-coherence-scale.run.d.ts.map +1 -0
  1019. package/out/dev-tools/postcode-coherence-scale.run.js +164 -0
  1020. package/out/dev-tools/postcode-coherence-scale.run.js.map +1 -0
  1021. package/out/dev-tools/probe-comma-free-locality.run.d.ts +24 -0
  1022. package/out/dev-tools/probe-comma-free-locality.run.d.ts.map +1 -0
  1023. package/out/dev-tools/probe-comma-free-locality.run.js +84 -0
  1024. package/out/dev-tools/probe-comma-free-locality.run.js.map +1 -0
  1025. package/out/dev-tools/probe-fst-bias.run.d.ts +26 -0
  1026. package/out/dev-tools/probe-fst-bias.run.d.ts.map +1 -0
  1027. package/out/dev-tools/probe-fst-bias.run.js +92 -0
  1028. package/out/dev-tools/probe-fst-bias.run.js.map +1 -0
  1029. package/out/dev-tools/probe-query-intent.run.d.ts +92 -0
  1030. package/out/dev-tools/probe-query-intent.run.d.ts.map +1 -0
  1031. package/out/dev-tools/probe-query-intent.run.js +145 -0
  1032. package/out/dev-tools/probe-query-intent.run.js.map +1 -0
  1033. package/out/dev-tools/probe-referential-delta.run.d.ts +35 -0
  1034. package/out/dev-tools/probe-referential-delta.run.d.ts.map +1 -0
  1035. package/out/dev-tools/probe-referential-delta.run.js +128 -0
  1036. package/out/dev-tools/probe-referential-delta.run.js.map +1 -0
  1037. package/out/dev-tools/router-kind-probe.run.js +2 -6
  1038. package/out/dev-tools/router-kind-probe.run.js.map +1 -1
  1039. package/out/dev-tools/score-anchor-v2-boards.run.d.ts +35 -0
  1040. package/out/dev-tools/score-anchor-v2-boards.run.d.ts.map +1 -0
  1041. package/out/dev-tools/score-anchor-v2-boards.run.js +217 -0
  1042. package/out/dev-tools/score-anchor-v2-boards.run.js.map +1 -0
  1043. package/out/dev-tools/score-hard-slice-board.run.d.ts +51 -0
  1044. package/out/dev-tools/score-hard-slice-board.run.d.ts.map +1 -0
  1045. package/out/dev-tools/score-hard-slice-board.run.js +314 -0
  1046. package/out/dev-tools/score-hard-slice-board.run.js.map +1 -0
  1047. package/out/dev-tools/score-interesting-addresses.run.d.ts +10 -0
  1048. package/out/dev-tools/score-interesting-addresses.run.d.ts.map +1 -0
  1049. package/out/dev-tools/score-interesting-addresses.run.js +76 -0
  1050. package/out/dev-tools/score-interesting-addresses.run.js.map +1 -0
  1051. package/out/dev-tools/score-street-name-boundaries.run.d.ts +9 -0
  1052. package/out/dev-tools/score-street-name-boundaries.run.d.ts.map +1 -0
  1053. package/out/dev-tools/score-street-name-boundaries.run.js +64 -0
  1054. package/out/dev-tools/score-street-name-boundaries.run.js.map +1 -0
  1055. package/out/dev-tools/score-world-structures.run.d.ts +19 -0
  1056. package/out/dev-tools/score-world-structures.run.d.ts.map +1 -0
  1057. package/out/dev-tools/score-world-structures.run.js +82 -0
  1058. package/out/dev-tools/score-world-structures.run.js.map +1 -0
  1059. package/out/dev-tools/us-recall-flip-census.run.js +2 -6
  1060. package/out/dev-tools/us-recall-flip-census.run.js.map +1 -1
  1061. package/out/doctor/checks.d.ts +24 -14
  1062. package/out/doctor/checks.d.ts.map +1 -1
  1063. package/out/doctor/checks.js +39 -17
  1064. package/out/doctor/checks.js.map +1 -1
  1065. package/out/doctor/runner.d.ts +33 -4
  1066. package/out/doctor/runner.d.ts.map +1 -1
  1067. package/out/doctor/runner.js +75 -20
  1068. package/out/doctor/runner.js.map +1 -1
  1069. package/out/eval-harness/baseline-assert.d.ts.map +1 -1
  1070. package/out/eval-harness/baseline-assert.js +2 -1
  1071. package/out/eval-harness/baseline-assert.js.map +1 -1
  1072. package/out/eval-harness/capability-manifest.d.ts.map +1 -1
  1073. package/out/eval-harness/capability-manifest.js +10 -7
  1074. package/out/eval-harness/capability-manifest.js.map +1 -1
  1075. package/out/eval-harness/de-order-eval.d.ts +68 -0
  1076. package/out/eval-harness/de-order-eval.d.ts.map +1 -0
  1077. package/out/eval-harness/de-order-eval.js +121 -0
  1078. package/out/eval-harness/de-order-eval.js.map +1 -0
  1079. package/out/eval-harness/demo-cascade-rows.d.ts +58 -0
  1080. package/out/eval-harness/demo-cascade-rows.d.ts.map +1 -0
  1081. package/out/eval-harness/demo-cascade-rows.js +113 -0
  1082. package/out/eval-harness/demo-cascade-rows.js.map +1 -0
  1083. package/out/eval-harness/demo-cascade-smoke.d.ts +105 -0
  1084. package/out/eval-harness/demo-cascade-smoke.d.ts.map +1 -0
  1085. package/out/eval-harness/demo-cascade-smoke.js +278 -0
  1086. package/out/eval-harness/demo-cascade-smoke.js.map +1 -0
  1087. package/out/eval-harness/digit-board.d.ts.map +1 -1
  1088. package/out/eval-harness/digit-board.js +2 -6
  1089. package/out/eval-harness/digit-board.js.map +1 -1
  1090. package/out/eval-harness/error-analysis.d.ts.map +1 -1
  1091. package/out/eval-harness/error-analysis.js +5 -8
  1092. package/out/eval-harness/error-analysis.js.map +1 -1
  1093. package/out/eval-harness/external-arenas.d.ts +77 -0
  1094. package/out/eval-harness/external-arenas.d.ts.map +1 -0
  1095. package/out/eval-harness/external-arenas.js +115 -0
  1096. package/out/eval-harness/external-arenas.js.map +1 -0
  1097. package/out/eval-harness/fr-parse-recall.d.ts +85 -0
  1098. package/out/eval-harness/fr-parse-recall.d.ts.map +1 -0
  1099. package/out/eval-harness/fr-parse-recall.js +166 -0
  1100. package/out/eval-harness/fr-parse-recall.js.map +1 -0
  1101. package/out/eval-harness/fragment-board.d.ts.map +1 -1
  1102. package/out/eval-harness/fragment-board.js +2 -6
  1103. package/out/eval-harness/fragment-board.js.map +1 -1
  1104. package/out/eval-harness/fragment-dev.d.ts.map +1 -1
  1105. package/out/eval-harness/fragment-dev.js +2 -5
  1106. package/out/eval-harness/fragment-dev.js.map +1 -1
  1107. package/out/eval-harness/gauntlet/ablation-expectation.d.ts +551 -0
  1108. package/out/eval-harness/gauntlet/ablation-expectation.d.ts.map +1 -0
  1109. package/out/eval-harness/gauntlet/ablation-expectation.js +776 -0
  1110. package/out/eval-harness/gauntlet/ablation-expectation.js.map +1 -0
  1111. package/out/eval-harness/gauntlet/ablation-gazetteer.d.ts +73 -0
  1112. package/out/eval-harness/gauntlet/ablation-gazetteer.d.ts.map +1 -0
  1113. package/out/eval-harness/gauntlet/ablation-gazetteer.js +254 -0
  1114. package/out/eval-harness/gauntlet/ablation-gazetteer.js.map +1 -0
  1115. package/out/eval-harness/gauntlet/ablation-report.d.ts +51 -0
  1116. package/out/eval-harness/gauntlet/ablation-report.d.ts.map +1 -0
  1117. package/out/eval-harness/gauntlet/ablation-report.js +155 -0
  1118. package/out/eval-harness/gauntlet/ablation-report.js.map +1 -0
  1119. package/out/eval-harness/gauntlet/ablation-types.d.ts +232 -0
  1120. package/out/eval-harness/gauntlet/ablation-types.d.ts.map +1 -0
  1121. package/out/eval-harness/gauntlet/ablation-types.js +38 -0
  1122. package/out/eval-harness/gauntlet/ablation-types.js.map +1 -0
  1123. package/out/eval-harness/gauntlet/ablation.d.ts +176 -0
  1124. package/out/eval-harness/gauntlet/ablation.d.ts.map +1 -0
  1125. package/out/eval-harness/gauntlet/ablation.js +622 -0
  1126. package/out/eval-harness/gauntlet/ablation.js.map +1 -0
  1127. package/out/eval-harness/gauntlet/build-fdic-holdout.js +2 -2
  1128. package/out/eval-harness/gauntlet/build-fdic-holdout.js.map +1 -1
  1129. package/out/eval-harness/gauntlet/build-regression-db.d.ts +19 -2
  1130. package/out/eval-harness/gauntlet/build-regression-db.d.ts.map +1 -1
  1131. package/out/eval-harness/gauntlet/build-regression-db.js +29 -18
  1132. package/out/eval-harness/gauntlet/build-regression-db.js.map +1 -1
  1133. package/out/eval-harness/gauntlet/cases/load.d.ts +57 -0
  1134. package/out/eval-harness/gauntlet/cases/load.d.ts.map +1 -0
  1135. package/out/eval-harness/gauntlet/cases/load.js +150 -0
  1136. package/out/eval-harness/gauntlet/cases/load.js.map +1 -0
  1137. package/out/eval-harness/gauntlet/cases/seed-case.d.ts +132 -0
  1138. package/out/eval-harness/gauntlet/cases/seed-case.d.ts.map +1 -0
  1139. package/out/eval-harness/gauntlet/cases/seed-case.js +103 -0
  1140. package/out/eval-harness/gauntlet/cases/seed-case.js.map +1 -0
  1141. package/out/eval-harness/gauntlet/check-case.d.ts +67 -0
  1142. package/out/eval-harness/gauntlet/check-case.d.ts.map +1 -0
  1143. package/out/eval-harness/gauntlet/check-case.js +267 -0
  1144. package/out/eval-harness/gauntlet/check-case.js.map +1 -0
  1145. package/out/eval-harness/gauntlet/corpus-stamp.d.ts +60 -0
  1146. package/out/eval-harness/gauntlet/corpus-stamp.d.ts.map +1 -0
  1147. package/out/eval-harness/gauntlet/corpus-stamp.js +100 -0
  1148. package/out/eval-harness/gauntlet/corpus-stamp.js.map +1 -0
  1149. package/out/eval-harness/gauntlet/harness.d.ts +107 -6
  1150. package/out/eval-harness/gauntlet/harness.d.ts.map +1 -1
  1151. package/out/eval-harness/gauntlet/harness.js +107 -8
  1152. package/out/eval-harness/gauntlet/harness.js.map +1 -1
  1153. package/out/eval-harness/gauntlet/holdout.d.ts +7 -0
  1154. package/out/eval-harness/gauntlet/holdout.d.ts.map +1 -1
  1155. package/out/eval-harness/gauntlet/holdout.js +14 -8
  1156. package/out/eval-harness/gauntlet/holdout.js.map +1 -1
  1157. package/out/eval-harness/gauntlet/metamorphic.d.ts +1 -1
  1158. package/out/eval-harness/gauntlet/metamorphic.d.ts.map +1 -1
  1159. package/out/eval-harness/gauntlet/metamorphic.js +2 -9
  1160. package/out/eval-harness/gauntlet/metamorphic.js.map +1 -1
  1161. package/out/eval-harness/gauntlet/regression.d.ts +18 -1
  1162. package/out/eval-harness/gauntlet/regression.d.ts.map +1 -1
  1163. package/out/eval-harness/gauntlet/regression.js +43 -71
  1164. package/out/eval-harness/gauntlet/regression.js.map +1 -1
  1165. package/out/eval-harness/gauntlet/run.d.ts +60 -2
  1166. package/out/eval-harness/gauntlet/run.d.ts.map +1 -1
  1167. package/out/eval-harness/gauntlet/run.js +62 -3
  1168. package/out/eval-harness/gauntlet/run.js.map +1 -1
  1169. package/out/eval-harness/gauntlet/schema.d.ts +67 -2
  1170. package/out/eval-harness/gauntlet/schema.d.ts.map +1 -1
  1171. package/out/eval-harness/gauntlet/schema.js +27 -0
  1172. package/out/eval-harness/gauntlet/schema.js.map +1 -1
  1173. package/out/eval-harness/hard-slice-board.d.ts +185 -0
  1174. package/out/eval-harness/hard-slice-board.d.ts.map +1 -0
  1175. package/out/eval-harness/hard-slice-board.js +223 -0
  1176. package/out/eval-harness/hard-slice-board.js.map +1 -0
  1177. package/out/eval-harness/invariance/compare.d.ts +3 -3
  1178. package/out/eval-harness/invariance/compare.js +3 -3
  1179. package/out/eval-harness/invariance/runner.d.ts +64 -9
  1180. package/out/eval-harness/invariance/runner.d.ts.map +1 -1
  1181. package/out/eval-harness/invariance/runner.js +158 -58
  1182. package/out/eval-harness/invariance/runner.js.map +1 -1
  1183. package/out/eval-harness/invariance/transforms.js +2 -2
  1184. package/out/eval-harness/invariance/transforms.js.map +1 -1
  1185. package/out/eval-harness/ledger-append.d.ts.map +1 -1
  1186. package/out/eval-harness/ledger-append.js +5 -4
  1187. package/out/eval-harness/ledger-append.js.map +1 -1
  1188. package/out/eval-harness/mask-regression.d.ts.map +1 -1
  1189. package/out/eval-harness/mask-regression.js +6 -7
  1190. package/out/eval-harness/mask-regression.js.map +1 -1
  1191. package/out/eval-harness/oa-resolver-eval.d.ts +24 -3
  1192. package/out/eval-harness/oa-resolver-eval.d.ts.map +1 -1
  1193. package/out/eval-harness/oa-resolver-eval.js +40 -25
  1194. package/out/eval-harness/oa-resolver-eval.js.map +1 -1
  1195. package/out/eval-harness/oracle-k.d.ts +1 -1
  1196. package/out/eval-harness/oracle-k.d.ts.map +1 -1
  1197. package/out/eval-harness/oracle-k.js +7 -14
  1198. package/out/eval-harness/oracle-k.js.map +1 -1
  1199. package/out/eval-harness/parity-corpus.d.ts.map +1 -1
  1200. package/out/eval-harness/parity-corpus.js +3 -6
  1201. package/out/eval-harness/parity-corpus.js.map +1 -1
  1202. package/out/eval-harness/per-locale-f1.d.ts +128 -0
  1203. package/out/eval-harness/per-locale-f1.d.ts.map +1 -0
  1204. package/out/eval-harness/per-locale-f1.js +399 -0
  1205. package/out/eval-harness/per-locale-f1.js.map +1 -0
  1206. package/out/eval-harness/poi-board.d.ts +15 -15
  1207. package/out/eval-harness/poi-board.d.ts.map +1 -1
  1208. package/out/eval-harness/poi-board.js +13 -7
  1209. package/out/eval-harness/poi-board.js.map +1 -1
  1210. package/out/eval-harness/promotion-gate-verdict.d.ts.map +1 -1
  1211. package/out/eval-harness/promotion-gate-verdict.js +5 -3
  1212. package/out/eval-harness/promotion-gate-verdict.js.map +1 -1
  1213. package/out/eval-harness/promotion-gate.d.ts +30 -6
  1214. package/out/eval-harness/promotion-gate.d.ts.map +1 -1
  1215. package/out/eval-harness/promotion-gate.js +298 -103
  1216. package/out/eval-harness/promotion-gate.js.map +1 -1
  1217. package/out/eval-harness/score-affix.d.ts +85 -0
  1218. package/out/eval-harness/score-affix.d.ts.map +1 -0
  1219. package/out/eval-harness/score-affix.js +111 -0
  1220. package/out/eval-harness/score-affix.js.map +1 -0
  1221. package/out/eval-harness/score-country-homograph.d.ts +95 -0
  1222. package/out/eval-harness/score-country-homograph.d.ts.map +1 -0
  1223. package/out/eval-harness/score-country-homograph.js +121 -0
  1224. package/out/eval-harness/score-country-homograph.js.map +1 -0
  1225. package/out/eval-harness/score-trends.d.ts +45 -0
  1226. package/out/eval-harness/score-trends.d.ts.map +1 -0
  1227. package/out/eval-harness/score-trends.js +187 -0
  1228. package/out/eval-harness/score-trends.js.map +1 -0
  1229. package/out/eval-harness/v0-tree-adapter.d.ts +0 -5
  1230. package/out/eval-harness/v0-tree-adapter.d.ts.map +1 -1
  1231. package/out/eval-harness/v0-tree-adapter.js +0 -5
  1232. package/out/eval-harness/v0-tree-adapter.js.map +1 -1
  1233. package/out/gazetteer-pipeline/admin/enrich.d.ts.map +1 -1
  1234. package/out/gazetteer-pipeline/admin/enrich.js +16 -7
  1235. package/out/gazetteer-pipeline/admin/enrich.js.map +1 -1
  1236. package/out/gazetteer-pipeline/admin/fold-geonames.d.ts +14 -15
  1237. package/out/gazetteer-pipeline/admin/fold-geonames.d.ts.map +1 -1
  1238. package/out/gazetteer-pipeline/admin/fold-geonames.js +16 -14
  1239. package/out/gazetteer-pipeline/admin/fold-geonames.js.map +1 -1
  1240. package/out/gazetteer-pipeline/admin/fold-overture.d.ts +28 -1
  1241. package/out/gazetteer-pipeline/admin/fold-overture.d.ts.map +1 -1
  1242. package/out/gazetteer-pipeline/admin/fold-overture.js +127 -14
  1243. package/out/gazetteer-pipeline/admin/fold-overture.js.map +1 -1
  1244. package/out/gazetteer-pipeline/admin/freeze.js +2 -2
  1245. package/out/gazetteer-pipeline/admin/freeze.js.map +1 -1
  1246. package/out/gazetteer-pipeline/admin/index.d.ts.map +1 -1
  1247. package/out/gazetteer-pipeline/admin/index.js +4 -3
  1248. package/out/gazetteer-pipeline/admin/index.js.map +1 -1
  1249. package/out/gazetteer-pipeline/admin/ingest-wof.d.ts +13 -0
  1250. package/out/gazetteer-pipeline/admin/ingest-wof.d.ts.map +1 -1
  1251. package/out/gazetteer-pipeline/admin/ingest-wof.js +19 -3
  1252. package/out/gazetteer-pipeline/admin/ingest-wof.js.map +1 -1
  1253. package/out/gazetteer-pipeline/anchor-lookup.d.ts +85 -3
  1254. package/out/gazetteer-pipeline/anchor-lookup.d.ts.map +1 -1
  1255. package/out/gazetteer-pipeline/anchor-lookup.js +214 -109
  1256. package/out/gazetteer-pipeline/anchor-lookup.js.map +1 -1
  1257. package/out/gazetteer-pipeline/borough-pairs.d.ts +10 -0
  1258. package/out/gazetteer-pipeline/borough-pairs.d.ts.map +1 -1
  1259. package/out/gazetteer-pipeline/borough-pairs.js +22 -4
  1260. package/out/gazetteer-pipeline/borough-pairs.js.map +1 -1
  1261. package/out/gazetteer-pipeline/evidence-lexicons.d.ts.map +1 -1
  1262. package/out/gazetteer-pipeline/evidence-lexicons.js +32 -8
  1263. package/out/gazetteer-pipeline/evidence-lexicons.js.map +1 -1
  1264. package/out/gazetteer-pipeline/fst.d.ts +37 -0
  1265. package/out/gazetteer-pipeline/fst.d.ts.map +1 -1
  1266. package/out/gazetteer-pipeline/fst.js +110 -2
  1267. package/out/gazetteer-pipeline/fst.js.map +1 -1
  1268. package/out/gazetteer-pipeline/granularity-report.d.ts +1 -1
  1269. package/out/gazetteer-pipeline/granularity-report.js +1 -1
  1270. package/out/gazetteer-pipeline/importance-fanout.d.ts +100 -0
  1271. package/out/gazetteer-pipeline/importance-fanout.d.ts.map +1 -0
  1272. package/out/gazetteer-pipeline/importance-fanout.js +120 -0
  1273. package/out/gazetteer-pipeline/importance-fanout.js.map +1 -0
  1274. package/out/gazetteer-pipeline/index.d.ts +64 -7
  1275. package/out/gazetteer-pipeline/index.d.ts.map +1 -1
  1276. package/out/gazetteer-pipeline/index.js +126 -34
  1277. package/out/gazetteer-pipeline/index.js.map +1 -1
  1278. package/out/gazetteer-pipeline/lieudit-pairs.d.ts +6 -0
  1279. package/out/gazetteer-pipeline/lieudit-pairs.d.ts.map +1 -1
  1280. package/out/gazetteer-pipeline/lieudit-pairs.js +0 -0
  1281. package/out/gazetteer-pipeline/lieudit-pairs.js.map +1 -1
  1282. package/out/gazetteer-pipeline/pair-index-hierarchy-probe.d.ts +3 -3
  1283. package/out/gazetteer-pipeline/pair-index-hierarchy-probe.d.ts.map +1 -1
  1284. package/out/gazetteer-pipeline/pair-index-hierarchy-probe.js +11 -6
  1285. package/out/gazetteer-pipeline/pair-index-hierarchy-probe.js.map +1 -1
  1286. package/out/gazetteer-pipeline/pair-index-hierarchy-verify.js +22 -12
  1287. package/out/gazetteer-pipeline/pair-index-hierarchy-verify.js.map +1 -1
  1288. package/out/gazetteer-pipeline/pair-index.d.ts +21 -12
  1289. package/out/gazetteer-pipeline/pair-index.d.ts.map +1 -1
  1290. package/out/gazetteer-pipeline/pair-index.js +26 -13
  1291. package/out/gazetteer-pipeline/pair-index.js.map +1 -1
  1292. package/out/gazetteer-pipeline/poi/build-poi.d.ts +8 -10
  1293. package/out/gazetteer-pipeline/poi/build-poi.d.ts.map +1 -1
  1294. package/out/gazetteer-pipeline/poi/build-poi.js +6 -7
  1295. package/out/gazetteer-pipeline/poi/build-poi.js.map +1 -1
  1296. package/out/gazetteer-pipeline/postcode/binary.d.ts +114 -0
  1297. package/out/gazetteer-pipeline/postcode/binary.d.ts.map +1 -0
  1298. package/out/gazetteer-pipeline/postcode/binary.js +176 -0
  1299. package/out/gazetteer-pipeline/postcode/binary.js.map +1 -0
  1300. package/out/gazetteer-pipeline/postcode/centroid-fills.d.ts +10 -0
  1301. package/out/gazetteer-pipeline/postcode/centroid-fills.d.ts.map +1 -1
  1302. package/out/gazetteer-pipeline/postcode/centroid-fills.js +147 -40
  1303. package/out/gazetteer-pipeline/postcode/centroid-fills.js.map +1 -1
  1304. package/out/gazetteer-pipeline/postcode/codepoint/extract.d.ts +116 -0
  1305. package/out/gazetteer-pipeline/postcode/codepoint/extract.d.ts.map +1 -0
  1306. package/out/gazetteer-pipeline/postcode/codepoint/extract.js +122 -0
  1307. package/out/gazetteer-pipeline/postcode/codepoint/extract.js.map +1 -0
  1308. package/out/gazetteer-pipeline/postcode/codepoint/fetch.d.ts +248 -0
  1309. package/out/gazetteer-pipeline/postcode/codepoint/fetch.d.ts.map +1 -0
  1310. package/out/gazetteer-pipeline/postcode/codepoint/fetch.js +249 -0
  1311. package/out/gazetteer-pipeline/postcode/codepoint/fetch.js.map +1 -0
  1312. package/out/gazetteer-pipeline/postcode/codepoint/index.d.ts +13 -0
  1313. package/out/gazetteer-pipeline/postcode/codepoint/index.d.ts.map +1 -0
  1314. package/out/gazetteer-pipeline/postcode/codepoint/index.js +13 -0
  1315. package/out/gazetteer-pipeline/postcode/codepoint/index.js.map +1 -0
  1316. package/out/gazetteer-pipeline/postcode/codepoint/parse.d.ts +167 -0
  1317. package/out/gazetteer-pipeline/postcode/codepoint/parse.d.ts.map +1 -0
  1318. package/out/gazetteer-pipeline/postcode/codepoint/parse.js +195 -0
  1319. package/out/gazetteer-pipeline/postcode/codepoint/parse.js.map +1 -0
  1320. package/out/gazetteer-pipeline/postcode/codepoint-gate.d.ts +223 -0
  1321. package/out/gazetteer-pipeline/postcode/codepoint-gate.d.ts.map +1 -0
  1322. package/out/gazetteer-pipeline/postcode/codepoint-gate.js +266 -0
  1323. package/out/gazetteer-pipeline/postcode/codepoint-gate.js.map +1 -0
  1324. package/out/gazetteer-pipeline/postcode/codepoint-shard.d.ts +101 -0
  1325. package/out/gazetteer-pipeline/postcode/codepoint-shard.d.ts.map +1 -0
  1326. package/out/gazetteer-pipeline/postcode/codepoint-shard.js +312 -0
  1327. package/out/gazetteer-pipeline/postcode/codepoint-shard.js.map +1 -0
  1328. package/out/gazetteer-pipeline/postcode/geonames-tail.d.ts +120 -0
  1329. package/out/gazetteer-pipeline/postcode/geonames-tail.d.ts.map +1 -0
  1330. package/out/gazetteer-pipeline/postcode/geonames-tail.js +233 -0
  1331. package/out/gazetteer-pipeline/postcode/geonames-tail.js.map +1 -0
  1332. package/out/gazetteer-pipeline/postcode/index.d.ts +2 -0
  1333. package/out/gazetteer-pipeline/postcode/index.d.ts.map +1 -1
  1334. package/out/gazetteer-pipeline/postcode/index.js +7 -5
  1335. package/out/gazetteer-pipeline/postcode/index.js.map +1 -1
  1336. package/out/gazetteer-pipeline/postcode/ni-osm/fetch.d.ts +243 -0
  1337. package/out/gazetteer-pipeline/postcode/ni-osm/fetch.d.ts.map +1 -0
  1338. package/out/gazetteer-pipeline/postcode/ni-osm/fetch.js +245 -0
  1339. package/out/gazetteer-pipeline/postcode/ni-osm/fetch.js.map +1 -0
  1340. package/out/gazetteer-pipeline/postcode/ni-osm/index.d.ts +11 -0
  1341. package/out/gazetteer-pipeline/postcode/ni-osm/index.d.ts.map +1 -0
  1342. package/out/gazetteer-pipeline/postcode/ni-osm/index.js +11 -0
  1343. package/out/gazetteer-pipeline/postcode/ni-osm/index.js.map +1 -0
  1344. package/out/gazetteer-pipeline/postcode/ni-osm/parse.d.ts +119 -0
  1345. package/out/gazetteer-pipeline/postcode/ni-osm/parse.d.ts.map +1 -0
  1346. package/out/gazetteer-pipeline/postcode/ni-osm/parse.js +128 -0
  1347. package/out/gazetteer-pipeline/postcode/ni-osm/parse.js.map +1 -0
  1348. package/out/gazetteer-pipeline/postcode/ni-osm-shard.d.ts +143 -0
  1349. package/out/gazetteer-pipeline/postcode/ni-osm-shard.d.ts.map +1 -0
  1350. package/out/gazetteer-pipeline/postcode/ni-osm-shard.js +376 -0
  1351. package/out/gazetteer-pipeline/postcode/ni-osm-shard.js.map +1 -0
  1352. package/out/gazetteer-pipeline/postcode/nl-pc6.d.ts.map +1 -1
  1353. package/out/gazetteer-pipeline/postcode/nl-pc6.js +15 -12
  1354. package/out/gazetteer-pipeline/postcode/nl-pc6.js.map +1 -1
  1355. package/out/gazetteer-pipeline/postcode/zcta-centroids.d.ts +1 -1
  1356. package/out/gazetteer-pipeline/postcode/zcta-centroids.d.ts.map +1 -1
  1357. package/out/gazetteer-pipeline/postcode/zcta-centroids.js +5 -7
  1358. package/out/gazetteer-pipeline/postcode/zcta-centroids.js.map +1 -1
  1359. package/out/gazetteer-pipeline/postcode-locality/base.d.ts.map +1 -1
  1360. package/out/gazetteer-pipeline/postcode-locality/base.js +5 -80
  1361. package/out/gazetteer-pipeline/postcode-locality/base.js.map +1 -1
  1362. package/out/gazetteer-pipeline/postcode-locality/jp.d.ts +2 -2
  1363. package/out/gazetteer-pipeline/postcode-locality/jp.d.ts.map +1 -1
  1364. package/out/gazetteer-pipeline/postcode-locality/jp.js +12 -94
  1365. package/out/gazetteer-pipeline/postcode-locality/jp.js.map +1 -1
  1366. package/out/gazetteer-pipeline/postcode-locality/kr.d.ts +1 -1
  1367. package/out/gazetteer-pipeline/postcode-locality/kr.d.ts.map +1 -1
  1368. package/out/gazetteer-pipeline/postcode-locality/kr.js +6 -95
  1369. package/out/gazetteer-pipeline/postcode-locality/kr.js.map +1 -1
  1370. package/out/gazetteer-pipeline/postcode-locality/tw.d.ts +2 -2
  1371. package/out/gazetteer-pipeline/postcode-locality/tw.d.ts.map +1 -1
  1372. package/out/gazetteer-pipeline/postcode-locality/tw.js +8 -12
  1373. package/out/gazetteer-pipeline/postcode-locality/tw.js.map +1 -1
  1374. package/out/gazetteer-pipeline/postcode-prefix.d.ts +113 -0
  1375. package/out/gazetteer-pipeline/postcode-prefix.d.ts.map +1 -0
  1376. package/out/gazetteer-pipeline/postcode-prefix.js +211 -0
  1377. package/out/gazetteer-pipeline/postcode-prefix.js.map +1 -0
  1378. package/out/gazetteer-pipeline/verify.d.ts.map +1 -1
  1379. package/out/gazetteer-pipeline/verify.js +15 -11
  1380. package/out/gazetteer-pipeline/verify.js.map +1 -1
  1381. package/out/geocode-core.d.ts +142 -6
  1382. package/out/geocode-core.d.ts.map +1 -1
  1383. package/out/geocode-core.js +242 -53
  1384. package/out/geocode-core.js.map +1 -1
  1385. package/out/geocode-stream.d.ts +8 -1
  1386. package/out/geocode-stream.d.ts.map +1 -1
  1387. package/out/geocode-stream.js +10 -3
  1388. package/out/geocode-stream.js.map +1 -1
  1389. package/out/poi-intent.d.ts +3 -3
  1390. package/out/poi-overpass.d.ts +1 -1
  1391. package/out/poi-overpass.js +1 -1
  1392. package/out/query-intent.d.ts +73 -0
  1393. package/out/query-intent.d.ts.map +1 -0
  1394. package/out/query-intent.js +168 -0
  1395. package/out/query-intent.js.map +1 -0
  1396. package/out/release-tools/publish-hf.d.ts +1 -1
  1397. package/out/release-tools/publish-hf.d.ts.map +1 -1
  1398. package/out/release-tools/publish-hf.js +7 -4
  1399. package/out/release-tools/publish-hf.js.map +1 -1
  1400. package/out/resolver-backend.d.ts +34 -9
  1401. package/out/resolver-backend.d.ts.map +1 -1
  1402. package/out/resolver-backend.js +59 -11
  1403. package/out/resolver-backend.js.map +1 -1
  1404. package/out/runtime-pipeline.d.ts +2 -2
  1405. package/out/runtime-pipeline.d.ts.map +1 -1
  1406. package/out/runtime-pipeline.js +1 -1
  1407. package/out/test-kit/cli-spawn-lock.d.ts +29 -0
  1408. package/out/test-kit/cli-spawn-lock.d.ts.map +1 -0
  1409. package/out/test-kit/cli-spawn-lock.js +143 -0
  1410. package/out/test-kit/cli-spawn-lock.js.map +1 -0
  1411. package/out/tools/generate-clients.d.ts +1 -1
  1412. package/out/tools/generate-clients.d.ts.map +1 -1
  1413. package/out/tools/generate-clients.js +2 -5
  1414. package/out/tools/generate-clients.js.map +1 -1
  1415. package/package.json +73 -32
  1416. package/poi-intent.ts +3 -3
  1417. package/poi-overpass.ts +1 -1
  1418. package/query-intent.ts +234 -0
  1419. package/release-tools/publish-hf.ts +7 -4
  1420. package/resolver-backend.ts +64 -11
  1421. package/runtime-pipeline.ts +2 -1
  1422. package/skills/mailwoman/SKILL.md +112 -0
  1423. package/test-kit/cli-spawn-lock.ts +155 -0
  1424. package/tools/generate-clients.ts +3 -7
  1425. package/types/node.d.ts +1 -0
  1426. package/eval-harness/gauntlet/cases/regression.ts +0 -2222
  1427. package/out/eval-harness/gauntlet/cases/regression.d.ts +0 -44
  1428. package/out/eval-harness/gauntlet/cases/regression.d.ts.map +0 -1
  1429. package/out/eval-harness/gauntlet/cases/regression.js +0 -2177
  1430. package/out/eval-harness/gauntlet/cases/regression.js.map +0 -1
package/README.md CHANGED
@@ -170,7 +170,7 @@ Programmatically, build a `WofSqlitePlaceLookup` backend (from
170
170
  `@mailwoman/resolver-wof-sqlite`), pass it to `createWOFResolver` (from `@mailwoman/resolver`),
171
171
  and hand the resolver to `createRuntimePipeline({ classifier, resolver })`. The resolved
172
172
  `result.tree` roots then carry a `wof:id` and coordinate. See
173
- [Getting started → Adding resolution](https://mailwoman.sister.software/articles/getting-started/)
173
+ [Getting started → Adding resolution](https://mailwoman.sister.software/docs/developers/get-started/install-and-first-parse)
174
174
  for the worked example.
175
175
 
176
176
  ## Architecture
@@ -210,7 +210,7 @@ package is the umbrella that wires them together as a single `npm install`.
210
210
  ## Related
211
211
 
212
212
  - [Documentation & blog](https://mailwoman.sister.software)
213
- - [What Mailwoman Is](https://mailwoman.sister.software/articles/concepts/what-mailwoman-is/)
213
+ - [What Mailwoman Is](https://mailwoman.sister.software/docs/developers/get-started/what-mailwoman-is)
214
214
  - [GitHub](https://github.com/sister-software/mailwoman)
215
215
 
216
216
  ## License
package/api-engine.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * `/api/batch`, `/api/resolve-tree`, `/api/reload` handlers, `AddressRouter`'s retired `/parse`
9
9
  * handler, and `HealthRouter`'s `/health` data block — onto the engine-agnostic `@mailwoman/api`
10
10
  * contract's live routes (`/v1/parse`, `/v1/geocode`, `/v1/batch`, `/v1/resolve`, `/v1/reload`).
11
- * `mailwoman/server/` is deleted (Task 2) — this file is its sole successor, a fresh port rather
11
+ * `mailwoman/server/` is deleted — this file is its sole successor, a fresh port rather
12
12
  * than a thin wrapper.
13
13
  *
14
14
  * `createServeEngine` builds the shared stack ONCE, at boot, instead of express's lazy
@@ -26,14 +26,14 @@
26
26
  */
27
27
 
28
28
  import { existsSync, readdirSync, readFileSync } from "node:fs"
29
- import { createRequire } from "node:module"
30
- import { join } from "node:path"
29
+ import { fileURLToPath } from "node:url"
31
30
 
32
31
  import type { BatchRow, GeocodeOutcome, HealthData, MailwomanAPIEngine, ResolveTreeOutcome } from "@mailwoman/api"
33
32
  import { recordTimed } from "@mailwoman/api-kit"
34
33
  import { decodeAsTuples, decodeAsXML } from "@mailwoman/core"
35
34
  import type { AddressTree } from "@mailwoman/core/decoder"
36
35
  import { $public } from "@mailwoman/core/env"
36
+ import { tryParsingJSON } from "@mailwoman/core/objects"
37
37
  import { deriveInputMode } from "@mailwoman/core/pipeline"
38
38
  import { classifyKindSync } from "@mailwoman/kind-classifier"
39
39
  import { computeQueryShape } from "@mailwoman/query-shape"
@@ -48,7 +48,13 @@ import {
48
48
  ShardProvider,
49
49
  } from "./geocode-core.ts"
50
50
  import { INTERP_RADIUS_CALIBRATION, interpCalibrationForRegion } from "./interp-calibration.ts"
51
- import { createResolverBackend, mailwomanDataRoot, resolveCandidateDBPath, wofShardPaths } from "./resolver-backend.ts"
51
+ import {
52
+ buildNoGazetteerMessage,
53
+ createResolverBackend,
54
+ mailwomanDataRoot,
55
+ resolveCandidateDBPath,
56
+ wofShardPaths,
57
+ } from "./resolver-backend.ts"
52
58
 
53
59
  /**
54
60
  * Default per-state shard root + interp calibration — mirrors the express server's defaults (`GeocodeRouter.ts`).
@@ -82,30 +88,13 @@ function wofPaths(): string[] {
82
88
 
83
89
  /**
84
90
  * #1009-style boot preflight message. Same shape as the drop-ins' (`photon/cli.ts`, `nominatim/cli.ts`) — a stranger's
85
- * first `mailwoman serve` must say exactly what data is missing and the one command that fixes it — adapted to this
86
- * package's own override (`MAILWOMAN_WOF_DB`, a comma-separated FTS shard list) alongside the shared
87
- * candidate-gazetteer fast path (`MAILWOMAN_CANDIDATE_DB`).
91
+ * first `mailwoman serve` must say exactly what data is missing and the one command that fixes it.
88
92
  */
89
93
  function buildPreflightMessage(): string {
90
- const conventionCandidate = join(DATA_ROOT, "wof", "candidate.db")
91
-
92
- return [
93
- "✗ no gazetteer data found — `mailwoman serve` needs a WOF SQLite distribution to geocode/resolve.",
94
- "",
95
- " Fastest path (worldwide resolution, ~1.4 GB, byte-range friendly):",
96
- ` mkdir -p ${join(DATA_ROOT, "wof")}`,
97
- ` curl -fSL https://public.sister.software/mailwoman/gazetteer/2026-07-07a/candidate.db \\`,
98
- ` -o ${conventionCandidate}`,
99
- "",
100
- " Then point `$MAILWOMAN_CANDIDATE_DB` at that file and re-run `serve`:",
101
- ` export MAILWOMAN_CANDIDATE_DB=${conventionCandidate}`,
102
- "",
103
- " Or point at your own gazetteer:",
104
- " $MAILWOMAN_WOF_DB=<path1,path2,...> (admin WOF SQLite shard(s) — the FTS backend)",
105
- " $MAILWOMAN_CANDIDATE_DB=<path> (candidate-table gazetteer — population-first, demo-parity)",
106
- "",
107
- " Docs: https://mailwoman.sister.software/docs",
108
- ].join("\n")
94
+ return buildNoGazetteerMessage({
95
+ dataRoot: DATA_ROOT,
96
+ docsPath: "/docs/developers/get-started/ten-minute-trial",
97
+ })
109
98
  }
110
99
 
111
100
  /**
@@ -120,7 +109,13 @@ function readModelCard(): Record<string, unknown> | null {
120
109
  }
121
110
 
122
111
  try {
123
- candidates.push(createRequire(import.meta.url).resolve("@mailwoman/neural-weights-en-us/model-card.json"))
112
+ // Native ESM resolution of the weights package's card. `@mailwoman/neural-weights-*` packages carry no `exports`
113
+ // map, so the subpath resolves as a plain file inside the package, and (unlike `node:module`'s
114
+ // `findPackageJSON`) `import.meta.resolve` realpaths through the workspace symlink — the same string the CJS
115
+ // `require.resolve` this replaced returned. It does NOT throw for a missing FILE inside a resolvable package,
116
+ // only for an unresolvable package; the `existsSync` below already gates every candidate, so that is a no-op
117
+ // here.
118
+ candidates.push(fileURLToPath(import.meta.resolve("@mailwoman/neural-weights-en-us/model-card.json")))
124
119
  } catch {
125
120
  /* package not resolvable from here — fall through */
126
121
  }
@@ -129,9 +124,13 @@ function readModelCard(): Record<string, unknown> | null {
129
124
 
130
125
  for (const p of candidates) {
131
126
  try {
132
- if (existsSync(p)) return JSON.parse(readFileSync(p, "utf8")) as Record<string, unknown>
127
+ if (existsSync(p)) {
128
+ const card = tryParsingJSON<Record<string, unknown>>(readFileSync(p, "utf8"))
129
+
130
+ if (card) return card
131
+ }
133
132
  } catch {
134
- /* unreadable / malformed — try the next candidate */
133
+ /* unreadable — try the next candidate */
135
134
  }
136
135
  }
137
136
 
@@ -325,7 +324,7 @@ export async function createServeEngine(): Promise<ServeEngine> {
325
324
  // `onnxruntime-node`'s `session.run()` blocks the JS thread rather than releasing to the libuv pool,
326
325
  // and `node:sqlite` reads are synchronous. The pool bought nothing but the appearance of tuning, so
327
326
  // it's a plain loop now. To actually parallelize, cross a thread boundary — see
328
- // `mailwoman/geocode-stream.ts`. Receipts: `docs/articles/plan/reference/performance.mdx`.
327
+ // `mailwoman/geocode-stream.ts`. Receipts: `docs/engineering/reference/performance.mdx`.
329
328
  const batch: MailwomanAPIEngine["batch"] = async (addresses, opts) => {
330
329
  // Decision A endpoint default: batch rows are the record register.
331
330
  const inputMode = opts?.inputMode ?? "formatted"
@@ -0,0 +1,195 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The shared skeleton behind the drop-in CLIs — `mailwoman-libpostal`, `mailwoman-nominatim`,
7
+ * `mailwoman-photon`. All three are the same program with a different engine bolted in: dispatch
8
+ * `serve` / `openapi` off the first positional, boot the neural classifier with a friendly
9
+ * failure, (for the two geocoding drop-ins) locate a gazetteer with a friendly failure, then print
10
+ * a banner. Those pieces were copied between the three files, and the copies were being kept in
11
+ * sync BY HAND — nominatim/cli.ts said so in a comment ("same message shape as
12
+ * @mailwoman/photon's pre-flight (kept in lockstep)"). This module is the lockstep.
13
+ *
14
+ * WHY IT LIVES HERE and not in `@mailwoman/api-kit`, which already owns `printOpenAPIDocument` and
15
+ * `serveNode` and would otherwise be the obvious home: the preflights need `@mailwoman/neural` and
16
+ * this package's `resolver-backend`, and api-kit is engine-agnostic by charter. Splitting the
17
+ * skeleton across two packages to preserve that charter costs more than the duplication did. All
18
+ * three drop-ins already declare `mailwoman` as a dependency, so landing the whole thing here adds
19
+ * no dependency to anyone.
20
+ *
21
+ * WHY IT IS NOT IN `cli-kit/index.ts`: that barrel is the Pastel/Ink toolkit for
22
+ * `mailwoman/commands/*` and imports `ink` + `react`. The drop-ins are plain `parseArgs` scripts
23
+ * that render no UI, and `npx @mailwoman/libpostal serve` should not pay for a TUI runtime to
24
+ * start an HTTP server. Hence a standalone module with its own `mailwoman/cli-kit/dropin`
25
+ * subpath, deliberately NOT re-exported through the barrel.
26
+ */
27
+
28
+ import { existsSync } from "node:fs"
29
+ import { parseArgs } from "node:util"
30
+
31
+ import { NeuralAddressClassifier } from "@mailwoman/neural"
32
+
33
+ import {
34
+ buildNoGazetteerMessage,
35
+ mailwomanDataRoot,
36
+ resolveCandidateDBPath,
37
+ wofShardPaths,
38
+ } from "../resolver-backend.ts"
39
+
40
+ /**
41
+ * The docs page every drop-in's missing-gazetteer message points a stranger at (#1009). One constant so the three
42
+ * messages cannot drift onto different pages when the docs move.
43
+ */
44
+ const GAZETTEER_DOCS_PATH = "/docs/developers/get-started/ten-minute-trial"
45
+
46
+ /**
47
+ * Print an error and exit non-zero. Typed `never` so callers get definite-assignment narrowing after the call.
48
+ */
49
+ function fail(message: string): never {
50
+ console.error(message)
51
+
52
+ process.exit(1)
53
+ }
54
+
55
+ /**
56
+ * Parse the `openapi` subcommand's flags, validating `--flavor`. Exits 1 with the binary's usage line on a bad flavor.
57
+ *
58
+ * Returns the shape `printOpenAPIDocument` takes, so a drop-in's `openapi` command is this call plus building its app
59
+ * around a stub engine — which is what keeps the command pure route-table introspection that never boots a classifier
60
+ * or opens a gazetteer.
61
+ */
62
+ export function parseOpenAPIFlags(binaryName: string): { flavor?: string; out?: string } {
63
+ const { values } = parseArgs({
64
+ options: {
65
+ flavor: { type: "string", default: "3.1" },
66
+ out: { type: "string" },
67
+ },
68
+ allowPositionals: true,
69
+ })
70
+
71
+ if (values.flavor !== "3.1" && values.flavor !== "3.0") {
72
+ console.error(`✗ --flavor must be "3.1" or "3.0" (got "${values.flavor}")`)
73
+
74
+ fail(`Usage: ${binaryName} openapi [--flavor 3.1|3.0] [--out <path>]`)
75
+ }
76
+
77
+ return values
78
+ }
79
+
80
+ /**
81
+ * Load the en-US neural classifier, failing FRIENDLY (#1009).
82
+ *
83
+ * `resolveWeights` (`neural/weights.ts`) already names the exact fix command; this guard only keeps that message from
84
+ * being buried under an unhandled-rejection stack trace. Eager, so a missing-weights boot fails at startup rather than
85
+ * on the first request.
86
+ */
87
+ export async function loadClassifierOrExit(): Promise<NeuralAddressClassifier> {
88
+ try {
89
+ return await NeuralAddressClassifier.loadFromWeights({ locale: "en-US" })
90
+ } catch (error) {
91
+ return fail(`✗ ${error instanceof Error ? error.message : String(error)}`)
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Where a geocoding drop-in reads its places from.
97
+ */
98
+ export interface GazetteerPaths {
99
+ /**
100
+ * The candidate gazetteer (worldwide resolution), when one was found.
101
+ */
102
+ candidateDb: string | undefined
103
+ /**
104
+ * The WOF admin FTS shards that exist on disk.
105
+ */
106
+ wofPaths: string[]
107
+ /**
108
+ * The first shard — the admin DB the reverse geocoder opens. `undefined` when there are no shards.
109
+ */
110
+ adminDBPath: string | undefined
111
+ }
112
+
113
+ /**
114
+ * Locate the gazetteer for a geocoding drop-in, with both of the #1009 friendly failures:
115
+ *
116
+ * - An EXPLICIT `--candidate-db` that does not exist errors loudly. It must never silently fall back to whatever ambient
117
+ * data-root file happens to be present — a typo'd path would otherwise serve the wrong gazetteer without a word.
118
+ * - No candidate DB AND no shards prints the named-artifact message with the one command that fixes it, instead of
119
+ * letting the resolver throw its internal "resolveShards: at least one shard is required".
120
+ */
121
+ export function resolveGazetteerOrExit(candidateDBFlag: string | undefined): GazetteerPaths {
122
+ if (candidateDBFlag && !existsSync(candidateDBFlag)) {
123
+ fail(`✗ --candidate-db not found: ${candidateDBFlag}`)
124
+ }
125
+
126
+ const wofPaths = wofShardPaths().filter(existsSync)
127
+ // Candidate gazetteer = worldwide resolution (population-first ranking + global coverage + the FTS5-trigram typo
128
+ // fallback). --candidate-db, else $MAILWOMAN_CANDIDATE_DB, else the `<data-root>/wof/candidate.db` convention
129
+ // path. Absent → the admin FTS shards.
130
+ const candidateDb = resolveCandidateDBPath(candidateDBFlag)
131
+
132
+ if (!candidateDb && !wofPaths.length) {
133
+ fail(buildNoGazetteerMessage({ dataRoot: mailwomanDataRoot(), docsPath: GAZETTEER_DOCS_PATH }))
134
+ }
135
+
136
+ return { adminDBPath: wofPaths[0], candidateDb, wofPaths }
137
+ }
138
+
139
+ /**
140
+ * The `cors:` line of a drop-in's startup banner.
141
+ */
142
+ export function corsBannerLine(cors: boolean): string {
143
+ return ` cors: ${cors ? "enabled (Access-Control-Allow-Origin: *)" : "disabled (--no-cors)"}`
144
+ }
145
+
146
+ /**
147
+ * The `wof:` + `resolver:` lines of a geocoding drop-in's startup banner — which gazetteer the process actually opened,
148
+ * and (when it fell back to admin-only) the flag that widens it.
149
+ */
150
+ export function gazetteerBannerLines({ adminDBPath, candidateDb }: GazetteerPaths): string[] {
151
+ return [
152
+ ` wof: ${adminDBPath ?? "(none found — set MAILWOMAN_WOF_DB)"}`,
153
+ candidateDb
154
+ ? ` resolver: candidate gazetteer (worldwide) — ${candidateDb}`
155
+ : ` resolver: admin-only (US-optimized) — point --candidate-db / $MAILWOMAN_CANDIDATE_DB at a candidate gazetteer for worldwide`,
156
+ ]
157
+ }
158
+
159
+ /**
160
+ * A drop-in CLI's two subcommands.
161
+ */
162
+ export interface DropInCLI {
163
+ /**
164
+ * The binary name, for the usage message (e.g. `mailwoman-photon`).
165
+ */
166
+ binaryName: string
167
+ /**
168
+ * Usage lines for the subcommands, without the leading `Usage:` header.
169
+ */
170
+ usage: string[]
171
+ serve: () => Promise<void>
172
+ openapi: () => void
173
+ }
174
+
175
+ /**
176
+ * Dispatch a drop-in CLI's subcommand off the first positional.
177
+ *
178
+ * `strict: false` because the per-command parsers own their own flags — this pass only reads the positional. An unknown
179
+ * command exits 1; a bare invocation prints usage and exits 0.
180
+ */
181
+ export async function runDropInCLI({ binaryName, openapi, serve, usage }: DropInCLI): Promise<void> {
182
+ const command = parseArgs({ strict: false, allowPositionals: true }).positionals[0]
183
+
184
+ switch (command) {
185
+ case "serve":
186
+ await serve()
187
+ break
188
+ case "openapi":
189
+ openapi()
190
+ break
191
+ default:
192
+ console.error([`Usage: ${binaryName} <command>`, ...usage].join("\n"))
193
+ process.exit(command ? 1 : 0)
194
+ }
195
+ }
package/cli-kit/index.ts CHANGED
@@ -2,130 +2,6 @@
2
2
  * @copyright Sister Software
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
- *
6
- * The command toolkit for `mailwoman/commands/*` — Pastel/Ink helper types, the one-shot
7
- * {@linkcode useCommandTask} runner, and the {@linkcode CheckList} renderer. Lives OUTSIDE
8
- * `commands/` (Pastel treats every file there as a command) and OUTSIDE `sdk/` (`sdk/` submodules
9
- * mean data acquisition). Built with `createElement`, not JSX, so the module stays plain `.ts` —
10
- * importable under node's type stripping (the dev `node →` exports condition).
11
5
  */
12
6
 
13
- import { Box, Text } from "ink"
14
- import { createElement as h, useEffect, useState } from "react"
15
- import type * as React from "react"
16
- import type * as zod from "zod"
17
-
18
- /**
19
- * Type-helper to infer the positional arguments of a command.
20
- */
21
- export interface PositionalArguments<T extends zod.ZodTypeAny> {
22
- args: zod.infer<T>
23
- }
24
-
25
- /**
26
- * React component for a command with positional arguments.
27
- */
28
- export type PositionalCommandComponent<T extends zod.ZodTypeAny> = React.FC<PositionalArguments<T>>
29
-
30
- /**
31
- * Type-helper to infer the options of a command.
32
- */
33
- export interface CommandProps<
34
- OptionProps extends zod.ZodObject,
35
- PositionalProps extends zod.ZodTypeAny | unknown = unknown,
36
- > {
37
- options: zod.infer<OptionProps>
38
- args: PositionalProps extends zod.ZodTypeAny ? zod.infer<PositionalProps> : unknown[]
39
- }
40
-
41
- /**
42
- * React component for a command with options.
43
- */
44
- export type CommandComponent<
45
- OptionProps extends zod.ZodObject,
46
- PositionalProps extends zod.ZodTypeAny | unknown = unknown,
47
- > = React.FC<CommandProps<OptionProps, PositionalProps>>
48
-
49
- /**
50
- * The lifecycle of a command's one-shot async task.
51
- */
52
- export type CommandTaskState<T> =
53
- | { status: "running" }
54
- | { status: "done"; result: T }
55
- | { status: "error"; message: string }
56
-
57
- /**
58
- * Run a command's one-shot async task and own the exit-code discipline: rejection renders the error state and exits 1;
59
- * resolution exits with `exitCode(result)` (default 0) — always AFTER the final frame committed. Replaces the
60
- * copy-pasted useEffect/useState/setImmediate dance in every command.
61
- */
62
- /* oxlint-disable react-hooks/exhaustive-deps -- One-shot by design: the task/exitCode closures
63
- capture their options at mount; tracking them (fresh closure per render) would re-run the task
64
- every render. The empty/[state] deps are the point. */
65
- export function useCommandTask<T>(task: () => Promise<T>, exitCode?: (result: T) => number): CommandTaskState<T> {
66
- const [state, setState] = useState<CommandTaskState<T>>({ status: "running" })
67
-
68
- useEffect(() => {
69
- void task().then(
70
- (result) => setState({ status: "done", result }),
71
- (error: unknown) =>
72
- setState({ status: "error", message: error instanceof Error ? (error.stack ?? error.message) : String(error) })
73
- )
74
- }, [])
75
-
76
- useEffect(() => {
77
- if (state.status === "running") return
78
- const code = state.status === "error" ? 1 : (exitCode?.(state.result) ?? 0)
79
- setImmediate(() => process.exit(code))
80
- }, [state])
81
-
82
- return state
83
- }
84
-
85
- /* oxlint-enable react-hooks/exhaustive-deps */
86
-
87
- /**
88
- * Build a guidance-grade error whose rendered form is exactly `message` — no stack. {@linkcode useCommandTask} renders
89
- * `error.stack ?? error.message`, which is right for unexpected failures but turns deliberate user-facing guidance
90
- * ("Set $MAILWOMAN_WOF_DB…") into a stack dump. Throw `commandError(msg)` for those instead of `new Error(msg)`.
91
- */
92
- export function commandError(message: string): Error {
93
- const error = new Error(message)
94
- error.stack = message
95
-
96
- return error
97
- }
98
-
99
- /**
100
- * One ✓/✗ line in a {@linkcode CheckList}.
101
- */
102
- export interface Check {
103
- ok: boolean
104
- check: string
105
- detail?: string
106
- }
107
-
108
- /**
109
- * The ✓/✗ check-list + PASS/FAIL renderer (extracted from `gazetteer verify`). Pass `verdict` to append the summary
110
- * line.
111
- */
112
- export function CheckList({ checks, verdict }: { checks: readonly Check[]; verdict?: boolean }): React.ReactElement {
113
- const lines = checks.map((c, i) =>
114
- h(
115
- Text,
116
- { key: i, color: c.ok ? "green" : "red" },
117
- `${c.ok ? "✓" : "✗"} ${c.check}${c.detail ? `: ${c.detail}` : ""}`
118
- )
119
- )
120
-
121
- const summary =
122
- verdict === undefined
123
- ? null
124
- : h(
125
- Text,
126
- { color: verdict ? "green" : "red" },
127
- `${verdict ? "PASS" : "FAIL"} (${checks.filter((c) => c.ok).length}/${checks.length} checks)`
128
- )
129
-
130
- return h(Box, { flexDirection: "column" }, ...lines, summary)
131
- }
7
+ export * from "./shared.ts"
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The command toolkit for `mailwoman/commands/*` — Pastel/Ink helper types, the one-shot
7
+ * {@linkcode useCommandTask} runner, and the {@linkcode CheckList} renderer. Lives OUTSIDE
8
+ * `commands/` (Pastel treats every file there as a command) and OUTSIDE `sdk/` (`sdk/` submodules
9
+ * mean data acquisition). Built with `createElement`, not JSX, so the module stays plain `.ts` —
10
+ * importable under node's type stripping (the dev `node →` exports condition).
11
+ */
12
+
13
+ import { type PlacetypeRole, PlacetypeRoles } from "@mailwoman/core"
14
+ import { Box, Text } from "ink"
15
+ import { createElement as h, useEffect, useState } from "react"
16
+ import type * as React from "react"
17
+ import type * as zod from "zod"
18
+
19
+ /**
20
+ * Type-helper to infer the positional arguments of a command.
21
+ */
22
+ export interface PositionalArguments<T extends zod.ZodTypeAny> {
23
+ args: zod.infer<T>
24
+ }
25
+
26
+ /**
27
+ * React component for a command with positional arguments.
28
+ */
29
+ export type PositionalCommandComponent<T extends zod.ZodTypeAny> = React.FC<PositionalArguments<T>>
30
+
31
+ /**
32
+ * Type-helper to infer the options of a command.
33
+ */
34
+ export interface CommandProps<
35
+ OptionProps extends zod.ZodObject,
36
+ PositionalProps extends zod.ZodTypeAny | unknown = unknown,
37
+ > {
38
+ options: zod.infer<OptionProps>
39
+ args: PositionalProps extends zod.ZodTypeAny ? zod.infer<PositionalProps> : unknown[]
40
+ }
41
+
42
+ /**
43
+ * React component for a command with options.
44
+ */
45
+ export type CommandComponent<
46
+ OptionProps extends zod.ZodObject,
47
+ PositionalProps extends zod.ZodTypeAny | unknown = unknown,
48
+ > = React.FC<CommandProps<OptionProps, PositionalProps>>
49
+
50
+ /**
51
+ * The lifecycle of a command's one-shot async task.
52
+ */
53
+ export type CommandTaskState<T> =
54
+ | { status: "running" }
55
+ | { status: "done"; result: T }
56
+ | { status: "error"; message: string }
57
+
58
+ /**
59
+ * Run a command's one-shot async task and own the exit-code discipline: rejection renders the error state and exits 1;
60
+ * resolution exits with `exitCode(result)` (default 0) — always AFTER the final frame committed. Replaces the
61
+ * copy-pasted useEffect/useState/setImmediate dance in every command.
62
+ */
63
+ /* oxlint-disable react-hooks/exhaustive-deps -- One-shot by design: the task/exitCode closures
64
+ capture their options at mount; tracking them (fresh closure per render) would re-run the task
65
+ every render. The empty/[state] deps are the point. */
66
+ export function useCommandTask<T>(task: () => Promise<T>, exitCode?: (result: T) => number): CommandTaskState<T> {
67
+ const [state, setState] = useState<CommandTaskState<T>>({ status: "running" })
68
+
69
+ useEffect(() => {
70
+ void task().then(
71
+ (result) => setState({ status: "done", result }),
72
+ (error: unknown) =>
73
+ setState({ status: "error", message: error instanceof Error ? (error.stack ?? error.message) : String(error) })
74
+ )
75
+ }, [])
76
+
77
+ useEffect(() => {
78
+ if (state.status === "running") return
79
+ const code = state.status === "error" ? 1 : (exitCode?.(state.result) ?? 0)
80
+ setImmediate(() => process.exit(code))
81
+ }, [state])
82
+
83
+ return state
84
+ }
85
+
86
+ /* oxlint-enable react-hooks/exhaustive-deps */
87
+
88
+ /**
89
+ * Emit a command's final output as raw bytes, bypassing Ink's `<Text>` renderer.
90
+ *
91
+ * Ink word-wraps rendered text at the terminal width — and at 80 columns when stdout is piped — which corrupts
92
+ * machine-readable output: a JSON string value longer than the width gets real newlines inserted mid-string, breaking
93
+ * the document (observed 2026-08-07: `geocode --format json` on "Toledo Ohio" wrapped `intent_markers[].message` at 80
94
+ * cols). Machine formats (json/jsonld/xml/tuple, `--json` flags) must never pass through `<Text>`.
95
+ *
96
+ * Returns `null` so the caller can `return writeRawStdout(result)` from the done branch. Safe to call from render:
97
+ * {@linkcode useCommandTask} renders the done frame exactly once before its `process.exit`. Same pattern as
98
+ * `commands/gazetteer/inspect/graph.tsx`.
99
+ */
100
+ export function writeRawStdout(text: string): null {
101
+ process.stdout.write(text + "\n")
102
+
103
+ return null
104
+ }
105
+
106
+ /**
107
+ * Build a guidance-grade error whose rendered form is exactly `message` — no stack. {@linkcode useCommandTask} renders
108
+ * `error.stack ?? error.message`, which is right for unexpected failures but turns deliberate user-facing guidance
109
+ * ("Set $MAILWOMAN_WOF_DB…") into a stack dump. Throw `commandError(msg)` for those instead of `new Error(msg)`.
110
+ */
111
+ export function commandError(message: string): Error {
112
+ const error = new Error(message)
113
+ error.stack = message
114
+
115
+ return error
116
+ }
117
+
118
+ /**
119
+ * One ✓/✗ line in a {@linkcode CheckList}.
120
+ */
121
+ export interface Check {
122
+ ok: boolean
123
+ check: string
124
+ detail?: string
125
+ }
126
+
127
+ /**
128
+ * The ✓/✗ check-list + PASS/FAIL renderer (extracted from `gazetteer verify`). Pass `verdict` to append the summary
129
+ * line.
130
+ */
131
+ export function CheckList({ checks, verdict }: { checks: readonly Check[]; verdict?: boolean }): React.ReactElement {
132
+ const lines = checks.map((c, i) =>
133
+ h(
134
+ Text,
135
+ { key: i, color: c.ok ? "green" : "red" },
136
+ `${c.ok ? "✓" : "✗"} ${c.check}${c.detail ? `: ${c.detail}` : ""}`
137
+ )
138
+ )
139
+
140
+ const summary =
141
+ verdict === undefined
142
+ ? null
143
+ : h(
144
+ Text,
145
+ { color: verdict ? "green" : "red" },
146
+ `${verdict ? "PASS" : "FAIL"} (${checks.filter((c) => c.ok).length}/${checks.length} checks)`
147
+ )
148
+
149
+ return h(Box, { flexDirection: "column" }, ...lines, summary)
150
+ }
151
+
152
+ /**
153
+ * Parse a `--roles a,b,c` flag into validated {@link PlacetypeRole}s, or `undefined` when the flag is absent (which
154
+ * every caller reads as "all roles").
155
+ *
156
+ * Rejects an unknown role with {@link commandError} rather than silently filtering it — a typo in a role name would
157
+ * otherwise produce an empty, entirely plausible-looking result.
158
+ */
159
+ export function parseRoles(raw: string | undefined): PlacetypeRole[] | undefined {
160
+ if (!raw) return undefined
161
+
162
+ const valid = new Set<string>(PlacetypeRoles)
163
+
164
+ const parsed = raw
165
+ .split(",")
166
+ .map((s) => s.trim())
167
+ .filter(Boolean)
168
+
169
+ for (const role of parsed) {
170
+ if (!valid.has(role)) {
171
+ throw commandError(`Unknown placetype role '${role}'. Valid roles: ${PlacetypeRoles.join(", ")}.`)
172
+ }
173
+ }
174
+
175
+ return parsed as PlacetypeRole[]
176
+ }