@empressaio/atom-contract 1.7.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 (251) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/README.md +379 -0
  3. package/dist/composition.d.ts +112 -0
  4. package/dist/composition.d.ts.map +1 -0
  5. package/dist/composition.js +80 -0
  6. package/dist/composition.js.map +1 -0
  7. package/dist/conformance/common.d.ts +21 -0
  8. package/dist/conformance/common.d.ts.map +1 -0
  9. package/dist/conformance/common.js +29 -0
  10. package/dist/conformance/common.js.map +1 -0
  11. package/dist/conformance/fixtures.d.ts +13 -0
  12. package/dist/conformance/fixtures.d.ts.map +1 -0
  13. package/dist/conformance/fixtures.js +63 -0
  14. package/dist/conformance/fixtures.js.map +1 -0
  15. package/dist/conformance/index.d.ts +11 -0
  16. package/dist/conformance/index.d.ts.map +1 -0
  17. package/dist/conformance/index.js +11 -0
  18. package/dist/conformance/index.js.map +1 -0
  19. package/dist/conformance/validate.d.ts +49 -0
  20. package/dist/conformance/validate.d.ts.map +1 -0
  21. package/dist/conformance/validate.js +138 -0
  22. package/dist/conformance/validate.js.map +1 -0
  23. package/dist/conformance/verify-chain.d.ts +25 -0
  24. package/dist/conformance/verify-chain.d.ts.map +1 -0
  25. package/dist/conformance/verify-chain.js +76 -0
  26. package/dist/conformance/verify-chain.js.map +1 -0
  27. package/dist/context.d.ts +134 -0
  28. package/dist/context.d.ts.map +1 -0
  29. package/dist/context.js +110 -0
  30. package/dist/context.js.map +1 -0
  31. package/dist/encumbrances/administrative-rule.d.ts +128 -0
  32. package/dist/encumbrances/administrative-rule.d.ts.map +1 -0
  33. package/dist/encumbrances/administrative-rule.js +18 -0
  34. package/dist/encumbrances/administrative-rule.js.map +1 -0
  35. package/dist/encumbrances/common.d.ts +153 -0
  36. package/dist/encumbrances/common.d.ts.map +1 -0
  37. package/dist/encumbrances/common.js +124 -0
  38. package/dist/encumbrances/common.js.map +1 -0
  39. package/dist/encumbrances/constraint-resolution.d.ts +169 -0
  40. package/dist/encumbrances/constraint-resolution.d.ts.map +1 -0
  41. package/dist/encumbrances/constraint-resolution.js +41 -0
  42. package/dist/encumbrances/constraint-resolution.js.map +1 -0
  43. package/dist/encumbrances/fixtures.d.ts +16 -0
  44. package/dist/encumbrances/fixtures.d.ts.map +1 -0
  45. package/dist/encumbrances/fixtures.js +107 -0
  46. package/dist/encumbrances/fixtures.js.map +1 -0
  47. package/dist/encumbrances/index.d.ts +15 -0
  48. package/dist/encumbrances/index.d.ts.map +1 -0
  49. package/dist/encumbrances/index.js +15 -0
  50. package/dist/encumbrances/index.js.map +1 -0
  51. package/dist/encumbrances/recorded-instrument.d.ts +131 -0
  52. package/dist/encumbrances/recorded-instrument.d.ts.map +1 -0
  53. package/dist/encumbrances/recorded-instrument.js +19 -0
  54. package/dist/encumbrances/recorded-instrument.js.map +1 -0
  55. package/dist/encumbrances/restriction-clause.d.ts +120 -0
  56. package/dist/encumbrances/restriction-clause.d.ts.map +1 -0
  57. package/dist/encumbrances/restriction-clause.js +17 -0
  58. package/dist/encumbrances/restriction-clause.js.map +1 -0
  59. package/dist/encumbrances/restriction-corpus.d.ts +44 -0
  60. package/dist/encumbrances/restriction-corpus.d.ts.map +1 -0
  61. package/dist/encumbrances/restriction-corpus.js +14 -0
  62. package/dist/encumbrances/restriction-corpus.js.map +1 -0
  63. package/dist/export/downloadable-atom.d.ts +133 -0
  64. package/dist/export/downloadable-atom.d.ts.map +1 -0
  65. package/dist/export/downloadable-atom.js +115 -0
  66. package/dist/export/downloadable-atom.js.map +1 -0
  67. package/dist/export/index.d.ts +6 -0
  68. package/dist/export/index.d.ts.map +1 -0
  69. package/dist/export/index.js +6 -0
  70. package/dist/export/index.js.map +1 -0
  71. package/dist/history.d.ts +124 -0
  72. package/dist/history.d.ts.map +1 -0
  73. package/dist/history.js +170 -0
  74. package/dist/history.js.map +1 -0
  75. package/dist/index.d.ts +29 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +20 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/inline-reference.d.ts +60 -0
  80. package/dist/inline-reference.d.ts.map +1 -0
  81. package/dist/inline-reference.js +73 -0
  82. package/dist/inline-reference.js.map +1 -0
  83. package/dist/obligation.d.ts +131 -0
  84. package/dist/obligation.d.ts.map +1 -0
  85. package/dist/obligation.js +55 -0
  86. package/dist/obligation.js.map +1 -0
  87. package/dist/og/common.d.ts +253 -0
  88. package/dist/og/common.d.ts.map +1 -0
  89. package/dist/og/common.js +195 -0
  90. package/dist/og/common.js.map +1 -0
  91. package/dist/og/completion.d.ts +70 -0
  92. package/dist/og/completion.d.ts.map +1 -0
  93. package/dist/og/completion.js +22 -0
  94. package/dist/og/completion.js.map +1 -0
  95. package/dist/og/equipment-state.d.ts +55 -0
  96. package/dist/og/equipment-state.d.ts.map +1 -0
  97. package/dist/og/equipment-state.js +25 -0
  98. package/dist/og/equipment-state.js.map +1 -0
  99. package/dist/og/fixtures.d.ts +40 -0
  100. package/dist/og/fixtures.d.ts.map +1 -0
  101. package/dist/og/fixtures.js +255 -0
  102. package/dist/og/fixtures.js.map +1 -0
  103. package/dist/og/index.d.ts +23 -0
  104. package/dist/og/index.d.ts.map +1 -0
  105. package/dist/og/index.js +23 -0
  106. package/dist/og/index.js.map +1 -0
  107. package/dist/og/mineral-lease.d.ts +150 -0
  108. package/dist/og/mineral-lease.d.ts.map +1 -0
  109. package/dist/og/mineral-lease.js +24 -0
  110. package/dist/og/mineral-lease.js.map +1 -0
  111. package/dist/og/ownership-interest.d.ts +163 -0
  112. package/dist/og/ownership-interest.d.ts.map +1 -0
  113. package/dist/og/ownership-interest.js +36 -0
  114. package/dist/og/ownership-interest.js.map +1 -0
  115. package/dist/og/pad.d.ts +101 -0
  116. package/dist/og/pad.d.ts.map +1 -0
  117. package/dist/og/pad.js +19 -0
  118. package/dist/og/pad.js.map +1 -0
  119. package/dist/og/production-timeseries.d.ts +154 -0
  120. package/dist/og/production-timeseries.d.ts.map +1 -0
  121. package/dist/og/production-timeseries.js +37 -0
  122. package/dist/og/production-timeseries.js.map +1 -0
  123. package/dist/og/revenue-allocation-unit.d.ts +762 -0
  124. package/dist/og/revenue-allocation-unit.d.ts.map +1 -0
  125. package/dist/og/revenue-allocation-unit.js +105 -0
  126. package/dist/og/revenue-allocation-unit.js.map +1 -0
  127. package/dist/og/rrc-lease.d.ts +124 -0
  128. package/dist/og/rrc-lease.d.ts.map +1 -0
  129. package/dist/og/rrc-lease.js +29 -0
  130. package/dist/og/rrc-lease.js.map +1 -0
  131. package/dist/og/tract.d.ts +88 -0
  132. package/dist/og/tract.d.ts.map +1 -0
  133. package/dist/og/tract.js +30 -0
  134. package/dist/og/tract.js.map +1 -0
  135. package/dist/og/well.d.ts +201 -0
  136. package/dist/og/well.d.ts.map +1 -0
  137. package/dist/og/well.js +40 -0
  138. package/dist/og/well.js.map +1 -0
  139. package/dist/og/wellbore.d.ts +61 -0
  140. package/dist/og/wellbore.d.ts.map +1 -0
  141. package/dist/og/wellbore.js +25 -0
  142. package/dist/og/wellbore.js.map +1 -0
  143. package/dist/og/zone.d.ts +45 -0
  144. package/dist/og/zone.d.ts.map +1 -0
  145. package/dist/og/zone.js +16 -0
  146. package/dist/og/zone.js.map +1 -0
  147. package/dist/read-contract/common.d.ts +74 -0
  148. package/dist/read-contract/common.d.ts.map +1 -0
  149. package/dist/read-contract/common.js +54 -0
  150. package/dist/read-contract/common.js.map +1 -0
  151. package/dist/read-contract/consequence.d.ts +99 -0
  152. package/dist/read-contract/consequence.d.ts.map +1 -0
  153. package/dist/read-contract/consequence.js +46 -0
  154. package/dist/read-contract/consequence.js.map +1 -0
  155. package/dist/read-contract/fixtures.d.ts +8 -0
  156. package/dist/read-contract/fixtures.d.ts.map +1 -0
  157. package/dist/read-contract/fixtures.js +44 -0
  158. package/dist/read-contract/fixtures.js.map +1 -0
  159. package/dist/read-contract/index.d.ts +14 -0
  160. package/dist/read-contract/index.d.ts.map +1 -0
  161. package/dist/read-contract/index.js +14 -0
  162. package/dist/read-contract/index.js.map +1 -0
  163. package/dist/read-contract/model-attribution.d.ts +85 -0
  164. package/dist/read-contract/model-attribution.d.ts.map +1 -0
  165. package/dist/read-contract/model-attribution.js +30 -0
  166. package/dist/read-contract/model-attribution.js.map +1 -0
  167. package/dist/read-contract/read-contract.d.ts +455 -0
  168. package/dist/read-contract/read-contract.d.ts.map +1 -0
  169. package/dist/read-contract/read-contract.js +46 -0
  170. package/dist/read-contract/read-contract.js.map +1 -0
  171. package/dist/registration.d.ts +192 -0
  172. package/dist/registration.d.ts.map +1 -0
  173. package/dist/registration.js +15 -0
  174. package/dist/registration.js.map +1 -0
  175. package/dist/registry.d.ts +128 -0
  176. package/dist/registry.d.ts.map +1 -0
  177. package/dist/registry.js +122 -0
  178. package/dist/registry.js.map +1 -0
  179. package/dist/render.d.ts +30 -0
  180. package/dist/render.d.ts.map +1 -0
  181. package/dist/render.js +44 -0
  182. package/dist/render.js.map +1 -0
  183. package/dist/scope.d.ts +46 -0
  184. package/dist/scope.d.ts.map +1 -0
  185. package/dist/scope.js +17 -0
  186. package/dist/scope.js.map +1 -0
  187. package/dist/temporal/anticipatory-atom.d.ts +123 -0
  188. package/dist/temporal/anticipatory-atom.d.ts.map +1 -0
  189. package/dist/temporal/anticipatory-atom.js +124 -0
  190. package/dist/temporal/anticipatory-atom.js.map +1 -0
  191. package/dist/temporal/common.d.ts +47 -0
  192. package/dist/temporal/common.d.ts.map +1 -0
  193. package/dist/temporal/common.js +100 -0
  194. package/dist/temporal/common.js.map +1 -0
  195. package/dist/temporal/fixtures.d.ts +7 -0
  196. package/dist/temporal/fixtures.d.ts.map +1 -0
  197. package/dist/temporal/fixtures.js +21 -0
  198. package/dist/temporal/fixtures.js.map +1 -0
  199. package/dist/temporal/index.d.ts +13 -0
  200. package/dist/temporal/index.d.ts.map +1 -0
  201. package/dist/temporal/index.js +13 -0
  202. package/dist/temporal/index.js.map +1 -0
  203. package/dist/temporal/interval-query.d.ts +42 -0
  204. package/dist/temporal/interval-query.d.ts.map +1 -0
  205. package/dist/temporal/interval-query.js +49 -0
  206. package/dist/temporal/interval-query.js.map +1 -0
  207. package/dist/temporal/node-id.d.ts +112 -0
  208. package/dist/temporal/node-id.d.ts.map +1 -0
  209. package/dist/temporal/node-id.js +208 -0
  210. package/dist/temporal/node-id.js.map +1 -0
  211. package/dist/temporal/would-affect-edge.d.ts +66 -0
  212. package/dist/temporal/would-affect-edge.d.ts.map +1 -0
  213. package/dist/temporal/would-affect-edge.js +113 -0
  214. package/dist/temporal/would-affect-edge.js.map +1 -0
  215. package/dist/testing/index.d.ts +98 -0
  216. package/dist/testing/index.d.ts.map +1 -0
  217. package/dist/testing/index.js +225 -0
  218. package/dist/testing/index.js.map +1 -0
  219. package/dist/vda.d.ts +46 -0
  220. package/dist/vda.d.ts.map +1 -0
  221. package/dist/vda.js +42 -0
  222. package/dist/vda.js.map +1 -0
  223. package/dist/workspace/brief-run.d.ts +104 -0
  224. package/dist/workspace/brief-run.d.ts.map +1 -0
  225. package/dist/workspace/brief-run.js +32 -0
  226. package/dist/workspace/brief-run.js.map +1 -0
  227. package/dist/workspace/common.d.ts +42 -0
  228. package/dist/workspace/common.d.ts.map +1 -0
  229. package/dist/workspace/common.js +26 -0
  230. package/dist/workspace/common.js.map +1 -0
  231. package/dist/workspace/fixtures.d.ts +10 -0
  232. package/dist/workspace/fixtures.d.ts.map +1 -0
  233. package/dist/workspace/fixtures.js +93 -0
  234. package/dist/workspace/fixtures.js.map +1 -0
  235. package/dist/workspace/index.d.ts +13 -0
  236. package/dist/workspace/index.d.ts.map +1 -0
  237. package/dist/workspace/index.js +13 -0
  238. package/dist/workspace/index.js.map +1 -0
  239. package/dist/workspace/property-workspace.d.ts +148 -0
  240. package/dist/workspace/property-workspace.d.ts.map +1 -0
  241. package/dist/workspace/property-workspace.js +21 -0
  242. package/dist/workspace/property-workspace.js.map +1 -0
  243. package/dist/workspace/workspace-attachment.d.ts +99 -0
  244. package/dist/workspace/workspace-attachment.d.ts.map +1 -0
  245. package/dist/workspace/workspace-attachment.js +35 -0
  246. package/dist/workspace/workspace-attachment.js.map +1 -0
  247. package/dist/workspace/workspace-share-edge.d.ts +115 -0
  248. package/dist/workspace/workspace-share-edge.d.ts.map +1 -0
  249. package/dist/workspace/workspace-share-edge.js +22 -0
  250. package/dist/workspace/workspace-share-edge.js.map +1 -0
  251. package/package.json +107 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Four-layer context payload returned by `AtomRegistration.contextSummary`.
3
+ *
4
+ * Four layers — `prose`, `typed`, `keyMetrics`, `relatedAtoms` — plus
5
+ * history provenance and a `scopeFiltered` marker that lets the caller
6
+ * know whether the {@link Scope} object actually changed the result.
7
+ */
8
+ /**
9
+ * Build a `contextSummary` callback that wraps `fetch` against a typed
10
+ * server endpoint. Centralizes the boilerplate every registration would
11
+ * otherwise have to write by hand and bakes in the 30s TTL cache plus a
12
+ * mutation-invalidation hook. The server is expected to return a JSON
13
+ * body matching {@link ContextSummary}; missing fields are filled with
14
+ * safe defaults.
15
+ *
16
+ * @example
17
+ * const summary = httpContextSummary<"task">("task", { ttlMs: 30_000 });
18
+ * const reg: AtomRegistration<"task", ["card"]> = {
19
+ * entityType: "task",
20
+ * domain: "sprint",
21
+ * supportedModes: ["card"],
22
+ * defaultMode: "card",
23
+ * contextSummary: summary.contextSummary,
24
+ * };
25
+ * // On mutation:
26
+ * summary.invalidate(taskId);
27
+ */
28
+ export function httpContextSummary(slug, opts = {}) {
29
+ const baseUrl = opts.baseUrl ?? "";
30
+ const ttlMs = opts.ttlMs ?? 30_000;
31
+ const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
32
+ const credentials = opts.credentials ?? "include";
33
+ const cache = new Map();
34
+ const fillDefaults = (raw) => ({
35
+ prose: raw.prose ?? "",
36
+ typed: raw.typed ?? {},
37
+ keyMetrics: raw.keyMetrics ?? [],
38
+ relatedAtoms: raw.relatedAtoms ?? [],
39
+ historyProvenance: raw.historyProvenance ?? {
40
+ latestEventId: "",
41
+ latestEventAt: "",
42
+ },
43
+ scopeFiltered: raw.scopeFiltered ?? false,
44
+ // Pass through verbatim. The field is optional so an absent server
45
+ // response leaves it `undefined`; visibility-gating surfaces fall back
46
+ // to the registration's `accessPolicy` (or `"public-free"`) per the
47
+ // ContextSummary.accessPolicy contract.
48
+ accessPolicy: raw.accessPolicy,
49
+ });
50
+ // Build a stable cache key + a stable wire-format string from a Scope.
51
+ // Cache reuse must respect the Scope object: an `internal` audience
52
+ // payload must not be served to an `ai` request, and an as-of-T1
53
+ // payload must not be served for as-of-T2. Keys are produced by
54
+ // serializing the scope's identity-affecting fields with sorted
55
+ // permissions so logically-equivalent scopes hit the same cache row.
56
+ const serializeScope = (scope) => {
57
+ const perms = scope.permissions ? [...scope.permissions].sort() : [];
58
+ const requestor = scope.requestor
59
+ ? `${scope.requestor.kind}:${scope.requestor.id}`
60
+ : "";
61
+ const asOf = scope.asOf ? scope.asOf.toISOString() : "";
62
+ return JSON.stringify({
63
+ a: scope.audience,
64
+ r: requestor,
65
+ t: asOf,
66
+ p: perms,
67
+ });
68
+ };
69
+ const cacheKeyFor = (entityId, scope) => `${entityId}|${serializeScope(scope)}`;
70
+ return {
71
+ async contextSummary(entityId, scope) {
72
+ const now = Date.now();
73
+ const key = cacheKeyFor(entityId, scope);
74
+ const cached = cache.get(key);
75
+ if (cached && cached.expiresAt > now) {
76
+ return cached.value;
77
+ }
78
+ // Forward the scope to the server as a single `scope` query
79
+ // parameter (URL-encoded JSON). Atoms that ignore scope still
80
+ // receive the same payload because the server is free to ignore
81
+ // the parameter; atoms that filter by scope can decode it.
82
+ const scopeParam = encodeURIComponent(serializeScope(scope));
83
+ const url = `${baseUrl}/atoms/${slug}/${encodeURIComponent(entityId)}/summary?scope=${scopeParam}`;
84
+ const res = await fetchImpl(url, { credentials });
85
+ if (!res.ok) {
86
+ throw new Error(`httpContextSummary(${slug}): HTTP ${res.status} fetching ${url}`);
87
+ }
88
+ const body = (await res.json());
89
+ const value = fillDefaults(body);
90
+ if (ttlMs > 0) {
91
+ cache.set(key, { value, expiresAt: now + ttlMs });
92
+ }
93
+ return value;
94
+ },
95
+ invalidate(entityId) {
96
+ // Drop every cached scope variant for this entity. Mutation
97
+ // pipelines do not know which scopes a consumer has fetched, so
98
+ // an entity-level invalidate must clear all of them.
99
+ const prefix = `${entityId}|`;
100
+ for (const k of cache.keys()) {
101
+ if (k.startsWith(prefix))
102
+ cache.delete(k);
103
+ }
104
+ },
105
+ clear() {
106
+ cache.clear();
107
+ },
108
+ };
109
+ }
110
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { z } from "zod";
2
+ import type { WidthedConfidence } from "../read-contract/common.js";
3
+ import { STRUCTURED_FIELDS_SCHEMA } from "./common.js";
4
+ /**
5
+ * Unrecorded HOA design guidelines. Same clause shape where applicable;
6
+ * `legalWeight` is fixed to `advisory`.
7
+ */
8
+ export interface AdministrativeRuleAtomInstance {
9
+ entityType: "administrative-rule";
10
+ clauseDid: string;
11
+ parentInstrumentCid?: string;
12
+ clausePath: string;
13
+ bodyText: string;
14
+ structuredFields?: z.infer<typeof STRUCTURED_FIELDS_SCHEMA>;
15
+ confidence: WidthedConfidence;
16
+ extractedBy: string;
17
+ humanVerifiedAt?: string;
18
+ verifiedByActorDid?: string;
19
+ sourceDocumentCid?: string;
20
+ accessPolicy: "tenant-private" | "tenant-shared";
21
+ legalWeight: "advisory";
22
+ reasoningSummary?: string;
23
+ sourceCitation: string;
24
+ evaluatedAt: string;
25
+ }
26
+ export declare const ADMINISTRATIVE_RULE_SCHEMA: z.ZodObject<{
27
+ confidence: z.ZodReadonly<z.ZodObject<{
28
+ readonly estimate: z.ZodNumber;
29
+ readonly n: z.ZodNumber;
30
+ readonly intervalWidth: z.ZodNumber;
31
+ readonly provenance: z.ZodEnum<["asserted", "backtest", "seed", "live"]>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ estimate: number;
34
+ n: number;
35
+ intervalWidth: number;
36
+ provenance: "asserted" | "backtest" | "seed" | "live";
37
+ }, {
38
+ estimate: number;
39
+ n: number;
40
+ intervalWidth: number;
41
+ provenance: "asserted" | "backtest" | "seed" | "live";
42
+ }>>;
43
+ evaluatedAt: z.ZodString;
44
+ reasoningSummary: z.ZodOptional<z.ZodString>;
45
+ sourceCitation: z.ZodString;
46
+ entityType: z.ZodLiteral<"administrative-rule">;
47
+ clauseDid: z.ZodString;
48
+ parentInstrumentCid: z.ZodOptional<z.ZodString>;
49
+ clausePath: z.ZodString;
50
+ bodyText: z.ZodString;
51
+ structuredFields: z.ZodOptional<z.ZodObject<{
52
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
53
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
54
+ setbackFt: z.ZodOptional<z.ZodNumber>;
55
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
56
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
57
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
58
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
59
+ setbackFt: z.ZodOptional<z.ZodNumber>;
60
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
61
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
62
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
63
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
64
+ setbackFt: z.ZodOptional<z.ZodNumber>;
65
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
66
+ }, z.ZodTypeAny, "passthrough">>>;
67
+ extractedBy: z.ZodString;
68
+ humanVerifiedAt: z.ZodOptional<z.ZodString>;
69
+ verifiedByActorDid: z.ZodOptional<z.ZodString>;
70
+ sourceDocumentCid: z.ZodOptional<z.ZodString>;
71
+ accessPolicy: z.ZodEnum<["tenant-private", "tenant-shared"]>;
72
+ legalWeight: z.ZodLiteral<"advisory">;
73
+ }, "strip", z.ZodTypeAny, {
74
+ accessPolicy: "tenant-private" | "tenant-shared";
75
+ entityType: "administrative-rule";
76
+ confidence: Readonly<{
77
+ estimate: number;
78
+ n: number;
79
+ intervalWidth: number;
80
+ provenance: "asserted" | "backtest" | "seed" | "live";
81
+ }>;
82
+ sourceCitation: string;
83
+ clauseDid: string;
84
+ clausePath: string;
85
+ bodyText: string;
86
+ extractedBy: string;
87
+ legalWeight: "advisory";
88
+ evaluatedAt: string;
89
+ parentInstrumentCid?: string | undefined;
90
+ structuredFields?: z.objectOutputType<{
91
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
92
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
93
+ setbackFt: z.ZodOptional<z.ZodNumber>;
94
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ }, z.ZodTypeAny, "passthrough"> | undefined;
96
+ humanVerifiedAt?: string | undefined;
97
+ verifiedByActorDid?: string | undefined;
98
+ sourceDocumentCid?: string | undefined;
99
+ reasoningSummary?: string | undefined;
100
+ }, {
101
+ accessPolicy: "tenant-private" | "tenant-shared";
102
+ entityType: "administrative-rule";
103
+ confidence: Readonly<{
104
+ estimate: number;
105
+ n: number;
106
+ intervalWidth: number;
107
+ provenance: "asserted" | "backtest" | "seed" | "live";
108
+ }>;
109
+ sourceCitation: string;
110
+ clauseDid: string;
111
+ clausePath: string;
112
+ bodyText: string;
113
+ extractedBy: string;
114
+ legalWeight: "advisory";
115
+ evaluatedAt: string;
116
+ parentInstrumentCid?: string | undefined;
117
+ structuredFields?: z.objectInputType<{
118
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
119
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
120
+ setbackFt: z.ZodOptional<z.ZodNumber>;
121
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
122
+ }, z.ZodTypeAny, "passthrough"> | undefined;
123
+ humanVerifiedAt?: string | undefined;
124
+ verifiedByActorDid?: string | undefined;
125
+ sourceDocumentCid?: string | undefined;
126
+ reasoningSummary?: string | undefined;
127
+ }>;
128
+ //# sourceMappingURL=administrative-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"administrative-rule.d.ts","sourceRoot":"","sources":["../../src/encumbrances/administrative-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAGL,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,qBAAqB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC5D,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACjD,WAAW,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcrC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { ENCUMBRANCE_ACCESS_POLICY_SCHEMA, QUALITY_GATE_FIELDS, STRUCTURED_FIELDS_SCHEMA, } from "./common.js";
3
+ export const ADMINISTRATIVE_RULE_SCHEMA = z.object({
4
+ entityType: z.literal("administrative-rule"),
5
+ clauseDid: z.string().min(1),
6
+ parentInstrumentCid: z.string().min(1).optional(),
7
+ clausePath: z.string().min(1),
8
+ bodyText: z.string().min(1),
9
+ structuredFields: STRUCTURED_FIELDS_SCHEMA.optional(),
10
+ extractedBy: z.string().min(1),
11
+ humanVerifiedAt: z.string().min(1).optional(),
12
+ verifiedByActorDid: z.string().min(1).optional(),
13
+ sourceDocumentCid: z.string().min(1).optional(),
14
+ accessPolicy: ENCUMBRANCE_ACCESS_POLICY_SCHEMA,
15
+ legalWeight: z.literal("advisory"),
16
+ ...QUALITY_GATE_FIELDS,
17
+ });
18
+ //# sourceMappingURL=administrative-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"administrative-rule.js","sourceRoot":"","sources":["../../src/encumbrances/administrative-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAyBrB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,YAAY,EAAE,gCAAgC;IAC9C,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAClC,GAAG,mBAAmB;CACvB,CAAC,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Shared encumbrance substrate types per ADR-020 / ADR-021.
3
+ *
4
+ * Encumbrance atoms are never `public-free`. Schemas use
5
+ * {@link ENCUMBRANCE_ACCESS_POLICY_SCHEMA} rather than the full
6
+ * {@link AccessPolicy} union so public tiers fail validation at the
7
+ * boundary.
8
+ */
9
+ import { z } from "zod";
10
+ import type { AccessPolicy } from "../registration.js";
11
+ import { type WidthedConfidence } from "../read-contract/common.js";
12
+ /**
13
+ * ADR-020 instrument categories.
14
+ * Extended in 1.7.0 (ADR-025) with O&G instrument types including the recorded
15
+ * unit family per Herbert review (85a): unit-designation, declaration-of-pooling,
16
+ * ratification-of-unit, amendment-of-unit-designation, release-of-unit.
17
+ */
18
+ export type InstrumentType = "plat-restriction" | "cc-r-declaration" | "deed-restriction" | "easement" | "lien" | "oil-gas-lease" | "mineral-deed" | "assignment" | "division-order" | "unit-designation" | "declaration-of-pooling" | "ratification-of-unit" | "amendment-of-unit-designation" | "release-of-unit" | "other";
19
+ export declare const INSTRUMENT_TYPES: ReadonlyArray<InstrumentType>;
20
+ /** Ingest source track per {@link 49b_encumbrance_ingestion_pipeline}. */
21
+ export type EncumbranceSourceAdapter = "R1" | "R2" | "R3" | "R4" | "R5";
22
+ export declare const ENCUMBRANCE_SOURCE_ADAPTERS: ReadonlyArray<EncumbranceSourceAdapter>;
23
+ export type VerificationStatus = "machine" | "human" | "title-company";
24
+ export declare const VERIFICATION_STATUSES: ReadonlyArray<VerificationStatus>;
25
+ export type LegalWeight = "recorded" | "advisory";
26
+ export declare const LEGAL_WEIGHTS: ReadonlyArray<LegalWeight>;
27
+ /**
28
+ * Access tiers allowed on encumbrance payloads. Subset of ADR-017
29
+ * {@link AccessPolicy}; excludes all public tiers.
30
+ */
31
+ export type EncumbranceAccessPolicy = "tenant-private" | "tenant-shared";
32
+ export declare const ENCUMBRANCE_ACCESS_POLICIES: ReadonlyArray<EncumbranceAccessPolicy>;
33
+ export declare const ENCUMBRANCE_ACCESS_POLICY_SCHEMA: z.ZodEnum<["tenant-private", "tenant-shared"]>;
34
+ /** Rejects catalog-visible tiers on encumbrance instances. */
35
+ export declare function isEncumbranceAccessPolicy(value: AccessPolicy | undefined): value is EncumbranceAccessPolicy;
36
+ export declare const RECORDING_SCHEMA: z.ZodObject<{
37
+ county: z.ZodString;
38
+ state: z.ZodString;
39
+ book: z.ZodOptional<z.ZodString>;
40
+ page: z.ZodOptional<z.ZodString>;
41
+ instrumentNumber: z.ZodOptional<z.ZodString>;
42
+ recordedAt: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ county: string;
45
+ state: string;
46
+ recordedAt?: string | undefined;
47
+ book?: string | undefined;
48
+ page?: string | undefined;
49
+ instrumentNumber?: string | undefined;
50
+ }, {
51
+ county: string;
52
+ state: string;
53
+ recordedAt?: string | undefined;
54
+ book?: string | undefined;
55
+ page?: string | undefined;
56
+ instrumentNumber?: string | undefined;
57
+ }>;
58
+ export type RecordingInfo = z.infer<typeof RECORDING_SCHEMA>;
59
+ export declare const APPLIES_TO_SCHEMA: z.ZodEffects<z.ZodObject<{
60
+ parcelDids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
61
+ platId: z.ZodOptional<z.ZodString>;
62
+ legalDescription: z.ZodOptional<z.ZodString>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ parcelDids?: string[] | undefined;
65
+ platId?: string | undefined;
66
+ legalDescription?: string | undefined;
67
+ }, {
68
+ parcelDids?: string[] | undefined;
69
+ platId?: string | undefined;
70
+ legalDescription?: string | undefined;
71
+ }>, {
72
+ parcelDids?: string[] | undefined;
73
+ platId?: string | undefined;
74
+ legalDescription?: string | undefined;
75
+ }, {
76
+ parcelDids?: string[] | undefined;
77
+ platId?: string | undefined;
78
+ legalDescription?: string | undefined;
79
+ }>;
80
+ export type AppliesTo = z.infer<typeof APPLIES_TO_SCHEMA>;
81
+ /** Typed extract bucket on {@link RestrictionClauseAtomInstance}. */
82
+ export declare const STRUCTURED_FIELDS_SCHEMA: z.ZodObject<{
83
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
84
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
85
+ setbackFt: z.ZodOptional<z.ZodNumber>;
86
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
87
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
88
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
89
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
90
+ setbackFt: z.ZodOptional<z.ZodNumber>;
91
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
92
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
93
+ maxHeightFt: z.ZodOptional<z.ZodNumber>;
94
+ prohibitedUses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ setbackFt: z.ZodOptional<z.ZodNumber>;
96
+ materialAllowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
97
+ }, z.ZodTypeAny, "passthrough">>;
98
+ export type StructuredFields = z.infer<typeof STRUCTURED_FIELDS_SCHEMA>;
99
+ export declare const QUALITY_GATE_FIELDS: {
100
+ readonly confidence: z.ZodReadonly<z.ZodObject<{
101
+ readonly estimate: z.ZodNumber;
102
+ readonly n: z.ZodNumber;
103
+ readonly intervalWidth: z.ZodNumber;
104
+ readonly provenance: z.ZodEnum<["asserted", "backtest", "seed", "live"]>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ estimate: number;
107
+ n: number;
108
+ intervalWidth: number;
109
+ provenance: "asserted" | "backtest" | "seed" | "live";
110
+ }, {
111
+ estimate: number;
112
+ n: number;
113
+ intervalWidth: number;
114
+ provenance: "asserted" | "backtest" | "seed" | "live";
115
+ }>>;
116
+ readonly evaluatedAt: z.ZodString;
117
+ readonly reasoningSummary: z.ZodOptional<z.ZodString>;
118
+ readonly sourceCitation: z.ZodString;
119
+ };
120
+ /**
121
+ * Asserted source-quality confidence for encumbrance extract quality gates.
122
+ * Pre-calibration deposits use `provenance: "asserted"`, `n: 0`, and full
123
+ * interval width until outcome fuel exists.
124
+ */
125
+ export declare function createEncumbranceQualityConfidence(estimate: number): WidthedConfidence;
126
+ /**
127
+ * Recommended render modes for engine / product registrations.
128
+ * `restriction-clause` includes `focus` for citation surfaces (ADR-020
129
+ * dispatch).
130
+ */
131
+ export declare const ENCUMBRANCE_RENDER_MODES: {
132
+ "recorded-instrument": readonly ["card", "compact", "expanded"];
133
+ "restriction-clause": readonly ["inline", "compact", "card", "expanded", "focus"];
134
+ "restriction-corpus": readonly ["card", "expanded"];
135
+ "administrative-rule": readonly ["inline", "compact", "card", "expanded"];
136
+ "constraint-resolution": readonly ["card", "expanded"];
137
+ };
138
+ export declare const ENCUMBRANCE_DEFAULT_RENDER_MODE: {
139
+ readonly "recorded-instrument": "card";
140
+ readonly "restriction-clause": "focus";
141
+ readonly "restriction-corpus": "card";
142
+ readonly "administrative-rule": "compact";
143
+ readonly "constraint-resolution": "card";
144
+ };
145
+ /** Atom-type default access tiers (never `public-free`). */
146
+ export declare const ENCUMBRANCE_DEFAULT_ACCESS_POLICY: {
147
+ readonly "recorded-instrument": "tenant-private";
148
+ readonly "restriction-clause": "tenant-private";
149
+ readonly "restriction-corpus": "tenant-shared";
150
+ readonly "administrative-rule": "tenant-private";
151
+ readonly "constraint-resolution": "tenant-private";
152
+ };
153
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/encumbrances/common.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,UAAU,GACV,MAAM,GACN,eAAe,GACf,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,sBAAsB,GACtB,+BAA+B,GAC/B,iBAAiB,GACjB,OAAO,CAAC;AAEZ,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,cAAc,CAgB1D,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAExE,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,wBAAwB,CAChD,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,CAAC;AAEvE,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,kBAAkB,CAInE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAElD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,WAAW,CAA4B,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAEzE,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,uBAAuB,CAC1C,CAAC;AAEtC,eAAO,MAAM,gCAAgC,gDAG3C,CAAC;AAEH,8DAA8D;AAC9D,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,GAAG,SAAS,GAC9B,KAAK,IAAI,uBAAuB,CAElC;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;EAe3B,CAAC;AAEJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE1D,qEAAqE;AACrE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;gCAOrB,CAAC;AAEjB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAExE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;CAKtB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAOnB;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;CAYc,CAAC;AAEpD,eAAO,MAAM,+BAA+B;;;;;;CAMC,CAAC;AAE9C,4DAA4D;AAC5D,eAAO,MAAM,iCAAiC;;;;;;CAMc,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Shared encumbrance substrate types per ADR-020 / ADR-021.
3
+ *
4
+ * Encumbrance atoms are never `public-free`. Schemas use
5
+ * {@link ENCUMBRANCE_ACCESS_POLICY_SCHEMA} rather than the full
6
+ * {@link AccessPolicy} union so public tiers fail validation at the
7
+ * boundary.
8
+ */
9
+ import { z } from "zod";
10
+ import { createWidthedConfidence, WIDTHED_CONFIDENCE_SCHEMA, } from "../read-contract/common.js";
11
+ export const INSTRUMENT_TYPES = [
12
+ "plat-restriction",
13
+ "cc-r-declaration",
14
+ "deed-restriction",
15
+ "easement",
16
+ "lien",
17
+ "oil-gas-lease",
18
+ "mineral-deed",
19
+ "assignment",
20
+ "division-order",
21
+ "unit-designation",
22
+ "declaration-of-pooling",
23
+ "ratification-of-unit",
24
+ "amendment-of-unit-designation",
25
+ "release-of-unit",
26
+ "other",
27
+ ];
28
+ export const ENCUMBRANCE_SOURCE_ADAPTERS = ["R1", "R2", "R3", "R4", "R5"];
29
+ export const VERIFICATION_STATUSES = [
30
+ "machine",
31
+ "human",
32
+ "title-company",
33
+ ];
34
+ export const LEGAL_WEIGHTS = ["recorded", "advisory"];
35
+ export const ENCUMBRANCE_ACCESS_POLICIES = ["tenant-private", "tenant-shared"];
36
+ export const ENCUMBRANCE_ACCESS_POLICY_SCHEMA = z.enum([
37
+ "tenant-private",
38
+ "tenant-shared",
39
+ ]);
40
+ /** Rejects catalog-visible tiers on encumbrance instances. */
41
+ export function isEncumbranceAccessPolicy(value) {
42
+ return value === "tenant-private" || value === "tenant-shared";
43
+ }
44
+ export const RECORDING_SCHEMA = z.object({
45
+ county: z.string().min(1),
46
+ state: z.string().min(1),
47
+ book: z.string().min(1).optional(),
48
+ page: z.string().min(1).optional(),
49
+ instrumentNumber: z.string().min(1).optional(),
50
+ recordedAt: z.string().min(1).optional(),
51
+ });
52
+ export const APPLIES_TO_SCHEMA = z
53
+ .object({
54
+ parcelDids: z.array(z.string().min(1)).optional(),
55
+ platId: z.string().min(1).optional(),
56
+ legalDescription: z.string().min(1).optional(),
57
+ })
58
+ .refine((v) => (v.parcelDids?.length ?? 0) > 0 ||
59
+ v.platId !== undefined ||
60
+ v.legalDescription !== undefined, {
61
+ message: "appliesTo requires at least one of parcelDids, platId, or legalDescription",
62
+ });
63
+ /** Typed extract bucket on {@link RestrictionClauseAtomInstance}. */
64
+ export const STRUCTURED_FIELDS_SCHEMA = z
65
+ .object({
66
+ maxHeightFt: z.number().optional(),
67
+ prohibitedUses: z.array(z.string()).optional(),
68
+ setbackFt: z.number().optional(),
69
+ materialAllowlist: z.array(z.string()).optional(),
70
+ })
71
+ .passthrough();
72
+ export const QUALITY_GATE_FIELDS = {
73
+ confidence: WIDTHED_CONFIDENCE_SCHEMA,
74
+ evaluatedAt: z.string().min(1),
75
+ reasoningSummary: z.string().min(1).optional(),
76
+ sourceCitation: z.string().min(1),
77
+ };
78
+ /**
79
+ * Asserted source-quality confidence for encumbrance extract quality gates.
80
+ * Pre-calibration deposits use `provenance: "asserted"`, `n: 0`, and full
81
+ * interval width until outcome fuel exists.
82
+ */
83
+ export function createEncumbranceQualityConfidence(estimate) {
84
+ return createWidthedConfidence({
85
+ estimate,
86
+ n: 0,
87
+ intervalWidth: 1,
88
+ provenance: "asserted",
89
+ });
90
+ }
91
+ /**
92
+ * Recommended render modes for engine / product registrations.
93
+ * `restriction-clause` includes `focus` for citation surfaces (ADR-020
94
+ * dispatch).
95
+ */
96
+ export const ENCUMBRANCE_RENDER_MODES = {
97
+ "recorded-instrument": ["card", "compact", "expanded"],
98
+ "restriction-clause": [
99
+ "inline",
100
+ "compact",
101
+ "card",
102
+ "expanded",
103
+ "focus",
104
+ ],
105
+ "restriction-corpus": ["card", "expanded"],
106
+ "administrative-rule": ["inline", "compact", "card", "expanded"],
107
+ "constraint-resolution": ["card", "expanded"],
108
+ };
109
+ export const ENCUMBRANCE_DEFAULT_RENDER_MODE = {
110
+ "recorded-instrument": "card",
111
+ "restriction-clause": "focus",
112
+ "restriction-corpus": "card",
113
+ "administrative-rule": "compact",
114
+ "constraint-resolution": "card",
115
+ };
116
+ /** Atom-type default access tiers (never `public-free`). */
117
+ export const ENCUMBRANCE_DEFAULT_ACCESS_POLICY = {
118
+ "recorded-instrument": "tenant-private",
119
+ "restriction-clause": "tenant-private",
120
+ "restriction-corpus": "tenant-shared",
121
+ "administrative-rule": "tenant-private",
122
+ "constraint-resolution": "tenant-private",
123
+ };
124
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/encumbrances/common.ts"],"names":[],"mappings":"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"}