@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.
Files changed (45) hide show
  1. package/AGENTS.md +10 -5
  2. package/CLAUDE.md +10 -5
  3. package/README.md +8 -3
  4. package/changelog/0.7.x/0.7.2.md +20 -0
  5. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +5 -4
  6. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -1
  7. package/dist/mcp-server/tools/definitions/bill-lookup.tool.js +93 -2
  8. package/dist/mcp-server/tools/definitions/bill-lookup.tool.js.map +1 -1
  9. package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/bill-summaries.tool.js +32 -4
  11. package/dist/mcp-server/tools/definitions/bill-summaries.tool.js.map +1 -1
  12. package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +2 -2
  13. package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +2 -2
  14. package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/format-helpers.js +85 -30
  16. package/dist/mcp-server/tools/format-helpers.js.map +1 -1
  17. package/dist/mcp-server/tools/summary-window.d.ts +112 -0
  18. package/dist/mcp-server/tools/summary-window.d.ts.map +1 -0
  19. package/dist/mcp-server/tools/summary-window.js +182 -0
  20. package/dist/mcp-server/tools/summary-window.js.map +1 -0
  21. package/dist/mcp-server/tools/tool-helpers.d.ts +19 -2
  22. package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/tool-helpers.js +19 -2
  24. package/dist/mcp-server/tools/tool-helpers.js.map +1 -1
  25. package/dist/services/congress-documents/extract-text-stream.js +1 -1
  26. package/dist/services/congress-documents/extract-text-stream.js.map +1 -1
  27. package/dist/services/congress-documents/extract-text.d.ts +0 -6
  28. package/dist/services/congress-documents/extract-text.d.ts.map +1 -1
  29. package/dist/services/congress-documents/extract-text.js +4 -37
  30. package/dist/services/congress-documents/extract-text.js.map +1 -1
  31. package/dist/services/congress-mirror/normalize.d.ts +4 -1
  32. package/dist/services/congress-mirror/normalize.d.ts.map +1 -1
  33. package/dist/services/congress-mirror/normalize.js +8 -12
  34. package/dist/services/congress-mirror/normalize.js.map +1 -1
  35. package/dist/services/senate-lis/parse.d.ts.map +1 -1
  36. package/dist/services/senate-lis/parse.js +74 -2
  37. package/dist/services/senate-lis/parse.js.map +1 -1
  38. package/dist/services/senate-lis/types.d.ts +8 -1
  39. package/dist/services/senate-lis/types.d.ts.map +1 -1
  40. package/dist/utils/character-references.d.ts +27 -0
  41. package/dist/utils/character-references.d.ts.map +1 -0
  42. package/dist/utils/character-references.js +60 -0
  43. package/dist/utils/character-references.js.map +1 -0
  44. package/package.json +2 -2
  45. 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
- /** Entities GPO emits by name. Numeric references are decoded generically. */
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 `&amp;` in its own sweep would turn the
40
- * literal `&amp;lt;` into `<` instead of the `&lt;` 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 decodeEntities(pre.replace(TAG_RE, '')).trim();
124
- const readable = decodeEntities(normalizeXmlSiblingBoundaries(stripped).replace(TAG_RE, ''));
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":"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"}
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 handful of entities Congress.gov
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 `&amp;lt;` indexes as `&lt;` 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;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAcpD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
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 handful of entities Congress.gov
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 `&amp;lt;` indexes as `&lt;` rather than as a tag the source never had.
14
18
  */
15
19
  export function htmlToPlainText(html) {
16
- return html
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
- .replace(/&nbsp;/g, ' ')
21
- .replace(/&#039;/g, "'")
22
- .replace(/&#39;/g, "'")
23
- .replace(/&amp;/g, '&')
24
- .replace(/&lt;/g, '<')
25
- .replace(/&gt;/g, '>')
26
- .replace(/&quot;/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;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;SAClC,OAAO,CAAC,mDAAmD,EAAE,GAAG,CAAC;SACjE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,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
+ {"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;AAqEpB,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA2B9D;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"}
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
- return votes.map((vote) => {
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: opt(vote.vote_date),
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 published in the menu, e.g. "21-Dec" (no year — derive from session). */
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":"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"}
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 `&amp;` in a sweep of its own, before or
23
+ * after the others, turns the literal `&amp;lt;` into `<` instead of the `&lt;`
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. `&nbsp;` 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 `&amp;` in a sweep of its own, before or
54
+ * after the others, turns the literal `&amp;lt;` into `<` instead of the `&lt;`
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.1",
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.1",
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.1",
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.1",
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.1",
57
+ "version": "0.7.2",
58
58
  "packageArguments": [
59
59
  {
60
60
  "type": "positional",