@cliwant/mcp-sam-gov 1.11.0 → 1.13.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/README.ja.md +17 -13
- package/README.ko.md +17 -13
- package/README.md +25 -16
- package/dist/arcgis-feature.d.ts.map +1 -1
- package/dist/arcgis-feature.js +11 -0
- package/dist/arcgis-feature.js.map +1 -1
- package/dist/bls.d.ts.map +1 -1
- package/dist/bls.js +6 -1
- package/dist/bls.js.map +1 -1
- package/dist/bonfire.d.ts +1 -1
- package/dist/bonfire.d.ts.map +1 -1
- package/dist/bonfire.js +14 -3
- package/dist/bonfire.js.map +1 -1
- package/dist/census-economic.d.ts.map +1 -1
- package/dist/census-economic.js +10 -1
- package/dist/census-economic.js.map +1 -1
- package/dist/ckan.d.ts.map +1 -1
- package/dist/ckan.js +17 -3
- package/dist/ckan.js.map +1 -1
- package/dist/clinicaltrials.d.ts.map +1 -1
- package/dist/clinicaltrials.js +23 -6
- package/dist/clinicaltrials.js.map +1 -1
- package/dist/echo.d.ts +6 -2
- package/dist/echo.d.ts.map +1 -1
- package/dist/echo.js +12 -6
- package/dist/echo.js.map +1 -1
- package/dist/fdic.js +7 -7
- package/dist/fdic.js.map +1 -1
- package/dist/fema.d.ts.map +1 -1
- package/dist/fema.js +13 -1
- package/dist/fema.js.map +1 -1
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +13 -3
- package/dist/grants.js.map +1 -1
- package/dist/gsa-csv.d.ts +9 -0
- package/dist/gsa-csv.d.ts.map +1 -1
- package/dist/gsa-csv.js +37 -8
- package/dist/gsa-csv.js.map +1 -1
- package/dist/nppes.d.ts.map +1 -1
- package/dist/nppes.js +17 -4
- package/dist/nppes.js.map +1 -1
- package/dist/nsf.d.ts.map +1 -1
- package/dist/nsf.js +9 -0
- package/dist/nsf.js.map +1 -1
- package/dist/open-checkbook.d.ts +65 -0
- package/dist/open-checkbook.d.ts.map +1 -0
- package/dist/open-checkbook.js +166 -0
- package/dist/open-checkbook.js.map +1 -0
- package/dist/openfda-device.d.ts.map +1 -1
- package/dist/openfda-device.js +8 -5
- package/dist/openfda-device.js.map +1 -1
- package/dist/openfda-drugsfda.d.ts.map +1 -1
- package/dist/openfda-drugsfda.js +8 -5
- package/dist/openfda-drugsfda.js.map +1 -1
- package/dist/openfda.d.ts +21 -0
- package/dist/openfda.d.ts.map +1 -1
- package/dist/openfda.js +38 -4
- package/dist/openfda.js.map +1 -1
- package/dist/opengov.d.ts.map +1 -1
- package/dist/opengov.js +8 -4
- package/dist/opengov.js.map +1 -1
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +101 -10
- package/dist/server.js.map +1 -1
- package/dist/socrata.d.ts.map +1 -1
- package/dist/socrata.js +14 -7
- package/dist/socrata.js.map +1 -1
- package/dist/tableau.d.ts +58 -0
- package/dist/tableau.d.ts.map +1 -0
- package/dist/tableau.js +132 -0
- package/dist/tableau.js.map +1 -0
- package/dist/usaspending.d.ts +2 -2
- package/dist/usaspending.d.ts.map +1 -1
- package/dist/usaspending.js +21 -10
- package/dist/usaspending.js.map +1 -1
- package/package.json +2 -2
- package/src/arcgis-feature.ts +11 -0
- package/src/bls.ts +8 -1
- package/src/bonfire.ts +14 -3
- package/src/census-economic.ts +13 -2
- package/src/ckan.ts +19 -3
- package/src/clinicaltrials.ts +25 -8
- package/src/echo.ts +12 -6
- package/src/fdic.ts +7 -7
- package/src/fema.ts +15 -1
- package/src/grants.ts +15 -2
- package/src/gsa-csv.ts +38 -7
- package/src/nppes.ts +18 -4
- package/src/nsf.ts +10 -0
- package/src/open-checkbook.ts +183 -0
- package/src/openfda-device.ts +10 -4
- package/src/openfda-drugsfda.ts +10 -4
- package/src/openfda.ts +47 -5
- package/src/opengov.ts +8 -4
- package/src/server.ts +110 -10
- package/src/socrata.ts +14 -7
- package/src/tableau.ts +159 -0
- package/src/usaspending.ts +21 -10
package/dist/socrata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socrata.d.ts","sourceRoot":"","sources":["../src/socrata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAKzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAOf,eAAO,MAAM,eAAe,wtCAqGlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"socrata.d.ts","sourceRoot":"","sources":["../src/socrata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAKzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAOf,eAAO,MAAM,eAAe,wtCAqGlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAgD7D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAuKjD;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkGtB;AAGD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAqBF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmEtB"}
|
package/dist/socrata.js
CHANGED
|
@@ -229,13 +229,20 @@ const CATALOG_URL = `https://${CATALOG_HOST}/api/catalog/v1`;
|
|
|
229
229
|
// `.length === 9` (not just the regex) rejects a trailing `\n` (M2) that the
|
|
230
230
|
// regex `$` alone would admit ("abcd-1234\n" passes /…$/ in JS).
|
|
231
231
|
const DATASET_ID_RE = /^[a-z0-9]{4}-[a-z0-9]{4}$/;
|
|
232
|
-
// D2 —
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
|
|
232
|
+
// D2 — a cardinality-CHANGING $select projection: ANY function call (`word(` —
|
|
233
|
+
// count/sum/avg/min/max/median/stddev/count_distinct/percentile/…), the bare
|
|
234
|
+
// `distinct` keyword, or an explicit `group by`/`$group`. Case-insensitive. The
|
|
235
|
+
// `\b\w+\s*\(` shape matches a real function CALL (a word followed by a paren),
|
|
236
|
+
// never a plain column name like `max_temperature` (no paren). When the caller's
|
|
237
|
+
// own $select is one of these, the result rows are NOT raw records, so the
|
|
238
|
+
// count(*) companion (which counts SOURCE rows) would be a FALSE total — e.g.
|
|
239
|
+
// `$select=distinct state` returns 54 rows but count(*) is 137,700 → a wrong total
|
|
240
|
+
// AND a hasMore livelock (paging forever over empty pages). So we skip the
|
|
241
|
+
// companion (totalAvailable:null + page-fullness hasMore). A plain comma-separated
|
|
242
|
+
// column list is NOT matched and keeps its real count(*) total. (A per-row
|
|
243
|
+
// function like `upper(x)` also matches → a conservative null-total, an honest
|
|
244
|
+
// "unknown" rather than risking a wrong one.) See `query`.
|
|
245
|
+
const AGGREGATE_SELECT_RE = /\b\w+\s*\(|\bdistinct\b|\bgroup\s+by\b|\$group\b/i;
|
|
239
246
|
// ─── HONESTY-CRITICAL coercions (null, never 0, for absent) ───────
|
|
240
247
|
// `num`/`str` are the shared, audited null-never-0 coercions in ./coerce.js
|
|
241
248
|
// (imported above, `num` re-exported): null/undefined, the literal "null",
|
package/dist/socrata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socrata.js","sourceRoot":"","sources":["../src/socrata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socrata.js","sourceRoot":"","sources":["../src/socrata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tableau.ts — Tableau Server "Guest" view CSV export, a keyless-first SLED
|
|
3
|
+
* transparency source (loop cycle 75, 2026-07-24 — Montana dark-state closure).
|
|
4
|
+
*
|
|
5
|
+
* WHAT IT ADDS: many US state/local governments publish contracts / vendor-payment
|
|
6
|
+
* / checkbook data on a Guest-enabled Tableau Server. A WORKSHEET view exports its
|
|
7
|
+
* FULL summary data as CSV at
|
|
8
|
+
* `https://{host}/t/{site}/views/{workbook}/{view}.csv?:embed=y`
|
|
9
|
+
* — anonymous, KEYLESS (no login, key, or session cookie required). This is the
|
|
10
|
+
* export the public Tableau UI itself offers ("Download ▸ Data"). First payload:
|
|
11
|
+
* Montana state **Contracts Awarded** (DOA), a live gov-con award register.
|
|
12
|
+
*
|
|
13
|
+
* ★ CURATED allowlist (SSRF core): each `base` is a FIXED, live-verified Tableau
|
|
14
|
+
* Server view URL (up to the view name; the tool appends `.csv?:embed=y`). The
|
|
15
|
+
* `view` enum in server.ts is built FROM the keys (single source of truth), and
|
|
16
|
+
* a post-construction hostname assertion (over https) guards the fetch
|
|
17
|
+
* (`redirect:"error"`). where/columns cannot alter the host.
|
|
18
|
+
*
|
|
19
|
+
* ★ HONESTY PILLARS:
|
|
20
|
+
* P1: the CSV is the COMPLETE view export — Tableau returns ALL summary rows in
|
|
21
|
+
* the view (there is NO server-side pagination on this endpoint), so
|
|
22
|
+
* totalAvailable = the parsed DATA-row count (the true total, NOT a page
|
|
23
|
+
* length); limit/offset page over it CLIENT-side. NOTE (disclosed every
|
|
24
|
+
* response): a Tableau Server MAY server-cap a very large summary export — the
|
|
25
|
+
* seeded views are live-verified COMPLETE (non-round counts), and a round-number
|
|
26
|
+
* count is flagged as a possible cap.
|
|
27
|
+
* P2: getText THROWS on 429 / 5xx / 404 / timeout — NEVER a fake empty. A view
|
|
28
|
+
* that is gated/renamed (a 200 sign-in HTML, or a dashboard-CONTAINER whose CSV
|
|
29
|
+
* export is empty) ⇒ schema_drift (a loud, honest failure — NEVER a silent 0).
|
|
30
|
+
* A worksheet that legitimately has a header but zero data rows ⇒ honest empty.
|
|
31
|
+
* P3: values are TRIMMED strings (surrounding whitespace removed; an empty field
|
|
32
|
+
* ⇒ null, never 0 or ""). The value CONTENT is preserved — amounts/dates are
|
|
33
|
+
* FORMATTED STRINGS (e.g. "$5,879,590.00"), parse client-side. Header trimmed.
|
|
34
|
+
* P4: a 200 body that is not CSV (HTML, or no header row) ⇒ schema_drift.
|
|
35
|
+
*/
|
|
36
|
+
import { num } from "./coerce.js";
|
|
37
|
+
import { type MetaBundle } from "./meta.js";
|
|
38
|
+
export { num };
|
|
39
|
+
export type TableauView = {
|
|
40
|
+
key: string;
|
|
41
|
+
base: string;
|
|
42
|
+
label: string;
|
|
43
|
+
note: string;
|
|
44
|
+
};
|
|
45
|
+
export declare const TABLEAU_VIEWS: readonly TableauView[];
|
|
46
|
+
export type TableauViewCsvArgs = {
|
|
47
|
+
view: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Fetch a curated Tableau Server Guest view's COMPLETE CSV export (keyless) and
|
|
53
|
+
* page over it client-side. `view` is an allowlist enum; `limit`/`offset` page
|
|
54
|
+
* the parsed rows. Returns { view, columns, rows:[{col:value…}] } + honest _meta
|
|
55
|
+
* (totalAvailable = the complete row count, NOT a page length).
|
|
56
|
+
*/
|
|
57
|
+
export declare function viewCsv(args: TableauViewCsvArgs): Promise<MetaBundle>;
|
|
58
|
+
//# sourceMappingURL=tableau.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../src/tableau.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,CAAC;AAKf,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACrF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAOtC,CAAC;AAwBX,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAuE3E"}
|
package/dist/tableau.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tableau.ts — Tableau Server "Guest" view CSV export, a keyless-first SLED
|
|
3
|
+
* transparency source (loop cycle 75, 2026-07-24 — Montana dark-state closure).
|
|
4
|
+
*
|
|
5
|
+
* WHAT IT ADDS: many US state/local governments publish contracts / vendor-payment
|
|
6
|
+
* / checkbook data on a Guest-enabled Tableau Server. A WORKSHEET view exports its
|
|
7
|
+
* FULL summary data as CSV at
|
|
8
|
+
* `https://{host}/t/{site}/views/{workbook}/{view}.csv?:embed=y`
|
|
9
|
+
* — anonymous, KEYLESS (no login, key, or session cookie required). This is the
|
|
10
|
+
* export the public Tableau UI itself offers ("Download ▸ Data"). First payload:
|
|
11
|
+
* Montana state **Contracts Awarded** (DOA), a live gov-con award register.
|
|
12
|
+
*
|
|
13
|
+
* ★ CURATED allowlist (SSRF core): each `base` is a FIXED, live-verified Tableau
|
|
14
|
+
* Server view URL (up to the view name; the tool appends `.csv?:embed=y`). The
|
|
15
|
+
* `view` enum in server.ts is built FROM the keys (single source of truth), and
|
|
16
|
+
* a post-construction hostname assertion (over https) guards the fetch
|
|
17
|
+
* (`redirect:"error"`). where/columns cannot alter the host.
|
|
18
|
+
*
|
|
19
|
+
* ★ HONESTY PILLARS:
|
|
20
|
+
* P1: the CSV is the COMPLETE view export — Tableau returns ALL summary rows in
|
|
21
|
+
* the view (there is NO server-side pagination on this endpoint), so
|
|
22
|
+
* totalAvailable = the parsed DATA-row count (the true total, NOT a page
|
|
23
|
+
* length); limit/offset page over it CLIENT-side. NOTE (disclosed every
|
|
24
|
+
* response): a Tableau Server MAY server-cap a very large summary export — the
|
|
25
|
+
* seeded views are live-verified COMPLETE (non-round counts), and a round-number
|
|
26
|
+
* count is flagged as a possible cap.
|
|
27
|
+
* P2: getText THROWS on 429 / 5xx / 404 / timeout — NEVER a fake empty. A view
|
|
28
|
+
* that is gated/renamed (a 200 sign-in HTML, or a dashboard-CONTAINER whose CSV
|
|
29
|
+
* export is empty) ⇒ schema_drift (a loud, honest failure — NEVER a silent 0).
|
|
30
|
+
* A worksheet that legitimately has a header but zero data rows ⇒ honest empty.
|
|
31
|
+
* P3: values are TRIMMED strings (surrounding whitespace removed; an empty field
|
|
32
|
+
* ⇒ null, never 0 or ""). The value CONTENT is preserved — amounts/dates are
|
|
33
|
+
* FORMATTED STRINGS (e.g. "$5,879,590.00"), parse client-side. Header trimmed.
|
|
34
|
+
* P4: a 200 body that is not CSV (HTML, or no header row) ⇒ schema_drift.
|
|
35
|
+
*/
|
|
36
|
+
import { ToolErrorCarrier } from "./errors.js";
|
|
37
|
+
import { getText, driftError } from "./datasource.js";
|
|
38
|
+
import { num, str } from "./coerce.js";
|
|
39
|
+
import { parseCsv } from "./gov-domains.js";
|
|
40
|
+
import { withMeta } from "./meta.js";
|
|
41
|
+
export { num };
|
|
42
|
+
export const TABLEAU_VIEWS = [
|
|
43
|
+
{
|
|
44
|
+
key: "mt_contracts_awarded",
|
|
45
|
+
base: "https://tableau-ext.mt.gov/t/DOA/views/ContractsAwarded/ContractsAwarded",
|
|
46
|
+
label: "Montana DOA — Contracts Awarded",
|
|
47
|
+
note: "State of Montana contract/solicitation awards (columns: '$ Awarded', 'Award Date', 'Event Title', 'Event Type' (Invitation For Bid / Request for Proposal), 'Event#' (solicitation number), 'Montana Vendor' (Y/N; '?'=unknown), 'Vendor Name', 'Agency'). ~4,554 awards, April 2020–present. ★'$ Awarded' is a FORMATTED STRING (e.g. \" $1,878,796.10 \") — parse client-side. Source: transparency.mt.gov (Tableau Server Guest CSV).",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
const VIEW_BY_KEY = new Map(TABLEAU_VIEWS.map((v) => [v.key, v]));
|
|
51
|
+
const VALUE_NOTE = "Values are TRIMMED strings (surrounding whitespace removed; an empty field ⇒ null, never 0 or \"\"). The content is preserved — amounts/dates are FORMATTED STRINGS (e.g. \"$5,879,590.00\"), parse client-side.";
|
|
52
|
+
/** Build the `.csv?:embed=y` export URL + assert it stays on the allowlisted host. */
|
|
53
|
+
function csvUrl(v) {
|
|
54
|
+
const url = `${v.base}.csv?:embed=y`;
|
|
55
|
+
const allowedHost = new URL(v.base).hostname;
|
|
56
|
+
const built = new URL(url);
|
|
57
|
+
if (built.hostname !== allowedHost || built.protocol !== "https:") {
|
|
58
|
+
throw new ToolErrorCarrier({
|
|
59
|
+
kind: "invalid_input",
|
|
60
|
+
message: `Constructed Tableau URL host ${JSON.stringify(built.hostname)} (${built.protocol}) does not match the allowlisted view host ${JSON.stringify(allowedHost)} over https — refusing to fetch (SSRF safety).`,
|
|
61
|
+
retryable: false,
|
|
62
|
+
upstreamEndpoint: `tableau:${v.key}`,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return url;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fetch a curated Tableau Server Guest view's COMPLETE CSV export (keyless) and
|
|
69
|
+
* page over it client-side. `view` is an allowlist enum; `limit`/`offset` page
|
|
70
|
+
* the parsed rows. Returns { view, columns, rows:[{col:value…}] } + honest _meta
|
|
71
|
+
* (totalAvailable = the complete row count, NOT a page length).
|
|
72
|
+
*/
|
|
73
|
+
export async function viewCsv(args) {
|
|
74
|
+
const v = VIEW_BY_KEY.get(args.view);
|
|
75
|
+
if (!v) {
|
|
76
|
+
throw new ToolErrorCarrier({
|
|
77
|
+
kind: "invalid_input",
|
|
78
|
+
message: `Unknown Tableau view ${JSON.stringify(args.view)}. Allowed: ${TABLEAU_VIEWS.map((s) => s.key).join(", ")}.`,
|
|
79
|
+
retryable: false,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const limit = args.limit ?? 50;
|
|
83
|
+
const offset = args.offset ?? 0;
|
|
84
|
+
// ── Fetch the full view CSV. getText THROWS on 429/5xx/404/timeout (P2). ──
|
|
85
|
+
const url = csvUrl(v);
|
|
86
|
+
const body = await getText(url, { label: `tableau:${v.key}`, redirect: "error", timeoutMs: 45_000 });
|
|
87
|
+
// P4: a non-CSV body (HTML sign-in / error page) ⇒ schema_drift, never parsed as empty.
|
|
88
|
+
const text = body.replace(/^/, ""); // strip a leading UTF-8 BOM if present
|
|
89
|
+
if (text.trim().length === 0 || /^\s*</.test(text)) {
|
|
90
|
+
throw driftError(`tableau:${v.key}`, "Tableau returned an empty or non-CSV (HTML) body at HTTP 200 — the view may be gated, renamed, or a dashboard container (not a worksheet). Schema drift — refusing to report a fake empty.");
|
|
91
|
+
}
|
|
92
|
+
const table = parseCsv(text);
|
|
93
|
+
// P4: the first row MUST be a header (≥1 named column). No rows ⇒ drift.
|
|
94
|
+
if (table.length === 0 || !Array.isArray(table[0]) || table[0].length === 0) {
|
|
95
|
+
throw driftError(`tableau:${v.key}`, "Tableau CSV has no header row — schema drift.");
|
|
96
|
+
}
|
|
97
|
+
const header = table[0].map((h) => str(h) ?? "");
|
|
98
|
+
const dataRows = table.slice(1);
|
|
99
|
+
const totalAvailable = dataRows.length; // P1: complete view export = true total
|
|
100
|
+
const pageRows = dataRows.slice(offset, offset + limit).map((r) => {
|
|
101
|
+
const obj = {};
|
|
102
|
+
for (let i = 0; i < header.length; i++)
|
|
103
|
+
obj[header[i] || `col${i}`] = str(r[i]);
|
|
104
|
+
return obj;
|
|
105
|
+
});
|
|
106
|
+
const returned = pageRows.length;
|
|
107
|
+
const hasMore = offset + returned < totalAvailable;
|
|
108
|
+
const nextOffset = hasMore ? offset + returned : null;
|
|
109
|
+
// P1 cap disclosure: a suspiciously round total may indicate a server export cap.
|
|
110
|
+
const roundCap = totalAvailable >= 1000 && totalAvailable % 1000 === 0;
|
|
111
|
+
const notes = [
|
|
112
|
+
`Source: ${v.label} (Tableau Server Guest CSV export, keyless). ${v.note}`,
|
|
113
|
+
"totalAvailable is the COMPLETE view export row count (Tableau returns all summary rows; there is no server-side pagination) — limit/offset page over the full set client-side.",
|
|
114
|
+
"Pagination order follows the Tableau view's OWN sort. Each call re-fetches the complete CSV and slices it; if the view lacks a stable sort, offsets across SEPARATE calls could shift — for a consistent snapshot of a large view, fetch it with a single large limit.",
|
|
115
|
+
VALUE_NOTE,
|
|
116
|
+
"FRESHNESS is set by the publisher: a Tableau export carries no refresh timestamp, and the view reflects whenever the publisher last refreshed it, which can lag by weeks. Check the newest value in the view's date columns before relying on recency.",
|
|
117
|
+
];
|
|
118
|
+
if (roundCap)
|
|
119
|
+
notes.push(`NOTE: the row count (${totalAvailable}) is an exact multiple of 1000 — Tableau Server MAY have capped this summary export, so totalAvailable could be a lower bound. Treat with caution.`);
|
|
120
|
+
return withMeta({ view: v.key, columns: header, rows: pageRows }, {
|
|
121
|
+
source: `${new URL(v.base).hostname} via Tableau Server Guest CSV (keyless)`,
|
|
122
|
+
keylessMode: true,
|
|
123
|
+
returned,
|
|
124
|
+
totalAvailable,
|
|
125
|
+
filtersApplied: ["view"],
|
|
126
|
+
filtersDropped: [],
|
|
127
|
+
fieldsUnavailable: [],
|
|
128
|
+
pagination: { offset, limit, hasMore, nextOffset },
|
|
129
|
+
notes,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=tableau.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableau.js","sourceRoot":"","sources":["../src/tableau.ts"],"names":[],"mappings":"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"}
|
package/dist/usaspending.d.ts
CHANGED
|
@@ -286,7 +286,7 @@ export declare function searchRecompetes(args: {
|
|
|
286
286
|
awardId: string;
|
|
287
287
|
generatedInternalId: string;
|
|
288
288
|
incumbent: string;
|
|
289
|
-
amount: number;
|
|
289
|
+
amount: number | null;
|
|
290
290
|
currentEndDate: string;
|
|
291
291
|
daysUntilCurrentEnd: number;
|
|
292
292
|
potentialEndDate?: string | null;
|
|
@@ -320,7 +320,7 @@ export declare function searchExpiringContracts(args: {
|
|
|
320
320
|
contracts: {
|
|
321
321
|
awardId: string;
|
|
322
322
|
recipient: string;
|
|
323
|
-
amount: number;
|
|
323
|
+
amount: number | null;
|
|
324
324
|
endDate: string;
|
|
325
325
|
potentialEndDate: string | null;
|
|
326
326
|
awardingAgency: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usaspending.d.ts","sourceRoot":"","sources":["../src/usaspending.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"usaspending.d.ts","sourceRoot":"","sources":["../src/usaspending.ts"],"names":[],"mappings":"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"}
|
package/dist/usaspending.js
CHANGED
|
@@ -1146,8 +1146,11 @@ export async function searchRecompetes(args) {
|
|
|
1146
1146
|
pastWindow = true;
|
|
1147
1147
|
break;
|
|
1148
1148
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1149
|
+
// Filter/sort on a numeric view (absent = 0 for COMPARISON only), but EMIT the
|
|
1150
|
+
// raw value below so an ABSENT amount stays null — P3 null-never-0, matching every
|
|
1151
|
+
// sibling search tool ("an ABSENT Award Amount → null, NEVER a fabricated $0").
|
|
1152
|
+
const amountNum = row["Award Amount"] ?? 0;
|
|
1153
|
+
if (amountNum < minAwardValue)
|
|
1151
1154
|
continue;
|
|
1152
1155
|
const potentialEnd = includePotentialEnd
|
|
1153
1156
|
? row["Period of Performance Potential End Date"] ?? null
|
|
@@ -1161,7 +1164,7 @@ export async function searchRecompetes(args) {
|
|
|
1161
1164
|
awardId: row["Award ID"] ?? "",
|
|
1162
1165
|
generatedInternalId: row.generated_internal_id ?? "",
|
|
1163
1166
|
incumbent: row["Recipient Name"] ?? "",
|
|
1164
|
-
amount,
|
|
1167
|
+
amount: row["Award Amount"] ?? null,
|
|
1165
1168
|
currentEndDate: end,
|
|
1166
1169
|
daysUntilCurrentEnd: d,
|
|
1167
1170
|
...(includePotentialEnd
|
|
@@ -1191,8 +1194,11 @@ export async function searchRecompetes(args) {
|
|
|
1191
1194
|
results.sort((a, b) => {
|
|
1192
1195
|
if (a.daysUntilCurrentEnd !== b.daysUntilCurrentEnd)
|
|
1193
1196
|
return a.daysUntilCurrentEnd - b.daysUntilCurrentEnd;
|
|
1194
|
-
|
|
1195
|
-
|
|
1197
|
+
// A null amount (P3 — absent, not $0) sorts as 0 for this tiebreak ONLY; it is
|
|
1198
|
+
// never surfaced as 0 in the output.
|
|
1199
|
+
const av = a.amount ?? 0, bv = b.amount ?? 0;
|
|
1200
|
+
if (bv !== av)
|
|
1201
|
+
return bv - av;
|
|
1196
1202
|
return a.awardId.localeCompare(b.awardId);
|
|
1197
1203
|
});
|
|
1198
1204
|
const totalInWindow = results.length; // EXACT iff not scanTruncated
|
|
@@ -1203,10 +1209,15 @@ export async function searchRecompetes(args) {
|
|
|
1203
1209
|
// (early-stop fired). If the scan budget truncated, it is unknown → null,
|
|
1204
1210
|
// and the returned set is a lower bound.
|
|
1205
1211
|
const totalAvailable = scanTruncated ? null : totalInWindow;
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1212
|
+
// `nextOffset` may ONLY advance into rows we ACTUALLY scanned. The un-scanned
|
|
1213
|
+
// remainder (scanTruncated) is NOT offset-reachable: paging past totalInWindow
|
|
1214
|
+
// re-runs the whole bounded scan and returns EMPTY pages forever — the
|
|
1215
|
+
// "re-fetch the SAME page" livelock every other tool in this module emits
|
|
1216
|
+
// nextOffset:null to avoid. So advance the cursor only while more SCANNED rows
|
|
1217
|
+
// remain; signal the un-scanned tail via hasMore:true + nextOffset:null (the
|
|
1218
|
+
// notes already tell the caller to raise scanBudgetPages, not to paginate).
|
|
1219
|
+
const moreInScanned = startIdx + pageSize < totalInWindow;
|
|
1220
|
+
const hasMore = moreInScanned || scanTruncated;
|
|
1210
1221
|
const truncated = hasMore || scanTruncated;
|
|
1211
1222
|
const notes = [
|
|
1212
1223
|
`Completeness boundary: only contracts with a recorded action in the last ${actionDateLookbackYears} year(s) are included (an action_date lower bound is required to make the End-Date sort reach the window; contracts with no action in that span are not returned).`,
|
|
@@ -1236,7 +1247,7 @@ export async function searchRecompetes(args) {
|
|
|
1236
1247
|
pagination: {
|
|
1237
1248
|
offset: startIdx,
|
|
1238
1249
|
limit: pageSize,
|
|
1239
|
-
nextOffset:
|
|
1250
|
+
nextOffset: moreInScanned ? startIdx + pageSize : null,
|
|
1240
1251
|
hasMore,
|
|
1241
1252
|
},
|
|
1242
1253
|
filtersApplied,
|