@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.
- package/CHANGELOG.md +360 -0
- package/README.md +379 -0
- package/dist/composition.d.ts +112 -0
- package/dist/composition.d.ts.map +1 -0
- package/dist/composition.js +80 -0
- package/dist/composition.js.map +1 -0
- package/dist/conformance/common.d.ts +21 -0
- package/dist/conformance/common.d.ts.map +1 -0
- package/dist/conformance/common.js +29 -0
- package/dist/conformance/common.js.map +1 -0
- package/dist/conformance/fixtures.d.ts +13 -0
- package/dist/conformance/fixtures.d.ts.map +1 -0
- package/dist/conformance/fixtures.js +63 -0
- package/dist/conformance/fixtures.js.map +1 -0
- package/dist/conformance/index.d.ts +11 -0
- package/dist/conformance/index.d.ts.map +1 -0
- package/dist/conformance/index.js +11 -0
- package/dist/conformance/index.js.map +1 -0
- package/dist/conformance/validate.d.ts +49 -0
- package/dist/conformance/validate.d.ts.map +1 -0
- package/dist/conformance/validate.js +138 -0
- package/dist/conformance/validate.js.map +1 -0
- package/dist/conformance/verify-chain.d.ts +25 -0
- package/dist/conformance/verify-chain.d.ts.map +1 -0
- package/dist/conformance/verify-chain.js +76 -0
- package/dist/conformance/verify-chain.js.map +1 -0
- package/dist/context.d.ts +134 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +110 -0
- package/dist/context.js.map +1 -0
- package/dist/encumbrances/administrative-rule.d.ts +128 -0
- package/dist/encumbrances/administrative-rule.d.ts.map +1 -0
- package/dist/encumbrances/administrative-rule.js +18 -0
- package/dist/encumbrances/administrative-rule.js.map +1 -0
- package/dist/encumbrances/common.d.ts +153 -0
- package/dist/encumbrances/common.d.ts.map +1 -0
- package/dist/encumbrances/common.js +124 -0
- package/dist/encumbrances/common.js.map +1 -0
- package/dist/encumbrances/constraint-resolution.d.ts +169 -0
- package/dist/encumbrances/constraint-resolution.d.ts.map +1 -0
- package/dist/encumbrances/constraint-resolution.js +41 -0
- package/dist/encumbrances/constraint-resolution.js.map +1 -0
- package/dist/encumbrances/fixtures.d.ts +16 -0
- package/dist/encumbrances/fixtures.d.ts.map +1 -0
- package/dist/encumbrances/fixtures.js +107 -0
- package/dist/encumbrances/fixtures.js.map +1 -0
- package/dist/encumbrances/index.d.ts +15 -0
- package/dist/encumbrances/index.d.ts.map +1 -0
- package/dist/encumbrances/index.js +15 -0
- package/dist/encumbrances/index.js.map +1 -0
- package/dist/encumbrances/recorded-instrument.d.ts +131 -0
- package/dist/encumbrances/recorded-instrument.d.ts.map +1 -0
- package/dist/encumbrances/recorded-instrument.js +19 -0
- package/dist/encumbrances/recorded-instrument.js.map +1 -0
- package/dist/encumbrances/restriction-clause.d.ts +120 -0
- package/dist/encumbrances/restriction-clause.d.ts.map +1 -0
- package/dist/encumbrances/restriction-clause.js +17 -0
- package/dist/encumbrances/restriction-clause.js.map +1 -0
- package/dist/encumbrances/restriction-corpus.d.ts +44 -0
- package/dist/encumbrances/restriction-corpus.d.ts.map +1 -0
- package/dist/encumbrances/restriction-corpus.js +14 -0
- package/dist/encumbrances/restriction-corpus.js.map +1 -0
- package/dist/export/downloadable-atom.d.ts +133 -0
- package/dist/export/downloadable-atom.d.ts.map +1 -0
- package/dist/export/downloadable-atom.js +115 -0
- package/dist/export/downloadable-atom.js.map +1 -0
- package/dist/export/index.d.ts +6 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +6 -0
- package/dist/export/index.js.map +1 -0
- package/dist/history.d.ts +124 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +170 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-reference.d.ts +60 -0
- package/dist/inline-reference.d.ts.map +1 -0
- package/dist/inline-reference.js +73 -0
- package/dist/inline-reference.js.map +1 -0
- package/dist/obligation.d.ts +131 -0
- package/dist/obligation.d.ts.map +1 -0
- package/dist/obligation.js +55 -0
- package/dist/obligation.js.map +1 -0
- package/dist/og/common.d.ts +253 -0
- package/dist/og/common.d.ts.map +1 -0
- package/dist/og/common.js +195 -0
- package/dist/og/common.js.map +1 -0
- package/dist/og/completion.d.ts +70 -0
- package/dist/og/completion.d.ts.map +1 -0
- package/dist/og/completion.js +22 -0
- package/dist/og/completion.js.map +1 -0
- package/dist/og/equipment-state.d.ts +55 -0
- package/dist/og/equipment-state.d.ts.map +1 -0
- package/dist/og/equipment-state.js +25 -0
- package/dist/og/equipment-state.js.map +1 -0
- package/dist/og/fixtures.d.ts +40 -0
- package/dist/og/fixtures.d.ts.map +1 -0
- package/dist/og/fixtures.js +255 -0
- package/dist/og/fixtures.js.map +1 -0
- package/dist/og/index.d.ts +23 -0
- package/dist/og/index.d.ts.map +1 -0
- package/dist/og/index.js +23 -0
- package/dist/og/index.js.map +1 -0
- package/dist/og/mineral-lease.d.ts +150 -0
- package/dist/og/mineral-lease.d.ts.map +1 -0
- package/dist/og/mineral-lease.js +24 -0
- package/dist/og/mineral-lease.js.map +1 -0
- package/dist/og/ownership-interest.d.ts +163 -0
- package/dist/og/ownership-interest.d.ts.map +1 -0
- package/dist/og/ownership-interest.js +36 -0
- package/dist/og/ownership-interest.js.map +1 -0
- package/dist/og/pad.d.ts +101 -0
- package/dist/og/pad.d.ts.map +1 -0
- package/dist/og/pad.js +19 -0
- package/dist/og/pad.js.map +1 -0
- package/dist/og/production-timeseries.d.ts +154 -0
- package/dist/og/production-timeseries.d.ts.map +1 -0
- package/dist/og/production-timeseries.js +37 -0
- package/dist/og/production-timeseries.js.map +1 -0
- package/dist/og/revenue-allocation-unit.d.ts +762 -0
- package/dist/og/revenue-allocation-unit.d.ts.map +1 -0
- package/dist/og/revenue-allocation-unit.js +105 -0
- package/dist/og/revenue-allocation-unit.js.map +1 -0
- package/dist/og/rrc-lease.d.ts +124 -0
- package/dist/og/rrc-lease.d.ts.map +1 -0
- package/dist/og/rrc-lease.js +29 -0
- package/dist/og/rrc-lease.js.map +1 -0
- package/dist/og/tract.d.ts +88 -0
- package/dist/og/tract.d.ts.map +1 -0
- package/dist/og/tract.js +30 -0
- package/dist/og/tract.js.map +1 -0
- package/dist/og/well.d.ts +201 -0
- package/dist/og/well.d.ts.map +1 -0
- package/dist/og/well.js +40 -0
- package/dist/og/well.js.map +1 -0
- package/dist/og/wellbore.d.ts +61 -0
- package/dist/og/wellbore.d.ts.map +1 -0
- package/dist/og/wellbore.js +25 -0
- package/dist/og/wellbore.js.map +1 -0
- package/dist/og/zone.d.ts +45 -0
- package/dist/og/zone.d.ts.map +1 -0
- package/dist/og/zone.js +16 -0
- package/dist/og/zone.js.map +1 -0
- package/dist/read-contract/common.d.ts +74 -0
- package/dist/read-contract/common.d.ts.map +1 -0
- package/dist/read-contract/common.js +54 -0
- package/dist/read-contract/common.js.map +1 -0
- package/dist/read-contract/consequence.d.ts +99 -0
- package/dist/read-contract/consequence.d.ts.map +1 -0
- package/dist/read-contract/consequence.js +46 -0
- package/dist/read-contract/consequence.js.map +1 -0
- package/dist/read-contract/fixtures.d.ts +8 -0
- package/dist/read-contract/fixtures.d.ts.map +1 -0
- package/dist/read-contract/fixtures.js +44 -0
- package/dist/read-contract/fixtures.js.map +1 -0
- package/dist/read-contract/index.d.ts +14 -0
- package/dist/read-contract/index.d.ts.map +1 -0
- package/dist/read-contract/index.js +14 -0
- package/dist/read-contract/index.js.map +1 -0
- package/dist/read-contract/model-attribution.d.ts +85 -0
- package/dist/read-contract/model-attribution.d.ts.map +1 -0
- package/dist/read-contract/model-attribution.js +30 -0
- package/dist/read-contract/model-attribution.js.map +1 -0
- package/dist/read-contract/read-contract.d.ts +455 -0
- package/dist/read-contract/read-contract.d.ts.map +1 -0
- package/dist/read-contract/read-contract.js +46 -0
- package/dist/read-contract/read-contract.js.map +1 -0
- package/dist/registration.d.ts +192 -0
- package/dist/registration.d.ts.map +1 -0
- package/dist/registration.js +15 -0
- package/dist/registration.js.map +1 -0
- package/dist/registry.d.ts +128 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +122 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.d.ts +30 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +44 -0
- package/dist/render.js.map +1 -0
- package/dist/scope.d.ts +46 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +17 -0
- package/dist/scope.js.map +1 -0
- package/dist/temporal/anticipatory-atom.d.ts +123 -0
- package/dist/temporal/anticipatory-atom.d.ts.map +1 -0
- package/dist/temporal/anticipatory-atom.js +124 -0
- package/dist/temporal/anticipatory-atom.js.map +1 -0
- package/dist/temporal/common.d.ts +47 -0
- package/dist/temporal/common.d.ts.map +1 -0
- package/dist/temporal/common.js +100 -0
- package/dist/temporal/common.js.map +1 -0
- package/dist/temporal/fixtures.d.ts +7 -0
- package/dist/temporal/fixtures.d.ts.map +1 -0
- package/dist/temporal/fixtures.js +21 -0
- package/dist/temporal/fixtures.js.map +1 -0
- package/dist/temporal/index.d.ts +13 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.js +13 -0
- package/dist/temporal/index.js.map +1 -0
- package/dist/temporal/interval-query.d.ts +42 -0
- package/dist/temporal/interval-query.d.ts.map +1 -0
- package/dist/temporal/interval-query.js +49 -0
- package/dist/temporal/interval-query.js.map +1 -0
- package/dist/temporal/node-id.d.ts +112 -0
- package/dist/temporal/node-id.d.ts.map +1 -0
- package/dist/temporal/node-id.js +208 -0
- package/dist/temporal/node-id.js.map +1 -0
- package/dist/temporal/would-affect-edge.d.ts +66 -0
- package/dist/temporal/would-affect-edge.d.ts.map +1 -0
- package/dist/temporal/would-affect-edge.js +113 -0
- package/dist/temporal/would-affect-edge.js.map +1 -0
- package/dist/testing/index.d.ts +98 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +225 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/vda.d.ts +46 -0
- package/dist/vda.d.ts.map +1 -0
- package/dist/vda.js +42 -0
- package/dist/vda.js.map +1 -0
- package/dist/workspace/brief-run.d.ts +104 -0
- package/dist/workspace/brief-run.d.ts.map +1 -0
- package/dist/workspace/brief-run.js +32 -0
- package/dist/workspace/brief-run.js.map +1 -0
- package/dist/workspace/common.d.ts +42 -0
- package/dist/workspace/common.d.ts.map +1 -0
- package/dist/workspace/common.js +26 -0
- package/dist/workspace/common.js.map +1 -0
- package/dist/workspace/fixtures.d.ts +10 -0
- package/dist/workspace/fixtures.d.ts.map +1 -0
- package/dist/workspace/fixtures.js +93 -0
- package/dist/workspace/fixtures.js.map +1 -0
- package/dist/workspace/index.d.ts +13 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +13 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/property-workspace.d.ts +148 -0
- package/dist/workspace/property-workspace.d.ts.map +1 -0
- package/dist/workspace/property-workspace.js +21 -0
- package/dist/workspace/property-workspace.js.map +1 -0
- package/dist/workspace/workspace-attachment.d.ts +99 -0
- package/dist/workspace/workspace-attachment.d.ts.map +1 -0
- package/dist/workspace/workspace-attachment.js +35 -0
- package/dist/workspace/workspace-attachment.js.map +1 -0
- package/dist/workspace/workspace-share-edge.d.ts +115 -0
- package/dist/workspace/workspace-share-edge.d.ts.map +1 -0
- package/dist/workspace/workspace-share-edge.js +22 -0
- package/dist/workspace/workspace-share-edge.js.map +1 -0
- package/package.json +107 -0
package/dist/context.js
ADDED
|
@@ -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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"}
|