@empressaio/atom-contract 1.18.0 → 1.20.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/dist/property/common.d.ts +60 -0
- package/dist/property/common.d.ts.map +1 -1
- package/dist/property/common.js +44 -0
- package/dist/property/common.js.map +1 -1
- package/dist/property/fixtures.d.ts +118 -0
- package/dist/property/fixtures.d.ts.map +1 -1
- package/dist/property/fixtures.js +118 -1
- package/dist/property/fixtures.js.map +1 -1
- package/dist/property/index.d.ts +2 -0
- package/dist/property/index.d.ts.map +1 -1
- package/dist/property/index.js +2 -0
- package/dist/property/index.js.map +1 -1
- package/dist/property/rrc-pipeline-fact.d.ts +677 -0
- package/dist/property/rrc-pipeline-fact.d.ts.map +1 -0
- package/dist/property/rrc-pipeline-fact.js +119 -0
- package/dist/property/rrc-pipeline-fact.js.map +1 -0
- package/dist/property/special-district-fact.d.ts +666 -0
- package/dist/property/special-district-fact.d.ts.map +1 -0
- package/dist/property/special-district-fact.js +119 -0
- package/dist/property/special-district-fact.js.map +1 -0
- package/dist/property/well-fact.d.ts +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { REASONING_CHAIN_OBSERVED_SCHEMA } from "../reasoning-chain.js";
|
|
3
|
+
import { PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_DEFAULT_ACCESS_POLICY, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, SITE_LAYER_PROVENANCE_FIELDS, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, SPECIAL_DISTRICT_ABSENCE_SCHEMA, SPECIAL_DISTRICT_MEMBERSHIP_BASIS_SCHEMA, SPECIAL_DISTRICT_SOURCE_TIER_SCHEMA, SPECIAL_DISTRICT_TAX_RATE_SCHEMA, } from "./common.js";
|
|
4
|
+
export const SPECIAL_DISTRICT_FACT_SCHEMA = z
|
|
5
|
+
.object({
|
|
6
|
+
entityType: z.literal("special-district-fact"),
|
|
7
|
+
atomDid: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.refine((val) => /^sdfact_[0-9a-f]{16}$/.test(val), {
|
|
11
|
+
message: "atomDid must be in format sdfact_<16-hex-chars>",
|
|
12
|
+
}),
|
|
13
|
+
parcelNodeId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
|
|
17
|
+
message: "parcelNodeId must match {county_fips}:{prop_id}",
|
|
18
|
+
}),
|
|
19
|
+
reasoningChain: REASONING_CHAIN_OBSERVED_SCHEMA,
|
|
20
|
+
sourceTier: SPECIAL_DISTRICT_SOURCE_TIER_SCHEMA,
|
|
21
|
+
districtName: z.string().min(1).optional(),
|
|
22
|
+
districtId: z.string().min(1).optional(),
|
|
23
|
+
districtType: z.string().min(1).optional(),
|
|
24
|
+
countyFips: z
|
|
25
|
+
.string()
|
|
26
|
+
.min(5)
|
|
27
|
+
.max(5)
|
|
28
|
+
.regex(/^\d{5}$/)
|
|
29
|
+
.optional(),
|
|
30
|
+
membershipBasis: SPECIAL_DISTRICT_MEMBERSHIP_BASIS_SCHEMA.optional(),
|
|
31
|
+
taxRate: SPECIAL_DISTRICT_TAX_RATE_SCHEMA.optional(),
|
|
32
|
+
absence: SPECIAL_DISTRICT_ABSENCE_SCHEMA.optional(),
|
|
33
|
+
verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
|
|
34
|
+
accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
|
|
35
|
+
...PROPERTY_QUALITY_GATE_FIELDS,
|
|
36
|
+
...SITE_LAYER_PROVENANCE_FIELDS,
|
|
37
|
+
atomTier: z.literal(PROPERTY_ATOM_TIER),
|
|
38
|
+
readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
|
|
39
|
+
})
|
|
40
|
+
.superRefine((data, ctx) => {
|
|
41
|
+
const hasAbsence = data.absence !== undefined;
|
|
42
|
+
const isAbsentTier = data.sourceTier === "absent";
|
|
43
|
+
const hasDistrictClaim = data.districtName !== undefined ||
|
|
44
|
+
data.districtId !== undefined ||
|
|
45
|
+
data.districtType !== undefined;
|
|
46
|
+
if (data.accessPolicy !== PROPERTY_DEFAULT_ACCESS_POLICY) {
|
|
47
|
+
ctx.addIssue({
|
|
48
|
+
code: z.ZodIssueCode.custom,
|
|
49
|
+
message: "special-district-fact must use accessPolicy public-free",
|
|
50
|
+
path: ["accessPolicy"],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (hasDistrictClaim && hasAbsence) {
|
|
54
|
+
ctx.addIssue({
|
|
55
|
+
code: z.ZodIssueCode.custom,
|
|
56
|
+
message: "district fields and absence are mutually exclusive",
|
|
57
|
+
path: ["absence"],
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (isAbsentTier) {
|
|
61
|
+
if (!data.verifiedAbsence) {
|
|
62
|
+
ctx.addIssue({
|
|
63
|
+
code: z.ZodIssueCode.custom,
|
|
64
|
+
message: "sourceTier absent requires verifiedAbsence (evaluated + provenanceScope)",
|
|
65
|
+
path: ["verifiedAbsence"],
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (hasDistrictClaim || data.membershipBasis !== undefined) {
|
|
69
|
+
ctx.addIssue({
|
|
70
|
+
code: z.ZodIssueCode.custom,
|
|
71
|
+
message: "sourceTier absent must not carry district membership fields",
|
|
72
|
+
path: ["sourceTier"],
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (hasAbsence) {
|
|
77
|
+
if (hasDistrictClaim || data.membershipBasis !== undefined) {
|
|
78
|
+
ctx.addIssue({
|
|
79
|
+
code: z.ZodIssueCode.custom,
|
|
80
|
+
message: "absence must not coexist with district membership fields",
|
|
81
|
+
path: ["absence"],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (data.taxRate !== undefined) {
|
|
85
|
+
ctx.addIssue({
|
|
86
|
+
code: z.ZodIssueCode.custom,
|
|
87
|
+
message: "absence must not carry taxRate enrichment",
|
|
88
|
+
path: ["taxRate"],
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (!data.districtId || !data.districtName || !data.districtType) {
|
|
94
|
+
ctx.addIssue({
|
|
95
|
+
code: z.ZodIssueCode.custom,
|
|
96
|
+
message: "present tier requires districtId, districtName, and districtType",
|
|
97
|
+
path: ["districtId"],
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (data.membershipBasis !== "point-in-polygon") {
|
|
101
|
+
ctx.addIssue({
|
|
102
|
+
code: z.ZodIssueCode.custom,
|
|
103
|
+
message: "present tier requires membershipBasis point-in-polygon (binary PIP only — no proximity)",
|
|
104
|
+
path: ["membershipBasis"],
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (!data.countyFips) {
|
|
108
|
+
ctx.addIssue({
|
|
109
|
+
code: z.ZodIssueCode.custom,
|
|
110
|
+
message: "present tier requires countyFips",
|
|
111
|
+
path: ["countyFips"],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
export function createSpecialDistrictFact(input) {
|
|
117
|
+
return SPECIAL_DISTRICT_FACT_SCHEMA.parse(input);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=special-district-fact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"special-district-fact.js","sourceRoot":"","sources":["../../src/property/special-district-fact.ts"],"names":[],"mappings":"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"}
|
|
@@ -422,9 +422,9 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
422
422
|
provenanceScope: string[];
|
|
423
423
|
} | undefined;
|
|
424
424
|
sourceVintage?: string | undefined;
|
|
425
|
+
operatorName?: string | undefined;
|
|
425
426
|
wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
|
|
426
427
|
orphaned?: boolean | undefined;
|
|
427
|
-
operatorName?: string | undefined;
|
|
428
428
|
parcelRelation?: "on-parcel" | "near-parcel" | undefined;
|
|
429
429
|
proximityRadiusMeters?: number | undefined;
|
|
430
430
|
proximityDistanceMeters?: number | undefined;
|
|
@@ -501,9 +501,9 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
501
501
|
provenanceScope: string[];
|
|
502
502
|
} | undefined;
|
|
503
503
|
sourceVintage?: string | undefined;
|
|
504
|
+
operatorName?: string | undefined;
|
|
504
505
|
wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
|
|
505
506
|
orphaned?: boolean | undefined;
|
|
506
|
-
operatorName?: string | undefined;
|
|
507
507
|
parcelRelation?: "on-parcel" | "near-parcel" | undefined;
|
|
508
508
|
proximityRadiusMeters?: number | undefined;
|
|
509
509
|
proximityDistanceMeters?: number | undefined;
|
|
@@ -580,9 +580,9 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
580
580
|
provenanceScope: string[];
|
|
581
581
|
} | undefined;
|
|
582
582
|
sourceVintage?: string | undefined;
|
|
583
|
+
operatorName?: string | undefined;
|
|
583
584
|
wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
|
|
584
585
|
orphaned?: boolean | undefined;
|
|
585
|
-
operatorName?: string | undefined;
|
|
586
586
|
parcelRelation?: "on-parcel" | "near-parcel" | undefined;
|
|
587
587
|
proximityRadiusMeters?: number | undefined;
|
|
588
588
|
proximityDistanceMeters?: number | undefined;
|
|
@@ -659,9 +659,9 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
659
659
|
provenanceScope: string[];
|
|
660
660
|
} | undefined;
|
|
661
661
|
sourceVintage?: string | undefined;
|
|
662
|
+
operatorName?: string | undefined;
|
|
662
663
|
wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
|
|
663
664
|
orphaned?: boolean | undefined;
|
|
664
|
-
operatorName?: string | undefined;
|
|
665
665
|
parcelRelation?: "on-parcel" | "near-parcel" | undefined;
|
|
666
666
|
proximityRadiusMeters?: number | undefined;
|
|
667
667
|
proximityDistanceMeters?: number | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empressaio/atom-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.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",
|