@empressaio/atom-contract 1.9.0 → 1.10.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parcel-terrain-model.d.ts","sourceRoot":"","sources":["../../src/property/parcel-terrain-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Parcel terrain-export DERIVED atom — mesh + IFC + CAD formats off ONE triangulation.
3
+ *
4
+ * WDLL: 2026-07-23_terrain_ifc_spine_lift_WDLL (amended CAD export set).
5
+ * DEM/topo is a referenced continuous field (not atomized). Artifacts are
6
+ * keyed by format param; callers request one or more formats per export.
7
+ */
8
+ import { z } from "zod";
9
+ import { REASONING_CHAIN_DERIVED_SCHEMA } from "../reasoning-chain.js";
10
+ import { WIDTHED_CONFIDENCE_SCHEMA, } from "../read-contract/common.js";
11
+ import { PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, } from "./common.js";
12
+ /** Canonical derivation method — shared triangulation, N emitters. */
13
+ export const PARCEL_TERRAIN_DERIVATION_METHOD = "parcel-terrain-mesh-ifc-v1";
14
+ /** Paid default for terrain-export (WDLL accessPolicy public-paid). */
15
+ export const TERRAIN_DEFAULT_ACCESS_POLICY = "public-paid";
16
+ /** Format params for the single terrain-export atom. */
17
+ export const TERRAIN_EXPORT_FORMATS = [
18
+ "glb",
19
+ "ifc",
20
+ "dxf-3dface",
21
+ "dxf-contour",
22
+ "landxml-tin",
23
+ ];
24
+ export const TERRAIN_EXPORT_FORMAT_SCHEMA = z.enum(TERRAIN_EXPORT_FORMATS);
25
+ export const TERRAIN_ARTIFACT_REF_SCHEMA = z
26
+ .object({
27
+ format: TERRAIN_EXPORT_FORMAT_SCHEMA,
28
+ ref: z.string().min(1),
29
+ byteCount: z.number().nonnegative().optional(),
30
+ vertexCount: z.number().int().nonnegative().optional(),
31
+ triangleCount: z.number().int().nonnegative().optional(),
32
+ ifcSchemaVersion: z.string().min(1).optional(),
33
+ geometryPrimitive: z.string().min(1).optional(),
34
+ contourIntervalMeters: z.number().positive().optional(),
35
+ contourPolylineCount: z.number().int().nonnegative().optional(),
36
+ deferred: z.boolean().optional(),
37
+ deferredReason: z.string().min(1).optional(),
38
+ })
39
+ .strict()
40
+ .superRefine((art, ctx) => {
41
+ if (art.deferred === true && !art.deferredReason) {
42
+ ctx.addIssue({
43
+ code: z.ZodIssueCode.custom,
44
+ message: "deferred artifact requires deferredReason",
45
+ path: ["deferredReason"],
46
+ });
47
+ }
48
+ });
49
+ export const TERRAIN_COVERAGE_SCHEMA = z
50
+ .object({
51
+ coverageFraction: z.number().min(0).max(1),
52
+ nodataCount: z.number().int().nonnegative(),
53
+ totalCells: z.number().int().nonnegative(),
54
+ resolutionMetersRequested: z.number().positive().nullable().optional(),
55
+ resolutionMetersActual: z.number().positive().nullable().optional(),
56
+ touchesNodata: z.boolean().optional(),
57
+ })
58
+ .strict();
59
+ export const PARCEL_TERRAIN_MODEL_SCHEMA = z
60
+ .object({
61
+ entityType: z.literal("parcel-terrain-model"),
62
+ atomDid: z
63
+ .string()
64
+ .min(1)
65
+ .refine((val) => /^pterrain_[0-9a-f]{16}$/.test(val), {
66
+ message: "atomDid must be in format pterrain_<16-hex-chars>",
67
+ }),
68
+ parcelNodeId: z
69
+ .string()
70
+ .min(1)
71
+ .refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
72
+ message: "parcelNodeId must match {county_fips}:{prop_id}",
73
+ }),
74
+ reasoningChain: REASONING_CHAIN_DERIVED_SCHEMA.superRefine((chain, ctx) => {
75
+ if (chain.derivationMethod !== PARCEL_TERRAIN_DERIVATION_METHOD) {
76
+ ctx.addIssue({
77
+ code: z.ZodIssueCode.custom,
78
+ message: `derivationMethod must be ${PARCEL_TERRAIN_DERIVATION_METHOD}`,
79
+ path: ["derivationMethod"],
80
+ });
81
+ }
82
+ const hasDemRef = chain.inputAtomRefs.some((r) => r.role === "reference-field" &&
83
+ (r.citationLabel === "usgs-3dep-dem" ||
84
+ r.entityType === "usgs-3dep-dem" ||
85
+ /3dep|dem|topo/i.test(r.citationLabel ?? "")));
86
+ if (!hasDemRef) {
87
+ ctx.addIssue({
88
+ code: z.ZodIssueCode.custom,
89
+ message: "parcel-terrain-model requires a DEM/topo reference-field input (citationLabel usgs-3dep-dem)",
90
+ path: ["inputAtomRefs"],
91
+ });
92
+ }
93
+ }),
94
+ artifacts: z.record(TERRAIN_EXPORT_FORMAT_SCHEMA, TERRAIN_ARTIFACT_REF_SCHEMA),
95
+ coverage: TERRAIN_COVERAGE_SCHEMA,
96
+ confidence: WIDTHED_CONFIDENCE_SCHEMA,
97
+ accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
98
+ ...PROPERTY_QUALITY_GATE_FIELDS,
99
+ atomTier: z.literal(PROPERTY_ATOM_TIER),
100
+ readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
101
+ })
102
+ .strict()
103
+ .superRefine((inst, ctx) => {
104
+ for (const [key, art] of Object.entries(inst.artifacts)) {
105
+ if (art && art.format !== key) {
106
+ ctx.addIssue({
107
+ code: z.ZodIssueCode.custom,
108
+ message: `artifacts.${key}.format must equal key (${art.format} given)`,
109
+ path: ["artifacts", key, "format"],
110
+ });
111
+ }
112
+ }
113
+ });
114
+ export function createParcelTerrainModel(input) {
115
+ return PARCEL_TERRAIN_MODEL_SCHEMA.parse(input);
116
+ }
117
+ //# sourceMappingURL=parcel-terrain-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parcel-terrain-model.js","sourceRoot":"","sources":["../../src/property/parcel-terrain-model.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empressaio/atom-contract",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "The typed-data substrate every Empressa atom satisfies: identity, context interface, composition declaration, and history anchoring. Peer to the Hauska SDK (`@hauska-sdk/*`); consumed directly by every product surface and MCP server.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",