@cliwant/mcp-sam-gov 0.3.0 → 1.1.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 +49 -16
- package/README.ko.md +49 -16
- package/README.md +255 -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-economic.d.ts +93 -0
- package/dist/census-economic.d.ts.map +1 -0
- package/dist/census-economic.js +355 -0
- package/dist/census-economic.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 +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/fred.d.ts +108 -0
- package/dist/fred.d.ts.map +1 -0
- package/dist/fred.js +373 -0
- package/dist/fred.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/keys.d.ts +83 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +173 -0
- package/dist/keys.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 +4032 -297
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +115 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +175 -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-economic.ts +425 -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/fred.ts +464 -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/keys.ts +216 -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 +4717 -328
- package/src/snapshot.ts +223 -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/fpds.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fpds.js","sourceRoot":"","sources":["../src/fpds.ts"],"names":[],"mappings":"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"}
|
package/dist/fred.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fred.ts — FRED (Federal Reserve Economic Data, St. Louis Fed) — the MACRO
|
|
3
|
+
* CONTEXT lane (ADR-0048, Wave-4 source #2). GDP · CPI · interest rates ·
|
|
4
|
+
* unemployment · PPI … — the economy-wide backdrop for B2G bid escalation and
|
|
5
|
+
* market-timing that no contract/spending source carries.
|
|
6
|
+
*
|
|
7
|
+
* ★ THIS IS THE SERVER'S SECOND KEY-REQUIRED SOURCE (Census CBP was the first).
|
|
8
|
+
* FRED has NO keyless tier: every request needs `&api_key=`, and a missing/bad
|
|
9
|
+
* key returns HTTP 400 `{error_code, error_message}`. So, honestly: with NO
|
|
10
|
+
* `FRED_API_KEY` these two tools THROW an `invalid_input` config error BEFORE any
|
|
11
|
+
* fetch (never a fake-empty, never a keyless-pretend). The other 112 tools stay
|
|
12
|
+
* keyless — this key is scoped to this one source. (Contrast the OPTIONAL keys of
|
|
13
|
+
* datagov/bls/nvd, which lift a tier but are not required.)
|
|
14
|
+
*
|
|
15
|
+
* This module MIRRORS the census-economic.ts optional-key precedent: a `fredApiKey()`
|
|
16
|
+
* env seam, a pre-fetch `invalid_input` THROW when unset, the fixed-host SSRF assert
|
|
17
|
+
* + `redirect:"error"`, and the missing-sentinel→null idiom (Census's negative
|
|
18
|
+
* suppression sentinel there; FRED's `value === "."` here — the BLS `"-"` lineage).
|
|
19
|
+
* It writes ZERO coercion/meta code of its own: it REUSES `getJson` (the shared
|
|
20
|
+
* fetch envelope) / `driftError` / `num`·`str` (coerce.ts, null-never-0/empty) /
|
|
21
|
+
* `withMeta`·`buildMeta` (offset pagination via count-exact totals).
|
|
22
|
+
*
|
|
23
|
+
* GET https://api.stlouisfed.org/fred/series/search
|
|
24
|
+
* ?search_text=<q>&limit=&offset=&api_key=<KEY>&file_type=json
|
|
25
|
+
* → { seriess:[{ id,title,frequency,frequency_short,units,seasonal_adjustment,
|
|
26
|
+
* observation_start,observation_end,last_updated,popularity,notes }],
|
|
27
|
+
* count, limit, offset }
|
|
28
|
+
*
|
|
29
|
+
* GET https://api.stlouisfed.org/fred/series/observations
|
|
30
|
+
* ?series_id=<id>&observation_start=&observation_end=&limit=&offset=
|
|
31
|
+
* &sort_order=&api_key=<KEY>&file_type=json
|
|
32
|
+
* → { observations:[{ date, value }], count, … } ★value === "." ⇒ missing (null)
|
|
33
|
+
*
|
|
34
|
+
* ★ HONESTY (ADR-0048 P1–P5):
|
|
35
|
+
* [KEY] no key ⇒ invalid_input THROW pre-fetch (0 fetch); the message names
|
|
36
|
+
* FRED_API_KEY + the free-signup URL. A 400 carrying `{error_message}` (a
|
|
37
|
+
* bad series_id / expired key) ⇒ reclassified to invalid_input CARRYING the
|
|
38
|
+
* FRED error_message — honestly reported, never a fake empty.
|
|
39
|
+
* [P1] both endpoints report `count` (the total) ⇒ totalAvailable = num(count)
|
|
40
|
+
* EXACT; offset pagination (hasMore = offset+returned < count, nextOffset).
|
|
41
|
+
* NEVER fabricated (RED if totalAvailable = returned).
|
|
42
|
+
* [P3] ★the missing crux: an observation `value === "."` ⇒ **null** (FRED's
|
|
43
|
+
* missing sentinel — the BLS `"-"` lineage), NEVER 0. A genuine "0" ⇒ 0.
|
|
44
|
+
* [P2] a 400 ⇒ invalid_input (carrying error_message); a genuine no-match
|
|
45
|
+
* (seriess:[] / observations:[]) ⇒ honest empty; a 5xx ⇒ upstream_unavailable
|
|
46
|
+
* THROW; a 200 non-JSON ⇒ schema_drift.
|
|
47
|
+
* [P4] a body whose `seriess` / `observations` is absent or non-array ⇒ driftError
|
|
48
|
+
* (never a fabricated empty).
|
|
49
|
+
* [SSRF] fixed host `api.stlouisfed.org`; `series_id` charclass `^[A-Za-z0-9._-]+$`;
|
|
50
|
+
* dates `^\d{4}-\d{2}-\d{2}$`; sort_order enum {asc,desc}. All VALUES ride
|
|
51
|
+
* URLSearchParams; the key rides `&api_key=` ONLY — never a label/_meta/note
|
|
52
|
+
* (the K-test).
|
|
53
|
+
*/
|
|
54
|
+
import { num } from "./coerce.js";
|
|
55
|
+
import { type MetaBundle } from "./meta.js";
|
|
56
|
+
export { num };
|
|
57
|
+
export declare const FRED_HOST = "api.stlouisfed.org";
|
|
58
|
+
/** Read FRED_API_KEY from env; trim; return the value or undefined (unset/blank). */
|
|
59
|
+
export declare function fredApiKey(): string | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* num(), but map FRED's missing-observation sentinel `"."` → null (missing). A
|
|
62
|
+
* genuine "0" stays 0 (num("0") === 0); a real numeric string parses. This is the
|
|
63
|
+
* BLS `"-"` lineage — a data-absence marker, never a fabricated 0.
|
|
64
|
+
*/
|
|
65
|
+
export declare function fredValue(v: unknown): number | null;
|
|
66
|
+
export type FredSearchSeriesArgs = {
|
|
67
|
+
query?: string;
|
|
68
|
+
limit?: number;
|
|
69
|
+
offset?: number;
|
|
70
|
+
};
|
|
71
|
+
export type FredSeries = {
|
|
72
|
+
id: string | null;
|
|
73
|
+
title: string | null;
|
|
74
|
+
frequency: string | null;
|
|
75
|
+
frequencyShort: string | null;
|
|
76
|
+
units: string | null;
|
|
77
|
+
seasonalAdjustment: string | null;
|
|
78
|
+
observationStart: string | null;
|
|
79
|
+
observationEnd: string | null;
|
|
80
|
+
lastUpdated: string | null;
|
|
81
|
+
popularity: number | null;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Search FRED series (`/fred/series/search`) by `search_text` → curated series
|
|
85
|
+
* rows + honest `_meta`. REQUIRES FRED_API_KEY (throws invalid_input pre-fetch when
|
|
86
|
+
* unset). totalAvailable = FRED's exact `count`; offset pagination.
|
|
87
|
+
*/
|
|
88
|
+
export declare function searchSeries(args: FredSearchSeriesArgs): Promise<MetaBundle>;
|
|
89
|
+
export type FredSeriesObservationsArgs = {
|
|
90
|
+
seriesId?: string;
|
|
91
|
+
startDate?: string;
|
|
92
|
+
endDate?: string;
|
|
93
|
+
limit?: number;
|
|
94
|
+
offset?: number;
|
|
95
|
+
sortOrder?: string;
|
|
96
|
+
};
|
|
97
|
+
export type FredObservation = {
|
|
98
|
+
date: string | null;
|
|
99
|
+
value: number | null;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Fetch a FRED series' time series (`/fred/series/observations`) → date/value rows
|
|
103
|
+
* + honest `_meta`. REQUIRES FRED_API_KEY (throws invalid_input pre-fetch when
|
|
104
|
+
* unset). ★A missing observation (`value === "."`) maps to null, never 0.
|
|
105
|
+
* totalAvailable = FRED's exact `count`; offset pagination.
|
|
106
|
+
*/
|
|
107
|
+
export declare function seriesObservations(args: FredSeriesObservationsArgs): Promise<MetaBundle>;
|
|
108
|
+
//# sourceMappingURL=fred.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fred.d.ts","sourceRoot":"","sources":["../src/fred.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AACvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAKzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAGf,eAAO,MAAM,SAAS,uBAAuB,CAAC;AA2B9C,qFAAqF;AACrF,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGnD;AAgFD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,UAAU,CAAC,CA4FrB;AAGD,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,UAAU,CAAC,CAsHrB"}
|
package/dist/fred.js
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fred.ts — FRED (Federal Reserve Economic Data, St. Louis Fed) — the MACRO
|
|
3
|
+
* CONTEXT lane (ADR-0048, Wave-4 source #2). GDP · CPI · interest rates ·
|
|
4
|
+
* unemployment · PPI … — the economy-wide backdrop for B2G bid escalation and
|
|
5
|
+
* market-timing that no contract/spending source carries.
|
|
6
|
+
*
|
|
7
|
+
* ★ THIS IS THE SERVER'S SECOND KEY-REQUIRED SOURCE (Census CBP was the first).
|
|
8
|
+
* FRED has NO keyless tier: every request needs `&api_key=`, and a missing/bad
|
|
9
|
+
* key returns HTTP 400 `{error_code, error_message}`. So, honestly: with NO
|
|
10
|
+
* `FRED_API_KEY` these two tools THROW an `invalid_input` config error BEFORE any
|
|
11
|
+
* fetch (never a fake-empty, never a keyless-pretend). The other 112 tools stay
|
|
12
|
+
* keyless — this key is scoped to this one source. (Contrast the OPTIONAL keys of
|
|
13
|
+
* datagov/bls/nvd, which lift a tier but are not required.)
|
|
14
|
+
*
|
|
15
|
+
* This module MIRRORS the census-economic.ts optional-key precedent: a `fredApiKey()`
|
|
16
|
+
* env seam, a pre-fetch `invalid_input` THROW when unset, the fixed-host SSRF assert
|
|
17
|
+
* + `redirect:"error"`, and the missing-sentinel→null idiom (Census's negative
|
|
18
|
+
* suppression sentinel there; FRED's `value === "."` here — the BLS `"-"` lineage).
|
|
19
|
+
* It writes ZERO coercion/meta code of its own: it REUSES `getJson` (the shared
|
|
20
|
+
* fetch envelope) / `driftError` / `num`·`str` (coerce.ts, null-never-0/empty) /
|
|
21
|
+
* `withMeta`·`buildMeta` (offset pagination via count-exact totals).
|
|
22
|
+
*
|
|
23
|
+
* GET https://api.stlouisfed.org/fred/series/search
|
|
24
|
+
* ?search_text=<q>&limit=&offset=&api_key=<KEY>&file_type=json
|
|
25
|
+
* → { seriess:[{ id,title,frequency,frequency_short,units,seasonal_adjustment,
|
|
26
|
+
* observation_start,observation_end,last_updated,popularity,notes }],
|
|
27
|
+
* count, limit, offset }
|
|
28
|
+
*
|
|
29
|
+
* GET https://api.stlouisfed.org/fred/series/observations
|
|
30
|
+
* ?series_id=<id>&observation_start=&observation_end=&limit=&offset=
|
|
31
|
+
* &sort_order=&api_key=<KEY>&file_type=json
|
|
32
|
+
* → { observations:[{ date, value }], count, … } ★value === "." ⇒ missing (null)
|
|
33
|
+
*
|
|
34
|
+
* ★ HONESTY (ADR-0048 P1–P5):
|
|
35
|
+
* [KEY] no key ⇒ invalid_input THROW pre-fetch (0 fetch); the message names
|
|
36
|
+
* FRED_API_KEY + the free-signup URL. A 400 carrying `{error_message}` (a
|
|
37
|
+
* bad series_id / expired key) ⇒ reclassified to invalid_input CARRYING the
|
|
38
|
+
* FRED error_message — honestly reported, never a fake empty.
|
|
39
|
+
* [P1] both endpoints report `count` (the total) ⇒ totalAvailable = num(count)
|
|
40
|
+
* EXACT; offset pagination (hasMore = offset+returned < count, nextOffset).
|
|
41
|
+
* NEVER fabricated (RED if totalAvailable = returned).
|
|
42
|
+
* [P3] ★the missing crux: an observation `value === "."` ⇒ **null** (FRED's
|
|
43
|
+
* missing sentinel — the BLS `"-"` lineage), NEVER 0. A genuine "0" ⇒ 0.
|
|
44
|
+
* [P2] a 400 ⇒ invalid_input (carrying error_message); a genuine no-match
|
|
45
|
+
* (seriess:[] / observations:[]) ⇒ honest empty; a 5xx ⇒ upstream_unavailable
|
|
46
|
+
* THROW; a 200 non-JSON ⇒ schema_drift.
|
|
47
|
+
* [P4] a body whose `seriess` / `observations` is absent or non-array ⇒ driftError
|
|
48
|
+
* (never a fabricated empty).
|
|
49
|
+
* [SSRF] fixed host `api.stlouisfed.org`; `series_id` charclass `^[A-Za-z0-9._-]+$`;
|
|
50
|
+
* dates `^\d{4}-\d{2}-\d{2}$`; sort_order enum {asc,desc}. All VALUES ride
|
|
51
|
+
* URLSearchParams; the key rides `&api_key=` ONLY — never a label/_meta/note
|
|
52
|
+
* (the K-test).
|
|
53
|
+
*/
|
|
54
|
+
import { ToolErrorCarrier } from "./errors.js";
|
|
55
|
+
import { getJson, driftError } from "./datasource.js";
|
|
56
|
+
import { num, str } from "./coerce.js";
|
|
57
|
+
import { withMeta } from "./meta.js";
|
|
58
|
+
// Re-export the shared honesty coercion (single audited copy in ./coerce.js —
|
|
59
|
+
// ADR-0005 v2 FIX-C) so a `num` regression fails together across sources. NO local
|
|
60
|
+
// num/str; the `"."`→null map is a WRAPPER around num, not a fork.
|
|
61
|
+
export { num };
|
|
62
|
+
// ─── SSRF core: the single fixed host + base path ─────────────────
|
|
63
|
+
export const FRED_HOST = "api.stlouisfed.org";
|
|
64
|
+
const FRED_SEARCH_PATH = "/fred/series/search";
|
|
65
|
+
const FRED_OBS_PATH = "/fred/series/observations";
|
|
66
|
+
// HOST+path labels — surface in ToolError.upstreamEndpoint; the key rides ONLY in
|
|
67
|
+
// the &api_key= query param, so no token can ever appear here.
|
|
68
|
+
const FRED_SEARCH_LABEL = "fred:/fred/series/search";
|
|
69
|
+
const FRED_OBS_LABEL = "fred:/fred/series/observations";
|
|
70
|
+
// ─── Validation charclasses (SSRF + "verify the input" honesty) ───
|
|
71
|
+
const SERIES_ID_RE = /^[A-Za-z0-9._-]+$/; // FRED series ids: GDP, CPIAUCSL, DGS10 …
|
|
72
|
+
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/; // YYYY-MM-DD observation bounds
|
|
73
|
+
const SORT_ORDERS = new Set(["asc", "desc"]);
|
|
74
|
+
const DEFAULT_SEARCH_LIMIT = 25;
|
|
75
|
+
const MAX_SEARCH_LIMIT = 1000;
|
|
76
|
+
const DEFAULT_OBS_LIMIT = 100;
|
|
77
|
+
const MAX_OBS_LIMIT = 100000;
|
|
78
|
+
// ─── Honesty notes (ADR-0048 required set) ────────────────────────
|
|
79
|
+
const KEY_REQUIRED_NOTE = "This source REQUIRES a free FRED_API_KEY (FRED has no keyless tier). The key is sent ONLY as the &api_key= query parameter to api.stlouisfed.org and is NEVER logged, echoed, or placed in this response.";
|
|
80
|
+
const MISSING_VALUE_NOTE = "FRED encodes a MISSING observation as the literal '.' — such values are mapped to null (missing), NEVER 0. A genuine reported 0 is preserved as 0.";
|
|
81
|
+
const COUNT_TOTAL_NOTE = "totalAvailable is FRED's exact reported `count` for the query; page with limit/offset (hasMore/nextOffset are derived from it, never fabricated).";
|
|
82
|
+
// ─── The key seam (REQUIRED; value NEVER leaked past the &api_key= param) ──
|
|
83
|
+
/** Read FRED_API_KEY from env; trim; return the value or undefined (unset/blank). */
|
|
84
|
+
export function fredApiKey() {
|
|
85
|
+
const raw = process.env.FRED_API_KEY;
|
|
86
|
+
const trimmed = typeof raw === "string" ? raw.trim() : "";
|
|
87
|
+
return trimmed ? trimmed : undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* num(), but map FRED's missing-observation sentinel `"."` → null (missing). A
|
|
91
|
+
* genuine "0" stays 0 (num("0") === 0); a real numeric string parses. This is the
|
|
92
|
+
* BLS `"-"` lineage — a data-absence marker, never a fabricated 0.
|
|
93
|
+
*/
|
|
94
|
+
export function fredValue(v) {
|
|
95
|
+
if (v === ".")
|
|
96
|
+
return null;
|
|
97
|
+
return num(v);
|
|
98
|
+
}
|
|
99
|
+
// ─── Shared SSRF-guarded fetch (REQUIRED key; &api_key= ONLY carrier) ──
|
|
100
|
+
/**
|
|
101
|
+
* GET one FRED JSON resource. The REQUIRED key is checked BEFORE any fetch (an
|
|
102
|
+
* unset FRED_API_KEY ⇒ invalid_input THROW, 0 network call). The query is built on
|
|
103
|
+
* the FIXED host from `params` + `&api_key=` + `&file_type=json` via URLSearchParams
|
|
104
|
+
* (no host/path steer); a post-construction hostname/protocol assertion +
|
|
105
|
+
* `redirect:"error"` lock it (fail closed on any off-host 3xx — it could carry the
|
|
106
|
+
* key away). `label` is host+path only.
|
|
107
|
+
*
|
|
108
|
+
* A 400 carrying `{error_message}` (a bad series_id / expired key) is reclassified
|
|
109
|
+
* to invalid_input CARRYING the FRED message. `getJson`/`fetchWithRetry` discards a
|
|
110
|
+
* non-ok body (it throws before reading it), so to surface FRED's honest reason we
|
|
111
|
+
* re-read the 400 body via a single bare GET on the error path ONLY (the happy /
|
|
112
|
+
* 5xx / 429 / timeout paths keep the shared envelope's retry taxonomy untouched).
|
|
113
|
+
*/
|
|
114
|
+
async function getFred(path, label, params, key) {
|
|
115
|
+
params.set("api_key", key);
|
|
116
|
+
params.set("file_type", "json");
|
|
117
|
+
const url = `https://${FRED_HOST}${path}?${params.toString()}`;
|
|
118
|
+
const built = new URL(url);
|
|
119
|
+
if (built.hostname !== FRED_HOST || built.protocol !== "https:") {
|
|
120
|
+
throw new ToolErrorCarrier({
|
|
121
|
+
kind: "invalid_input",
|
|
122
|
+
retryable: false,
|
|
123
|
+
message: `Constructed FRED URL host ${JSON.stringify(built.hostname)} (${built.protocol}) is not ${FRED_HOST} over https — refusing to fetch (SSRF safety).`,
|
|
124
|
+
upstreamEndpoint: label,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
// The key rides in &api_key= ONLY (never the label/_meta); redirect:"error"
|
|
129
|
+
// (fail closed on any off-host 3xx). A 200 non-JSON body ⇒ getJson's r.json()
|
|
130
|
+
// throws SyntaxError ⇒ the caller reclassifies to schema_drift.
|
|
131
|
+
return await getJson(url, { label, redirect: "error" });
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
if (e instanceof ToolErrorCarrier) {
|
|
135
|
+
// A 400 (missing/bad key, or a bad series_id) carries FRED's honest
|
|
136
|
+
// `{error_message}`, but fetchWithRetry discarded the body. Re-read it once so
|
|
137
|
+
// the caller learns the REAL reason (never a fake-empty). A body that no longer
|
|
138
|
+
// 400s / is unreadable falls back to the generic 400 carrier unchanged.
|
|
139
|
+
if (e.toolError.upstreamStatus === 400) {
|
|
140
|
+
const fredMsg = await readFredErrorMessage(url);
|
|
141
|
+
throw new ToolErrorCarrier({
|
|
142
|
+
kind: "invalid_input",
|
|
143
|
+
retryable: false,
|
|
144
|
+
message: fredMsg
|
|
145
|
+
? `FRED rejected the request (HTTP 400): ${fredMsg}. Check FRED_API_KEY and the series_id / parameters.`
|
|
146
|
+
: "FRED rejected the request (HTTP 400) — check FRED_API_KEY and the series_id / parameters.",
|
|
147
|
+
upstreamStatus: 400,
|
|
148
|
+
upstreamEndpoint: label,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
throw e; // 5xx → upstream_unavailable, 404 → not_found, 429 → rate_limited …
|
|
152
|
+
}
|
|
153
|
+
throw e; // SyntaxError (200 non-JSON) → the caller maps it to driftError
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Single bare GET to read a FRED 400's `error_message` (error path ONLY). null on any failure. */
|
|
157
|
+
async function readFredErrorMessage(url) {
|
|
158
|
+
try {
|
|
159
|
+
const r = await fetch(url, {
|
|
160
|
+
signal: AbortSignal.timeout(15_000),
|
|
161
|
+
redirect: "error",
|
|
162
|
+
});
|
|
163
|
+
const body = (await r.json());
|
|
164
|
+
return typeof body?.error_message === "string" ? body.error_message : null;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Search FRED series (`/fred/series/search`) by `search_text` → curated series
|
|
172
|
+
* rows + honest `_meta`. REQUIRES FRED_API_KEY (throws invalid_input pre-fetch when
|
|
173
|
+
* unset). totalAvailable = FRED's exact `count`; offset pagination.
|
|
174
|
+
*/
|
|
175
|
+
export async function searchSeries(args) {
|
|
176
|
+
// ── [KEY] REQUIRED key — throw an honest config error BEFORE any fetch. ──
|
|
177
|
+
const key = fredApiKey();
|
|
178
|
+
if (key === undefined) {
|
|
179
|
+
throw new ToolErrorCarrier({
|
|
180
|
+
kind: "invalid_input",
|
|
181
|
+
retryable: false,
|
|
182
|
+
message: "FRED requires a free API key. Get one at https://fred.stlouisfed.org/docs/api/api_key.html and set FRED_API_KEY.",
|
|
183
|
+
upstreamEndpoint: FRED_SEARCH_LABEL,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
// ── Validate + default (belt-and-suspenders behind the server Zod; a DIRECT
|
|
187
|
+
// handler call bypasses Zod). ──
|
|
188
|
+
const query = args.query ?? "";
|
|
189
|
+
if (query.trim() === "") {
|
|
190
|
+
throw new ToolErrorCarrier({
|
|
191
|
+
kind: "invalid_input",
|
|
192
|
+
retryable: false,
|
|
193
|
+
message: "fred_search_series requires a non-empty `query` (the FRED search_text), e.g. 'unemployment rate' or 'CPI'.",
|
|
194
|
+
upstreamEndpoint: FRED_SEARCH_LABEL,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
const limit = clampLimit(args.limit, DEFAULT_SEARCH_LIMIT, MAX_SEARCH_LIMIT);
|
|
198
|
+
const offset = clampOffset(args.offset);
|
|
199
|
+
const params = new URLSearchParams();
|
|
200
|
+
params.set("search_text", query);
|
|
201
|
+
params.set("limit", String(limit));
|
|
202
|
+
params.set("offset", String(offset));
|
|
203
|
+
let body;
|
|
204
|
+
try {
|
|
205
|
+
body = await getFred(FRED_SEARCH_PATH, FRED_SEARCH_LABEL, params, key);
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
if (e instanceof SyntaxError) {
|
|
209
|
+
throw driftError(FRED_SEARCH_LABEL, "FRED /series/search returned a non-JSON body at HTTP 200 — schema drift (never read as an empty result).");
|
|
210
|
+
}
|
|
211
|
+
throw e;
|
|
212
|
+
}
|
|
213
|
+
// ── [P4] `seriess` MUST be an array (a missing/non-array is drift, never a
|
|
214
|
+
// fabricated empty). ──
|
|
215
|
+
const b = (body ?? {});
|
|
216
|
+
if (!Array.isArray(b.seriess)) {
|
|
217
|
+
throw driftError(FRED_SEARCH_LABEL, "FRED /series/search shape drift — `seriess` must be an array.");
|
|
218
|
+
}
|
|
219
|
+
const series = b.seriess.map((row) => {
|
|
220
|
+
const s = (row ?? {});
|
|
221
|
+
return {
|
|
222
|
+
id: str(s.id),
|
|
223
|
+
title: str(s.title),
|
|
224
|
+
frequency: str(s.frequency),
|
|
225
|
+
frequencyShort: str(s.frequency_short),
|
|
226
|
+
units: str(s.units),
|
|
227
|
+
seasonalAdjustment: str(s.seasonal_adjustment),
|
|
228
|
+
observationStart: str(s.observation_start),
|
|
229
|
+
observationEnd: str(s.observation_end),
|
|
230
|
+
lastUpdated: str(s.last_updated),
|
|
231
|
+
popularity: num(s.popularity),
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
const returned = series.length;
|
|
235
|
+
const totalAvailable = num(b.count); // [P1] EXACT — never returned
|
|
236
|
+
const hasMore = totalAvailable !== null && offset + returned < totalAvailable;
|
|
237
|
+
const nextOffset = hasMore ? offset + returned : null;
|
|
238
|
+
return withMeta({ series }, {
|
|
239
|
+
source: `${FRED_HOST} /fred/series/search (FRED; FRED_API_KEY)`,
|
|
240
|
+
keylessMode: false, // ★KEYED — the second key-required source
|
|
241
|
+
returned,
|
|
242
|
+
totalAvailable,
|
|
243
|
+
filtersApplied: [`query:${query}`],
|
|
244
|
+
filtersDropped: [],
|
|
245
|
+
fieldsUnavailable: [],
|
|
246
|
+
pagination: { offset, limit, hasMore, nextOffset },
|
|
247
|
+
notes: [KEY_REQUIRED_NOTE, COUNT_TOTAL_NOTE],
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Fetch a FRED series' time series (`/fred/series/observations`) → date/value rows
|
|
252
|
+
* + honest `_meta`. REQUIRES FRED_API_KEY (throws invalid_input pre-fetch when
|
|
253
|
+
* unset). ★A missing observation (`value === "."`) maps to null, never 0.
|
|
254
|
+
* totalAvailable = FRED's exact `count`; offset pagination.
|
|
255
|
+
*/
|
|
256
|
+
export async function seriesObservations(args) {
|
|
257
|
+
// ── [KEY] REQUIRED key — throw an honest config error BEFORE any fetch. ──
|
|
258
|
+
const key = fredApiKey();
|
|
259
|
+
if (key === undefined) {
|
|
260
|
+
throw new ToolErrorCarrier({
|
|
261
|
+
kind: "invalid_input",
|
|
262
|
+
retryable: false,
|
|
263
|
+
message: "FRED requires a free API key. Get one at https://fred.stlouisfed.org/docs/api/api_key.html and set FRED_API_KEY.",
|
|
264
|
+
upstreamEndpoint: FRED_OBS_LABEL,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// ── Validate (belt-and-suspenders behind the server Zod; a DIRECT handler call
|
|
268
|
+
// bypasses Zod — `series_id` rides the query, dates/sort_order too). ──
|
|
269
|
+
const seriesId = args.seriesId ?? "";
|
|
270
|
+
if (!SERIES_ID_RE.test(seriesId)) {
|
|
271
|
+
throw new ToolErrorCarrier({
|
|
272
|
+
kind: "invalid_input",
|
|
273
|
+
retryable: false,
|
|
274
|
+
message: `Invalid seriesId ${JSON.stringify(seriesId)} — expected a FRED series id (^[A-Za-z0-9._-]+$), e.g. "GDP", "CPIAUCSL", "UNRATE".`,
|
|
275
|
+
upstreamEndpoint: FRED_OBS_LABEL,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
if (args.startDate !== undefined && !DATE_RE.test(args.startDate)) {
|
|
279
|
+
throw new ToolErrorCarrier({
|
|
280
|
+
kind: "invalid_input",
|
|
281
|
+
retryable: false,
|
|
282
|
+
message: `Invalid startDate ${JSON.stringify(args.startDate)} — expected YYYY-MM-DD (^\\d{4}-\\d{2}-\\d{2}$).`,
|
|
283
|
+
upstreamEndpoint: FRED_OBS_LABEL,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
if (args.endDate !== undefined && !DATE_RE.test(args.endDate)) {
|
|
287
|
+
throw new ToolErrorCarrier({
|
|
288
|
+
kind: "invalid_input",
|
|
289
|
+
retryable: false,
|
|
290
|
+
message: `Invalid endDate ${JSON.stringify(args.endDate)} — expected YYYY-MM-DD (^\\d{4}-\\d{2}-\\d{2}$).`,
|
|
291
|
+
upstreamEndpoint: FRED_OBS_LABEL,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
if (args.sortOrder !== undefined && !SORT_ORDERS.has(args.sortOrder)) {
|
|
295
|
+
throw new ToolErrorCarrier({
|
|
296
|
+
kind: "invalid_input",
|
|
297
|
+
retryable: false,
|
|
298
|
+
message: `Invalid sortOrder ${JSON.stringify(args.sortOrder)} — expected one of asc, desc.`,
|
|
299
|
+
upstreamEndpoint: FRED_OBS_LABEL,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
const limit = clampLimit(args.limit, DEFAULT_OBS_LIMIT, MAX_OBS_LIMIT);
|
|
303
|
+
const offset = clampOffset(args.offset);
|
|
304
|
+
const params = new URLSearchParams();
|
|
305
|
+
params.set("series_id", seriesId);
|
|
306
|
+
params.set("limit", String(limit));
|
|
307
|
+
params.set("offset", String(offset));
|
|
308
|
+
const filtersApplied = [`series_id:${seriesId}`];
|
|
309
|
+
if (args.startDate !== undefined) {
|
|
310
|
+
params.set("observation_start", args.startDate);
|
|
311
|
+
filtersApplied.push(`observation_start:${args.startDate}`);
|
|
312
|
+
}
|
|
313
|
+
if (args.endDate !== undefined) {
|
|
314
|
+
params.set("observation_end", args.endDate);
|
|
315
|
+
filtersApplied.push(`observation_end:${args.endDate}`);
|
|
316
|
+
}
|
|
317
|
+
if (args.sortOrder !== undefined) {
|
|
318
|
+
params.set("sort_order", args.sortOrder);
|
|
319
|
+
filtersApplied.push(`sort_order:${args.sortOrder}`);
|
|
320
|
+
}
|
|
321
|
+
let body;
|
|
322
|
+
try {
|
|
323
|
+
body = await getFred(FRED_OBS_PATH, FRED_OBS_LABEL, params, key);
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
if (e instanceof SyntaxError) {
|
|
327
|
+
throw driftError(FRED_OBS_LABEL, "FRED /series/observations returned a non-JSON body at HTTP 200 — schema drift (never read as an empty result).");
|
|
328
|
+
}
|
|
329
|
+
throw e;
|
|
330
|
+
}
|
|
331
|
+
// ── [P4] `observations` MUST be an array. ──
|
|
332
|
+
const b = (body ?? {});
|
|
333
|
+
if (!Array.isArray(b.observations)) {
|
|
334
|
+
throw driftError(FRED_OBS_LABEL, "FRED /series/observations shape drift — `observations` must be an array.");
|
|
335
|
+
}
|
|
336
|
+
const observations = b.observations.map((row) => {
|
|
337
|
+
const o = (row ?? {});
|
|
338
|
+
return { date: str(o.date), value: fredValue(o.value) }; // ★"." ⇒ null
|
|
339
|
+
});
|
|
340
|
+
const returned = observations.length;
|
|
341
|
+
const totalAvailable = num(b.count); // [P1] EXACT — never returned
|
|
342
|
+
const hasMore = totalAvailable !== null && offset + returned < totalAvailable;
|
|
343
|
+
const nextOffset = hasMore ? offset + returned : null;
|
|
344
|
+
return withMeta({ observations }, {
|
|
345
|
+
source: `${FRED_HOST} /fred/series/observations (FRED; FRED_API_KEY)`,
|
|
346
|
+
keylessMode: false, // ★KEYED
|
|
347
|
+
returned,
|
|
348
|
+
totalAvailable,
|
|
349
|
+
filtersApplied,
|
|
350
|
+
filtersDropped: [],
|
|
351
|
+
fieldsUnavailable: [],
|
|
352
|
+
pagination: { offset, limit, hasMore, nextOffset },
|
|
353
|
+
notes: [KEY_REQUIRED_NOTE, MISSING_VALUE_NOTE, COUNT_TOTAL_NOTE],
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
// ─── Small shared clamps (defensive, behind the server Zod bounds) ──
|
|
357
|
+
function clampLimit(v, def, max) {
|
|
358
|
+
if (typeof v !== "number" || !Number.isFinite(v))
|
|
359
|
+
return def;
|
|
360
|
+
const n = Math.floor(v);
|
|
361
|
+
if (n < 1)
|
|
362
|
+
return 1;
|
|
363
|
+
if (n > max)
|
|
364
|
+
return max;
|
|
365
|
+
return n;
|
|
366
|
+
}
|
|
367
|
+
function clampOffset(v) {
|
|
368
|
+
if (typeof v !== "number" || !Number.isFinite(v))
|
|
369
|
+
return 0;
|
|
370
|
+
const n = Math.floor(v);
|
|
371
|
+
return n < 0 ? 0 : n;
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=fred.js.map
|
package/dist/fred.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fred.js","sourceRoot":"","sources":["../src/fred.ts"],"names":[],"mappings":"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"}
|
package/dist/gao.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAO bid-protest lookup (keyless) — recent Comptroller General bid-protest
|
|
3
|
+
* decisions from the public GAO "Legal Products" RSS feed, optionally enriched
|
|
4
|
+
* from each decision's public product page.
|
|
5
|
+
*
|
|
6
|
+
* HONEST SCOPE (the defining constraint of this tool)
|
|
7
|
+
* ---------------------------------------------------
|
|
8
|
+
* Keyless access covers ONLY the RECENT decisions carried by the public
|
|
9
|
+
* Legal-Products RSS feed (a rolling ~25-item window). GAO's faceted historical
|
|
10
|
+
* bid-protest search (by protester / agency / outcome / date across all years,
|
|
11
|
+
* at https://www.gao.gov/legal/bid-protests/search) is WAF-protected against
|
|
12
|
+
* automated clients and is available cleanly only via a PAID third-party API.
|
|
13
|
+
* So this tool NEVER presents "recent" as "all": its `_meta` is ALWAYS
|
|
14
|
+
* `complete:false` + `truncated:true`, `totalAvailable` is `null` (the feed is
|
|
15
|
+
* not a count of all protests), and a top-level `accessNote` + a `_meta` note
|
|
16
|
+
* spell out the boundary. This is an intentional PARTIAL close of a capability
|
|
17
|
+
* that a competitor (Tango) sells as a paid feature.
|
|
18
|
+
*
|
|
19
|
+
* LIVE-VERIFIED 2026-07-03
|
|
20
|
+
* ------------------------
|
|
21
|
+
* - `GET https://www.gao.gov/rss/reportslegal.xml` with a browser UA → HTTP
|
|
22
|
+
* 200, application/rss+xml, ~14.6 KB, 26 <item>s. The feed carries GAO
|
|
23
|
+
* Legal Products — bid-protest DECISIONS *and* other legal products
|
|
24
|
+
* (Congressional Review Act regulatory reviews, legal opinions), so it MUST
|
|
25
|
+
* be filtered down to bid protests.
|
|
26
|
+
* - Each <item> has <title>, <link> (…/products/b-XXXXXX), <description>,
|
|
27
|
+
* <pubDate>, <guid>. A reconsideration reads "FCN Inc.--Reconsideration" →
|
|
28
|
+
* /products/b-424249.2; a costs decision "Accura Engineering--Costs".
|
|
29
|
+
* - Bid-protest items are reliably identified by their DESCRIPTION language
|
|
30
|
+
* ("protest(s)", "protester", "request(s) reconsideration of our decision")
|
|
31
|
+
* — regulatory reviews instead read "GAO reviewed the …'s new rule entitled".
|
|
32
|
+
* Protest B-numbers are the B-4xxxxx series; CRA reviews are B-33xxxx.
|
|
33
|
+
* - `GET https://www.gao.gov/products/b-XXXXXX` (browser UA) is cleanly
|
|
34
|
+
* parseable for protester (+ city/state), contracting agency, decision date,
|
|
35
|
+
* outcome ("We deny/sustain/dismiss the protest"), a solicitation number
|
|
36
|
+
* when present, and a decision-PDF link (/assets/.../NNNNNN.pdf).
|
|
37
|
+
*/
|
|
38
|
+
type Outcome = "sustained" | "denied" | "dismissed" | "withdrawn";
|
|
39
|
+
type Decision = {
|
|
40
|
+
bNumber: string;
|
|
41
|
+
protester: string | null;
|
|
42
|
+
agency: string | null;
|
|
43
|
+
decisionDate: string | null;
|
|
44
|
+
solicitationNumber: string | null;
|
|
45
|
+
outcome: Outcome | null;
|
|
46
|
+
title: string;
|
|
47
|
+
decisionUrl: string;
|
|
48
|
+
pdfUrl: string | null;
|
|
49
|
+
summary: string | null;
|
|
50
|
+
};
|
|
51
|
+
export declare function gaoProtestLookup(args: {
|
|
52
|
+
agency?: string;
|
|
53
|
+
protester?: string;
|
|
54
|
+
solicitationNumber?: string;
|
|
55
|
+
outcome?: "sustained" | "denied" | "dismissed" | "withdrawn" | "any";
|
|
56
|
+
bNumber?: string;
|
|
57
|
+
limit?: number;
|
|
58
|
+
enrich?: boolean;
|
|
59
|
+
}): Promise<import("./meta.js").MetaBundle<{
|
|
60
|
+
accessNote: string;
|
|
61
|
+
decisions: Decision[];
|
|
62
|
+
}>>;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=gao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gao.d.ts","sourceRoot":"","sources":["../src/gao.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAiLH,KAAK,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAsSlE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAuCF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;;;IAyIA"}
|