@empressaio/atom-contract 1.22.0 → 1.24.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 (120) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/absence/absence-verdict.d.ts +32 -0
  3. package/dist/absence/absence-verdict.d.ts.map +1 -0
  4. package/dist/absence/absence-verdict.js +55 -0
  5. package/dist/absence/absence-verdict.js.map +1 -0
  6. package/dist/absence/index.d.ts +3 -0
  7. package/dist/absence/index.d.ts.map +1 -0
  8. package/dist/absence/index.js +2 -0
  9. package/dist/absence/index.js.map +1 -0
  10. package/dist/access/access-pair.d.ts +29 -0
  11. package/dist/access/access-pair.d.ts.map +1 -0
  12. package/dist/access/access-pair.js +106 -0
  13. package/dist/access/access-pair.js.map +1 -0
  14. package/dist/access/index.d.ts +3 -0
  15. package/dist/access/index.d.ts.map +1 -0
  16. package/dist/access/index.js +2 -0
  17. package/dist/access/index.js.map +1 -0
  18. package/dist/conformance/index.d.ts +2 -0
  19. package/dist/conformance/index.d.ts.map +1 -1
  20. package/dist/conformance/index.js +2 -0
  21. package/dist/conformance/index.js.map +1 -1
  22. package/dist/conformance/track2-absence.d.ts +8 -0
  23. package/dist/conformance/track2-absence.d.ts.map +1 -0
  24. package/dist/conformance/track2-absence.js +19 -0
  25. package/dist/conformance/track2-absence.js.map +1 -0
  26. package/dist/conformance/track2-access.d.ts +6 -0
  27. package/dist/conformance/track2-access.d.ts.map +1 -0
  28. package/dist/conformance/track2-access.js +10 -0
  29. package/dist/conformance/track2-access.js.map +1 -0
  30. package/dist/conformance/track2-alias.d.ts +7 -0
  31. package/dist/conformance/track2-alias.d.ts.map +1 -0
  32. package/dist/conformance/track2-alias.js +21 -0
  33. package/dist/conformance/track2-alias.js.map +1 -0
  34. package/dist/conformance/track2-derivation.d.ts +6 -0
  35. package/dist/conformance/track2-derivation.d.ts.map +1 -0
  36. package/dist/conformance/track2-derivation.js +15 -0
  37. package/dist/conformance/track2-derivation.js.map +1 -0
  38. package/dist/conformance/track2-node-id.d.ts +7 -0
  39. package/dist/conformance/track2-node-id.d.ts.map +1 -0
  40. package/dist/conformance/track2-node-id.js +9 -0
  41. package/dist/conformance/track2-node-id.js.map +1 -0
  42. package/dist/conformance/track2-provenance.d.ts +11 -0
  43. package/dist/conformance/track2-provenance.d.ts.map +1 -0
  44. package/dist/conformance/track2-provenance.js +39 -0
  45. package/dist/conformance/track2-provenance.js.map +1 -0
  46. package/dist/conformance/track2-selector.d.ts +12 -0
  47. package/dist/conformance/track2-selector.d.ts.map +1 -0
  48. package/dist/conformance/track2-selector.js +12 -0
  49. package/dist/conformance/track2-selector.js.map +1 -0
  50. package/dist/conformance/track2-supersession.d.ts +6 -0
  51. package/dist/conformance/track2-supersession.d.ts.map +1 -0
  52. package/dist/conformance/track2-supersession.js +12 -0
  53. package/dist/conformance/track2-supersession.js.map +1 -0
  54. package/dist/derivation/derivation.d.ts +30 -0
  55. package/dist/derivation/derivation.d.ts.map +1 -0
  56. package/dist/derivation/derivation.js +61 -0
  57. package/dist/derivation/derivation.js.map +1 -0
  58. package/dist/derivation/index.d.ts +3 -0
  59. package/dist/derivation/index.d.ts.map +1 -0
  60. package/dist/derivation/index.js +2 -0
  61. package/dist/derivation/index.js.map +1 -0
  62. package/dist/identity/alias.d.ts +53 -0
  63. package/dist/identity/alias.d.ts.map +1 -0
  64. package/dist/identity/alias.js +99 -0
  65. package/dist/identity/alias.js.map +1 -0
  66. package/dist/identity/index.d.ts +8 -0
  67. package/dist/identity/index.d.ts.map +1 -0
  68. package/dist/identity/index.js +8 -0
  69. package/dist/identity/index.js.map +1 -0
  70. package/dist/identity/node-id.d.ts +56 -0
  71. package/dist/identity/node-id.d.ts.map +1 -0
  72. package/dist/identity/node-id.js +82 -0
  73. package/dist/identity/node-id.js.map +1 -0
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/lineage/index.d.ts +3 -0
  79. package/dist/lineage/index.d.ts.map +1 -0
  80. package/dist/lineage/index.js +2 -0
  81. package/dist/lineage/index.js.map +1 -0
  82. package/dist/lineage/supersession.d.ts +34 -0
  83. package/dist/lineage/supersession.d.ts.map +1 -0
  84. package/dist/lineage/supersession.js +48 -0
  85. package/dist/lineage/supersession.js.map +1 -0
  86. package/dist/property/buildable-envelope.d.ts +20 -20
  87. package/dist/property/building-footprint.d.ts +20 -20
  88. package/dist/property/cad-parcel-roll.d.ts +20 -20
  89. package/dist/property/common.d.ts +12 -12
  90. package/dist/property/flood-hazard-fact.d.ts +24 -24
  91. package/dist/property/land-use-fact.d.ts +20 -20
  92. package/dist/property/owner-fact.d.ts +20 -20
  93. package/dist/property/parcel-node.d.ts +20 -20
  94. package/dist/property/parcel-terrain-model.d.ts +20 -20
  95. package/dist/property/rail-corridor-fact.d.ts +20 -20
  96. package/dist/property/road-node.d.ts +16 -16
  97. package/dist/property/rrc-pipeline-fact.d.ts +20 -20
  98. package/dist/property/setback-rule.d.ts +20 -20
  99. package/dist/property/special-district-fact.d.ts +20 -20
  100. package/dist/property/utility-easement.d.ts +20 -20
  101. package/dist/property/well-fact.d.ts +20 -20
  102. package/dist/property/zoning-fact.d.ts +20 -20
  103. package/dist/provenance/index.d.ts +3 -0
  104. package/dist/provenance/index.d.ts.map +1 -0
  105. package/dist/provenance/index.js +2 -0
  106. package/dist/provenance/index.js.map +1 -0
  107. package/dist/provenance/provenance-class.d.ts +52 -0
  108. package/dist/provenance/provenance-class.d.ts.map +1 -0
  109. package/dist/provenance/provenance-class.js +91 -0
  110. package/dist/provenance/provenance-class.js.map +1 -0
  111. package/dist/read-contract/reasoning-axes.d.ts +28 -28
  112. package/dist/selector/index.d.ts +3 -0
  113. package/dist/selector/index.d.ts.map +1 -0
  114. package/dist/selector/index.js +2 -0
  115. package/dist/selector/index.js.map +1 -0
  116. package/dist/selector/selector-predicate.d.ts +101 -0
  117. package/dist/selector/selector-predicate.d.ts.map +1 -0
  118. package/dist/selector/selector-predicate.js +104 -0
  119. package/dist/selector/selector-predicate.js.map +1 -0
  120. package/package.json +5 -1
@@ -31,15 +31,15 @@ export declare const PROPERTY_CONSEQUENCE_PROPERTY_RISK_SCHEMA: z.ZodObject<{
31
31
  assertedAt: z.ZodString;
32
32
  auditRef: z.ZodOptional<z.ZodString>;
33
33
  }, "strip", z.ZodTypeAny, {
34
+ kind: "property-risk";
34
35
  stratum: PropertyRiskStratum;
35
36
  assertedAt: string;
36
- kind: "property-risk";
37
37
  basis: string;
38
38
  auditRef?: string | undefined;
39
39
  }, {
40
+ kind: "property-risk";
40
41
  stratum: PropertyRiskStratum;
41
42
  assertedAt: string;
42
- kind: "property-risk";
43
43
  basis: string;
44
44
  auditRef?: string | undefined;
45
45
  }>;
@@ -48,12 +48,12 @@ export declare const PROPERTY_CONSEQUENCE_NOT_APPLICABLE_SCHEMA: z.ZodObject<{
48
48
  reason: z.ZodString;
49
49
  assertedAt: z.ZodString;
50
50
  }, "strip", z.ZodTypeAny, {
51
- assertedAt: string;
52
51
  kind: "not-applicable";
52
+ assertedAt: string;
53
53
  reason: string;
54
54
  }, {
55
- assertedAt: string;
56
55
  kind: "not-applicable";
56
+ assertedAt: string;
57
57
  reason: string;
58
58
  }>;
59
59
  export declare const PROPERTY_CONSEQUENCE_SCHEMA: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
@@ -63,15 +63,15 @@ export declare const PROPERTY_CONSEQUENCE_SCHEMA: z.ZodDiscriminatedUnion<"kind"
63
63
  assertedAt: z.ZodString;
64
64
  auditRef: z.ZodOptional<z.ZodString>;
65
65
  }, "strip", z.ZodTypeAny, {
66
+ kind: "property-risk";
66
67
  stratum: PropertyRiskStratum;
67
68
  assertedAt: string;
68
- kind: "property-risk";
69
69
  basis: string;
70
70
  auditRef?: string | undefined;
71
71
  }, {
72
+ kind: "property-risk";
72
73
  stratum: PropertyRiskStratum;
73
74
  assertedAt: string;
74
- kind: "property-risk";
75
75
  basis: string;
76
76
  auditRef?: string | undefined;
77
77
  }>, z.ZodObject<{
@@ -79,12 +79,12 @@ export declare const PROPERTY_CONSEQUENCE_SCHEMA: z.ZodDiscriminatedUnion<"kind"
79
79
  reason: z.ZodString;
80
80
  assertedAt: z.ZodString;
81
81
  }, "strip", z.ZodTypeAny, {
82
- assertedAt: string;
83
82
  kind: "not-applicable";
83
+ assertedAt: string;
84
84
  reason: string;
85
85
  }, {
86
- assertedAt: string;
87
86
  kind: "not-applicable";
87
+ assertedAt: string;
88
88
  reason: string;
89
89
  }>]>;
90
90
  export interface ReasoningThreeAxisConfidence {
@@ -132,15 +132,15 @@ export declare const REASONING_THREE_AXIS_CONFIDENCE_SCHEMA: z.ZodReadonly<z.Zod
132
132
  assertedAt: z.ZodString;
133
133
  auditRef: z.ZodOptional<z.ZodString>;
134
134
  }, "strip", z.ZodTypeAny, {
135
+ kind: "property-risk";
135
136
  stratum: PropertyRiskStratum;
136
137
  assertedAt: string;
137
- kind: "property-risk";
138
138
  basis: string;
139
139
  auditRef?: string | undefined;
140
140
  }, {
141
+ kind: "property-risk";
141
142
  stratum: PropertyRiskStratum;
142
143
  assertedAt: string;
143
- kind: "property-risk";
144
144
  basis: string;
145
145
  auditRef?: string | undefined;
146
146
  }>, z.ZodObject<{
@@ -148,12 +148,12 @@ export declare const REASONING_THREE_AXIS_CONFIDENCE_SCHEMA: z.ZodReadonly<z.Zod
148
148
  reason: z.ZodString;
149
149
  assertedAt: z.ZodString;
150
150
  }, "strip", z.ZodTypeAny, {
151
- assertedAt: string;
152
151
  kind: "not-applicable";
152
+ assertedAt: string;
153
153
  reason: string;
154
154
  }, {
155
- assertedAt: string;
156
155
  kind: "not-applicable";
156
+ assertedAt: string;
157
157
  reason: string;
158
158
  }>]>;
159
159
  }, "strip", z.ZodTypeAny, {
@@ -170,14 +170,14 @@ export declare const REASONING_THREE_AXIS_CONFIDENCE_SCHEMA: z.ZodReadonly<z.Zod
170
170
  provenance: "asserted" | "backtest" | "seed" | "live";
171
171
  }>;
172
172
  consequence: {
173
+ kind: "property-risk";
173
174
  stratum: PropertyRiskStratum;
174
175
  assertedAt: string;
175
- kind: "property-risk";
176
176
  basis: string;
177
177
  auditRef?: string | undefined;
178
178
  } | {
179
- assertedAt: string;
180
179
  kind: "not-applicable";
180
+ assertedAt: string;
181
181
  reason: string;
182
182
  };
183
183
  }, {
@@ -194,14 +194,14 @@ export declare const REASONING_THREE_AXIS_CONFIDENCE_SCHEMA: z.ZodReadonly<z.Zod
194
194
  provenance: "asserted" | "backtest" | "seed" | "live";
195
195
  }>;
196
196
  consequence: {
197
+ kind: "property-risk";
197
198
  stratum: PropertyRiskStratum;
198
199
  assertedAt: string;
199
- kind: "property-risk";
200
200
  basis: string;
201
201
  auditRef?: string | undefined;
202
202
  } | {
203
- assertedAt: string;
204
203
  kind: "not-applicable";
204
+ assertedAt: string;
205
205
  reason: string;
206
206
  };
207
207
  }>>;
@@ -255,15 +255,15 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
255
255
  assertedAt: z.ZodString;
256
256
  auditRef: z.ZodOptional<z.ZodString>;
257
257
  }, "strip", z.ZodTypeAny, {
258
+ kind: "property-risk";
258
259
  stratum: PropertyRiskStratum;
259
260
  assertedAt: string;
260
- kind: "property-risk";
261
261
  basis: string;
262
262
  auditRef?: string | undefined;
263
263
  }, {
264
+ kind: "property-risk";
264
265
  stratum: PropertyRiskStratum;
265
266
  assertedAt: string;
266
- kind: "property-risk";
267
267
  basis: string;
268
268
  auditRef?: string | undefined;
269
269
  }>, z.ZodObject<{
@@ -271,12 +271,12 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
271
271
  reason: z.ZodString;
272
272
  assertedAt: z.ZodString;
273
273
  }, "strip", z.ZodTypeAny, {
274
- assertedAt: string;
275
274
  kind: "not-applicable";
275
+ assertedAt: string;
276
276
  reason: string;
277
277
  }, {
278
- assertedAt: string;
279
278
  kind: "not-applicable";
279
+ assertedAt: string;
280
280
  reason: string;
281
281
  }>]>;
282
282
  }, "strip", z.ZodTypeAny, {
@@ -293,14 +293,14 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
293
293
  provenance: "asserted" | "backtest" | "seed" | "live";
294
294
  }>;
295
295
  consequence: {
296
+ kind: "property-risk";
296
297
  stratum: PropertyRiskStratum;
297
298
  assertedAt: string;
298
- kind: "property-risk";
299
299
  basis: string;
300
300
  auditRef?: string | undefined;
301
301
  } | {
302
- assertedAt: string;
303
302
  kind: "not-applicable";
303
+ assertedAt: string;
304
304
  reason: string;
305
305
  };
306
306
  }, {
@@ -317,14 +317,14 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
317
317
  provenance: "asserted" | "backtest" | "seed" | "live";
318
318
  }>;
319
319
  consequence: {
320
+ kind: "property-risk";
320
321
  stratum: PropertyRiskStratum;
321
322
  assertedAt: string;
322
- kind: "property-risk";
323
323
  basis: string;
324
324
  auditRef?: string | undefined;
325
325
  } | {
326
- assertedAt: string;
327
326
  kind: "not-applicable";
327
+ assertedAt: string;
328
328
  reason: string;
329
329
  };
330
330
  }>>;
@@ -391,14 +391,14 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
391
391
  provenance: "asserted" | "backtest" | "seed" | "live";
392
392
  }>;
393
393
  consequence: {
394
+ kind: "property-risk";
394
395
  stratum: PropertyRiskStratum;
395
396
  assertedAt: string;
396
- kind: "property-risk";
397
397
  basis: string;
398
398
  auditRef?: string | undefined;
399
399
  } | {
400
- assertedAt: string;
401
400
  kind: "not-applicable";
401
+ assertedAt: string;
402
402
  reason: string;
403
403
  };
404
404
  }>;
@@ -431,14 +431,14 @@ export declare const REASONING_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
431
431
  provenance: "asserted" | "backtest" | "seed" | "live";
432
432
  }>;
433
433
  consequence: {
434
+ kind: "property-risk";
434
435
  stratum: PropertyRiskStratum;
435
436
  assertedAt: string;
436
- kind: "property-risk";
437
437
  basis: string;
438
438
  auditRef?: string | undefined;
439
439
  } | {
440
- assertedAt: string;
441
440
  kind: "not-applicable";
441
+ assertedAt: string;
442
442
  reason: string;
443
443
  };
444
444
  }>;
@@ -0,0 +1,3 @@
1
+ export { FLOOD_ZONE_SELECTORS, SELECTOR_KINDS, SelectorParseError, SelectorPredicate, match, parseSelector, } from "./selector-predicate.js";
2
+ export type { And, Composition, Equality, Or, Range, SelectorHandlers, SelectorKind, SetMember, SpatialContains, } from "./selector-predicate.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/selector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,GAAG,EACH,WAAW,EACX,QAAQ,EACR,EAAE,EACF,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,eAAe,GAChB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { FLOOD_ZONE_SELECTORS, SELECTOR_KINDS, SelectorParseError, SelectorPredicate, match, parseSelector, } from "./selector-predicate.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/selector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,aAAa,GACd,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Selector predicate — instrument contract item 2.11.
3
+ *
4
+ * Closed discriminated union: spatial containment, set membership,
5
+ * equality, range, and composition. `match` is exhaustive.
6
+ */
7
+ export type SpatialContains = {
8
+ readonly kind: "spatial-contains";
9
+ readonly geom: unknown;
10
+ };
11
+ export type SetMember = {
12
+ readonly kind: "set-member";
13
+ readonly set: readonly unknown[];
14
+ };
15
+ export type Equality = {
16
+ readonly kind: "eq";
17
+ readonly field: string;
18
+ readonly value: unknown;
19
+ };
20
+ export type Range = {
21
+ readonly kind: "range";
22
+ readonly field: string;
23
+ readonly min: unknown;
24
+ readonly max: unknown;
25
+ };
26
+ export type And = {
27
+ readonly kind: "and";
28
+ readonly clauses: readonly SelectorPredicate[];
29
+ };
30
+ export type Or = {
31
+ readonly kind: "or";
32
+ readonly clauses: readonly SelectorPredicate[];
33
+ };
34
+ export type Composition = And | Or;
35
+ export type SelectorPredicate = SpatialContains | SetMember | Equality | Range | And | Or;
36
+ export declare const SELECTOR_KINDS: readonly ["spatial-contains", "set-member", "eq", "range", "and", "or"];
37
+ export type SelectorKind = (typeof SELECTOR_KINDS)[number];
38
+ export type SelectorHandlers<T> = {
39
+ [K in SelectorPredicate["kind"]]: (pred: Extract<SelectorPredicate, {
40
+ kind: K;
41
+ }>) => T;
42
+ };
43
+ export declare class SelectorParseError extends Error {
44
+ readonly input: unknown;
45
+ readonly code: string;
46
+ constructor(message: string, input: unknown, code?: string);
47
+ }
48
+ export declare function parseSelector(input: unknown): SelectorPredicate;
49
+ export declare function match<T>(pred: SelectorPredicate, handlers: SelectorHandlers<T>): T;
50
+ /** Factory flood selectors from F-16/F-18 close item 8. */
51
+ export declare const FLOOD_ZONE_SELECTORS: {
52
+ readonly A: {
53
+ readonly kind: "eq";
54
+ readonly field: "fld_zone";
55
+ readonly value: "A";
56
+ };
57
+ readonly AE: {
58
+ readonly kind: "eq";
59
+ readonly field: "fld_zone";
60
+ readonly value: "AE";
61
+ };
62
+ readonly AO: {
63
+ readonly kind: "eq";
64
+ readonly field: "fld_zone";
65
+ readonly value: "AO";
66
+ };
67
+ readonly X: {
68
+ readonly kind: "eq";
69
+ readonly field: "fld_zone";
70
+ readonly value: "X";
71
+ };
72
+ };
73
+ /** Runtime export so the Factory shim check observes `SelectorPredicate` on the module. */
74
+ export declare const SelectorPredicate: Readonly<{
75
+ kinds: readonly ["spatial-contains", "set-member", "eq", "range", "and", "or"];
76
+ parse: typeof parseSelector;
77
+ match: typeof match;
78
+ floodZones: {
79
+ readonly A: {
80
+ readonly kind: "eq";
81
+ readonly field: "fld_zone";
82
+ readonly value: "A";
83
+ };
84
+ readonly AE: {
85
+ readonly kind: "eq";
86
+ readonly field: "fld_zone";
87
+ readonly value: "AE";
88
+ };
89
+ readonly AO: {
90
+ readonly kind: "eq";
91
+ readonly field: "fld_zone";
92
+ readonly value: "AO";
93
+ };
94
+ readonly X: {
95
+ readonly kind: "eq";
96
+ readonly field: "fld_zone";
97
+ readonly value: "X";
98
+ };
99
+ };
100
+ }>;
101
+ //# sourceMappingURL=selector-predicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-predicate.d.ts","sourceRoot":"","sources":["../../src/selector/selector-predicate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,EAAE,GAAG;IACf,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,EAAE,CAAC;AAEnC,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,SAAS,GACT,QAAQ,GACR,KAAK,GACL,GAAG,GACH,EAAE,CAAC;AAEP,eAAO,MAAM,cAAc,yEAOjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAChC,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAC1C,CAAC;CACP,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,KAAK;IAKzC,QAAQ,CAAC,KAAK,EAAE,OAAO;IAJzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGpB,OAAO,EAAE,MAAM,EACN,KAAK,EAAE,OAAO,EACvB,IAAI,SAAmB;CAM1B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAoD/D;AAED,wBAAgB,KAAK,CAAC,CAAC,EACrB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,CAAC,CAuBH;AAED,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;CAK6B,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;EAK5B,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Selector predicate — instrument contract item 2.11.
3
+ *
4
+ * Closed discriminated union: spatial containment, set membership,
5
+ * equality, range, and composition. `match` is exhaustive.
6
+ */
7
+ export const SELECTOR_KINDS = [
8
+ "spatial-contains",
9
+ "set-member",
10
+ "eq",
11
+ "range",
12
+ "and",
13
+ "or",
14
+ ];
15
+ export class SelectorParseError extends Error {
16
+ input;
17
+ code;
18
+ constructor(message, input, code = "SELECTOR_FIELD") {
19
+ super(message);
20
+ this.input = input;
21
+ this.name = "SelectorParseError";
22
+ this.code = code;
23
+ }
24
+ }
25
+ export function parseSelector(input) {
26
+ if (!input || typeof input !== "object") {
27
+ throw new SelectorParseError("selector predicate is not a closed-union kind", input, "SELECTOR_KIND");
28
+ }
29
+ const pred = input;
30
+ const kind = pred.kind;
31
+ if (kind === "spatial-contains") {
32
+ if (pred.geom == null) {
33
+ throw new SelectorParseError("spatial-contains requires geom", input);
34
+ }
35
+ return { kind: "spatial-contains", geom: pred.geom };
36
+ }
37
+ if (kind === "set-member") {
38
+ if (!Array.isArray(pred.set)) {
39
+ throw new SelectorParseError("set-member requires set", input);
40
+ }
41
+ return { kind: "set-member", set: pred.set };
42
+ }
43
+ if (kind === "eq") {
44
+ if (pred.field == null || pred.value === undefined) {
45
+ throw new SelectorParseError("eq requires field and value", input);
46
+ }
47
+ return { kind: "eq", field: String(pred.field), value: pred.value };
48
+ }
49
+ if (kind === "range") {
50
+ if (pred.field == null || pred.min === undefined || pred.max === undefined) {
51
+ throw new SelectorParseError("range requires field, min, max", input);
52
+ }
53
+ return {
54
+ kind: "range",
55
+ field: String(pred.field),
56
+ min: pred.min,
57
+ max: pred.max,
58
+ };
59
+ }
60
+ if (kind === "and" || kind === "or") {
61
+ if (!Array.isArray(pred.clauses)) {
62
+ throw new SelectorParseError(`${kind} requires clauses`, input);
63
+ }
64
+ return kind === "and"
65
+ ? { kind: "and", clauses: pred.clauses.map((c) => parseSelector(c)) }
66
+ : { kind: "or", clauses: pred.clauses.map((c) => parseSelector(c)) };
67
+ }
68
+ throw new SelectorParseError("selector predicate is not a closed-union kind", input, "SELECTOR_KIND");
69
+ }
70
+ export function match(pred, handlers) {
71
+ switch (pred.kind) {
72
+ case "spatial-contains":
73
+ return handlers["spatial-contains"](pred);
74
+ case "set-member":
75
+ return handlers["set-member"](pred);
76
+ case "eq":
77
+ return handlers.eq(pred);
78
+ case "range":
79
+ return handlers.range(pred);
80
+ case "and":
81
+ return handlers.and(pred);
82
+ case "or":
83
+ return handlers.or(pred);
84
+ default: {
85
+ const _exhaustive = pred;
86
+ throw new SelectorParseError(`unhandled selector kind ${String(_exhaustive)}`, pred, "SELECTOR_KIND");
87
+ }
88
+ }
89
+ }
90
+ /** Factory flood selectors from F-16/F-18 close item 8. */
91
+ export const FLOOD_ZONE_SELECTORS = {
92
+ A: { kind: "eq", field: "fld_zone", value: "A" },
93
+ AE: { kind: "eq", field: "fld_zone", value: "AE" },
94
+ AO: { kind: "eq", field: "fld_zone", value: "AO" },
95
+ X: { kind: "eq", field: "fld_zone", value: "X" },
96
+ };
97
+ /** Runtime export so the Factory shim check observes `SelectorPredicate` on the module. */
98
+ export const SelectorPredicate = Object.freeze({
99
+ kinds: SELECTOR_KINDS,
100
+ parse: parseSelector,
101
+ match,
102
+ floodZones: FLOOD_ZONE_SELECTORS,
103
+ });
104
+ //# sourceMappingURL=selector-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-predicate.js","sourceRoot":"","sources":["../../src/selector/selector-predicate.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.22.0",
3
+ "version": "1.24.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",
@@ -50,6 +50,10 @@
50
50
  "types": "./dist/property/index.d.ts",
51
51
  "import": "./dist/property/index.js"
52
52
  },
53
+ "./identity": {
54
+ "types": "./dist/identity/index.d.ts",
55
+ "import": "./dist/identity/index.js"
56
+ },
53
57
  "./package.json": "./package.json"
54
58
  },
55
59
  "files": [