@cliwant/mcp-sam-gov 0.2.1 → 1.0.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/LICENSE +21 -21
- package/README.ja.md +48 -16
- package/README.ko.md +48 -16
- package/README.md +279 -67
- package/dist/attachments.d.ts +63 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +576 -0
- package/dist/attachments.js.map +1 -0
- package/dist/bls.d.ts +267 -0
- package/dist/bls.d.ts.map +1 -0
- package/dist/bls.js +1549 -0
- package/dist/bls.js.map +1 -0
- package/dist/cache.d.ts +42 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +64 -0
- package/dist/cache.js.map +1 -0
- package/dist/census.d.ts +182 -0
- package/dist/census.d.ts.map +1 -0
- package/dist/census.js +576 -0
- package/dist/census.js.map +1 -0
- package/dist/ckan.d.ts +141 -0
- package/dist/ckan.d.ts.map +1 -0
- package/dist/ckan.js +393 -0
- package/dist/ckan.js.map +1 -0
- package/dist/clinicaltrials.d.ts +180 -0
- package/dist/clinicaltrials.d.ts.map +1 -0
- package/dist/clinicaltrials.js +730 -0
- package/dist/clinicaltrials.js.map +1 -0
- package/dist/cms.d.ts +140 -0
- package/dist/cms.d.ts.map +1 -0
- package/dist/cms.js +482 -0
- package/dist/cms.js.map +1 -0
- package/dist/coerce.d.ts +32 -0
- package/dist/coerce.d.ts.map +1 -0
- package/dist/coerce.js +50 -0
- package/dist/coerce.js.map +1 -0
- package/dist/datagov-catalog.d.ts +84 -0
- package/dist/datagov-catalog.d.ts.map +1 -0
- package/dist/datagov-catalog.js +233 -0
- package/dist/datagov-catalog.js.map +1 -0
- package/dist/datagov.d.ts +146 -0
- package/dist/datagov.d.ts.map +1 -0
- package/dist/datagov.js +689 -0
- package/dist/datagov.js.map +1 -0
- package/dist/datagovKey.d.ts +36 -0
- package/dist/datagovKey.d.ts.map +1 -0
- package/dist/datagovKey.js +60 -0
- package/dist/datagovKey.js.map +1 -0
- package/dist/datasource.d.ts +313 -0
- package/dist/datasource.d.ts.map +1 -0
- package/dist/datasource.js +551 -0
- package/dist/datasource.js.map +1 -0
- package/dist/disclosure.d.ts +55 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +57 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/ecfr.d.ts +4 -2
- package/dist/ecfr.d.ts.map +1 -1
- package/dist/ecfr.js +92 -17
- package/dist/ecfr.js.map +1 -1
- package/dist/echo.d.ts +143 -0
- package/dist/echo.d.ts.map +1 -0
- package/dist/echo.js +424 -0
- package/dist/echo.js.map +1 -0
- package/dist/edgar.d.ts +377 -0
- package/dist/edgar.d.ts.map +1 -0
- package/dist/edgar.js +2418 -0
- package/dist/edgar.js.map +1 -0
- package/dist/errors.d.ts +102 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +247 -0
- package/dist/errors.js.map +1 -0
- package/dist/fac.d.ts +180 -0
- package/dist/fac.d.ts.map +1 -0
- package/dist/fac.js +416 -0
- package/dist/fac.js.map +1 -0
- package/dist/far.d.ts +170 -0
- package/dist/far.d.ts.map +1 -0
- package/dist/far.js +804 -0
- package/dist/far.js.map +1 -0
- package/dist/fdic.d.ts +599 -0
- package/dist/fdic.d.ts.map +1 -0
- package/dist/fdic.js +1624 -0
- package/dist/fdic.js.map +1 -0
- package/dist/federal-register.d.ts +139 -2
- package/dist/federal-register.d.ts.map +1 -1
- package/dist/federal-register.js +432 -15
- package/dist/federal-register.js.map +1 -1
- package/dist/fema.d.ts +181 -0
- package/dist/fema.d.ts.map +1 -0
- package/dist/fema.js +436 -0
- package/dist/fema.js.map +1 -0
- package/dist/fpds.d.ts +108 -0
- package/dist/fpds.d.ts.map +1 -0
- package/dist/fpds.js +519 -0
- package/dist/fpds.js.map +1 -0
- package/dist/gao.d.ts +64 -0
- package/dist/gao.d.ts.map +1 -0
- package/dist/gao.js +640 -0
- package/dist/gao.js.map +1 -0
- package/dist/govinfo.d.ts +111 -0
- package/dist/govinfo.d.ts.map +1 -0
- package/dist/govinfo.js +422 -0
- package/dist/govinfo.js.map +1 -0
- package/dist/grants.d.ts +27 -4
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +114 -11
- package/dist/grants.js.map +1 -1
- package/dist/gsa-csv.d.ts +249 -0
- package/dist/gsa-csv.d.ts.map +1 -0
- package/dist/gsa-csv.js +784 -0
- package/dist/gsa-csv.js.map +1 -0
- package/dist/integrity.d.ts +212 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +707 -0
- package/dist/integrity.js.map +1 -0
- package/dist/meta.d.ts +165 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +162 -0
- package/dist/meta.js.map +1 -0
- package/dist/nih.d.ts +117 -0
- package/dist/nih.d.ts.map +1 -0
- package/dist/nih.js +291 -0
- package/dist/nih.js.map +1 -0
- package/dist/nppes.d.ts +157 -0
- package/dist/nppes.d.ts.map +1 -0
- package/dist/nppes.js +648 -0
- package/dist/nppes.js.map +1 -0
- package/dist/nsf.d.ts +176 -0
- package/dist/nsf.d.ts.map +1 -0
- package/dist/nsf.js +554 -0
- package/dist/nsf.js.map +1 -0
- package/dist/nvd.d.ts +176 -0
- package/dist/nvd.d.ts.map +1 -0
- package/dist/nvd.js +912 -0
- package/dist/nvd.js.map +1 -0
- package/dist/ofac.d.ts +205 -0
- package/dist/ofac.d.ts.map +1 -0
- package/dist/ofac.js +919 -0
- package/dist/ofac.js.map +1 -0
- package/dist/pricing.d.ts +110 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +843 -0
- package/dist/pricing.js.map +1 -0
- package/dist/sam-gov/client.d.ts +60 -2
- package/dist/sam-gov/client.d.ts.map +1 -1
- package/dist/sam-gov/client.js +320 -54
- package/dist/sam-gov/client.js.map +1 -1
- package/dist/sam-gov/index.d.ts +1 -1
- package/dist/sam-gov/index.d.ts.map +1 -1
- package/dist/sam-gov/index.js +1 -1
- package/dist/sam-gov/index.js.map +1 -1
- package/dist/sam-gov/types.d.ts +24 -0
- package/dist/sam-gov/types.d.ts.map +1 -1
- package/dist/sba.d.ts +72 -0
- package/dist/sba.d.ts.map +1 -0
- package/dist/sba.js +281 -0
- package/dist/sba.js.map +1 -0
- package/dist/server.d.ts +14 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3897 -295
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +98 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +146 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/socrata.d.ts +157 -0
- package/dist/socrata.d.ts.map +1 -0
- package/dist/socrata.js +448 -0
- package/dist/socrata.js.map +1 -0
- package/dist/treasury.d.ts +143 -0
- package/dist/treasury.d.ts.map +1 -0
- package/dist/treasury.js +436 -0
- package/dist/treasury.js.map +1 -0
- package/dist/usaspending.d.ts +260 -65
- package/dist/usaspending.d.ts.map +1 -1
- package/dist/usaspending.js +1664 -228
- package/dist/usaspending.js.map +1 -1
- package/dist/usitc.d.ts +142 -0
- package/dist/usitc.d.ts.map +1 -0
- package/dist/usitc.js +339 -0
- package/dist/usitc.js.map +1 -0
- package/package.json +24 -2
- package/src/attachments.ts +652 -0
- package/src/bls.ts +1943 -0
- package/src/cache.ts +73 -0
- package/src/census.ts +735 -0
- package/src/ckan.ts +495 -0
- package/src/clinicaltrials.ts +923 -0
- package/src/cms.ts +634 -0
- package/src/coerce.ts +47 -0
- package/src/datagov-catalog.ts +296 -0
- package/src/datagov.ts +907 -0
- package/src/datagovKey.ts +68 -0
- package/src/datasource.ts +721 -0
- package/src/disclosure.ts +61 -0
- package/src/ecfr.ts +231 -127
- package/src/echo.ts +496 -0
- package/src/edgar.ts +3014 -0
- package/src/errors.ts +303 -0
- package/src/fac.ts +529 -0
- package/src/far.ts +1007 -0
- package/src/fdic.ts +2052 -0
- package/src/federal-register.ts +706 -191
- package/src/fema.ts +541 -0
- package/src/fpds.ts +620 -0
- package/src/gao.ts +744 -0
- package/src/govinfo.ts +497 -0
- package/src/grants.ts +290 -155
- package/src/gsa-csv.ts +992 -0
- package/src/integrity.ts +928 -0
- package/src/meta.ts +292 -0
- package/src/nih.ts +375 -0
- package/src/nppes.ts +834 -0
- package/src/nsf.ts +706 -0
- package/src/nvd.ts +1124 -0
- package/src/ofac.ts +1166 -0
- package/src/pricing.ts +1075 -0
- package/src/sam-gov/client.ts +345 -63
- package/src/sam-gov/index.ts +5 -1
- package/src/sam-gov/types.ts +22 -0
- package/src/sba.ts +357 -0
- package/src/server.ts +4559 -327
- package/src/snapshot.ts +192 -0
- package/src/socrata.ts +532 -0
- package/src/treasury.ts +575 -0
- package/src/usaspending.ts +2680 -925
- package/src/usitc.ts +420 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity.js","sourceRoot":"","sources":["../src/integrity.ts"],"names":[],"mappings":"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"}
|
package/dist/meta.d.ts
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cliwant/mcp-sam-gov/meta — the `_meta` completeness/provenance convention.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists
|
|
5
|
+
* ----------------
|
|
6
|
+
* These tools' outputs are consumed by an AI, not a human who can eyeball
|
|
7
|
+
* a table. For an AI consumer, silently-misleading data is strictly worse
|
|
8
|
+
* than missing data: the AI cannot tell a filtered-but-blank field from a
|
|
9
|
+
* genuinely-empty one, a hard cap from a complete list, or a swallowed
|
|
10
|
+
* error from a real zero — and will state the wrong answer confidently.
|
|
11
|
+
*
|
|
12
|
+
* Every tool's success payload therefore gains a sibling `_meta` object.
|
|
13
|
+
* `data` is UNCHANGED (backward compat): the envelope becomes
|
|
14
|
+
* `{ ok, data, _meta }` where existing consumers reading `ok`/`data.*`
|
|
15
|
+
* are 100% unaffected.
|
|
16
|
+
*
|
|
17
|
+
* See docs/research/02-truthful-outputs-spec.md §2 for the normative spec.
|
|
18
|
+
*/
|
|
19
|
+
/** Two-phase (enrich) tools: rows lost to failed per-record enrichment. */
|
|
20
|
+
export type MetaDegraded = {
|
|
21
|
+
attempted: number;
|
|
22
|
+
succeeded: number;
|
|
23
|
+
failed: number;
|
|
24
|
+
};
|
|
25
|
+
/** Offset-based pagination descriptor for list/search/aggregate tools. */
|
|
26
|
+
export type MetaPagination = {
|
|
27
|
+
/**
|
|
28
|
+
* The row offset of this page. `number` for offset-paginated tools (unchanged —
|
|
29
|
+
* every existing tool sets an integer). ADR-0010: widened to `number | null` for
|
|
30
|
+
* OPAQUE-CURSOR tools (GovInfo), where no meaningful numeric offset exists — those
|
|
31
|
+
* tools set `offset:null` (the honest "not a numeric offset"; continuation is via
|
|
32
|
+
* `_meta.nextCursor`, not a numeric `nextOffset`). Additive: no existing tool changes.
|
|
33
|
+
*/
|
|
34
|
+
offset: number | null;
|
|
35
|
+
limit: number;
|
|
36
|
+
nextOffset: number | null;
|
|
37
|
+
hasMore: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The normative `_meta` shape (spec §2.1). Rides alongside `data` in the
|
|
41
|
+
* success envelope so the AI can branch on completeness/provenance
|
|
42
|
+
* deterministically instead of guessing from null fields.
|
|
43
|
+
*/
|
|
44
|
+
export type ResponseMeta = {
|
|
45
|
+
/** Human+machine label of the upstream + layer that served THIS response. */
|
|
46
|
+
source: string;
|
|
47
|
+
/** SAM tools: true when no SAM_GOV_API_KEY. Non-SAM tools: always true. */
|
|
48
|
+
keylessMode: boolean;
|
|
49
|
+
/** true iff this response contains the ENTIRE result set for the query. */
|
|
50
|
+
complete: boolean;
|
|
51
|
+
/** true iff a hard cap / top-N limited the rows. */
|
|
52
|
+
truncated: boolean;
|
|
53
|
+
/** Number of primary records in `data`. */
|
|
54
|
+
returned: number;
|
|
55
|
+
/** Upstream's total match count; null when the endpoint doesn't report it. */
|
|
56
|
+
totalAvailable: number | null;
|
|
57
|
+
/**
|
|
58
|
+
* Present (and true) when `totalAvailable` is a KNOWN LOWER BOUND rather than
|
|
59
|
+
* an exact count — i.e. the upstream reported the total as "≥ N" (e.g. SEC
|
|
60
|
+
* EDGAR full-text search returns `hits.total.relation: "gte"` with the value
|
|
61
|
+
* pinned at 10000). The true total is UNKNOWN and ≥ `totalAvailable`. Absent
|
|
62
|
+
* on endpoints that report an exact total (do NOT read absence as `false`
|
|
63
|
+
* meaning "exact" for tools that never set it — it is simply not applicable).
|
|
64
|
+
*/
|
|
65
|
+
totalIsLowerBound?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Present (and true) when `totalAvailable` (or, for CKAN, the value disclosed
|
|
68
|
+
* in `notes`) is an upstream STATISTICAL ESTIMATE rather than an exact count —
|
|
69
|
+
* i.e. the source reported the total as an approximation that may be ABOVE OR
|
|
70
|
+
* BELOW the true count (CKAN `datastore_search` returns `total_was_estimated:
|
|
71
|
+
* true` for a PostgreSQL `reltuples`-style estimate, live-verified to overshoot
|
|
72
|
+
* — so it is NOT a lower bound, unlike `totalIsLowerBound`). CKAN sets this on
|
|
73
|
+
* the estimated path alongside `totalAvailable:null` (the estimate never drives
|
|
74
|
+
* pagination — ADR-0006 B1) + a disclosing note carrying the estimate value.
|
|
75
|
+
* Absent on endpoints that report an exact total (do NOT read absence as
|
|
76
|
+
* `false` meaning "exact" for tools that never set it — it is not applicable).
|
|
77
|
+
*/
|
|
78
|
+
totalIsEstimated?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Present when this response comes from an OPAQUE-CURSOR-paginated source
|
|
81
|
+
* (ADR-0010 — GovInfo's `offsetMark`): the opaque continuation token to pass back
|
|
82
|
+
* to fetch the NEXT page (GovInfo: as the `pageMark` argument), or `null` on the
|
|
83
|
+
* last page (no further cursor). It is a source-minted token, NOT derived from any
|
|
84
|
+
* secret and NEVER the raw upstream `nextPage` URL (which embeds pageSize + the
|
|
85
|
+
* api_key). Cursor tools set `nextOffset:null`/`offset:null` (a numeric offset is
|
|
86
|
+
* meaningless for a cursor) and use THIS as the sole continuation surface. Absent
|
|
87
|
+
* on offset-paginated tools (do NOT read absence as "no more" for those). Added as
|
|
88
|
+
* a conditional passthrough exactly like totalIsLowerBound/totalIsEstimated —
|
|
89
|
+
* only surfaced when the tool provides it, so existing tools' `_meta` stays
|
|
90
|
+
* byte-identical and the tools/list snapshot is unaffected (it is a runtime `_meta`
|
|
91
|
+
* field, not part of any tool's input schema).
|
|
92
|
+
*/
|
|
93
|
+
nextCursor?: string | null;
|
|
94
|
+
/** Request filters the upstream verifiably honored. */
|
|
95
|
+
filtersApplied: string[];
|
|
96
|
+
/** Request filters sent but NOT honored (results are unfiltered on these). */
|
|
97
|
+
filtersDropped: string[];
|
|
98
|
+
/** Fields null/absent BY LIMITATION (keyless/endpoint), not "no data". */
|
|
99
|
+
fieldsUnavailable: string[];
|
|
100
|
+
/** Two-phase tools only: rows for which per-record detail was fetched. */
|
|
101
|
+
enrichedCount?: number;
|
|
102
|
+
/** Two-phase tools: enrichment accounting (see MetaDegraded). */
|
|
103
|
+
degraded?: MetaDegraded;
|
|
104
|
+
/** Present on list/search/aggregate tools. */
|
|
105
|
+
pagination?: MetaPagination;
|
|
106
|
+
/**
|
|
107
|
+
* P5 PROVENANCE (ADR-0045 B2/M1). The access path that served THIS response:
|
|
108
|
+
* `"live"` (the current, and in Phase 1 the ONLY, path) or `"snapshot"` (a
|
|
109
|
+
* self-hosted cache served when the live upstream was unreachable). Set by the
|
|
110
|
+
* resilience port's provenance-returning primitive, then threaded by the
|
|
111
|
+
* adapter ONLY when NON-live — so a live response OMITS this field entirely and
|
|
112
|
+
* stays byte-identical to pre-P5 output. Surfaced via the guarded
|
|
113
|
+
* `if (partial.dataPath !== undefined)` passthrough below (NO `??` default).
|
|
114
|
+
* Absent ⇒ live; do NOT read absence as any other value. Freshness enum, not a
|
|
115
|
+
* topology label (M2): an independent host serving live data is still `"live"`.
|
|
116
|
+
*/
|
|
117
|
+
dataPath?: "live" | "snapshot";
|
|
118
|
+
/**
|
|
119
|
+
* P5 FRESHNESS (ADR-0045 m3). ISO-8601 UTC timestamp of when a NON-live
|
|
120
|
+
* (`snapshot`) body was retrieved from the origin — the as-of instant for
|
|
121
|
+
* deterministic cross-tool freshness comparison. Present ONLY alongside a
|
|
122
|
+
* non-live `dataPath`; absent on a live response (byte-identical). When a
|
|
123
|
+
* snapshot carries a `totalAvailable`, it is qualified as an as-of figure via
|
|
124
|
+
* the existing `totalIsEstimated` flag (m1 forbids a dedicated `totalAsOf`
|
|
125
|
+
* field — the only NEW P5 fields are `dataPath` and `asOf`).
|
|
126
|
+
*/
|
|
127
|
+
asOf?: string;
|
|
128
|
+
/** Short, AI-actionable caveats (natural language). */
|
|
129
|
+
notes: string[];
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Build a fully-populated, invariant-consistent ResponseMeta from a partial.
|
|
133
|
+
*
|
|
134
|
+
* Safe defaults (spec §2.1): a tool that supplies nothing gets a truthful,
|
|
135
|
+
* "single-record / known-complete" meta (`complete:true, truncated:false`).
|
|
136
|
+
*
|
|
137
|
+
* The server (or the caller) hands over whatever it knows; this helper fills
|
|
138
|
+
* the rest and then ENFORCES the §2.1 invariants so the flags the AI trusts
|
|
139
|
+
* are internally consistent:
|
|
140
|
+
* - `complete === true` ⟺ NOT truncated AND filtersDropped empty AND
|
|
141
|
+
* (no pagination OR hasMore===false) AND (no degraded OR failed===0).
|
|
142
|
+
* - If totalAvailable is known and returned < totalAvailable ⇒
|
|
143
|
+
* complete:false, truncated:true.
|
|
144
|
+
* - filtersDropped non-empty ⇒ at least one note is present.
|
|
145
|
+
*/
|
|
146
|
+
export declare function buildMeta(partial?: Partial<ResponseMeta>): ResponseMeta;
|
|
147
|
+
/**
|
|
148
|
+
* Branded wrapper a tool handler returns to attach `_meta` to its payload.
|
|
149
|
+
*
|
|
150
|
+
* A handler may return either its raw domain object (server synthesizes a
|
|
151
|
+
* minimal truthful default) OR `withMeta(data, partialMeta)`. The brand lets
|
|
152
|
+
* the server distinguish "handler attached meta" from "domain object that
|
|
153
|
+
* happens to have `data`/`_meta` keys" with zero ambiguity.
|
|
154
|
+
*/
|
|
155
|
+
export declare class MetaBundle<T = unknown> {
|
|
156
|
+
readonly data: T;
|
|
157
|
+
readonly meta: Partial<ResponseMeta>;
|
|
158
|
+
readonly __isMetaBundle: true;
|
|
159
|
+
constructor(data: T, meta: Partial<ResponseMeta>);
|
|
160
|
+
}
|
|
161
|
+
/** Attach a partial `_meta` to a handler's `data`. Server finalizes it. */
|
|
162
|
+
export declare function withMeta<T>(data: T, meta: Partial<ResponseMeta>): MetaBundle<T>;
|
|
163
|
+
/** Type guard: did the handler hand back a MetaBundle? */
|
|
164
|
+
export declare function isMetaBundle(v: unknown): v is MetaBundle;
|
|
165
|
+
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uDAAuD;IACvD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CA6G3E;AAED;;;;;;;GAOG;AACH,qBAAa,UAAU,CAAC,CAAC,GAAG,OAAO;IAG/B,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;IAHtC,QAAQ,CAAC,cAAc,EAAG,IAAI,CAAU;gBAE7B,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;CAEvC;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAC1B,UAAU,CAAC,CAAC,CAAC,CAEf;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAMxD"}
|
package/dist/meta.js
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cliwant/mcp-sam-gov/meta — the `_meta` completeness/provenance convention.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists
|
|
5
|
+
* ----------------
|
|
6
|
+
* These tools' outputs are consumed by an AI, not a human who can eyeball
|
|
7
|
+
* a table. For an AI consumer, silently-misleading data is strictly worse
|
|
8
|
+
* than missing data: the AI cannot tell a filtered-but-blank field from a
|
|
9
|
+
* genuinely-empty one, a hard cap from a complete list, or a swallowed
|
|
10
|
+
* error from a real zero — and will state the wrong answer confidently.
|
|
11
|
+
*
|
|
12
|
+
* Every tool's success payload therefore gains a sibling `_meta` object.
|
|
13
|
+
* `data` is UNCHANGED (backward compat): the envelope becomes
|
|
14
|
+
* `{ ok, data, _meta }` where existing consumers reading `ok`/`data.*`
|
|
15
|
+
* are 100% unaffected.
|
|
16
|
+
*
|
|
17
|
+
* See docs/research/02-truthful-outputs-spec.md §2 for the normative spec.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Build a fully-populated, invariant-consistent ResponseMeta from a partial.
|
|
21
|
+
*
|
|
22
|
+
* Safe defaults (spec §2.1): a tool that supplies nothing gets a truthful,
|
|
23
|
+
* "single-record / known-complete" meta (`complete:true, truncated:false`).
|
|
24
|
+
*
|
|
25
|
+
* The server (or the caller) hands over whatever it knows; this helper fills
|
|
26
|
+
* the rest and then ENFORCES the §2.1 invariants so the flags the AI trusts
|
|
27
|
+
* are internally consistent:
|
|
28
|
+
* - `complete === true` ⟺ NOT truncated AND filtersDropped empty AND
|
|
29
|
+
* (no pagination OR hasMore===false) AND (no degraded OR failed===0).
|
|
30
|
+
* - If totalAvailable is known and returned < totalAvailable ⇒
|
|
31
|
+
* complete:false, truncated:true.
|
|
32
|
+
* - filtersDropped non-empty ⇒ at least one note is present.
|
|
33
|
+
*/
|
|
34
|
+
export function buildMeta(partial = {}) {
|
|
35
|
+
const source = partial.source ?? "unknown";
|
|
36
|
+
const keylessMode = partial.keylessMode ?? true;
|
|
37
|
+
const returned = partial.returned ?? 0;
|
|
38
|
+
const totalAvailable = partial.totalAvailable === undefined ? null : partial.totalAvailable;
|
|
39
|
+
const filtersApplied = partial.filtersApplied ?? [];
|
|
40
|
+
const filtersDropped = partial.filtersDropped ?? [];
|
|
41
|
+
const fieldsUnavailable = partial.fieldsUnavailable ?? [];
|
|
42
|
+
const notes = partial.notes ? [...partial.notes] : [];
|
|
43
|
+
const pagination = partial.pagination;
|
|
44
|
+
const degraded = partial.degraded;
|
|
45
|
+
// --- Derive truncated -------------------------------------------------
|
|
46
|
+
// A known total that exceeds what we returned proves truncation.
|
|
47
|
+
const totalProvesTruncation = totalAvailable !== null && returned < totalAvailable;
|
|
48
|
+
const paginationHasMore = pagination ? pagination.hasMore : false;
|
|
49
|
+
let truncated = partial.truncated ?? (totalProvesTruncation || paginationHasMore);
|
|
50
|
+
if (totalProvesTruncation || paginationHasMore)
|
|
51
|
+
truncated = true;
|
|
52
|
+
// --- P5 provenance (ADR-0045 B2/M1) -----------------------------------
|
|
53
|
+
// A NON-live response (a snapshot served because the live upstream was
|
|
54
|
+
// unreachable) is honesty-qualified below. For a live/absent dataPath this
|
|
55
|
+
// whole strand is INERT — `nonLiveProvenance` is false, so `complete`, the
|
|
56
|
+
// notes[], and totalIsEstimated are all derived EXACTLY as before P5 (Phase 1:
|
|
57
|
+
// no adapter threads a dataPath ⇒ byte-identical output on every one of the
|
|
58
|
+
// 110 tools).
|
|
59
|
+
const nonLiveProvenance = partial.dataPath !== undefined && partial.dataPath !== "live";
|
|
60
|
+
// --- Derive complete (single source of truth = the §2.1 invariant) ----
|
|
61
|
+
const degradedLoss = degraded ? degraded.failed > 0 : false;
|
|
62
|
+
const derivedComplete = !truncated &&
|
|
63
|
+
filtersDropped.length === 0 &&
|
|
64
|
+
!paginationHasMore &&
|
|
65
|
+
!degradedLoss &&
|
|
66
|
+
!totalProvesTruncation &&
|
|
67
|
+
// M1a: `complete` is defined against the LIVE result set (:53), so a snapshot
|
|
68
|
+
// can NEVER claim complete:true — gate the derivation behind a live/absent
|
|
69
|
+
// dataPath. (Inert for live: `!false` === true, no change.)
|
|
70
|
+
!nonLiveProvenance;
|
|
71
|
+
// Honor an explicit complete:false, but never let a caller claim
|
|
72
|
+
// complete:true when the invariant says otherwise.
|
|
73
|
+
const complete = partial.complete === false ? false : derivedComplete;
|
|
74
|
+
// --- Invariant: filtersDropped non-empty ⇒ a note explaining it -------
|
|
75
|
+
if (filtersDropped.length > 0 && notes.length === 0) {
|
|
76
|
+
notes.push(`The following requested filters were NOT applied by the upstream and the results are unfiltered on them: ${filtersDropped.join(", ")}. Treat these results as unfiltered on those facets.`);
|
|
77
|
+
}
|
|
78
|
+
// --- P5 (ADR-0045 M1c/m1): staleness note on a non-live response ------
|
|
79
|
+
// Push into the EXISTING notes[] (m1 killed the separate `stalenessNote`
|
|
80
|
+
// field). Inert for live/absent dataPath. Names the as-of instant when known.
|
|
81
|
+
if (nonLiveProvenance) {
|
|
82
|
+
const asOfPhrase = partial.asOf ? ` (as of ${partial.asOf})` : "";
|
|
83
|
+
notes.push(`Live upstream was unreachable — this response is served from a ${partial.dataPath} snapshot${asOfPhrase}. Freshness is NOT guaranteed; treat completeness and totals as of the snapshot time, not live.`);
|
|
84
|
+
}
|
|
85
|
+
const meta = {
|
|
86
|
+
source,
|
|
87
|
+
keylessMode,
|
|
88
|
+
complete,
|
|
89
|
+
truncated,
|
|
90
|
+
returned,
|
|
91
|
+
totalAvailable,
|
|
92
|
+
filtersApplied,
|
|
93
|
+
filtersDropped,
|
|
94
|
+
fieldsUnavailable,
|
|
95
|
+
notes,
|
|
96
|
+
};
|
|
97
|
+
if (partial.enrichedCount !== undefined)
|
|
98
|
+
meta.enrichedCount = partial.enrichedCount;
|
|
99
|
+
if (degraded)
|
|
100
|
+
meta.degraded = degraded;
|
|
101
|
+
if (pagination)
|
|
102
|
+
meta.pagination = pagination;
|
|
103
|
+
// Conditional passthrough (like enrichedCount/pagination): only surfaced when
|
|
104
|
+
// the tool provides it, so existing tools' `_meta` output stays byte-identical.
|
|
105
|
+
if (partial.totalIsLowerBound !== undefined)
|
|
106
|
+
meta.totalIsLowerBound = partial.totalIsLowerBound;
|
|
107
|
+
// Conditional passthrough (identical shape to totalIsLowerBound above): only
|
|
108
|
+
// surfaced when the tool provides it (CKAN's estimated-total path), so every
|
|
109
|
+
// existing tool's `_meta` output stays byte-identical. NO new derivation logic.
|
|
110
|
+
if (partial.totalIsEstimated !== undefined)
|
|
111
|
+
meta.totalIsEstimated = partial.totalIsEstimated;
|
|
112
|
+
// Conditional passthrough (IDENTICAL shape to totalIsLowerBound/totalIsEstimated
|
|
113
|
+
// above): only surfaced when the tool provides it (GovInfo's opaque-cursor path),
|
|
114
|
+
// so every existing tool's `_meta` output stays byte-identical. NO new derivation
|
|
115
|
+
// logic — the value (the offsetMark token, or null on the last page) is set by the
|
|
116
|
+
// cursor tool and passed through verbatim.
|
|
117
|
+
if (partial.nextCursor !== undefined)
|
|
118
|
+
meta.nextCursor = partial.nextCursor;
|
|
119
|
+
// P5 provenance passthrough (ADR-0045 B2) — IDENTICAL guarded idiom to
|
|
120
|
+
// totalIsLowerBound/nextCursor above: surfaced ONLY when the adapter provides
|
|
121
|
+
// it, so every existing (live, dataPath-absent) tool `_meta` stays
|
|
122
|
+
// byte-identical. NO `??` default. In Phase 1 no adapter threads these ⇒ inert.
|
|
123
|
+
if (partial.dataPath !== undefined)
|
|
124
|
+
meta.dataPath = partial.dataPath;
|
|
125
|
+
if (partial.asOf !== undefined)
|
|
126
|
+
meta.asOf = partial.asOf;
|
|
127
|
+
// M1b: a snapshot's totalAvailable is an as-of figure, NOT a live exact total —
|
|
128
|
+
// qualify it via the EXISTING totalIsEstimated flag (m1 forbids a new
|
|
129
|
+
// totalAsOf field) so an AI never reads it as a live count. Only when a total
|
|
130
|
+
// is actually present. Inert for live (nonLiveProvenance false).
|
|
131
|
+
if (nonLiveProvenance && totalAvailable !== null)
|
|
132
|
+
meta.totalIsEstimated = true;
|
|
133
|
+
return meta;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Branded wrapper a tool handler returns to attach `_meta` to its payload.
|
|
137
|
+
*
|
|
138
|
+
* A handler may return either its raw domain object (server synthesizes a
|
|
139
|
+
* minimal truthful default) OR `withMeta(data, partialMeta)`. The brand lets
|
|
140
|
+
* the server distinguish "handler attached meta" from "domain object that
|
|
141
|
+
* happens to have `data`/`_meta` keys" with zero ambiguity.
|
|
142
|
+
*/
|
|
143
|
+
export class MetaBundle {
|
|
144
|
+
data;
|
|
145
|
+
meta;
|
|
146
|
+
__isMetaBundle = true;
|
|
147
|
+
constructor(data, meta) {
|
|
148
|
+
this.data = data;
|
|
149
|
+
this.meta = meta;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Attach a partial `_meta` to a handler's `data`. Server finalizes it. */
|
|
153
|
+
export function withMeta(data, meta) {
|
|
154
|
+
return new MetaBundle(data, meta);
|
|
155
|
+
}
|
|
156
|
+
/** Type guard: did the handler hand back a MetaBundle? */
|
|
157
|
+
export function isMetaBundle(v) {
|
|
158
|
+
return (typeof v === "object" &&
|
|
159
|
+
v !== null &&
|
|
160
|
+
v.__isMetaBundle === true);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=meta.js.map
|
package/dist/meta.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"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"}
|
package/dist/nih.d.ts
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NIH RePORTER v2 — federal research-GRANT project records (keyless).
|
|
3
|
+
*
|
|
4
|
+
* A NEW capability axis: **federal research-funding footprint by organization /
|
|
5
|
+
* UEI / state** — awarded NIH project money keyed to a recipient org (with UEI +
|
|
6
|
+
* DUNS), a recipient-ENRICHMENT layer orthogonal to the spend/contract/regulatory
|
|
7
|
+
* sources. It joins the SAM/USAspending recipient graph via `primary_uei` (the
|
|
8
|
+
* SAME UEI space) — but the award nature DIFFERS (grants fund research, not
|
|
9
|
+
* goods/services), so every response carries the grant-vs-contract caveat (M2).
|
|
10
|
+
*
|
|
11
|
+
* ON-DOMAIN HONESTY: this is research-funding / grants-adjacent, the AWARDED-money
|
|
12
|
+
* sibling of grants.gov opportunities and the biomedical-R&D slice of USAspending
|
|
13
|
+
* assistance awards — NOT core procurement. Positioned as recipient-enrichment /
|
|
14
|
+
* R&D market intel, never as a contract source.
|
|
15
|
+
*
|
|
16
|
+
* THE R2 PORT'S FIRST NON-GET CONSUMER (ADR-0014): NIH RePORTER is a
|
|
17
|
+
* POST-with-JSON-body API. `getJson` (ADR-0005) gained a byte-neutral,
|
|
18
|
+
* backward-compatible `method`/`body` passthrough for exactly this; this module
|
|
19
|
+
* writes ZERO fetch/coercion/error code — it REUSES `getJson` / `driftError` /
|
|
20
|
+
* `num`·`str` / `withMeta` and COPIES (does not import) the fixed-host SSRF +
|
|
21
|
+
* honesty PATTERN from CKAN/ECHO/FPDS, adapted:
|
|
22
|
+
*
|
|
23
|
+
* ★ SSRF GUARD (policy① — the SMALLEST surface of any source): the request URL is
|
|
24
|
+
* a compile-time CONSTANT (fixed host `api.reporter.nih.gov` + fixed path
|
|
25
|
+
* `/v2/projects/search`); NO caller input touches it. All filters ride in the POST
|
|
26
|
+
* body, which is MODULE-BUILT from a validated typed criteria object then
|
|
27
|
+
* `JSON.stringify`'d — there is NO raw-body / raw-criteria passthrough, so a
|
|
28
|
+
* caller value cannot break out of its criterion into another key. A
|
|
29
|
+
* post-construction hostname/protocol assertion + `redirect:"error"` lock it
|
|
30
|
+
* (fail closed on any off-host 3xx; its body is never read).
|
|
31
|
+
*
|
|
32
|
+
* ★ FILTER HONESTY (M1 — the load-bearing discipline): a criterion is shipped ONLY
|
|
33
|
+
* after being LIVE-CONFIRMED to actually narrow the result set. The confirmed
|
|
34
|
+
* v1 set is `orgStates` + `orgNames` + `fiscalYears` (each live-verified to
|
|
35
|
+
* reduce the total below the unfiltered baseline). `agency_ic_codes` is EXCLUDED
|
|
36
|
+
* — it is silently DROPPED upstream (a filter that no-ops is never presented as
|
|
37
|
+
* applied). A shipped filter goes in `_meta.filtersApplied`; a silent-drop filter
|
|
38
|
+
* is never listed there and never exposed in the schema.
|
|
39
|
+
*
|
|
40
|
+
* ★ 15,000-RECORD RETRIEVAL WINDOW (M3+M4 — the critical disclosure): NIH caps
|
|
41
|
+
* keyless retrieval at `offset 0..14,999` (`limit ≤ 500`), so only the first
|
|
42
|
+
* 15,000 records of any result set are reachable. This is a cap on RETRIEVAL, NOT
|
|
43
|
+
* on the COUNT: `meta.total` stays EXACT (never truncated to 15,000, never marked
|
|
44
|
+
* `totalIsLowerBound`). `offset >= 15,000` is refused pre-fetch (`invalid_input`);
|
|
45
|
+
* after a page, `nextOffset` is null once `offset+returned` reaches the cap or the
|
|
46
|
+
* exact total (never a dead-end `nextOffset=15000`). `truncated` is derived by
|
|
47
|
+
* buildMeta from `returned < totalAvailable`; when the count exceeds the window a
|
|
48
|
+
* `_meta.notes` line discloses the unreachable remainder and recommends narrowing.
|
|
49
|
+
*
|
|
50
|
+
* ★ HONESTY `_meta`: shape-guard FIRST (a 200 body that is not `{meta,results:[]}`
|
|
51
|
+
* → driftError, NEVER a fake empty); a non-numeric/absent `meta.total` →
|
|
52
|
+
* driftError BEFORE `num(meta.total)`; genuine-empty (`total:0`) → complete:true /
|
|
53
|
+
* totalAvailable:0; outage/5xx/timeout → getJson throws; 400 (bad offset/limit/
|
|
54
|
+
* type) → invalid_input (surfaced, never `[]`). `num` is null-never-0 on
|
|
55
|
+
* `award_amount` (a real $0 award is 0; an absent amount is null). Every response
|
|
56
|
+
* discloses the grant-vs-contract caveat + a data-currency note.
|
|
57
|
+
*/
|
|
58
|
+
import { num } from "./coerce.js";
|
|
59
|
+
import { type MetaBundle } from "./meta.js";
|
|
60
|
+
export { num };
|
|
61
|
+
export declare const NIH_ORG_STATES: readonly ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AS", "GU", "MP", "PR", "VI"];
|
|
62
|
+
export type NihOrgState = (typeof NIH_ORG_STATES)[number];
|
|
63
|
+
export type NihPrincipalInvestigator = {
|
|
64
|
+
profileId: number | null;
|
|
65
|
+
firstName: string | null;
|
|
66
|
+
lastName: string | null;
|
|
67
|
+
fullName: string | null;
|
|
68
|
+
isContactPi: boolean | null;
|
|
69
|
+
title: string | null;
|
|
70
|
+
};
|
|
71
|
+
export type NihProject = {
|
|
72
|
+
projectNum: string | null;
|
|
73
|
+
projectTitle: string | null;
|
|
74
|
+
fiscalYear: number | null;
|
|
75
|
+
awardAmount: number | null;
|
|
76
|
+
awardType: string | null;
|
|
77
|
+
activityCode: string | null;
|
|
78
|
+
isActive: boolean | null;
|
|
79
|
+
organization: {
|
|
80
|
+
name: string | null;
|
|
81
|
+
city: string | null;
|
|
82
|
+
state: string | null;
|
|
83
|
+
country: string | null;
|
|
84
|
+
/** The SAM/USAspending recipient join key (but grant ≠ contract — M2). */
|
|
85
|
+
primaryUei: string | null;
|
|
86
|
+
primaryDuns: string | null;
|
|
87
|
+
ueis: string[];
|
|
88
|
+
duns: string[];
|
|
89
|
+
};
|
|
90
|
+
principalInvestigators: NihPrincipalInvestigator[];
|
|
91
|
+
contactPiName: string | null;
|
|
92
|
+
fundingIc: {
|
|
93
|
+
code: string | null;
|
|
94
|
+
abbreviation: string | null;
|
|
95
|
+
name: string | null;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export type NihSearchArgs = {
|
|
99
|
+
orgStates?: NihOrgState[];
|
|
100
|
+
orgNames?: string[];
|
|
101
|
+
fiscalYears?: number[];
|
|
102
|
+
limit?: number;
|
|
103
|
+
offset?: number;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Search awarded NIH research projects (POST /v2/projects/search). Structured,
|
|
107
|
+
* LIVE-CONFIRMED-narrowing criteria only (orgStates / orgNames / fiscalYears),
|
|
108
|
+
* AND-combined in a MODULE-BUILT criteria object → JSON.stringify (no raw
|
|
109
|
+
* passthrough). Returns curated recipient-enrichment rows + honest `_meta`:
|
|
110
|
+
* exact totalAvailable, exact within-window pagination, the 15,000-retrieval-cap
|
|
111
|
+
* disclosure when the count exceeds it, and the mandatory grant-vs-contract
|
|
112
|
+
* caveat. Disclose-not-refuse: an unscoped query is NOT refused — it returns the
|
|
113
|
+
* first page + the exact total + a note recommending a criterion when the total
|
|
114
|
+
* exceeds the window.
|
|
115
|
+
*/
|
|
116
|
+
export declare function searchProjects(args: NihSearchArgs): Promise<MetaBundle>;
|
|
117
|
+
//# sourceMappingURL=nih.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nih.d.ts","sourceRoot":"","sources":["../src/nih.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AACvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAKzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAsBf,eAAO,MAAM,cAAc,2VAOjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAuB1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,0EAA0E;QAC1E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,sBAAsB,EAAE,wBAAwB,EAAE,CAAC;IACnD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACrB,CAAC;CACH,CAAC;AAiEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAuI7E"}
|