@empressaio/atom-contract 1.19.0 → 1.21.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,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, RRC_PIPELINE_ABSENCE_SCHEMA, RRC_PIPELINE_SOURCE_TIER_SCHEMA, SITE_LAYER_PROVENANCE_FIELDS, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, } from "./common.js";
4
+ function hasPipelineClaim(data) {
5
+ return (data.nearPipeline !== undefined ||
6
+ data.nearestPipelineDistanceMeters !== undefined ||
7
+ data.t4permit !== undefined ||
8
+ data.p5Num !== undefined ||
9
+ data.operatorName !== undefined ||
10
+ data.systemName !== undefined ||
11
+ data.commodity !== undefined ||
12
+ data.commodityDescription !== undefined ||
13
+ data.systemType !== undefined ||
14
+ data.status !== undefined ||
15
+ data.diameter !== undefined ||
16
+ data.interstate !== undefined);
17
+ }
18
+ export const RRC_PIPELINE_FACT_SCHEMA = z
19
+ .object({
20
+ entityType: z.literal("rrc-pipeline-fact"),
21
+ atomDid: z
22
+ .string()
23
+ .min(1)
24
+ .refine((val) => /^pipefact_[0-9a-f]{16}$/.test(val), {
25
+ message: "atomDid must be in format pipefact_<16-hex-chars>",
26
+ }),
27
+ parcelNodeId: z
28
+ .string()
29
+ .min(1)
30
+ .refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
31
+ message: "parcelNodeId must match {county_fips}:{prop_id}",
32
+ }),
33
+ reasoningChain: REASONING_CHAIN_OBSERVED_SCHEMA,
34
+ sourceTier: RRC_PIPELINE_SOURCE_TIER_SCHEMA,
35
+ bufferMeters: z.number().positive(),
36
+ nearPipeline: z.boolean().optional(),
37
+ nearestPipelineDistanceMeters: z.number().nonnegative().optional(),
38
+ t4permit: z.string().min(1).optional(),
39
+ p5Num: z.string().min(1).optional(),
40
+ operatorName: z.string().min(1).optional(),
41
+ systemName: z.string().min(1).optional(),
42
+ commodity: z.string().min(1).optional(),
43
+ commodityDescription: z.string().min(1).optional(),
44
+ systemType: z.string().min(1).optional(),
45
+ status: z.string().min(1).optional(),
46
+ diameter: z.number().optional(),
47
+ interstate: z.union([z.boolean(), z.string()]).optional(),
48
+ absence: RRC_PIPELINE_ABSENCE_SCHEMA.optional(),
49
+ verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
50
+ accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
51
+ ...PROPERTY_QUALITY_GATE_FIELDS,
52
+ ...SITE_LAYER_PROVENANCE_FIELDS,
53
+ atomTier: z.literal(PROPERTY_ATOM_TIER),
54
+ readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
55
+ })
56
+ .superRefine((data, ctx) => {
57
+ const hasAbsence = data.absence !== undefined;
58
+ const isAbsentTier = data.sourceTier === "absent";
59
+ const hasClaim = hasPipelineClaim(data);
60
+ if (data.accessPolicy !== PROPERTY_DEFAULT_ACCESS_POLICY) {
61
+ ctx.addIssue({
62
+ code: z.ZodIssueCode.custom,
63
+ message: "rrc-pipeline-fact must use accessPolicy public-free",
64
+ path: ["accessPolicy"],
65
+ });
66
+ }
67
+ if (hasClaim && hasAbsence) {
68
+ ctx.addIssue({
69
+ code: z.ZodIssueCode.custom,
70
+ message: "pipeline claim fields and absence are mutually exclusive",
71
+ path: ["absence"],
72
+ });
73
+ }
74
+ if (isAbsentTier) {
75
+ if (!data.verifiedAbsence) {
76
+ ctx.addIssue({
77
+ code: z.ZodIssueCode.custom,
78
+ message: "sourceTier absent requires verifiedAbsence (evaluated + provenanceScope)",
79
+ path: ["verifiedAbsence"],
80
+ });
81
+ }
82
+ if (hasClaim || data.nearPipeline !== undefined) {
83
+ ctx.addIssue({
84
+ code: z.ZodIssueCode.custom,
85
+ message: "sourceTier absent must not carry pipeline claim fields",
86
+ path: ["sourceTier"],
87
+ });
88
+ }
89
+ }
90
+ else if (hasAbsence) {
91
+ if (hasClaim || data.nearPipeline !== undefined) {
92
+ ctx.addIssue({
93
+ code: z.ZodIssueCode.custom,
94
+ message: "absence must not coexist with pipeline claim fields",
95
+ path: ["absence"],
96
+ });
97
+ }
98
+ }
99
+ else if (data.nearPipeline === undefined) {
100
+ ctx.addIssue({
101
+ code: z.ZodIssueCode.custom,
102
+ message: "rrc-public-gis tier requires nearPipeline when no absence",
103
+ path: ["nearPipeline"],
104
+ });
105
+ }
106
+ else if (data.nearPipeline) {
107
+ if (data.nearestPipelineDistanceMeters === undefined) {
108
+ ctx.addIssue({
109
+ code: z.ZodIssueCode.custom,
110
+ message: "nearPipeline true requires nearestPipelineDistanceMeters",
111
+ path: ["nearestPipelineDistanceMeters"],
112
+ });
113
+ }
114
+ }
115
+ });
116
+ export function createRrcPipelineFact(input) {
117
+ return RRC_PIPELINE_FACT_SCHEMA.parse(input);
118
+ }
119
+ //# sourceMappingURL=rrc-pipeline-fact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rrc-pipeline-fact.js","sourceRoot":"","sources":["../../src/property/rrc-pipeline-fact.ts"],"names":[],"mappings":"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"}
@@ -311,8 +311,8 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
311
311
  }>;
312
312
  sourceTier: z.ZodEnum<["texas-rrc-gis", "absent"]>;
313
313
  apiNumber14: z.ZodOptional<z.ZodString>;
314
- wellStatus: z.ZodOptional<z.ZodEnum<["producing", "permitted", "dry", "plugged-abandoned"]>>;
315
- wellType: z.ZodOptional<z.ZodEnum<["oil", "gas", "injection", "disposal"]>>;
314
+ wellStatus: z.ZodOptional<z.ZodEnum<["producing", "permitted", "dry", "plugged-abandoned", "unknown"]>>;
315
+ wellType: z.ZodOptional<z.ZodEnum<["oil", "gas", "injection", "disposal", "unknown"]>>;
316
316
  orphaned: z.ZodOptional<z.ZodBoolean>;
317
317
  operatorName: z.ZodOptional<z.ZodString>;
318
318
  surfaceLocation: z.ZodOptional<z.ZodObject<{
@@ -408,7 +408,7 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
408
408
  }> | undefined;
409
409
  }> | undefined;
410
410
  apiNumber14?: string | undefined;
411
- wellType?: "oil" | "gas" | "injection" | "disposal" | undefined;
411
+ wellType?: "unknown" | "oil" | "gas" | "injection" | "disposal" | undefined;
412
412
  surfaceLocation?: {
413
413
  lng: number;
414
414
  lat: number;
@@ -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
- wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
426
- orphaned?: boolean | undefined;
427
425
  operatorName?: string | undefined;
426
+ wellStatus?: "unknown" | "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
427
+ orphaned?: boolean | undefined;
428
428
  parcelRelation?: "on-parcel" | "near-parcel" | undefined;
429
429
  proximityRadiusMeters?: number | undefined;
430
430
  proximityDistanceMeters?: number | undefined;
@@ -487,7 +487,7 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
487
487
  }> | undefined;
488
488
  }> | undefined;
489
489
  apiNumber14?: string | undefined;
490
- wellType?: "oil" | "gas" | "injection" | "disposal" | undefined;
490
+ wellType?: "unknown" | "oil" | "gas" | "injection" | "disposal" | undefined;
491
491
  surfaceLocation?: {
492
492
  lng: number;
493
493
  lat: number;
@@ -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
- wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
505
- orphaned?: boolean | undefined;
506
504
  operatorName?: string | undefined;
505
+ wellStatus?: "unknown" | "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
506
+ orphaned?: boolean | undefined;
507
507
  parcelRelation?: "on-parcel" | "near-parcel" | undefined;
508
508
  proximityRadiusMeters?: number | undefined;
509
509
  proximityDistanceMeters?: number | undefined;
@@ -566,7 +566,7 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
566
566
  }> | undefined;
567
567
  }> | undefined;
568
568
  apiNumber14?: string | undefined;
569
- wellType?: "oil" | "gas" | "injection" | "disposal" | undefined;
569
+ wellType?: "unknown" | "oil" | "gas" | "injection" | "disposal" | undefined;
570
570
  surfaceLocation?: {
571
571
  lng: number;
572
572
  lat: number;
@@ -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
- wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
584
- orphaned?: boolean | undefined;
585
583
  operatorName?: string | undefined;
584
+ wellStatus?: "unknown" | "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
585
+ orphaned?: boolean | undefined;
586
586
  parcelRelation?: "on-parcel" | "near-parcel" | undefined;
587
587
  proximityRadiusMeters?: number | undefined;
588
588
  proximityDistanceMeters?: number | undefined;
@@ -645,7 +645,7 @@ export declare const WELL_FACT_SCHEMA: z.ZodEffects<z.ZodObject<{
645
645
  }> | undefined;
646
646
  }> | undefined;
647
647
  apiNumber14?: string | undefined;
648
- wellType?: "oil" | "gas" | "injection" | "disposal" | undefined;
648
+ wellType?: "unknown" | "oil" | "gas" | "injection" | "disposal" | undefined;
649
649
  surfaceLocation?: {
650
650
  lng: number;
651
651
  lat: number;
@@ -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
- wellStatus?: "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
663
- orphaned?: boolean | undefined;
664
662
  operatorName?: string | undefined;
663
+ wellStatus?: "unknown" | "dry" | "producing" | "permitted" | "plugged-abandoned" | undefined;
664
+ orphaned?: boolean | 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.19.0",
3
+ "version": "1.21.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",