@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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* datagovKey.ts — the SHARED api.data.gov KEY seam (ADR-0010 §2).
|
|
3
|
+
*
|
|
4
|
+
* These api.data.gov key helpers were originally module-private in `datagov.ts`
|
|
5
|
+
* (ADR-0007, the FIRST keyed source). GovInfo (ADR-0010) is the SECOND consumer
|
|
6
|
+
* of the identical DATA_GOV_API_KEY / DEMO_KEY / X-Api-Key discipline, which is
|
|
7
|
+
* the trigger to promote the helper to a single audited home — the exact
|
|
8
|
+
* `coerce.ts` precedent applied to a SECRET: a leak-discipline regression must now
|
|
9
|
+
* fail BOTH consumers' key-never-leaks tests at once, not hide in one of two
|
|
10
|
+
* drifting copies. `datagov.ts` AND `govinfo.ts` each import from here; NEITHER
|
|
11
|
+
* imports the other.
|
|
12
|
+
*
|
|
13
|
+
* This extraction is BEHAVIOR BYTE-IDENTICAL to the prior inlined `datagov.ts`
|
|
14
|
+
* code — these are pure functions that read `process.env` at CALL time, so moving
|
|
15
|
+
* them changes nothing (datagov's key handling, `_meta`, tools/list snapshot, and
|
|
16
|
+
* its key-never-leaks K-test all stay green; the K-test spies on the GLOBAL
|
|
17
|
+
* `fetch`, which is unaffected by this move).
|
|
18
|
+
*
|
|
19
|
+
* ★ THE KEY-SECURITY DISCIPLINE (ADR-0007 §2 — the load-bearing rules):
|
|
20
|
+
* 1. The key travels in `headers:{ "X-Api-Key": <key> }` ONLY — NEVER in the
|
|
21
|
+
* URL/query (no `?api_key=`).
|
|
22
|
+
* 2. `_meta.source`/`notes` are host + key-MODE only ("…(DEMO_KEY)" /
|
|
23
|
+
* "…(DATA_GOV_API_KEY)") — never the URL, never the key value, never the
|
|
24
|
+
* `X-Api-Key` header.
|
|
25
|
+
* 3. Never commit the key — read from env only; the DEMO_KEY fallback is a
|
|
26
|
+
* literal public constant (safe in source), the real key never is.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// ─── Key resolver (the load-bearing secret discipline) ────────────
|
|
30
|
+
// The key is read from env; if unset/empty it falls back to the public literal
|
|
31
|
+
// "DEMO_KEY". `keyHeader()` is the ONLY place the value is used — it is placed in
|
|
32
|
+
// the `X-Api-Key` request header and NOWHERE else (never the URL, never the label,
|
|
33
|
+
// never `_meta`, never a log).
|
|
34
|
+
const DEMO_KEY = "DEMO_KEY";
|
|
35
|
+
|
|
36
|
+
function resolvedKey(): string {
|
|
37
|
+
const raw = process.env.DATA_GOV_API_KEY;
|
|
38
|
+
const trimmed = typeof raw === "string" ? raw.trim() : "";
|
|
39
|
+
return trimmed ? trimmed : DEMO_KEY;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** The X-Api-Key header — the ONLY carrier of the secret. Never logged/echoed. */
|
|
43
|
+
export function keyHeader(): Record<string, string> {
|
|
44
|
+
return { "X-Api-Key": resolvedKey() };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** true when no real DATA_GOV_API_KEY is configured (drives the disclosure note). */
|
|
48
|
+
export function usingDemoKey(): boolean {
|
|
49
|
+
const raw = process.env.DATA_GOV_API_KEY;
|
|
50
|
+
return !(typeof raw === "string" && raw.trim());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Key-MODE label for `_meta.source` — the MODE, never the value. */
|
|
54
|
+
export function keyModeLabel(): string {
|
|
55
|
+
return usingDemoKey() ? "DEMO_KEY" : "DATA_GOV_API_KEY";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// The DEMO_KEY disclosure (m4-note: NO hardcoded verification date — "approximately
|
|
59
|
+
// 10 requests/hour", not a pinned date).
|
|
60
|
+
const DEMO_KEY_NOTE =
|
|
61
|
+
"Using the shared api.data.gov DEMO_KEY — approximately 10 requests/hour, shared across all DEMO_KEY callers (limits reached quickly). Set DATA_GOV_API_KEY for production; free key at https://api.data.gov/signup/.";
|
|
62
|
+
const CONFIGURED_KEY_NOTE =
|
|
63
|
+
"Using a configured DATA_GOV_API_KEY (value never logged).";
|
|
64
|
+
|
|
65
|
+
/** Push the key-mode disclosure note (DEMO_KEY ceiling OR configured-key). */
|
|
66
|
+
export function pushKeyNote(notes: string[]): void {
|
|
67
|
+
notes.push(usingDemoKey() ? DEMO_KEY_NOTE : CONFIGURED_KEY_NOTE);
|
|
68
|
+
}
|