mailwoman 5.10.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/api-engine.d.ts.map +1 -0
- package/out/api-engine.js +282 -0
- package/out/api-engine.js.map +1 -0
- package/out/commands/clients/generate.d.ts.map +1 -0
- package/out/commands/clients/generate.js +45 -0
- package/out/commands/clients/generate.js.map +1 -0
- package/out/commands/geocode.d.ts.map +1 -1
- package/out/commands/geocode.js +35 -3
- package/out/commands/geocode.js.map +1 -1
- package/out/commands/openapi.d.ts.map +1 -0
- package/out/commands/openapi.js +37 -0
- package/out/commands/openapi.js.map +1 -0
- package/out/commands/serve.d.ts.map +1 -1
- package/out/commands/serve.js +98 -23
- package/out/commands/serve.js.map +1 -1
- package/out/eval-harness/gauntlet/cases/regression.d.ts.map +1 -1
- package/out/eval-harness/gauntlet/cases/regression.js +63 -0
- package/out/eval-harness/gauntlet/cases/regression.js.map +1 -1
- package/out/geocode-core.js +3 -3
- package/out/tools/generate-clients.d.ts.map +1 -0
- package/out/tools/generate-clients.js +802 -0
- package/out/tools/generate-clients.js.map +1 -0
- package/package.json +22 -28
- package/out/server/AddressRouter.d.ts.map +0 -1
- package/out/server/AddressRouter.js +0 -37
- package/out/server/AddressRouter.js.map +0 -1
- package/out/server/GeocodeRouter.d.ts.map +0 -1
- package/out/server/GeocodeRouter.js +0 -226
- package/out/server/GeocodeRouter.js.map +0 -1
- package/out/server/HealthRouter.d.ts.map +0 -1
- package/out/server/HealthRouter.js +0 -97
- package/out/server/HealthRouter.js.map +0 -1
- package/out/server/ResolveRouter.d.ts.map +0 -1
- package/out/server/ResolveRouter.js +0 -147
- package/out/server/ResolveRouter.js.map +0 -1
- package/out/server/index.d.ts.map +0 -1
- package/out/server/index.js +0 -10
- package/out/server/index.js.map +0 -1
- package/out/server/metrics.d.ts.map +0 -1
- package/out/server/metrics.js +0 -75
- package/out/server/metrics.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-engine.d.ts","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAIX,kBAAkB,EAGlB,MAAM,gBAAgB,CAAA;AAgLvB,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAsI9D"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* The wired {@link MailwomanAPIEngine} for `mailwoman serve` (Phase 4b, the Hono cutover). Ports the
|
|
7
|
+
* former express `server/`'s handler bodies — `GeocodeRouter.getDeps` + its `/api/geocode`,
|
|
8
|
+
* `/api/batch`, `/api/resolve-tree`, `/api/reload` handlers, `AddressRouter`'s `/parse` handler, and
|
|
9
|
+
* `HealthRouter`'s `/health` data block — onto the engine-agnostic `@mailwoman/api` contract
|
|
10
|
+
* (`/v1/parse`, `/v1/geocode`, `/v1/batch`, `/v1/resolve`, `/v1/reload`). `mailwoman/server/` is
|
|
11
|
+
* deleted (Task 2) — this file is its sole successor, a fresh port rather than a thin wrapper.
|
|
12
|
+
*
|
|
13
|
+
* `createServeEngine` builds the shared stack ONCE, at boot, instead of express's lazy
|
|
14
|
+
* first-request memoized promise — the CLI's `serve` command awaits it before listening, so a
|
|
15
|
+
* misconfigured deployment fails FRIENDLY at boot (the #1009 pattern the drop-ins already use)
|
|
16
|
+
* instead of a runtime 503 on the first request. When the classifier/resolver stack can't be built
|
|
17
|
+
* (missing WOF data, or `@mailwoman/neural` / `@mailwoman/resolver-wof-sqlite` unresolvable), the
|
|
18
|
+
* returned engine still carries `parse` (the rule-based parser needs no gazetteer) and `health`
|
|
19
|
+
* (must answer even when broken) — `geocode`/`batch`/`resolveTree`/`reload` are simply absent, and
|
|
20
|
+
* `@mailwoman/api`'s routes answer 501/503 for those on their own.
|
|
21
|
+
*/
|
|
22
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
23
|
+
import { createRequire } from "node:module";
|
|
24
|
+
import { join } from "node:path";
|
|
25
|
+
import { recordTimed } from "@mailwoman/api-kit";
|
|
26
|
+
import { $public } from "@mailwoman/core/env";
|
|
27
|
+
import { createWOFResolver } from "@mailwoman/resolver";
|
|
28
|
+
import { readReleaseManifest } from "./data-release.js";
|
|
29
|
+
import { geocodeAddress, regionSlugFromTree, ShardProvider, } from "./geocode-core.js";
|
|
30
|
+
import { INTERP_RADIUS_CALIBRATION, interpCalibrationForRegion } from "./interp-calibration.js";
|
|
31
|
+
import { createResolverBackend, mailwomanDataRoot, resolveCandidateDBPath, wofShardPaths } from "./resolver-backend.js";
|
|
32
|
+
import { createDiagnosticReport } from "./utils/DebugOutputBuilder.js";
|
|
33
|
+
import { createAddressParser } from "./utils/parser.js";
|
|
34
|
+
/** Default per-state shard root + interp calibration — mirrors the express server's defaults (`GeocodeRouter.ts`). */
|
|
35
|
+
const DATA_ROOT = mailwomanDataRoot();
|
|
36
|
+
/** Bounded concurrency for `batch()`. Override with `MAILWOMAN_BATCH_CONCURRENCY`. */
|
|
37
|
+
const BATCH_CONCURRENCY = Math.max(1, $public.MAILWOMAN_BATCH_CONCURRENCY);
|
|
38
|
+
/** Same WOF-path resolution as the express `GeocodeRouter`/`HealthRouter` (env override, else the conventional shards). */
|
|
39
|
+
function wofPaths() {
|
|
40
|
+
const env = $public.MAILWOMAN_WOF_DB;
|
|
41
|
+
if (env)
|
|
42
|
+
return env
|
|
43
|
+
.split(",")
|
|
44
|
+
.map((p) => p.trim())
|
|
45
|
+
.filter(Boolean);
|
|
46
|
+
return wofShardPaths().filter((p) => existsSync(p));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* #1009-style boot preflight message. Same shape as the drop-ins' (`photon/cli.ts`, `nominatim/cli.ts`) — a stranger's
|
|
50
|
+
* first `mailwoman serve` must say exactly what data is missing and the one command that fixes it — adapted to this
|
|
51
|
+
* package's own override (`MAILWOMAN_WOF_DB`, a comma-separated FTS shard list) alongside the shared
|
|
52
|
+
* candidate-gazetteer fast path (`MAILWOMAN_CANDIDATE_DB`).
|
|
53
|
+
*/
|
|
54
|
+
function buildPreflightMessage() {
|
|
55
|
+
const conventionCandidate = join(DATA_ROOT, "wof", "candidate.db");
|
|
56
|
+
return [
|
|
57
|
+
"✗ no gazetteer data found — `mailwoman serve` needs a WOF SQLite distribution to geocode/resolve.",
|
|
58
|
+
"",
|
|
59
|
+
" Fastest path (worldwide resolution, ~1.4 GB, byte-range friendly):",
|
|
60
|
+
` mkdir -p ${join(DATA_ROOT, "wof")}`,
|
|
61
|
+
` curl -fSL https://public.sister.software/mailwoman/gazetteer/2026-07-07a/candidate.db \\`,
|
|
62
|
+
` -o ${conventionCandidate}`,
|
|
63
|
+
"",
|
|
64
|
+
" Then re-run `serve` (the file is auto-detected at that path), or point at your own:",
|
|
65
|
+
" $MAILWOMAN_WOF_DB=<path1,path2,...> (admin WOF SQLite shard(s) — the FTS backend)",
|
|
66
|
+
" $MAILWOMAN_CANDIDATE_DB=<path> (candidate-table gazetteer — population-first, demo-parity)",
|
|
67
|
+
"",
|
|
68
|
+
" Docs: https://mailwoman.sister.software/docs",
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Best-effort model-card read: env override → installed weights package → dev-tree fallback. Ported from
|
|
73
|
+
* `HealthRouter`.
|
|
74
|
+
*/
|
|
75
|
+
function readModelCard() {
|
|
76
|
+
const candidates = [];
|
|
77
|
+
if ($public.MAILWOMAN_MODEL_CARD) {
|
|
78
|
+
candidates.push($public.MAILWOMAN_MODEL_CARD);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
candidates.push(createRequire(import.meta.url).resolve("@mailwoman/neural-weights-en-us/model-card.json"));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
/* package not resolvable from here — fall through */
|
|
85
|
+
}
|
|
86
|
+
candidates.push("neural-weights-en-us/model-card.json");
|
|
87
|
+
for (const p of candidates) {
|
|
88
|
+
try {
|
|
89
|
+
if (existsSync(p))
|
|
90
|
+
return JSON.parse(readFileSync(p, "utf8"));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
/* unreadable / malformed — try the next candidate */
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Count canonical per-state shards (`<prefix>-us-<2-letter>.db`) in a data subdir; 0 if absent. Ported from
|
|
100
|
+
* `HealthRouter`.
|
|
101
|
+
*/
|
|
102
|
+
function countShards(subdir, prefix) {
|
|
103
|
+
try {
|
|
104
|
+
const re = new RegExp(`^${prefix}-us-[a-z]{2}\\.db$`);
|
|
105
|
+
return readdirSync(`${DATA_ROOT}/${subdir}`).filter((f) => re.test(f)).length;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The `/health` data block: model card + data-root inventory. Ported from `HealthRouter`'s `healthHandler`. Always
|
|
113
|
+
* available — reads files best-effort and never throws, regardless of preflight status.
|
|
114
|
+
*/
|
|
115
|
+
function buildHealthData() {
|
|
116
|
+
const card = readModelCard();
|
|
117
|
+
return {
|
|
118
|
+
model: card
|
|
119
|
+
? {
|
|
120
|
+
name: card["name"],
|
|
121
|
+
version: card["version"],
|
|
122
|
+
locale: card["locale"],
|
|
123
|
+
labels: Array.isArray(card["labels"]) ? card["labels"].length : undefined,
|
|
124
|
+
format: card["format"],
|
|
125
|
+
}
|
|
126
|
+
: null,
|
|
127
|
+
data: {
|
|
128
|
+
data_root: DATA_ROOT,
|
|
129
|
+
// Versioned-switchover provenance (#485): the releases.json pin, or null in legacy mode.
|
|
130
|
+
versions: readReleaseManifest(DATA_ROOT),
|
|
131
|
+
// The express HealthRouter existsSync-filtered here where GeocodeRouter's wofPaths() didn't;
|
|
132
|
+
// this diagnostic field keeps the health-side behavior (no phantom env paths in "what's deployed").
|
|
133
|
+
wof_dbs: wofPaths().filter((p) => existsSync(p)),
|
|
134
|
+
situs_states: countShards("address-points", "address-points"),
|
|
135
|
+
interpolation_states: countShards("interpolation", "interpolation"),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/** One geocode call over the shared deps. Ported from `GeocodeRouter`'s `oneGeocode`. */
|
|
140
|
+
function oneGeocode(deps, address) {
|
|
141
|
+
return geocodeAddress(address, {
|
|
142
|
+
classifier: deps.classifier,
|
|
143
|
+
resolver: deps.resolver,
|
|
144
|
+
shards: deps.shards.for,
|
|
145
|
+
defaultCountry: deps.defaultCountry,
|
|
146
|
+
interpCalibration: INTERP_RADIUS_CALIBRATION,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/** Pull the street node's resolution tier (if any) for the metric. Ported verbatim from `GeocodeRouter`. */
|
|
150
|
+
function collectStreetTier(node) {
|
|
151
|
+
const out = [];
|
|
152
|
+
if (node.tag === "street") {
|
|
153
|
+
const tier = node.metadata?.["resolution_tier"];
|
|
154
|
+
if (tier === "address_point" || tier === "interpolated" || tier === "street") {
|
|
155
|
+
out.push(tier);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (const child of node.children) {
|
|
159
|
+
out.push(...collectStreetTier(child));
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Build the wired `mailwoman serve` engine. Awaited ONCE at boot (unlike express's lazy per-request `getDeps()`), so a
|
|
165
|
+
* misconfigured deployment reports its preflight failure before the process starts listening — the caller (the `serve`
|
|
166
|
+
* command) decides whether to boot degraded (parse+health only) or exit friendly.
|
|
167
|
+
*/
|
|
168
|
+
export async function createServeEngine() {
|
|
169
|
+
// The rule-based parser needs no gazetteer — always available, even when the geocode/resolve stack below fails to
|
|
170
|
+
// build. Ported from `AddressRouter`'s handler.
|
|
171
|
+
const parser = createAddressParser();
|
|
172
|
+
const parse = async (address, opts) => {
|
|
173
|
+
const result = await parser.parse(address, { verbose: true });
|
|
174
|
+
const { solutions, context } = result;
|
|
175
|
+
const outcome = {
|
|
176
|
+
input: { body: context.span.body, start: context.span.start, end: context.span.end },
|
|
177
|
+
solutions: solutions.map((solution) => solution.toJSON()),
|
|
178
|
+
debug: opts.debug ? createDiagnosticReport(result) : undefined,
|
|
179
|
+
};
|
|
180
|
+
return outcome;
|
|
181
|
+
};
|
|
182
|
+
// `health` reads files best-effort and never throws — wired unconditionally, matching `HealthRouter`'s "answers even
|
|
183
|
+
// when broken" contract.
|
|
184
|
+
const health = () => buildHealthData();
|
|
185
|
+
let neuralMod;
|
|
186
|
+
let resolverMod;
|
|
187
|
+
try {
|
|
188
|
+
neuralMod = await import("@mailwoman/neural");
|
|
189
|
+
resolverMod = await import("@mailwoman/resolver-wof-sqlite");
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
console.error("createServeEngine: @mailwoman/neural + @mailwoman/resolver-wof-sqlite are required");
|
|
193
|
+
return { engine: { parse, health }, preflight: { ok: false, message: buildPreflightMessage() } };
|
|
194
|
+
}
|
|
195
|
+
const paths = wofPaths();
|
|
196
|
+
// Candidate backend → country-agnostic default (demo's global, population-first behavior); a per-request `country`
|
|
197
|
+
// still scopes. FTS backend keeps the US default. (#170) A candidate DB alone (no WOF admin shard) is a valid boot
|
|
198
|
+
// configuration — `createResolverBackend` prefers it over `wofPaths` — so the preflight gate below checks BOTH,
|
|
199
|
+
// mirroring the drop-ins' `!candidateDb && wofPaths.length === 0` gate rather than `GeocodeRouter`'s WOF-only check.
|
|
200
|
+
const candidateDb = resolveCandidateDBPath();
|
|
201
|
+
if (paths.length === 0 && !candidateDb) {
|
|
202
|
+
console.error("createServeEngine: no WOF DBs found — set MAILWOMAN_WOF_DB or MAILWOMAN_CANDIDATE_DB");
|
|
203
|
+
return { engine: { parse, health }, preflight: { ok: false, message: buildPreflightMessage() } };
|
|
204
|
+
}
|
|
205
|
+
const classifier = await neuralMod.NeuralAddressClassifier.loadFromWeights({ locale: "en-US" });
|
|
206
|
+
const backend = createResolverBackend(resolverMod, { wofPaths: paths });
|
|
207
|
+
const resolver = createWOFResolver(backend);
|
|
208
|
+
const shards = new ShardProvider(resolverMod, DATA_ROOT);
|
|
209
|
+
const deps = { classifier, resolver, shards, defaultCountry: candidateDb ? undefined : "US" };
|
|
210
|
+
// Route records the whole-call metric already (`@mailwoman/api`'s `routes.ts`) — the engine records nothing extra
|
|
211
|
+
// here. Ported from `GeocodeRouter`'s `singleHandler`. The cast mirrors `@mailwoman/api/routes.ts`'s established
|
|
212
|
+
// "documented wire shape looser than the domain type" idiom — `GeocodeOutcome` is a deliberately loose passthrough.
|
|
213
|
+
const geocode = async (address) => (await oneGeocode(deps, address));
|
|
214
|
+
// Bounded-concurrency worker pool over a shared cursor — results land in input order; a thrown row is isolated to
|
|
215
|
+
// its own `{ input, error }` slot. Rows are trimmed here (the route passes the raw validated array through). Ported
|
|
216
|
+
// from `GeocodeRouter`'s `batchHandler`.
|
|
217
|
+
const batch = async (addresses) => {
|
|
218
|
+
const inputs = addresses.map((a) => a.trim());
|
|
219
|
+
const results = new Array(inputs.length);
|
|
220
|
+
let cursor = 0;
|
|
221
|
+
const worker = async () => {
|
|
222
|
+
for (let i = cursor++; i < inputs.length; i = cursor++) {
|
|
223
|
+
const input = inputs[i];
|
|
224
|
+
const t0 = performance.now();
|
|
225
|
+
try {
|
|
226
|
+
const result = await oneGeocode(deps, input);
|
|
227
|
+
recordTimed(performance.now() - t0, result.resolution_tier);
|
|
228
|
+
results[i] = result;
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
recordTimed(performance.now() - t0, "error");
|
|
232
|
+
results[i] = { input, error: err instanceof Error ? err.message : String(err) };
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
await Promise.all(Array.from({ length: Math.min(BATCH_CONCURRENCY, inputs.length) }, worker));
|
|
237
|
+
return { results };
|
|
238
|
+
};
|
|
239
|
+
// Metrics are the engine's own responsibility here — unlike `/v1/geocode`, the route wraps no try/catch around
|
|
240
|
+
// `resolveTree` (it lets a fault fall through to the app's 500 safety net), so the tier metric AND the rethrow both
|
|
241
|
+
// happen here. Ported from `GeocodeRouter`'s `resolveTreeHandler`.
|
|
242
|
+
const resolveTree = async (tree, rawOpts) => {
|
|
243
|
+
const incomingOpts = (rawOpts ?? {});
|
|
244
|
+
const t0 = performance.now();
|
|
245
|
+
try {
|
|
246
|
+
const slug = regionSlugFromTree(tree);
|
|
247
|
+
const { addressPoints, interpolation } = deps.shards.for(slug);
|
|
248
|
+
const opts = {
|
|
249
|
+
...incomingOpts,
|
|
250
|
+
defaultCountry: incomingOpts.defaultCountry ?? deps.defaultCountry,
|
|
251
|
+
...(addressPoints ? { addressPoints } : {}),
|
|
252
|
+
...(interpolation
|
|
253
|
+
? {
|
|
254
|
+
interpolation,
|
|
255
|
+
interpolationRadiusCalibration: incomingOpts.interpolationRadiusCalibration ??
|
|
256
|
+
interpCalibrationForRegion(INTERP_RADIUS_CALIBRATION, slug),
|
|
257
|
+
}
|
|
258
|
+
: {}),
|
|
259
|
+
};
|
|
260
|
+
const resolved = await deps.resolver.resolveTree(tree, opts);
|
|
261
|
+
// Best-effort tier metric: read the street node's stamped tier (matches the geocode path).
|
|
262
|
+
const street = resolved.roots.flatMap((r) => collectStreetTier(r)).find(Boolean);
|
|
263
|
+
recordTimed(performance.now() - t0, street ?? "admin");
|
|
264
|
+
const outcome = { tree: resolved };
|
|
265
|
+
return outcome;
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
recordTimed(performance.now() - t0, "error");
|
|
269
|
+
throw err;
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
// Ported from `GeocodeRouter`'s `reloadHandler`.
|
|
273
|
+
const reload = async () => {
|
|
274
|
+
const versions = deps.shards.reload();
|
|
275
|
+
return { reloaded: true, versions };
|
|
276
|
+
};
|
|
277
|
+
return {
|
|
278
|
+
engine: { parse, geocode, batch, resolveTree, reload, health },
|
|
279
|
+
preflight: { ok: true },
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=api-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-engine.js","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../commands/clients/generate.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAa,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAGzF,eAAO,MAAM,WAAW,qFAAqF,CAAA;AAE7G,QAAA,MAAM,aAAa;;;qBAQjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAoC3D,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @copyright Sister Software
|
|
4
|
+
* @license AGPL-3.0
|
|
5
|
+
* @author Teffen Ellis, et al.
|
|
6
|
+
*
|
|
7
|
+
* `mailwoman clients generate` — the client-generation pipeline: emit all four surfaces' OpenAPI
|
|
8
|
+
* documents (mailwoman/photon/nominatim/libpostal — 3.1 + the progenitor-diet 3.0), generate a
|
|
9
|
+
* Python package (openapi-python-client, the salvaged `mailwoman_client` layout from the retired
|
|
10
|
+
* `feat/api-clients` branch) and a Rust crate (progenitor `generate_api!`, the salvaged Cargo.toml
|
|
11
|
+
* / lib.rs pattern), then VERIFY both actually build (`uv build` + a wheel import-check, `cargo
|
|
12
|
+
* check --examples`). Output lands under the gitignored `clients-build/` — nothing generated here
|
|
13
|
+
* is committed. This is the local, receipt-verified proof the gated CI job (Phase 5 Task 4)
|
|
14
|
+
* replays on dispatch. See `docs/articles/api.mdx` "Client libraries" for install/usage snippets
|
|
15
|
+
* and the not-yet-published status.
|
|
16
|
+
*/
|
|
17
|
+
import { Box, Text } from "ink";
|
|
18
|
+
import zod from "zod";
|
|
19
|
+
import { CheckList, useCommandTask } from "../../cli-kit/index.js";
|
|
20
|
+
import { generateClients } from "../../tools/generate-clients.js";
|
|
21
|
+
export const description = "Generate + verify the Python and Rust API clients from the emitted OpenAPI specs";
|
|
22
|
+
const OptionsSchema = zod.object({
|
|
23
|
+
outDir: zod.string().optional().describe("Output root. Default <repo>/clients-build (gitignored)"),
|
|
24
|
+
skipVerify: zod
|
|
25
|
+
.boolean()
|
|
26
|
+
.default(false)
|
|
27
|
+
.describe("Skip `uv build`/import-check + `cargo check --examples` (dev only — an unverified pipeline must never stand in as a release proof)"),
|
|
28
|
+
});
|
|
29
|
+
export { OptionsSchema as options };
|
|
30
|
+
const ClientsGenerate = ({ options }) => {
|
|
31
|
+
const state = useCommandTask(() => generateClients({
|
|
32
|
+
outDir: options.outDir,
|
|
33
|
+
skipVerify: options.skipVerify,
|
|
34
|
+
onPhase: (phase, detail) => console.error(` [${phase}]${detail ? ` ${detail}` : ""}`),
|
|
35
|
+
}), (result) => (result.ok ? 0 : 1));
|
|
36
|
+
if (state.status === "error")
|
|
37
|
+
return _jsxs(Text, { color: "red", children: ["\u2717 ", state.message] });
|
|
38
|
+
if (state.status === "done") {
|
|
39
|
+
const { ok, checks, receipt } = state.result;
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(CheckList, { checks: checks, verdict: ok }), ok && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: ["version: ", receipt.version] }), _jsxs(Text, { children: ["specs: ", receipt.specsDir] }), _jsxs(Text, { children: ["python: ", receipt.pythonDir, receipt.pythonWheel ? ` (${receipt.pythonWheel})` : ""] }), _jsxs(Text, { children: ["rust: ", receipt.rustDir] }), _jsxs(Text, { children: ["elapsed: ", receipt.elapsedSeconds.toFixed(1), "s"] })] }))] }));
|
|
41
|
+
}
|
|
42
|
+
return null; // progress streams to stderr until the summary lands
|
|
43
|
+
};
|
|
44
|
+
export default ClientsGenerate;
|
|
45
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../commands/clients/generate.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,SAAS,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,MAAM,CAAC,MAAM,WAAW,GAAG,kFAAkF,CAAA;AAE7G,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IAClG,UAAU,EAAE,GAAG;SACb,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACR,oIAAoI,CACpI;CACF,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,eAAe,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/E,MAAM,KAAK,GAAG,cAAc,CAC3B,GAAG,EAAE,CACJ,eAAe,CAAC;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;KACtF,CAAC,EACH,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;QAE5C,OAAO,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAC1B,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAI,EACzC,EAAE,IAAI,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACvC,MAAC,IAAI,4BAAW,OAAO,CAAC,OAAO,IAAQ,EACvC,MAAC,IAAI,0BAAS,OAAO,CAAC,QAAQ,IAAQ,EACtC,MAAC,IAAI,2BACK,OAAO,CAAC,SAAS,EACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,IACjD,EACP,MAAC,IAAI,yBAAQ,OAAO,CAAC,OAAO,IAAQ,EACpC,MAAC,IAAI,4BAAW,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IACrD,CACN,IACI,CACN,CAAA;IACF,CAAC;IAED,OAAO,IAAI,CAAA,CAAC,qDAAqD;AAClE,CAAC,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geocode.d.ts","sourceRoot":"","sources":["../../commands/geocode.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"geocode.d.ts","sourceRoot":"","sources":["../../commands/geocode.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAaH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAgC,MAAM,qBAAqB,CAAA;AAiBzF,QAAA,MAAM,eAAe,6BAA4E,CAAA;AACjG,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAE5D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;qBA0FjB,CAAA;AA8OF,QAAA,MAAM,cAAc,EAAE,gBAAgB,CAAC,OAAO,aAAa,EAAE,OAAO,eAAe,CAsBlF,CAAA;AAED,eAAe,cAAc,CAAA"}
|
package/out/commands/geocode.js
CHANGED
|
@@ -28,9 +28,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
28
28
|
*/
|
|
29
29
|
import { existsSync } from "node:fs";
|
|
30
30
|
import { Spinner } from "@inkjs/ui";
|
|
31
|
+
import { toSchemaOrg } from "@mailwoman/annotations";
|
|
31
32
|
import { CoarsePlacer } from "@mailwoman/core/coarse-placer";
|
|
32
33
|
import { $public } from "@mailwoman/core/env";
|
|
33
34
|
import { isBareLocalityTree } from "@mailwoman/core/pipeline";
|
|
35
|
+
import { formatAddress } from "@mailwoman/formatter";
|
|
34
36
|
import { NeuralAddressClassifier } from "@mailwoman/neural";
|
|
35
37
|
import { createWOFResolver } from "@mailwoman/resolver";
|
|
36
38
|
import { Text } from "ink";
|
|
@@ -110,10 +112,11 @@ const OptionsSchema = zod.object({
|
|
|
110
112
|
.default(0.9)
|
|
111
113
|
.describe("Abstention threshold for --place-country: below this calibrated confidence the prior is skipped. Default 0.9."),
|
|
112
114
|
format: zod
|
|
113
|
-
.enum(["json", "text"])
|
|
115
|
+
.enum(["json", "text", "jsonld"])
|
|
114
116
|
.optional()
|
|
115
117
|
.default("json")
|
|
116
|
-
.describe('Output format. "json" (default) emits
|
|
118
|
+
.describe('Output format. "json" (default) emits the native machine-readable result; "text" prints a human summary; ' +
|
|
119
|
+
'"jsonld" emits a schema.org Place/PostalAddress/GeoCoordinates JSON-LD object (the web\'s native address format).'),
|
|
117
120
|
});
|
|
118
121
|
// ---------------------------------------------------------------------------
|
|
119
122
|
// Path helpers
|
|
@@ -235,7 +238,11 @@ async function runGeocode(input, options) {
|
|
|
235
238
|
// Enabled → our threshold-honoring placer; --no-place-country → `false` (disable the default-on prior).
|
|
236
239
|
placeCountry: placer ? (t) => placer.predict(t) : false,
|
|
237
240
|
});
|
|
238
|
-
|
|
241
|
+
if (options.format === "text")
|
|
242
|
+
return formatText(result);
|
|
243
|
+
if (options.format === "jsonld")
|
|
244
|
+
return JSON.stringify(geocodeToSchemaOrg(result), null, 2);
|
|
245
|
+
return JSON.stringify(result, null, 2);
|
|
239
246
|
}
|
|
240
247
|
finally {
|
|
241
248
|
explicitAp?.close();
|
|
@@ -245,6 +252,31 @@ async function runGeocode(input, options) {
|
|
|
245
252
|
}
|
|
246
253
|
}
|
|
247
254
|
// ---------------------------------------------------------------------------
|
|
255
|
+
// schema.org JSON-LD projection (#1052)
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
/**
|
|
258
|
+
* Project a {@link GeocodeResult} into a schema.org `Place` JSON-LD object (`--format jsonld`, #1052). `streetAddress`
|
|
259
|
+
* is rendered locale-aware by `@mailwoman/formatter` (house number placement follows the resolved country); the rest of
|
|
260
|
+
* the mapping (locality/region/postcode/ISO country → PostalAddress; coordinate → GeoCoordinates) lives in
|
|
261
|
+
* `@mailwoman/annotations`' {@link toSchemaOrg}. Lossy by design: tiers/uncertainty/candidates don't fit the vocabulary
|
|
262
|
+
* and are dropped.
|
|
263
|
+
*/
|
|
264
|
+
function geocodeToSchemaOrg(result) {
|
|
265
|
+
const streetAddress = formatAddress({
|
|
266
|
+
...(result.house_number ? { house_number: result.house_number } : {}),
|
|
267
|
+
...(result.street ? { street: result.street } : {}),
|
|
268
|
+
}, result.countryCode ?? "US", { separator: " " });
|
|
269
|
+
return toSchemaOrg({
|
|
270
|
+
lat: result.lat,
|
|
271
|
+
lon: result.lon,
|
|
272
|
+
streetAddress: streetAddress || undefined,
|
|
273
|
+
locality: result.locality ?? undefined,
|
|
274
|
+
region: result.region ?? undefined,
|
|
275
|
+
postalCode: result.postcode ?? undefined,
|
|
276
|
+
countryCode: result.countryCode ?? undefined,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
248
280
|
// Text formatter
|
|
249
281
|
// ---------------------------------------------------------------------------
|
|
250
282
|
function formatText(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geocode.js","sourceRoot":"","sources":["../../commands/geocode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geocode.js","sourceRoot":"","sources":["../../commands/geocode.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../commands/openapi.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,qBAAqB,CAAA;AAE3E,eAAO,MAAM,WAAW,oDAAoD,CAAA;AAE5E,QAAA,MAAM,aAAa;;;;;;qBAGjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,OAAO,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAWnD,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @copyright Sister Software
|
|
4
|
+
* @license AGPL-3.0
|
|
5
|
+
* @author Teffen Ellis, et al.
|
|
6
|
+
*
|
|
7
|
+
* `mailwoman openapi` — print (or `--out`-write) the emitted OpenAPI document for the native
|
|
8
|
+
* `@mailwoman/api` `/v1/*` surface, mirroring the `openapi` subcommand every drop-in CLI carries
|
|
9
|
+
* (`mailwoman-libpostal openapi`, `mailwoman-photon openapi`, `mailwoman-nominatim openapi`).
|
|
10
|
+
* Builds the app around a stub engine (`{}` — every `MailwomanAPIEngine` method is optional) so
|
|
11
|
+
* this NEVER boots the real parser/resolver stack: pure route-table introspection, fast regardless
|
|
12
|
+
* of data-root state. `--flavor 3.0` prints the 3.0.3 diet (client generators that lag, e.g.
|
|
13
|
+
* progenitor) instead of the default 3.1.0.
|
|
14
|
+
*/
|
|
15
|
+
import { createMailwomanAPI, MAILWOMAN_API_DOC_INFO } from "@mailwoman/api";
|
|
16
|
+
import { printOpenAPIDocument } from "@mailwoman/api-kit";
|
|
17
|
+
import { Text } from "ink";
|
|
18
|
+
import zod from "zod";
|
|
19
|
+
import { useCommandTask } from "../cli-kit/index.js";
|
|
20
|
+
export const description = "Emit the native @mailwoman/api OpenAPI document";
|
|
21
|
+
const OptionsSchema = zod.object({
|
|
22
|
+
flavor: zod.enum(["3.1", "3.0"]).default("3.1").describe("OpenAPI flavor: 3.1.0 (default) or the 3.0.3 diet"),
|
|
23
|
+
out: zod.string().optional().describe("Write to this path instead of stdout"),
|
|
24
|
+
});
|
|
25
|
+
export { OptionsSchema as options };
|
|
26
|
+
const Openapi = ({ options }) => {
|
|
27
|
+
const state = useCommandTask(async () => {
|
|
28
|
+
const app = createMailwomanAPI({});
|
|
29
|
+
printOpenAPIDocument(app, MAILWOMAN_API_DOC_INFO, options);
|
|
30
|
+
});
|
|
31
|
+
if (state.status === "error")
|
|
32
|
+
return _jsxs(Text, { color: "red", children: ["\u2717 ", state.message] });
|
|
33
|
+
// printOpenAPIDocument itself writes to stdout or the --out path.
|
|
34
|
+
return null;
|
|
35
|
+
};
|
|
36
|
+
export default Openapi;
|
|
37
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../commands/openapi.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE3E,MAAM,CAAC,MAAM,WAAW,GAAG,iDAAiD,CAAA;AAE5E,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC7G,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAC7E,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,OAAO,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACvE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAElC,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,kEAAkE;IAClE,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../commands/serve.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../commands/serve.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAoN3D,eAAO,MAAM,OAAO;;;;qBAAqB,CAAA;AAEzC,QAAA,MAAM,YAAY;;;;sBAAmD,CAAA;AAErE,eAAe,YAAY,CAAA"}
|