@cliwant/mcp-sam-gov 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.ja.md +11 -11
  2. package/README.ko.md +11 -11
  3. package/README.md +21 -13
  4. package/dist/cbp-border.d.ts +51 -0
  5. package/dist/cbp-border.d.ts.map +1 -0
  6. package/dist/cbp-border.js +123 -0
  7. package/dist/cbp-border.js.map +1 -0
  8. package/dist/datagov-catalog.d.ts.map +1 -1
  9. package/dist/datagov-catalog.js +16 -2
  10. package/dist/datagov-catalog.js.map +1 -1
  11. package/dist/ecfr.d.ts +2 -2
  12. package/dist/ecfr.d.ts.map +1 -1
  13. package/dist/ecfr.js +24 -10
  14. package/dist/ecfr.js.map +1 -1
  15. package/dist/edgar.d.ts.map +1 -1
  16. package/dist/edgar.js +26 -6
  17. package/dist/edgar.js.map +1 -1
  18. package/dist/epa-envirofacts.d.ts.map +1 -1
  19. package/dist/epa-envirofacts.js +14 -1
  20. package/dist/epa-envirofacts.js.map +1 -1
  21. package/dist/errors.d.ts.map +1 -1
  22. package/dist/errors.js +11 -0
  23. package/dist/errors.js.map +1 -1
  24. package/dist/far.d.ts.map +1 -1
  25. package/dist/far.js +3 -1
  26. package/dist/far.js.map +1 -1
  27. package/dist/federal-register.d.ts +2 -2
  28. package/dist/federal-register.d.ts.map +1 -1
  29. package/dist/federal-register.js +26 -10
  30. package/dist/federal-register.js.map +1 -1
  31. package/dist/fema.d.ts +36 -0
  32. package/dist/fema.d.ts.map +1 -1
  33. package/dist/fema.js +124 -0
  34. package/dist/fema.js.map +1 -1
  35. package/dist/gov-domains.d.ts +66 -0
  36. package/dist/gov-domains.d.ts.map +1 -0
  37. package/dist/gov-domains.js +211 -0
  38. package/dist/gov-domains.js.map +1 -0
  39. package/dist/nist-controls.d.ts +48 -0
  40. package/dist/nist-controls.d.ts.map +1 -0
  41. package/dist/nist-controls.js +174 -0
  42. package/dist/nist-controls.js.map +1 -0
  43. package/dist/nws-weather.d.ts +57 -0
  44. package/dist/nws-weather.d.ts.map +1 -0
  45. package/dist/nws-weather.js +131 -0
  46. package/dist/nws-weather.js.map +1 -0
  47. package/dist/openfda-drugsfda.d.ts +72 -0
  48. package/dist/openfda-drugsfda.d.ts.map +1 -0
  49. package/dist/openfda-drugsfda.js +230 -0
  50. package/dist/openfda-drugsfda.js.map +1 -0
  51. package/dist/openfda.d.ts.map +1 -1
  52. package/dist/openfda.js +31 -8
  53. package/dist/openfda.js.map +1 -1
  54. package/dist/server.d.ts.map +1 -1
  55. package/dist/server.js +331 -10
  56. package/dist/server.js.map +1 -1
  57. package/dist/treasury.d.ts +2 -0
  58. package/dist/treasury.d.ts.map +1 -1
  59. package/dist/treasury.js +7 -0
  60. package/dist/treasury.js.map +1 -1
  61. package/dist/usaspending.d.ts +32 -1
  62. package/dist/usaspending.d.ts.map +1 -1
  63. package/dist/usaspending.js +143 -16
  64. package/dist/usaspending.js.map +1 -1
  65. package/package.json +2 -2
  66. package/src/cbp-border.ts +177 -0
  67. package/src/datagov-catalog.ts +18 -2
  68. package/src/ecfr.ts +27 -10
  69. package/src/edgar.ts +39 -7
  70. package/src/epa-envirofacts.ts +17 -1
  71. package/src/errors.ts +11 -0
  72. package/src/far.ts +3 -1
  73. package/src/federal-register.ts +29 -10
  74. package/src/fema.ts +139 -0
  75. package/src/gov-domains.ts +237 -0
  76. package/src/nist-controls.ts +219 -0
  77. package/src/nws-weather.ts +167 -0
  78. package/src/openfda-drugsfda.ts +313 -0
  79. package/src/openfda.ts +30 -7
  80. package/src/server.ts +352 -10
  81. package/src/treasury.ts +7 -0
  82. package/src/usaspending.ts +189 -17
package/dist/fema.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fema.js","sourceRoot":"","sources":["../src/fema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fema.js","sourceRoot":"","sources":["../src/fema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * get.gov — the authoritative US .gov domain registry (CISA). KEYLESS.
3
+ *
4
+ * The .gov program (run by CISA) publishes the COMPLETE registry as CSVs in its
5
+ * official repo github.com/cisagov/dotgov-data — the canonical published location
6
+ * (get.gov links there; there is no query API for the full set). It is NOT a .gov
7
+ * API host, so provenance is disclosed on every response (the ProPublica /
8
+ * CourtListener republisher pattern — except here CISA is the first-party registrar).
9
+ *
10
+ * B2G value: resolve WHICH organization owns a .gov domain, enumerate federal
11
+ * agencies, and MAP SLED entities (state / county / city / school-district /
12
+ * special-district / tribal) for market targeting — a distinct authoritative
13
+ * gov-org registry no other tool here exposes.
14
+ *
15
+ * SSRF: fixed host `raw.githubusercontent.com` + fixed path prefix
16
+ * `/cisagov/dotgov-data/main/` + a scope-selected FIXED filename (federal | full) —
17
+ * no free host, path, or filename. `redirect:"error"` on the fetch.
18
+ *
19
+ * PII: the CSV carries a "Security contact email" column (an ORG security mailbox,
20
+ * e.g. security@agency.gov). We DROP it — this tool resolves ORGANIZATIONS, not
21
+ * contacts, and excluding it keeps the output free of contact info.
22
+ *
23
+ * Filtering is CLIENT-SIDE over the full published CSV (the registry has no query
24
+ * API) — disclosed in `_meta.notes`. `totalAvailable` is the EXACT match count.
25
+ */
26
+ import { type MetaBundle } from "./meta.js";
27
+ export declare const DOTGOV_HOST = "raw.githubusercontent.com";
28
+ declare const DOTGOV_FILES: {
29
+ readonly all: "current-full.csv";
30
+ readonly federal: "current-federal.csv";
31
+ };
32
+ export type GovDomainScope = keyof typeof DOTGOV_FILES;
33
+ export type GovDomainRow = {
34
+ domain: string;
35
+ domainType: string;
36
+ organization: string;
37
+ suborganization: string | null;
38
+ city: string | null;
39
+ state: string | null;
40
+ };
41
+ /**
42
+ * Parse a full CSV document into rows of string fields. Handles double-quoted
43
+ * fields, escaped `""` quotes, and commas/newlines INSIDE quotes. Self-contained
44
+ * (no external dep) — the get.gov CSV is small (~1.4 MB) so a whole-string parse is
45
+ * fine. Returns every record's raw field array (including the header row).
46
+ */
47
+ export declare function parseCsv(text: string): string[][];
48
+ /**
49
+ * Search the CISA get.gov .gov domain registry. Client-side filters over the
50
+ * published CSV: organization/domain/city are case-insensitive SUBSTRING matches;
51
+ * state (2-letter) and domainType are case-insensitive. scope 'all' (federal + SLED,
52
+ * default) | 'federal'. Honest `_meta` (exact match total; provenance + client-side
53
+ * disclosure).
54
+ */
55
+ export declare function searchGovDomains(args: {
56
+ scope?: GovDomainScope;
57
+ organization?: string;
58
+ domain?: string;
59
+ domainType?: string;
60
+ state?: string;
61
+ city?: string;
62
+ limit?: number;
63
+ offset?: number;
64
+ }): Promise<MetaBundle>;
65
+ export {};
66
+ //# sourceMappingURL=gov-domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gov-domains.d.ts","sourceRoot":"","sources":["../src/gov-domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEzE,eAAO,MAAM,WAAW,8BAA8B,CAAC;AAKvD,QAAA,MAAM,YAAY;;;CAGR,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAYvD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAGF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAwCjD;AA8DD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkDtB"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * get.gov — the authoritative US .gov domain registry (CISA). KEYLESS.
3
+ *
4
+ * The .gov program (run by CISA) publishes the COMPLETE registry as CSVs in its
5
+ * official repo github.com/cisagov/dotgov-data — the canonical published location
6
+ * (get.gov links there; there is no query API for the full set). It is NOT a .gov
7
+ * API host, so provenance is disclosed on every response (the ProPublica /
8
+ * CourtListener republisher pattern — except here CISA is the first-party registrar).
9
+ *
10
+ * B2G value: resolve WHICH organization owns a .gov domain, enumerate federal
11
+ * agencies, and MAP SLED entities (state / county / city / school-district /
12
+ * special-district / tribal) for market targeting — a distinct authoritative
13
+ * gov-org registry no other tool here exposes.
14
+ *
15
+ * SSRF: fixed host `raw.githubusercontent.com` + fixed path prefix
16
+ * `/cisagov/dotgov-data/main/` + a scope-selected FIXED filename (federal | full) —
17
+ * no free host, path, or filename. `redirect:"error"` on the fetch.
18
+ *
19
+ * PII: the CSV carries a "Security contact email" column (an ORG security mailbox,
20
+ * e.g. security@agency.gov). We DROP it — this tool resolves ORGANIZATIONS, not
21
+ * contacts, and excluding it keeps the output free of contact info.
22
+ *
23
+ * Filtering is CLIENT-SIDE over the full published CSV (the registry has no query
24
+ * API) — disclosed in `_meta.notes`. `totalAvailable` is the EXACT match count.
25
+ */
26
+ import { getText } from "./datasource.js";
27
+ import { driftError } from "./datasource.js";
28
+ import { memoize } from "./cache.js";
29
+ import { withMeta } from "./meta.js";
30
+ export const DOTGOV_HOST = "raw.githubusercontent.com";
31
+ const DOTGOV_PATH_PREFIX = "https://raw.githubusercontent.com/cisagov/dotgov-data/main/";
32
+ // scope → the pinned filename (no free path). "all" = federal + SLED (~16k rows),
33
+ // "federal" = federal only (~1.3k rows).
34
+ const DOTGOV_FILES = {
35
+ all: "current-full.csv",
36
+ federal: "current-federal.csv",
37
+ };
38
+ const SOURCE_LABEL = "getgov:cisagov/dotgov-data";
39
+ const PROVENANCE_NOTE = "Source: the CISA get.gov OFFICIAL .gov domain registry, published as CSV at github.com/cisagov/dotgov-data (the canonical location; get.gov links there). CISA is the first-party .gov registrar; this is authoritative public data served from GitHub, not a .gov API host.";
40
+ const CLIENT_FILTER_NOTE = "The registry has no query API — the full published CSV is fetched and filtered CLIENT-SIDE (organization/domain/city are case-insensitive SUBSTRING matches; state/domainType are case-insensitive). totalAvailable is the EXACT count of matching rows.";
41
+ const FRESHNESS_NOTE = "The CISA dotgov-data CSV is refreshed ~daily; this response reflects the currently-published snapshot (served from a 6-hour cache).";
42
+ const EMAIL_DROP_NOTE = "The registry's 'Security contact email' column (an organization security mailbox) is intentionally EXCLUDED — this tool resolves organizations, not contacts.";
43
+ // ─── Minimal RFC-4180 CSV parser (quoted fields + embedded commas/newlines) ──
44
+ /**
45
+ * Parse a full CSV document into rows of string fields. Handles double-quoted
46
+ * fields, escaped `""` quotes, and commas/newlines INSIDE quotes. Self-contained
47
+ * (no external dep) — the get.gov CSV is small (~1.4 MB) so a whole-string parse is
48
+ * fine. Returns every record's raw field array (including the header row).
49
+ */
50
+ export function parseCsv(text) {
51
+ const rows = [];
52
+ let field = "";
53
+ let row = [];
54
+ let inQuotes = false;
55
+ for (let i = 0; i < text.length; i++) {
56
+ const c = text[i];
57
+ if (inQuotes) {
58
+ if (c === '"') {
59
+ if (text[i + 1] === '"') {
60
+ field += '"';
61
+ i++; // consume the escaped quote
62
+ }
63
+ else {
64
+ inQuotes = false;
65
+ }
66
+ }
67
+ else {
68
+ field += c;
69
+ }
70
+ }
71
+ else if (c === '"') {
72
+ inQuotes = true;
73
+ }
74
+ else if (c === ",") {
75
+ row.push(field);
76
+ field = "";
77
+ }
78
+ else if (c === "\n") {
79
+ row.push(field);
80
+ rows.push(row);
81
+ row = [];
82
+ field = "";
83
+ }
84
+ else if (c === "\r") {
85
+ // CRLF: the \n case pushes the record; ignore the stray CR.
86
+ }
87
+ else {
88
+ field += c;
89
+ }
90
+ }
91
+ // Flush a trailing field/row if the file did not end with a newline.
92
+ if (field.length > 0 || row.length > 0) {
93
+ row.push(field);
94
+ rows.push(row);
95
+ }
96
+ return rows;
97
+ }
98
+ /** Coerce a CSV field to a trimmed non-empty string, else null (never ""). */
99
+ function s(v) {
100
+ if (v === undefined)
101
+ return null;
102
+ const t = v.trim();
103
+ return t.length > 0 ? t : null;
104
+ }
105
+ /**
106
+ * Fetch + parse ONE scope's registry CSV into rows, memoized ~6h. Header-mapped by
107
+ * COLUMN NAME (not fixed index) so an upstream column reorder does not silently
108
+ * mis-map; a missing required header ⇒ schema_drift (never a fake-empty). The
109
+ * "Security contact email" column is dropped at the map step.
110
+ */
111
+ async function loadRegistry(scope) {
112
+ return memoize(`getgov:${scope}`, async () => {
113
+ const url = `${DOTGOV_PATH_PREFIX}${DOTGOV_FILES[scope]}`;
114
+ // Belt-and-suspenders SSRF: the URL is built only from the pinned prefix +
115
+ // pinned filename, but assert it before the fetch.
116
+ const built = new URL(url);
117
+ if (built.hostname !== DOTGOV_HOST || built.protocol !== "https:") {
118
+ throw driftError(SOURCE_LABEL, `Constructed get.gov URL host ${JSON.stringify(built.hostname)} is not ${DOTGOV_HOST} over https — refusing to fetch (SSRF safety).`);
119
+ }
120
+ const text = await getText(url, { label: SOURCE_LABEL, redirect: "error", timeoutMs: 20_000 });
121
+ const rows = parseCsv(text);
122
+ const headerRow = rows[0];
123
+ if (!headerRow) {
124
+ throw driftError(SOURCE_LABEL, "get.gov registry CSV was empty — treating as schema drift, never a fake-empty result.");
125
+ }
126
+ const header = headerRow.map((h) => h.trim());
127
+ const idx = (name) => header.indexOf(name);
128
+ const iDomain = idx("Domain name");
129
+ const iType = idx("Domain type");
130
+ const iOrg = idx("Organization name");
131
+ const iSub = idx("Suborganization name");
132
+ const iCity = idx("City");
133
+ const iState = idx("State");
134
+ // The four load-bearing columns MUST be present (a rename ⇒ schema drift, not a
135
+ // silently mis-mapped/empty result).
136
+ if (iDomain < 0 || iType < 0 || iOrg < 0) {
137
+ throw driftError(SOURCE_LABEL, `get.gov registry CSV header is missing a required column (Domain name / Domain type / Organization name) — schema drift. Got: ${header.join(", ")}.`);
138
+ }
139
+ return rows.slice(1).map((r) => ({
140
+ domain: (r[iDomain] ?? "").trim(),
141
+ domainType: (r[iType] ?? "").trim(),
142
+ organization: (r[iOrg] ?? "").trim(),
143
+ suborganization: iSub >= 0 ? s(r[iSub]) : null,
144
+ city: iCity >= 0 ? s(r[iCity]) : null,
145
+ state: iState >= 0 ? s(r[iState]) : null,
146
+ // NOTE: "Security contact email" is deliberately NOT read/emitted.
147
+ }));
148
+ });
149
+ }
150
+ // ─── Tool: search_gov_domains ─────────────────────────────────────
151
+ /**
152
+ * Search the CISA get.gov .gov domain registry. Client-side filters over the
153
+ * published CSV: organization/domain/city are case-insensitive SUBSTRING matches;
154
+ * state (2-letter) and domainType are case-insensitive. scope 'all' (federal + SLED,
155
+ * default) | 'federal'. Honest `_meta` (exact match total; provenance + client-side
156
+ * disclosure).
157
+ */
158
+ export async function searchGovDomains(args) {
159
+ const scope = args.scope ?? "all";
160
+ const limit = args.limit ?? 50;
161
+ const offset = args.offset ?? 0;
162
+ const all = await loadRegistry(scope);
163
+ const filtersApplied = [];
164
+ const ci = (v) => (v ?? "").toLowerCase();
165
+ const orgQ = ci(args.organization);
166
+ const domQ = ci(args.domain);
167
+ const typeQ = ci(args.domainType);
168
+ const stateQ = ci(args.state);
169
+ const cityQ = ci(args.city);
170
+ if (args.organization !== undefined)
171
+ filtersApplied.push("organization");
172
+ if (args.domain !== undefined)
173
+ filtersApplied.push("domain");
174
+ if (args.domainType !== undefined)
175
+ filtersApplied.push("domainType");
176
+ if (args.state !== undefined)
177
+ filtersApplied.push("state");
178
+ if (args.city !== undefined)
179
+ filtersApplied.push("city");
180
+ const matched = all.filter((row) => {
181
+ if (orgQ && !row.organization.toLowerCase().includes(orgQ))
182
+ return false;
183
+ if (domQ && !row.domain.toLowerCase().includes(domQ))
184
+ return false;
185
+ if (typeQ && !row.domainType.toLowerCase().includes(typeQ))
186
+ return false;
187
+ if (stateQ && (row.state ?? "").toLowerCase() !== stateQ)
188
+ return false;
189
+ if (cityQ && !(row.city ?? "").toLowerCase().includes(cityQ))
190
+ return false;
191
+ return true;
192
+ });
193
+ const totalAvailable = matched.length;
194
+ const page = matched.slice(offset, offset + limit);
195
+ const returned = page.length;
196
+ const hasMore = offset + returned < totalAvailable;
197
+ const nextOffset = hasMore ? offset + returned : null;
198
+ return withMeta({ scope, domains: page }, {
199
+ source: `getgov ${DOTGOV_FILES[scope]} (CISA .gov registry, keyless)`,
200
+ keylessMode: true,
201
+ returned,
202
+ totalAvailable,
203
+ truncated: hasMore,
204
+ filtersApplied,
205
+ filtersDropped: [],
206
+ fieldsUnavailable: ["securityContactEmail (org mailbox — intentionally excluded)"],
207
+ pagination: { offset, limit, hasMore, nextOffset },
208
+ notes: [PROVENANCE_NOTE, CLIENT_FILTER_NOTE, FRESHNESS_NOTE, EMAIL_DROP_NOTE],
209
+ });
210
+ }
211
+ //# sourceMappingURL=gov-domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gov-domains.js","sourceRoot":"","sources":["../src/gov-domains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * nist-controls.ts — NIST SP 800-53 Rev 5 security & privacy CONTROLS catalog
3
+ * (OSCAL, keyless). The cyber-compliance controls backbone for FedRAMP / CMMC / RMF
4
+ * work: look up a control (AC-2, SC-7, …) or a family (Access Control, System &
5
+ * Communications Protection, …) and get its title, requirement STATEMENT, discussion
6
+ * guidance, and control enhancements. No other tool here exposes the controls catalog
7
+ * (we have NVD CVEs + CISA KEV, but not the requirement side).
8
+ *
9
+ * SOURCE: NIST's OFFICIAL OSCAL content, published at github.com/usnistgov/oscal-content
10
+ * (the canonical machine-readable release; the .gov PDF is the human copy). NOT a
11
+ * .gov API host, so provenance is disclosed on every response (the ProPublica /
12
+ * CourtListener / get.gov republisher idiom — here NIST is the first-party author).
13
+ *
14
+ * PATTERN: the CISA-KEV static-file idiom (nvd.ts) — a fixed-host const URL fetched
15
+ * via getJson (redirect:"error" + 30s timeout), memoized 6h, with a plausibility
16
+ * FLOOR (a truncated catalog must NEVER read as "control not found"), then
17
+ * client-side filter/lookup. An outage/4xx/timeout THROWS (never a fake empty).
18
+ *
19
+ * SSRF: fixed host `raw.githubusercontent.com` + a fixed, pinned path (no free
20
+ * host/path). Filtering is CLIENT-SIDE over the parsed catalog.
21
+ */
22
+ import { type MetaBundle } from "./meta.js";
23
+ export declare const OSCAL_HOST = "raw.githubusercontent.com";
24
+ export type NistControl = {
25
+ id: string;
26
+ family: string;
27
+ title: string;
28
+ statement: string;
29
+ guidance: string | null;
30
+ enhancements: {
31
+ id: string;
32
+ title: string;
33
+ }[];
34
+ };
35
+ /**
36
+ * Look up NIST SP 800-53 Rev 5 controls by controlId (exact, e.g. "AC-2"), family
37
+ * (exact family letter or name, e.g. "AC" / "Access Control"), and/or keyword
38
+ * (case-insensitive substring over title + statement). Client-side filters over the
39
+ * cached OSCAL catalog; honest `_meta` (exact match total; provenance disclosed).
40
+ */
41
+ export declare function searchControls(args: {
42
+ controlId?: string;
43
+ family?: string;
44
+ keyword?: string;
45
+ limit?: number;
46
+ offset?: number;
47
+ }): Promise<MetaBundle>;
48
+ //# sourceMappingURL=nist-controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nist-controls.d.ts","sourceRoot":"","sources":["../src/nist-controls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEzE,eAAO,MAAM,UAAU,8BAA8B,CAAC;AAkBtD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C,CAAC;AAsGF;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDtB"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * nist-controls.ts — NIST SP 800-53 Rev 5 security & privacy CONTROLS catalog
3
+ * (OSCAL, keyless). The cyber-compliance controls backbone for FedRAMP / CMMC / RMF
4
+ * work: look up a control (AC-2, SC-7, …) or a family (Access Control, System &
5
+ * Communications Protection, …) and get its title, requirement STATEMENT, discussion
6
+ * guidance, and control enhancements. No other tool here exposes the controls catalog
7
+ * (we have NVD CVEs + CISA KEV, but not the requirement side).
8
+ *
9
+ * SOURCE: NIST's OFFICIAL OSCAL content, published at github.com/usnistgov/oscal-content
10
+ * (the canonical machine-readable release; the .gov PDF is the human copy). NOT a
11
+ * .gov API host, so provenance is disclosed on every response (the ProPublica /
12
+ * CourtListener / get.gov republisher idiom — here NIST is the first-party author).
13
+ *
14
+ * PATTERN: the CISA-KEV static-file idiom (nvd.ts) — a fixed-host const URL fetched
15
+ * via getJson (redirect:"error" + 30s timeout), memoized 6h, with a plausibility
16
+ * FLOOR (a truncated catalog must NEVER read as "control not found"), then
17
+ * client-side filter/lookup. An outage/4xx/timeout THROWS (never a fake empty).
18
+ *
19
+ * SSRF: fixed host `raw.githubusercontent.com` + a fixed, pinned path (no free
20
+ * host/path). Filtering is CLIENT-SIDE over the parsed catalog.
21
+ */
22
+ import { getJson, driftError } from "./datasource.js";
23
+ import { memoize } from "./cache.js";
24
+ import { withMeta } from "./meta.js";
25
+ export const OSCAL_HOST = "raw.githubusercontent.com";
26
+ const OSCAL_URL = "https://raw.githubusercontent.com/usnistgov/oscal-content/main/nist.gov/SP800-53/rev5/json/NIST_SP-800-53_rev5_catalog.json";
27
+ const OSCAL_LABEL = "nist-oscal:sp800-53r5";
28
+ const OSCAL_TIMEOUT_MS = 30_000;
29
+ const OSCAL_CACHE_TTL_MS = 6 * 60 * 60 * 1000;
30
+ // Plausibility floor: 800-53 Rev5 has 20 control families and ~1000 controls. A
31
+ // truncated catalog with far fewer must THROW, never read as "control not found".
32
+ const FAMILY_FLOOR = 15;
33
+ const PROVENANCE_NOTE = "Source: NIST SP 800-53 Rev 5 OSCAL catalog, published at github.com/usnistgov/oscal-content (NIST's canonical machine-readable release; authoritative first-party data served from GitHub, not a .gov API host).";
34
+ const CLIENT_FILTER_NOTE = "The catalog has no query API — the full published OSCAL JSON is fetched (cached 6h) and filtered CLIENT-SIDE (controlId exact, family exact, keyword = case-insensitive substring over title+statement). totalAvailable is the EXACT match count.";
35
+ const REFERENCE_NOTE = "This is the REQUIREMENT catalog (control text), NOT an assessment or an authorization. A control's applicability depends on the system's FIPS-199 impact baseline (Low/Moderate/High) and overlay — which this catalog does not encode.";
36
+ /** OSCAL control id ("ac-2", "ac-2.1") → display id ("AC-2", "AC-2(1)"). */
37
+ function displayId(rawId) {
38
+ const m = /^([a-z]+)-(\d+)(?:\.(\d+))?$/i.exec(rawId.trim());
39
+ if (!m)
40
+ return rawId.toUpperCase();
41
+ const fam = (m[1] ?? "").toUpperCase();
42
+ // Strip leading zeros so a zero-padded input ('AC-02') normalizes to the catalog's
43
+ // canonical unpadded form ('AC-2') — else an exact controlId lookup would miss.
44
+ const num = String(Number(m[2] ?? "0"));
45
+ const enh = m[3] !== undefined ? String(Number(m[3])) : undefined;
46
+ return enh !== undefined ? `${fam}-${num}(${enh})` : `${fam}-${num}`;
47
+ }
48
+ /** Recursively collect a statement part's prose as labelled, indented lines. */
49
+ function collectProse(part, depth, out) {
50
+ const label = part.props?.find((p) => p.name === "label")?.value;
51
+ const indent = " ".repeat(depth);
52
+ const prefix = label ? `${label} ` : "";
53
+ if (part.prose && part.prose.trim().length > 0) {
54
+ out.push(`${indent}${prefix}${part.prose.trim()}`);
55
+ }
56
+ else if (label) {
57
+ out.push(`${indent}${prefix}`.trimEnd());
58
+ }
59
+ for (const sub of part.parts ?? [])
60
+ collectProse(sub, depth + 1, out);
61
+ }
62
+ function partProse(control, name) {
63
+ const part = (control.parts ?? []).find((p) => p.name === name);
64
+ if (!part)
65
+ return null;
66
+ const out = [];
67
+ collectProse(part, 0, out);
68
+ const text = out.join("\n").trim();
69
+ return text.length > 0 ? text : null;
70
+ }
71
+ function mapControl(control, family) {
72
+ return {
73
+ id: displayId(control.id ?? ""),
74
+ family,
75
+ title: (control.title ?? "").trim(),
76
+ statement: partProse(control, "statement") ?? "",
77
+ guidance: partProse(control, "guidance"),
78
+ enhancements: (control.controls ?? []).map((e) => ({
79
+ id: displayId(e.id ?? ""),
80
+ title: (e.title ?? "").trim(),
81
+ })),
82
+ };
83
+ }
84
+ /**
85
+ * Fetch + parse the OSCAL catalog into a flat list of TOP-LEVEL controls, memoized
86
+ * 6h. Header/shape guarded: `catalog.groups` MUST be an array with ≥ FAMILY_FLOOR
87
+ * families (else driftError — a truncated catalog is NEVER a fake empty). Enhancements
88
+ * are carried on each control (not indexed as top-level entries).
89
+ */
90
+ async function loadControls() {
91
+ return memoize("nist:sp800-53r5", async () => {
92
+ const built = new URL(OSCAL_URL);
93
+ if (built.hostname !== OSCAL_HOST || built.protocol !== "https:") {
94
+ throw driftError(OSCAL_LABEL, `Constructed OSCAL URL host ${JSON.stringify(built.hostname)} is not ${OSCAL_HOST} over https — refusing to fetch (SSRF safety).`);
95
+ }
96
+ const body = (await getJson(OSCAL_URL, {
97
+ label: OSCAL_LABEL,
98
+ redirect: "error",
99
+ timeoutMs: OSCAL_TIMEOUT_MS,
100
+ }));
101
+ const groups = body.catalog?.groups;
102
+ if (!Array.isArray(groups) || groups.length < FAMILY_FLOOR) {
103
+ throw driftError(OSCAL_LABEL, `OSCAL catalog.groups missing or implausibly small (${Array.isArray(groups) ? groups.length : "not-an-array"} < ${FAMILY_FLOOR} families) — treating as schema drift / truncation, never a fake-empty catalog.`);
104
+ }
105
+ const controls = [];
106
+ for (const g of groups) {
107
+ const family = `${(g.id ?? "").toUpperCase()} — ${(g.title ?? "").trim()}`;
108
+ for (const c of g.controls ?? [])
109
+ controls.push(mapControl(c, family));
110
+ }
111
+ return controls;
112
+ }, OSCAL_CACHE_TTL_MS);
113
+ }
114
+ // ─── Tool: nist_800_53_controls ───────────────────────────────────
115
+ /**
116
+ * Look up NIST SP 800-53 Rev 5 controls by controlId (exact, e.g. "AC-2"), family
117
+ * (exact family letter or name, e.g. "AC" / "Access Control"), and/or keyword
118
+ * (case-insensitive substring over title + statement). Client-side filters over the
119
+ * cached OSCAL catalog; honest `_meta` (exact match total; provenance disclosed).
120
+ */
121
+ export async function searchControls(args) {
122
+ const limit = args.limit ?? 25;
123
+ const offset = args.offset ?? 0;
124
+ const all = await loadControls();
125
+ const filtersApplied = [];
126
+ const idQ = args.controlId !== undefined ? displayId(args.controlId) : undefined;
127
+ const famQ = args.family?.trim().toLowerCase();
128
+ const kwQ = args.keyword?.trim().toLowerCase();
129
+ if (args.controlId !== undefined)
130
+ filtersApplied.push("controlId");
131
+ if (args.family !== undefined)
132
+ filtersApplied.push("family");
133
+ if (args.keyword !== undefined)
134
+ filtersApplied.push("keyword");
135
+ const matched = all.filter((c) => {
136
+ if (idQ && c.id.toUpperCase() !== idQ.toUpperCase())
137
+ return false;
138
+ if (famQ) {
139
+ // family field is "AC — Access Control"; match either the letter code or a
140
+ // substring of the title (both case-insensitive).
141
+ const fam = c.family.toLowerCase();
142
+ const code = (fam.split("—")[0] ?? "").trim();
143
+ if (code !== famQ && !fam.includes(famQ))
144
+ return false;
145
+ }
146
+ if (kwQ) {
147
+ // Search the title + requirement statement AND each enhancement's title, so a
148
+ // term that lives only in an enhancement (e.g. "multi-factor" → IA-2(1)) still
149
+ // surfaces the parent control. filtersApplied still lists 'keyword'.
150
+ const hay = `${c.title}\n${c.statement}\n${c.enhancements.map((e) => e.title).join("\n")}`.toLowerCase();
151
+ if (!hay.includes(kwQ))
152
+ return false;
153
+ }
154
+ return true;
155
+ });
156
+ const totalAvailable = matched.length;
157
+ const page = matched.slice(offset, offset + limit);
158
+ const returned = page.length;
159
+ const hasMore = offset + returned < totalAvailable;
160
+ const nextOffset = hasMore ? offset + returned : null;
161
+ return withMeta({ controls: page }, {
162
+ source: "NIST SP 800-53 Rev 5 (OSCAL catalog, keyless)",
163
+ keylessMode: true,
164
+ returned,
165
+ totalAvailable,
166
+ truncated: hasMore,
167
+ filtersApplied,
168
+ filtersDropped: [],
169
+ fieldsUnavailable: [],
170
+ pagination: { offset, limit, hasMore, nextOffset },
171
+ notes: [PROVENANCE_NOTE, CLIENT_FILTER_NOTE, REFERENCE_NOTE],
172
+ });
173
+ }
174
+ //# sourceMappingURL=nist-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nist-controls.js","sourceRoot":"","sources":["../src/nist-controls.ts"],"names":[],"mappings":"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"}