@cyanheads/congressgov-mcp-server 0.8.1 → 0.9.1
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/AGENTS.md +44 -17
- package/CLAUDE.md +44 -17
- package/Dockerfile +4 -0
- package/README.md +35 -124
- package/changelog/0.9.x/0.9.0.md +25 -0
- package/changelog/0.9.x/0.9.1.md +31 -0
- package/dist/config/server-config.d.ts +0 -7
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +1 -9
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/roll-votes.tool.js +3 -2
- package/dist/mcp-server/tools/definitions/roll-votes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts +49 -4
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.js +102 -5
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.js.map +1 -1
- package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/format-helpers.js +37 -8
- package/dist/mcp-server/tools/format-helpers.js.map +1 -1
- package/dist/mcp-server/tools/tool-helpers.d.ts +11 -4
- package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-helpers.js +12 -4
- package/dist/mcp-server/tools/tool-helpers.js.map +1 -1
- package/dist/services/call-budget.d.ts +77 -0
- package/dist/services/call-budget.d.ts.map +1 -0
- package/dist/services/call-budget.js +118 -0
- package/dist/services/call-budget.js.map +1 -0
- package/dist/services/congress-api/congress-api-service.d.ts +4 -0
- package/dist/services/congress-api/congress-api-service.d.ts.map +1 -1
- package/dist/services/congress-api/congress-api-service.js +60 -32
- package/dist/services/congress-api/congress-api-service.js.map +1 -1
- package/dist/services/congress-documents/congress-documents-service.d.ts +46 -15
- package/dist/services/congress-documents/congress-documents-service.d.ts.map +1 -1
- package/dist/services/congress-documents/congress-documents-service.js +95 -24
- package/dist/services/congress-documents/congress-documents-service.js.map +1 -1
- package/dist/services/congress-documents/document-body-cache.d.ts +66 -0
- package/dist/services/congress-documents/document-body-cache.d.ts.map +1 -0
- package/dist/services/congress-documents/document-body-cache.js +122 -0
- package/dist/services/congress-documents/document-body-cache.js.map +1 -0
- package/dist/services/congress-mirror/ingest.d.ts +13 -7
- package/dist/services/congress-mirror/ingest.d.ts.map +1 -1
- package/dist/services/congress-mirror/ingest.js +33 -10
- package/dist/services/congress-mirror/ingest.js.map +1 -1
- package/dist/services/congress-mirror/schema.d.ts.map +1 -1
- package/dist/services/congress-mirror/schema.js +15 -1
- package/dist/services/congress-mirror/schema.js.map +1 -1
- package/dist/services/senate-lis/parse.d.ts +23 -0
- package/dist/services/senate-lis/parse.d.ts.map +1 -1
- package/dist/services/senate-lis/parse.js +49 -5
- package/dist/services/senate-lis/parse.js.map +1 -1
- package/dist/services/senate-lis/senate-vote-service.d.ts.map +1 -1
- package/dist/services/senate-lis/senate-vote-service.js +32 -25
- package/dist/services/senate-lis/senate-vote-service.js.map +1 -1
- package/dist/utils/congress-calendar.d.ts +15 -0
- package/dist/utils/congress-calendar.d.ts.map +1 -0
- package/dist/utils/congress-calendar.js +33 -0
- package/dist/utils/congress-calendar.js.map +1 -0
- package/package.json +7 -6
- package/scripts/_mirror-context.ts +15 -9
- package/scripts/congress-mirror-init.ts +1 -1
- package/scripts/congress-mirror-refresh.ts +1 -1
- package/scripts/congress-mirror-verify.ts +5 -4
- package/server.json +3 -3
- package/skills/congressgov-guide/SKILL.md +50 -0
|
@@ -8,6 +8,19 @@
|
|
|
8
8
|
*/
|
|
9
9
|
/** Primary table name (the MirrorService-owned table). */
|
|
10
10
|
export const BILLS_TABLE = 'bills';
|
|
11
|
+
/**
|
|
12
|
+
* Version 2 backfills summaries. Stores built before it requested the summaries
|
|
13
|
+
* list without a date window, so every stored summary is null, and a refresh only
|
|
14
|
+
* re-emits bills updated since the checkpoint. Clearing the checkpoint makes the
|
|
15
|
+
* next refresh re-walk every bill; the completion marker stays, so search keeps
|
|
16
|
+
* serving throughout. A no-op on a fresh store, which has no checkpoint yet.
|
|
17
|
+
*/
|
|
18
|
+
const clearRefreshCheckpoint = {
|
|
19
|
+
version: 2,
|
|
20
|
+
up(handle) {
|
|
21
|
+
handle.prepare('UPDATE mirror_sync_state SET checkpoint = NULL WHERE id = 1').run();
|
|
22
|
+
},
|
|
23
|
+
};
|
|
11
24
|
/**
|
|
12
25
|
* The MirrorService primary-table spec. One row per bill, merged from the bill
|
|
13
26
|
* list (title, chamber, latest action, update date) and the CRS summaries list
|
|
@@ -19,7 +32,8 @@ export function billStoreSpec(path) {
|
|
|
19
32
|
path,
|
|
20
33
|
table: BILLS_TABLE,
|
|
21
34
|
primaryKey: 'billId',
|
|
22
|
-
version:
|
|
35
|
+
version: 2,
|
|
36
|
+
migrations: [clearRefreshCheckpoint],
|
|
23
37
|
columns: {
|
|
24
38
|
billId: 'TEXT',
|
|
25
39
|
congress: 'INTEGER',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/services/congress-mirror/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,MAAM;YACrB,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,EAAE,MAAM;YACxB,UAAU,EAAE,MAAM;SACnB;QACD,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACzB,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;YACzB,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;YACzB,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE;YAC9B,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;SAC5B;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/services/congress-mirror/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAc;IACxC,OAAO,EAAE,CAAC;IACV,EAAE,CAAC,MAAM;QACP,MAAM,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAAE,CAAC;IACtF,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,MAAM;YACrB,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,EAAE,MAAM;YACxB,UAAU,EAAE,MAAM;SACnB;QACD,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACzB,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;YACzB,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;YACzB,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE;YAC9B,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;SAC5B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
* a nested `<measure>`, empty self-closing elements, single-element collapse) that
|
|
11
11
|
* are easy to get wrong and worth pinning with tests.
|
|
12
12
|
*
|
|
13
|
+
* The feed's calendar facts live here too: the congress it starts at
|
|
14
|
+
* (`SENATE_VOTE_FIRST_CONGRESS`) and the session a dated vote falls in
|
|
15
|
+
* (`senateSessionForDate`), shared by the service and by tools that point at it.
|
|
16
|
+
*
|
|
13
17
|
* Parser config notes:
|
|
14
18
|
* - `isArray` forces `<vote>` and `<member>` to arrays so a session/vote with a
|
|
15
19
|
* single entry doesn't collapse to an object.
|
|
@@ -19,6 +23,25 @@
|
|
|
19
23
|
* @module services/senate-lis/parse
|
|
20
24
|
*/
|
|
21
25
|
import type { ParsedRollCallVote, SenateMemberVote, SenatePartyTotal, SenateVoteSummary } from './types.js';
|
|
26
|
+
/**
|
|
27
|
+
* The first congress whose roll call votes the LIS feed publishes. Nothing points a
|
|
28
|
+
* caller at a Senate vote from an earlier congress.
|
|
29
|
+
*/
|
|
30
|
+
export declare const SENATE_VOTE_FIRST_CONGRESS = 101;
|
|
31
|
+
/** The feed's coverage, as the Senate "no votes" messages state it. */
|
|
32
|
+
export declare const SENATE_VOTE_COVERAGE: string;
|
|
33
|
+
/**
|
|
34
|
+
* The session of `congress` a vote dated `date` (`YYYY-MM-DD`) was cast in, or
|
|
35
|
+
* `undefined` when the date has another shape or falls outside the congress.
|
|
36
|
+
*
|
|
37
|
+
* The congress's first year is session 1 and its second year session 2. A second
|
|
38
|
+
* session can also sit through January 1–3 of the year after, until the next
|
|
39
|
+
* congress convenes: the 116th's second session voted on 2021-01-01, and the 115th's
|
|
40
|
+
* opened on 2018-01-03 with vote 1. The calendar parity of the year alone misses that
|
|
41
|
+
* tail. No Senate vote from the 101st Congress onward was cast by a first session in
|
|
42
|
+
* those January days, so they always read as session 2.
|
|
43
|
+
*/
|
|
44
|
+
export declare function senateSessionForDate(congress: number, date: string): 1 | 2 | undefined;
|
|
22
45
|
/** Parse the session vote menu into summary rows, in feed order (newest first). */
|
|
23
46
|
export declare function parseVoteMenu(xml: string): SenateVoteSummary[];
|
|
24
47
|
/** Parse an individual roll call vote into its record and full member roster. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAIhB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AA2DpB;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAyB9C,uEAAuE;AACvE,eAAO,MAAM,oBAAoB,QAA4J,CAAC;AAY9L;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAWtF;AA4DD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAkC9D;AAgDD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAuCjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CA6BlF"}
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
* a nested `<measure>`, empty self-closing elements, single-element collapse) that
|
|
11
11
|
* are easy to get wrong and worth pinning with tests.
|
|
12
12
|
*
|
|
13
|
+
* The feed's calendar facts live here too: the congress it starts at
|
|
14
|
+
* (`SENATE_VOTE_FIRST_CONGRESS`) and the session a dated vote falls in
|
|
15
|
+
* (`senateSessionForDate`), shared by the service and by tools that point at it.
|
|
16
|
+
*
|
|
13
17
|
* Parser config notes:
|
|
14
18
|
* - `isArray` forces `<vote>` and `<member>` to arrays so a session/vote with a
|
|
15
19
|
* single entry doesn't collapse to an object.
|
|
@@ -19,6 +23,7 @@
|
|
|
19
23
|
* @module services/senate-lis/parse
|
|
20
24
|
*/
|
|
21
25
|
import { XMLParser } from 'fast-xml-parser';
|
|
26
|
+
import { congressFirstYear, FIRST_CONGRESS_YEAR, ordinal } from '../../utils/congress-calendar.js';
|
|
22
27
|
const parser = new XMLParser({
|
|
23
28
|
ignoreAttributes: true,
|
|
24
29
|
trimValues: true,
|
|
@@ -70,8 +75,11 @@ function defined(obj) {
|
|
|
70
75
|
const MENU_DATE_RE = /^(\d{1,2})-([A-Za-z]{3})$/;
|
|
71
76
|
/** Indexed by calendar order — the index is the month the walk compares. */
|
|
72
77
|
const MONTH_ABBREVIATIONS = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' ');
|
|
73
|
-
/**
|
|
74
|
-
|
|
78
|
+
/**
|
|
79
|
+
* The first congress whose roll call votes the LIS feed publishes. Nothing points a
|
|
80
|
+
* caller at a Senate vote from an earlier congress.
|
|
81
|
+
*/
|
|
82
|
+
export const SENATE_VOTE_FIRST_CONGRESS = 101;
|
|
75
83
|
/** Day and 0-based month of a `DD-Mon` menu date, or `undefined` when it is neither. */
|
|
76
84
|
function parseMenuDate(value) {
|
|
77
85
|
const match = value === undefined ? null : MENU_DATE_RE.exec(value);
|
|
@@ -88,13 +96,49 @@ function isoDate(year, month, day) {
|
|
|
88
96
|
}
|
|
89
97
|
return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
|
|
90
98
|
}
|
|
99
|
+
/** The calendar year a congress opens in, or `undefined` when `congress` is not a positive integer. */
|
|
100
|
+
function openingYear(congress) {
|
|
101
|
+
if (!Number.isInteger(congress) || congress < 1)
|
|
102
|
+
return;
|
|
103
|
+
return congressFirstYear(congress);
|
|
104
|
+
}
|
|
105
|
+
/** The feed's coverage, as the Senate "no votes" messages state it. */
|
|
106
|
+
export const SENATE_VOTE_COVERAGE = `the Senate publishes roll call votes from the ${ordinal(SENATE_VOTE_FIRST_CONGRESS)} Congress (${congressFirstYear(SENATE_VOTE_FIRST_CONGRESS)}) onward`;
|
|
91
107
|
/** The calendar year a congress's session opens in — the 118th's first session opened in 2023. */
|
|
92
108
|
function nominalSessionYear(congress, session) {
|
|
93
|
-
|
|
109
|
+
const firstYear = openingYear(congress);
|
|
110
|
+
if (firstYear === undefined || (session !== 1 && session !== 2))
|
|
94
111
|
return;
|
|
95
|
-
|
|
112
|
+
return firstYear + (session - 1);
|
|
113
|
+
}
|
|
114
|
+
/** `YYYY-MM-DD`, the shape of a Congress.gov `actionDate`. */
|
|
115
|
+
const ISO_DATE_RE = /^(\d{4})-\d{2}-\d{2}$/;
|
|
116
|
+
/**
|
|
117
|
+
* The session of `congress` a vote dated `date` (`YYYY-MM-DD`) was cast in, or
|
|
118
|
+
* `undefined` when the date has another shape or falls outside the congress.
|
|
119
|
+
*
|
|
120
|
+
* The congress's first year is session 1 and its second year session 2. A second
|
|
121
|
+
* session can also sit through January 1–3 of the year after, until the next
|
|
122
|
+
* congress convenes: the 116th's second session voted on 2021-01-01, and the 115th's
|
|
123
|
+
* opened on 2018-01-03 with vote 1. The calendar parity of the year alone misses that
|
|
124
|
+
* tail. No Senate vote from the 101st Congress onward was cast by a first session in
|
|
125
|
+
* those January days, so they always read as session 2.
|
|
126
|
+
*/
|
|
127
|
+
export function senateSessionForDate(congress, date) {
|
|
128
|
+
const firstYear = openingYear(congress);
|
|
129
|
+
const match = ISO_DATE_RE.exec(date);
|
|
130
|
+
if (firstYear === undefined || !match)
|
|
96
131
|
return;
|
|
97
|
-
|
|
132
|
+
const year = Number(match[1]);
|
|
133
|
+
if (year === firstYear)
|
|
134
|
+
return 1;
|
|
135
|
+
if (year === firstYear + 1)
|
|
136
|
+
return 2;
|
|
137
|
+
/** `MM-DD` is fixed-width, so string order is calendar order. */
|
|
138
|
+
const monthDay = date.slice(5);
|
|
139
|
+
if (year === firstYear + 2 && monthDay >= '01-01' && monthDay <= '01-03')
|
|
140
|
+
return 2;
|
|
141
|
+
return;
|
|
98
142
|
}
|
|
99
143
|
/** The year the menu's own dates start in: its `<congress_year>`, else the nominal one. */
|
|
100
144
|
function menuBaseYear(root) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAW/F,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,IAAI;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;CACxD,CAAC,CAAC;AAIH,SAAS,GAAG,CAAC,KAAc;IACzB,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,kGAAkG;AAClG,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,wFAAwF;AACxF,SAAS,GAAG,CAAC,KAAc;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACpD,CAAC;AAED,0EAA0E;AAC1E,SAAS,GAAG,CAAC,KAAc;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,OAAO,CAAI,KAAiC;IACnD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CACd,GAAM;IAEN,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1F,OAAO,GAA4D,CAAC;AACtE,CAAC;AAED,gFAAgF;AAChF,MAAM,YAAY,GAAG,2BAA2B,CAAC;AACjD,4EAA4E;AAC5E,MAAM,mBAAmB,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEzF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,wFAAwF;AACxF,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAE,KAAK,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACvD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,CAAC;QAChG,OAAO;IACT,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,uGAAuG;AACvG,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IACxD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAAG,iDAAiD,OAAO,CAAC,0BAA0B,CAAC,cAAc,iBAAiB,CAAC,0BAA0B,CAAC,UAAU,CAAC;AAE9L,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO;IACxE,OAAO,SAAS,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,8DAA8D;AAC9D,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,IAAY;IACjE,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK;QAAE,OAAO;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS,GAAG,CAAC,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO;QAAE,OAAO,CAAC,CAAC;IACnF,OAAO;AACT,CAAC;AAED,2FAA2F;AAC3F,SAAS,YAAY,CAAC,IAAe;IACnC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,mBAAmB;QAAE,OAAO,SAAS,CAAC;IACtF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,WAAqB,EACrB,SAAiC,EACjC,QAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAqB,WAAW,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,SAAS,GAAG,WAAW;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,WAAW,CAAC,CAAC,CAAY,GAAI,WAAW,CAAC,CAAC,CAAY,CAAC,CAAC;IAE3E,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,aAAiC,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,aAAa;YAAE,IAAI,EAAE,CAAC;QACtE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAiB;IACtC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,QAAqB,CAAC;QAClC,OAAO,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAkC,CAAC,YAAY,CAAC;IAC9E,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAuC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAgB,CAAC;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,mBAAmB,CACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAC1C,SAAS,EACT,YAAY,CAAC,IAAI,CAAC,CACnB,CAAC;IAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAqB,EAAE;QAClD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAc,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,GAAG,OAAO,CAAC;gBACT,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;gBAC1B,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC;gBACjC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtB,QAAQ;gBACR,OAAO;gBACP,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAc;IACnC,MAAM,KAAK,GAAuB,OAAO,CAAC;QACxC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7E,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5B,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC9B,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC;KAC1C,CAAC,CAAC;IACH,0EAA0E;IAC1E,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACrF,OAAO;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,SAAoB;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/C;iGAC6F;IAC7F,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,OAAO;QACL,MAAM;QACN,GAAG,OAAO,CAAC;YACT,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,4BAA4B,CAAC;YAC7D,oBAAoB,EAAE,GAAG,CAAC,SAAS,CAAC,iCAAiC,CAAC;YACtE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;SAC1C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAiB;IACpC,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,GAAG,OAAO,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;YACnC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YACxB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;SACvC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAoC,CAAC,cAAc,CAAC;IAClF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAc,CAAC;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAc,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAc,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,OAA2C,CAAC;IACrE,MAAM,OAAO,GAAI,OAAO,CAAC,WAAW,EAAE,MAAM,CAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE/E,MAAM,IAAI,GAAqB;QAC7B,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC5B,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1B,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC,KAAK,EAAE;YACL,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,GAAG,OAAO,CAAC;YACT,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7B,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC9C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/B,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1C,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC9C,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACnD,QAAQ;YACR,SAAS;SACV,CAAC;KACH,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC5D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;QAClC,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,KAAK;gBACR,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,CAAC,SAAS,EAAE,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senate-vote-service.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/senate-vote-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"senate-vote-service.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/senate-vote-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAqBtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAqCxF,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,oBAAqB,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAkBF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,YAAY,OAAO,GAAE,MAAyB,EAE7C;IAEK,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoBrF;IAEK,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAInF;IAEK,cAAc,CAClB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,CAAC,EAAE,OAAO,GACZ,OAAO,CAAC,uBAAuB,CAAC,CAWlC;YAEa,SAAS;YAaT,QAAQ;YAsCR,OAAO;IAuCrB,OAAO,CAAC,gBAAgB;IAOxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,cAAc;CAIvB;AAID,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
* @module services/senate-lis/senate-vote-service
|
|
19
19
|
*/
|
|
20
20
|
import { JsonRpcErrorCode, McpError, notFound, serviceUnavailable, } from '@cyanheads/mcp-ts-core/errors';
|
|
21
|
-
import { defaultIsTransient, fetchWithTimeout, requestContextService,
|
|
22
|
-
import {
|
|
21
|
+
import { defaultIsTransient, fetchWithTimeout, requestContextService, } from '@cyanheads/mcp-ts-core/utils';
|
|
22
|
+
import { withCallBudget } from '../call-budget.js';
|
|
23
|
+
import { ordinal } from '../../utils/congress-calendar.js';
|
|
24
|
+
import { computePartyTotals, parseRollCallVote, parseVoteMenu, SENATE_VOTE_COVERAGE, } from './parse.js';
|
|
23
25
|
const DEFAULT_BASE_URL = 'https://www.senate.gov/legislative/LIS';
|
|
24
26
|
const REQUEST_TIMEOUT_MS = 12_000;
|
|
25
27
|
const MAX_ATTEMPTS = 3;
|
|
@@ -34,28 +36,24 @@ const NOT_FOUND_RECOVERY = {
|
|
|
34
36
|
hint: "Use operation 'list' with chamber 'senate' to find valid vote numbers for the congress and session, then retry.",
|
|
35
37
|
},
|
|
36
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* senate.gov's firewall answers non-browser clients with HTTP 403. A retry meets
|
|
41
|
+
* the same refusal, so it fails on the first attempt and says so, rather than
|
|
42
|
+
* reading as a brief outage.
|
|
43
|
+
*/
|
|
44
|
+
const REFUSED_RECOVERY = {
|
|
45
|
+
reason: 'upstream_error',
|
|
46
|
+
retryable: false,
|
|
47
|
+
recovery: {
|
|
48
|
+
hint: "Senate roll call votes cannot be retrieved while senate.gov refuses automated requests; House votes (chamber 'house') are unaffected.",
|
|
49
|
+
},
|
|
50
|
+
};
|
|
37
51
|
const UPSTREAM_ERROR_RECOVERY = {
|
|
38
52
|
reason: 'upstream_error',
|
|
39
53
|
recovery: {
|
|
40
54
|
hint: 'Retry after a short delay; the Senate.gov LIS feed may be temporarily unavailable.',
|
|
41
55
|
},
|
|
42
56
|
};
|
|
43
|
-
/** English ordinal for a congress number — "118" → "118th". */
|
|
44
|
-
function ordinal(n) {
|
|
45
|
-
const lastTwo = n % 100;
|
|
46
|
-
if (lastTwo >= 11 && lastTwo <= 13)
|
|
47
|
-
return `${n}th`;
|
|
48
|
-
switch (n % 10) {
|
|
49
|
-
case 1:
|
|
50
|
-
return `${n}st`;
|
|
51
|
-
case 2:
|
|
52
|
-
return `${n}nd`;
|
|
53
|
-
case 3:
|
|
54
|
-
return `${n}rd`;
|
|
55
|
-
default:
|
|
56
|
-
return `${n}th`;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
57
|
function isNativeAbortSignal(value) {
|
|
60
58
|
if (typeof AbortSignal !== 'function' ||
|
|
61
59
|
typeof AbortSignal.prototype.throwIfAborted !== 'function' ||
|
|
@@ -77,7 +75,7 @@ export class SenateVoteService {
|
|
|
77
75
|
}
|
|
78
76
|
async listVotes(params, ctx) {
|
|
79
77
|
const url = `${this.baseUrl}/roll_call_lists/vote_menu_${params.congress}_${params.session}.xml`;
|
|
80
|
-
const xml = await this.fetchXml(url, `SenateVoteService GET vote_menu_${params.congress}_${params.session}`, ctx, `No Senate roll call votes found for the ${ordinal(params.congress)} Congress, session ${params.session}. Valid sessions are 1 and 2;
|
|
78
|
+
const xml = await this.fetchXml(url, `SenateVoteService GET vote_menu_${params.congress}_${params.session}`, ctx, `No Senate roll call votes found for the ${ordinal(params.congress)} Congress, session ${params.session}. Valid sessions are 1 and 2; ${SENATE_VOTE_COVERAGE}.`, { congress: params.congress, session: params.session });
|
|
81
79
|
const all = parseVoteMenu(xml);
|
|
82
80
|
/** Roll number is chronological within a session; sort explicitly so order does
|
|
83
81
|
* not depend on feed ordering. */
|
|
@@ -111,7 +109,12 @@ export class SenateVoteService {
|
|
|
111
109
|
async fetchXml(url, operation, ctx, notFoundMessage, data) {
|
|
112
110
|
const requestContext = this.getRequestContext(ctx, operation);
|
|
113
111
|
const signal = this.getAbortSignal(ctx);
|
|
114
|
-
const text = await
|
|
112
|
+
const text = await withCallBudget((attempt) => this.doFetch(url, requestContext, attempt), {
|
|
113
|
+
call: ctx,
|
|
114
|
+
attemptTimeoutMs: REQUEST_TIMEOUT_MS,
|
|
115
|
+
upstream: 'senate.gov',
|
|
116
|
+
request: 'the Senate LIS feed',
|
|
117
|
+
recovery: UPSTREAM_ERROR_RECOVERY.recovery,
|
|
115
118
|
operation,
|
|
116
119
|
context: requestContext,
|
|
117
120
|
baseDelayMs: BASE_BACKOFF_MS,
|
|
@@ -132,22 +135,26 @@ export class SenateVoteService {
|
|
|
132
135
|
}
|
|
133
136
|
return trimmed;
|
|
134
137
|
}
|
|
135
|
-
async doFetch(url, requestContext,
|
|
138
|
+
async doFetch(url, requestContext, attempt) {
|
|
136
139
|
try {
|
|
137
|
-
const response = await fetchWithTimeout(url,
|
|
140
|
+
const response = await fetchWithTimeout(url, attempt.timeoutMs, requestContext, {
|
|
138
141
|
headers: { Accept: 'application/xml, text/xml, */*' },
|
|
139
|
-
|
|
142
|
+
signal: attempt.signal,
|
|
140
143
|
});
|
|
141
144
|
return await response.text();
|
|
142
145
|
}
|
|
143
146
|
catch (error) {
|
|
144
147
|
/** fetchWithTimeout throws a status-mapped McpError whose message embeds the
|
|
145
148
|
* full URL. The missing-resource case never lands here (the host answers 200
|
|
146
|
-
* with HTML), so a
|
|
147
|
-
*
|
|
149
|
+
* with HTML), so a 403 is the host refusing the client and any other non-2xx
|
|
150
|
+
* is an outage/timeout — surface either as a clean upstream error without
|
|
151
|
+
* echoing the URL. */
|
|
148
152
|
if (error instanceof McpError) {
|
|
149
153
|
if (error.code === JsonRpcErrorCode.RequestCancelled)
|
|
150
154
|
throw error;
|
|
155
|
+
if (error.data?.status === 403) {
|
|
156
|
+
throw serviceUnavailable('senate.gov refused the request for the Senate LIS feed (HTTP 403).', REFUSED_RECOVERY, { cause: error });
|
|
157
|
+
}
|
|
151
158
|
throw serviceUnavailable('The Senate.gov LIS feed is temporarily unavailable.', {
|
|
152
159
|
...UPSTREAM_ERROR_RECOVERY,
|
|
153
160
|
...(error.data?.retryable === false ? { retryable: false } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senate-vote-service.js","sourceRoot":"","sources":["../../../src/services/senate-lis/senate-vote-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"senate-vote-service.js","sourceRoot":"","sources":["../../../src/services/senate-lis/senate-vote-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Congress numbering arithmetic shared by the API, Senate LIS, and mirror
|
|
3
|
+
* services and the server config: the 1st Congress sat in 1789 and each Congress since
|
|
4
|
+
* spans two years.
|
|
5
|
+
* @module utils/congress-calendar
|
|
6
|
+
*/
|
|
7
|
+
/** Calendar year the 1st Congress opened in. */
|
|
8
|
+
export declare const FIRST_CONGRESS_YEAR = 1789;
|
|
9
|
+
/** English ordinal for a congress number — "118" → "118th". */
|
|
10
|
+
export declare function ordinal(n: number): string;
|
|
11
|
+
/** The calendar year a congress opens in — the 118th opened in 2023. Takes a positive integer. */
|
|
12
|
+
export declare function congressFirstYear(congress: number): number;
|
|
13
|
+
/** Congress number covering a given date (2025–2026 → 119). */
|
|
14
|
+
export declare function currentCongressNumber(date?: Date): number;
|
|
15
|
+
//# sourceMappingURL=congress-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"congress-calendar.d.ts","sourceRoot":"","sources":["../../src/utils/congress-calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,+DAA+D;AAC/D,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAazC;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAErE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Congress numbering arithmetic shared by the API, Senate LIS, and mirror
|
|
3
|
+
* services and the server config: the 1st Congress sat in 1789 and each Congress since
|
|
4
|
+
* spans two years.
|
|
5
|
+
* @module utils/congress-calendar
|
|
6
|
+
*/
|
|
7
|
+
/** Calendar year the 1st Congress opened in. */
|
|
8
|
+
export const FIRST_CONGRESS_YEAR = 1789;
|
|
9
|
+
/** English ordinal for a congress number — "118" → "118th". */
|
|
10
|
+
export function ordinal(n) {
|
|
11
|
+
const lastTwo = n % 100;
|
|
12
|
+
if (lastTwo >= 11 && lastTwo <= 13)
|
|
13
|
+
return `${n}th`;
|
|
14
|
+
switch (n % 10) {
|
|
15
|
+
case 1:
|
|
16
|
+
return `${n}st`;
|
|
17
|
+
case 2:
|
|
18
|
+
return `${n}nd`;
|
|
19
|
+
case 3:
|
|
20
|
+
return `${n}rd`;
|
|
21
|
+
default:
|
|
22
|
+
return `${n}th`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** The calendar year a congress opens in — the 118th opened in 2023. Takes a positive integer. */
|
|
26
|
+
export function congressFirstYear(congress) {
|
|
27
|
+
return FIRST_CONGRESS_YEAR + 2 * (congress - 1);
|
|
28
|
+
}
|
|
29
|
+
/** Congress number covering a given date (2025–2026 → 119). */
|
|
30
|
+
export function currentCongressNumber(date = new Date()) {
|
|
31
|
+
return Math.floor((date.getUTCFullYear() - FIRST_CONGRESS_YEAR) / 2) + 1;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=congress-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"congress-calendar.js","sourceRoot":"","sources":["../../src/utils/congress-calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,+DAA+D;AAC/D,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC;IACxB,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,CAAC;YACJ,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB;YACE,OAAO,GAAG,CAAC,IAAI,CAAC;IACpB,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,mBAAmB,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,IAAI,GAAS,IAAI,IAAI,EAAE;IAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/congressgov-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Access U.S. congressional data (bills, votes, members, committees) via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/congressgov-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"changelog/",
|
|
14
|
+
"skills/",
|
|
14
15
|
"dist/",
|
|
15
16
|
"!dist/*.mcpb",
|
|
16
17
|
"scripts/_mirror-context.ts",
|
|
@@ -95,7 +96,7 @@
|
|
|
95
96
|
"access": "public"
|
|
96
97
|
},
|
|
97
98
|
"dependencies": {
|
|
98
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
99
|
+
"@cyanheads/mcp-ts-core": "^0.13.18",
|
|
99
100
|
"better-sqlite3": "^13.0.3",
|
|
100
101
|
"fast-xml-parser": "^5.11.2",
|
|
101
102
|
"node-cron": "^4.6.0",
|
|
@@ -103,12 +104,12 @@
|
|
|
103
104
|
"zod": "^4.6.7"
|
|
104
105
|
},
|
|
105
106
|
"devDependencies": {
|
|
106
|
-
"@biomejs/biome": "^2.6.
|
|
107
|
+
"@biomejs/biome": "^2.6.4",
|
|
107
108
|
"@socketsecurity/bun-security-scanner": "^1.1.3",
|
|
108
|
-
"@types/node": "^26.6.
|
|
109
|
+
"@types/node": "^26.6.6",
|
|
109
110
|
"depcheck": "^1.4.7",
|
|
110
|
-
"ignore": "^7.0.
|
|
111
|
-
"tsc-alias": "^1.9.
|
|
111
|
+
"ignore": "^7.0.14",
|
|
112
|
+
"tsc-alias": "^1.9.9",
|
|
112
113
|
"typescript": "^7.0.2",
|
|
113
114
|
"vitest": "^5.0.5"
|
|
114
115
|
}
|
|
@@ -1,30 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Shared bootstrap for the mirror lifecycle CLI scripts
|
|
3
3
|
* (congress-mirror-init / congress-mirror-refresh / congress-mirror-verify).
|
|
4
|
-
*
|
|
5
|
-
* hands back the underlying mirror — no MCP
|
|
6
|
-
* Imported by the three named scripts, so it
|
|
7
|
-
* tarball and the Docker image.
|
|
4
|
+
* Initializes the framework logger, builds the Congress API client and the mirror
|
|
5
|
+
* service from the environment, and hands back the underlying mirror — no MCP
|
|
6
|
+
* transport, no tool registration. Imported by the three named scripts, so it
|
|
7
|
+
* must travel with them in the npm tarball and the Docker image.
|
|
8
8
|
* @module scripts/_mirror-context
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import { config } from '@cyanheads/mcp-ts-core/config';
|
|
11
12
|
import type { Mirror } from '@cyanheads/mcp-ts-core/mirror';
|
|
13
|
+
import { logger } from '@cyanheads/mcp-ts-core/utils';
|
|
12
14
|
import { getServerConfig } from '@/config/server-config.js';
|
|
13
15
|
import { initCongressApi } from '@/services/congress-api/congress-api-service.js';
|
|
14
16
|
import { initCongressMirror } from '@/services/congress-mirror/congress-mirror-service.js';
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
|
-
*
|
|
19
|
+
* Initialize the logger, then build the mirror from env config and return its
|
|
20
|
+
* instance. The logger buffers records until `initialize()` and discards them at
|
|
21
|
+
* exit, so it starts first; `'stdio'` writes JSON lines to stderr and leaves
|
|
22
|
+
* stdout empty, at the `MCP_LOG_LEVEL` floor the server uses. The CLI builds the
|
|
18
23
|
* mirror regardless of `CONGRESS_MIRROR_ENABLED` (that flag gates the tool and the
|
|
19
24
|
* in-process scheduler, not out-of-band index construction); the ingester pages
|
|
20
25
|
* the live Congress.gov API via `CongressApiService`, so init it here.
|
|
21
26
|
*/
|
|
22
|
-
export function getMirror(): Mirror {
|
|
23
|
-
|
|
27
|
+
export async function getMirror(): Promise<Mirror> {
|
|
28
|
+
await logger.initialize(config.logLevel, 'stdio');
|
|
29
|
+
const serverConfig = getServerConfig();
|
|
24
30
|
initCongressApi();
|
|
25
31
|
const service = initCongressMirror({
|
|
26
|
-
mirrorPath:
|
|
27
|
-
congresses:
|
|
32
|
+
mirrorPath: serverConfig.mirrorPath,
|
|
33
|
+
congresses: serverConfig.congresses,
|
|
28
34
|
});
|
|
29
35
|
return service.mirrorInstance;
|
|
30
36
|
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { logger } from '@cyanheads/mcp-ts-core/utils';
|
|
12
12
|
import { getMirror } from './_mirror-context.js';
|
|
13
13
|
|
|
14
|
-
const mirror = getMirror();
|
|
14
|
+
const mirror = await getMirror();
|
|
15
15
|
logger.info('Starting Congress bill mirror init (full build)');
|
|
16
16
|
|
|
17
17
|
const result = await mirror.runSync({ mode: 'init', signal: AbortSignal.timeout(3_600_000) });
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { logger } from '@cyanheads/mcp-ts-core/utils';
|
|
13
13
|
import { getMirror } from './_mirror-context.js';
|
|
14
14
|
|
|
15
|
-
const mirror = getMirror();
|
|
15
|
+
const mirror = await getMirror();
|
|
16
16
|
logger.info('Starting Congress bill mirror refresh');
|
|
17
17
|
|
|
18
18
|
const result = await mirror.runSync({ mode: 'refresh', signal: AbortSignal.timeout(3_600_000) });
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
* @module scripts/congress-mirror-verify
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { logger } from '@cyanheads/mcp-ts-core/utils';
|
|
10
|
+
import { logger, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
11
11
|
import { getMirror } from './_mirror-context.js';
|
|
12
12
|
|
|
13
|
-
const mirror = getMirror();
|
|
13
|
+
const mirror = await getMirror();
|
|
14
|
+
const context = requestContextService.createRequestContext({ operation: 'mirror:verify' });
|
|
14
15
|
const status = await mirror.status();
|
|
15
16
|
|
|
16
17
|
logger.info(
|
|
@@ -19,14 +20,14 @@ logger.info(
|
|
|
19
20
|
if (status.error) logger.warning(`Last sync error: ${status.error}`);
|
|
20
21
|
|
|
21
22
|
if (!status.ready) {
|
|
22
|
-
logger.error('Mirror is NOT ready — run mirror:init to build the index.');
|
|
23
|
+
logger.error('Mirror is NOT ready — run mirror:init to build the index.', context);
|
|
23
24
|
await mirror.close();
|
|
24
25
|
process.exit(1);
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
const integrity = await mirror.store.integrityCheck();
|
|
28
29
|
if (!integrity.ok) {
|
|
29
|
-
logger.error(`SQLite integrity check FAILED: ${integrity.results.join('; ')}
|
|
30
|
+
logger.error(`SQLite integrity check FAILED: ${integrity.results.join('; ')}`, context);
|
|
30
31
|
await mirror.close();
|
|
31
32
|
process.exit(1);
|
|
32
33
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/congressgov-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.9.1",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/congressgov-mcp-server",
|
|
21
21
|
"runtimeHint": "npx",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.9.1",
|
|
23
23
|
"environmentVariables": [
|
|
24
24
|
{
|
|
25
25
|
"name": "CONGRESS_API_KEY",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
45
45
|
"identifier": "@cyanheads/congressgov-mcp-server",
|
|
46
46
|
"runtimeHint": "npx",
|
|
47
|
-
"version": "0.
|
|
47
|
+
"version": "0.9.1",
|
|
48
48
|
"environmentVariables": [
|
|
49
49
|
{
|
|
50
50
|
"name": "MCP_TRANSPORT_TYPE",
|