@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.
Files changed (84) hide show
  1. package/AGENTS.md +44 -17
  2. package/CLAUDE.md +44 -17
  3. package/Dockerfile +4 -0
  4. package/README.md +35 -124
  5. package/changelog/0.9.x/0.9.0.md +25 -0
  6. package/changelog/0.9.x/0.9.1.md +31 -0
  7. package/dist/config/server-config.d.ts +0 -7
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +1 -9
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +9 -2
  14. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts +9 -2
  16. package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts +9 -2
  18. package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +9 -2
  20. package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts +9 -2
  22. package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +9 -2
  24. package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts +9 -2
  26. package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts +9 -2
  28. package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts +9 -2
  30. package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/roll-votes.tool.js +3 -2
  32. package/dist/mcp-server/tools/definitions/roll-votes.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts +49 -4
  34. package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/senate-nominations.tool.js +102 -5
  36. package/dist/mcp-server/tools/definitions/senate-nominations.tool.js.map +1 -1
  37. package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/format-helpers.js +37 -8
  39. package/dist/mcp-server/tools/format-helpers.js.map +1 -1
  40. package/dist/mcp-server/tools/tool-helpers.d.ts +11 -4
  41. package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/tool-helpers.js +12 -4
  43. package/dist/mcp-server/tools/tool-helpers.js.map +1 -1
  44. package/dist/services/call-budget.d.ts +77 -0
  45. package/dist/services/call-budget.d.ts.map +1 -0
  46. package/dist/services/call-budget.js +118 -0
  47. package/dist/services/call-budget.js.map +1 -0
  48. package/dist/services/congress-api/congress-api-service.d.ts +4 -0
  49. package/dist/services/congress-api/congress-api-service.d.ts.map +1 -1
  50. package/dist/services/congress-api/congress-api-service.js +60 -32
  51. package/dist/services/congress-api/congress-api-service.js.map +1 -1
  52. package/dist/services/congress-documents/congress-documents-service.d.ts +46 -15
  53. package/dist/services/congress-documents/congress-documents-service.d.ts.map +1 -1
  54. package/dist/services/congress-documents/congress-documents-service.js +95 -24
  55. package/dist/services/congress-documents/congress-documents-service.js.map +1 -1
  56. package/dist/services/congress-documents/document-body-cache.d.ts +66 -0
  57. package/dist/services/congress-documents/document-body-cache.d.ts.map +1 -0
  58. package/dist/services/congress-documents/document-body-cache.js +122 -0
  59. package/dist/services/congress-documents/document-body-cache.js.map +1 -0
  60. package/dist/services/congress-mirror/ingest.d.ts +13 -7
  61. package/dist/services/congress-mirror/ingest.d.ts.map +1 -1
  62. package/dist/services/congress-mirror/ingest.js +33 -10
  63. package/dist/services/congress-mirror/ingest.js.map +1 -1
  64. package/dist/services/congress-mirror/schema.d.ts.map +1 -1
  65. package/dist/services/congress-mirror/schema.js +15 -1
  66. package/dist/services/congress-mirror/schema.js.map +1 -1
  67. package/dist/services/senate-lis/parse.d.ts +23 -0
  68. package/dist/services/senate-lis/parse.d.ts.map +1 -1
  69. package/dist/services/senate-lis/parse.js +49 -5
  70. package/dist/services/senate-lis/parse.js.map +1 -1
  71. package/dist/services/senate-lis/senate-vote-service.d.ts.map +1 -1
  72. package/dist/services/senate-lis/senate-vote-service.js +32 -25
  73. package/dist/services/senate-lis/senate-vote-service.js.map +1 -1
  74. package/dist/utils/congress-calendar.d.ts +15 -0
  75. package/dist/utils/congress-calendar.d.ts.map +1 -0
  76. package/dist/utils/congress-calendar.js +33 -0
  77. package/dist/utils/congress-calendar.js.map +1 -0
  78. package/package.json +7 -6
  79. package/scripts/_mirror-context.ts +15 -9
  80. package/scripts/congress-mirror-init.ts +1 -1
  81. package/scripts/congress-mirror-refresh.ts +1 -1
  82. package/scripts/congress-mirror-verify.ts +5 -4
  83. package/server.json +3 -3
  84. 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: 1,
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;;;;;;;;;;;;;;;;;;;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"}
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
- /** The first Congress sat in 1789, and each one since has opened two years later. */
74
- const FIRST_CONGRESS_YEAR = 1789;
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
- if (!Number.isInteger(congress) || congress < 1)
109
+ const firstYear = openingYear(congress);
110
+ if (firstYear === undefined || (session !== 1 && session !== 2))
94
111
  return;
95
- if (session !== 1 && session !== 2)
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
- return FIRST_CONGRESS_YEAR + 2 * (congress - 1) + (session - 1);
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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,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,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,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,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IACxD,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO;IAC3C,OAAO,mBAAmB,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAClE,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
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/services/senate-lis/parse.ts"],"names":[],"mappings":"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"}
@@ -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;AAetD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAyBxF,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;AAkCF,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;YAiCR,OAAO;IA+BrB,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"}
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, withRetry, } from '@cyanheads/mcp-ts-core/utils';
22
- import { computePartyTotals, parseRollCallVote, parseVoteMenu } from './parse.js';
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; the Senate publishes roll call votes from the 101st Congress (1989) onward.`, { congress: params.congress, session: params.session });
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 withRetry(() => this.doFetch(url, requestContext, signal), {
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, signal) {
138
+ async doFetch(url, requestContext, attempt) {
136
139
  try {
137
- const response = await fetchWithTimeout(url, REQUEST_TIMEOUT_MS, requestContext, {
140
+ const response = await fetchWithTimeout(url, attempt.timeoutMs, requestContext, {
138
141
  headers: { Accept: 'application/xml, text/xml, */*' },
139
- ...(signal ? { signal } : {}),
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 genuine non-2xx is an outage/timeout — surface it as a clean,
147
- * retryable upstream error without echoing the URL. */
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":"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"}
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.8.1",
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.16",
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.2",
107
+ "@biomejs/biome": "^2.6.4",
107
108
  "@socketsecurity/bun-security-scanner": "^1.1.3",
108
- "@types/node": "^26.6.5",
109
+ "@types/node": "^26.6.6",
109
110
  "depcheck": "^1.4.7",
110
- "ignore": "^7.0.13",
111
- "tsc-alias": "^1.9.8",
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
- * Builds the Congress API client and the mirror service from the environment and
5
- * hands back the underlying mirror — no MCP transport, no tool registration.
6
- * Imported by the three named scripts, so it must travel with them in the npm
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
- * Build the mirror from env config and return its instance. The CLI builds the
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
- const config = getServerConfig();
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: config.mirrorPath,
27
- congresses: config.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.8.1",
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.8.1",
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.8.1",
47
+ "version": "0.9.1",
48
48
  "environmentVariables": [
49
49
  {
50
50
  "name": "MCP_TRANSPORT_TYPE",