@cyanheads/congressgov-mcp-server 0.7.1 → 0.7.2
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 +10 -5
- package/CLAUDE.md +10 -5
- package/README.md +8 -3
- package/changelog/0.7.x/0.7.2.md +20 -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 +19 -2
- package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-helpers.js +19 -2
- 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 +2 -2
- package/server.json +3 -3
|
@@ -2,47 +2,14 @@
|
|
|
2
2
|
* @fileoverview Turn a Congress.gov document body into the plain text offsets index into.
|
|
3
3
|
* @module services/congress-documents/extract-text
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
const NAMED_ENTITIES = {
|
|
7
|
-
amp: '&',
|
|
8
|
-
apos: "'",
|
|
9
|
-
gt: '>',
|
|
10
|
-
lt: '<',
|
|
11
|
-
nbsp: ' ',
|
|
12
|
-
quot: '"',
|
|
13
|
-
};
|
|
5
|
+
import { decodeCharacterReferences } from '../../utils/character-references.js';
|
|
14
6
|
const COMMENT_RE = /<!--[\s\S]*?-->/g;
|
|
15
7
|
const TAG_RE = /<[^>]*>/g;
|
|
16
|
-
const ENTITY_RE = /&(#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z]+);/g;
|
|
17
8
|
const XML_ELEMENT_BOUNDARY_RE = /(?<!<)((?:<\s*\/\s*[a-zA-Z][^>]*>)+)(?=<\s*([a-zA-Z][\w:.-]*)(?:\s|\/?>))/g;
|
|
18
9
|
const XML_CLOSE_TAG_RE = /<\s*\/\s*([a-zA-Z][\w:.-]*)[^>]*>/g;
|
|
10
|
+
/** U+0000 is no XML character, and the decoder resolves no reference to it. */
|
|
19
11
|
const XML_BOUNDARY_MARKER = '\0';
|
|
20
12
|
const INLINE_XML_TAGS = new Set(['a', 'b', 'em', 'i', 'span', 'strong', 'sub', 'sup']);
|
|
21
|
-
/**
|
|
22
|
-
* Resolve the body of one character reference — what sits between `&` and `;`.
|
|
23
|
-
* Returns `undefined` for a reference this extractor does not recognize, which
|
|
24
|
-
* the callers render verbatim rather than guessing at.
|
|
25
|
-
*/
|
|
26
|
-
export function decodeCharacterReference(ref) {
|
|
27
|
-
if (ref.startsWith('#')) {
|
|
28
|
-
const hex = ref[1] === 'x' || ref[1] === 'X';
|
|
29
|
-
const codePoint = Number.parseInt(hex ? ref.slice(2) : ref.slice(1), hex ? 16 : 10);
|
|
30
|
-
if (!Number.isInteger(codePoint) || codePoint < 0 || codePoint > 0x10ffff)
|
|
31
|
-
return undefined;
|
|
32
|
-
return String.fromCodePoint(codePoint);
|
|
33
|
-
}
|
|
34
|
-
return NAMED_ENTITIES[ref.toLowerCase()];
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Decode HTML/XML character references in one pass.
|
|
38
|
-
*
|
|
39
|
-
* A single pass is the point: decoding `&` in its own sweep would turn the
|
|
40
|
-
* literal `&lt;` into `<` instead of the `<` the document actually says.
|
|
41
|
-
* An unrecognized reference is left verbatim rather than guessed at.
|
|
42
|
-
*/
|
|
43
|
-
function decodeEntities(text) {
|
|
44
|
-
return text.replace(ENTITY_RE, (match, ref) => decodeCharacterReference(ref) ?? match);
|
|
45
|
-
}
|
|
46
13
|
/**
|
|
47
14
|
* The tag name has to end at the `>` or at whitespace. A loose `<\s*pre[^>]*>`
|
|
48
15
|
* also matches USLM's `<preamble>` — which truncated a 2.6 MB bill to its
|
|
@@ -120,8 +87,8 @@ export function extractDocumentText(body) {
|
|
|
120
87
|
const stripped = normalized.replace(COMMENT_RE, '');
|
|
121
88
|
const pre = unwrapPre(stripped);
|
|
122
89
|
if (pre !== undefined)
|
|
123
|
-
return
|
|
124
|
-
const readable =
|
|
90
|
+
return decodeCharacterReferences(pre.replace(TAG_RE, '')).trim();
|
|
91
|
+
const readable = decodeCharacterReferences(normalizeXmlSiblingBoundaries(stripped).replace(TAG_RE, ''));
|
|
125
92
|
return resolveXmlSiblingBoundaries(readable).trim();
|
|
126
93
|
}
|
|
127
94
|
//# sourceMappingURL=extract-text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-text.js","sourceRoot":"","sources":["../../../src/services/congress-documents/extract-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,
|
|
1
|
+
{"version":3,"file":"extract-text.js","sourceRoot":"","sources":["../../../src/services/congress-documents/extract-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
* @module services/congress-mirror/normalize
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
* Strip HTML tags to plain text and decode the
|
|
9
|
+
* Strip HTML tags to plain text and decode the character references Congress.gov
|
|
10
10
|
* emits in summary bodies. Block-ish tags collapse to spaces so adjacent words
|
|
11
11
|
* don't fuse (`</p><p>` → space), and whitespace is collapsed to single spaces —
|
|
12
12
|
* a discovery/snippet surface doesn't need paragraph structure, and flat text
|
|
13
13
|
* tokenizes more cleanly for FTS5.
|
|
14
|
+
*
|
|
15
|
+
* References decode in one pass, after the tags are gone, so text that literally
|
|
16
|
+
* says `&lt;` indexes as `<` rather than as a tag the source never had.
|
|
14
17
|
*/
|
|
15
18
|
export declare function htmlToPlainText(html: string): string;
|
|
16
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/services/congress-mirror/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/services/congress-mirror/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
|
|
@@ -5,27 +5,23 @@
|
|
|
5
5
|
* an unbalanced quote, or an FTS5 reserved word can't break the query). No I/O.
|
|
6
6
|
* @module services/congress-mirror/normalize
|
|
7
7
|
*/
|
|
8
|
+
import { decodeCharacterReferences } from '../../utils/character-references.js';
|
|
8
9
|
/**
|
|
9
|
-
* Strip HTML tags to plain text and decode the
|
|
10
|
+
* Strip HTML tags to plain text and decode the character references Congress.gov
|
|
10
11
|
* emits in summary bodies. Block-ish tags collapse to spaces so adjacent words
|
|
11
12
|
* don't fuse (`</p><p>` → space), and whitespace is collapsed to single spaces —
|
|
12
13
|
* a discovery/snippet surface doesn't need paragraph structure, and flat text
|
|
13
14
|
* tokenizes more cleanly for FTS5.
|
|
15
|
+
*
|
|
16
|
+
* References decode in one pass, after the tags are gone, so text that literally
|
|
17
|
+
* says `&lt;` indexes as `<` rather than as a tag the source never had.
|
|
14
18
|
*/
|
|
15
19
|
export function htmlToPlainText(html) {
|
|
16
|
-
|
|
20
|
+
const text = html
|
|
17
21
|
.replace(/<\s*br\s*\/?\s*>/gi, ' ')
|
|
18
22
|
.replace(/<\s*\/?(p|div|li|ul|ol|h[1-6]|tr|table)\b[^>]*>/gi, ' ')
|
|
19
|
-
.replace(/<[^>]*>/g, '')
|
|
20
|
-
|
|
21
|
-
.replace(/'/g, "'")
|
|
22
|
-
.replace(/'/g, "'")
|
|
23
|
-
.replace(/&/g, '&')
|
|
24
|
-
.replace(/</g, '<')
|
|
25
|
-
.replace(/>/g, '>')
|
|
26
|
-
.replace(/"/g, '"')
|
|
27
|
-
.replace(/\s+/g, ' ')
|
|
28
|
-
.trim();
|
|
23
|
+
.replace(/<[^>]*>/g, '');
|
|
24
|
+
return decodeCharacterReferences(text).replace(/\s+/g, ' ').trim();
|
|
29
25
|
}
|
|
30
26
|
/**
|
|
31
27
|
* Build an FTS5 `MATCH` expression from free-text input. Each token is stripped
|
|
@@ -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":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,QAAQ,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,+FAA+F;AAC/F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,6FAA6F;AAC7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,wFAAwF;IACxF,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC"}
|
|
@@ -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.2",
|
|
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",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@biomejs/biome": "^2.5.14",
|
|
106
106
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
107
|
-
"@types/node": "^26.6.
|
|
107
|
+
"@types/node": "^26.6.2",
|
|
108
108
|
"depcheck": "^1.4.7",
|
|
109
109
|
"ignore": "^7.0.9",
|
|
110
110
|
"tsc-alias": "^1.9.5",
|
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.2",
|
|
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.2",
|
|
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.2",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|