@cyanheads/congressgov-mcp-server 0.7.1 → 0.7.3
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 +20 -15
- package/CLAUDE.md +20 -15
- package/Dockerfile +23 -10
- package/README.md +90 -93
- package/changelog/0.7.x/0.7.2.md +20 -0
- package/changelog/0.7.x/0.7.3.md +36 -0
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +5 -4
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.js +93 -2
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.js +32 -4
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +2 -2
- package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/format-helpers.js +85 -30
- package/dist/mcp-server/tools/format-helpers.js.map +1 -1
- package/dist/mcp-server/tools/summary-window.d.ts +112 -0
- package/dist/mcp-server/tools/summary-window.d.ts.map +1 -0
- package/dist/mcp-server/tools/summary-window.js +182 -0
- package/dist/mcp-server/tools/summary-window.js.map +1 -0
- package/dist/mcp-server/tools/tool-helpers.d.ts +21 -4
- package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-helpers.js +21 -4
- package/dist/mcp-server/tools/tool-helpers.js.map +1 -1
- package/dist/services/congress-documents/extract-text-stream.js +1 -1
- package/dist/services/congress-documents/extract-text-stream.js.map +1 -1
- package/dist/services/congress-documents/extract-text.d.ts +0 -6
- package/dist/services/congress-documents/extract-text.d.ts.map +1 -1
- package/dist/services/congress-documents/extract-text.js +4 -37
- package/dist/services/congress-documents/extract-text.js.map +1 -1
- package/dist/services/congress-mirror/normalize.d.ts +4 -1
- package/dist/services/congress-mirror/normalize.d.ts.map +1 -1
- package/dist/services/congress-mirror/normalize.js +8 -12
- package/dist/services/congress-mirror/normalize.js.map +1 -1
- package/dist/services/senate-lis/parse.d.ts.map +1 -1
- package/dist/services/senate-lis/parse.js +74 -2
- package/dist/services/senate-lis/parse.js.map +1 -1
- package/dist/services/senate-lis/types.d.ts +8 -1
- package/dist/services/senate-lis/types.d.ts.map +1 -1
- package/dist/utils/character-references.d.ts +27 -0
- package/dist/utils/character-references.d.ts.map +1 -0
- package/dist/utils/character-references.js +60 -0
- package/dist/utils/character-references.js.map +1 -0
- package/package.json +7 -6
- package/server.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/services/congress-mirror/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/services/congress-mirror/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,IAAI;SACd,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;SAClC,OAAO,CAAC,mDAAmD,EAAE,GAAG,CAAC;SACjE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAIhB,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAIhB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAgJpB,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"}
|
|
@@ -66,6 +66,75 @@ function defined(obj) {
|
|
|
66
66
|
out[key] = value;
|
|
67
67
|
return out;
|
|
68
68
|
}
|
|
69
|
+
/** Menu rows publish `DD-Mon`; the year lives on the menu root, not the row. */
|
|
70
|
+
const MENU_DATE_RE = /^(\d{1,2})-([A-Za-z]{3})$/;
|
|
71
|
+
/** Indexed by calendar order — the index is the month the walk compares. */
|
|
72
|
+
const MONTH_ABBREVIATIONS = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' ');
|
|
73
|
+
/** The first Congress sat in 1789, and each one since has opened two years later. */
|
|
74
|
+
const FIRST_CONGRESS_YEAR = 1789;
|
|
75
|
+
/** Day and 0-based month of a `DD-Mon` menu date, or `undefined` when it is neither. */
|
|
76
|
+
function parseMenuDate(value) {
|
|
77
|
+
const match = value === undefined ? null : MENU_DATE_RE.exec(value);
|
|
78
|
+
if (!match)
|
|
79
|
+
return;
|
|
80
|
+
const month = MONTH_ABBREVIATIONS.indexOf(match[2].toLowerCase());
|
|
81
|
+
return month === -1 ? undefined : { day: Number(match[1]), month };
|
|
82
|
+
}
|
|
83
|
+
/** `YYYY-MM-DD`, or `undefined` when the day does not exist in that month. */
|
|
84
|
+
function isoDate(year, month, day) {
|
|
85
|
+
const date = new Date(Date.UTC(year, month, day));
|
|
86
|
+
if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month || date.getUTCDate() !== day) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
|
|
90
|
+
}
|
|
91
|
+
/** The calendar year a congress's session opens in — the 118th's first session opened in 2023. */
|
|
92
|
+
function nominalSessionYear(congress, session) {
|
|
93
|
+
if (!Number.isInteger(congress) || congress < 1)
|
|
94
|
+
return;
|
|
95
|
+
if (session !== 1 && session !== 2)
|
|
96
|
+
return;
|
|
97
|
+
return FIRST_CONGRESS_YEAR + 2 * (congress - 1) + (session - 1);
|
|
98
|
+
}
|
|
99
|
+
/** The year the menu's own dates start in: its `<congress_year>`, else the nominal one. */
|
|
100
|
+
function menuBaseYear(root) {
|
|
101
|
+
const published = num(root.congress_year);
|
|
102
|
+
if (Number.isInteger(published) && published >= FIRST_CONGRESS_YEAR)
|
|
103
|
+
return published;
|
|
104
|
+
return nominalSessionYear(num(root.congress), num(root.session));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve each row's calendar date from the menu's year and the session's vote
|
|
108
|
+
* sequence.
|
|
109
|
+
*
|
|
110
|
+
* The rows publish `DD-Mon` and the root names only the year the session opened,
|
|
111
|
+
* but a session can sit past December 31 — the 116th Congress cast votes 291 and
|
|
112
|
+
* 292 of its second session on January 1, 2021, under a `<congress_year>` of
|
|
113
|
+
* 2020. Roll numbers are chronological within a session, so walking them in
|
|
114
|
+
* ascending order and advancing the year wherever the month decreases resolves
|
|
115
|
+
* that tail without guessing. A row whose date does not parse is left unresolved
|
|
116
|
+
* rather than pinned to a neighbouring year.
|
|
117
|
+
*/
|
|
118
|
+
function resolveSessionDates(voteNumbers, voteDates, baseYear) {
|
|
119
|
+
const resolved = new Array(voteNumbers.length);
|
|
120
|
+
if (baseYear === undefined)
|
|
121
|
+
return resolved;
|
|
122
|
+
const ascending = voteNumbers
|
|
123
|
+
.map((_, index) => index)
|
|
124
|
+
.sort((a, b) => voteNumbers[a] - voteNumbers[b]);
|
|
125
|
+
let year = baseYear;
|
|
126
|
+
let previousMonth;
|
|
127
|
+
for (const index of ascending) {
|
|
128
|
+
const date = parseMenuDate(voteDates[index]);
|
|
129
|
+
if (!date)
|
|
130
|
+
continue;
|
|
131
|
+
if (previousMonth !== undefined && date.month < previousMonth)
|
|
132
|
+
year++;
|
|
133
|
+
previousMonth = date.month;
|
|
134
|
+
resolved[index] = isoDate(year, date.month, date.day);
|
|
135
|
+
}
|
|
136
|
+
return resolved;
|
|
137
|
+
}
|
|
69
138
|
/**
|
|
70
139
|
* Menu `<question>` is mixed content: plain text for most votes, but amendment
|
|
71
140
|
* votes nest a `<measure>` ("On the Amendment <measure>S.Amdt. 3331</measure>").
|
|
@@ -90,7 +159,9 @@ export function parseVoteMenu(xml) {
|
|
|
90
159
|
}
|
|
91
160
|
const votesNode = root.votes;
|
|
92
161
|
const votes = toArray(votesNode?.vote);
|
|
93
|
-
|
|
162
|
+
const voteDates = votes.map((vote) => opt(vote.vote_date));
|
|
163
|
+
const resolvedDates = resolveSessionDates(votes.map((vote) => num(vote.vote_number)), voteDates, menuBaseYear(root));
|
|
164
|
+
return votes.map((vote, index) => {
|
|
94
165
|
const { question, measure } = questionParts(vote.question);
|
|
95
166
|
const tally = (vote.vote_tally ?? {});
|
|
96
167
|
return {
|
|
@@ -99,7 +170,8 @@ export function parseVoteMenu(xml) {
|
|
|
99
170
|
yeas: num(tally.yeas),
|
|
100
171
|
nays: num(tally.nays),
|
|
101
172
|
...defined({
|
|
102
|
-
voteDate:
|
|
173
|
+
voteDate: voteDates[index],
|
|
174
|
+
voteDateIso: resolvedDates[index],
|
|
103
175
|
issue: opt(vote.issue),
|
|
104
176
|
question,
|
|
105
177
|
measure,
|
|
@@ -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":"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"}
|
|
@@ -17,8 +17,15 @@ export type SenateVoteSummary = {
|
|
|
17
17
|
chamber: 'senate';
|
|
18
18
|
/** Roll call number within the session (1-based, not zero-padded). */
|
|
19
19
|
voteNumber: number;
|
|
20
|
-
/** Short date as
|
|
20
|
+
/** Short date exactly as the menu publishes it, e.g. "21-Dec" — the feed carries no year. */
|
|
21
21
|
voteDate?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The row's calendar date as `YYYY-MM-DD`, derived from the menu's own
|
|
24
|
+
* `<congress_year>` and the session's vote sequence. A session can sit past
|
|
25
|
+
* December 31, so this is not the session's opening year for every row. Absent
|
|
26
|
+
* when the published short date does not parse or the menu names no year.
|
|
27
|
+
*/
|
|
28
|
+
voteDateIso?: string;
|
|
22
29
|
/** Associated measure label, e.g. "H.R. 10545", "PN373". */
|
|
23
30
|
issue?: string;
|
|
24
31
|
/** Vote question, e.g. "On Passage of the Bill", "On the Amendment". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,QAAQ,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/senate-lis/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Single-pass HTML/XML character-reference decoding — the one
|
|
3
|
+
* decoder every path that turns upstream markup into text runs through: the
|
|
4
|
+
* `content[]` Markdown renderers, the search mirror's plain-text index, and both
|
|
5
|
+
* document text extractors.
|
|
6
|
+
* @module utils/character-references
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the body of one character reference — what sits between `&` and `;`.
|
|
10
|
+
*
|
|
11
|
+
* Returns `undefined` for a reference this decoder does not recognize, which
|
|
12
|
+
* callers render verbatim rather than guessing at. That includes a numeric
|
|
13
|
+
* reference to a code point no string can carry as text: U+0000 (excluded from
|
|
14
|
+
* XML's character set, and the document extractor's internal boundary marker),
|
|
15
|
+
* a surrogate (half of a UTF-16 pair, never a character on its own), or anything
|
|
16
|
+
* past U+10FFFF.
|
|
17
|
+
*/
|
|
18
|
+
export declare function decodeCharacterReference(ref: string): string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Decode every character reference in `text` in one pass.
|
|
21
|
+
*
|
|
22
|
+
* A single pass is the point: decoding `&` in a sweep of its own, before or
|
|
23
|
+
* after the others, turns the literal `&lt;` into `<` instead of the `<`
|
|
24
|
+
* the text actually says. An unrecognized reference is left verbatim.
|
|
25
|
+
*/
|
|
26
|
+
export declare function decodeCharacterReferences(text: string): string;
|
|
27
|
+
//# sourceMappingURL=character-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-references.d.ts","sourceRoot":"","sources":["../../src/utils/character-references.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAexE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Single-pass HTML/XML character-reference decoding — the one
|
|
3
|
+
* decoder every path that turns upstream markup into text runs through: the
|
|
4
|
+
* `content[]` Markdown renderers, the search mirror's plain-text index, and both
|
|
5
|
+
* document text extractors.
|
|
6
|
+
* @module utils/character-references
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Named references Congress.gov and GPO emit. Numeric references decode
|
|
10
|
+
* generically. ` ` is the real U+00A0 — renderers that treat it as ordinary
|
|
11
|
+
* spacing fold it into their own whitespace handling.
|
|
12
|
+
*
|
|
13
|
+
* A `Map` rather than an object literal: a plain object also answers for every
|
|
14
|
+
* name it inherits, so `&constructor;` resolves to `Object` and reaches the
|
|
15
|
+
* output as the text of a function.
|
|
16
|
+
*/
|
|
17
|
+
const NAMED_REFERENCES = new Map([
|
|
18
|
+
['amp', '&'],
|
|
19
|
+
['apos', "'"],
|
|
20
|
+
['gt', '>'],
|
|
21
|
+
['lt', '<'],
|
|
22
|
+
['nbsp', ' '],
|
|
23
|
+
['quot', '"'],
|
|
24
|
+
]);
|
|
25
|
+
const CHARACTER_REFERENCE_RE = /&(#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z]+);/g;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the body of one character reference — what sits between `&` and `;`.
|
|
28
|
+
*
|
|
29
|
+
* Returns `undefined` for a reference this decoder does not recognize, which
|
|
30
|
+
* callers render verbatim rather than guessing at. That includes a numeric
|
|
31
|
+
* reference to a code point no string can carry as text: U+0000 (excluded from
|
|
32
|
+
* XML's character set, and the document extractor's internal boundary marker),
|
|
33
|
+
* a surrogate (half of a UTF-16 pair, never a character on its own), or anything
|
|
34
|
+
* past U+10FFFF.
|
|
35
|
+
*/
|
|
36
|
+
export function decodeCharacterReference(ref) {
|
|
37
|
+
if (ref.startsWith('#')) {
|
|
38
|
+
const hex = ref[1] === 'x' || ref[1] === 'X';
|
|
39
|
+
const codePoint = Number.parseInt(hex ? ref.slice(2) : ref.slice(1), hex ? 16 : 10);
|
|
40
|
+
if (!Number.isInteger(codePoint) ||
|
|
41
|
+
codePoint === 0 ||
|
|
42
|
+
codePoint > 0x10ffff ||
|
|
43
|
+
(codePoint >= 0xd800 && codePoint <= 0xdfff)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
return String.fromCodePoint(codePoint);
|
|
47
|
+
}
|
|
48
|
+
return NAMED_REFERENCES.get(ref.toLowerCase());
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Decode every character reference in `text` in one pass.
|
|
52
|
+
*
|
|
53
|
+
* A single pass is the point: decoding `&` in a sweep of its own, before or
|
|
54
|
+
* after the others, turns the literal `&lt;` into `<` instead of the `<`
|
|
55
|
+
* the text actually says. An unrecognized reference is left verbatim.
|
|
56
|
+
*/
|
|
57
|
+
export function decodeCharacterReferences(text) {
|
|
58
|
+
return text.replace(CHARACTER_REFERENCE_RE, (match, ref) => decodeCharacterReference(ref) ?? match);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=character-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-references.js","sourceRoot":"","sources":["../../src/utils/character-references.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,MAAM,EAAE,GAAG,CAAC;IACb,CAAC,IAAI,EAAE,GAAG,CAAC;IACX,CAAC,IAAI,EAAE,GAAG,CAAC;IACX,CAAC,MAAM,EAAE,GAAG,CAAC;IACb,CAAC,MAAM,EAAE,GAAG,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,uCAAuC,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YAC5B,SAAS,KAAK,CAAC;YACf,SAAS,GAAG,QAAQ;YACpB,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,EAC5C,CAAC;YACD,OAAO;QACT,CAAC;QACD,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,IAAI,CAAC,OAAO,CACjB,sBAAsB,EACtB,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,KAAK,CAC/D,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/congressgov-mcp-server",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "Access U.S. congressional data - bills, votes, members, committees - through MCP. STDIO & Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/congressgov-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"changelog/",
|
|
14
14
|
"dist/",
|
|
15
|
+
"!dist/*.mcpb",
|
|
15
16
|
"scripts/_mirror-context.ts",
|
|
16
17
|
"scripts/congress-mirror-init.ts",
|
|
17
18
|
"scripts/congress-mirror-refresh.ts",
|
|
@@ -85,7 +86,7 @@
|
|
|
85
86
|
"url": "git+https://github.com/cyanheads/congressgov-mcp-server.git"
|
|
86
87
|
},
|
|
87
88
|
"license": "Apache-2.0",
|
|
88
|
-
"packageManager": "bun@1.4.
|
|
89
|
+
"packageManager": "bun@1.4.2",
|
|
89
90
|
"engines": {
|
|
90
91
|
"node": ">=24.0.0",
|
|
91
92
|
"bun": ">=1.4.0"
|
|
@@ -94,7 +95,7 @@
|
|
|
94
95
|
"access": "public"
|
|
95
96
|
},
|
|
96
97
|
"dependencies": {
|
|
97
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
98
|
+
"@cyanheads/mcp-ts-core": "^0.13.9",
|
|
98
99
|
"better-sqlite3": "^13.0.3",
|
|
99
100
|
"fast-xml-parser": "^5.11.1",
|
|
100
101
|
"node-cron": "^4.6.0",
|
|
@@ -103,10 +104,10 @@
|
|
|
103
104
|
},
|
|
104
105
|
"devDependencies": {
|
|
105
106
|
"@biomejs/biome": "^2.5.14",
|
|
106
|
-
"@socketsecurity/bun-security-scanner": "^1.1.
|
|
107
|
-
"@types/node": "^26.6.
|
|
107
|
+
"@socketsecurity/bun-security-scanner": "^1.1.3",
|
|
108
|
+
"@types/node": "^26.6.2",
|
|
108
109
|
"depcheck": "^1.4.7",
|
|
109
|
-
"ignore": "^7.0.
|
|
110
|
+
"ignore": "^7.0.10",
|
|
110
111
|
"tsc-alias": "^1.9.5",
|
|
111
112
|
"typescript": "^7.0.2",
|
|
112
113
|
"vitest": "^5.0.1"
|
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.7.
|
|
9
|
+
"version": "0.7.3",
|
|
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": "bun",
|
|
22
|
-
"version": "0.7.
|
|
22
|
+
"version": "0.7.3",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
55
55
|
"identifier": "@cyanheads/congressgov-mcp-server",
|
|
56
56
|
"runtimeHint": "bun",
|
|
57
|
-
"version": "0.7.
|
|
57
|
+
"version": "0.7.3",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|