@cliwant/mcp-sam-gov 0.3.0 → 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 +226 -64
- 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 +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +4 -0
- package/dist/cache.js.map +1 -1
- 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 +74 -1
- 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 +26 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +69 -1
- package/dist/errors.js.map +1 -1
- 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 +419 -3
- 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 +111 -6
- 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 +3889 -296
- 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 +1629 -201
- 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 +5 -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 +98 -1
- package/src/echo.ts +496 -0
- package/src/edgar.ts +3014 -0
- package/src/errors.ts +84 -1
- package/src/fac.ts +529 -0
- package/src/far.ts +1007 -0
- package/src/fdic.ts +2052 -0
- package/src/federal-register.ts +512 -3
- 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 +139 -7
- 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 +4551 -328
- package/src/snapshot.ts +192 -0
- package/src/socrata.ts +532 -0
- package/src/treasury.ts +575 -0
- package/src/usaspending.ts +1946 -214
- package/src/usitc.ts +420 -0
package/dist/gao.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gao.js","sourceRoot":"","sources":["../src/gao.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* govinfo.ts — GovInfo (`api.govinfo.gov`) — GPO-authoritative bulk publications
|
|
3
|
+
* (BILLS, PLAW, USCODE, CREC, CFR/FR editions, BUDGET, GAOREPORTS, …) with
|
|
4
|
+
* PDF/XML/MODS downloads + provenance. ADR-0010. This COMPLETES the api.data.gov
|
|
5
|
+
* KEYED trio (ADR-0007 shipped Regulations.gov + Congress.gov; GovInfo was deferred
|
|
6
|
+
* there for its opaque cursor).
|
|
7
|
+
*
|
|
8
|
+
* ★ HIGHEST-REUSE SLICE: the 2nd consumer of the shipped api.data.gov env-key
|
|
9
|
+
* adapter (imported from the shared `./datagovKey.js` seam — §2). It writes ZERO new
|
|
10
|
+
* key/fetch/coercion/error code: it REUSES `getJson`/`driftError`/`num`·`str` and
|
|
11
|
+
* COPIES (does not import) the Socrata/CKAN/datagov SSRF + honesty PATTERN. The one
|
|
12
|
+
* genuinely-novel piece is GovInfo's OPAQUE `offsetMark` cursor (§3 of the ADR).
|
|
13
|
+
*
|
|
14
|
+
* ★ KEY-SECURITY (§2 — inherited verbatim from ADR-0007 via datagovKey.ts):
|
|
15
|
+
* 1. The key rides in `headers:{ "X-Api-Key": <key> }` ONLY — NEVER the URL/query
|
|
16
|
+
* (GovInfo also accepts `?api_key=`; we DELIBERATELY reject that form — it would
|
|
17
|
+
* embed the secret in the request URL AND in the echoed `nextPage`).
|
|
18
|
+
* 2. `label` is HOST+PATH only ("govinfo:/collections" / "govinfo:/packages") —
|
|
19
|
+
* never the full URL, never a token.
|
|
20
|
+
* 3. `_meta.source`/`notes` are host + key-MODE only — never the URL/key/header.
|
|
21
|
+
* 4. The upstream `nextPage`/`previousPage` URLs are NEVER surfaced verbatim (they
|
|
22
|
+
* embed pageSize + api_key) — the cursor is re-derived by extracting ONLY the
|
|
23
|
+
* `offsetMark` value via `URL.searchParams`. `get_package` download links that
|
|
24
|
+
* embed `api_key` are stripped key-free before the payload is surfaced.
|
|
25
|
+
*
|
|
26
|
+
* ★ OPAQUE-CURSOR HONESTY (§3 — the novel pattern, "opaque-cursor pass-back"):
|
|
27
|
+
* - `totalAvailable = num(count)` — the EXACT real total (no lower-bound/estimate).
|
|
28
|
+
* - `hasMore` = `nextPage` present (⇔ a next cursor exists).
|
|
29
|
+
* - `_meta.nextCursor` = the next page's `offsetMark`, extracted from `nextPage`;
|
|
30
|
+
* `nextOffset:null` + `offset:null` ALWAYS (a numeric offset is meaningless for
|
|
31
|
+
* an opaque cursor). Continue by passing `nextCursor` back as `pageMark`.
|
|
32
|
+
* - M3 phantom-empty guard: `packages:[]` WITH `nextPage` present ⇒ `hasMore:false,
|
|
33
|
+
* nextCursor:null` (never follow into an empty cursor loop).
|
|
34
|
+
* - M4 complete: passed EXPLICITLY — `false` whenever `pageMark !== "*"` (a
|
|
35
|
+
* continuation, not the whole set); `true` only when `pageMark === "*" && !hasMore`
|
|
36
|
+
* (a single first-page call that IS the full result).
|
|
37
|
+
* - M6 nextPage parse-error: a malformed `nextPage` ⇒ schema_drift WITHOUT the raw
|
|
38
|
+
* value in the message (it may hold the real key); a valid `nextPage` lacking a
|
|
39
|
+
* usable `offsetMark` ⇒ graceful no-more.
|
|
40
|
+
* - NO 10k reachability wall (unlike EDGAR/Regulations): GovInfo's cursor traverses
|
|
41
|
+
* the ENTIRE result set, so there is no "unreachable remainder" caveat.
|
|
42
|
+
*
|
|
43
|
+
* ★ SSRF (§4 — copy the single-fixed-host shape): one fixed host `api.govinfo.gov`;
|
|
44
|
+
* fixed service-path bases; the interpolated path segments (`collection`/`date`/
|
|
45
|
+
* `packageId`) are grammar-constrained; `pageMark`/`pageSize` ride through
|
|
46
|
+
* URLSearchParams; post-construction `hostname==="api.govinfo.gov" && https`
|
|
47
|
+
* assertion; `redirect:"error"`. ★ ECHO-trap mitigation: `collection` is validated
|
|
48
|
+
* against the memoized `/collections` catalog (a well-formed-but-unknown code could
|
|
49
|
+
* return a silent `count:0`); M5 — if that catalog fetch FAILS, the error is
|
|
50
|
+
* PROPAGATED (never bypass validation into a possibly-silent-empty data query).
|
|
51
|
+
*
|
|
52
|
+
* ★ HONESTY (§5): genuine-empty (`count:0`, valid inputs) ⇒ complete:true/total:0;
|
|
53
|
+
* outage/5xx/timeout/401/403/404/429 ⇒ getJson THROWS (never `[]`); a 200 with a
|
|
54
|
+
* missing/non-number `count`, or `packages`/`collections` NOT an array ⇒ driftError
|
|
55
|
+
* (container-guarded — a TypeError must never mask drift as upstream_unavailable).
|
|
56
|
+
* `num`/`str` are null-never-0.
|
|
57
|
+
*/
|
|
58
|
+
import { num } from "./coerce.js";
|
|
59
|
+
import { type MetaBundle } from "./meta.js";
|
|
60
|
+
export { num };
|
|
61
|
+
export declare const GOVINFO_HOST = "api.govinfo.gov";
|
|
62
|
+
export declare const GOVINFO_COLLECTION_RE: RegExp;
|
|
63
|
+
export declare const GOVINFO_DATE_RE: RegExp;
|
|
64
|
+
export declare const GOVINFO_PACKAGE_ID_RE: RegExp;
|
|
65
|
+
export declare const GOVINFO_PAGE_MARK_RE: RegExp;
|
|
66
|
+
export type GovinfoCollection = {
|
|
67
|
+
collectionCode: string | null;
|
|
68
|
+
collectionName: string | null;
|
|
69
|
+
packageCount: number | null;
|
|
70
|
+
granuleCount: number | null;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* The discovery entry-point: the GovInfo collection catalog (a single definitive
|
|
74
|
+
* read — complete:true, totalAvailable = collections.length). Memoized ~6h; the
|
|
75
|
+
* SAME memoized catalog validates `collection` in govinfo_search_packages.
|
|
76
|
+
*/
|
|
77
|
+
export declare function listCollections(_args?: Record<string, never>): Promise<MetaBundle>;
|
|
78
|
+
export type GovinfoPackage = {
|
|
79
|
+
packageId: string | null;
|
|
80
|
+
title: string | null;
|
|
81
|
+
dateIssued: string | null;
|
|
82
|
+
lastModified: string | null;
|
|
83
|
+
docClass: string | null;
|
|
84
|
+
congress: string | null;
|
|
85
|
+
packageLink: string | null;
|
|
86
|
+
};
|
|
87
|
+
type GovinfoSearchArgs = {
|
|
88
|
+
collection: string;
|
|
89
|
+
startDate: string;
|
|
90
|
+
endDate?: string;
|
|
91
|
+
pageSize?: number;
|
|
92
|
+
pageMark?: string;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The workhorse + the sole carrier of the opaque-cursor pattern. Packages in a
|
|
96
|
+
* collection modified since `startDate` (lastModified facet). `collection` is
|
|
97
|
+
* grammar-checked THEN validated against the memoized `/collections` catalog (M5 —
|
|
98
|
+
* a catalog-fetch failure PROPAGATES, never bypasses validation). Continuation is
|
|
99
|
+
* via `_meta.nextCursor` passed back as `pageMark` (default "*" = first page).
|
|
100
|
+
*/
|
|
101
|
+
export declare function searchPackages(args: GovinfoSearchArgs): Promise<MetaBundle>;
|
|
102
|
+
/**
|
|
103
|
+
* The drill-down: one package's metadata + download links (txt/xml/pdf/mods/premis/
|
|
104
|
+
* zip) + related links. A 404 (nonexistent packageId) ⇒ honest found:false (never a
|
|
105
|
+
* fabricated summary). Any `api_key` embedded in a download/related link is stripped
|
|
106
|
+
* key-free before the payload is surfaced (M1/M2).
|
|
107
|
+
*/
|
|
108
|
+
export declare function getPackage(args: {
|
|
109
|
+
packageId: string;
|
|
110
|
+
}): Promise<MetaBundle>;
|
|
111
|
+
//# sourceMappingURL=govinfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"govinfo.d.ts","sourceRoot":"","sources":["../src/govinfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAOzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAGf,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAM9C,eAAO,MAAM,qBAAqB,QAAkB,CAAC;AACrD,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAIvE,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AAoFF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAmCF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB5F;AAGD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAkBF,KAAK,iBAAiB,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqIjF;AAgBD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CA8DjF"}
|
package/dist/govinfo.js
ADDED
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* govinfo.ts — GovInfo (`api.govinfo.gov`) — GPO-authoritative bulk publications
|
|
3
|
+
* (BILLS, PLAW, USCODE, CREC, CFR/FR editions, BUDGET, GAOREPORTS, …) with
|
|
4
|
+
* PDF/XML/MODS downloads + provenance. ADR-0010. This COMPLETES the api.data.gov
|
|
5
|
+
* KEYED trio (ADR-0007 shipped Regulations.gov + Congress.gov; GovInfo was deferred
|
|
6
|
+
* there for its opaque cursor).
|
|
7
|
+
*
|
|
8
|
+
* ★ HIGHEST-REUSE SLICE: the 2nd consumer of the shipped api.data.gov env-key
|
|
9
|
+
* adapter (imported from the shared `./datagovKey.js` seam — §2). It writes ZERO new
|
|
10
|
+
* key/fetch/coercion/error code: it REUSES `getJson`/`driftError`/`num`·`str` and
|
|
11
|
+
* COPIES (does not import) the Socrata/CKAN/datagov SSRF + honesty PATTERN. The one
|
|
12
|
+
* genuinely-novel piece is GovInfo's OPAQUE `offsetMark` cursor (§3 of the ADR).
|
|
13
|
+
*
|
|
14
|
+
* ★ KEY-SECURITY (§2 — inherited verbatim from ADR-0007 via datagovKey.ts):
|
|
15
|
+
* 1. The key rides in `headers:{ "X-Api-Key": <key> }` ONLY — NEVER the URL/query
|
|
16
|
+
* (GovInfo also accepts `?api_key=`; we DELIBERATELY reject that form — it would
|
|
17
|
+
* embed the secret in the request URL AND in the echoed `nextPage`).
|
|
18
|
+
* 2. `label` is HOST+PATH only ("govinfo:/collections" / "govinfo:/packages") —
|
|
19
|
+
* never the full URL, never a token.
|
|
20
|
+
* 3. `_meta.source`/`notes` are host + key-MODE only — never the URL/key/header.
|
|
21
|
+
* 4. The upstream `nextPage`/`previousPage` URLs are NEVER surfaced verbatim (they
|
|
22
|
+
* embed pageSize + api_key) — the cursor is re-derived by extracting ONLY the
|
|
23
|
+
* `offsetMark` value via `URL.searchParams`. `get_package` download links that
|
|
24
|
+
* embed `api_key` are stripped key-free before the payload is surfaced.
|
|
25
|
+
*
|
|
26
|
+
* ★ OPAQUE-CURSOR HONESTY (§3 — the novel pattern, "opaque-cursor pass-back"):
|
|
27
|
+
* - `totalAvailable = num(count)` — the EXACT real total (no lower-bound/estimate).
|
|
28
|
+
* - `hasMore` = `nextPage` present (⇔ a next cursor exists).
|
|
29
|
+
* - `_meta.nextCursor` = the next page's `offsetMark`, extracted from `nextPage`;
|
|
30
|
+
* `nextOffset:null` + `offset:null` ALWAYS (a numeric offset is meaningless for
|
|
31
|
+
* an opaque cursor). Continue by passing `nextCursor` back as `pageMark`.
|
|
32
|
+
* - M3 phantom-empty guard: `packages:[]` WITH `nextPage` present ⇒ `hasMore:false,
|
|
33
|
+
* nextCursor:null` (never follow into an empty cursor loop).
|
|
34
|
+
* - M4 complete: passed EXPLICITLY — `false` whenever `pageMark !== "*"` (a
|
|
35
|
+
* continuation, not the whole set); `true` only when `pageMark === "*" && !hasMore`
|
|
36
|
+
* (a single first-page call that IS the full result).
|
|
37
|
+
* - M6 nextPage parse-error: a malformed `nextPage` ⇒ schema_drift WITHOUT the raw
|
|
38
|
+
* value in the message (it may hold the real key); a valid `nextPage` lacking a
|
|
39
|
+
* usable `offsetMark` ⇒ graceful no-more.
|
|
40
|
+
* - NO 10k reachability wall (unlike EDGAR/Regulations): GovInfo's cursor traverses
|
|
41
|
+
* the ENTIRE result set, so there is no "unreachable remainder" caveat.
|
|
42
|
+
*
|
|
43
|
+
* ★ SSRF (§4 — copy the single-fixed-host shape): one fixed host `api.govinfo.gov`;
|
|
44
|
+
* fixed service-path bases; the interpolated path segments (`collection`/`date`/
|
|
45
|
+
* `packageId`) are grammar-constrained; `pageMark`/`pageSize` ride through
|
|
46
|
+
* URLSearchParams; post-construction `hostname==="api.govinfo.gov" && https`
|
|
47
|
+
* assertion; `redirect:"error"`. ★ ECHO-trap mitigation: `collection` is validated
|
|
48
|
+
* against the memoized `/collections` catalog (a well-formed-but-unknown code could
|
|
49
|
+
* return a silent `count:0`); M5 — if that catalog fetch FAILS, the error is
|
|
50
|
+
* PROPAGATED (never bypass validation into a possibly-silent-empty data query).
|
|
51
|
+
*
|
|
52
|
+
* ★ HONESTY (§5): genuine-empty (`count:0`, valid inputs) ⇒ complete:true/total:0;
|
|
53
|
+
* outage/5xx/timeout/401/403/404/429 ⇒ getJson THROWS (never `[]`); a 200 with a
|
|
54
|
+
* missing/non-number `count`, or `packages`/`collections` NOT an array ⇒ driftError
|
|
55
|
+
* (container-guarded — a TypeError must never mask drift as upstream_unavailable).
|
|
56
|
+
* `num`/`str` are null-never-0.
|
|
57
|
+
*/
|
|
58
|
+
import { ToolErrorCarrier } from "./errors.js";
|
|
59
|
+
import { getJson, driftError } from "./datasource.js";
|
|
60
|
+
import { num, str } from "./coerce.js";
|
|
61
|
+
import { memoize } from "./cache.js";
|
|
62
|
+
import { withMeta } from "./meta.js";
|
|
63
|
+
// ADR-0010 §2 — the SHARED api.data.gov key seam (GovInfo is its 2nd consumer).
|
|
64
|
+
// govinfo.ts writes ZERO key code; it imports keyHeader/keyModeLabel/pushKeyNote.
|
|
65
|
+
import { keyHeader, keyModeLabel, pushKeyNote } from "./datagovKey.js";
|
|
66
|
+
// Re-export the shared honesty coercion (single audited copy in ./coerce.js) so the
|
|
67
|
+
// fault suite's num-parity guard resolves the SAME `num` (govinfo.num === coerce.num).
|
|
68
|
+
export { num };
|
|
69
|
+
// ─── Fixed host + service paths (SSRF core — no free host/path param) ─
|
|
70
|
+
export const GOVINFO_HOST = "api.govinfo.gov";
|
|
71
|
+
const COLLECTIONS_PATH = "/collections";
|
|
72
|
+
// Grammar constraints for the interpolated PATH segments + the cursor query param.
|
|
73
|
+
// The SSRF guard is the grammar (no `/`, `?`, `..`, `@`, space can be injected);
|
|
74
|
+
// catalog-validation (below) is the SEPARATE silent-empty honesty guard.
|
|
75
|
+
export const GOVINFO_COLLECTION_RE = /^[A-Z]{2,10}$/;
|
|
76
|
+
export const GOVINFO_DATE_RE = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?$/;
|
|
77
|
+
export const GOVINFO_PACKAGE_ID_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{2,}$/;
|
|
78
|
+
// m2/m3 — a base64 + URL-safe SUPERSET (the offsetMark alphabet is not fully
|
|
79
|
+
// live-verified; URLSearchParams encoding is the real injection guard). Uses the
|
|
80
|
+
// new RegExp(string) form (m7 — an inline /…/ literal would need the `/` escaped).
|
|
81
|
+
export const GOVINFO_PAGE_MARK_RE = new RegExp("^(\\*|[A-Za-z0-9+/=_~.,:%-]{1,4096})$");
|
|
82
|
+
const GOVINFO_SOURCE = (mode) => `${GOVINFO_HOST} via GovInfo API (${mode})`;
|
|
83
|
+
// The CFR/ECFR/FR overlap disclosure (§5) — turns a scope-overlap risk into an
|
|
84
|
+
// explicit honest routing signal for the AI consumer.
|
|
85
|
+
const OVERLAP_COLLECTIONS = new Set(["CFR", "ECFR", "FR"]);
|
|
86
|
+
const OVERLAP_NOTE = "GovInfo is the GPO-authoritative BULK-PUBLICATION view (published packages/granules with PDF/XML/MODS downloads + provenance) — complementary to, not a duplicate of, the ecfr_*/fed_register_* tools. For current-text point lookups/search use those; for authoritative published editions, bulk granules, historical point-in-time editions, and non-CFR/FR collections (BILLS, PLAW, CREC, USCODE, BUDGET, GAOREPORTS, …) use GovInfo.";
|
|
87
|
+
// m5/m9 — the /collections/{c} date facet filters by lastModified, NOT dateIssued.
|
|
88
|
+
const LAST_MODIFIED_NOTE = "startDate/endDate filter by lastModified (the record's last-update date), NOT dateIssued (original publication date). A package modified in the window but published earlier IS included; one published in the window but not since modified may be missed by a lastModified query.";
|
|
89
|
+
const CURSOR_NOTE = "GovInfo uses an opaque cursor: pagination.offset/nextOffset are not meaningful (null). Continue by passing _meta.nextCursor back as the `pageMark` argument; hasMore:false / nextCursor:null means this is the last page.";
|
|
90
|
+
// ─── SSRF-guarded fetch (§4 — fixed host + hostname assertion + redirect) ──
|
|
91
|
+
/**
|
|
92
|
+
* GET one GovInfo JSON resource. `path` is a FIXED base (or a grammar-constrained
|
|
93
|
+
* interpolation — the caller validates the segments BEFORE calling); all query
|
|
94
|
+
* params go through `params` (URLSearchParams, encoded). Asserts the CONSTRUCTED
|
|
95
|
+
* URL's hostname === GOVINFO_HOST over https (belt-and-suspenders, copied from
|
|
96
|
+
* Socrata/CKAN/datagov), sets `redirect:"error"` (a 3xx off api.govinfo.gov is
|
|
97
|
+
* anomalous and must NOT carry the X-Api-Key header to a foreign host), and attaches
|
|
98
|
+
* the key ONLY in the X-Api-Key header. `label` is host+path only.
|
|
99
|
+
*/
|
|
100
|
+
async function getGovinfo(path, label, params) {
|
|
101
|
+
const qs = params.toString();
|
|
102
|
+
const url = `https://${GOVINFO_HOST}${path}${qs ? `?${qs}` : ""}`;
|
|
103
|
+
const built = new URL(url);
|
|
104
|
+
if (built.hostname !== GOVINFO_HOST || built.protocol !== "https:") {
|
|
105
|
+
throw new ToolErrorCarrier({
|
|
106
|
+
kind: "invalid_input",
|
|
107
|
+
message: `Constructed GovInfo URL host ${JSON.stringify(built.hostname)} (${built.protocol}) does not match the fixed host ${JSON.stringify(GOVINFO_HOST)} over https — refusing to fetch (SSRF safety).`,
|
|
108
|
+
retryable: false,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Shared fetch envelope (ADR-0005): the key rides in headers ONLY (§2 rule 1);
|
|
112
|
+
// redirect:"error" (§4); host-only label → ToolError.upstreamEndpoint (§2 rule 2).
|
|
113
|
+
return getJson(url, { label, headers: keyHeader(), redirect: "error" });
|
|
114
|
+
}
|
|
115
|
+
// ─── Key-leak: strip any `api_key` from surfaced URLs (M1/M2) ──────
|
|
116
|
+
/**
|
|
117
|
+
* Remove an `api_key` query param from a URL string. Under header auth the GovInfo
|
|
118
|
+
* download links / package summary MAY still embed `?api_key=` (documented, not
|
|
119
|
+
* fully live-verifiable today), and the secret must NEVER reach the surfaced
|
|
120
|
+
* payload. A no-op when there is no `api_key`. Uses URL parsing when the string
|
|
121
|
+
* parses; a defensive regex strip otherwise (a non-URL string that somehow carries
|
|
122
|
+
* the token still has it removed — never surfaced verbatim).
|
|
123
|
+
*/
|
|
124
|
+
function scrubApiKey(s) {
|
|
125
|
+
if (!/api_key=/i.test(s))
|
|
126
|
+
return s;
|
|
127
|
+
try {
|
|
128
|
+
const u = new URL(s);
|
|
129
|
+
u.searchParams.delete("api_key");
|
|
130
|
+
return u.toString();
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return s
|
|
134
|
+
.replace(/([?&])api_key=[^&#]*/gi, "$1")
|
|
135
|
+
.replace(/([?&])(&|#|$)/g, "$2")
|
|
136
|
+
.replace(/[?&]$/g, "");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Recursively strip `api_key` from every string in a JSON value (M1/M2). */
|
|
140
|
+
function scrubDeep(v) {
|
|
141
|
+
if (typeof v === "string")
|
|
142
|
+
return scrubApiKey(v);
|
|
143
|
+
if (Array.isArray(v))
|
|
144
|
+
return v.map(scrubDeep);
|
|
145
|
+
if (v && typeof v === "object") {
|
|
146
|
+
const out = {};
|
|
147
|
+
for (const [k, val] of Object.entries(v)) {
|
|
148
|
+
out[k] = scrubDeep(val);
|
|
149
|
+
}
|
|
150
|
+
return out;
|
|
151
|
+
}
|
|
152
|
+
return v;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Fetch + shape-guard the `/collections` catalog. A missing/non-array
|
|
156
|
+
* `body.collections` is drift (never `[]`). INSIDE the memoize callback so a bad
|
|
157
|
+
* shape is never cached as a success (ADR-0005 v2 test-2 rule).
|
|
158
|
+
*/
|
|
159
|
+
async function fetchCollections() {
|
|
160
|
+
const body = await getGovinfo(COLLECTIONS_PATH, "govinfo:/collections", new URLSearchParams());
|
|
161
|
+
const b = (body ?? {});
|
|
162
|
+
if (!Array.isArray(b.collections)) {
|
|
163
|
+
throw driftError("govinfo:/collections", "govinfo shape drift — /collections response.collections must be an array.");
|
|
164
|
+
}
|
|
165
|
+
return b.collections.map((c) => {
|
|
166
|
+
const it = (c ?? {});
|
|
167
|
+
return {
|
|
168
|
+
collectionCode: str(it.collectionCode),
|
|
169
|
+
collectionName: str(it.collectionName),
|
|
170
|
+
// m6 — packageCount (whole packages) vs granuleCount (sub-package documents,
|
|
171
|
+
// e.g. individual bills within a CREC issue). num null-never-0.
|
|
172
|
+
packageCount: num(it.packageCount),
|
|
173
|
+
granuleCount: num(it.granuleCount),
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/** The full collection catalog, memoized ~6h (42 slow-changing rows). */
|
|
178
|
+
async function collectionsCatalog() {
|
|
179
|
+
return memoize("govinfo:collections", fetchCollections, 6 * 60 * 60 * 1000);
|
|
180
|
+
}
|
|
181
|
+
// ═══════════════════ Tool 1: govinfo_list_collections ═════════════
|
|
182
|
+
/**
|
|
183
|
+
* The discovery entry-point: the GovInfo collection catalog (a single definitive
|
|
184
|
+
* read — complete:true, totalAvailable = collections.length). Memoized ~6h; the
|
|
185
|
+
* SAME memoized catalog validates `collection` in govinfo_search_packages.
|
|
186
|
+
*/
|
|
187
|
+
export async function listCollections(_args = {}) {
|
|
188
|
+
const collections = await collectionsCatalog();
|
|
189
|
+
const notes = [
|
|
190
|
+
"packageCount = whole packages in the collection; granuleCount = sub-package granules (e.g. individual documents within an issue). A missing count is null, never 0.",
|
|
191
|
+
];
|
|
192
|
+
pushKeyNote(notes);
|
|
193
|
+
return withMeta({ collections }, {
|
|
194
|
+
source: GOVINFO_SOURCE(keyModeLabel()),
|
|
195
|
+
keylessMode: false,
|
|
196
|
+
returned: collections.length,
|
|
197
|
+
totalAvailable: collections.length,
|
|
198
|
+
complete: true,
|
|
199
|
+
filtersApplied: [],
|
|
200
|
+
filtersDropped: [],
|
|
201
|
+
fieldsUnavailable: [],
|
|
202
|
+
notes,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/** Map one `packages[]` row into a flat, honesty-coerced shape. */
|
|
206
|
+
function mapPackage(item) {
|
|
207
|
+
const it = (item ?? {});
|
|
208
|
+
return {
|
|
209
|
+
packageId: str(it.packageId),
|
|
210
|
+
title: str(it.title),
|
|
211
|
+
dateIssued: str(it.dateIssued),
|
|
212
|
+
lastModified: str(it.lastModified),
|
|
213
|
+
docClass: str(it.docClass),
|
|
214
|
+
congress: str(it.congress),
|
|
215
|
+
// `packageLink` is the API's canonical resource URL; under header auth it is
|
|
216
|
+
// key-FREE (the key is never in any URL). Scrubbed defensively regardless.
|
|
217
|
+
packageLink: str(scrubApiKey(String(it.packageLink ?? "")) || null),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* The workhorse + the sole carrier of the opaque-cursor pattern. Packages in a
|
|
222
|
+
* collection modified since `startDate` (lastModified facet). `collection` is
|
|
223
|
+
* grammar-checked THEN validated against the memoized `/collections` catalog (M5 —
|
|
224
|
+
* a catalog-fetch failure PROPAGATES, never bypasses validation). Continuation is
|
|
225
|
+
* via `_meta.nextCursor` passed back as `pageMark` (default "*" = first page).
|
|
226
|
+
*/
|
|
227
|
+
export async function searchPackages(args) {
|
|
228
|
+
const label = "govinfo:/collections";
|
|
229
|
+
const collection = args.collection;
|
|
230
|
+
const pageMark = args.pageMark ?? "*";
|
|
231
|
+
const pageSize = args.pageSize ?? 100;
|
|
232
|
+
// ── Runtime grammar rechecks (belt-and-suspenders behind the server's Zod;
|
|
233
|
+
// load-bearing for a DIRECT call that bypasses Zod). Any failure ⇒ invalid_input
|
|
234
|
+
// BEFORE any fetch (0 network calls).
|
|
235
|
+
if (!GOVINFO_COLLECTION_RE.test(collection)) {
|
|
236
|
+
throw new ToolErrorCarrier({
|
|
237
|
+
kind: "invalid_input",
|
|
238
|
+
message: `Invalid GovInfo collection ${JSON.stringify(collection)} — expected an uppercase alpha code like BILLS/CFR/FR/PLAW ([A-Z]{2,10}).`,
|
|
239
|
+
retryable: false,
|
|
240
|
+
upstreamEndpoint: label,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
const startDate = normalizeDate(args.startDate, "startDate", label);
|
|
244
|
+
const endDate = args.endDate !== undefined ? normalizeDate(args.endDate, "endDate", label) : undefined;
|
|
245
|
+
if (!GOVINFO_PAGE_MARK_RE.test(pageMark)) {
|
|
246
|
+
throw new ToolErrorCarrier({
|
|
247
|
+
kind: "invalid_input",
|
|
248
|
+
message: `Invalid GovInfo pageMark (opaque cursor) — must be "*" or a ≤4096-char base64/URL-safe token. Pass back the _meta.nextCursor from the previous page.`,
|
|
249
|
+
retryable: false,
|
|
250
|
+
upstreamEndpoint: label,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// ── ECHO-trap mitigation (§4) — validate `collection` against the memoized
|
|
254
|
+
// catalog. M5: a catalog-fetch failure PROPAGATES (never skip validation into a
|
|
255
|
+
// possibly-silent-empty data query). A well-formed-but-UNKNOWN code ⇒ a clean
|
|
256
|
+
// invalid_input listing the valid codes, with NO data-query fetch.
|
|
257
|
+
const catalog = await collectionsCatalog();
|
|
258
|
+
const known = new Set(catalog.map((c) => c.collectionCode).filter((c) => c !== null));
|
|
259
|
+
if (!known.has(collection)) {
|
|
260
|
+
throw new ToolErrorCarrier({
|
|
261
|
+
kind: "invalid_input",
|
|
262
|
+
message: `Unknown GovInfo collection ${JSON.stringify(collection)}. Valid codes (from govinfo_list_collections): ${[...known].sort().join(", ")}.`,
|
|
263
|
+
retryable: false,
|
|
264
|
+
upstreamEndpoint: label,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
const path = `${COLLECTIONS_PATH}/${collection}/${startDate}` +
|
|
268
|
+
(endDate !== undefined ? `/${endDate}` : "");
|
|
269
|
+
const params = new URLSearchParams();
|
|
270
|
+
params.set("offsetMark", pageMark);
|
|
271
|
+
params.set("pageSize", String(pageSize));
|
|
272
|
+
const body = await getGovinfo(path, label, params);
|
|
273
|
+
const b = (body ?? {});
|
|
274
|
+
// ── Container-guarded drift (M2/M3): packages MUST be an array; count MUST be a
|
|
275
|
+
// number — never a TypeError (which would mask drift as upstream_unavailable),
|
|
276
|
+
// never a fake empty.
|
|
277
|
+
if (!Array.isArray(b.packages)) {
|
|
278
|
+
throw driftError(label, "govinfo shape drift — /collections/{c}/{date} response.packages must be an array.");
|
|
279
|
+
}
|
|
280
|
+
if (typeof b.count !== "number") {
|
|
281
|
+
throw driftError(label, "govinfo shape drift — /collections/{c}/{date} count missing/non-number.");
|
|
282
|
+
}
|
|
283
|
+
const packages = b.packages.map(mapPackage);
|
|
284
|
+
const returned = packages.length;
|
|
285
|
+
const totalAvailable = num(b.count); // EXACT (never packages.length)
|
|
286
|
+
// ── Opaque-cursor honesty (§3 + M3/M6). ──
|
|
287
|
+
const nextPagePresent = str(b.nextPage) !== null;
|
|
288
|
+
let hasMore;
|
|
289
|
+
let nextCursor;
|
|
290
|
+
if (returned === 0 && nextPagePresent) {
|
|
291
|
+
// M3 phantom-empty livelock guard: an empty page WITH a nextPage must NOT
|
|
292
|
+
// advertise a continuation — never follow into an empty cursor loop.
|
|
293
|
+
hasMore = false;
|
|
294
|
+
nextCursor = null;
|
|
295
|
+
}
|
|
296
|
+
else if (nextPagePresent) {
|
|
297
|
+
let nextUrl;
|
|
298
|
+
try {
|
|
299
|
+
nextUrl = new URL(String(b.nextPage));
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
// M6 — a MALFORMED nextPage. NEVER surface the raw value (it may hold the
|
|
303
|
+
// real key); a clean schema_drift instead.
|
|
304
|
+
throw driftError(label, "govinfo shape drift — nextPage is not a parseable URL.");
|
|
305
|
+
}
|
|
306
|
+
// m10 — run the extracted offsetMark through str() so a literal "null"/"" (or a
|
|
307
|
+
// missing param) becomes null (⇒ no-more), never the string "null".
|
|
308
|
+
const mark = str(nextUrl.searchParams.get("offsetMark"));
|
|
309
|
+
if (mark === null) {
|
|
310
|
+
// M6 — a valid nextPage lacking a usable offsetMark ⇒ graceful no-more.
|
|
311
|
+
hasMore = false;
|
|
312
|
+
nextCursor = null;
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
hasMore = true;
|
|
316
|
+
nextCursor = mark;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
hasMore = false;
|
|
321
|
+
nextCursor = null;
|
|
322
|
+
}
|
|
323
|
+
// M4 — cursor `complete` derives from hasMore + pageMark, NOT `returned<total`.
|
|
324
|
+
// complete:true ONLY when this is a first-page call ("*") that IS the whole set.
|
|
325
|
+
const complete = pageMark === "*" && !hasMore;
|
|
326
|
+
const filtersApplied = ["collection", "startDate"];
|
|
327
|
+
if (endDate !== undefined)
|
|
328
|
+
filtersApplied.push("endDate");
|
|
329
|
+
const notes = [CURSOR_NOTE, LAST_MODIFIED_NOTE];
|
|
330
|
+
if (OVERLAP_COLLECTIONS.has(collection))
|
|
331
|
+
notes.push(OVERLAP_NOTE);
|
|
332
|
+
pushKeyNote(notes);
|
|
333
|
+
return withMeta({ collection, packages }, {
|
|
334
|
+
source: GOVINFO_SOURCE(keyModeLabel()),
|
|
335
|
+
keylessMode: false,
|
|
336
|
+
returned,
|
|
337
|
+
totalAvailable,
|
|
338
|
+
complete,
|
|
339
|
+
filtersApplied,
|
|
340
|
+
filtersDropped: [],
|
|
341
|
+
fieldsUnavailable: [],
|
|
342
|
+
// Cursor page: offset/nextOffset null (no numeric offset); continuation is
|
|
343
|
+
// nextCursor (the extracted offsetMark, never the raw nextPage URL).
|
|
344
|
+
pagination: { offset: null, limit: pageSize, hasMore, nextOffset: null },
|
|
345
|
+
nextCursor,
|
|
346
|
+
notes,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
/** Normalize a date-only value to the full ISO datetime GovInfo requires on this path. */
|
|
350
|
+
function normalizeDate(raw, field, label) {
|
|
351
|
+
if (!GOVINFO_DATE_RE.test(raw)) {
|
|
352
|
+
throw new ToolErrorCarrier({
|
|
353
|
+
kind: "invalid_input",
|
|
354
|
+
message: `Invalid GovInfo ${field} ${JSON.stringify(raw)} — expected YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ.`,
|
|
355
|
+
retryable: false,
|
|
356
|
+
upstreamEndpoint: label,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
return /T/.test(raw) ? raw : `${raw}T00:00:00Z`;
|
|
360
|
+
}
|
|
361
|
+
// ═══════════════════ Tool 3: govinfo_get_package ══════════════════
|
|
362
|
+
/**
|
|
363
|
+
* The drill-down: one package's metadata + download links (txt/xml/pdf/mods/premis/
|
|
364
|
+
* zip) + related links. A 404 (nonexistent packageId) ⇒ honest found:false (never a
|
|
365
|
+
* fabricated summary). Any `api_key` embedded in a download/related link is stripped
|
|
366
|
+
* key-free before the payload is surfaced (M1/M2).
|
|
367
|
+
*/
|
|
368
|
+
export async function getPackage(args) {
|
|
369
|
+
const label = "govinfo:/packages";
|
|
370
|
+
const packageId = args.packageId;
|
|
371
|
+
if (!GOVINFO_PACKAGE_ID_RE.test(packageId)) {
|
|
372
|
+
throw new ToolErrorCarrier({
|
|
373
|
+
kind: "invalid_input",
|
|
374
|
+
message: `Invalid GovInfo packageId ${JSON.stringify(packageId)} — expected an id like BILLS-118hr1enr / CFR-2023-title1-vol1 ([A-Za-z0-9][A-Za-z0-9._-]{2,}).`,
|
|
375
|
+
retryable: false,
|
|
376
|
+
upstreamEndpoint: label,
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
const notes = [];
|
|
380
|
+
pushKeyNote(notes);
|
|
381
|
+
let body;
|
|
382
|
+
try {
|
|
383
|
+
body = await getGovinfo(`/packages/${packageId}/summary`, label, new URLSearchParams());
|
|
384
|
+
}
|
|
385
|
+
catch (e) {
|
|
386
|
+
if (e instanceof ToolErrorCarrier && e.toolError.kind === "not_found") {
|
|
387
|
+
// Honest empty for an unknown package — a definitive answer (complete).
|
|
388
|
+
return withMeta({ found: false, packageId }, {
|
|
389
|
+
source: GOVINFO_SOURCE(keyModeLabel()),
|
|
390
|
+
keylessMode: false,
|
|
391
|
+
returned: 0,
|
|
392
|
+
totalAvailable: 0,
|
|
393
|
+
complete: true,
|
|
394
|
+
filtersApplied: [],
|
|
395
|
+
filtersDropped: [],
|
|
396
|
+
fieldsUnavailable: [],
|
|
397
|
+
notes: [
|
|
398
|
+
`No GovInfo package found for packageId ${JSON.stringify(packageId)} (HTTP 404) — the id does not exist. Not fabricated.`,
|
|
399
|
+
...notes,
|
|
400
|
+
],
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
throw e;
|
|
404
|
+
}
|
|
405
|
+
if (!body || typeof body !== "object") {
|
|
406
|
+
throw driftError(label, "govinfo shape drift — /packages/{id}/summary response is not an object.");
|
|
407
|
+
}
|
|
408
|
+
// M1/M2 — strip any api_key embedded in download/related links before surfacing.
|
|
409
|
+
const pkg = scrubDeep(body);
|
|
410
|
+
return withMeta({ found: true, packageId, package: pkg }, {
|
|
411
|
+
source: GOVINFO_SOURCE(keyModeLabel()),
|
|
412
|
+
keylessMode: false,
|
|
413
|
+
returned: 1,
|
|
414
|
+
totalAvailable: 1,
|
|
415
|
+
complete: true,
|
|
416
|
+
filtersApplied: [],
|
|
417
|
+
filtersDropped: [],
|
|
418
|
+
fieldsUnavailable: [],
|
|
419
|
+
notes,
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=govinfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"govinfo.js","sourceRoot":"","sources":["../src/govinfo.ts"],"names":[],"mappings":"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"}
|